Изготовление хвороста (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