Максимальный уровень, при котором бот будет атаковать моба

Разработка новых функций.

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

vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Сообщение vit »

Можно сделать 2 способами:

1) Сделать команду как писал piroJOKE:
piroJOKE писал(а):Ммм... нет, вот вы мине сначала скажите, есть ли какой-то способ манипулировать содержимым mon_control-а с консоли, ну, какой-то аналог conf для этого файла?
Сначала подумал, что неплохо было бы это замутить для любого файла, но потом прикинул и понял, что надо это только для mon_control.txt. Ну разве что еще для items_control.txt, но это, ИМХО, нахрен не надо(я пользоваться точно не буду).

2) Или в mon_control-е(опять же как piroJOKE предлагал):
Poring 1 0 0 0 1..8 1..40
или
Poring 1 0 0 0 1-8 1-40
Аватара пользователя
Gans
Грамотный
Сообщения: 162
Зарегистрирован: Вт дек 26, 2006 12:20 pm

Сообщение Gans »

Повторение - мать учения, да? ;)
Изображение
CaToH
Начинающий
Сообщения: 47
Зарегистрирован: Вт сен 04, 2007 9:40 pm

Сообщение CaToH »

Не совсем в тему, но в частности эту проблему можно решить, если добавить возможность менять имя файла в ,котором хранятся настройки mon_control... И вообще других файлов тоже.
Это дает в купе с макросом невероятную гибкость - меняешь конф. файлы и получаешь совершено разных по поведению ботов.

Я не знаю, что сложнее, но представление нескольких переменных вместо набора констант(имен файлов) - мне представляется не очень сложным.

Это решает очень много проблем, ибо макрос очень мощная штукенция уже, зачем копировать функциональность в других частях OpenKore?

Добавлено спустя 1 час 12 минут 30 секунд:

Думается мне, что лучший вариант будет аналогичный ситуаци с macro_file переменной - человек меняет имена конфигов и после пишет reload <filename_pattern>. Если не перегрузил конф файл - сам виноват.

Вообщем, я нафлудил, а кодить пока сам не буду, ибо придется перл сначало ботать.
Жду критику. :Yahoo!:
qwesty
Энтузиаст
Сообщения: 97
Зарегистрирован: Чт сен 20, 2007 4:31 am
Откуда: СПб
Контактная информация:

Сообщение qwesty »

Я сделал проще: вместо job_lv, который все равно никогда не использовал, сделал максимальный лвл и заменить нужно всего пару букв.
aka sllh
QWESTY TEAM
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

qwesty
Ха, тоже неплохо. :twisted:
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Сообщение vit »

qwesty
Может выложишь,как сделал, а то я в перле не силен...
qwesty
Энтузиаст
Сообщения: 97
Зарегистрирован: Чт сен 20, 2007 4:31 am
Откуда: СПб
Контактная информация:

Сообщение qwesty »

vit
В src\AI\CoreLogic.pm ф-ия processAutoAttack в ней ищешь

Код: Выделить всё

if (my $control = mon_control($monster->{name},$monster->{nameID})) {
	next if ( ($control->{attack_auto} ne "" && $control->{attack_auto} <= 0)
И следующие 2 строчки меняешь на

Код: Выделить всё

|| ($control->{attack_lvl} ne "" && $control->{attack_lvl} > $char->{lv})
|| ($control->{attack_jlvl} ne "" && $control->{attack_jlvl} <= $char->{lv})
Т.е. если в mon_control.txt задаешь
Poring 1 0 0 0 1 10, то бот будет атаковать его на промежутке [1..10)
Аватара пользователя
Cooot
Грамотный
Сообщения: 306
Зарегистрирован: Пт апр 25, 2008 8:02 am

Re: Максимальный уровень, при котором бот будет атаковать моба

Сообщение Cooot »

Используя пост qwesty более чем годовалой давности решил сделать также, но выяснил, что сейчас таких строчек нет в src\AI\CoreLogic.pm.

Поэтому новое решение такое и немного улучшенное даже. Надо во всех файлах src заменить строчку (8 одинаковых замен):

Код: Выделить всё

|| ($control->{attack_jlvl} ne "" && $control->{attack_jlvl} > $char->{lv_job})
на:

Код: Выделить всё

|| ($control->{attack_jlvl} ne "" && $control->{attack_jlvl} ne "0" && $control->{attack_jlvl} <= $char->{lv})
Poring 1 0 0 0 1 10 дает нам атаку на промежутке [1..10), начиная со 1го уровня и прекращая атаковать на 10м.

Если же мы впишем вот так (это в тех случаях, когда нам надо атаковать монстра вплоть до 99, но нужны для использования параметры дальше уровня):
High Orc 1 0 0 0 40 0 500
High Orc 1 0 0 0 40 100 500
То эффект будет одинаков, бот начнет бить хайорков, начиная с 40го уровня и до 99 включительно при хп > 500. Просто 0 с моей точки зрения удобнее, чем 99 писать везде, поэтому на него вписана была в строку кода выше дополнительная проверка.
Изображение
Tray
Грамотный
Сообщения: 259
Зарегистрирован: Вс ноя 05, 2006 6:17 pm

Re: Максимальный уровень, при котором бот будет атаковать моба

Сообщение Tray »

это добавили в кору или нет?
а то я смотрел, добавили тока с какого уровня бот будет атаковать моба, правда у меня и версия не шибко новая
Я не бот, я просто мозг отключил.
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Re: Максимальный уровень, при котором бот будет атаковать моба

Сообщение vit »

Tray писал(а):это добавили в кору или нет?
Нет. Рекомендуется использовать плагин xConf, или произвести изменения, описанные в этой теме, вручную.
Tray писал(а):а то я смотрел, добавили тока с какого уровня бот будет атаковать моба
Это было всегда.
Ответить