Кредито набиватель для 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: Select all
;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: Select all
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: Select all
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