GF Cruma tower 2 floor [dark_lord] setup

  • Автор темы Автор темы Hitcher
  • Дата начала Дата начала

Hitcher

Последний из атеистов
Местный
Сообщения
164
Розыгрыши
0
Репутация
1
Реакции
14
Баллы
880
Запрещено публиковать исходный код без BB-кода — CODE
Gf-GE (Myext)
Голову 108 раз сломал еще на этапе деокмпиляции-компиляции ai nasc.
В гфе испортили аи самых крутых мобов. к сожалению...

Кто-нибудь проконтролируйте мои действия, бикоз я уже не в состоянии что-то контролировать)

[dark_lord] = 1020753 - главарь дум
[dark_knight] = 1020754 - двое нападающих которые тупо стоят если отвести дума.
[dark_fellow] = 1021040 - двое недоделанных хилов которые тоже тупо стоят, и два раза хиляют если повезет.
Очень неосознанное поведение группы Npc, которое хотелось бы вернуть как это было в интере. Когда при отводе дума, вся пачка бежит за ним прицепом.

Подскажите плиз по пати мувингу npc, и по юз скилам от npc, для меня это ии как дремучий лес заколдованный.

поиск:
class dark_fellow : cruma_wizard_use_skill
пустой.

некст
class cruma_wizard_use_skill : wizard_use_skill {
}
пустой
опять не попал? да епт.

попытка номер 3: надеюсь оно?
class wizard_use_skill : wizard_behavior {
parameter:
int Skill01_ID = @s_npc_default;
int Skill01_Probablity = 10000;
int Skill01_Target = 0;
int Skill01_Type = 0;
int Skill01_AttackSplash = 0;
float Skill01_Desire = 1000000000.000000;
int Skill01_Check_Dist = 1;
int Skill01_Dist_Min = 300;
int Skill01_Dist_Max = 2000;
int Skill01_HPTarget = 0;
int Skill01_HighHP = 100;
int Skill01_LowHP = 0;
int Skill01_FString = 0;
int Skill01_FStringRate = 0;
int Skill01_MainAttack = 1;
int Skill02_ID = @s_npc_default;
int Skill02_Probablity = 10000;
int Skill02_Target = 0;
int Skill02_Type = 0;
int Skill02_AttackSplash = 0;
float Skill02_Desire = 1000000000.000000;
int Skill02_Check_Dist = 1;
int Skill02_Dist_Min = 0;
int Skill02_Dist_Max = 300;
int Skill02_HPTarget = 0;
int Skill02_HighHP = 100;
int Skill02_LowHP = 0;
int Skill02_FString = 0;
int Skill02_FStringRate = 0;
int Skill02_MainAttack = 1;
int Skill03_ID = @s_npc_default;
int Skill03_Probablity = 3333;
int Skill03_Target = 0;
int Skill03_Type = 0;
int Skill03_AttackSplash = 0;
float Skill03_Desire = 1000000000.000000;
int Skill03_Check_Dist = 0;
int Skill03_Dist_Min = 0;
int Skill03_Dist_Max = 2000;
int Skill03_HPTarget = 0;
int Skill03_HighHP = 100;
int Skill03_LowHP = 0;
int Skill03_FString = 0;
int Skill03_FStringRate = 0;
int Skill03_MainAttack = 0;
int Skill04_ID = @s_npc_default;
int Skill04_Probablity = 3333;
int Skill04_Target = 0;
int Skill04_Type = 0;
int Skill04_AttackSplash = 0;
float Skill04_Desire = 1000000000.000000;
int Skill04_Check_Dist = 0;
int Skill04_Dist_Min = 0;
int Skill04_Dist_Max = 2000;
int Skill04_HPTarget = 0;
int Skill04_HighHP = 100;
int Skill04_LowHP = 0;
int Skill04_FString = 0;
int Skill04_FStringRate = 0;
int Skill04_MainAttack = 0;
int Skill05_ID = @s_npc_default;
int Skill05_Probablity = 3333;
int Skill05_Target = 0;
int Skill05_Type = 0;
int Skill05_AttackSplash = 0;
float Skill05_Desire = 1000000000.000000;
int Skill05_Check_Dist = 0;
int Skill05_Dist_Min = 0;
int Skill05_Dist_Max = 2000;
int Skill05_HPTarget = 0;
int Skill05_HighHP = 100;
int Skill05_LowHP = 0;
int Skill05_FString = 0;
int Skill05_FStringRate = 0;
int Skill05_MainAttack = 0;
int Skill06_ID = @s_npc_default;
int Skill06_Probablity = 3333;
int Skill06_Target = 0;
int Skill06_Type = 0;
int Skill06_AttackSplash = 0;
float Skill06_Desire = 1000000000.000000;
int Skill06_Check_Dist = 0;
int Skill06_Dist_Min = 0;
int Skill06_Dist_Max = 2000;
int Skill06_HPTarget = 0;
int Skill06_HighHP = 100;
int Skill06_LowHP = 0;
int Skill06_FString = 0;
int Skill06_FStringRate = 0;
int Skill06_MainAttack = 0;

handler:
EventHandler CREATED()
{
super;
}



Может у кого есть сетап из gf-il как эти собаки должны работать? или покажите какие кнопки тут нажимать чтоб я нажал.
 

[MoveArounding]=0 в npcdata.txt у миньенов поставьте в единицу [MoveArounding]=1 и они снова будут бегать за лидером.
 
