Code: ### Taming для дрв. ################################ # 4776528 Nmy. #################################################### # переменные каторые НЕнадо менять: var Serial, flag # переменные каторые надо менять: var shrink = '0x0F0E' ; Тип шринка. var colourshrink = '0x0388' ; цвет шринка. var Chest = '0x401DBE20' ; ИД сундука. var RuneBook = '0x402C19F1' ; ИД рунбуки. var Tbeast = '0x00DC' ; Тип зверя каго тамим. var staff = '0x13F8' ; Тип палки для таминга. var type = '0x20F6' ; Тип зверя после шринка. var nomer1 = 21 ; Номер руны к зверю. (см. ниже) var nomer2 = 33 ; Номер руны домой. (см. ниже) var fish = '0x097B' #################################################### # Номера для рекола по рунбуку номера: # руна 1 это 21 # руна 2 это 33 # руна 3 это 46 # руна 4 это 58 # руна 5 это 64 # руна 6 это 73 # руна 7 это 88 # руна 8 это 94 # руна 9 это 1025 ####################################################
sub main() while 1 checklag() uo.print('Летим к ламе') GoPlace(nomer1) checklag() flag=0 repeat wait(2800) getbeast() ws() uo.msg('guards a criminal!') until flag==1 uo.print('Летим домой') GoPlace(nomer2) checklag() uo.print('Выгружаем зверя') UnLoadBeast() wend endsub
sub getbeast() uo.set('finddistance','7') uo.findtype(Tbeast,-1,'ground') if uo.findcount() then uo.print('Нашли ламу') Serial=uo.getserial('finditem') flag=taming(Serial) endif endsub
sub UnLoadBeast() grab() if uo.objatlayer('Horse') then uo.useobject('self') checklag() wait(1000) uo.findtype(shrink,colourshrink,'backpack') if uo.findcount() then uo.waittargetobject(Serial) uo.useobject('finditem') checklag() wait(1000) endif uo.set('finddistance','2') uo.findtype(type,-1,'ground') if uo.findcount() then uo.moveitem('finditem',0,Chest) checklag() wait(1000) endif endif endsub
sub taming(kago) var uflag=0 repeat repeat checklag() cancelwaiting() uo.warmode(0) uo.waittargetobject(kago) uo.usetype(staff) uflag=tamingresult() until uflag<>0 if uflag==1 then uo.msg('all come') WalkN(0,0,Serial) while not uo.objatlayer('Horse') if uo.getx(Serial)==0 and not uo.objatlayer('Horse') then return 0 endif uo.useobject(kago) wait(1000) if uo.injournal('own that horse') then return 0 endif wend endif if uflag==4 then return 0 endif if uflag==3 then WalkN(0,0,kago) endif until uflag==1 return 1 endsub
sub cancelwaiting() if uo.waiting() then uo.canceltarget() endif endsub
sub tamingresult() var n for n=0 to 30 wait(500) ws() if uo.injournal('It seems') then return 1 endif if uo.injournal('fail') then return 2 endif if uo.injournal('see the creature') then return 3 endif if uo.injournal('already tame|see the target') then return 4 endif next return 0 endsub
sub GoPlace(num) checklag() var oldX=uo.getx('self') var oldY=uo.gety('self') uo.recall(RuneBook,num) repeat wait(1000) ws() until oldX<>uo.getx('self') && oldY<>uo.gety('self') endsub
sub grab() uo.useobject(Chest) checklag() wait(1000) uo.findtype(shrink,colourshrink,'backpack') if not uo.findcount() then uo.findtype(shrink,colourshrink,Chest) if uo.findcount() then uo.moveitem('finditem','1','backpack') wait(1000) else uo.msg('Нету шринков! Скрипт остановлен.') uo.exec('terminate all') endif endif toeat() endsub
sub toeat() uo.findtype(fish,-1,Chest) if uo.findcount() then uo.moveitem('finditem','50','backpack') checklag() wait(1000) repeat uo.usetype(fish) wait(400) until uo.injournal('full to eat') endif uo.findtype(fish,-1,'backpack') if uo.findcount() then uo.moveitem('finditem',0,Chest) checklag() wait(1000) endif endsub
sub CheckLag() repeat UO.DeleteJournal() UO.Click('backpack') until backpack()==1 end sub
sub backpack() var n for n=0 to 100 if uo.injournal('a backpack') then return 1 else wait(1000) endif ws() next return 0 endsub
sub ws() if uo.journal(0)=='World is saving now...' then repeat wait(1000) until uo.journal(0)<>'World is saving now...' endif endsub
sub WalkN(x,y,Target) ########################################## Ходилка VAR LastTimer LastTimer=UO.Timer() 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() If UO.GetDistance(Target)<4 OR LastTimer+200<UO.Timer() Then wait(1000) return Endif Else dx=x-UO.GetX() dy=y-UO.GetY() If dx==0 AND dy==0 OR LastTimer+200<UO.Timer() Then return 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 UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif 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 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 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
|