Какую нужно использовать команду, если известен тип животного, а нужно получить ID животного.
Хочу сделать скрипт на таминг - животное появляется, чар его тамит, потом убивает и ждет пока животное реснится.
Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Подскажите пожалуйста как получить ID животного через стелс?
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.
Если ничего не нашёл то анималу присвоить неизвестно что?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.
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
....
потому что если животное не найдено, то и таймить нечего.
если ничего не нашли - то пусть animal как раз и будет это самое ничего.
надо ставить одну большую проверку на всё -
if findtype(animalType, Ground) > 0 then
if (inJournalBetweenTimes('You see: a mongbat', ctime, Now)<>-1) then
begin
....
потому что если животное не найдено, то и таймить нечего.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
теперь другая проблема, недождавжись пока затамит, начинает атачить.
Т.е. 1 раз пробует тамить, потом атачит, потом опять пробует тамить.
Что я сделал неправильно?
Т.е. 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.
until (inJournalBetweenTimes('Âû óñïåøíî ïðèðó÷èëè mongbat', ctime, Now)<>-1)
это отлично, ты проверяешь на наличие строки с момента ctime до настоящего момента.
но...где же установка ctime?
а должна
ctime := Now;
стоять прямо перед строкой
UseSkill('Animal Taming');
и ненадо ловить полную строку. 1-2 уникальных для данной фразы слов будет вполне достаточно.
это то, что в глаза бросилось.
это отлично, ты проверяешь на наличие строки с момента ctime до настоящего момента.
но...где же установка ctime?
а должна
ctime := Now;
стоять прямо перед строкой
UseSkill('Animal Taming');
и ненадо ловить полную строку. 1-2 уникальных для данной фразы слов будет вполне достаточно.
это то, что в глаза бросилось.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".