Реакция бота на атаку моба - проблема!

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

Модератор: 4epT

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Rumata
Грамотный
Сообщения: 235
Зарегистрирован: Ср фев 14, 2007 10:52 am

Реакция бота на атаку моба - проблема!

Сообщение Rumata »

если кто шарит в програмировании, гляньте возможно ли сделать такое:

А---------С----------В

Бот у нас передвигается отрезками АВ (обычно 10-15 шагов),
допустим бот идет из точки А в точку В, в точке С на него нападает агресив, бот дергается в судорагах но доходит таки до точки В и тока потом врубает интеллект на атаку, что не есть гуд, палевно, неэффетивно, а зачастую и гибельно.

у нас в AI есть блок реагирующий на атаку моба? как сделать данный блок доминантным? то есть если бота ударили во время процедуры route, то идет проверка - дожны ли мы атаковать моба ( сверяемся с монконтрол), если да - то отменяем действие route и начинаем атаковать агра.

При игре без ОК мы кликая допустим на край экрана чтобы туда дойти - туда и идем :) но если ударил моб то перс приняв удар замирает и ждет указаний- идти или атаковать. Почему же Кора с упорством Александра Матросова пытается пробиться к точке В ( пусть даже на ней 10 мобов повиснут, ей на это пофигу).

кора версии 206SVN6260. вроде такого не было раньше, у нас поменялся AI?

ЗЫ это не к теме "выбигание из толпы", это совсем другая проблема, хотя решив ее можно частично решить и "выбегание".

Добавлено спустя 20 минут 29 секунд:

вобчем частично решил по своему-

1-ое использовал идею с этого форума(не помню когда и в какой теме ее написал один товарищ, спасибки ему), цитирую:

"Что и где надо изменить
(речь идет об OpenKore what-will-become-2.0.4 (SVN version), про другие ничего сказать не могу к сожалению)
1) открываем src/AI/Attack.pm
Находим там функцию sub finishAttacking { и в самом конце ее дописываем строчку Код:
$timeout{'ai_attack_auto'}{'time'} -= $timeout{'ai_attack_auto'}{'timeout'} + 1;


Итого концовка будет выглядеть след. образом: Код:
} else {
message T("Target lost\n"), "ai_attack";
}

$timeout{'ai_attack_auto'}{'time'} -= $timeout{'ai_attack_auto'}{'timeout'} + 1;
}



Этим самым мы сбросим таймаут для функции processAutoAttack, чтобы он сработала пре следующем же ее вызове.

2) Теперь нужно добиться, чтобы processAutoAttack в общем цикле была вызвана как можно раньше, чтобы бот "не успел озадачиться" чем-то другим, типа передвижения ...
Для этого открываем src/AI/CoreLogic.pm и вносим следующие изменения:
а) находим строчку processLook(); и перед ней вставляем следующий код: Код:
if ($AI == 2) {
processAutoAttack();
}


б) теперь мотаем ниже и находим старый вызов этой же функции processAutoAttack(); и просто комментируем его или удаляем.
"

2-ое поставил в конфиге:

doCommand move stop {
onAction route
notOnAction attack
aggressives > 0
timeout 1
disabled 0
}

бот стал более адекватен, не идеален конечно но уже чтото. Потестите если кому не в лом.
Поринг
Новичок
Сообщения: 8
Зарегистрирован: Пт мар 14, 2008 10:56 am

Сообщение Поринг »

"Бот у нас передвигается отрезками АВ (обычно 10-15 шагов)"

Я конечно не програмист, но как любитель хотел задать вопрос, в том числе и автору данного подраздела, а есть возможность (необходимость, целесообразность) сократить размер отрезка АВ, скажем, до 3(или скоко там возможно, или нужно) шагов, и насколько это целесообразно, и как это осуществить.

В идеале, я так понимаю. отрезок между А и В должен быть равен двум шагам, чтобы вопрос о точке С опал сам собой. :)
Уэверли
Начинающий
Сообщения: 43
Зарегистрирован: Сб авг 11, 2007 4:14 pm

Сообщение Уэверли »

Поринг, Кажется это параметр route_step в конфиге...

А автор пробовал этот параметр уменьшить до 5?

Мне просто не попадалось таких карт, где передвижение на 10 клеток было бы чревато последствиями... Ибо чары - агильники. Ну и пристально наблюдать за изменениями параметра не стал, ибо в лом )
Изображение
Rumata
Грамотный
Сообщения: 235
Зарегистрирован: Ср фев 14, 2007 10:52 am

Сообщение Rumata »

А автор пробовал этот параметр уменьшить до 5?
гадко тогда он движеться бррр меньше 8 ставить route_step ужасно выглядят передвижения, дерганно , в свое время уменьшал и до 2 :) лучше не делайте - палево голимое визуально. там же как- двинулся он на длину этого параметра и завис расчитывая след точку и так далее, так что сокращать не стоит слишком.
Поринг
Новичок
Сообщения: 8
Зарегистрирован: Пт мар 14, 2008 10:56 am

Сообщение Поринг »

А если задействовать autoConfChange, т.е менять конфиг на конфиг_2. При этом прописать условие для перемены конфига: а именно, растояние до интересующего нас моснтра, т.е. если растояние до монтсра который появился в пределах видимости составляет например уже 9 клеток, то менять конфиг в котором route_step = 2 или еще чему то отличному (меньше) от того же значения указанному в первом конфиге. Ну а во втором конфиге прописать обратное условие для задействования 1 конфига. Немного коряво написал, но общее направление мысли думаю понятно.

Интересно в этом случае можно обойтись без макроса (ну не люблю я их).
Rumata
Грамотный
Сообщения: 235
Зарегистрирован: Ср фев 14, 2007 10:52 am

Сообщение Rumata »

не понял ни хера если чесно зачем все это? :shock:
Поринг
Новичок
Сообщения: 8
Зарегистрирован: Пт мар 14, 2008 10:56 am

Сообщение Поринг »

Ну например у нас route_step =10

А---А1---С---------В

В точке А1 меняем "конфиг" на "конфиг_2" со значением route_step =3 (или еще чему нить, например 2), убиваем моба, потом опять меняем на "конфиг". Тока точка С будет не место нападения а место расположения агресива. Или глупость сморозил?
Rumata
Грамотный
Сообщения: 235
Зарегистрирован: Ср фев 14, 2007 10:52 am

Сообщение Rumata »

ты пока перелоадишь конфиг тебя уже покрамсают немного, зачем?

doCommand move stop {
onAction route
notOnAction attack
aggressives > 0
timeout 1
disabled 0
}

вот эта процедура в конфиге нормально работает, проблема тока с мобами стрелками возникает а так все прекрасно
Ответить