Page 1 of 1

доработка скрипта на мининг

Posted: 2010-03-09 13:53:53
by shoko
доброго времени суток. ниже приведен скрипт - копает на скале в брите до перегруза прыгает по рунбуке, разгружается прыгает обратно и продолжает копать с последнего места. необходимо вот что :

1) чтоб после разгрузки и прыга обратно в брит скрипт начинал копать с 1 координаты

2) ввернуть в него чтоб перед каждой копкой юзал спирит спик.

скрипт собирал сам из 2х, а вот как сделать чтоб он заного начинал так и не понял... ах да - сервак на всяк пожарный ДРВ

Заранее спасибо!

Собственно сам скрипт:

sub main()
while not uo.dead()


go(1455,1529,0)
go(1455,1529,1)
go(1453,1529,1)
go(1452,1529,1)
go(1450,1530,1)
go(1448,1528,1)
go(1447,1527,1)
go(1445,1526,1)
go(1444,1524,1)
go(1446,1522,1)
go(1448,1522,1)
go(1451,1521,1)
go(1452,1520,1)
go(1452,1518,1)
go(1450,1517,1)
go(1448,1515,1)
go(1450,1513,1)
go(1450,1511,1)
go(1450,1509,1)
go(1451,1507,1)
go(1453,1505,1)
go(1455,1505,1)
go(1457,1506,1)
go(1455,1505,1)
go(1453,1505,1)
go(1451,1507,1)
go(1450,1509,1)
go(1450,1511,1)
go(1450,1513,1)
go(1448,1515,1)
go(1450,1517,1)
go(1452,1518,1)
go(1452,1520,1)
go(1451,1521,1)
go(1448,1522,1)
go(1446,1522,1)
go(1444,1524,1)
go(1445,1526,1)
go(1447,1527,1)
go(1448,1528,1)
go(1450,1530,1)
go(1452,1529,1)
go(1453,1529,1)
wend

endsub

sub minround()

VAR Kirka = '0x0e85'
VAR TileNum = '1339'
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 kolr,per
for y=-1 to 1
for x=-1 to 1

k = 0
repeat
UO.DeleteJournal()

t = UO.Timer()
k = k + 1
if uo.targeting() then
UO.CancelTarget()
endif
CheckLag()
wait(300)
ToHide()
UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)
UO.UseType( Kirka )
repeat
wait(300)
until UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR UO.InJournal(ms7) OR ((t + MaxTime) < UO.Timer())
uo.findtype('0x19B9','-1','backpack')
kolr=uo.getquantity('finditem')
per=uo.str*4+30-uo.weight
uo.print("kol-vo irona " + str(kolr) + " do perevesa " + str(per))
if per<=30 then
ToRecall()
wait(700)
endif
until ( NOT UO.InJournal(ms4) AND NOT UO.InJournal(ms3) 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 ToHide()
var CheckTime
while NOT UO.Hidden()
UO.Print('Hidden...')
UO.Exec("warmode 0")
wait(1000)
UO.UseSkill('Stealth')
CheckTime=UO.Timer()
REPEAT
wait(300)
Until UO.Hidden() or CheckTime+60<uo.Timer() or UO.Dead()
Wend
End sub


sub ToRecall()
RecallToHome()
wait (10000)
DropOre()
wait (10000)
RecallToOre()
wait (10000)
end sub

sub RecallToHome()
uo.Print('Прыгаем Домой.')
uo.exec("recall Runebook 21") ; домой ( в рунбуке слот 1 )
end sub

sub RecallToOre()
uo.Print('Прыгаем в Пещеру.')
uo.exec("recall Runebook 94") ; домой ( в рунбуке слот 8 )
end sub

sub DropOre()
VAR Chest='0x400AFA2F'
var o,exit
dim Ore[14]
Ore[0]=0x19B9
Ore[1]=0x19B7
Ore[2]=0x19BA
Ore[3]=0x19B8
Ore[4]=0x0F11
Ore[5]=0x0F16
Ore[6]=0x0F18
Ore[7]=0x0F15
Ore[8]=0x0F10
Ore[9]=0x0F0F
Ore[10]=0x0F26
Ore[11]=0x1F4C
Ore[12]=0x0EED
Ore[13]=0x0F20
ToHide()
if uo.Waiting() then
uo.CancelTarget()
end if
uo.SetReceivingContainer('Chest')
wait(500)
for o=0 to 13
exit=0
repeat
uo.FindType(Ore[o])
if uo.GetQuantity('finditem')>0 then
uo.Grab('0','finditem')
wait(1500)
else
exit=1
end if
until exit==1
next
uo.UnSetReceivingContainer('Chest')
end sub

Re: доработка скрипта на мининг

Posted: 2010-03-15 02:58:32
by Kazoo
използуй, брекеты а то трудно четать!

Re: доработка скрипта на мининг

Posted: 2010-05-21 17:15:00
by shkera123
sub main()
while not uo.dead()


go(1455,1529,0)
go(1455,1529,1)
go(1453,1529,1)
go(1452,1529,1)
go(1450,1530,1)
go(1448,1528,1)
go(1447,1527,1)
go(1445,1526,1)
go(1444,1524,1)
go(1446,1522,1)
go(1448,1522,1)
go(1451,1521,1)
go(1452,1520,1)
go(1452,1518,1)
go(1450,1517,1)
go(1448,1515,1)
go(1450,1513,1)
go(1450,1511,1)
go(1450,1509,1)
go(1451,1507,1)
go(1453,1505,1)
go(1455,1505,1)
go(1457,1506,1)
go(1455,1505,1)
go(1453,1505,1)
go(1451,1507,1)
go(1450,1509,1)
go(1450,1511,1)
go(1450,1513,1)
go(1448,1515,1)
go(1450,1517,1)
go(1452,1518,1)
go(1452,1520,1)
go(1451,1521,1)
go(1448,1522,1)
go(1446,1522,1)
go(1444,1524,1)
go(1445,1526,1)
go(1447,1527,1)
go(1448,1528,1)
go(1450,1530,1)
go(1452,1529,1)
go(1453,1529,1)
wend




А что это за координаты....?

Re: доработка скрипта на мининг

Posted: 2010-05-21 22:22:57
by Irina E
shoko wrote:доброго времени суток. ниже приведен скрипт - копает на скале в брите до перегруза прыгает по рунбуке, разгружается прыгает обратно и продолжает копать с последнего места. необходимо вот что :

1) чтоб после разгрузки и прыга обратно в брит скрипт начинал копать с 1 координаты

