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

Помогите со скриптом на таминг

тут можно задать вопрос по скриптингу
Post Reply
Faifer
Neophyte
Neophyte
Posts: 12
Joined: 04.05.2012 19:53

Помогите со скриптом на таминг

Post by Faifer »

На части персонажей работает нормально, на части нехочет. Для каждого персонажа либо отдельный домик, либо отдельный угол в касле обгороженый сундуками(в касле какраз работает), а в домиках нет...

Я боюсь что проблема с перебором - я его както неправильно прописал?

Code: Select all

Program Animal_Taming; //v1.3h
{$Include 'checksave.inc'}

const
animal=$0295eab1;

var
ctime : TDateTime;
animal_type : array [1..4] of Byte;
i : Integer;

BEGIN
animal_type[1] := $00CC   // коричневая лошадь
animal_type[2] := $00E2   // серая лошадь
animal_type[3] := $00C8   // обычная лошадь
animal_type[4] := $00E4   // лошадь-медведь

FindDistance := 10
FindVertical := 20
i := 1

SetARStatus(True);
SetPauseScriptOnDisconnectStatus(True);
SetWarMode(False);

while (Dead = False) do 
begin
	if (i > 0) and (i <= 4) then
	begin
	while FindTypeEX(animal_type[i], $FFFF, Ground, False) <> 0 do
		begin
		CheckSave;
		if TargetPresent then CancelTarget;
		UseSkill('Animal Taming');       
		WaitTargetObject(FindItem); 
		repeat
			wait(100);
			CheckSave;
		until (InJournalBetweenTimes('полюбило вас.|Вы не в состоянии|уже приручили.|fail to tame', ctime, Now) <> -1);
		wait(100);

		If (InJournal('полюбило вас.|Это существо уже приручили.') <> -1) then UoSay('all release');
		wait(100);
		ClearJournal;
		end;
	end;
end;
END.
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Помогите со скриптом на таминг

Post by GeeZeR »

Ну у тебя i всегда равно "1" в этом скрипте, и если рядом с персом нет лошади с типом animal_type[1] := $00CC, то while (Dead = False) просто будет крутить пустоту в вечном цикле пока перс не умрёт.

Зачем тебе странная вещь типа i := 1 и начинать заполнять массив со второго по счёту индекса (т.е. не с ноля, а с 1)?

Code: Select all

animal_type : array [1..4] of Byte
тип данных поставь Word
Faifer wrote:Я боюсь что проблема с перебором
Да, у тебя его вообще нет, вместо

Code: Select all

if (i > 0) and (i <= 4) then
напиши

Code: Select all

for i:=1 to High(animal_type) do begin
Stealth 8.10.2 | Клиент: 7.0.13.4
Faifer
Neophyte
Neophyte
Posts: 12
Joined: 04.05.2012 19:53

Re: Помогите со скриптом на таминг

Post by Faifer »

Привет) Спасибо)

Я думал оно возьмёт i=1 как старт и переберет до 4 =))
Можешь смеяться но без строчки i := 1 скрипт нехотел работать)) А слепил я его из нескольких кусков с других скриптов) когдато я лучше шарил, но сейчас заново учусь)

Вобщем благодаря твоей подсказке получилось так:

Code: Select all

Program Animal_Taming; //v1.4h
{$Include 'checksave.inc'}

const
animal=$0295eab1;

var
ctime : TDateTime;
animal_type : array [1..4] of Word;
i : Integer;

BEGIN
animal_type[1] := $00CC   // коричневая лошадь
animal_type[2] := $00E2   // серая лошадь
animal_type[3] := $00C8   // обычная лошадь
animal_type[4] := $00E4   // лошадь-медведь

SetARStatus(True);
SetPauseScriptOnDisconnectStatus(True);
SetWarMode(False);

while (Dead = False) do 
begin
	for i:=1 to High(animal_type) do begin
	while FindTypeEX(animal_type[i], $FFFF, Ground, False) <> 0 do
		begin
		CheckSave;
		if TargetPresent then CancelTarget;
		UseSkill('Animal Taming');       
		WaitTargetObject(FindItem); 
		repeat
			wait(100);
			CheckSave;
		until (InJournalBetweenTimes('полюбило вас.|Вы не в состоянии|уже приручили.|fail to tame', ctime, Now) <> -1);
		wait(100);

		If (InJournal('полюбило вас.|Это существо уже приручили.') <> -1) then UoSay('all release');
		wait(100);
		ClearJournal;
		end;
	end;
end;
END.
Так лучше или можно еще улучшить?
Я вот думаю надо еще прикрутить проверялку на уровень скила и чтобы оно выборочно определяло цель.
Например до 72.5% качать на хорсе, если уже 72.5% и нету других животных то выключать чара и макрос, а если в радиусе есть мустанг то отмечать ему приоритет начиная с 70% до 90% например, дальше зоста, а после 99% медведя - както примерно так.
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Помогите со скриптом на таминг

Post by GeeZeR »

