Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Подскажите пожалуйста как получить ID животного через стелс?

тут можно задать вопрос по скриптингу
Post Reply
un.k
Neophyte
Neophyte
Posts: 11
Joined: 28.10.2010 14:34

Подскажите пожалуйста как получить ID животного через стелс?

Post by un.k »

Какую нужно использовать команду, если известен тип животного, а нужно получить ID животного.

Хочу сделать скрипт на таминг - животное появляется, чар его тамит, потом убивает и ждет пока животное реснится.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

findtype
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
un.k
Neophyte
Neophyte
Posts: 11
Joined: 28.10.2010 14:34

Post by un.k »

Code: Select all

rogram taming; 

var 
animal : cardinal; 
ctime : TDateTime; 

{$Include 'all.inc'} 

Const
animalType = $0027; 

Begin 
   While not Dead do 
	begin 
FindDistance := 2;
	if (findtype(animalType, Ground) = 0) then animal := finditem;
	if (inJournalBetweenTimes('You see: a mongbat', ctime, Now)<>-1) then
		begin
		SetWarMode(false);
		if TargetPresent then CancelTarget; 
		CheckTargetError(5,2);
	        CheckSave; 
		UseSkill('Animal Taming'); 
		WaitTargetGround(animalType);
		wait(5000);
		if (inJournalBetweenTimes('успешно', ctime, Now)<>-1) then 
		begin
		SetWarMode(true);
		attack(animal);
		end;
		end;
	end;
end.
вот скрипт, пишет
19:04:39 []: Attack error: Object not finded.
Savage
Neophyte
Neophyte
Posts: 18
Joined: 27.09.2010 5:57
Contact:

Post by Savage »

un.k wrote:

Code: Select all

	if (findtype(animalType, Ground) = 0) then animal := finditem;
вот скрипт, пишет
19:04:39 []: Attack error: Object not finded.
Если ничего не нашёл то анималу присвоить неизвестно что?

Code: Select all

      WaitTargetGround(animalType); 
а тут наверное должен быть анимал. Или зачем ты его вообще ищешь?
Last edited by Savage on 28.10.2010 15:27, edited 1 time in total.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

1) if (findtype(animalType, Ground) = 0) then animal := finditem;
если ничего не нашли - то пусть animal как раз и будет это самое ничего.
надо ставить одну большую проверку на всё -
if findtype(animalType, Ground) > 0 then
if (inJournalBetweenTimes('You see: a mongbat', ctime, Now)<>-1) then
begin
....

потому что если животное не найдено, то и таймить нечего.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
un.k
Neophyte
Neophyte
Posts: 11
Joined: 28.10.2010 14:34

Post by un.k »

спасибо!!! )
un.k
Neophyte
Neophyte
Posts: 11
Joined: 28.10.2010 14:34

Post by un.k »

теперь другая проблема, недождавжись пока затамит, начинает атачить.
Т.е. 1 раз пробует тамить, потом атачит, потом опять пробует тамить.
Что я сделал неправильно?

Code: Select all

program taming; 

var 
animal : cardinal; 
ctime : TDateTime; 

{$Include 'all.inc'} 

Const
animalType = $0027; 


Begin 
if (findtype(animalType, Ground) > 0 ) then animal := finditem;
if (inJournalBetweenTimes('You see: a mongbat', ctime, Now)<>-1) then 

   While not Dead do 


	begin


FindDistance := 2;
	begin
		
		SetWarMode(false);
		if TargetPresent then CancelTarget; 
		CheckTargetError(5,2);
	        CheckSave; 
	        repeat
		UseSkill('Animal Taming'); 
		WaitTargetGround(animalType);
		wait(10000);
		until (inJournalBetweenTimes('Âû óñïåøíî ïðèðó÷èëè mongbat', ctime, Now)<>-1)
	
		if (inJournalBetweenTimes('pretty', ctime, Now)<>-1) then 
		
		attack(animal);
		wait(10000);
	        
		end;
	end;
end.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

until (inJournalBetweenTimes('Âû óñïåøíî ïðèðó÷èëè mongbat', ctime, Now)<>-1)
это отлично, ты проверяешь на наличие строки с момента ctime до настоящего момента.
но...где же установка ctime?
а должна
ctime := Now;
стоять прямо перед строкой
UseSkill('Animal Taming');

и ненадо ловить полную строку. 1-2 уникальных для данной фразы слов будет вполне достаточно.


это то, что в глаза бросилось.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
un.k
Neophyte
Neophyte
Posts: 11
Joined: 28.10.2010 14:34

Post by un.k »

спасибо. ушел тестить
Post Reply