FastAbilityEvents

Добавлен , не публикуется
library FastAbilityEvents uses Ascii
{     
    public hashtable EventHashtable;
    #define private validPermits = 5;
    
    //Инит абилок
    callback onInit()
    {
        int abilityId = 0;
        int permitsCount = 0;
        int initCount = 0;
        bool flag = true;
        EventHashtable = InitHashtable();
        debug("ИНИЦИАЛИЗАЦИЯ СПОСОБНОСТЕЙ НАЧАТА!\n");
        for(int i = 0; i < 34 && flag; i++)
        {
            for(int j = 0; j < 34 && flag; j++)
            {
                for(int k = 0; k < 34 && flag; k++)
                {
                    string abilStrId = "A"+ Int2Char(i) + Int2Char(j) + Int2Char(k);
                    abilityId = S2A(abilStrId);
                    if (GetObjectName(abilityId) != "Default string")
                    {
                        if (permitsCount > 0)
                        {
                            permitsCount = 0;
                        }
                        SaveStr(EventHashtable,0,abilityId,abilStrId);
                        initCount++;
                    }
                    else
                    {
                        permitsCount++;
                        if (permitsCount > validPermits)
                        {
                            flag = false;
                            debug("ИНИЦИАЛИЗАЦИЯ СПОСОБНОСТЕЙ ЗАВЕРШЕНА!\nИНЦИАЛИЗИРОВАНО: " + I2S(initCount-permitsCount) + " СПОСОБНОСТЕЙ!");
                        }
                    }
                }
            }
        }
    }
    
    private void SpellEffectAction()
    {
        ExecuteFunc("funcSpellEffect"+LoadStr(EventHashtable,0,GetSpellAbilityId()))
    }
    
    private void SpellCastAction()
    {
        ExecuteFunc("funcSpellCast"+LoadStr(EventHashtable,0,GetSpellAbilityId()))
    }
    
    private void SpellChannelAction()
    {
        ExecuteFunc("funcSpellChannel"+LoadStr(EventHashtable,0,GetSpellAbilityId()))
    }
    
    private void SpellEndCastAction()
    {
        ExecuteFunc("funcSpellEndCast"+LoadStr(EventHashtable,0,GetSpellAbilityId()))
    }
    
    private void SpellFinishAction()
    {
        ExecuteFunc("funcSpellFinish"+LoadStr(EventHashtable,0,GetSpellAbilityId()))
    }
    
    callback onInit()
    {
        trigger spellEffectTrigger = CreateTrigger();
        trigger spellCastTrigger = CreateTrigger();
        trigger spellChannelTrigger = CreateTrigger();
        trigger spellEndCastTrigger = CreateTrigger();
        trigger spellFinishTrigger = CreateTrigger();
        for(int i = 0; i < 15; i++)
        {
            TriggerRegisterPlayerUnitEvent(spellEffectTrigger, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null);
            TriggerRegisterPlayerUnitEvent(spellCastTrigger, Player(i), EVENT_PLAYER_UNIT_SPELL_CAST, null);
            TriggerRegisterPlayerUnitEvent(spellChannelTrigger, Player(i), EVENT_PLAYER_UNIT_SPELL_CHANNEL, null);
            TriggerRegisterPlayerUnitEvent(spellEndCastTrigger, Player(i), EVENT_PLAYER_UNIT_SPELL_ENDCAST, null);
            TriggerRegisterPlayerUnitEvent(spellFinishTrigger, Player(i), EVENT_PLAYER_UNIT_SPELL_FINISH, null);
        }
        TriggerAddAction(spellEffectTrigger, function SpellEffectAction);
        TriggerAddAction(spellCastTrigger, function SpellCastAction);
        TriggerAddAction(spellChannelTrigger, function SpellChannelAction);
        TriggerAddAction(spellEndCastTrigger, function SpellEndCastAction);
        TriggerAddAction(spellFinishTrigger, function SpellFinishAction);
        flush locals;
    }
    
    #define OnSpellEffect(spellId, jassCode) = 
    {
        void funcSpellEffect##spellId##()
        {
            jassCode
        }
    }
    
    #define OnSpellCast(spellId, jassCode) = 
    {
        void funcSpellCast##spellId##()
        {
            jassCode
        }
    }
    
    #define OnSpellChannel(spellId, jassCode) = 
    {
        void funcSpellChannel##spellId##()
        {
            jassCode
        }
    }
    
    #define OnSpellEndCast(spellId, jassCode) = 
    {
        void funcSpellEndCast##spellId##()
        {
            jassCode
        }
    }
    
    #define OnSpellFinish(spellId, jassCode) = 
    {
        void funcSpellFinish##spellId##()
        {
            jassCode
        }
    }
    


}
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
1
24
12 лет назад
1
Сама фраза абсурдна - опубликовать значит выставить в свет, на обозрение...
Сбоку "О ресурсе" написано "Не публикуется" ._.
Под рукой я обычно храню подобные вещи в блокнотиках в соответствующих папках у себя на компе\флешке. А выложить на сторонний сайт и чтоб под рукой было? не дело
Я где то спрашивал вашего мнения на тему как нужно хранить код?
1
15
12 лет назад
1
Faion
Я где то спрашивал вашего мнения на тему как нужно хранить код?
Не нуждаюсь в подобных приглашениях
1
29
12 лет назад
1
Годно, только мб как-то закешировать строки для экзекутов?
1
24
12 лет назад
1
Doc:
Годно, только мб как-то закешировать строки для экзекутов?
Ммм, нафига? я уже впрочем то над 2-й версией думаю. Тут есть свои минусы.
0
29
11 лет назад
0
Всегда так делал, правда это выглядело похуче, чем у тебя и только на вжассе с макросами)
1
24
11 лет назад
1
Msey, да тут тоже не торт, можно сделать лучше.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.