Code: Алгоритм скрипта - прилетает по руне к животному писмейчит таймит убиват лутит все что в трупе летит дальше .проблема - он писмейчит только одни раз( тоесть за то время пока животное находиться в писмейке , если не затаймит то больше не писмейчит) так вот как сделать чтоб еше раз писмейчил( ну пока не затаймит)?
var Kol_run = 15 ; Колчиство рун в цикле по рунбуке var Nom_run var Nogik = '0x13FF' ; тип оружия для варки резки var MaxWeight= ((uo.STR*3.5)+39) var Obj var Nojnici = '0x0F9F' var Skur = '0x1079' ; тип шкур var Skur2 = '0x1081' ; тип шкур 2 var Meat = '0x09F1 ' ; Мясо, решил не брезговать и им, чтоб потом кукинг прокачать
uo.setreceivingcontainer('Bagpak')
sub Start() uo.setglobal('Tek_run_tm') uo.exec('exec Main') uo.exec('exec Control') end sub
sub Main() wait(1000) uo.Targeting('self') uo.set('norbcalc','1') uo.set('norbcheck','1') uo.set('injectecho','1') while not uo.dead() wait(500) Nom_run = val(uo.getglobal('Tek_run_tm')) uo.print('Nachali marshrut-' + str(Nom_run ) ) wait(500) wait(500) Rec_to_les() ; Перед тем как бежать к точке реколимся в лес wait(8000) uo.sayU("go go go") Warka() uo.print(str(UO.Count("0x0f7b"))) if uo.weight > MaxWeight -60 or UO.Count("0x0f7b") < 5 then uo.print('Perepolne, domoi') Rec_to_home() wait(5000) Sbros() Getregs() end if Smena_run() ; меняем руну на новую wend EndSub
sub Warka() ; ********************************************************* основной скрипт ***************** var dx,dy, i , z , prizn = 0, kol_ani DIM Dich[4] Dich[0] = '0x00D4' ; Бык Dich[1] = '0x00ea' ; большой олень Dich[2] = '0x001B' ; гризлик dich[3] = '0x00e8' ; др бык dich[4] = '0x0019' ;волк for i = 0 to 4 ; Цикл по типам животных UO.Set('finddistance',10) ; дистанция для поиска UO.FindType(Dich[i], '-1', '1') ; Ищем животное Kol_ani = UO.FindCount() wait(200) If Kol_ani > 0 Then ; если нашли uo.sayU("Popalsia!!") obj = UO.GetSerial("finditem") ; запоминаем его uo.print('Cel - ' + Obj) wait(500) Prizn = 1 ; ставим признак что живое dx=UO.GetX(obj) ; находим координаты dy=UO.GetY(obj) uo.print( "begim k Dichi v tochke " + str(dx) + " " + str(dy)) Gotoxy(dx,dy,1) ; подходим поближе uo.print('Usmirim') Uo.Exec("warmode 0") pace() ; усмиряем, не проверяя в принципе, это так для понта чтоб чуть прокачать пейсмакинг Gotoxy(dx,dy,1) ; ближе подходим Uo.Exec("warmode 1") Uo.Exec("warmode 0") uo.print('tamim') Taming() ; таймим wait(1000) Release() ; и отпускаем wait(1000) uo.sayU("all guard") wait(100) uo.sayU("all guard") wait(1000) repeat uo.attack(Obj) ; атакуем wait(200) dx=UO.GetX(Obj) ; находим координаты dy=UO.GetY(Obj) if dx > 0 then ; могли уже успеть убить gotoxy(dx,dy,1) end if UO.FindType('0x2006', '-1', '1') ; Ищем на земле труп wait(2000) If UO.FindCount() > 0 or uo.GetDistance(Obj) > 2 Then if uo.GetDistance(Obj) > 2 then UO.Cast('Flame Strike',Obj) wait(7000) end if Prizn = 0 ; ставим признак что умерло, либо смоталось uo.print('Aga, sdohlo ili sbejalo') wait(1000) end if until prizn == 0 Goto_loot() ; бежим лутать uo.ignore(Obj) ; игнорировать обьект в дальнейшем end if uo.print(Dich[i] + "-" + str(Kol_ani) ) next if uo.life <100 then HealBand() end if end sub
; **************************************************** Скрипт на автолут ********************** sub Goto_loot() uo.print('Lutaem') var dx,dy,Obj2 UO.Set('finddistance',10) ; дистанция для поиска UO.FindType('0x2006', '-1', '1') ; Ищем на земле труп и засовываем его в переменную if uo.findcount() > 0 then obj2 = UO.GetSerial("finditem") dx=UO.GetX(obj2) dy=UO.GetY(obj2) if dx > 0 then uo.print ("begim k trupu v tochke " + str(dx) + " " + str(dy)) Gotoxy(dx,dy,1) ; Бежим к трупу uo.waittargetobject(Obj2) ; установить прицел на труп wait(1000) UO.usetype(Nogik) ; Использовать нож на прицеле wait(2000) uo.UseObject(Obj2) UO.Set( 'finddistance', '2' ) Repeat UO.FindType( '-1', '-1', obj2) UO.Grab( 200, 'finditem' ) ; грабим все что есть в трупе wait(1000) Until UO.FindCount() == 0 uo.ignore(Obj2) ; игнорировать обьект в дальнейшем end if uo.findtype(Skur) if uo.findcount() > 0 then obj2 = UO.GetSerial("finditem") uo.waittargetobject(Obj2) ; установить прицел на шкуры UO.usetype(Nojnici) end if end if end sub
sub Taming() dim Mes[6] Mes[0]="cliloc# 0xAC14" #Already taming Mes[1]="cliloc# 0xAC0D" #Vspomnila nas zivotina Mes[2]="cliloc# 0xA2DE" #this a to far away Mes[3]="cliloc# 0xAC0B" #this a to far away to continue taming Mes[4]="cliloc# 0xAC0F" #accept Mes[5]="cliloc# 0xAC0E" #fail to tame Mes[6]="You can't tame a creature during fight"
repeat uo.deletejournal() wait(200) if uo.getdistance(Obj)>1 then gotoxy(uo.getx(Obj),uo.gety(Obj),1) end if uo.useskill("Taming",Obj) repeat wait(400) until uo.injournal(Mes[0]) or uo.injournal(Mes[1]) or uo.injournal(Mes[2]) or uo.injournal(Mes[3]) or uo.injournal(Mes[4]) or uo.injournal(Mes[5]) or uo.injournal(Mes[6]) until uo.injournal(Mes[0]) or uo.injournal(Mes[1]) or uo.injournal(Mes[4]) uo.deletejournal() wait(200) end sub
sub release() uo.recall("0x84e188f8",2) wait(1000) uo.say(uo.getname(Obj)+" release") wait(500) uo.recall("0x84e188f8",2) wait(1500) end sub
; ********************************************************** Писмакинг ********* sub pace() uo.print(obj) uo.waittargetobject(Obj) uo.useskill("Peacemaking") wait(15000) end sub ; ******************************************************** Провокация **********************
Sub Smena_run() var v = val(uo.getglobal('Tek_run_tm')) if v < kol_run - 1 then ; Если текущий номер меньше всего количества рун то uo.setglobal('Tek_run_tm',str(v+1)) ; + 1 к счетчику рунок else uo.setglobal('Tek_run_tm','0') ; Иначе начинаем цикл сначала end if wait(500) end sub
sub Rec_to_home() var Udacha = 0 var Run var v = val(uo.getglobal('Tek_run_tm')) uo.set( "norbcheck", "1" ) uo.set( "norbcalc", "1" ) run = v + 9 repeat UO.FindType('0x0E3C', '-1', '1') ; Ищем сундуки wait(100) If UO.FindCount() < 1 Then ; если не находим сундук то значит еще в лесу uo.cast("Recall",'Runebookid') wait(8000) else Udacha = 1 end if until Udacha == 1 Udacha = 0 end sub
sub Rec_to_les() var Run var v = val(uo.getglobal('Tek_run_tm')) uo.set( "norbcheck", "1" ) uo.set( "norbcalc", "1" ) Run = v +1 uo.recall( 'Runebookid', 6*Run-1 ) ; тупо реколимся, даже если физл то ничего страшного end sub
sub Sbros() repeat wait(1500) uo.findtype(Skur2) uo.moveitem('finditem','0','Box') wait(1000) until not uo.count(Skur2) repeat wait(1500) uo.findtype(Meat) uo.moveitem('finditem','0','Box') wait(1000) until not uo.count(Meat) end sub
sub GetRegs() Var I var kolreg = 50 var kol_svit = 3 var kol_mesh var kol_nado var kolband = 50 uo.setreceivingcontainer('Bagpak') uo.useobject('Box') wait(200) uo.sayU('Pivo mne blia!') wait(200) dim Regs[7] Regs[0]="0x0f7b" ## Блудмосс ## Regs[1]="0x0f86" ## Мандра ## Regs[2]="0x0f7a" ## Блек пирл ## Regs[3]="0x0f84" ## Гарлик ## Regs[4]="0x0f85" ## Гинсенг ## Regs[5]="0x0f88" ## Найт сидж ## Regs[6]="0x0f8c" ## Сулфориус ## Regs[7]="0x0f8d" ## Спайдер силк ## wait(300) #Выгрузка регов if uo.getserial("Box")<>"0x00000000" then for i=0 to 7 Uo.findtype(Regs[i],"-1","-1") wait(300) kol_Mesh = uo.count(Regs[i]) wait(200) if Kol_Mesh < Kolreg then ; Если регов в бакпаке меньше чем положено то грузим недостачу Uo.findtype(Regs[i],"-1","Box") wait(300) Uo.grab(str(Kolreg-Kol_Mesh),"finditem") ; Грузим разницу wait(700) end if if Kol_Mesh > Kolreg then Uo.moveitem("finditem",str(Kol_Mesh-Kolreg),"Box") ; Если больше то выгружаем разницу wait(700) end if next end if ; загружаем бинты wait(300) UO.FindType('0x0e21', "-1", "Box") ; Загружаем бинты если их мало wait(300) kol_mesh = UO.Count('0x0e21') ; смотрим сколько бинтов в бакпаке uo.print(kol_mesh) wait(300) If Kol_Mesh < KolBand Then ; если количество меньше чем положено то берем Uo.grab(str(KolBand-Kol_Mesh),"finditem") ; Грузим разницу ; загружаем разницу в бинтах wait( 1000 ) Endif if Kol_Mesh > KolBand then ; Если больше то выкидываем Uo.moveitem("finditem",str(Kol_Mesh-KolBand),"Box") ; Если больше то выгружаем разницу wait(700) end if endsub
sub Control() var Notoriety,IsNPC, Jurn, danger var v = val(uo.getglobal('tek_run')) var i while not uo.dead() Jurn=UO.Journal(0) if uo.Life < 100 then UO.Exec('terminate Main') UO.Exec('terminate main') UO.Set('finddistance',10) repeat UO.FindType('0x0E3C', '-1', '1') ; Ищем сундуки wait(100) If UO.FindCount() < 1 Then ; если не находим то значит не смотались uo.waittargetobject('0x401CADC3') wait(100) UO.Usetype("0x1f4c") wait(100) for i= 0 to 30 uo.Press(35) ; Бежим вниз и влево, чтоб враг не успевал атачить, если что упремся в сундук wait(20) next uo.cast("Recall",'0x401CADC3') for i= 0 to 30 uo.Press(35) ; Бежим вниз и влево, чтоб враг не успевал атачить, если что упремся в сундук wait(20) next else danger = 1 ; Ставим признак что опасность миновала end if wait(500) until danger > 0 Smena_run() ; меняем руну uo.sayU('Кто то напал, но мы смотались') while uo.Life < 120 HealBand() wait(5000) wend Danger = 0 GetRegs() ; добираем бинтов, регов и скролов uo.print('Iz za napadenia nomer runki - ' + uo.getglobal('Tek_run_tm')) wait(500) uo.exec('exec Main') ; продожаем рубить end if wait(200) wend end sub
sub HealBand() VAR LH=0,RH=0 if UO.ObjAtLayer("Rhand") then RH=1 uo.addobject("Wep",UO.ObjAtLayer("Rhand")) end if if UO.ObjAtLayer("Lhand")then LH=1 uo.addobject("Shield",UO.ObjAtLayer("Lhand")) end if UO.bandageself() wait (800) uo.waittargetlast() if LH==1 then uo.useobject("Shield") wait (800) end if if RH==1 then uo.useobject("Wep") end if end sub
; ------------------------------------------ Ходилка -------------------------------------- Sub GotoXY(x,y,prec) var myX,myY,LastX=0,LastY=0,i,halt=0,z,r=0 for i=1 to 60 myX=uo.GetX() myY=uo.GetY() if LastX==myX and LastY==myY then halt=halt+1 else halt=0 end if if halt>=10 then if uo.GetDir()==1 then for z=0 to 8 uo.Press(40) next end if if uo.GetDir()==3 then for z=0 to 8 uo.Press(37) next end if if uo.GetDir()==5 then for z=0 to 8 uo.Press(38) next end if if uo.GetDir()==7 then for z=0 to 8 uo.Press(39) next end if halt=15 end if if Numb(x-myX)<=1 and Numb(y-myY)<=2 then return 1 end if if x<=myX then if y<=myY then for z=0 to 3 uo.Press(38) next else for z=0 to 3 uo.Press(37) next end if else if y<=myY then for z=0 to 3 uo.Press(39) next else for z=0 to 3 uo.Press(40) next end if end if LastX=myX LastY=myY wait(200) next return 0 end sub
Sub Numb(num) if num>=0 then return num else return num*(-1) end if end sub
sub Setup() uo.Exec('addobject Box') while uo.Targeting() wait(100) wend uo.Exec('addobject Bagpak') while uo.Targeting() wait(100) wend uo.Exec('addobject Runebookid ') while uo.Targeting() wait(100) wend end sub :cry:
|