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

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

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

      спасибо 🙂

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

        Aiko Star, что-то все равно не нашла нужной настройки, для убирания зависания. Максимально похожее было связано с настройкой беганья хомяка вокруг хозяина, но это у меня выключено.

        P.S. думаю стоит перенести эти посты в тему про рампагу.

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

          ковырялась в мирке, пцыталась заставить хомяка-ванильку кидать болты издалека, а не когда уже прибежал вплотную. Локализовала проблему до использования CheckForAutoAtk() в OnCHASE_ST()
          т.е.
          меняю
          [code:3cy6pig3]if CanDoAtkSkillsNow() then[/code:3cy6pig3]
          на
          [code:3cy6pig3]if true then[/code:3cy6pig3]
          и все тормоза исчезают, хомяк радостно кидает болты издалека.
          Полезла внурть CheckForAutoAtk()и обнаружила что тормоза прекрасно исчезают при удалении

          [code:3cy6pig3] elseif HTact.Skill == WITH_slow_power then
          if (LONG_RANGE_SHOOTER ~= true) and (CurrTime - AtkStartTime < DELAY_SLOW_POWER) then
          result = false
          end[/code:3cy6pig3]

          вот подскажите что тут может вызывать такую задержку в использовании скилла?

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

            sepulka, подозреваю что в Config.lua прописано
            [code:2jou29hv]LONG_RANGE_SHOOTER=false[/code:2jou29hv]

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

              ну да.
              но задержка должна появляться только если в тактиках для монстра указано, что атаковать со slow_power а оно на всех тормозит, специально снесла все тктики и поставила поведение по умолчанию атаковать с макимальной силой.

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

                смотрим тот же Config.lua
                [code:8js1xy2n]DEFAULT_BEHA = BEHA_attack -- __ values assumed for any monster not listed below
                DEFAULT_WITH = WITH_slow_power -- /[/code:8js1xy2n]
                т.е. если у монстра нет тактик, идёт как раз задержка slow_power

                P.S.

                @"sepulka":
                Полезла внурть [s:8js1xy2n]CheckForAutoAtk()[/s:8js1xy2n]CanDoAtkSkillsNow() и обнаружила что тормоза прекрасно исчезают при удалении

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

                  Целиком приведите текст функции до и после.

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

                    JdM,
                    у меня
                    [code:1ilft3wp]DEFAULT_WITH=WITH_full_power[/code:1ilft3wp]
                    спецом проставлено

                    да-да, не то скопировала,простите 🙂

                    LisandreL,
                    [code:1ilft3wp]function CanDoAtkSkillsNow()
                    -- is it the right time for an aggressive skill?

                    local result = true
                    local CurrTime = GetTick()
                    --local TimeOutElapsed = CurrTime - AtkStartTime > SKILL_TIME_OUT
                    --Log(string.format("AtkSkillDoneCount = %d, CurrTime - AtkStartTime = %d", AtkSkillDoneCount, CurrTime - AtkStartTime))
                    if (HTact.Skill == WITH_no_skill) then
                    	result = false
                    elseif HTact.Skill == WITH_one_skill then
                    	-- Log(string.format("AtkSkillDoneCount = %d, CurrTime - AtkStartTime = %d", AtkSkillDoneCount, CurrTime - AtkStartTime))
                    	--if (AtkSkillDoneCount > 1) or  TimeOutElapsed then
                    	if (AtkSkillDoneCount > 1) then
                    		result = false
                    	end
                    elseif HTact.Skill == WITH_two_skills then
                    	if (AtkSkillDoneCount > 2) then
                    		result = false
                    	end
                    --[[elseif HTact.Skill == WITH_max_skills then
                    	if TimeOutElapsed then
                    		result = false
                    	end--]]
                    elseif HTact.Skill == WITH_slow_power then
                    	if (LONG_RANGE_SHOOTER ~= true) and (CurrTime - AtkStartTime < DELAY_SLOW_POWER) then
                    		result = false
                    	end
                    end
                    return result
                    

                    end[/code:1ilft3wp]

                    вызов самой функции в function OnCHASE_ST()
                    [code:1ilft3wp]
                    -- Homunculus long range attack
                    local CurrTime = GetTick()
                    if LRASID ~=0 then
                    if (AtkStartTime == 0) then
                    AtkStartTime = CurrTime
                    end
                    if CanDoAtkSkillsNow() then
                    if DoSkill(LRASID, MyEnemy) then -- ##### AGGRESSIVE SKILL #####
                    AtkSkillDoneCount = AtkSkillDoneCount + 1
                    LastLRAtkTime = CurrTime
                    LastLRAtkID = MyEnemy
                    end
                    end
                    end
                    [/code:1ilft3wp]

                    это все куски из стандартного мираи

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

                      По идее, с проставленным with_full_power должен кидать болты без задержек. Попробуй вписать в function CanDoAtkSkillsNow() отдельную проверку на тактику с full_power (там должен быть result = true). Обезьянья работа, но мало ли...

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

                        @"sepulka":
                        у меня

                        [code:3refsas7]DEFAULT_WITH=WITH_full_power[/code:3refsas7]
                        спецом проставлено[code:3refsas7]function GetFullTact(ID)
                        -- get all tact. data for this monster


                        T = {}
                        if Tact[ID] == nil then -- Return default Tactic for unlisted monsters
                        Log(string.format("No tact data for monster type-ID %d", ID))
                        T.Behav = DEFAULT_BEHA
                        T.Skill = DEFAULT_WITH
                        T.Level = -1
                        T.Alche = 0
                        else
                        ...[/code:3refsas7]T.Level = -1 - вот такой подкол и хоть обставтесь вы WITH_full_power уровень атакующего скилла у вас -1, а значит атаки не будет. 🙂

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

                          Aiko Star, пробовала, всячески оптимизировать эту функцию и как ты предлагаешь - пофиг

                          @"LisandreL":
                          T.Level = -1 - вот такой подкол и хоть обставтесь вы WITH_full_power уровень атакующего скилла у вас -1, а значит атаки не будет. 🙂
                          а причем здесь это? В этой же функции нигде не проверяется Level, только Skill из тактик. Я ж что говорю - если оставь функцию без изменения хомяк в лучшем случае кидает болт клетки за две три до моба или вообще когда его начал бить. Если же удалить вот этот кусочек кода болты начинают кидаться с намного большего расстояния (кажется как только попадает в радиус действия болта) и больше ничего в аи не меняется
                          [code:4xagwois]
                          elseif HTact.Skill == WITH_slow_power then
                          if (LONG_RANGE_SHOOTER ~= true) and (CurrTime - AtkStartTime < DELAY_SLOW_POWER) then
                          result = false
                          [/code:4xagwois]

                          вот что такого особенно в данном куске кода, что он так сильно влияет? Я вот в упор не вижу, тупая проверка на использовать определенную тактику или нет. По идее должна влиять только если данная тактика для моба включена, а тормозит всех. Специально все тактики сносила из настроек, все-равно тормозят.

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

                            Видимо у вас всё же HTact.Skill == WITH_slow_power. Смотрите где оно заполняется.
                            Можете потестить, заменив всю функцию на:
                            [code:s5giufv9]function CanDoAtkSkillsNow()
                            local result = true
                            if HTact.Skill == WITH_slow_power then
                            result = false
                            end
                            return result
                            end[/code:s5giufv9]

                            это все куски из стандартного мираи
                            У меня в 1.2.2 ничего закоментированного в тексте нету. Это так и было или вы сами добавляли?

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

                              у меня с ировики, вариант мираи с аи для наемников.
                              Сейчас попробую еще раз поискать, может где-то и пропустила.

                              Upd. Нет ничего не нашла. Попробую дома скачать чистый мираи без наемников и его покорячить вдруг что другое там. а заодно проверю изменится ли что-то при изменении DELAY_SLOW_POWER, если да, то я точно что-то не нахожу)

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

                                это оказался глюк этого самого мираи с наемниками, в стандартном такой проблемы нет. Хотя я так и не нашла где кроется проблема ну и фиг с ним:)

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

                                  у меня, кстати, закомментированные куски есть. Хз какая версия, давно качала. Загадка :unknown:

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

                                    @"Aiko-Star":
                                    у меня, кстати, закомментированные куски есть. Хз какая версия, давно качала. Загадка :unknown:У меня они тоже есть, просто не закомментированы.
                                    Версия обычно во второй строчке AI.lua указанна.

                                    1 ответ Последний ответ Ответить Цитировать 0
                                    • ЗайкаБоеваяУшастаяЗ Не в сети
                                      ЗайкаБоеваяУшастая
                                      отредактировано

                                      вопросик вот по Лифкам.... только создала, покормила, пошла на поригов, а она бить не хочет сама=( альт+t тыкала.. много раз... ничего не происходит... если направляю её бить-бьёт, сама начинаю бить, подтягивается и добивает.. а сама не хочет...
                                      Подскажите как с этим быть??

                                      З.Ы.
                                      полистала странички в темке.. пыталась что-то найти.. не нашла=(((

                                      1 ответ Последний ответ Ответить Цитировать 0
                                      • ЗайкаБоеваяУшастаяЗ Не в сети
                                        ЗайкаБоеваяУшастая
                                        отредактировано

                                        вопросик вот по Лифкам.... только создала, покормила, пошла на поригов, а она бить не хочет сама=( альт+t тыкала.. много раз... ничего не происходит... если направляю её бить-бьёт, сама начинаю бить, подтягивается и добивает.. а сама не хочет...
                                        Подскажите как с этим быть??

                                        З.Ы.
                                        полистала странички в темке.. пыталась что-то найти.. не нашла=(((

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

                                          Устанавливаем MirAI (ссылочки в гайдах), настраиваем, пробуем еще раз 🙂

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

                                            Устанавливаем MirAI (ссылочки в гайдах), настраиваем, пробуем еще раз 🙂

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