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

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

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

      кстати, данс атака у всех работает?
      у меня работает, но почему-то хромает 🙂

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

        Ее типа пофиксили, точнее сделали практически невозможным ее использование. По крайней мере у меня так, с включенной танцующей атакой, Минутку все нормально, а потом сильно зависает чар, а лифка начинает тупо прыгать вокруг моба не бьет его. И тормоза тормоза тормоза... Вынуждена была убрать эту функцию. 😞
        Но вон кто то говорил что у него все норм с танцующей атакой работает. Если бы этот человек поделился еще как у него так все хорошо работает.

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

          Florencia, мой вариант
          [code:2g5ogyeb] elseif (MyState == ATTACK_ST) then
          OnATTACK_ST()
          local zx, zy = GetV(V_POSITION, MyEnemy)
          Move(MyID,zx ,zy + 1)
          OnATTACK_ST ()
          elseif (MyState == FOLLOW_ST) then
          [/code:2g5ogyeb]

          пришлось сильно порезать, зато работает
          но иногда хромает 😞

          печеньку тому, кто выяснит, почему хромает 😄

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


            Прозреваю, что был специальный фикс супротив читорства.

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

              Некогда сейчас сильно тестировать, но побегала минут 6-10 - вроде бы, всё работает...

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

                JdM , не у меня чето тож тупит. Причем после того как она вроде всех красиво убила с танцами и бубнами. И мне вдруг вздумалось пройтись пешком, она за мной не идет. Стоит как приклеенная.

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

                  Побегала ещё минут 10-15, проблем не обнаружила. Florencia, предлагаю протестировать мой вариант (сработает - хорошо, нет - так хоть буду знать, что может не сработать ^^):

                  [code:1pm7j49k]elseif (MyState == ATTACK_ST) then
                  local ax, ay = GetV( V_POSITION, MyID )
                  local bx, by = GetV( V_POSITION, MyEnemy )
                  Move(MyID,DoCompare(ax, bx),DoCompare(ay, by))
                  OnATTACK_ST ()[/code:1pm7j49k]

                  Функция DoCompare отдельно:
                  [code:1pm7j49k]--------------------------------------------------
                  function DoCompare(a,b)

                  if a>b then
                  return (b-1)
                  else
                  return (b+1)
                  end
                  

                  end[/code:1pm7j49k]

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

                    Я в этом не бум бум. Могу тока тупо что то куда то вставить (скопировать). Это "Функция DoCompare отдельно:" где найти то?

                    elseif (MyState == ATTACK_ST) then
                    local ax, ay = GetV( V_POSITION, MyID )
                    local bx, by = GetV( V_POSITION, MyEnemy )
                    Move(MyID,DoCompare(ax, bx),DoCompare(ay, by))
                    OnATTACK_ST ()

                    Это я поняла в AI. Нашла вставила. А вот это куда втюхать?


                    function DoCompare(a,b)

                    if a>b then
                    return (b-1)
                    else
                    return (b+1)
                    end
                    end

                    И че прям в такой виде? с пунктирчиками?

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

                      Можно без пунктирчиков, а можно и с ними, они ни на что не влияют, просто для красоты и соответствия оригинальному виду MirAI ^^ А втюхать можно, например, так, в тот же ai.lua:

                      [code:32xdzpmt]--------------------------------------------------
                      function DoCompare(a,b)

                      if a>b then
                      return (b-1)
                      else
                      return (b+1)
                      end
                      

                      end


                      function AI(myid)
                      --------------------------------------------------[/code:32xdzpmt]

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

                        ясно , спасибки.

                        upd/ Проверила. Работает. 🙂 еще раз спасибо. Единственное что мне показалось, что при той танцующей атаке что у меня была раньше.

                        Было прописано вот что:
                        elseif (MyState == ATTACK_ST) then
                        if GetV(V_SP, MyID) >= 30 then
                        local zx, zy = GetV( V_POSITION, MyEnemy )
                        OnATTACK_ST()
                        Move(MyID,zx+1,zy)
                        Move(MyID,zx-1,zy)
                        OnATTACK_ST()
                        Move(MyID,zx,zy+1)
                        Move(MyID,zx,zy-1)
                        else
                        OnATTACK_ST()
                        end

                        Гомка как бы не на целую клетку отходила, а как бы на поклетки, а щас она прям на противоположную стороны от моба скачет. Но лучше так чем ваще никак. Так хоть какая то движуха.

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

                          использую старый вариант (до 'фикса') от Loneliness - работает нормально

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

                            Данс атака в AzziAi работает без изменений

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

                              У меня AzziAi из ировики почему-то вообще не заработал (вернее работает, но на настройки по мобам никак не реагирует никак).
                              Мой мод по МирАИ (где-то тут был прикреплён) работает без осложнений.

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

                                @"LisandreL":
                                У меня AzziAi из ировики почему-то вообще не заработал
                                насколько я помню, я качала вот этот
                                <!-- m --><a class="postlink" href="http://iro.ragnarokonline.com/forum/forums/thread-view.asp?tid=32534&start=1">http://iro.ragnarokonline.com/forum/for ... 34&start=1</a><!-- m -->

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

                                  Как в RampageAI дописать, что бы гомункул атаковал различных мобов в зависимости от его HP/SP, ну и так что бы это в дальнейшем просто настраивалось? Я так понял в Monster.lua можно дописать мобов нужных, и выставить на них то, как их атаковать. А вот где выставить хп/сп при котором бросаться на мобов стоит, я что-то не нашел.
                                  И вторая проблемма с рампейджем, гомункул слив все сп начинает кидать автокаст не 5-ого лвла, а того на который хватает, после тика сп. Как бы это поправить, что бы он все-таки дожидался когда будет 31 сп и кидал уже болт 5-ого лвла.

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

                                    не подскажите, чтоб traceAI начала писать лог какие-либо действия, кроме вызова ее в коде AI, нужно совершить?

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

                                      Давно не баловалась, но варианта два: или только вызов функции из кода или вызов + в клиенте вписать что-то типа /traceai. Точно не помню, поэтому не гарантирую. Но вроде бы так.

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

                                        @"Vierge":
                                        Как в RampageAI дописать, что бы гомункул атаковал различных мобов в зависимости от его HP/SP, ну и так что бы это в дальнейшем просто настраивалось? Я так понял в Monster.lua можно дописать мобов нужных, и выставить на них то, как их атаковать. А вот где выставить хп/сп при котором бросаться на мобов стоит, я что-то не нашел.

                                        И вторая проблемма с рампейджем, гомункул слив все сп начинает кидать автокаст не 5-ого лвла, а того на который хватает, после тика сп. Как бы это поправить, что бы он все-таки дожидался когда будет 31 сп и кидал уже болт 5-ого лвла.
                                        *на всех монстров одни и теже значения хп\сп действуют

                                        • config.lua MinAttackSkillLevel = 1 -дефолт, требуеться изменить на 5 чтобы гом всегда использовал 5лвл скила
                                        1 ответ Последний ответ Ответить Цитировать 0
                                        • sepulkaS Не в сети
                                          sepulka
                                          отредактировано

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

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

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

                                            Оп, интересная штука, заценим... как не лень будет в ро зайти :oops:
                                            Касательно возврата - где-то там был тайм-аут, сейчас сходу не нашла.
                                            Касательно данс-атаки. Где-то здесь это уже было, но все же.
                                            Файл /Conf/Custom.lua, раздел Customization Initialization внутри функции function InitCustom() пишем следующее:
                                            [code:3sbq1gfv]SavedAttack = Attack
                                            Attack = DancingAttack[/code:3sbq1gfv]
                                            Тот же файл, раздел Custom Functions:
                                            [code:3sbq1gfv]function DancingAttack(homunID, targetID)
                                            -- stop dancing if hp or sp lower then 0%, or 25%, or the homunculus is too far from its owner
                                            -- this schould fix the "dance out of range bug"
                                            -- Dancing Attack is also disabled for Monsters, which are to be kited
                                            local t = MDBTable(actor)
                                            if ((AABlocks(HomunID,OwnerID) <= 12) and (not t[11])) then
                                            -- determine the targets position
                                            local x, y = GetV(V_POSITION, targetID)
                                            SavedAttack(homunID, targetID)
                                            Move(homunID, x+1, y)
                                            Move(homunID, x-1, y)
                                            SavedAttack(homunID, targetID)
                                            Move(homunID, x, y+1)
                                            Move(homunID, x, y-1)
                                            else SavedAttack(homunID, targetID)
                                            end
                                            end
                                            [/code:3sbq1gfv]
                                            Что есть что - уже не помню, надо, опять же, рыться вспоминать, мне влом. Но вроде должно работать. Если будет ругаться - поиграться с условиями внутри if, я туда что-то дописывала.

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