Ахаё!
Кредито набиватель для pvp-alpha. Запускаем 2 клиента с 2мя инжектами соотв. (патча клиент ya-mu, затем используя yoko launcher), затем одним клиентом становимся у столбов , что наверх от банка, другим становимся около таблетки телепорта на дуэль. Одеваем первого, зупускаем credit_sender , на втором, что около таблетки, одев его прежду тоже, взяв мноооооого регов, запускаем credit_gainer и смотрим как эти дурики бегают дерутся... тестил ... работает стабильно вот уже час ....
Единственное, что нужно будет подогнать координаты клика на диалог дуэли кнопки V. (строчка 399) ( uo.LClick(222,216) )
+необходимо создать у того, кто gainer объект opponent, который будет являтся senderom
UPDATED
CREDIT_GAINER
Code: ;PVP-ALHA CREDIT GAINER
sub credit_gainer() Var r=0 dim says[3] start: lag_test() GoToXY(3766,1297,1) wait(1000) repeat if uo.GetY('self') < 1297 then UO.Press(35) wait(1500) endif if uo.GetY('self') > 1297 then UO.Press(33) wait(1500) endif if uo.GetX('self') < 3766 then UO.Press(39) wait(1500) endif if uo.GetX('self') > 3766 then UO.Press(36) wait(1500) endif until uo.GetY('self')<1256 lag_test() GoToXY(3732,1221,0) lag_test() if uo.ObjAtLayer('Horse') then uo.useobject('self') wait(1000) endif uo.print('Searching opponent...') uo.deletejournal() uo.ignorereset() uo.ignore('self') repeat lag_test() wait(1000) uo.findtype('0x0190','-1','ground') if uo.findcount()>0 then if uo.getserial('finditem')<>uo.getserial('opponent') then uo.ignore('finditem') endif endif until uo.getserial('finditem')==uo.getserial('opponent') lag_test() uo.waittargetobject('opponent') uo.ignorereset() find: uo.findtype('0x0ED5','0x0876','ground') uo.deletejournal() uo.useobject('finditem') repeat lag_test() wait(500) until uo.InJournal('Choose you') or uo.inJournal('Try again') if uo.inJournal('Try again') then uo.ignore('finditem') goto find: endif uo.deletejournal() uo.say('^_^') lag_test() wait(1000) uo.deletejournal() repeat lag_test() wait(2000) uo.print('teleport waiting') until not uo.GetX('self')==3732 wait(1000) uo.print('preFrght relocation') autostart() if uo.SS>0 and uo.SA>0 then GoToXY(uo.GetX('self')-4,uo.GetY('self')+4,1) endif wait(500) repeat lag_test() if uo.SS>0 and uo.SA>0 then uo.print('Casting ...') uo.usetype('0x0F06') else uo.attack('opponent') endif wait(1000) if uo.SS>0 and uo.SA>0 then uo.waittargetobject('opponent') uo.cast('Flame Strike') endif wait(5000) uo.attack('lasttarget') until uo.GetHP('opponent')==0 wait(1000) uo.exec('resend') lag_test() r=uo.Random(3) says[0]='хаахаа пиздец кул!' says[1]='лол я выиграл!' says[2]='дура. тупая. я круче.' says[3]='я король дуэлей' uo.say(says[r]) wait(1100) ;uo.set('finddistance','100') uo.findtype('0x1822','-1','ground') if uo.findcount()>0 then GoToXY(uo.GetX('finditem'),uo.GetY('finditem'),1) wait(1000) repeat lag_test() uo.print(STR(uo.GetY('finditem'))+' '+STR(uo.GetY('self'))) if uo.GetY('self') < uo.GetY('finditem') then UO.Press(35) wait(1500) endif if uo.GetY('self') > uo.GetY('finditem') then UO.Press(33) wait(1500) endif if uo.GetX('self') < uo.GetX('finditem') then UO.Press(39) wait(1500) endif if uo.GetX('self') > uo.GetX('finditem') then UO.Press(36) wait(1500) endif until uo.GetX('self')>3500 endif goto start: end sub
CREDIT_SENDER
Code: sub credit_sender() start: lag_test() GoToXY(3776,1262,0) lag_test() GoToXY(3776,1281,0) lag_test() GoToXY(3766,1297,1) lag_test() uo.print(STR(uo.GetY('self'))+' '+STR(uo.GetX('self'))) repeat lag_test() if uo.GetY('self') < 1297 then UO.Press(35) wait(1500) endif if uo.GetY('self') > 1297 then UO.Press(33) wait(1500) endif if uo.GetX('self') < 3766 then UO.Press(39) wait(1500) endif if uo.GetX('self') > 3766 then UO.Press(36) wait(1500) endif until uo.GetY('self')<1256 lag_test() GoToXY(3738,1220,0) lag_test() uo.deletejournal() uo.print('Teleporting...') repeat lag_test() uo.LClick(222,216) wait(1500) until uo.GetX('self')<>3738 wait(700) uo.Undress() repeat wait(4000) until uo.dead()
GoToXY(4470,1160,1) repeat if uo.GetY('self') > 1159 then UO.Press(33) wait(1500) endif if uo.GetX('self') < 4470 then UO.Press(39) wait(1500) endif if uo.GetX('self') > 4470 then UO.Press(36) wait(1500) endif until uo.GetX('self')==3777
wait(2000) repeat lag_test() wait(1500) until not uo.dead() GoToXY(3781,1272,0) lag_test() GoToXY(3776,1272,0) lag_test() GoToXY(3776,1262,0) lag_test() GoToXY(3767,1262,0) lag_test() wait(700) Equipment() lag_test() goto start end sub
Плюс доп. скрипты (ходилка, стек, эквип) используюца тут. копирайты в постах ниже.
Code: sub InitStack() UO.SetGlobal('STACK', '0') endsub
sub Push( param ) Var chk = Val(UO.GetGlobal('STACK')) UO.SetGlobal('STACK',str(chk + 1)) UO.SetGlobal('STACK_'+str(chk), param) endsub
sub Pop() Var chk = Val(UO.GetGlobal('STACK')) if chk then UO.SetGlobal('STACK',STR(chk - 1)) return UO.GetGlobal('STACK_'+STR(chk - 1)) end if endsub ################################################################################ sub GoToXY(x,y,prec) dim turn[8] ; индекс - ГетДир, значение поворот направо под 45 градусов turn[0] = 39 turn[1] = 34 turn[2] = 40 turn[3] = 35 turn[4] = 37 turn[5] = 36 turn[6] = 38 turn[7] = 33 dim deltax[8]; индекс - аналогично, значение - изменение координаты при проходе стенки dim deltay[8] deltax[0] = 1 deltax[1] = 1 deltax[2] = 1 deltax[3] = 0 deltax[4] = -1 deltax[5] = -1 deltax[6] = -1 deltax[7] = 0 deltay[0] = -1 deltay[1] = 0 deltay[2] = 1 deltay[3] = 1 deltay[4] = 1 deltay[5] = 0 deltay[6] = -1 deltay[7] = -1 var dx,dy var mx,my ; current coords var lx = 0, ly = 0, ld = -1 ; last move coords var pathFind = 0 ; as logical 0 - norm, 1 - block var ind var recursInd = 0 var fout = 0 var stepdelay = 300 InitStack() repeat mx=UO.GetX() my=UO.GetY() ; calculating for precision coming dx = mx - x If dx < 0 Then dx = 0 - dx EndIf ;get ABS diff dy = my - y If dy < 0 Then dy = 0 - dy EndIf If dy > dx Then dx = dy EndIf If dx <= prec Then Return EndIf if mx == x and my == y then return endif lx = mx ly = my ld = UO.GetDir() ; cause once pressing can only change the direcction if mx == x and my > y then UO.Press(33) endif if mx == x and my < y then UO.Press(35) endif if mx < x and my == y then UO.Press(34) endif if mx < x and my > y then UO.Press(39) endif if mx < x and my < y then UO.Press(40) endif if mx > x and my == y then UO.Press(36) endif if mx > x and my > y then UO.Press(38) endif if mx > x and my < y then UO.Press(37) endif ;UO.Print('KeyPressed') wait( stepdelay ) if lx == UO.GetX() and ly == UO.GetY() and ld == UO.GetDir() then ; now there is a stop situation UO.Print('PathFind') recursInd = 0 repeat ################################################# ind = ld UO.Print(str(ind)) fout = 0 repeat ; идем в обход пока не упремся снова или не кончится стена UO.Print('Iteration') mx = UO.GetX() my = UO.GetY() ld = UO.GetDir() UO.Press( turn[ ind ] ) wait( stepdelay ) if (UO.GetX() == mx and UO.GetY() == my and ld == UO.GetDir()) then fout = 1 ; уперлись else dx = UO.GetX() - mx dy = UO.GetY() - my UO.Print('deltas '+str(dx)+' '+str(dy)) if deltax[ ind ] == dx and deltay[ ind ] == dy then fout = 2 ; препятствие пройдено endif endif until fout UO.Print('fout '+ str(fout)) if fout == 1 then ; уходим на следующий поворот recursInd = recursInd + 1 Push( str( ind ) ) ;ld = ind else ; fout == 2 ; надо попытаться восстановить контекст из стека, или выйти из обхода UO.Print('Iter '+ str(recursInd)) pathFind = 0 if recursInd then ; восстановление pathFind = 1 recursInd = recursInd - 1 ld = val(Pop()) - 1 if ld == -1 then ld = 7 endif UO.Press( turn[ld] ) wait ( stepdelay ) ; в сиду того, что ондо нажатие меняет напрваление endif endif ################################################# until not recursInd and not pathFind UO.Print('PathFind END') endif until 0 endsub ################################################################################ sub Equipment() uo.useobject('backpack') wait(700) uo.Undress() wait(100) uo.disarm()
uo.findtype('0x0EFA','-1','backpack') if uo.findcount()>0 then uo.ignore('finditem') endif
repeat uo.findtype('-1','-1','backpack') uo.moveitem('finditem','0','0x40008964') wait(100) until uo.findcount()<1
If UO.GetGlobal('NorbcalcCheck')<>'yes' Then UO.Set('norbcalc','1') UO.SetGlobal('NorbcalcCheck','yes') End If
If UO.GetGlobal('DressCheck')<>'on' Then UO.SetGlobal('DressCheck','on') End If
UO.Recall('0x4000B44E','1') Wait(300) put_test() UO.Recall('0x4000B2E3','1') Wait(1000) lag_test() UO.LClick(176,207) put_test() UO.Recall('0x4000B553','1') Wait(300) put_test() lag_test() UO.Recall('0x4000B553','12') Wait(300) put_test() lag_test() UO.Recall('0x4000B553','3') put_test() lag_test() if not uo.ObjAtLayer('Horse') Then #UO.Recall('0x4000B553','8') endif wait(500) autostart() UO.SetGlobal('DressCheck','off') Uo.Msg('.arm') end sub
sub put_test() repeat wait(500) until uo.InJournal('You put') uo.deletejournal() end sub
sub lag_test() ;uo.print('CheckLag') uo.deletejournal() uo.click('backpack') repeat wait(50) until uo.InJournal("backpack") ;uo.print('Ok!') end sub
[/b]
|