Yoko

All sides of Injection
It is currently 2026-02-19 19:45:59

All times are UTC+02:00




Post new topic  Reply to topic  [ 10 posts ] 
Author Message
PostPosted: 2005-03-20 13:30:31 
Offline
User avatar

Joined: 2004-11-26 16:08:35
Posts: 10
Location: Одесса
Здраствуйте! Я тут не в первые,уж простите.Только недавно начал писать скрипты и почему то у меня постоянно возникают проблемы с этими самыми скриптами. Извольте мне помочь в очередной раз,прошу.

Скрипт написан для POL . Берет с пола дерево(рядо не должно быть другого дерева,иначе сбивается) ,строгает из него хворост и скидывает готовый хворост в кучку на полу.Проблема в том ,что скрипт у меня почему то получился не циклический - 1 раз отработал и выключается.Может кто поймет, в чем дело.

Code:
   var d = '0x0DE1'
   var serial=0
   var color=-1
   var container = "ground"
   VAR Instrum = '0x0F51'          ; Òèï èíñòðóìåíòà (carpentry tools type)
   VAR Kolvo = 100          ; Áðàòü ëîãîâ (Count of logs for a one grab)
   VAR Material = '0x1BDD'          ; Òèï ëîãîâ (logs type)
   VAR j, k
sub carpentry()
   While TRUE
      UO.FindType( Material, -1, 1 )       ; Èùåì ëîãè íà ïîëó
      UO.Grab( Str( Kolvo ), 'finditem' )    ; Êëàäåì ëîãè â ïàê
      wait( 1000 )
      If UO.FindCount() == 0 Then
         UO.Print("Material not found, script terminated")
         return
      Endif
      While UO.Count( Material ) > 0
         ; Ïîêà â ïàêå åñòü Ìàòåðèàë
         UO.Print('I have ' + Str( UO.Count( Material ) ) + ' Material' )
         UO.DeleteJournal()
         UO.waittargettype("0x1BDD")
         Wait(50)
         UO.UseType( Instrum )
         Wait(50)
         UO.AutoMenu('What do you wish to make?','Kindling')
            k = 0
         while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 )
            k = k + 1
            wait(500)
         wend
         ; Wait( 7000 )
         UO.Exec("set finddistance 1")
   var d = '0x0DE1'
drop(d)
end sub
sub drop(d)
   var serial=0
   var color=-1
   var container = "ground"
         while UO.Count(d) > 0
         UO.FindType(d,-1,"my")
           serial=UO.GetSerial("finditem")
           color=UO.GetColor(serial)
         UO.Ignore(serial)
      if container=="ground" then
         UO.FindType(d,color,"ground")
      if UO.FindCount()>0 then
         UO.MoveItem(serial,"0","finditem","0","0","0")
       else
         UO.DropHere(serial)
      endif
       else
         UO.MoveItem(serial,"0",container)
      endif
         wait(1000)
      wend


Last edited by Grizl on 2005-03-20 21:37:49, edited 1 time in total.

Top
   
 Post subject:
PostPosted: 2005-03-20 16:56:56 
Offline
User avatar

Joined: 2004-04-06 16:42:51
Posts: 22
А на каком месте оно останавливается ?


Top
   
 Post subject:
PostPosted: 2005-03-20 18:23:45 
Offline
User avatar

Joined: 2004-11-26 16:08:35
Posts: 10
Location: Одесса
Alucard wrote:
А на каком месте оно останавливается ?
Я вроде написал,что скрипт отрабатывает всю процедуру - от начала и до конца.Выполняет все,но после выключается!


Top
   
 Post subject:
PostPosted: 2005-03-20 18:43:15 
Offline
Expert!
User avatar

Joined: 2004-07-04 00:14:58
Posts: 1284
2 Grizl не нервничай ;)
1. табами отформатируй скрипт до удобоваримого вида.
2. выкладываешь скрипт - выкладывай весь, а не часть.
3. обычно между процедурами оставляют как минимум 1 строку.

ЗЫ после выполнения пуктов 1 и 3 я думаю ты сам увидишь в чём трабла.
за тебя форматрировать скрипт апссалютно не хочется.


