Гайд по написанию скриптов для гомункулусов
-
@"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, с которого я начал.
А вообще, при написании я состедотачивался на "умном" движении и "умном" поведении. Гом получился действительно умный.
Жаль, я не осилил поддержку всех умений наемников и не научил гомункула "водить" мобов кругами. Теперь уж, видимо, и не сделаю. Времни ни на что не хватает.Еще так есть кликер для тесной интеграции с клиентом. Но это "только для другого сервера". На мотре такая защита - не поломаешь:)
-
Да. Когда (если) 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, с которого я начал.
А вообще, при написании я состедотачивался на "умном" движении и "умном" поведении. Гом получился действительно умный.
Жаль, я не осилил поддержку всех умений наемников и не научил гомункула "водить" мобов кругами. Теперь уж, видимо, и не сделаю. Времни ни на что не хватает.Еще так есть кликер для тесной интеграции с клиентом. Но это "только для другого сервера". На мотре такая защита - не поломаешь:)
-
Я вчера наткнулся на проблему, мешающая моему мировому господствую (на отдельно взятой карте).
Идея господства была такая. Гомункул может получать координаты объектов находящихся за приделами видимости ( для отслеживания что моб вышел за пределы видимости), соответственно по идеи можно следить за действиями других игроков (в конечном счете можно отслеживать места на карте где меньше всего игроков).
Замечены две странности, гомункул не может отойти дальше чем на N клеток от НПС и порталов, координаты которых он запрашивает для получения расстояния до них. Если попытаться отследить куда респнулся убитый моб то гомункул вообще перестает реагировать на что либо.
На сколько я понял клиент обнуляет все действия гомункула и завершает выполнения скрипта в случае вызова функции определения координат цели находящийся за приделами области видимости.
Это сократит эффективность защиты от нападения на чужих мобов, т.к. мобы почти не меняют (или не меняют вовсе) свои ID после смерти, и единственное что можно сделать это установление таймера на запрет атаки моба с конкретным ID.