Code: ############################################################### #===---====----===---===---= Mining =---=-=-=-=-=--=-=-=-=-=-=# # Single char mining for OLDP Mine. OLDP Shard www.oldp.net # # Scripted by NMY (c) 2006-07 # # Перевёл на русский - Печа # #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""# #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""# # To start script use ",exec main" command from client window # ###############################################################
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ;==================== Main mining script ====================== ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
############################################################### # Чтобы настроить этот скрипт вам придёться прочитать все # # строки на русском языке. И тогда можно спать... # ###############################################################
sub main() VAR DigDistance, TileNum, LastTimer DIM BaseX[6], BaseY[6] ## Считывающиеся точки с координат, ( сколько их у вас )? VAR BaseZ, WayPoint, WayPoints VAR MaxWeight, KillElemental
KillElemental='Yes' MaxWeight=820 DigDistance=2 WayPoints=6 ## Считывающиеся точки с координат, ( сколько их у вас )?
## Скрипты. точка с запятой обозначает что выключин, если уберёте то скрипт будет рабюотать.
;uo.exec('exec Reconnector') ## Скрипт на реконект на сервер. ;uo.exec('exec DeCoder') ## Скрипт макро кода. ;uo.exec('exec Alert') ;uo.exec('exec closer') uo.exec('msg Хочу Фулл ОлдПарадис !')
## Тут пишем координаты точек там где будем встовать и начинать копать, пример полной координаты: 1111,2222 , пример раздельной: BaseX[0]=1111 , BaseY[0]=2222. Если вам этих точек много или мало то можите сами дописать далее( скрипт нечитает пятую точку так что перескакивая сразу на шесть).
## Координаты №1 BaseX[0]=996 BaseY[0]=1592 BaseZ=0
## Координаты №2 BaseX[1]=995 BaseY[1]=1586
## Координаты №3 BaseX[2]=1002 BaseY[2]=1586
## Координаты №4 BaseX[3]=1000 BaseY[3]=1593
## Координаты №5 BaseX[4]=1008 BaseY[4]=1593
## Координаты №6 BaseX[5]=1001 BaseY[5]=1593
CheckLag() UO.UseObject('Sunduk') LastTimer=UO.Timer() Repeat wait(500) Until UO.InJournal('You can') OR UO.InJournal('What is the') OR UO.Timer()>LastTimer+100
If UO.InJournal('see the') Then UO.Say("Подойдите к сундуку и навидите прицелом!") UO.AddObject('Sunduk') While UO.Targeting()==2 wait(500) Wend UO.SaveConfig() UO.UseObject('Sunduk') Else UO.Say("Атлична! Типерь нада кападь, поцан!.") end if uo.deletejournal() While NOT UO.Dead()
For WayPoint=0 to WayPoints-1 WalkMe(BaseX[WayPoint],BaseY[WayPoint],'') digitstay(MaxWeight,KillElemental,BaseX[WayPoint],BaseY[WayPoint]) Next wend end sub
;-------------------- Try to mine under self ------------------
sub digitstay(MaxWeight,KillElemental,BaseX,BaseY) VAR x,y,z='0',TileNum='1339' VAR Last=0, LastTimer VAR MaxTimer=110
For x = -2 to 2 For y = -2 to 2 sbroska() Repeat CheckLag() Del('that is too far away|There is nothing|elsewhere|location|You cannot|Region|Elemental|attacking you|You stop')
dig: UO.WaitTargetTile(TileNum,STR(UO.GetX()+x),STR(UO.GetY()+Y),z) UO.UseType('0x0E85')
LastTimer=UO.Timer()
Repeat wait(500) until UO.InJournal('that is too far away|There is nothing|elsewhere|location|You cannot|Region|Elemental|attacking you|You stop') OR LastTimer+250<UO.Timer() OR uo.life < uo.str
If UO.InJournal('Elemental|attacking you') or uo.life < uo.str then If KillElemental=='Yes' Then KillElem() Endif Endif
If UO.InJournal('you stop') then UO.UseType('0x0E85') GoTo dig Endif
If UO.Weight>=MaxWeight then unloadore() Endif Until UO.InJournal('that is too far away|There is nothing|location|Region|You cannot|elsewhere') OR LastTimer+250<UO.Timer() Next Next end sub
sub sbroska() var i,j Dim OreType[4] OreType[01]='0x19B7' ## 1 ore OreType[02]='0x19BA' ## 2 ore OreType[03]='0x19B8' ## 3 ore OreType[04]='0x19B9' ## 4 and more ore
Dim OreColor[7] ## массив цветов трешевой руды OreColor[1] = '0x03E3' OreColor[2] = '0x0026' OreColor[3] = '0x04C2' OreColor[4] = '0x0601' ; Shadow OreColor[5] = '0x0000' OreColor[6] = '0x06D6' OreColor[7] = '0x052D'
for j=1 to 4 for i=1 to 7 uo.findtype(OreType[j],OreColor[i],'backpack') while uo.findcount()>0 uo.moveitem('finditem',-1,'ground') wait(600) uo.findtype(OreType[j],OreColor[i],'backpack') wend next next end sub
;------------------------- Unload ore ------------------------- sub unloadore() VAR Sunduk, TempX, TempY, n VAR SundukX=4825 ## С какой точки будет открывать сундук и складывать руду. VAR SundukY=3667 ## С какой точки будет открывать сундук и складывать руду.
TempX=UO.GetX() TempY=UO.GetY()
Dim UnLoad[18] ## То что будет складывать в сундук( если нужно дополнить или удалить, меняем следующие координаты: UnLoad[1] = '0x0000' сюда пишем Type, Dim UnLoad[1] указываем сколько всего итомов в вашем скрипте). UnLoad[1] = '0x19B9' ## Руда 4 шт. UnLoad[2] = '0x19B8' ## Руда 3 шт. UnLoad[3] = '0x19BA' ## Руда 2 шт. UnLoad[4] = '0x19B7' ## Руда 1 шт. UnLoad[5] = '0x0EED' ## Деньги. UnLoad[6] = '0x09AA' ## Пандор. UnLoad[7] = '0x1088' ## Амуль. UnLoad[8] = '0x1087' ## Серёжки. UnLoad[9] = '0x1086' ## Браслет. UnLoad[10]= '0x108A' ## Колечко. UnLoad[11]= '0x1830' ## Бутылка ласер кур. UnLoad[12]= '0x1831' ## Бутылка ласер пойзона. UnLoad[13]= '0x182F' ## Бутылка ласер рефреш. UnLoad[14]= '0x182E' ## Бутылка ласер хёл. UnLoad[15]= '0x1515' ## Плащик. UnLoad[16]= '0x1F03' ## Роба. UnLoad[17]= '0x1541' ## Ленточка. UnLoad[18]= '0x1549' ## Маска.
WalkMe(4813,3663,'') ## В эту координату персонаж будет идти как только выкопал свой вес ( чтобы непутался нужно поставить так что бы небыло припятствий ЖЕЛАТЕЛЬНО(в любом случаее будет пытаться обходить препятствие). WalkMe(4816,3663,'') ## Координаты выхода из шахты (перед выходом из шахты чтобы не путался). opendoor() WalkMe(4818,3663,'') ## Координаты входа в шахту (перед входом в шахту чтобы не путался). WalkMe(SundukX,SundukY,'')
UO.UseObject('Sunduk') CheckLag()
For n = 1 to 18 ##Вытаскивает из вашего портфеля 18 итемов. UO.FindType( UnLoad[n] , -1 ,'backpack') while UO.GetQuantity('finditem') > 0 UO.moveitem('finditem','0','Sunduk') CheckLag() UO.FindType( UnLoad[n] , -1 ,'backpack') wend next
UO.FindType('0x0E85', -1 ,'backpack') If UO.FindCount() == 0 then UO.FindType('0x0E86', -1 ,'Sunduk') UO.MoveItem('finditem') Endif
WalkMe(4816,3662,'') ## Идём от сундука ( вход в шахту ). opendoor() WalkMe(4813,3663,'') ## До средней точки. WalkMe(TempX,TempY,'') end sub
sub opendoor() UO.DeleteJournal() UO.Set('finddistance','2') UO.FindType('0x0870', -1 ,'ground') If UO.FindCount() then open: UO.UseObject('finditem') CheckLag() wait(200) If UO.InJournal('you must wait') then wait(9000) Goto open Endif Endif end sub
;----------- -----------
sub loot() VAR n Dim Load[18] ## Всё то что будет лутать с элемов (если нужно дополнить или удалить, меняем следующие координаты: Load[1] = '0x0000' сюда пишем Type, Dim Load[1] указываем сколько всего итомов в вашем скрипте). Load[1] = '0x19B9' ## Руда 4 шт. Load[2] = '0x19B8' ## Руда 3 шт. Load[3] = '0x19BA' ## Руда 2 шт. Load[4] = '0x19B7' ## Руда 1 шт. Load[5] = '0x0EED' ## Деньги. Load[6] = '0x09AA' ## Пандор. Load[7] = '0x1088' ## Амуль. Load[8] = '0x1087' ## Серёжки. Load[9] = '0x1086' ## Браслет. Load[10]= '0x108A' ## Колечко. Load[11]= '0x1830' ## Бутылка ласер кур. Load[12]= '0x1831' ## Бутылка ласер пойзона. Load[13]= '0x182F' ## Бутылка ласер рефреш. Load[14]= '0x182E' ## Бутылка ласер хёл. Load[15]= '0x1515' ## Плащик. Load[16]= '0x1F03' ## Роба. Load[17]= '0x1541' ## Ленточка. Load[18]= '0x1549' ## Маска.
wait(500) if (uo.getserial('backpack') <> uo.getserial('lastcontainer')) then For n = 1 to 18 ## Вытаскивает из трупа от 1 до 18 итомов. UO.FindType( Load[n] , -1 ,'lastcontainer') while UO.GetQuantity('finditem') > 0 UO.moveitem('finditem','0','backpack') CheckLag() Wait(900) UO.FindType( Load[n] , -1 ,'lastcorpse') wend next end if end sub
sub killelem() if uo.InJournal("Elemental") or uo.InJournal("is attacking you") or uo.Dead() then uo.playwav("С:\injection\Message.wav") end if uo.msg('.camp heal') wait(1000) UO.UseType('0x0978') wait(1000) UO.UseType('0x09D0') VAR k=0 repeat k = k + 1 uo.msg('.arm') wait(1000) until uo.life >= uo.str and k >= 10 loot() wait(5000)
end sub
;;;;;;;;;;;;; DeCoder ;;;;;;;;;;;;;;;
sub DeCoder() while true AND NOT UO.Dead() if uo.LastGump('text',0) == 'enter anti macro code:' and uo.LastGump('replyed') == 0 then uo.lclick(uo.LastGump('x')+75, uo.LastGump('y')+69) ;UO.PlayWAV('D:\games\ultima online old paradise\inject\alert2.wav') wait(10000) uo.say(decode()) wait(300) uo.lclick(uo.LastGump('x')+77, uo.LastGump('y')+108) endif wait(1000) wend end sub
sub Reconnector() while True while UO.IsOnline() AND NOT UO.Dead() wait(1000) wend UO.TextOpen() UO.TextPrint('Disconnected at '+MakeTime()) UO.Exec('terminate all') connect: wait(3000) UO.LDblClick(616,455) wait(3000) UO.LDblClick(616,455) wait(3000) UO.LDblClick(616,455) wait(3000) UO.LDblClick(357,164) if UO.IsOnline() then UO.Exec('exec main') UO.TextOpen() UO.TextPrint('Reconnected at '+MakeTime()) else goto connect endif wend endsub
Sub MakeTime() VAR D, T, Ret, i Ret = STR(UO.Time()) T = "" For i = 0 To Len(Ret) T = Ret[Len(Ret)-i] + T If (I == 2) OR (I == 4) Then T = ":" + T EndIf Next Ret = STR(UO.Date()) D = "" For i = 0 To Len(Ret) D = Ret[Len(Ret)-i] + D If (I == 2) OR (I == 4) Then D = "." + D EndIf Next Ret = T + " @ " + D RETURN Ret end sub
Sub GetXY(str,arnum) arnum[0]=val(mid(str, 7, 3)) arnum[1]=val(mid(str, 10, 3)) end sub
Sub decode() var temp='',i=0 var pos=0 var line=5 var sX=0, sY=0 var code='' var finding = 1 var CurrX=0 var CurrY=0 var NumSum dim tempXY[2] dim Num[9] Num[0]=6 Num[1]=35 Num[2]=45 Num[3]=-24 Num[4]=34 Num[5]=-5 Num[6]=26 Num[7]=4 Num[8]=-6 Repeat temp=uo.LastGump('command',line) GetXY(temp, tempXY) if pos >= 17 then if pos == 17 then NumSum=(CurrX-sX)*10+(CurrY-sY) finding = 1 i=0 while finding if NumSum == num[i] then code=code+str(i+1) finding = 0 end if i=i+1 wend end if if tempXY[0]-CurrX > 5 then pos=0 end if end if if not pos then sX=tempXY[0] sY=tempXY[1] pos=15 line=line+15 end if CurrX=tempXY[0] CurrY=tempXY[1] pos=pos+1 line=line+1 Until len(code) == 4 return code end sub
sub Alert() VAR a UO.TextClear() UO.DeleteJournal() while true and not uo.dead() If UO.InJournal('Elemental|Your total damage|You see') then Del('Elemental|Your total damage|You see') end if If UO.JournalSerial()<>'0x00000000' && UO.JournalSerial()<>'0xFFFFFFFF' && UO.JournalSerial()<>'0x4013129C' && UO.JournalSerial()<>'0x001312A8' && UO.JournalSerial()=='0x000101C7' then For a = 1 to 5 UO.PlayWAV('D:\inject\alert2.wav') wait(250) next uo.textopen() uo.textprint(uo.journalserial()) end if wait(200) wend end sub
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;; W A L K E R ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
################# W A L K E R ######################
sub WalkME(x,y,Target) VAR i VAR dir,ldir,rdir,key,olddir VAR dx,dy,Exit=0 VAR CacheLimit=9,CacheIndex="Text" DIM CacheX[10], CacheY[10]
CacheX[0]="Test" While Exit<>1 If Target<>"" Then dx=UO.GetX(Target)-UO.GetX() dy=UO.GetY(Target)-UO.GetY() ; UO.Print("Target locked!") If UO.GetDistance(Target)<2 Then return Endif Else dx=x-UO.GetX() dy=y-UO.GetY() If dx==0 AND dy==0 Then Exit=1 Endif
Endif
If dx<>0 AND dy<>0 Then If dx>0 AND dy>0 Then ; GoSE dir=3 ldir=2 rdir=4 key=40 ; DownArrow olddir=UO.GetDir() If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then If olddir==2 Then ; GoNE dir=1 ldir=0 rdir=1 key=39 ; RightArrow While UO.GetDir()<>1 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSW dir=5 ldir=5 rdir=6 key=37 ; LeftArrow While UO.GetDir()<>5 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif
If dx>0 AND dy<0 Then ; GoNE dir=1 ldir=0 rdir=2 key=39 ; RightArrow olddir=UO.GetDir() If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then If olddir==0 Then ; GoWN dir=7 ldir=6 rdir=7 key=38 ; UpArrow While UO.GetDir()<>7 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSE dir=3 ldir=3 rdir=4 key=40 ; DownArrow While UO.GetDir()<>3 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif
If dx<0 AND dy>0 Then ; GoSW dir=5 ldir=4 rdir=6 key=37 ; LeftArrow olddir=UO.GetDir() If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then If olddir==6 Then ; GoWN dir=7 ldir=7 rdir=0 key=38 ; UpArrow While UO.GetDir()<>7 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSE dir=3 ldir=2 rdir=3 key=40 ; DownArrow While UO.GetDir()<>3 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif
If dx<0 AND dy<0 Then ; GoWN dir=7 ldir=6 rdir=0 key=38 ; UpArrow olddir=UO.GetDir() If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then If olddir==0 Then ; GoNE dir=1 ldir=1 rdir=2 key=39 ; RightArrow While UO.GetDir()<>1 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSW dir=5 ldir=4 rdir=5 key=37 ; LeftArrow While UO.GetDir()<>5 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif Endif
If dx<>0 AND dy==0 Then If dx>0 Then ; GoE dir=2 key=34 ; PgDown olddir=UO.GetDir() If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then If olddir==2 Then ; GoSE dir=3 ldir=3 rdir=4 key=40 ; DownArrow While UO.GetDir()<>3 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoNE dir=1 ldir=1 rdir=0 key=39 ; RightArrow While UO.GetDir()<>1 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif
If dx<0 Then ; GoW dir=6 key=36 ; Home key olddir=UO.GetDir() If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then If olddir==0 Then ; GoWN dir=7 ldir=7 rdir=0 key=38 ; UpArrow While UO.GetDir()<>7 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSW dir=5 ldir=4 rdir=5 key=37 ; LeftArrow While UO.GetDir()<>5 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif Endif
If dx==0 AND dy<>0 Then If dy>0 Then ; GoS dir=4 key=35 ; End If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then If olddir==2 Then ; GoSE dir=3 ldir=2 rdir=3 key=40 ; DownArrow While UO.GetDir()<>3 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSW dir=5 ldir=6 rdir=5 key=37 ; LeftArrow While UO.GetDir()<>5 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif
If dy<0 Then ;GoN dir=0 key=33 ; PgUp olddir=UO.GetDir() If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then If olddir==2 Then ; GoNE dir=1 ldir=1 rdir=2 key=39 ; RightArrow While UO.GetDir()<>1 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoWN dir=7 ldir=7 rdir=6 key=38 ; UpArrow While UO.GetDir()<>7 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif Endif Wend end sub
sub StepEdit(x,y,dir,key) VAR walkwait=300 VAR ErrLevel=0 If UO.GetDir()<>dir Then checkstam() UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif checkstam() UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() If x==UO.GetX() AND y==UO.GetY() Then ;zatik ErrLevel=1 Endif Endif Return ErrLevel end sub
sub StepArrow(x,y,dir,ldir,rdir,key) VAR walkwait=300 VAR ErrLevel=0 If UO.GetDir()<>dir Then checkstam() UO.Press(key) wait(walkwait) If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then CheckLag() Endif Endif
If UO.GetX()==x AND UO.GetY()==y Then checkstam() UO.Press(key) wait(walkwait) If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then CheckLag() If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then ; zatik ErrLevel=1 Endif Endif Endif Return ErrLevel end sub
sub checkstam() var refresh = '0x0F0B' if uo.stamina < 10 then uo.findtype(refresh,-1,'backpack') if uo.findcount() then uo.usetype(refresh) wait(1000) else uo.print("Nety Refreshey! Stoim...") repeat wait(500) until uo.stamina >= 10 endif else endif endsub
Sub CHECKLAG() del('backpack') uo.click('backpack') repeat wait(200) until uo.injournal('backpack') del('backpack') endsub
Sub DEL(msg) while uo.injournal(msg) uo.setJournalLine(uo.injournal(msg)-1,"Is Empty!") wend endsub
sub closer() VAR t For t=0 to 540 wait(60000) next uo.closeuo() end sub
########################################## Sub test() ########################################## If uo.getglobal('test')=='11' then uo.setglobal('test',00) uo.print(' !!! -= Test: off =- !!! ') uo.exec('terminate test') else uo.setglobal('test',11) uo.print(' !!! -= Test: on =- !!! ') end if #;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
WalkMe(4813,3660,'')
#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
uo.setglobal('test',00) uo.print(' !!! -= Test: off =- !!! ') ########################################## end sub ##########################################
значет так вот в чём проблема Code: sub digitstay(MaxWeight,KillElemental,BaseX,BaseY) VAR x,y,z='0',TileNum='1339' VAR Last=0, LastTimer VAR MaxTimer=110
For x = -2 to 2 For y = -2 to 2 sbroska() Repeat CheckLag() Del('There is nothing|elsewhere|location|You cannot|Region|Elemental|attacking you|You stop')
dig: UO.WaitTargetTile(TileNum,STR(UO.GetX()+x),STR(UO.GetY()+Y),z) UO.UseType('0x0E85')
LastTimer=UO.Timer()
Repeat wait(500) until UO.InJournal('There is nothing|elsewhere|location|You cannot|Region|Elemental|attacking you|You stop') OR LastTimer+250<UO.Timer() OR uo.life < uo.str
If UO.InJournal('Elemental|attacking you') or uo.life < uo.str then If KillElemental=='Yes' Then KillElem() Endif Endif
If UO.InJournal('you stop') then UO.UseType('0x0E85') GoTo dig Endif
If UO.Weight>=MaxWeight then unloadore() Endif Until UO.InJournal('There is nothing|location|Region|You cannot|elsewhere') OR LastTimer+250<UO.Timer() Next Next end sub почемута он не копает в радиусе -2 то 2 а дальше чем надо вот что пишет когда он пытаица дальше копать that is too far away можна как то если такая натпесь появица чтобы игнорировал её
|