Page 1 of 1

nesmog izpravit' skript.

Posted: 2006-10-11 23:39:57
by Bangbuss
U menaj vot takoj skript, ja ego sdelal pod svoj shard, no skript vidajot oshibku Unhandled exceptions in parser. V etom zhe forume mne ukazali na oshibku, eto tipa v skripte 4 raza povtoraetsa repeat, a untill toka 2 raza. Nu vot vzalsa ja za dela, vsaka mu4il etot skript, no delaj kak xosh vidajot oshibku. Eto naverno potomushto ja neumeju xorosho skriptit'. Izvinite za latinicu, ja ne ruskij.

Code: Select all

var book1='0x4005A6CE' # ID рунбук 1-ая
var book2='0x40318452' # ...2-ая
var book3='0x400D4CFE' # ...3-яя
var type1='0x0F86'# соответствует типу покупаемого товара
var type2='0x0F85'# ...
var recall='0x1F4C' # тип рекола
var unloadseif='0x40084350' # ID сэйфа у дома
var tEat='0x097B' # тип еды(фиш стэйки)
var skokonada=0 # 0 -летаем по двум рунбукам; 1 -только по первой
##ВВедите ид вендоров ниже###
sub POGNALI()
var k,j,b
 DIM ven[9]
 DIM vem[9]
#####################
 ven[0]='0x000E3DA4' #И  для 1-ой руны первой рунбуки
 ven[1]='0x000D82D1' #Д  для 2-ой руны первой рунбуки
 ven[2]='0x000E51E2' #
 ven[3]='0x000DF17C' # для 1-ой рунбуки
 ven[4]='0x0005B571' #В
 ven[5]='0x0003026B' #Е
 ven[6]='0x0012B6AB' #Н
 ven[7]='0x0012C238' #Д
 ven[8]='0x00104032' #О для 9-ой руны 1 рунбуки
 vem[9]='0x0011460D' #Р для 1-ой руны 2 рунбуки
 vem[10]='0x00054FCD' #О
 vem[11]='0x000CAA6A' #В
 vem[12]='0x0011A81A' #
 vem[13]='0x000D8CE8' #  для 2-ой рунбуки
 vem[14]='0x000BDF1D' #
 vem[15]='0x000E2161' #
#####################
  while not uo.dead()
   for k=1 to 9
    repeat
     port(k,book1)
     uo.resend()
     b=UO.GetDistance(ven[k-1])
     while b>1
      SuperWalk(0,0,ven[k-1])
      b=UO.GetDistance(ven[k-1])
     wend
     bustreevseh1(ven[k-1])
     UO.Say("bye")
    next
   if skokonada==0 then
   for j=1 to 9
    repeat
     port(j,book2)
     uo.resend()
     b=UO.GetDistance(vem[j-1])
     while b>1
      SuperWalk(0,0,vem[j-1])
      b=UO.GetDistance(vem[j-1])
     wend
     bustreevseh1(vem[j-1])
     UO.Say("bye")   
    next
    endif
    port(1,book3)
    wait(2000)
    unload()
    wait(2000)
    recharg(book1)
    wait(2000)
    recharg(book2)
    wait(2000)
    recharg(book3)
    wait(2000)
    ToEat()
    wait(2000)
    unload()
  wend
endsub

sub port(n,book)
var oldX=UO.GetX()
var oldY=UO.GetY()
var time
   NoTarget()
   UO.UseObject(book)
   FastLootCheck()
   CheckLag()
   UO.LClick(135, n*15+55)
   time=UO.Timer()
   Repeat
     wait(500)
   Until oldX<>UO.GetX() OR oldY<>UO.GetY() OR time+200<UO.Timer()
end sub

sub FastLootCheck()
   UO.DeleteJournal()
   wait(600)
   if UO.InJournal("FastLoot") OR UO.InJournal("World save") then
      CheckLag()
   endif
end sub

sub NoTarget()
   if UO.Waiting() then
      UO.CancelTarget()
   endif
end sub

sub bustreevseh1(imya)
var vend, ven='vendor'
   ven=UO.GetName(imya)
   uo.buy('list1',ven)
endsub

