проблема с wait

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Argus
Posts: 3
Joined: 2006-02-03 14:17:24

проблема с wait

Post by Argus »

суть траблы в том, что есть скрипт.... я в него добавляю строчку wait(820000), чтобы скрипт работал с задержкой примерно 15 минут.. но 1 раз эта задержка срабатывает, а последующие разы чар просто стоит и даже если время истекает, то ничего не делает... кто знает в чем может быть дело?
заранее спасибо.
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Re: проблема с wait

Post by Kynep »

Argus wrote:суть траблы в том, что есть скрипт.... я в него добавляю строчку wait(820000), чтобы скрипт работал с задержкой примерно 15 минут.. но 1 раз эта задержка срабатывает, а последующие разы чар просто стоит и даже если время истекает, то ничего не делает... кто знает в чем может быть дело?
заранее спасибо.


Телепаты в отпуске :D
Скрипт скинь
Argus
Posts: 3
Joined: 2006-02-03 14:17:24

Post by Argus »

а при чем тут скрипт...я думал это не важно :) ну раз надо так вот..
скрипт на скупку.. взято с этого сайта

Code: Select all

var book1='0x40318452' # ID рунбук 1-ая 
var book2='0x40318452' # ...2-ая
var book3='0x40127980' # ...3-яя
var type1='0x175D'# соответствует типу покупаемого товара
var type2='0x1F03'# ...
var type3='0x175D'# ...
var type4='0x175D'# ...
var recall='0x1F4C' # тип рекола
var unloadseif='0x4044211D' # ID сэйфа у дома
var tEat='0x097B' # тип еды(фиш стэйки)
var skokonada=0 # 0 -летаем по двум рунбукам; 1 -только по первой
##ВВедите ид вендоров ниже###
sub POGNALI()
var k,j,b
 DIM ven[9]
 DIM vem[9]
#####################
 ven[0]='0x00286C87' #И для 1-ой руны первой рунбуки
 ven[1]='0x00289D44' #Д для 2-ой руны первой рунбуки
 ven[2]='0x00164D2E' #
 ven[3]='0x0030D2DB' # для 1-ой рунбуки
 ven[4]='0x0041A5F3' #В
 ven[5]='0x00286C87' #Е
 ven[6]='0x00286C87' #Н
 ven[7]='0x00286C87' #Д
 ven[8]='0x00286C87' #О для 9-ой руны 1 рунбуки
 ##################
 vem[0]='0x00286C87' #Р для 1-ой руны 2 рунбуки
 vem[1]='0x00289D44' #О
 vem[2]='0x00164D2E' #В
 vem[3]='0x0030D2DB' #
 vem[4]='0x0041A5F3' # для 2-ой рунбуки
 vem[5]='0x00286C87' #
 vem[6]='0x00286C87' #
 vem[7]='0x00286C87' #
 vem[8]='0x00286C87' # для 9-ой руны 2 рунбуки
#####################
 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
     UO.FindType(type3, '-1', 'backpack')
    while UO.GetQuantity('finditem') > 0
     UO.MoveItem('finditem','-1',unloadseif)
     CheckLag()
     Wait(700)           
     UO.FindType(type3,'-1','backpack')
    wend
     UO.FindType(type4, '-1', 'backpack')
    while UO.GetQuantity('finditem') > 0
     UO.MoveItem('finditem','-1',unloadseif)
     CheckLag()
     Wait(700)           
     UO.FindType(type4,'-1','backpack')
    wend
     UO.FindType(recall, '-1', 'backpack')
    while UO.GetQuantity('finditem') > 0
     UO.MoveItem('finditem','-1',unloadseif)
     CheckLag()
     Wait(700)           
     UO.FindType(recall,'-1','backpack')
    wend
endsub

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

sub ToEat()
  UO.UseObject(unloadseif)
  CheckLag()
  wait(500)
  UO.FindType(tEat,'0x0000',unloadseif)
  CheckLag()
  wait(500)
  if UO.FindCount() > 0 then
   UO.MoveItem('finditem','20','backpack')
  end if
  repeat   
   CheckLag()
   uo.UseType(tEat)
   while not uo.InJournal("can't") and not uo.InJournal('full') and not uo.InJournal('stuffed') and not uo.InJournal('hungry') and not uo.InJournal('satiated') and not UO.Dead()
     wait(100)
   wend
  until uo.InJournal('too full') or UO.Dead()
  UO.FindType(tEat, '0x0000','backpack')
  if UO.FindCount() > 0 then
   UO.MoveItem('finditem','20',unloadseif)   
  end if
wait(800000)
end sub



я так понимаю в этом случае без разницы почти где wait ставить.. я поставил чтобы после жрачки тупо стоял мин 20... но он стоит все время :)
когда у телепатов отпуск заканчивается? :)
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

Argus wrote:а при чем тут скрипт...я думал это не важно :) ну раз надо так вот..
скрипт на скупку.. взято с этого сайта
....
я так понимаю в этом случае без разницы почти где wait ставить.. я поставил чтобы после жрачки тупо стоял мин 20... но он стоит все время :)
когда у телепатов отпуск заканчивается? :)


Вот попробуй тут поменять, а в функции To Eat() удали wait:

Code: Select all

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


после функции To Eat() поменяй на то скок тебе надо, а лучше после unload добавь свой wait
Argus
Posts: 3
Joined: 2006-02-03 14:17:24

Post by Argus »

блин.. все равно не пашет... причем когда wait(3000) все нормально, как ставиш вайт 500000.. и тд. то он тупит и ничего неделает даже когда время истекает. Может wait очень большой? и можно его чем нить заменитЬ?
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Argus wrote:блин.. все равно не пашет... причем когда wait(3000) все нормально, как ставиш вайт 500000.. и тд. то он тупит и ничего неделает даже когда время истекает. Может wait очень большой? и можно его чем нить заменитЬ?

Можно.

Code: Select all

var sec = 820
var cur = 0
while cur < sec
cur = cur + 1
uo.print("Уже жду "+str(cur)+" сек.")
wait(1000)
wend
Post Reply