2) ввернуть в него чтоб перед каждой копкой юзал спирит спик.

скрипт собирал сам из 2х, а вот как сделать чтоб он заного начинал так и не понял... ах да - сервак на всяк пожарный ДРВ

Заранее спасибо!

Собственно сам скрипт:

Code: Select all

sub main() 
 while not uo.dead() 
 
  
go(1455,1529,0) 
    minround() 
go(1455,1529,1) 
    minround() 
go(1453,1529,1) 
    minround() 
go(1452,1529,1) 
    minround() 
go(1450,1530,1) 
    minround() 
go(1448,1528,1) 
    minround() 
go(1447,1527,1) 
    minround() 
go(1445,1526,1) 
    minround() 
go(1444,1524,1) 
    minround() 
go(1446,1522,1) 
    minround() 
go(1448,1522,1) 
    minround() 
go(1451,1521,1) 
    minround() 
go(1452,1520,1) 
    minround() 
go(1452,1518,1) 
    minround() 
go(1450,1517,1) 
    minround() 
go(1448,1515,1) 
    minround() 
go(1450,1513,1) 
    minround() 
go(1450,1511,1) 
    minround() 
go(1450,1509,1) 
    minround() 
go(1451,1507,1)      
    minround()    
go(1453,1505,1) 
    minround() 
go(1455,1505,1) 
    minround() 
go(1457,1506,1) 
    minround() 
go(1455,1505,1) 
    minround() 
go(1453,1505,1)
    minround() 
go(1451,1507,1) 
    minround() 
go(1450,1509,1) 
    minround() 
go(1450,1511,1) 
    minround() 
go(1450,1513,1) 
    minround() 
go(1448,1515,1) 
    minround() 
go(1450,1517,1) 
    minround() 
go(1452,1518,1) 
    minround() 
go(1452,1520,1) 
    minround() 
go(1451,1521,1) 
    minround() 
go(1448,1522,1) 
    minround() 
go(1446,1522,1) 
    minround() 
go(1444,1524,1) 
    minround() 
go(1445,1526,1) 
    minround() 
go(1447,1527,1) 
    minround() 
go(1448,1528,1) 
    minround() 
go(1450,1530,1) 
    minround() 
go(1452,1529,1) 
    minround() 
go(1453,1529,1) 
    minround() 
wend 

endsub 

sub minround() 

