Page 1 of 1

Lumber by Must Die+Savage walker

Posted: 2007-03-24 20:00:32
by grundick

Code: Select all


################
# You Must Die #
#   The Myst   #
#  themyst.ru  #
## Mining 1.0 ##
################
# Находим сами горы на экране,из которых копаем руду.
# Как тока нашли-идём к ним,и копаем пока всё не выкопаем.
# Ходилка Savage. SuperWalk() -иметь в том же файле что и скрипт на мининг.
#

sub The_Myst_Mining()

  DIM color[6]
  
  color[0]='0x0B09' # Iron жила
  color[1]='0x0B08' # Cooper жила
  color[2]='0x0792' # Silver жила
  color[3]='0x0A9C' # Gold жила
  color[4]='0x0B10' # Amberit жила
  color[5]='0x07AE' # Verite жила
  
var mountain='0x1772' # Тип жил из которых копаем
var pickaxe='0x0E85' # Тип кирки
var i , k
var ryda
uo.Set('finddistance','10')
uo.DeleteJournal()
uo.IgnoreReset()
    while not uo.Dead()
        while uo.Weight < 500
            mine:
            for i = 0 to 5
            uo.FindType(mountain,color[i],'ground')
            if uo.FindCount() then
                ryda = uo.GetSerial('finditem')
                uo.Click(ryda)
                wait(100)
                goto dig
            else
                goto mine
            end if
            next
            dig:
            SuperWalk(0,0,'finditem')
            uo.DeleteJournal()
            while not uo.InJournal('Here no more')
                uo.DeleteJournal()
                uo.WaitTargetObject(ryda)
                uo.UseType(pickaxe)
                if uo.InJournal("You can't see") then
                  goto mine    
                end if
                wait(100)
                k = 0
                repeat
                    wait(100)
                    k = k + 1
                    if uo.InJournal("You can't see") then
                        goto mine    
                    end if
                until uo.InJournal('You put') or uo.InJournal('Here no more') or ( k > 100 )
                wait(100)
            wend
            next
        wend
    wend
end sub



sub main()

  DIM tree[38]
  
  tree[0]='0x0c95' # тип дерева
  tree[1]='0x0c96' # тип дерева
  tree[2]='0x0cca' # тип дерева
  tree[3]='0x0ccb' # тип дерева
  tree[4]='0x0ccc' # тип дерева
  tree[5]='0x0ccd' # тип дерева
  tree[6]='0x0cd0' # тип дерева
  tree[7]='0x0cd3' # тип дерева
  tree[8]='0x0cd6' # тип дерева
  tree[9]='0x0cd8' # тип дерева
  tree[10]='0x0cd9' # тип дерева
  tree[11]='0x0cda' # тип дерева
  tree[12]='0x0cdb' # тип дерева
  tree[13]='0x0cdc' # тип дерева
  tree[14]='0x0cdd' # тип дерева
  tree[15]='0x0cde' # тип дерева
  tree[16]='0x0cdf' # тип дерева
  tree[17]='0x0ce0' # тип дерева
  tree[18]='0x0ce3' # тип дерева
  tree[19]='0x0ce6' # тип дерева
  tree[20]='0x0cf8' # тип дерева
  tree[21]='0x0cfb' # тип дерева
  tree[22]='0x0cfe' # тип дерева
  tree[23]='0x0d01' # тип дерева
  tree[24]='0x0d41' # тип дерева
  tree[25]='0x0d42' # тип дерева
  tree[26]='0x0d43' # тип дерева
  tree[27]='0x0d44' # тип дерева
  tree[28]='0x0d5a' # тип дерева
  tree[29]='0x0d5b' # тип дерева
  tree[30]='0x0d6e' # тип дерева
  tree[31]='0x0d6f' # тип дерева
  tree[32]='0x0d70' # тип дерева
  tree[33]='0x0d71' # тип дерева
  tree[34]='0x0d72' # тип дерева
  tree[35]='0x0d84' # тип дерева
  tree[36]='0x0d85' # тип дерева
  tree[37]='0x0d86' # тип дерева

var axe='0x0F43' # Oei oiii?a
var a , b
var trees
uo.Set('finddistance','17')
uo.DeleteJournal()
uo.IgnoreReset()
    while not uo.Dead()
        while uo.Weight < 500
            hack:
            for a = 0 to 37
            uo.FindType(tree[a],'-1','ground')
            if uo.FindCount() then
                trees = uo.GetSerial('finditem')
                uo.Click(trees)
                wait(100)
            end if
            SuperWalk(0,0,'finditem')
            uo.DeleteJournal()
            while not uo.InJournal('Here no more')
                uo.DeleteJournal()
                uo.WaitTargetObject(trees)
                uo.UseType(axe)
                if uo.InJournal("You can't see") then
                  goto hack    
                end if      ###<--------------------------------LINE 140!!!
                wait(100)
                b = 0
                repeat
                    wait(100)
                    b = b + 1
                    if uo.InJournal("You can't see") then
                        goto mine    
                    end if
                until uo.InJournal('You put') or uo.InJournal('You fail to find') or ( b > 100 )
                wait(100)
            wend
            next
        wend
    wend
