MOTR logo
    • Категории
    • Последние
    • Популярные
    • Метки
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти

    Гайд по написанию скриптов для гомункулусов

    Запланировано Прикреплена Закрыта Перенесена Жизнь в пробирке
    528 Сообщения 60 Posters 51.3k Просмотры
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • K Не в сети
      Kha-dar
      отредактировано

      @sepulka:
      Что я нашла :oops:

      <!-- m --><a class="postlink" href="http://code.google.com/p/ro-rail/">http://code.google.com/p/ro-rail/</a><!-- m --> никто не пробовал?

      Я недавно попробовал, впечатления неоднозначные: очень шустрый скрипт (при телепорте, когда экран только проявляется, хом уже на полпути к дальным монстрам, а иногда уже и труп валяется, а хом ко второму мчиться), настройка, по задумке, должна быть очень легкой, но как сохранить сделанные мною изменения в конфигурационном файле я не понял. :oops:

      1 ответ Последний ответ Ответить Цитировать 0
      • K Не в сети
        Kha-dar
        отредактировано

        @"sepulka":
        Что я нашла 🙂

        <!-- m --><a class="postlink" href="http://code.google.com/p/ro-rail/">http://code.google.com/p/ro-rail/</a><!-- m --> никто не пробовал?

        Я недавно попробовал, впечатления неоднозначные: очень шустрый скрипт (при телепорте, когда экран только проявляется, хом уже на полпути к дальным монстрам, а иногда уже и труп валяется, а хом ко второму мчиться), настройка, по задумке, должна быть очень легкой, но как сохранить сделанные мною изменения в конфигурационном файле я не понял. :oops:

        1 ответ Последний ответ Ответить Цитировать 0
        • E Не в сети
          Euthanasia M_D_ Заблокирован
          отредактировано

          @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 вообще-то вроде бы заявлял, что завязал с РО. И вот...

          1 ответ Последний ответ Ответить Цитировать 0
          • E Не в сети
            Euthanasia M_D_ Заблокирован
            отредактировано

            @"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 вообще-то вроде бы заявлял, что завязал с РО. И вот...

            1 ответ Последний ответ Ответить Цитировать 0
            • Aiko StarA Не в сети
              Aiko Star
              отредактировано

              Я тоже завязала, причем давно. И вот 😄

              1 ответ Последний ответ Ответить Цитировать 0
              • Aiko StarA Не в сети
                Aiko Star
                отредактировано

                Я тоже завязала, причем давно. И вот 😄

                1 ответ Последний ответ Ответить Цитировать 0
                • K Не в сети
                  Kha-dar
                  отредактировано

                  Euthanasia M_D_, спасибо за подсказку, при настройке этого АИ я не знал что нужна еще строчка
                  rail_state["ActorOptions"]["ByType"][1078] = {}
                  , хотя теперь понимаю, что её наличие логично, и мог бы сам бы догадаться 🙂

                  1 ответ Последний ответ Ответить Цитировать 0
                  • K Не в сети
                    Kha-dar
                    отредактировано

                    Euthanasia M_D_, спасибо за подсказку, при настройке этого АИ я не знал что нужна еще строчка
                    rail_state["ActorOptions"]["ByType"][1078] = {}
                    , хотя теперь понимаю, что её наличие логично, и мог бы сам бы догадаться 🙂

                    1 ответ Последний ответ Ответить Цитировать 0
                    • iDityanI Не в сети
                      iDityan
                      отредактировано

                      У меня вопрос по специфике работы V_OWNER, она возвращает id хозяина только для данного владельца или для других гомункулов (наемников) тоже?

                      1 ответ Последний ответ Ответить Цитировать 0
                      • iDityanI Не в сети
                        iDityan
                        отредактировано

                        У меня вопрос по специфике работы V_OWNER, она возвращает id хозяина только для данного владельца или для других гомункулов (наемников) тоже?

                        1 ответ Последний ответ Ответить Цитировать 0
                        • iDityanI Не в сети
                          iDityan
                          отредактировано

                          Ответ нашел.
                          [code:3qxn1y16]
                          GetV (0|V_OWNER , id)
                          Возвращает: 1 целое число
                          Описание: Выдает ID вашего алхимика/креатора. Аргумент id может быть любым числом.
                          [/code:3qxn1y16]

                          1 ответ Последний ответ Ответить Цитировать 0
                          • iDityanI Не в сети
                            iDityan
                            отредактировано

                            Ответ нашел.
                            [code:3qxn1y16]
                            GetV (0|V_OWNER , id)
                            Возвращает: 1 целое число
                            Описание: Выдает ID вашего алхимика/креатора. Аргумент id может быть любым числом.
                            [/code:3qxn1y16]

                            1 ответ Последний ответ Ответить Цитировать 0
                            • iDityanI Не в сети
                              iDityan
                              отредактировано

                              наткнулся на англо-язычный сборник AI для гомункулов http://s14.invisionfree.com/proiriscommunity/ar/t4760.htm

                              1 ответ Последний ответ Ответить Цитировать 0
                              • iDityanI Не в сети
                                iDityan
                                отредактировано

                                наткнулся на англо-язычный сборник AI для гомункулов http://s14.invisionfree.com/proiriscommunity/ar/t4760.htm

                                1 ответ Последний ответ Ответить Цитировать 0
                                • K Не в сети
                                  Kha-dar
                                  отредактировано

                                  Они, как и большинство обсуждаемых, достаточно старые и давно не обновлялись.

                                  ИМХО, надо обращать внимание на новые разработки, например, такие как RAIL - шустрый как MirAI, настраевыемый и умный как Rampage, и работает с наёмниками также как AzzyAI - когда его допишут это будет лучший АИ.

                                  1 ответ Последний ответ Ответить Цитировать 0
                                  • K Не в сети
                                    Kha-dar
                                    отредактировано

                                    Они, как и большинство обсуждаемых, достаточно старые и давно не обновлялись.

                                    ИМХО, надо обращать внимание на новые разработки, например, такие как RAIL - шустрый как MirAI, настраевыемый и умный как Rampage, и работает с наёмниками также как AzzyAI - когда его допишут это будет лучший АИ.

                                    1 ответ Последний ответ Ответить Цитировать 0
                                    • LisandreLL Не в сети
                                      LisandreL
                                      отредактировано

                                      @Kha-dar:
                                      когда его допишут это будет лучший АИ.Если допишут и если он при этом останется шустрым. 🙂

                                      1 ответ Последний ответ Ответить Цитировать 0
                                      • LisandreLL Не в сети
                                        LisandreL
                                        отредактировано

                                        @"Kha-dar":
                                        когда его допишут это будет лучший АИ.Если допишут и если он при этом останется шустрым. 🙂

                                        1 ответ Последний ответ Ответить Цитировать 0
                                        • E Не в сети
                                          Euthanasia M_D_ Заблокирован
                                          отредактировано

                                          Да. Когда (если) 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, с которого я начал.

                                          А вообще, при написании я состедотачивался на "умном" движении и "умном" поведении. Гом получился действительно умный.
                                          Жаль, я не осилил поддержку всех умений наемников и не научил гомункула "водить" мобов кругами. Теперь уж, видимо, и не сделаю. Времни ни на что не хватает.

                                          Еще так есть кликер для тесной интеграции с клиентом. Но это "только для другого сервера". На мотре такая защита - не поломаешь:)

                                          1 ответ Последний ответ Ответить Цитировать 0
                                          • E Не в сети
                                            Euthanasia M_D_ Заблокирован
                                            отредактировано

                                            Да. Когда (если) 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, с которого я начал.

                                            А вообще, при написании я состедотачивался на "умном" движении и "умном" поведении. Гом получился действительно умный.
                                            Жаль, я не осилил поддержку всех умений наемников и не научил гомункула "водить" мобов кругами. Теперь уж, видимо, и не сделаю. Времни ни на что не хватает.

                                            Еще так есть кликер для тесной интеграции с клиентом. Но это "только для другого сервера". На мотре такая защита - не поломаешь:)

                                            1 ответ Последний ответ Ответить Цитировать 0
                                            • Первое сообщение
                                              Последнее сообщение