  • Мне нравится
Реакции: Nixy
Мовэраундинг имеет место быть, но этот параметр имеет, несколько, чуть слабее значение, и другой стиль поведения, нежели более строгий пати мувинг в ai nasc.

Есть наблюдение, что пачка может двигаться прям четким квадратом, с помощью взамодействия аи nasc. И даже без участия npcdat параметра мувэраундинг=0.
 
Нашел декомпил Gfil и там наследуются совершенно другие суперклассы.
Думал что так просто можно будет поменять наследование и все скомпилируется но не тут то было:
undefined super class[party_private_casting_heal_curse] at class [dark_fellow] definition

долго ломал голову, решение подсказал ИИ:
обязательно соблюдение последовательности объявлений классов:
Наследование подкласса должно быть после объявления суперкласса:

Код:
//1.Сначала объявление суперкласса:

set_compiler_opt base_event_type(@NTYPE_NPC_EVENT)

class party_private_casting_heal_curse : party_private_casting_heal {
parameter:
    int    DeBuff = @s_npc_bleed1;

handler:
    EventHandler ATTACKED(attacker,damege,i0)
    {
        if( attacker.is_pc != 0 || IsInCategory(@summon_npc_group, attacker.class_id) )
        {
            if( IsNullCreature(myself.top_desire_target) == 0 )
            {
                if( Rand(100) < 33 && GetAbnormalLevel(attacker, Skill_GetAbnormalType(DeBuff)) <= 0 && myself.top_desire_target == attacker )
                {
                    if( Skill_GetConsumeMP(DeBuff) < myself.sm.mp && Skill_GetConsumeHP(DeBuff) < myself.sm.hp && Skill_InReuseDelay(DeBuff) == 0 )
                    {
                        AddUseSkillDesire(attacker, DeBuff, @ST_ATTACK, @AMT_MOVE_TO_TARGET, 1000000);
                    }
                }
            }
        }
        super;
    }

    EventHandler PARTY_ATTACKED(attacker,private,damege,i0)
    {
        if( attacker.is_pc != 0 || IsInCategory(@summon_npc_group, attacker.class_id) )
        {
            if( IsNullCreature(myself.top_desire_target) == 0 )
            {
                if( GetAbnormalLevel(attacker, Skill_GetAbnormalType(DeBuff)) <= 0 && myself.top_desire_target == attacker && Rand(100) < 33 )
                {
                    if( Skill_GetConsumeMP(DeBuff) < myself.sm.mp && Skill_GetConsumeHP(DeBuff) < myself.sm.hp && Skill_InReuseDelay(DeBuff) == 0 )
                    {
                        AddUseSkillDesire(attacker, DeBuff, @ST_ATTACK, @AMT_MOVE_TO_TARGET, 1000000);
                    }
                }
            }
        }
        super;
    }
}


//2.затем (обязательно ниже по коду) обьявление подкласса. 
set_compiler_opt base_event_type(@NTYPE_NPC_EVENT)

class dark_fellow : party_private_casting_heal_curse {
}

//если будет наоборот, выйдет ошибка компиляции undefined super class[party_private_casting_heal_curse] at class [dark_fellow] definition

[code]
 
Назад
Сверху