VAR Kirka = '0x0e85' 
VAR TileNum = '1339' 
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 kolr,per 
for y=-1 to 1 
for x=-1 to 1  

k = 0 
  repeat 
    UO.DeleteJournal() 
  
t = UO.Timer() 
    k = k + 1 
    if uo.targeting() then 
     UO.CancelTarget() 
    endif 
    CheckLag() 
    wait(300) 
  ToHide()    
UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0) 
    UO.UseType( Kirka ) 
    repeat 
     wait(300) 
    until UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR UO.InJournal(ms7) OR ((t + MaxTime) < UO.Timer()) 
    uo.findtype('0x19B9','-1','backpack') 
    kolr=uo.getquantity('finditem') 
    per=uo.str*4+30-uo.weight 
    uo.print("kol-vo irona " + str(kolr) + " do perevesa " + str(per)) 
    if per<=30 then 
     ToRecall()
     wait(700) 
    endif      
  until ( NOT UO.InJournal(ms4) AND NOT UO.InJournal(ms3) 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 
   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 ToHide() 
var CheckTime 
while NOT UO.Hidden() 
UO.Print('Hidden...') 
UO.Exec("warmode 0") 
wait(1000) 
UO.UseSkill('Stealth') 
CheckTime=UO.Timer() 
REPEAT 
wait(300) 
Until UO.Hidden() or CheckTime+60<uo.Timer() or UO.Dead() 
Wend 
End sub 


sub ToRecall()
RecallToHome()
wait (10000)
DropOre()
wait (10000)
RecallToOre()
wait (10000)
end sub

sub RecallToHome()
uo.Print('Прыгаем Домой.')
uo.exec("recall Runebook 21") ; домой ( в рунбуке слот 1 )
end sub

sub RecallToOre()
uo.Print('Прыгаем в Пещеру.')
uo.exec("recall Runebook 94") ; домой ( в рунбуке слот 8 )
end sub

sub DropOre()
VAR Chest='0x400AFA2F'
var o,exit
dim Ore[14]
Ore[0]=[code]0x19B9
Ore[1]=0x19B7
Ore[2]=0x19BA
Ore[3]=0x19B8
Ore[4]=0x0F11
Ore[5]=0x0F16
Ore[6]=0x0F18
Ore[7]=0x0F15
Ore[8]=0x0F10
Ore[9]=0x0F0F
Ore[10]=0x0F26
Ore[11]=0x1F4C
Ore[12]=0x0EED
Ore[13]=0x0F20
ToHide()
if uo.Waiting() then
uo.CancelTarget()
end if
uo.SetReceivingContainer('Chest')
wait(500)
for o=0 to 13
exit=0
repeat
uo.FindType(Ore[o])
if uo.GetQuantity('finditem')>0 then
uo.Grab('0','finditem')
wait(1500)
else
exit=1
end if
until exit==1
next
uo.UnSetReceivingContainer('Chest')
uo.useskill ("Spirit Speak")
wait(1000)
end sub[/code]

Code: Select all

sub DropOre()
VAR Chest='0x400AFA2F'
var o,exit
dim Ore[14]
Ore[0]=0x19B9
Ore[1]=0x19B7
Ore[2]=0x19BA
Ore[3]=0x19B8 
Ore[4]=0x0F11
Ore[5]=0x0F16 
Ore[6]=0x0F18 
Ore[7]=0x0F15
Ore[8]=0x0F10
Ore[9]=0x0F0F
Ore[10]=0x0F26
Ore[11]=0x1F4C 
Ore[12]=0x0EED
Ore[13]=0x0F20 
ToHide()
if uo.Waiting() then
uo.CancelTarget()
end if
uo.SetReceivingContainer('Chest')
wait(500)
for o=0 to 13
exit=0
repeat
uo.FindType(Ore[o])
if uo.GetQuantity('finditem')>0 then
uo.Grab('0','finditem')
wait(1500)
else
exit=1
end if
until exit==1
next
uo.UnSetReceivingContainer('Chest')
uo.useskill ("Spirit Speak") #      Я ВОТ ТУТ ПОСТАВИЛ СКИЛ СПИРИТ СПЕК ПОТОМУ ЧТО
ЕСЛИ ПОТАВИТЬ КОГДА ОН БУДЕТ КОПАТЬ ТО ТЫ МНОГО НЕ НАКОПАЕШ 
end sub
а по поводу чтобы он копал сначала я переделал чуток пробу сечас