Вот попросили написать скрипт- больше так небуду
Предлагали денег- невзял
Настраивать надо только руны и их кол-во...
чар открывает - закрывает калитку, там надо посмотреть типы...
хождение тоже каждому индивидуально настраивать...
Запускаем у сундука, в бекпаке руна от дома, руны в шахте в сундуке, чар летит в шахту - обкапывает 4 х 4 летит дамой, складывает, летит в другую...
Code: ############################################################### #===---====----===---===---= Mining =---=-=-=-=-=--=-=-=-=-=-=# ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ;==================== Main mining script ====================== ;======================= NMY (Lil Nmy) ======================== ;================= http://forum.yoko.com.ua =================== ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" sub main() VAR i, x
Dim rune[20] rune[0] = 3 rune[1] = '0x416ABF80' rune[2] = '0x401F70BB' rune[3] = '0x415D1F41' rune[4] = '' rune[5] = '' rune[6] = '' rune[7] = '' rune[8] = '' rune[9] = '' rune[10]= '' rune[11]= '' rune[12]= '' rune[13]= '' rune[14]= '' rune[15]= '' rune[16]= '' rune[17]= '' rune[18]= '' rune[19]= ''
uo.print(' Покажы где руна дамой? ... ') uo.exec('addobject home') while uo.targeting() wait(250) wend
uo.print(' Покажы сундук куда складывать и где руны в пещеры?? ... ') uo.exec('addobject Sunduk') while uo.targeting() wait(250) wend
while 1 for i = 1 to rune[0]
fizz: if uo.mana < 12 then while uo.mana < 12 uo.useskill('Meditation') wait(5000) wend endif
regi() uo.DeleteJournal() uo.print(' Летим в шахту ...') x = uo.getx() uo.waittargetobject( rune[i] ) uo.cast('Recall')
while x == uo.getx() and not uo.InJournal('The spell fizzles') wait(250) wend
if uo.InJournal('The spell fizzles') then goto fizz endif
mining() unload()
next wend end sub ;------------------------------------------- Sub mining() VAR mx, my, mz, i, j, jor, ser, noto, n Dim Ore[4] Ore[1] = '0x19B7' Ore[2] = '0x19BA' Ore[3] = '0x19B8' Ore[4] = '0x19B9'
mx = UO.GetX("self") my = UO.GetY("self") mz = UO.GetZ("self")
uo.set('finddistance','2') uo.findtype('0x000E', -1 ,'ground') if uo.FindCount() then invis() else while not UO.Hidden() UO.Warmode("0") uo.print(" Прячемся...") UO.UseSkill("Hiding") wait(4000) wend end if
for i = mx-4 to mx+4 for j = my-4 to my+4 UO.DeleteJournal()
while not UO.Hidden() UO.Warmode("0") uo.print(" Прячемся...") UO.UseSkill("Hiding") wait(4000) wend
while not UO.InJournal("Туда Вам не дотянуться|Это слишком далеко отсюда|Тут не осталось руды|в шахте!") UO.DeleteJournal()
UO.Waittargettile("1341", str(i), str(j), str(mz)) UO.Usetype("0x0E85")
while not UO.InJournal("Туда Вам не дотянуться|Это слишком далеко отсюда|Тут не осталось руды|в шахте!|You put|fail to find|is attacking you|You have found") and not uo.Dead() if uo.Dead() then uo.playwav("C:\games\ultima online\alert.wav") uo.exec('terminate all') endif wait(250) wend
if uo.InJournal('is attacking you') then invis() endif
for jor = 0 to 9 ser = uo.journalserial(jor) noto = uo.getnotoriety(ser) if noto <> 1 and noto <> 0 and not uo.getgraphic(ser)=='0x000E' and not uo.InJournal('Fireman') then if uo.waiting() then uo.canceltarget() endif invis() return endif next
uo.set('finddistance','1') for n = 1 to 4 uo.findtype( Ore[n] ,'-1','ground') while uo.FindCount() uo.moveitem('finditem') checklag() wait(1000) uo.findtype( Ore[n] ,'-1','ground') wend next
if uo.weight > uo.str*4 then return endif
wend
next next uo.print(' Летим дамой ...') end sub ;------------------------------------------- sub unload() VAR n, x Dim UnLoad[4] UnLoad[1] = '0x19B7' UnLoad[2] = '0x19BA' UnLoad[3] = '0x19B8' UnLoad[4] = '0x19B9'
fizz: uo.DeleteJournal() uo.print(' Летим дамой ...') x = uo.getx() uo.waittargetobject('home') uo.cast('Recall')
while x == uo.getx() and not uo.InJournal('The spell fizzles') and uo.life >= uo.str wait(250) wend
if uo.InJournal('The spell fizzles') then goto fizz endif
if uo.life < uo.str then invis() heal() goto fizz endif
check() open() walkme(2920,115,'') close() walkme(2914,110,'')
uo.useobject("Sunduk") wait(250) CheckLag()
uo.print(' Разгружаюсь ...') For n = 1 to 4 UO.FindType( UnLoad[n] ) while UO.FindCount() UO.moveitem('finditem','0','Sunduk') CheckLag() wait(1000) UO.FindType( UnLoad[n] ) wend next
uo.print(' Разгрузились ...') end sub ;------------------------------------------- sub invis() uo.print(' Инвизка ...') uo.warmode('0') uo.usetype('0x0F09','0x0060') end sub ;------------------------------------------- sub heal() uo.Print(' Лечение ... ') uo.warmode('0') while uo.life < uo.str uo.bandageself() checklag() wait(11000) wend end sub ;------------------------------------------- sub regi() VAR r, q, n, amount = 10 Dim reg[4] reg[1] = '0x0F7A' reg[2] = '0x0F7B' reg[3] = '0x0F86' reg[4] = '0x0E21'
For r = 1 to 4 if uo.count( reg[r] )<>amount then q = amount - uo.count( reg[r] )
if q <> 0 then if q > 0 then
uo.useobject("Sunduk") wait(250) CheckLag()
uo.findtype( reg[r] , -1 ,"Sunduk")
If uo.findcount() == 0 then uo.msg('You dont have any!') return endif
uo.moveitem('finditem', STR(q) ) checklag() wait(1000)
else
q = q*-1 uo.findtype( reg[r] ) uo.moveitem('finditem', STR(q) ,"Sunduk") CheckLag() wait(1000)
endif endif
endif next
While uo.Count('0x0F09','0x0060') < 2 uo.findtype('0x0F09','0x0060',"Sunduk") if uo.FindCount() then uo.moveitem('finditem') checklag() wait(1000) endif wend
uo.print(' Взяли реги ...') end sub ;------------------------------------------- sub open() uo.print(' Открываем калитку ...') UO.Set('finddistance','2') UO.FindType('0x0826', -1 ,'ground') If UO.FindCount() then UO.UseObject('finditem') repeat uo.findtype('0x0827', -1 ,'ground') wait(100) until uo.findcount() Endif end sub ;------------------------------------------- sub check() VAR m uo.Print(' Проверяем руну ... ') uo.deletejournal() uo.click('home') while not uo.injournal('jumps left') wait(250) wend if uo.injournal('(0 jumps left)|(1 jumps left)') then uo.Print(' Маркаем руну ... ') m = uo.mana uo.waittargetobject('home') uo.cast('Mark') repeat wait(250) until uo.mana<m endif end sub ;------------------------------------------- sub close() uo.print(' закрываем ...') UO.Set('finddistance','2') UO.FindType('0x0827', -1 ,'ground') If UO.FindCount() then UO.UseObject('finditem') repeat uo.findtype('0x0826', -1 ,'ground') wait(100) until uo.findcount() Endif 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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;; 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=100 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=100 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
update 22.01.2007
|