Lumber by Must Die+Savage walker

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
grundick
Posts: 258
Joined: 2006-11-25 17:44:44

Lumber by Must Die+Savage walker

Post 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.
grundick
Posts: 258
Joined: 2006-11-25 17:44:44

Post 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).Я так понимаю либо массив деревьев не правильно забил, либо еще чего? Люди знающие, подскажите пожалуйста.Буду очень благодарен.С уважением,Константин Александрович.
grundick
Posts: 258
Joined: 2006-11-25 17:44:44

Post by grundick »

Ыы.Никаких соображений?:Р
Post Reply