Yoko

All sides of Injection
It is currently 2026-02-04 23:42:01

All times are UTC+02:00




Post new topic  Reply to topic  [ 8 posts ] 
Author Message
PostPosted: 2008-09-23 20:59:23 
Offline

Joined: 2008-09-22 12:59:11
Posts: 5
Работает минут 5 и выдает ошибку ! помогите отредактировать плиз! для шарда ДРВ!

Code:
sub LegsBS() 
VAR Sunduk1=0x40188EAF ;Мешки инги (пустые)
VAR Sunduk2=0x40339B63 ;Складываем мешки с ногами
VAR IngCount=100 ;Остатток ингов в сундуке
VAR MaxItem=75 ; Колво ног в мешке
VAR Item,Exit=0,Meshok,IngName,i,Color
DIM Ing[17]

Ing[0]="Rusty"
Ing[1]="copper"
Ing[2]="Dull Copper"
Ing[3]="Old Copper"
Ing[4]="Bronze"
Ing[5]="Silver"
Ing[6]="Gold"
Ing[7]="Shadow"
Ing[8]="Rose"
Ing[9]="Agapite"
Ing[10]="Blood Rock"
Ing[11]="Verite"
Ing[12]="Valorite"
Ing[13]="Mytheril"
Ing[14]="Black Rock"
Ing[15]="Obsidian"
Ing[16]="Plutonium"

   UO.Print("Âûáåðè èíãè")
   UO.AddType('FullarmING')
   While UO.Targeting()
      wait(500)
   wend
   UO.DeleteJournal()
   Color=UO.GetColor('lasttarget')
   UO.Click('lasttarget')
   while NOT UO.InJournal("ngot") AND NOT UO.InJournal("Shadow")
      wait(500)
   wend

   for i=0 to 16
      If UO.InJournal(Ing[i]) then
         IngName=Ing[i]
         If IngName=="Shadow" then
            IngName="Shadow"
        endif
      endif
   next
   If IngName=="Bronze" then
      MessageBox("Èç ýòîé ðóäû êîâàòü íåëüçÿ")
      UO.Exec('terminate all')       
   endif

   while Exit<>1
      Item=0
      UO.UnsetCatchBag()
      repeat
         UO.FindType('0x0E76',-1,Sunduk1)
         If UO.GetQuantity('finditem')<1 then
            Exit=1
            goto End
         Else
            UO.Moveitem('finditem',1,Sunduk2)
            UO.DeleteJournal()
            UO.Click('finditem')
            wait(3000)
            while NOT UO.InJournal("items")
               wait(500)
            wend
         Endif
      until UO.InJournal("(0 items)")
        Meshok=UO.GetSerial('finditem')
      wait(1500)
      UO.SetCatchBag(Meshok)
      repeat
         If UO.Count('FullarmING',Color)<30 then
            UO.UnsetCatchBag()
            UO.FindType('FullarmING',Color,Sunduk1)
            If UO.GetQuantity('finditem')<IngCount then
               Exit=1
               goto End
            else
               UO.Grab('500','finditem')
               wait(1500)
               UO.SetCatchBag(Meshok)
            Endif
         Endif
         CheckLag()   
         UO.CancelMenu()
         UO.AutoMenu(IngName+' Plate','Platemail Legs')
         UO.AutoMenu(IngName+' Armor','Plate')
         UO.AutoMenu('Colored','Armor')
         UO.AutoMenu('Blacksmithing','Colored')
         UO.DeleteJournal()
         UO.UseType('FullarmING',Color)
         while NOT UO.InJournal("You put") AND NOT UO.InJournal("You have failed")
           
         wend
         If UO.InJournal("You put") then
          wait(800)
            Item=Item+1
            UO.Print("Çàïîíåíèå ìåøêà: "+STR(Item)+" èç "+STR(MaxItem))
         Endif
      until Item==MaxItem
   End:
   wend
end sub


Top
   
 Post subject:
PostPosted: 2008-09-27 18:35:53 
Offline
User avatar

Joined: 2008-09-12 05:07:34
Posts: 247
Чего он ваще делать должен обьясни?


Top
   
 Post subject:
PostPosted: 2008-09-30 16:11:20 
Offline

Joined: 2008-09-22 12:59:11
Posts: 5
Кгда запускаем скрипт, он просит указать руду из которой куем!
потом он берет из одного мешка , где лежат инги и мешочки для готового продукта, 1 мешочек кидает его в другой сундук затем берет 500 ингов, и кует туловище....как только в мешочке стало айтемов больше 75 он берет другой пустой мешок и так далее......