#==============================================================
#  SuperWalk(X,Y,Serial) - char is walking by dX and dY step
#                sub using Home, End, PgUp, PgDown keys
#                d'not rebind this key from default action!
#     walkwait - delay after keypress
#--------------------------------------------------------------
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)<3 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
      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 recharg(kniga)
 CheckLag()
 wait(1000)
 uo.useobject(unloadseif)
 CheckLag()
 wait(1000)
 uo.findtype(recall,'-1',unloadseif)
 CheckLag()
 wait(1000)
 uo.moveitem('finditem','9','backpack')
 CheckLag()
 wait(1000)
 uo.UseObject(kniga)
 CheckLag()
 wait(1000)
 uo.Lclick(296,91)
 CheckLag()
 wait(1000)
endsub

sub unload()
         UO.FindType(type1, '-1', 'backpack')
       while UO.GetQuantity('finditem') > 0
         UO.MoveItem('finditem','-1',unloadseif)
         CheckLag()
         Wait(700)                     
         UO.FindType(type1,'-1','backpack')
       wend
         UO.FindType(type2, '-1', 'backpack')
       while UO.GetQuantity('finditem') > 0
         UO.MoveItem('finditem','-1',unloadseif)
         CheckLag()
         Wait(700)                     
         UO.FindType(type2,'-1','backpack')
       wend
endsub

sub CheckLag()
uo.DeleteJournal()
uo.Click('backpack')
repeat
wait(50)
until UO.InJournal('backpack')
endsub

Posted: 2006-10-11 23:42:14
by comatoza
проверь кроме унтил/репит
также кол-во скобок чтоб все открытые были закрыты, так же апострафы
иф\тхен\ендиф и т.п.
не думаю что кому-то будет не лень ковырять скрипт...

Posted: 2006-10-12 01:04:42
by Nmy

Code: Select all

 DIM ven[9]
 DIM vem[9]
#####################
 ven[0]='0x000E3DA4' #И  для 1-ой руны первой рунбуки
 ven[1]='0x000D82D1' #Д  для 2-ой руны первой рунбуки
 ven[2]='0x000E51E2' #
 ven[3]='0x000DF17C' # для 1-ой рунбуки
 ven[4]='0x0005B571' #В
 ven[5]='0x0003026B' #Е
 ven[6]='0x0012B6AB' #Н
 ven[7]='0x0012C238' #Д
 ven[8]='0x00104032' #О для 9-ой руны 1 рунбуки
 vem[9]='0x0011460D' #Р для 1-ой руны 2 рунбуки
 vem[10]='0x00054FCD' #О
 vem[11]='0x000CAA6A' #В
 vem[12]='0x0011A81A' #
 vem[13]='0x000D8CE8' #  для 2-ой рунбуки
 vem[14]='0x000BDF1D' #
 vem[15]='0x000E2161' #


хотя я только что из клуба но думаю что ошыбка там...

Posted: 2006-10-12 02:31:02
by Bangbuss
gde tam?

Posted: 2006-10-12 04:15:51
by comatoza
Bangbuss wrote:gde tam?

в размерности массива :)

Posted: 2006-10-12 17:39:23
by Nmy

Code: Select all

 DIM ven[9]
 DIM vem[6]
#####################
 ven[0]='0x000E3DA4' #Č  äė˙ 1-īé šóķū ļåšāīé šóķįóźč
 ven[1]='0x000D82D1' #Ä  äė˙ 2-īé šóķū ļåšāīé šóķįóźč
 ven[2]='0x000E51E2' #
 ven[3]='0x000DF17C' # äė˙ 1-īé šóķįóźč
 ven[4]='0x0005B571' #Ā
 ven[5]='0x0003026B' #Å
 ven[6]='0x0012B6AB' #Ķ
 ven[7]='0x0012C238' #Ä
 ven[8]='0x00104032' #Ī äė˙ 9-īé šóķū 1 šóķįóźč
 vem[0]='0x0011460D' #Š äė˙ 1-īé šóķū 2 šóķįóźč
 vem[1]='0x00054FCD' #Ī
 vem[2]='0x000CAA6A' #Ā
 vem[3]='0x0011A81A' #
 vem[4]='0x000D8CE8' #  äė˙ 2-īé šóķįóźč
 vem[5]='0x000BDF1D' #
 vem[6]='0x000E2161' #
#####################


так вроде нету ошыбок в скрипте

Posted: 2006-10-12 18:14:05
by Bangbuss
NMY Kiss! 100x.