Изготовление хвороста (making kindling) help

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Grizl
Posts: 10
Joined: 2004-11-26 16:08:35
Location: Одесса
Contact:

Изготовление хвороста (making kindling) help

Post by Grizl »

Здраствуйте! Я тут не в первые,уж простите.Только недавно начал писать скрипты и почему то у меня постоянно возникают проблемы с этими самыми скриптами. Извольте мне помочь в очередной раз,прошу.

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

Code: Select all

   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.
Alucard
Posts: 22
Joined: 2004-04-06 16:42:51

Post by Alucard »

А на каком месте оно останавливается ?
Grizl
Posts: 10
Joined: 2004-11-26 16:08:35
Location: Одесса
Contact:

Post by Grizl »

Alucard wrote:А на каком месте оно останавливается ?
Я вроде написал,что скрипт отрабатывает всю процедуру - от начала и до конца.Выполняет все,но после выключается!
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

2 Grizl не нервничай ;)
1. табами отформатируй скрипт до удобоваримого вида.
2. выкладываешь скрипт - выкладывай весь, а не часть.
3. обычно между процедурами оставляют как минимум 1 строку.

ЗЫ после выполнения пуктов 1 и 3 я думаю ты сам увидишь в чём трабла.
за тебя форматрировать скрипт апссалютно не хочется.
Grizl
Posts: 10
Joined: 2004-11-26 16:08:35
Location: Одесса
Contact:

Post by Grizl »

Вы чуток не поняли мою интонацию :D .Уже все отредактировал! :roll:
Goggy
Posts: 291
Joined: 2004-11-07 01:22:35
Location: Черкассы
Contact:

Post by Goggy »

Code: Select all

wend

нехватает этого слова... где?.. присмотрись повнимательнее ;)
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

Code: Select all

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 избыточного, ни кому нах не нужного, кода
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

ЗЫ и извени если где то был излишне резок... я сдерживался, смотря на код ;)
Grizl
Posts: 10
Joined: 2004-11-26 16:08:35
Location: Одесса
Contact:

Post by Grizl »

Всем большое спасибо за предоставленную помощь.

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

Топ можно закрывать.
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

я бы рекомендовал всё таки разобраться с описанными мною проблемами в скрипте это в будущем помогло бы вам более корректно формировать код своих ф-ий.
Post Reply