end sub

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)<2 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 
      	checkstam()
      UO.Press(key) 
      wait(walkwait) 
      If UO.GetDir()<>dir Then 
         CheckLag() 
      Endif 
   Endif 
      	checkstam()
   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 
   	checkstam()
      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 
   	checkstam()
      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 checkstam()
var refresh = '0x0F0B'
if uo.stamina < 10 then
	uo.findtype(refresh,-1,'backpack')
	if uo.findcount() then
		uo.usetype(refresh)
		wait(1000)
	else
		uo.print("Nety Refreshey! Stoim...")
	repeat
		wait(500)
	until uo.stamina >= 10
	endif
else
endif
endsub
Делает два шага вверх и вылетает Run TimeError Line 140.

Posted: 2007-03-24 20:58:43
by grundick

Code: Select all

sub main() 

  DIM tree[38] 
  
  tree[0]='0x0c95' # тип дерева 
  tree[1]='0x0c96' # тип дерева 
  tree[2]='0x0cca' # тип дерева 
  tree[3]='0x0ccb' # тип дерева 
  tree[4]='0x0ccc' # тип дерева 
  tree[5]='0x0ccd' # тип дерева 
  tree[6]='0x0cd0' # тип дерева 
  tree[7]='0x0cd3' # тип дерева 
  tree[8]='0x0cd6' # тип дерева 
  tree[9]='0x0cd8' # тип дерева 
  tree[10]='0x0cd9' # тип дерева 
  tree[11]='0x0cda' # тип дерева 
  tree[12]='0x0cdb' # тип дерева 
  tree[13]='0x0cdc' # тип дерева 
  tree[14]='0x0cdd' # тип дерева 
  tree[15]='0x0cde' # тип дерева 
  tree[16]='0x0cdf' # тип дерева 
  tree[17]='0x0ce0' # тип дерева 
  tree[18]='0x0ce3' # тип дерева 
  tree[19]='0x0ce6' # тип дерева 
  tree[20]='0x0cf8' # тип дерева 
  tree[21]='0x0cfb' # тип дерева 
  tree[22]='0x0cfe' # тип дерева 
  tree[23]='0x0d01' # тип дерева 
  tree[24]='0x0d41' # тип дерева 
  tree[25]='0x0d42' # тип дерева 
  tree[26]='0x0d43' # тип дерева 
  tree[27]='0x0d44' # тип дерева 
  tree[28]='0x0d5a' # тип дерева 
  tree[29]='0x0d5b' # тип дерева 
  tree[30]='0x0d6e' # тип дерева 
  tree[31]='0x0d6f' # тип дерева 
  tree[32]='0x0d70' # тип дерева 
  tree[33]='0x0d71' # тип дерева 
  tree[34]='0x0d72' # тип дерева 
  tree[35]='0x0d84' # тип дерева 
  tree[36]='0x0d85' # тип дерева 
  tree[37]='0x0d86' # тип дерева 

var axe='0x0F43' # Oei oiii?a 
var a , b 
var trees 
uo.Set('finddistance','17') 
uo.DeleteJournal() 
uo.IgnoreReset() 
    while not uo.Dead() 
        while uo.Weight < 500 
            hack: 
            for a = 0 to 37 
            uo.FindType(tree[a],'-1','ground') 
            if uo.FindCount() then 
                trees = uo.GetSerial('finditem') 
                uo.Click(trees) 
                wait(100) 
            end if 
            SuperWalk(0,0,'finditem') 
            uo.DeleteJournal() 
            while not uo.InJournal('Here no more') 
                uo.DeleteJournal() 
                uo.WaitTargetObject(trees)     <-------------------Error HERE!!!!
                uo.UseType(axe) 
                if uo.InJournal("You can't see") then 
                  goto hack    
                end if      
                wait(100) 
                b = 0 
                repeat 
                    wait(100) 
                    b = b + 1 
                    if uo.InJournal("You can't see") then 
                        goto mine    
                    end if 
                until uo.InJournal('You put') or uo.InJournal('You fail to find') or ( b > 100 ) 
                wait(100) 
            wend 
            next 
        wend 
    wend 
end sub
Ошибку выдает когда вызываеться функция uo.WaitTargetObject(trees).Я так понимаю либо массив деревьев не правильно забил, либо еще чего? Люди знающие, подскажите пожалуйста.Буду очень благодарен.С уважением,Константин Александрович.

Posted: 2007-03-27 20:12:15
by grundick
Ыы.Никаких соображений?:Р