Но поработав 5-10 минут вышибает его клиент виснет! в чем проблема не догоню никак!


Top
   
 Post subject:
PostPosted: 2008-09-30 17:45:02 
Offline
User avatar

Joined: 2008-09-12 05:07:34
Posts: 247
А что там за хитрые манипуляции с шедовом, и почему на бронзе он должен остановиться, и даж не просто остановиться, а все скрипты нах... отрубить? И куёт он не туловища, а плейтмейл ноги...


Top
   
 Post subject:
PostPosted: 2008-10-01 05:09:30 
Offline

Joined: 2008-09-22 12:59:11
Posts: 5
В мешке с ингами лежат разные инги и если он наткнется на бронзу то поидее вырубает....ну значит шадоу закончилось! Да в эом ноги кует...я переделал под туловища свой...сори !


Top
   
 Post subject:
PostPosted: 2008-10-01 05:59:11 
Offline
User avatar

Joined: 2008-09-12 05:07:34
Posts: 247
У тебя он так сделан, что если ты в любую другую руду, кроме шедова ткнёшь, скрипт повиснет на цикле ожидания
Code:
   while NOT UO.InJournal("ngot") AND NOT UO.InJournal("Shadow") 
      wait(500)
   wend
. Вот это ваще зачем, непонятно
Code:
         If IngName=="Shadow" then 
            IngName="Shadow"
        endif
типа если переменная IngName имеет значение Shadow, то опять присвоить ей значение Shadow, вдруг она сомневается :D . Вместо UO.Exec('terminate all') лучше использовать Return. На ДРВ после команды UO.Moveitem надо втыкать паузу, я ставлю 1000 мс, потому что сервак проверяет, за какое время была перемещена вещь, и может выдать сообщение Can't pick up this и вещь не переместится.
Code:
       UO.UseType('FullarmING',Color) 
         while NOT UO.InJournal("You put") AND NOT UO.InJournal("You have failed")
           
         wend
Тут пустой цикл, воткни wait(500), вообще, помоему лучше использовать
Code:
repeat 
wait(500)
until uo.injournal('You put|You have failed')
Проглюки бывают разные, так хоть одна пауза будет полюбому. Теперь, когда ты устанавливаешь приёмный контейнер командой UO.SetCatchBag(Meshok) и куёшь, предмет падает сначала в пак, потом инжа пытается его перекинуть в мешок, обычно сервак ругается, что ты слишком быстро двигаешь предметы и оставляет предмет в паке, так что тож надо или паузу втыкать или ваще отказаться от UO.SetCatchBag, а использовать UO.Moveitem .


Top
   
 Post subject:
PostPosted: 2008-10-01 16:04:48 
Offline

Joined: 2008-09-22 12:59:11
Posts: 5
Такс щас проверим =)! спасибо за советы! *beer*


Top
   
 Post subject:
PostPosted: 2008-10-02 16:27:35 
Offline
User avatar

Joined: 2008-09-12 05:07:34
Posts: 247
В своих предидущих глубокомысленнейших умозаключениях :lol: допустил грубейшую ошибку :oops:
Code:
   while NOT UO.InJournal("ngot") AND NOT UO.InJournal("Shadow") 
      wait(500)
   wend
Если разобрать на пальцах, как работает эта конструкция, то бишь цикл ожидания. Цикл крутится, пока в журнале инжи не появится строка, содержащая ngot или Shadow. Пока этих строк нету, выражения UO.InJournal("ngot") и UO.InJournal("Shadow") равны 'false', т.е. ноль, соответственно их инверсии, т.е. NOT UO.InJournal("ngot") и NOT UO.InJournal("Shadow") равны единицам, между собой они сравниваются булевским И (and), и в результате получаем 1 and 1 (1&1) =1 - цикл крутится и ждёт...у моря погоды. Как только в журнале появляется та или другая искомые строки, или даже обе вместе, выражение принимает вид 1 & 0 = 0, 0 & 1 = 0 или же 0 & 0 = всё равно ноль! Цикл завершается и скрипт катится дальше. В твоём случае, значит, если в журнале появится ngot или Shadow или даже обе эти надписи вместе, скрипт срывается с цикла и шпарит дальше вполный рост. Отсюда напрашивается вопрос, нафига там ваще нужна проверка на шедов, ткни в любую другую руду и ожидание закончилось. Вот, собсно, и всё, пошёл дальше пиво пить...


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 8 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited