Page 1 of 1
Помогите со скриптом на таминг
Posted: 04.08.2017 12:11
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.
Re: Помогите со скриптом на таминг
Posted: 04.08.2017 18:37
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
for i:=1 to High(animal_type) do begin
Re: Помогите со скриптом на таминг
Posted: 05.08.2017 2:10
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% медведя - както примерно так.
Re: Помогите со скриптом на таминг
Posted: 05.08.2017 11:44
by GeeZeR
Ты время не засёк для проверки в журнале, ctime:=Now; сделай перед UseSkill('Animal Taming');
Проверялку можно конечно сделать если ты знаешь какой тип животных на каком скиле лучше тамить сделай простую проверку: если скилл такой-то то тамить животных с таким-то типом.
Re: Помогите со скриптом на таминг
Posted: 05.08.2017 12:14
by Faifer
У меня проблема - одновременно работает до 37 чаров, еще 8 шт стоят ничего не делают....
Поставил ctime:=Now; по твоему совету - стало еще хуже, поставил FindDistance := 3 и FindVertical := 20 чтобы искало только рядом(думал мб оно цепляется на лошадь с соседних домов) - тоже не помогает без ctime:=Now; и FindDistance := 3 хотябы 37 чаров качается...
Re: Помогите со скриптом на таминг
Posted: 05.08.2017 12:21
by Faifer
Блин сейчас несклько раз перезапустил но то 10 то 15 первых работает остальные тупят...
Попробовал перезапускать последовательно скрипты - первых 36 заработало нормально, ещё 9 сколько раз не перезагружай не работает...
Оно тупо делает 2 записи
[13:20:53:601] System: Targeting cancelled.
[13:20:53:767] System: Какое животное попробуем приручить?
и всё...
Re: Помогите со скриптом на таминг
Posted: 05.08.2017 12:22
by Faifer
Кстати подобная проблема была перед этим при прокачке Энимал лора - но он слишком быстро качался, я просто лишних чаров отключил с 100% скила и тогда остальные заработали тож...
Re: Помогите со скриптом на таминг
Posted: 05.08.2017 15:23
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 и стоит в вечном цикле.
Re: Помогите со скриптом на таминг
Posted: 05.08.2017 18:14
by Faifer
Фишка в том что первые 35-36 чаров с конями разных видов все, но там всё нормально работает.... с твоей подсказкой переборка работает как надо. Там какойто глюк самого стелса, ведь подобное я наблюдал уже для других макросов.
Re: Помогите со скриптом на таминг
Posted: 05.08.2017 18:22
by GeeZeR
Тебе надо в массиве расположить зверей по степени сложности и в цикле где тамминг делать проверку, если скилл поднялся то прерывать цикл и тогда внешний цикл (for i:=1 to High(animal_type) do begin) увеличит i на 1 и ты будешь тамить следующий тип по порядку в массиве.
Re: Помогите со скриптом на таминг
Posted: 06.08.2017 2:32
by Faifer
диапазоны я примерно помню как делаются, разберусь с некоторыми техническими особенностями и буду дальше улучшать макрос.
Ты кстати ещё играешь? На одном из серверов завтра квестик, мне надо ещё 2х человек для прохождения(если что я могу дать чара...)