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
        }
    }
    


}
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
5
12 лет назад
0
Хоть описание какое-нибудь написали - а так - что за хрень!
1
24
12 лет назад
1
Я публиковал для самого себя, что бы сорц был под рукой всегда. Мне комменты для своего же кода не нужны. Кому нужно, тот разберется.
4
15
12 лет назад
Отредактирован God_of_light
4
Faion
Я публиковал для самого себя
Сама фраза абсурдна - опубликовать значит выставить в свет, на обозрение...
что бы сорц был под рукой всегда
Под рукой я обычно храню подобные вещи в блокнотиках в соответствующих папках у себя на компе\флешке. А выложить на сторонний сайт и чтоб под рукой было? не дело
Мне комменты для своего же кода не нужны
Если не нужны, создал бы ресурс как простую страницу, которую нельзя было бы коментить

Уже видел кучу твоих ресурсов типа: для себя. В чем смысл выкладывать части кода какой-то карты как уже сказал Darklight, без описания, пояснения... не вижу смысла
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, да тут тоже не торт, можно сделать лучше.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.