Пауза перед teleport_Auto atkCount.
Модератор: 4epT
Пауза перед teleport_Auto atkCount.
Проблемка есть одна.
Качается бот телесёрчем, используя рейндж one-shot-kill атаку на мобов. Делается это для достижения максимально возможной скорости кача на этой локации. Ну там телепорты по 3 раза в секундуи тп, выжимается каждая секунда, которая стоит еще сотню-две тысяч опыта в час.
В моем случае атака срабатывает не всегда, но повторная попытка занимает большое время (4 секунды). Поэтому я ограничил кол-во попыток до того, как бот бросает цель и улетает искать другую.
Ограничил с помощью опции teleport_Auto atkCount.
Допустим поставил 3. И очень часто получается, что нанося третий удар по мобу (речь идет о пристовском скилле ТУ, у него шанс успеха 30% примерно), бот мнгновенно вингается. И в итоге не получает никакой экспы в случае успешного срабатывания ТУ. Так как он улетает раньше, чем моб умирает, хотя успевает заметить какой урон был нанесен. Я так прикинул - это довольно значительная доля экспы. ПРоцентов эдак 30.
напомню, речь идет о teleport_Auto atkCount 3. Когда ставил 10, скорость кача заметно снижалась. В случае череды неудач бот начинает подол
Единственным решением проблемы мне представляется добавление паузы после нанесения последнего удара из teleport_Auto atkCount, то есть в моем случае после третьего. Дабы засечь момент смерти моба, получить крупицу опыта и со спокойной душой удалиться
Поможите чем можите, пожалуйста. Я даж выплачу 5кк, если ваш сервер совпадет с моим
ПС
Поместил в раздел идеи намерянно, так как решение проблемы является довольно приятной фишкой для коры, и ее было бы неплохо добавить в сборку)
Качается бот телесёрчем, используя рейндж one-shot-kill атаку на мобов. Делается это для достижения максимально возможной скорости кача на этой локации. Ну там телепорты по 3 раза в секундуи тп, выжимается каждая секунда, которая стоит еще сотню-две тысяч опыта в час.
В моем случае атака срабатывает не всегда, но повторная попытка занимает большое время (4 секунды). Поэтому я ограничил кол-во попыток до того, как бот бросает цель и улетает искать другую.
Ограничил с помощью опции teleport_Auto atkCount.
Допустим поставил 3. И очень часто получается, что нанося третий удар по мобу (речь идет о пристовском скилле ТУ, у него шанс успеха 30% примерно), бот мнгновенно вингается. И в итоге не получает никакой экспы в случае успешного срабатывания ТУ. Так как он улетает раньше, чем моб умирает, хотя успевает заметить какой урон был нанесен. Я так прикинул - это довольно значительная доля экспы. ПРоцентов эдак 30.
напомню, речь идет о teleport_Auto atkCount 3. Когда ставил 10, скорость кача заметно снижалась. В случае череды неудач бот начинает подол
Единственным решением проблемы мне представляется добавление паузы после нанесения последнего удара из teleport_Auto atkCount, то есть в моем случае после третьего. Дабы засечь момент смерти моба, получить крупицу опыта и со спокойной душой удалиться
Поможите чем можите, пожалуйста. Я даж выплачу 5кк, если ваш сервер совпадет с моим
ПС
Поместил в раздел идеи намерянно, так как решение проблемы является довольно приятной фишкой для коры, и ее было бы неплохо добавить в сборку)
В src\Misc.pm находишь такой код:
И меняешь на такой:
В файле timeouts.txt в папке с конфигом бота вносишь
ai_teleport_atkc 1
где 1 - желаемая задержка в сек.
Пробуй, о результатах сообщай.
Код: Выделить всё
if ($config{teleportAuto_atkCount} && $monster->{numAtkFromYou} >= $config{teleportAuto_atkCount}) {
message TF("Teleporting after attacking a monster %d times\n", $config{teleportAuto_atkCount}), "teleport";
useTeleport(1);
}
Код: Выделить всё
if ($config{teleportAuto_atkCount} && $monster->{numAtkFromYou} >= $config{teleportAuto_atkCount}) {
if (!$timeout{ai_teleport_atkc}{time}) {
message TF("Teleporting after attacking a monster %d times delayed for %d sec\n", $config{teleportAuto_atkCount},$timeout{ai_teleport_atkc}{timeout}), "teleport";
$timeout{ai_teleport_atkc}{time} = time;}
if (timeOut($timeout{ai_teleport_atkc})) {
message TF("Teleporting after attacking a monster %d times\n", $config{teleportAuto_atkCount}), "teleport";
useTeleport(1);
$timeout{ai_teleport_atkc}{time} = 0;
}
}
ai_teleport_atkc 1
где 1 - желаемая задержка в сек.
Пробуй, о результатах сообщай.
Отчет:
Поставил atckCount 2 , паузу на 1 сек.
Если ТУ срабатывает со второго раза, появляется надпись.
Проходит секунды 3, он улетает
Если ТУ не срабатывает на 2й раз, то опять появляется
Но вопреки словам своим, бот ретироваться не собирается. Он начинает 3е ТУ кастовать. И как только он его докастует, и вылетит урон (любой), бот моментом улетает.
При этом появляется надпись
В итоге опять же не получает никакой экспы, в случае удачного срабатывания. [/code][/quote]
Поставил atckCount 2 , паузу на 1 сек.
Если ТУ срабатывает со второго раза, появляется надпись.
Код: Выделить всё
Teleporting after attacking a monster 2 times delayed for 1 sec
Если ТУ не срабатывает на 2й раз, то опять появляется
Код: Выделить всё
Teleporting after attacking a monster 2 times delayed for 1 sec
При этом появляется надпись
Код: Выделить всё
Teleporting after attacking a monster [b]2 times[/b]
Как бы не так, он именно собирается улетать, но не моментально, а через 1 с. Но в это время он начинает кастовать 3е ТУ - и улететь не может в этот момент! Поэтому улетает сразу после него. Скажем так, его намеренье улететь не влияет на то что он продолжает атаковать!Бадум писал(а):Если ТУ не срабатывает на 2й раз, то опять появляетсяНо вопреки словам своим, бот ретироваться не собирается. Он начинает 3е ТУ кастовать.Код: Выделить всё
Teleporting after attacking a monster 2 times delayed for 1 sec
Можно конечно принудительно остановить атаку при срабатывании этого блока, но ИМХО, это надо делать в условиях использования скилла.
Можно попробовать поиграть с задержкой - поставить не 1 с а 0.5 или 0.25, но лучше описать - что хочется получить в итоге:
сколько раз кастовать ТУ на моба надо 3 или 2?
что делать после последнего каста ТУ - прекращать атаковать и улетать?
Теперь понял почему он 3 попытки делал
Задержку я изначально поставил 0.5, только потом 1 сек. Разницы никакой. Если не ошибаюсь, то он "0,5" до единицы округлил. Во всяком случае, мне сейчас кажется что в консоль он выводил всеравно "делэй 1 сек". Щас проверю после написания поста
Что хочется?
Хочется найти оптимальное кол-во попыток ТУ для максимальной скорости кача, ну и оптимизировать кач следующим образом: (Учитывая шанс срабатывания - думаю это будет число 2)
После последнего каста ТУ наверно стоит выжидать полсекунды, не больше, останавливать атаку и улетать искать мобов. Думаю этого времени должно хватит на получение экспы в случае успешного убийства моба.
ПС
Щас попробую в блоке ТУ МахЮсес поставить тоже 2, и паузу на переход в idle увеличить. Он по идее атаку будет останавливать...
Вроде должно помочь
Задержку я изначально поставил 0.5, только потом 1 сек. Разницы никакой. Если не ошибаюсь, то он "0,5" до единицы округлил. Во всяком случае, мне сейчас кажется что в консоль он выводил всеравно "делэй 1 сек". Щас проверю после написания поста
Что хочется?
Хочется найти оптимальное кол-во попыток ТУ для максимальной скорости кача, ну и оптимизировать кач следующим образом: (Учитывая шанс срабатывания - думаю это будет число 2)
После последнего каста ТУ наверно стоит выжидать полсекунды, не больше, останавливать атаку и улетать искать мобов. Думаю этого времени должно хватит на получение экспы в случае успешного убийства моба.
ПС
Щас попробую в блоке ТУ МахЮсес поставить тоже 2, и паузу на переход в idle увеличить. Он по идее атаку будет останавливать...
Вроде должно помочь
Хм, значит: ставитьБадум писал(а):После последнего каста ТУ наверно стоит выжидать полсекунды, не больше, останавливать атаку и улетать искать мобов. Думаю этого времени должно хватит на получение экспы в случае успешного убийства моба.
atkCount 2
ai_teleport_atkc 0.5
в блоке attackSkillSlot ставить
maxAttempts 2
что бы он не пытался сделать ТУ 3ий раз.
Видимо так.
Выставил все как выше.
Паузу на 1 сек.
Ведет себя неоднозначно. То улетает моментально после 2го ТУ с надписью
(без надписи "делей 1 сек")
То телепортится сразу после нанесения 2го удара (секунду он не выжидает точно)
А то и вовсе не телепортится, хотя надпись появляется
Потом выжидает некоторое время (у меня 5 секунд) и дропает таргет, и варпается уже от этого
Паузу на 1 сек.
Ведет себя неоднозначно. То улетает моментально после 2го ТУ с надписью
Код: Выделить всё
Teleporting after attacking a monster 2 times
То телепортится сразу после нанесения 2го удара (секунду он не выжидает точно)
Код: Выделить всё
Teleporting after attacking a monster 2 times delayed for 1 sec
Потом выжидает некоторое время (у меня 5 секунд) и дропает таргет, и варпается уже от этого
После некоторых размышлений, стало ясно, что изменением только одной процедуры тут не обойтись, так как срабатывает она только при нанесении удара мобу. Т.е. телепорт будет только после следущей атаки.
Можно слегка усложнить схему телепорта, и сделать так:
Misc.pm - sub updateDamageTables
AI\CoreLogic.pm
##### AUTO-TELEPORT #####
sub processAutoTeleport
после
в конец добавить
Можно слегка усложнить схему телепорта, и сделать так:
Misc.pm - sub updateDamageTables
Код: Выделить всё
if ($config{teleportAuto_atkCount} && $monster->{numAtkFromYou} >= $config{teleportAuto_atkCount}) {
message TF("Teleporting after attacking a monster %d times delayed for %.3f sec\n", $config{teleportAuto_atkCount},$timeout{ai_teleport_atkc}{timeout}), "teleport";
if (AI::action eq "attack") {
stopAttack();
AI::dequeue();
}
ai_clientSuspend(0,$timeout{ai_teleport_atkc}{timeout});
$timeout{ai_teleport_atkc}{time} = time;
}
##### AUTO-TELEPORT #####
sub processAutoTeleport
после
Код: Выделить всё
$timeout{ai_teleport_portal}{time} = time;
}
Код: Выделить всё
if ($config{teleportAuto_atkCount} && $timeout{ai_teleport_atkc}{time} && timeOut($timeout{ai_teleport_atkc})) {
message TF("Teleporting after attacking a monster %d times\n", $config{teleportAuto_atkCount}), "teleport";
$timeout{ai_teleport_atkc}{time} = 0;
useTeleport(1);
}
У меня в файле AI\CoreLogic.pm в разделе
Версия коры 206SVN6317
ПС
Такой строки вообще нету в файле
ППС
НЕсмотря на то что строки такой нет, ят упо этот блок в CoreLogic.pm пихнул
Заработало как я хотел =)
Выжидает теперь паузу в 1 секунду и улетает
Спасибо огромное.
Правда пауза всеравно 1 секунда (хотя теперь пишет делей 1.000 сек). Хотя в таймаутс стоит 0.5. Типа округляет
Нету строки##### AUTO-TELEPORT #####
sub processAutoTeleport
Код: Выделить всё
$timeout{ai_teleport_portal}{time} = time;
}
ПС
Такой строки вообще нету в файле
ППС
НЕсмотря на то что строки такой нет, ят упо этот блок в CoreLogic.pm пихнул
Заработало как я хотел =)
Выжидает теперь паузу в 1 секунду и улетает
Спасибо огромное.
Правда пауза всеравно 1 секунда (хотя теперь пишет делей 1.000 сек). Хотя в таймаутс стоит 0.5. Типа округляет
Нашел строку =)
Она в разделе
В итоге получился прирост в 100к экспы
Проблема в локации. Когда это будут анубисы, ну или если бы это было ГД гефа, то прирост был бы гораздо более существенный.
Например в ГД гефа можно было бы бить призраков практически не получая урона, при этом получая экспу изза твоего кода.
Если без этого кода поставить туды приста, то скорость кача не поднимется выше 1,5кк в час. Руками там делается 3кк в час++, так как человек кидает одно ТУ и сразу улетает, но тем не менее при успехе опыт получает. А вот бот в случае чего улетает до того, как получает экспу. Полагаю на анубисах будет тоже самое
Она в разделе
Но твой код я пихнул в конец раздела##### TELEPORT IDLE / PORTAL #####
Округляет всеравно, хотя это не так важно.##### AUTO-TELEPORT #####
В итоге получился прирост в 100к экспы
Проблема в локации. Когда это будут анубисы, ну или если бы это было ГД гефа, то прирост был бы гораздо более существенный.
Например в ГД гефа можно было бы бить призраков практически не получая урона, при этом получая экспу изза твоего кода.
Если без этого кода поставить туды приста, то скорость кача не поднимется выше 1,5кк в час. Руками там делается 3кк в час++, так как человек кидает одно ТУ и сразу улетает, но тем не менее при успехе опыт получает. А вот бот в случае чего улетает до того, как получает экспу. Полагаю на анубисах будет тоже самое