Назначение скрипта: копание избранной руды в вип шахте, сортировка руды по трем мешкам, кил и лут элемов. В сундуке должен быть ящик или другой контэйнер в котором располагаются Ваши вещи. А именно: три мешка для руды, инвизы, скролы вортекса и масс диспела и если требуется, еда. Если кормить чара не нужно то раздел ; Eda =====..... ; End eda =====.... удаляем. Настройка: На малой випке три точки. назовем их базовыми или вэйпоинтами. Так вот надо в скрипте найти раздел:
Code: ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Здесь указываем координаты точек копания. Нужно встать на ; позицию и посмотреть координаты в инжекте. Их и нужно ; подставить вместо моих. Чара ставьте на 3 клетки от стен. ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" BaseX[0]=5135 BaseY[0]=1084 BaseZ=0
BaseX[1]=5142 BaseY[1]=1084
BaseX[2]=5149 BaseY[2]=1084
Чара ставим на три клетки от стен и другой точки копания. То есть по центру, три клетки сверху, на четвёртой чар - первая точка. По середине - вторая и три клетки снизу на четвёртой чар - третья.
Далее таким же образом правим на свой вкус остальные переменные чуть выше этогго раздела. Что касается веса то его надо поставить на 20-30 меньше максимального.
Затем подходим к сундуку и правим координаты точки разгрузки в этом разделе: ВНИМАНИЕ!!! Координаты не сундука а чара перед сундуком.
Code: ;------------------------- Unload ore ------------------------- sub unloadore() VAR TempX,TempY,i,Exit, Exit1, ConTainer, j VAR SundukX=5519 VAR SundukY=1434 VAR Index=14 ; количество элементов массива
Ниже находится массив цветов руд которые приравнены к высшей или самой интересной. Она перекладывается в собственный мешок. Его можно расширить но не забудьте тогда исправить переменную Index. В ней хранится количество элементов массива.
Далее смотрим раздел:
Code: ; Проверка нужности руды. Закоментировать то что нужно копать. sub CheckOre() VAR Cont=1, i=0, Exit=0 VAR Count=7 ; Сколько элементов в массиве. DIM Ores[15]
Ores[0]="Iron" Ores[1]="Rusty" Ores[2]="Old Copper" Ores[3]="Dull Copper" Ores[4]="Copper" Ores[5]="Bronze" Ores[6]="Silver" ; Ores[7]="Shadow" ; Ores[8]="Rose" ; Ores[9]="Gold" ; Ores[10]="Agapite" ; Ores[11]="Blood Rock" ; Ores[12]="Verite" ; Ores[13]="Valorite" ; Ores[14]="Mytheril"
здесь проставляется руда которую продолжать копать после пробного копка. Строки начинающиеся с ; подлежат обязательному выкапыванию и должны распологаться после строк которые не закоментированы. Соответственно индекс массива должен быть с 0 и возрастать по порядку. То есть допустим нам надо копать еще и железо тогда нужно исправить так:
Code: ; Проверка нужности руды. Закоментировать то что нужно копать. sub CheckOre() VAR Cont=1, i=0, Exit=0 VAR Count=6 ; Сколько элементов в массиве. DIM Ores[15]
Ores[0]="Rusty" Ores[1]="Old Copper" Ores[2]="Dull Copper" Ores[3]="Copper" Ores[4]="Bronze" Ores[5]="Silver" ; Ores[6]="Iron" ; Ores[7]="Shadow" ; Ores[8]="Rose" ; Ores[9]="Gold" ; Ores[10]="Agapite" ; Ores[11]="Blood Rock" ; Ores[12]="Verite" ; Ores[13]="Valorite" ; Ores[14]="Mytheril"
обратите внимание что переменная Count тоже исправлена.
Если чар будет килять элемов то в пак ему кидайте регов: по 10 инвизок, вортексов и масс диспелов.
Чар юзает кирку которая лежит как угодно
Когда исправления закончены, запускаем скрипт ,exec mine чар попросит потыкать прицелом в сундук, Ваш ящик и мешки: для ирона, для другой руды, для вышки.
При повторном запуске скрипта лучше подальше от сундука стоять а то долго будет на старте тормозить.
Если мешки потерялись то во вкладке Objects удалите соответствующие объекты. При следующем старте скрипта чар попросит их добавить.
Ну вот вроде все расписал, а теперь сам скрипт:
Code: ############################################################### #===---====----===---===---= Mining =---=-=-=-=-=--=-=-=-=-=-=# # Single char mining for VIP Mine. DRW Shard www.drw.ru # # Scripted by Savage (c) 2005-2010 ICQ:33336141 # #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""# #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""# # To start script use ",exec mine" command from client window # ###############################################################
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ;==================== Main mining script ====================== ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" sub mine() VAR DigDistance, TileNum, KillElemental, KillAnyElemental VAR ElemSignal, LastTimer DIM BaseX[2], BaseY[2] VAR BaseZ, WayPoint, WayPoints VAR MaxWeight
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Максимальный вес, который может поднять чар. Ставьте его ; немного меньше реального. То есть если чар поднимает 760, то ; ставим 730. ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" MaxWeight=700
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; DigDistance=4 - Distance from tile where pickaxe targeting ; Радиус круга по которому будет копать чар, то есть расстояние ; до клетки куда можно дотянуться киркой. ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" DigDistance=3
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; KillElemental='Yes'/'No' - Use 'Yes' if char skilled to morph ; in daemon and wrestling > 50 ; Если чар достаточно прокачен чтоб бить элемов, ставьте 'Yes' ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" KillElemental='Yes'
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; KillAnyElemental='Yes'/'No' - Use 'Yes' if you need another ; player elem ; Ставьте 'Yes' если хотите бить чужих элемов ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" KillAnyElemental='Yes' ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; ElemSignal='Off'/'On' - Play sound when elemental is digged ; Оповешать при появлении элема ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ElemSignal='Off'
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Здесь указываем координаты точек копания. Нужно встать на ; позицию и посмотреть координаты в инжекте. Их и нужно ; подставить вместо моих. Чара ставьте на 4 клетки от стен. ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" BaseX[0]=5135 BaseY[0]=1084 BaseZ=0
BaseX[1]=5142 BaseY[1]=1084
BaseX[2]=5149 BaseY[2]=1084
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Указываем количество точек копания ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" WayPoints=3
CheckLag() UO.UseObject('Sunduk') LastTimer=UO.Timer() Repeat wait(500) Until UO.InJournal('You can|What is the') OR UO.Timer()>LastTimer+100 If UO.InJournal('see the') Then UO.Say("Podoydi k sunduku i tkni v nego pricelom!") UO.AddObject('Sunduk') While UO.Targeting()==2 wait(500) Wend UO.SaveConfig() UO.UseObject('Sunduk') Endif
CheckLag() UO.UseObject('MyBox') LastTimer=UO.Timer() Repeat wait(500) Until UO.InJournal('You can|What is the') OR UO.Timer()>LastTimer+100
If UO.InJournal('see the') Then UO.Say("Pokaji yashik!") UO.AddObject('MyBox') While UO.Targeting()==2 wait(500) Wend UO.SaveConfig() UO.UseObject('MyBox') Endif
CheckLag() UO.UseObject('IronBag') LastTimer=UO.Timer() Repeat wait(500) Until UO.InJournal('You can|What is the') OR UO.Timer()>LastTimer+100 If UO.InJournal('see the') Then UO.Say("V kakoy meshok kidat' Iron Ore") UO.AddObject('IronBag') While UO.Targeting()==2 wait(500) Wend UO.SaveConfig() Endif
CheckLag() UO.UseObject('OtherBag') LastTimer=UO.Timer() Repeat wait(500) Until UO.InJournal('You can|What is the') OR UO.Timer()>LastTimer+100 If UO.InJournal('see the') Then UO.Say("V kakoy meshok kidat' rudu?") UO.AddObject('OtherBag') While UO.Targeting()==2 wait(500) Wend UO.SaveConfig() Endif
CheckLag() UO.UseObject('BestBag') LastTimer=UO.Timer() Repeat wait(500) Until UO.InJournal('You can|What is the') OR UO.Timer()>LastTimer+100 If UO.InJournal('see the') Then UO.Say("V kakoy meshok kidat' vihu?") UO.AddObject('BestBag') While UO.Targeting()==2 wait(500) Wend UO.SaveConfig() Endif
While NOT UO.Dead() For WayPoint=0 to WayPoints-1 walkn(BaseX[WayPoint],BaseY[WayPoint],"") digitstay(MaxWeight,DigDistance,KillElemental,KillAnyElemental,ElemSignal,BaseX[WayPoint],BaseY[WayPoint]) Next wend end sub
; Проверка нужности руды. Закоментировать то что нужно копать. sub CheckOre() VAR Cont=1, i=0, Exit=0 VAR Count=0 ; Сколько элементов в массиве. DIM Ores[15]
; Ores[0]="Rusty" ; Ores[1]="Old Copper" ; Ores[2]="Dull Copper" ; Ores[3]="Copper" ; Ores[4]="Bronze" ; Ores[5]="Silver" ; Ores[6]="Iron" ; Ores[7]="Shadow" ; Ores[8]="Rose" ; Ores[9]="Gold" ; Ores[10]="Agapite" ; Ores[11]="Blood Rock" ; Ores[12]="Verite" ; Ores[13]="Valorite" ; Ores[14]="Mytheril"
While i<Count AND Exit==0 If UO.InJournal(Ores[i]) Then Cont=0 Exit=1 Endif i=i+1 Wend return Cont end sub
;-------------------- Try to mine under self ------------------ sub digitstay(MaxWeight,MaxDistance,KillElemental,KillAnyElemental,ElemSignal,BaseX,BaseY) VAR x,y,z='0',TileNum='1339' VAR Last=0,LastTimer, ContFlag=1, Counter, PickAxeType VAR MaxTimer=110, MaxCount=10 ; количество попыток копания UO.FindType('0x0E86',-1,'my') If Uo.FindCount() Then PickAxetype='0x0E86' Else PickAxetype='0x0E85' Endif For x=-MaxDistance to MaxDistance For y=-MaxDistance to MaxDistance Counter=0 Repeat CheckLag() ; deleting journal ToHide() UO.WaitTargetTile(TileNum,STR(UO.GetX()+x),STR(UO.GetY()+Y),z) UO.UseType(PickAxeType)
Repeat wait(500) until UO.InJournal("Try mining|You put|You loosen|There is no|That is too|OOPS|attacking you")
Counter=Counter+1
If UO.InJournal('You put') then ContFlag=CheckOre() Endif
If UO.InJournal("something with ore|attacking you|OOPS") then If ElemSignal=='On' Then Gong(2) Endif
If KillElemental=='Yes' Then KillElem() Else ; any user defined command when char digget elemental Endif
If KillAnyElemental=='Yes' Then UO.FindType('0x0010',-1,'ground') If UO.FindCount() Then KillElem() Endif Endif Endif If UO.Weight>=MaxWeight then unloadore() Endif Until UO.InJournal("There is no|That is too|Try mining") OR ContFlag==0 OR Counter>MaxCount Next Next end sub
;------------------------- Unload ore ------------------------- sub unloadore() VAR TempX,TempY,i,Exit, Exit1, ConTainer, j VAR SundukX=5134 VAR SundukY=1087 VAR Index=14 ; количество элементов массива DIM Ore[5], Colors[20]
Colors[0]="0x09F0" ; Gorgan Colors[1]="0x09D3" ; Steel Colors[3]="0x0BA7" ; Eldar Colors[4]="0x08AF" ; Plut Colors[5]="0x0085" ; Dragon Colors[6]="0x0060" ; Aqua Colors[7]="0x09E6" ; Elvin Colors[8]="0x010F" ; Krinit Colors[9]="0x09DA" ; Vulkan Colors[10]="0x09EC" ; Blood Crest Colors[11]="0x008F" ; Sand Rock Colors[12]="0x09B9" ; Acid Colors[13]="0x09A4" ; Crystaline
TempX=UO.GetX() TempY=UO.GetY() walkn(SundukX,SundukY,"") ToHide() UO.UseObject("Sunduk") UO.UseObject("MyBox")
Ore[0]=0x19B9 ; 4 and more ore Ore[1]=0x19B7 ; 1 ore Ore[2]=0x19BA ; 2 ore Ore[3]=0x19B8 ; 3 ore
For i=0 to 3 Exit=0 Repeat UO.FindType(Ore[i]) If UO.GetQuantity('finditem')>0 then If UO.GetColor('finditem')=='0x0000' Then Container=UO.GetSerial('IronBag') Else Container=UO.GetSerial('OtherBag') Exit1=0 j=0 While j<Index AND Exit1<>1 If UO.GetColor('finditem')==Colors[j] Then Container=UO.GetSerial('BestBag') Exit1=1 Endif j=j+1 Wend Endif UO.MoveItem('finditem',0,Container) CheckLag() wait(1000) Else Exit=1 Endif Until Exit==1 Next
UO.FindType('0x0EED',-1,'backpack') wait(500) If UO.FindCount() Then UO.MoveItem('finditem','all','MyBox') wait(500) CheckLag() Endif
UO.FindType('0x0F0E','0x0000','backpack') wait(500) If UO.FindCount() Then UO.MoveItem('finditem','all','MyBox') wait(500) CheckLag() Endif
LoadRes()
walkn(TempX,TempY,"") ToHide() end sub
sub LoadRes() VAR EdaType='0x097B' ; Fish VAR WaitTime=300, InPack VAR Scrolls=10 VAR Potions=10 VAR VortInPack=0, MassInPack=0 ; goto Nejrat ; Eda ================================================== UO.FindType(EdaType,-1,'MyBox') wait(WaitTime) If UO.FindCount() Then UO.MoveItem('finditem',100,'backpack') wait(WaitTime) CheckLag() Endif
CheckLag() Repeat UO.UseType(EdaType) wait(1000) Until UO.InJournal('You can')
UO.FindType(EdaType,-1,'backpack') wait(WaitTime) If UO.FindCount() Then UO.MoveItem('finditem','all','MyBox') wait(WaitTime) CheckLag() Endif ; End Eda ==============================================
Nejrat: ; Inviz UO.FindType('0x0F0E','0x0631','backpack') wait(WaitTime) InPack=UO.GetQuantity('finditem') IF InPack<Potions Then UO.FindType('0x0F0E','0x0631','MyBox') wait(WaitTime) If UO.FindCount() Then UO.MoveItem('finditem',Potions-InPack,'backpack') wait(WaitTime) Endif Endif
; Vortex Vort: UO.IgnoreReset() UO.FindType('0x1F66',-1,'backpack') While UO.FindCount() VortInPack=VortInPack+UO.GetQuantity('finditem') wait(WaitTime) UO.Ignore('finditem') UO.FindType('0x1F66',-1,'backpack') Wend IF VortInPack<Scrolls Then UO.FindType('0x1F66',-1,'MyBox') wait(WaitTime) If UO.FindCount() Then UO.MoveItem('finditem',Scrolls-VortInPack,'backpack') wait(WaitTime) Goto Vort Endif Endif
; Dispell Dispell: UO.IgnoreReset() UO.FindType('0x1F62',-1,'backpack') While UO.FindCount() MassInPack=MassInPack+UO.GetQuantity('finditem') wait(WaitTime) UO.Ignore('finditem') UO.FindType('0x1F62',-1,'backpack') Wend IF MassInPack<Scrolls Then UO.FindType('0x1F62',-1,'MyBox') wait(WaitTime) If UO.FindCount() Then UO.MoveItem('finditem',Scrolls-MassInPack,'backpack') wait(WaitTime) Goto Dispell Endif Endif UO.IgnoreReset() end sub
;----------- Summon Energy Vortex, kill elem and loot him ----------- sub killelem() VAR xx,yy,m DIM Ore[4] Ore[0]='0x19B7' ; 1 ore Ore[1]='0x19BA' ; 2 ore Ore[2]='0x19B8' ; 3 ore Ore[3]='0x19B9' ; 4 and more ore VAR i, Exit,l
UO.Set('finddistance',10)
UO.UseType('0x0f0e','0x0631') ;inviz wait(3000)
;0x000D vortex
povtor: UO.DeleteJournal()
m=UO.Mana UO.FindType('0x0010',-1,'ground') If UO.FindCount() Then UO.WaitTargetObject('finditem') UO.UseType('0x1f66') While UO.Mana>=m wait(300) Wend If UO.InJournal('spell fizzles') then goto povtor Endif wait(1000) Endif jdat: UO.FindType('0x0010',-1,'ground') wait(300) If UO.FindCount() Then UO.FindType('0x000D',-1,'ground') wait(300) If UO.FindCount() Then wait(1000) goto jdat Else goto povtor Endif Endif
dispel: m=UO.Mana UO.DeleteJournal() UO.FindType('0x000D',-1,'ground') If UO.FindCount() Then UO.WaitTargetObject('finditem') UO.UseType('0x1F62') While UO.Mana>=m wait(300) Wend If UO.InJournal('fizzles') then goto dispel Endif Endif
xx=UO.GetX() yy=UO.Gety()
For i=0 to 3 UO.FindType(Ore[i],-1,'ground') If UO.FindCount() then If UO.GetDistance('finditem')>3 Then Walkn(0,0,'finditem') Endif UO.Grab('all','finditem') CheckLag() UO.FindType('0x0EED',-1,'ground') If UO.FindCount() Then UO.Grab('all','finditem') Endif Endif Next
Walkn(xx,yy,'') end sub
############################################################### ############################################################### ; ; Shared Subs ; ############################################################### ###############################################################
#============================================================== # tohide() - try hidding char. When char lose HP, drink inviz # potion if it found in backpack # # Journal has been deleted!!! #-------------------------------------------------------------- sub tohide() while NOT UO.Hidden() UO.DeleteJournal() UO.FindType('0x0F0E','0x0631','my')
if UO.Life<UO.STR/2 AND UO.GetQuantity('finditem')>0 then UO.UseType('0x0F0E','0x0631') ; inviz potion UO.Exec('warmode 0') wait(2000) else UO.Exec('warmode 0') UO.UseSkill('Stealth') repeat wait(300) until UO.InJournal('You have hidden') OR UO.InJournal('seem to hide') OR UO.InJournal('preoccupied') endif wend end sub
#============================================================== # CheckLag() - click on backpack and awaiting "backpack" # message in journal. # # Journal has been deleted!!! #-------------------------------------------------------------- sub CheckLag() UO.DeleteJournal() UO.Click('backpack') repeat wait(500) until UO.InJournal('backpack') end sub
#============================================================== # Gong(counter) - playing wav-file 'counter'-times # http://www.jetta.ru/cow.wav #-------------------------------------------------------------- sub Gong(times) ; play wav-file VAR i for i=1 to times UO.Exec("playwav d:\game\uo\injection\cow") wait(1200) ; time to play sample at once next end sub
#============================================================== # Alarm() - when char lose some HP, U are informed :) #-------------------------------------------------------------- sub Alarm() VAR CharHP=190 while 1==1 wait(1000) if UO.Life<CharHP then gong(1) endif wend end sub
;---------------- Ходилка ----------------------- sub GoW() VAR walkwait=300 VAR x,y,dir=6 VAR key=36 ; Home key x=UO.GetX() y=UO.GetY() while UO.GetDir()<>dir UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif wend UO.Press(key)
wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetX()+1==x Then return -1 Else return 1 Endif end sub
sub GoN() VAR walkwait=300 VAR x,y,dir=0 VAR key=33 ; PgUp x=UO.GetX() y=UO.GetY() while UO.GetDir()<>dir UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif wend UO.Press(key)
wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetY()+1==y Then return -1 Else return 1 Endif end sub
sub GoE() VAR walkwait=300 VAR x,y,dir=2 VAR key=34 ; PgDown x=UO.GetX() y=UO.GetY() while UO.GetDir()<>dir UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif wend UO.Press(key)
wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetX()-1==x Then return -1 Else return 1 Endif end sub
sub GoS() VAR walkwait=300 VAR x,y,dir=4 VAR key=35 ; End x=UO.GetX() y=UO.GetY() while UO.GetDir()<>dir UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif wend UO.Press(key)
wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetY()-1==y Then return -1 Else return 1 Endif end sub
sub GoWN() VAR walkwait=300 VAR x,y,dir=7 VAR key=38 ; UpArrow x=UO.GetX() y=UO.GetY()
If UO.GetDir()<>dir Then UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif
If UO.GetDir()==dir Then UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetDir()==dir Then return -1 Else return UO.GetDir() Endif Else return UO.GetDir() Endif end sub
sub GoNE() VAR walkwait=300 VAR x,y,dir=1 VAR key=39 ; RightArrow x=UO.GetX() y=UO.GetY()
If UO.GetDir()<>dir Then UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif
If UO.GetDir()==dir Then UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetDir()==dir Then return -1 Else return UO.GetDir() Endif Else return UO.GetDir() Endif end sub
sub GoSE() VAR walkwait=300 VAR x,y,dir=3 VAR key=40 ; DownArrow x=UO.GetX() y=UO.GetY()
If UO.GetDir()<>dir Then UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif
If UO.GetDir()==dir Then UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetDir()==dir Then return -1 Else return UO.GetDir() Endif Else return UO.GetDir() Endif end sub
sub GoSW() VAR walkwait=300 VAR x,y,dir=5 VAR key=37 ; LeftArrow x=UO.GetX() y=UO.GetY()
If UO.GetDir()<>dir Then UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif
If UO.GetDir()==dir Then UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() Endif If UO.GetDir()==dir Then return -1 Else return UO.GetDir() Endif Else return UO.GetDir() Endif end sub
#============================================================== # WalkN(X,Y,Serial) - char is walking by dX and dY step # sub using Home, End, PgUp, PgDown keys # d'not rebind this key from default action! # walkwait - delay after keypress #-------------------------------------------------------------- sub WalkN(x,y,Target) VAR i VAR dx,dy,Exit=0 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 Exit=1 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() Endif
If dx>0 AND dy<0 Then GoNE() Endif
If dx<0 AND dy>0 Then GoSW() Endif
If dx<0 AND dy<0 Then GoWN() Endif
Endif If dx<>0 AND dy==0 Then If dx>0 Then GoE() Endif If dx<0 Then GoW() Endif Endif
If dx==0 AND dy<>0 Then If dy>0 Then GoS() Endif If dy<0 Then GoN() Endif Endif Wend end sub
|