проблема с 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