Подкиньте идейку
Posted: 2006-02-06 21:14:34
мининг по скале! ходит по ранее записанным координатам когда перевес идёт домой скидывать руду, скинули руду идём к точке у которой закончили капать и капаем дальше. Дом с сундуком для разгрузки стоит в начале копания. проблема в том что чар идёт по координатам при копании идеально, но когда надо скинуть руду или идти после разгрузки в то место где закончили капать, начинает тупить ходилка, не обходит простые припятствия. вот как бы сделать, что бы чар идя на разгрузку и обратно до точки у которой закончил капать использовал координаты записанные для копки, т.е как бы запоминал координаты и шел по ним до дома и обратно? или это не реально?
Code: Select all
var tSeif=''
var Kirka='0x0E85'
var maxves=630 ; sdelai chyt pomenshe
var xs= ;koordinatu y syndyka
var ys= ;
var ma
sub main()
while not uo.dead()
go(xxxx,xxxx,x)# ходим по координатам для копания
go(xxxx,xxxx,x)
go(xxxx,xxxx,x)#подходим к сундуку
UnLoad()#выкладываем руду
wend
endsub
sub minround()
VAR TileNum = '-1'
VAR x, y, t, k
VAR MaxTime = 100
VAR ms1 = "There is no ore here to mine"
VAR ms2 = "You can't use"
##VAR ms3 = "You put the"
VAR ms4 = "You loosen some rocks"
VAR ms5 = "You are too far away"
VAR ms6 = "Try mining in rock"
VAR ms7 = "You can't see that"
VAR ms8 = "You put the Iron Ore"
VAR ms9 = "You have no line of sight to that location"
VAR ms10 = "You put the Agapite Ore"
VAR ms11 = "You put the Orion Ore"
VAR ms12 = "You put the Shadow Ore"
VAR ms13 = "You put the Crystal Ore"
VAR ms14 = "You put the Golden Ore"
VAR ms15 = "You put the Mytheril Ore"
VAR ms16 = "You put the Magma Ore"
VAR ms17 = "You put the Copper Ore"
VAR ms18 = "You put the Valorite Ore"
VAR ms19 = "You put the Verite Ore"
VAR ms20 = "You put the Dwarf Ore"
VAR ms21 = "You put the Silver Ore"
var kolr,per
for y=-2 to 2
for x=-2 to 2
k = 0
repeat
UO.DeleteJournal()
t = UO.Timer()
k = k + 1
if uo.targeting() then
UO.CancelTarget()
endif
CheckLag()
wait(300)
UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)
UO.UseType( Kirka )
repeat
wait(300)
if Uo.injournal("You have found some") then
podbor()
end if
until UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR UO.InJournal(ms7) OR UO.InJournal(ms8) OR UO.InJournal(ms9) OR UO.InJournal(ms10) OR UO.InJournal(ms11) OR UO.InJournal(ms12) OR UO.InJournal(ms13) OR UO.InJournal(ms14) OR UO.InJournal(ms15) OR UO.InJournal(ms16) OR UO.InJournal(ms17) OR UO.InJournal(ms18) OR UO.InJournal(ms19) OR UO.InJournal(ms20) OR UO.InJournal(ms21) OR ((t + MaxTime) < UO.Timer())
uo.findtype('0x19B9','-1','backpack')
kolr=uo.getquantity('finditem')
per=uo.str*4+20-uo.weight
uo.print("kol-vo irona " + str(kolr) + " do perevesa " + str(per))
maxvess()
until ( NOT UO.InJournal(ms4) AND NOT UO.InJournal(ms10) AND NOT UO.InJournal(ms11) AND NOT UO.InJournal(ms12) AND NOT UO.InJournal(ms13) AND NOT UO.InJournal(ms14) AND NOT UO.InJournal(ms15) AND NOT UO.InJournal(ms16) AND NOT UO.InJournal(ms17) AND NOT UO.InJournal(ms18) AND NOT UO.InJournal(ms19) AND NOT UO.InJournal(ms20) AND NOT UO.InJournal(ms21)OR (k > 10) )
next
next
endsub
Sub go(x,y,k)
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
dx=x-UO.GetX()
dy=y-UO.GetY()
If dx==0 AND dy==0 Then
Exit=1
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
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()
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(50)
until UO.InJournal('backpack')
end sub
sub UnLoad()
var i
DIM Item[13]
Item[1]=0x19B9 ; >3 ore
Item[2]=0x19B7 ; 1 ore
Item[3]=0x19BA ; 2 ore
Item[4]=0x19B8 ; 3 ore
Item[5]=0x0F11 ; saphires
Item[6]=0x0F16 ; amethysts
Item[7]=0x0F18 ; tourmalines
Item[8]=0x0F15 ; citrines
Item[9]=0x0F10 ; emeralds
Item[10]=0x0F0F ; star sapphires
Item[11]=0x0F26 ; diamonds
Item[12]=0x0EED ; gold
for i = 1 to 12
UO.FindType(Item[i], '-1', 'backpack')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',tSeif)
Wait(1000)
CheckLag()
UO.FindType(Item[i],'-1','backpack')
wend
next
end sub
sub podbor()
uo.findtype(0x19B9,-1,'ground')
uo.grab(0,'finditem')
wait(1000)
uo.findtype(0x19B8,-1,'ground')
uo.grab(0,'finditem')
wait(1000)
uo.findtype(0x19BA,-1,'ground')
uo.grab(0,'finditem')
wait(1000)
uo.findtype(0x19B7,-1,'ground')
uo.grab(0,'finditem')
wait(1000)
end sub
sub maxvess()
var x1,y1
if uo.weight>=maxves then
x1=uo.getx()
y1=uo.gety()
go(1045,1872,0)
unload()
go(x1,y1,1)
endif
endsub