Ты время не засёк для проверки в журнале, ctime:=Now; сделай перед UseSkill('Animal Taming');
Проверялку можно конечно сделать если ты знаешь какой тип животных на каком скиле лучше тамить сделай простую проверку: если скилл такой-то то тамить животных с таким-то типом.
Stealth 8.10.2 | Клиент: 7.0.13.4
Faifer
Neophyte
Neophyte
Posts: 12
Joined: 04.05.2012 19:53

Re: Помогите со скриптом на таминг

Post by Faifer »

У меня проблема - одновременно работает до 37 чаров, еще 8 шт стоят ничего не делают....

Поставил ctime:=Now; по твоему совету - стало еще хуже, поставил FindDistance := 3 и FindVertical := 20 чтобы искало только рядом(думал мб оно цепляется на лошадь с соседних домов) - тоже не помогает без ctime:=Now; и FindDistance := 3 хотябы 37 чаров качается...
Faifer
Neophyte
Neophyte
Posts: 12
Joined: 04.05.2012 19:53

Re: Помогите со скриптом на таминг

Post by Faifer »

Блин сейчас несклько раз перезапустил но то 10 то 15 первых работает остальные тупят...

Попробовал перезапускать последовательно скрипты - первых 36 заработало нормально, ещё 9 сколько раз не перезагружай не работает...

Оно тупо делает 2 записи
[13:20:53:601] System: Targeting cancelled.
[13:20:53:767] System: Какое животное попробуем приручить?
и всё...
Faifer
Neophyte
Neophyte
Posts: 12
Joined: 04.05.2012 19:53

Re: Помогите со скриптом на таминг

Post by Faifer »

Кстати подобная проблема была перед этим при прокачке Энимал лора - но он слишком быстро качался, я просто лишних чаров отключил с 100% скила и тогда остальные заработали тож...
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Помогите со скриптом на таминг

Post by GeeZeR »

да, можно и не засекать если ты чистишь журнал каждый раз, но лучше засекать, ты избавишься от лишнего кода на очистку, плюс у тебя останется вся инфа в журнале.
Faifer wrote:Блин сейчас несклько раз перезапустил но то 10 то 15 первых работает остальные тупят...

Попробовал перезапускать последовательно скрипты - первых 36 заработало нормально, ещё 9 сколько раз не перезагружай не работает...

Оно тупо делает 2 записи
[13:20:53:601] System: Targeting cancelled.
[13:20:53:767] System: Какое животное попробуем приручить?
и всё...
Короче, у тебя перебора никакого нет, while FindTypeEX(animal_type, $FFFF, Ground, False) <> 0 do всегда будет находить один и тот же тип i и ты его будешь постоянно тамить. Внешний цикл for i:=1 to High(animal_type) do begin не будет перебирать от 1 до 4, потому что сработает один раз, назначит переменной i значение "1" и просто будет ждать пока скрипт не выйдет из цикла while FindTypeEX(animal_type, $FFFF, Ground, False) <> 0 do, а он не выйдет потому что условий выхода нет, он всегда будет находить тип $00CC.

Эти лошади требуют разного скила? Если перс не может приручить animal_type[1] := $00CC, то блок

Code: Select all

      repeat
         wait(100);
         CheckSave;
      until (InJournalBetweenTimes('полюбило вас.|Вы не в состоянии|уже приручили.|fail to tame', ctime, Now) <> -1);
будет прерываться сразу по истечении 100 милисекунд и не дождётся результата второй попытки, потому что сразу найдёт строку в журнале "fail to tame | Вы не в состоянии", которая останется после первой неудачной попытки, потому что в условии на очистку журнала нет "fail to tame | Вы не в состоянии". Поэтому у тебя получается, что таминга не происходит, а скрипт постоянно юзает скилл UseSkill('Animal Taming');, выдаёт тебе мессаг "System: Какое животное попробуем приручить?" и перс ничего не делает. Короче проблема в том что перс не может затамить animal_type[1] := $00CC и стоит в вечном цикле.
Stealth 8.10.2 | Клиент: 7.0.13.4
Faifer
Neophyte
Neophyte
Posts: 12
Joined: 04.05.2012 19:53

Re: Помогите со скриптом на таминг

Post by Faifer »

Фишка в том что первые 35-36 чаров с конями разных видов все, но там всё нормально работает.... с твоей подсказкой переборка работает как надо. Там какойто глюк самого стелса, ведь подобное я наблюдал уже для других макросов.
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Помогите со скриптом на таминг

Post by GeeZeR »

Тебе надо в массиве расположить зверей по степени сложности и в цикле где тамминг делать проверку, если скилл поднялся то прерывать цикл и тогда внешний цикл (for i:=1 to High(animal_type) do begin) увеличит i на 1 и ты будешь тамить следующий тип по порядку в массиве.
Stealth 8.10.2 | Клиент: 7.0.13.4
Faifer
Neophyte
Neophyte
Posts: 12
Joined: 04.05.2012 19:53

Re: Помогите со скриптом на таминг

Post by Faifer »

диапазоны я примерно помню как делаются, разберусь с некоторыми техническими особенностями и буду дальше улучшать макрос.

Ты кстати ещё играешь? На одном из серверов завтра квестик, мне надо ещё 2х человек для прохождения(если что я могу дать чара...)
Post Reply