Top
   
 Post subject:
PostPosted: 2005-03-20 19:50:21 
Offline
User avatar

Joined: 2004-11-26 16:08:35
Posts: 10
Location: Одесса
Вы чуток не поняли мою интонацию :D .Уже все отредактировал! :roll:


Top
   
 Post subject:
PostPosted: 2005-03-20 23:53:57 
Offline
User avatar

Joined: 2004-11-07 01:22:35
Posts: 291
Location: Черкассы
Code:
wend

нехватает этого слова... где?.. присмотрись повнимательнее ;)


Top
   
 Post subject:
PostPosted: 2005-03-21 00:51:23 
Offline
Expert!
User avatar

Joined: 2004-07-04 00:14:58
Posts: 1284
Code:
var d = '0x0DE1'
var serial=0
var color=-1
var container = "ground"
VAR Instrum = '0x0F51'
VAR Kolvo = 100
VAR Material = '0x1BDD'
VAR j,k
var d = '0x0DE1' # понимаю что с объявление можно беспредельничать... но не надо доводить до абсурда
   #т.к. эта значение не переназначаешь внутри ф-ии carpentry то и нех туда пихать
sub carpentry()
   UO.CancelMenu() #
   UO.AutoMenu('What do you wish to make?','Kindling') #тут оно должно быть
   UO.Exec("set finddistance 1") #тоже вполне хватает один раз заюзать
   While TRUE ###!!!!!! не закрыт был
      UO.FindType(Material,-1,1)
      UO.Grab(Str(Kolvo),'finditem')
      wait(1000)
      If UO.FindCount() == 0 Then
         UO.Print("Material not found,script terminated")
         return
      Endif
      While UO.Count(Material) > 0 ###!!!!!! не закрыт был
         UO.Print('I have ' + Str(UO.Count(Material)) + ' Material')
         UO.DeleteJournal()
         UO.waittargettype("0x1BDD")
         Wait(50)
         UO.UseType(Instrum)
         Wait(50)
 #бред тут был
         k = 0
         while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND (k < 30)
            k = k + 1
            wait(500)
         wend
 ; Wait(7000)
         drop()
      wend ########
   wend ########
end sub


sub drop()
var serial=0
var color=-1
var container = "ground"
   while UO.Count(d) > 0
      UO.FindType(d,-1,"my")
      serial=UO.GetSerial("finditem")
      color=UO.GetColor(serial)
      UO.Ignore(serial)
      if container=="ground" then ### у тебя значение переменной container = "ground" нах сравнивать?
         UO.FindType(d,color,"ground")
         if UO.FindCount()>0 then
            UO.MoveItem(serial,"0","finditem","0","0","0")
         else
            UO.DropHere(serial)
         endif
      else
         UO.MoveItem(serial,"0",container)
      endif
      wait(1000)
   wend
end sub # не надо про него забывать!!!
вообщем... скрипт форматируется именно так...
по поводу кода... удивляюсь что работало...
ф-я drop... это вообще писец... перебирай её заново... там %50-60 избыточного, ни кому нах не нужного, кода


Top
   
 Post subject:
PostPosted: 2005-03-21 00:55:12 
Offline
Expert!
User avatar

Joined: 2004-07-04 00:14:58
Posts: 1284
ЗЫ и извени если где то был излишне резок... я сдерживался, смотря на код ;)


Top
   
 Post subject:
PostPosted: 2005-03-21 08:30:32 
Offline
User avatar

Joined: 2004-11-26 16:08:35
Posts: 10
Location: Одесса
Всем большое спасибо за предоставленную помощь.

Все работает!

Топ можно закрывать.


Top
   
 Post subject:
PostPosted: 2005-03-21 09:31:21 
Offline
Expert!
User avatar

Joined: 2004-07-04 00:14:58
Posts: 1284
я бы рекомендовал всё таки разобраться с описанными мною проблемами в скрипте это в будущем помогло бы вам более корректно формировать код своих ф-ий.


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

All times are UTC+02:00


Who is online

Users browsing this forum: Bing [Bot] and 5 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