Это робочий скрипт проверил сам на DRW, мне его друг подправил, и ешё спосиба розроботчику за него.
Code: Select all
######
#Opisanie
######
#Чар летает по 2 рунбукам к вендорам если вендор далеко
#подходит к нему и покупает товар.
#Как закупился у всех летит домой и скидывает
#все купленное в сэйф перезаряжает рунбуки хавает и опять 25
######
#Nastroika
######
#у чара в паке 3 рунбуки (люблю я рунбуки), в сэйфе у дома
#еда(фишстэйки),реколы(побольше). В уо делаем список товара
#который надо покупать(как это делать смотрим чуть ниже) список
#называем list1, в переменных указываем типы покупаемых
#товаров (у меня в скрипте подразумевается что товаров всего 5)
#можно летать только по первой рунбуке для этого в переменных
#нада переменную skokonada изменить на 1
##### ОБЯЗАТЕЛЬНО!!!!#########
#в игре набираем следущее-" ,set buydelay 3000 "(без ковычек)
#в настройках инжекта ставим галку на trackworlditems
##########################
#Как сделать список покупки
##########################
#1-подходи к вендору
#2-в настройках инжекта(закладка Main) жмем кнопку Buy/Sell
#3-в поле Name пишем list1 жмем Create
#4-в игре говорим вендору buy
#5-идем опять в инжект и в окне Shoping list выбираем товар и жмем
#Add можно сразу добавить несколько товаров
#6-далее жмем Done и еще раз Done
##########################
#!! 1 и 2 рунбуки забиты рунами к вендорам в 3 рунбуке первая руна
#домой
#каждой руне соответствует вендор=>надо вбить ид вендоров
#в соответствии с рунами
#!!! введите ВСЕ переменные
#######
#from Question with smile
#######
#Peremennue
#######
var book1='0x401411b2' # ID рунбук 1-ая
var book2='0x40318452' # ...2-ая
var book3='0x402d28cb' # ...3-яя
var type1='0x0F86'# соответствует типу покупаемого товара
var type2='0x0F88'# ...
var type3='0x0f7a'# ...
var type4='0x0f7b'# ...
var type5='0x0e34'# ...
var recall='0x1F4C' # тип рекола
var unloadseif='0x404a5287' # ID сэйфа у дома
var skokonada=1 # 0 -летаем по двум рунбукам; 1 -только по первой
var Whtime = 960 ;сколько ждать сек после разгрузки.
##ВВедите ид вендоров ниже###
sub POGNALI()
var k,j,b
DIM ven[9]
DIM vem[9]
#####################
ven[0]='0x002b54a0' #И Br1 для руны первой рунбуки Постоянно менять
ven[1]='0x000144bf' #Д Br2 для руны первой рунбуки Постоянно менять
ven[2]='0x00543bba' # Br3 Постоянно менять
ven[3]='0x002f0633' # Br4 для 1-ой рунбуки
ven[4]='0x002031dd' #В SJ
ven[5]='0x0054a832' #Е Minoc Постоянно менять
ven[6]='0x0024b7a2' #Н Trinsic Тоже менять
ven[7]='0x005142db' #Д Vesp1
ven[8]='0x001c9de3' #О Vesp2 для 9-ой руны 1 рунбуки
##################
vem[0]='0x001ca642' #Р для 1-ой руны 2 рунбуки
vem[1]='0x001d612e' #О
vem[2]='0x000764b3' #В
vem[3]='0x003c3d60' #
vem[4]='0x000fdcb6' # для 2-ой рунбуки
vem[5]='0x0031ea54' #
vem[6]='0x000b0c08' #
vem[7]='0x0021ce0b' #
vem[8]='0x00454a8d' # для 9-ой руны 2 рунбуки
#####################
while not uo.dead()
for k=1 to 9
repeat
port(k,book1)
uo.resend()
b=UO.GetDistance(ven[k-1])
while b>1
SuperWalk(0,0,ven[k-1])
b=UO.GetDistance(ven[k-1])
wend
bustreevseh1(ven[k-1])
UO.Say("bye")
next
if skokonada==0 then
for j=1 to 9
repeat
port(j,book2)
uo.resend()
b=UO.GetDistance(vem[j-1])
while b>1
SuperWalk(0,0,vem[j-1])
b=UO.GetDistance(vem[j-1])
wend
bustreevseh1(vem[j-1])
UO.Say("bye")
next
endif
port(1,book3)
wait(2000)
unload()
wait(2000)
wend
endsub
sub port(n,book)
var oldX=UO.GetX()
var oldY=UO.GetY()
var time
NoTarget()
UO.UseObject(book)
FastLootCheck()
CheckLag()
UO.LClick(135, n*15+55)
time=UO.Timer()
Repeat
wait(500)
Until oldX<>UO.GetX() OR oldY<>UO.GetY() OR time+200<UO.Timer()
end sub
sub FastLootCheck()
UO.DeleteJournal()
wait(600)
if UO.InJournal("FastLoot") OR UO.InJournal("World save") then
CheckLag()
endif
end sub
sub NoTarget()
if UO.Waiting() then
UO.CancelTarget()
endif
end sub
sub bustreevseh1(imya)
var vend, ven='vendor'
UO.Set('buydelay','1875') #для закупки 10 предметов у одного вендора.
ven=UO.GetName(imya)
uo.buy('list1',ven)
wait(4000) #необходимая пауза чтобы завершить закупку, чуть больше чем в 'buydelay'.
endsub
#==============================================================
# SuperWalk(X,Y,Serial) - char is walking by dX and dY step
# sub using Home, End, PgUp, PgDown keys
# d'not rebind this key from default action!
# walkwait - delay after keypress
#--------------------------------------------------------------
sub SuperWalk(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)<3 Then
Exit=1
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=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
sub unload()
var Wtime = 1
UO.FindType(type1, '-1', 'backpack')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',unloadseif)
CheckLag()
Wait(700)
UO.FindType(type1,'-1','backpack')
wend
UO.FindType(type2, '-1', 'backpack')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',unloadseif)
CheckLag()
Wait(700)
UO.FindType(type2,'-1','backpack')
wend
UO.FindType(type3, '-1', 'backpack')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',unloadseif)
CheckLag()
Wait(700)
UO.FindType(type3,'-1','backpack')
wend
UO.FindType(type4, '-1', 'backpack')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',unloadseif)
CheckLag()
Wait(700)
UO.FindType(type4,'-1','backpack')
wend
UO.FindType(type5, '-1', 'backpack')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',unloadseif)
CheckLag()
Wait(700)
UO.FindType(type5,'-1','backpack')
wend
UO.FindType(recall, '-1', 'backpack')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',unloadseif)
CheckLag()
Wait(700)
UO.FindType(recall,'-1','backpack')
wend
UO.Print('Ждем '+str(Whtime)+ ' секунд.')
Wtime = Whtime
wait(1000)
while Wtime > 0
wait(1000)
Wtime = Wtime - 1
UO.Print('Осталось '+str(Wtime)+ ' секунд.')
wend
if Wtime == 0 then
Wtime = Whtime
end if
endsub
sub CheckLag()
uo.DeleteJournal()
uo.Click('backpack')
repeat
wait(50)
until UO.InJournal('backpack')
endsub