Code:
###
# В рунбуке по порядку лежат руны с первой до 6ой. Указываем таргетом рунбуку, максимальный вес, сундук, # форжу, настраиваем шоплист
# в котором пишем названия всех рингмайл и чайнмайл предметов которые потом пойдут на переплавку,и # координаты около дома -рядом
# с форжой и сундуком. Запустили-полетели-купили-вернулись-переплавили-инги убрали-полетели дальше.
#######
# ymd #
#######
sub main()
var X,Y, Xself , Yself, z ,i, n, k
var MaxWeight = 700 # Your max weight
uo.Set('finddistance','15')
uo.Set('buydelay','3000')
uo.AddObject('Runebook')
while uo.Targeting()
wait(100)
wend
for z = 0 to 1
for i = 1 to 6 #6 - six runes to shop in runebook (mb changes)
RecallShop:
CheckLag()
uo.UseObject('Runebook')
wait(1000)
uo.LClick(135 , i*15+55) # Runebook for DRW
wait(500)
Xself = uo.GetX('self')
Yself = uo.GetY('self')
repeat
wait(100)
until Xself<>uo.GetX('self') and Yself<>uo.GetY('self')
uo.Print('Buying ...')
wait(2550)
uo.Buy('iron2') #Shop list with chainmail items and ringmail items
wait(6000)
CheckLag()
RecallHome()
next
wait(300000) #Pause for respaun
next
end sub
sub RecallHome()
var RuneToHome=7 #Slot in runebook where's rune to home
var Runebook='0x4011A025' #ID of your runebook
var Xself , Yself, k
RecallHome:
Xself = uo.GetX('self')
Yself = uo.GetY('self')
CheckLag()
uo.UseObject('Runebook')
wait(2000)
uo.LClick(135 , RuneToHome*15+55)
wait(5000)
k = 0
repeat
uo.Print('Get out an items ...')
wait(1000)
k = k + 1
until Xself<>uo.GetX('self') and Yself<>uo.GetY('self')
if Xself <> uo.GetX('self') then
wait(1000)
SmelthingForIron()
CheckLag()
end if
end sub
Sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(50)
until UO.InJournal('backpack')
end sub
sub SmelthingForIron()
uo.Set('findistance','5')
var i
var Forge='0x400D7F9C' #ID of your forge near house
var Sunduk='0x401E340D' #ID of a container near house
var ingot='0x1BEF' #Type of iron ingot
DIM chain[10]
chain[0]='0x13EC' #0-9 .Types of ringmail and chainmail items
chain[1]='0x13F0'
chain[2]='0x13BF'
chain[3]='0x13BB'
chain[4]='0x13EE'
chain[5]='0x13EB'
chain[6]='0x13BE'
chain[7]='0x1B76'
chain[8]='0x1411'
chain[9]='0x1413'
go(4320,3780,0) # X,Y near forge
while not uo.Hidden()
uo.UseSkill('Hiding')
wait(5000)
wend
for i = 0 to 9
uo.FindType(chain[i],'-1','backpack')
if uo.FindCount() then
while uo.FindCOunt()
uo.FindType(chain[i],'-1','backpack')
uo.WaitTargetObject('finditem')
uo.UseObject(Forge)
wait(1000)
wend
else
uo.Print('There are no chainmail armor')
end if
next
uo.FindType('0x1BEF','-1','backpack')
if uo.FindCOunt() then
uo.moveitem('finditem','all',Sunduk)
wait(1000)
end if
uo.FindType('0x1BEF','-1','ground')
if uo.FindCOunt() then
uo.moveitem('finditem','all',Sunduk)
wait(1000)
end if
end sub
Sub go(x,y,k)
var kop
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"
kop=0
While Exit<>1
dx=x-UO.GetX()
dy=y-UO.GetY()
If dx==0 AND dy==0 Then
Exit=1
Endif
kop=kop+1
if kop==15 then
Exit=1
else
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
endif
Wend
if k==1 then
minround()
endif
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 CheckLag()
var ms="attacking you"
var k=uo.life-uo.str
if k*k>1 or uo.injournal(ms) then
uo.say("")
endif
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(50)
until UO.InJournal('backpack')
end sub