Гайд по написанию скриптов для гомункулусов
-
Ну хоть чуточку смекалки и сообразительности можно же проявить, зачем же строго по инструкции...
В функциях добавляются только проверки на текущие значения хп-сп хомяка, значит, бОльшая часть функций остается нетронутой. Тупо берем самый первый комментарий из этого таинственного куска кода, задаем поиск и... обнаруживаем, что функцию function MAttackAllowed(actor) только что меняли, а функцию function AI_MSkillsAllowed(actor) не трогали (а в ней упомянутый кусок есть как раз). И номер строки примерно в тот же район ссылается.
Вообще, чтобы разрешить ваши терзания, скажу, что эту часть кода действительно надо вставлять в function AI_MSkillsAllowed(actor) -
@sepulka:
Что я нашла :oops:<!-- m --><a class="postlink" href="http://code.google.com/p/ro-rail/">http://code.google.com/p/ro-rail/</a><!-- m --> никто не пробовал?
Я недавно попробовал, впечатления неоднозначные: очень шустрый скрипт (при телепорте, когда экран только проявляется, хом уже на полпути к дальным монстрам, а иногда уже и труп валяется, а хом ко второму мчиться), настройка, по задумке, должна быть очень легкой, но как сохранить сделанные мною изменения в конфигурационном файле я не понял. :oops:
-
@"sepulka":
Что я нашла<!-- m --><a class="postlink" href="http://code.google.com/p/ro-rail/">http://code.google.com/p/ro-rail/</a><!-- m --> никто не пробовал?
Я недавно попробовал, впечатления неоднозначные: очень шустрый скрипт (при телепорте, когда экран только проявляется, хом уже на полпути к дальным монстрам, а иногда уже и труп валяется, а хом ко второму мчиться), настройка, по задумке, должна быть очень легкой, но как сохранить сделанные мною изменения в конфигурационном файле я не понял. :oops:
-
@Kha-dar:
но как сохранить сделанные мною изменения в конфигурационном файле я не понял. :oops:Все очень просто. На <!-- m --><a class="postlink" href="http://forums.irowiki.org/showthread.php?t=48628">http://forums.irowiki.org/showthread.php?t=48628</a><!-- m --> автор отвечает и на этот вопрос тоже. Кроме того, по адресу <!-- m --><a class="postlink" href="http://code.google.com/p/ro-rail/wiki/StateFileIndex">http://code.google.com/p/ro-rail/wiki/StateFileIndex</a><!-- m --> есть полное описание формата.
Ну а если коротко, то в папке с игрой (не в "./AI/USER_AI/", а в той же директории, где "ragnarok.exe" и "motr.exe") после запуска скрипта должен появляться файл, который называется RAIL_State.xyz.lua, где xyz - "merc" или "homu".
В этом файле должно быть что-то типа:
rail_state["ActorOptions"]["ByType"][1078] = {}
rail_state["ActorOptions"]["ByType"][1078]["Priority"] = 0
rail_state["ActorOptions"]["ByType"][1078]["AttackAllowed"] = true
rail_state["ActorOptions"]["ByType"][1078]["SkillsAllowed"] = falseкак вариант, то же самое можно писать в таком формате:
rail_state.ActorOptions.ByType[1078] = {
Priority = 0,
AttacksAllowed = true,
SkillsAllowed = false,
}
оно потом само преобразуется к основному виду."ActorOptions" - тактика в отношении мобов, персонажей, нпц.
"ByType" - опции заданы для всех мобов типа 1078 "Red Plant". (RAIL позволяет также задавать поведение относительно id персонажа (моба). Для этого вместо "ByType" пишем "ByID". Чтобы задать поведение в отношении моба "по умолчанию", вместо "ByType" пишем "Default".)
1078 - Номер типа моба. Ну, вы знаете.Примерно вот так. Читайте документацию. А вообще, скрипт написан очень продуманно, на хорошем уровне знания lua. Много фишек, которые faithful использовал, меня, например, удивили.
p.s. Кстати, faithful вообще-то вроде бы заявлял, что завязал с РО. И вот...
-
@"Kha-dar":
но как сохранить сделанные мною изменения в конфигурационном файле я не понял. :oops:Все очень просто. На <!-- m --><a class="postlink" href="http://forums.irowiki.org/showthread.php?t=48628">http://forums.irowiki.org/showthread.php?t=48628</a><!-- m --> автор отвечает и на этот вопрос тоже. Кроме того, по адресу <!-- m --><a class="postlink" href="http://code.google.com/p/ro-rail/wiki/StateFileIndex">http://code.google.com/p/ro-rail/wiki/StateFileIndex</a><!-- m --> есть полное описание формата.
Ну а если коротко, то в папке с игрой (не в "./AI/USER_AI/", а в той же директории, где "ragnarok.exe" и "motr.exe") после запуска скрипта должен появляться файл, который называется RAIL_State.xyz.lua, где xyz - "merc" или "homu".
В этом файле должно быть что-то типа:
rail_state["ActorOptions"]["ByType"][1078] = {}
rail_state["ActorOptions"]["ByType"][1078]["Priority"] = 0
rail_state["ActorOptions"]["ByType"][1078]["AttackAllowed"] = true
rail_state["ActorOptions"]["ByType"][1078]["SkillsAllowed"] = falseкак вариант, то же самое можно писать в таком формате:
rail_state.ActorOptions.ByType[1078] = {
Priority = 0,
AttacksAllowed = true,
SkillsAllowed = false,
}
оно потом само преобразуется к основному виду."ActorOptions" - тактика в отношении мобов, персонажей, нпц.
"ByType" - опции заданы для всех мобов типа 1078 "Red Plant". (RAIL позволяет также задавать поведение относительно id персонажа (моба). Для этого вместо "ByType" пишем "ByID". Чтобы задать поведение в отношении моба "по умолчанию", вместо "ByType" пишем "Default".)
1078 - Номер типа моба. Ну, вы знаете.Примерно вот так. Читайте документацию. А вообще, скрипт написан очень продуманно, на хорошем уровне знания lua. Много фишек, которые faithful использовал, меня, например, удивили.
p.s. Кстати, faithful вообще-то вроде бы заявлял, что завязал с РО. И вот...
-
Я тоже завязала, причем давно. И вот
-
Я тоже завязала, причем давно. И вот
-
Euthanasia M_D_, спасибо за подсказку, при настройке этого АИ я не знал что нужна еще строчка
rail_state["ActorOptions"]["ByType"][1078] = {}
, хотя теперь понимаю, что её наличие логично, и мог бы сам бы догадаться -
Euthanasia M_D_, спасибо за подсказку, при настройке этого АИ я не знал что нужна еще строчка
rail_state["ActorOptions"]["ByType"][1078] = {}
, хотя теперь понимаю, что её наличие логично, и мог бы сам бы догадаться -
У меня вопрос по специфике работы V_OWNER, она возвращает id хозяина только для данного владельца или для других гомункулов (наемников) тоже?
-
У меня вопрос по специфике работы V_OWNER, она возвращает id хозяина только для данного владельца или для других гомункулов (наемников) тоже?
-
Ответ нашел.
[code:3qxn1y16]
GetV (0|V_OWNER , id)
Возвращает: 1 целое число
Описание: Выдает ID вашего алхимика/креатора. Аргумент id может быть любым числом.
[/code:3qxn1y16] -
Ответ нашел.
[code:3qxn1y16]
GetV (0|V_OWNER , id)
Возвращает: 1 целое число
Описание: Выдает ID вашего алхимика/креатора. Аргумент id может быть любым числом.
[/code:3qxn1y16] -
наткнулся на англо-язычный сборник AI для гомункулов http://s14.invisionfree.com/proiriscommunity/ar/t4760.htm
-
наткнулся на англо-язычный сборник AI для гомункулов http://s14.invisionfree.com/proiriscommunity/ar/t4760.htm
-
Они, как и большинство обсуждаемых, достаточно старые и давно не обновлялись.
ИМХО, надо обращать внимание на новые разработки, например, такие как RAIL - шустрый как MirAI, настраевыемый и умный как Rampage, и работает с наёмниками также как AzzyAI - когда его допишут это будет лучший АИ.
-
Они, как и большинство обсуждаемых, достаточно старые и давно не обновлялись.
ИМХО, надо обращать внимание на новые разработки, например, такие как RAIL - шустрый как MirAI, настраевыемый и умный как Rampage, и работает с наёмниками также как AzzyAI - когда его допишут это будет лучший АИ.
-
@Kha-dar:
когда его допишут это будет лучший АИ.Если допишут и если он при этом останется шустрым. -
@"Kha-dar":
когда его допишут это будет лучший АИ.Если допишут и если он при этом останется шустрым. -
Да. Когда (если) Faithful допишет свой RAIL, я, пожалуй, просто добавлю в него свои фишки и буду радоваться. Но пока он этого не сделал, приглашаю всех ознакомиться с Ёки ИИ <!-- m --><a class="postlink" href="http://nakayama.narod.ru/yokiai.html">http://nakayama.narod.ru/yokiai.html</a><!-- m -->. Что он умеет, помимо само собой разумеющегося:
- Графический пользовательский интерфейс для настройки параметров;
- Автозаполнение mob_id для наемников;
- Танцующая атака;
- Танкование мобов для другого персонажа;
- Автозавершение работы;
- Частичная поддержка наемников;
- Защита от "позиционки". Было актуально на др. сервере. Если гомункул в течение некоторого времени не может попасть по мобу, он попытается сменить позицию и ударить моба с другой стороны;
- Защита от "потери клиента" в режиме танкования. Если клиент перестает бить моба, гомункул через некоторое время сам его убивает;
- Защита от "зависания мобов". Было актуально на др. сервере. Если в течение определенного времени гомункул моба не убивает, такой моб считается "зависшим" и игнормируется
- Режим возврата к Алхимику при недостаточном HP - хозяин сможет полечить поушн питчером, да и гомункул выйдет из "опасной зоны";
- "Волновой" алгоритм нахождения пути - если вокруг Алхимика сложный рельеф местности, гомункул запомнит места, где есть проходы, и через некоторое время научится выбирать оптимальный обходной маршрут к цели/хозяину и никогда не потеряется;
- Настройка предпочтений в атаке/защите. Можно настроить приоритеты - кого первого защищать (себя, хозяина, друга) или же в первую очередь нападать на "свободных" мобов;
- Настройка кнопок управления гомункулом. Ну, это фича, оставшаяся от исходного AI, с которого я начал.
А вообще, при написании я состедотачивался на "умном" движении и "умном" поведении. Гом получился действительно умный.
Жаль, я не осилил поддержку всех умений наемников и не научил гомункула "водить" мобов кругами. Теперь уж, видимо, и не сделаю. Времни ни на что не хватает.Еще так есть кликер для тесной интеграции с клиентом. Но это "только для другого сервера". На мотре такая защита - не поломаешь:)