Adic Helper имеет ограничение строк кода? А то у меня при достижении определенного кол-ва триггеров он зависает и приходится сокращать кол-во и наполнение триггеров.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
33
1 год назад
Отредактирован PUVer
0
Просто на пол пути зависает в финальной фазе компиляции и карта ломается.
2
29
1 год назад
2
ИМХО лучше избавиться от cJass и отключить его полностью.
0
33
1 год назад
0
nazarpunk, на нем сделана очень важная система. А переделывать её скорей всего никто не будет. Т.к. у хейта уже другой проект и он на рефорджед давно перешёл.
2
29
1 год назад
2
на нем сделана очень важная система. А переделывать её скорей всего никто не будет.
Можно вынести её в отдельную карту и достать из неё скомпилированный JASS.
0
33
1 год назад
0
nazarpunk, а если мне надо будет добавить новую способность? В обычном джассе это будет жутко неудобная фигня и непонятно как он скомпилируется....
0
29
1 год назад
0
nazarpunk, а если мне надо будет добавить новую способность? В обычном джассе это будет жутко неудобная фигня и непонятно как он скомпилируется....
Ну тут уже сложно сказать, не видя кода. Можно код системы приложить к вопросу?
0
33
1 год назад
Отредактирован PUVer
0
Это только один триггер. А там их порядка 15.
смотреть
library GUI initializer Init requires MISC, Main 

define {
    HUMAN_UI = 1
    ORC_UI = 2
    ELF_UI = 3
    UNDEAD_UI = 4
    
    GUI_X(x) = (Left_X + x * 64) + 32.
    GUI_Y(y) = (Left_Y + y * 64) + 32.
    
    private BASE_ID = 'B01S'
    private BACKGROUND_HUMAN_ID = 'B02B'
    private BACKGROUND_ELF_ID = 'B015'
    private BACKGROUND_ORC_ID = 'B016'
    private BACKGROUND_UNDEAD_ID = 'B017'
    private BACKGROUND_BLACK_ID = 'B01T'
    
    private BORDER_ELF_DOWN = 'B00E'
    private BORDER_ELF_UP = 'B00H'
    private BORDER_ELF_LEFT = 'B00F'
    private BORDER_ELF_RIGHT = 'B00G'
    private BORDER_ELF_DOWN_LEFT = 'B00M'
    private BORDER_ELF_DOWN_RIGHT = 'B00N'
    private BORDER_ELF_UP_LEFT = 'B00O'
    private BORDER_ELF_UP_RIGHT = 'B00P'
    
    private BORDER_HUMAN_DOWN = 'B02C'
    private BORDER_HUMAN_UP = 'B02H'
    private BORDER_HUMAN_LEFT = 'B02F'
    private BORDER_HUMAN_RIGHT = 'B02G'
    private BORDER_HUMAN_DOWN_LEFT = 'B02D'
    private BORDER_HUMAN_DOWN_RIGHT = 'B02E'
    private BORDER_HUMAN_UP_LEFT = 'B02I'
    private BORDER_HUMAN_UP_RIGHT = 'B02J'
    
    private BORDER_ORC_DOWN = 'B00A'
    private BORDER_ORC_UP = 'B00D'
    private BORDER_ORC_LEFT = 'B00B'
    private BORDER_ORC_RIGHT = 'B00C'
    private BORDER_ORC_DOWN_LEFT = 'B00Q'
    private BORDER_ORC_DOWN_RIGHT = 'B00R'
    private BORDER_ORC_UP_LEFT = 'B00S'
    private BORDER_ORC_UP_RIGHT = 'B00T'
    
    private BORDER_UNDEAD_DOWN = 'B006'
    private BORDER_UNDEAD_UP = 'B009'
    private BORDER_UNDEAD_LEFT = 'B007'
    private BORDER_UNDEAD_RIGHT = 'B008'
    private BORDER_UNDEAD_DOWN_LEFT = 'B00U'
    private BORDER_UNDEAD_DOWN_RIGHT = 'B00V'
    private BORDER_UNDEAD_UP_LEFT = 'B00X'
    private BORDER_UNDEAD_UP_RIGHT = 'B00W'
}


// globals
    public rect AreaRect
    private fogmodifier Visibility
    private destructable BASE, BACKGROUND
    private destructable UP_RIGHT, UP_LEFT, DOWN_RIGHT, DOWN_LEFT
    private destructable array UP[22], DOWN[22], LEFT[10], RIGHT[10], MiscDestructables[300], MiscBackgrounds[125]
    private texttag array MiscText[100]
    private int DestrCount = 0, TextsCount = 0, BackgroundsCount = 0
    real Left_X, Left_Y
    public sound ClickSound, ActivateSound
    public bool IsShowed = false
    private timer CameraLockTimer = CT
    real BASE_X = -2368., BASE_Y = 2368.
    
    
    public void ResetCamera(){
        PT(CameraLockTimer)
    }
    
    private void CameraProcess(){
        SetCameraField(CAMERA_FIELD_TARGET_DISTANCE, 1645., 0.)
        SetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK, 270., 0.)
        SetCameraField(CAMERA_FIELD_ROTATION, 90., 0.)
        PanCameraToTimed(BASE_X - 8., BASE_Y + 15., 0.)
    }
    
    public void ClearText(){
        while(TextsCount != 0){ DestroyTextTag(MiscText[TextsCount]); TextsCount-- }
    }
    
    public void ClearWindow(){
        while(DestrCount != 0){ RemoveDestructable(MiscDestructables[DestrCount]); DestrCount-- }
        while(TextsCount != 0){ DestroyTextTag(MiscText[TextsCount]); TextsCount-- }
        while(BackgroundsCount != 0){ RemoveDestructable(MiscBackgrounds[BackgroundsCount]); BackgroundsCount-- }
    }
    
    public void DestroyInterface(){
        int c = 22
            IsShowed = false
            RemoveDestructable(BASE)
            RemoveDestructable(BACKGROUND)
            FogModifierStop(Visibility)
            PT(CameraLockTimer)
            // UP
                while(c != 0) { RemoveDestructable(UP[c]); c-- }
            // DOWN
            c = 22
                while(c != 0) { RemoveDestructable(DOWN[c]); c-- }
            // RIGHT
            c = 10
                while(c != 0) { RemoveDestructable(RIGHT[c]); c-- }
            // LEFT
            c = 10
                while(c != 0) { RemoveDestructable(LEFT[c]); c-- }
            RemoveDestructable(UP_LEFT)
            RemoveDestructable(UP_RIGHT)
            RemoveDestructable(DOWN_LEFT)
            RemoveDestructable(DOWN_RIGHT)
                while(DestrCount != 0){ RemoveDestructable(MiscDestructables[DestrCount]); DestrCount-- }
                while(TextsCount != 0){ DestroyTextTag(MiscText[TextsCount]); TextsCount-- }
                while(BackgroundsCount != 0){ RemoveDestructable(MiscBackgrounds[BackgroundsCount]); BackgroundsCount-- }
    }
    
    public void TurnOnCamera(){
        TimerStart(CameraLockTimer, 0.01, true, function CameraProcess)
    }
    
    public void AddTextEx(real x, real y, string s, real size){
        TextsCount++
        MiscText[TextsCount] = CreateTextTag()
        SetTextTagText(MiscText[TextsCount], s, (size * 0.023) / 10.)
        SetTextTagPos(MiscText[TextsCount], x, y, 5.)
            //SetTextTagColor(MiscText[TextsCount], PercentToInt(1, 255), PercentToInt(g, 255), PercentToInt(b,255), 0)
    }
    
    public void AddText(int cell_x, int cell_y, string s, real r, real g, real b, real size){
        real true_x = (Left_X + cell_x * 64) + 32., true_y = (Left_Y + cell_y * 64) + 32.
            TextsCount++
            MiscText[TextsCount] = CreateTextTag()
            SetTextTagText(MiscText[TextsCount], s, (size * 0.023) / 10.)
            SetTextTagPos(MiscText[TextsCount], true_x, true_y, 5.)
            SetTextTagColor(MiscText[TextsCount], PercentToInt(r, 255), PercentToInt(g, 255), PercentToInt(b,255), 0)
    }
    
    public void AddBackground(int cell_x, int cell_y){
        real true_x = (Left_X + cell_x * 64) + 32., true_y = (Left_Y + cell_y * 64) + 32.
            BackgroundsCount++
            MiscBackgrounds[BackgroundsCount] = CreateDestructable(BACKGROUND_BLACK_ID, true_x, true_y, 0., 1.1, 0)
    }
    
    public void CreatePanel(int cell_x, int cell_y, int lenght, int width, int variation){
        int down_right, down_left, up_right, up_left, up, down, left, right
        //real start_x = BASE_X + Rx(715.547, -153.435), start_y = BASE_Y + Ry(715.547, -153.435)
        real true_x = (Left_X + cell_x * 64) + 32., true_y = (Left_Y + cell_y * 64) + 32.
        int l, w, c_x, c_y
            if (lenght == 0 or width == 0) { return }
        
                if variation == 1 {
                    down_right = BORDER_HUMAN_DOWN_RIGHT
                    down_left = BORDER_HUMAN_DOWN_LEFT
                    up_right = BORDER_HUMAN_UP_RIGHT
                    up_left = BORDER_HUMAN_UP_LEFT
                    up = BORDER_HUMAN_UP
                    down = BORDER_HUMAN_DOWN
                    left = BORDER_HUMAN_LEFT
                    right = BORDER_HUMAN_RIGHT
                }
                elseif variation == 2 {
                    down_right = BORDER_ORC_DOWN_RIGHT
                    down_left = BORDER_ORC_DOWN_LEFT
                    up_right = BORDER_ORC_UP_RIGHT
                    up_left = BORDER_ORC_UP_LEFT
                    up = BORDER_ORC_UP
                    down = BORDER_ORC_DOWN
                    left = BORDER_ORC_LEFT
                    right = BORDER_ORC_RIGHT
                }
                elseif variation == 3 {
                    down_right = BORDER_ELF_DOWN_RIGHT
                    down_left = BORDER_ELF_DOWN_LEFT
                    up_right = BORDER_ELF_UP_RIGHT
                    up_left = BORDER_ELF_UP_LEFT
                    up = BORDER_ELF_UP
                    down = BORDER_ELF_DOWN
                    left = BORDER_ELF_LEFT
                    right = BORDER_ELF_RIGHT
                }
                elseif variation == 4 {
                    down_right = BORDER_UNDEAD_DOWN_RIGHT
                    down_left = BORDER_UNDEAD_DOWN_LEFT
                    up_right = BORDER_UNDEAD_UP_RIGHT
                    up_left = BORDER_UNDEAD_UP_LEFT
                    up = BORDER_UNDEAD_UP
                    down = BORDER_UNDEAD_DOWN
                    left = BORDER_UNDEAD_LEFT
                    right = BORDER_UNDEAD_RIGHT
                }
                
            if (lenght == 1 and width == 1){
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(down_left, true_x, true_y, 0., 0.65, 0)
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(down_right, true_x, true_y, 0., 0.65, 0)
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(up_left, true_x, true_y, 0., 0.65, 0)
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(up_right, true_x, true_y, 0., 0.65, 0)
                
            }
            elseif (lenght == 1 and width > 1){
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(up_left, true_x, true_y, 0., 0.65, 0)
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(up_right, true_x, true_y, 0., 0.65, 0)
                    while(width > 1){
                        cell_y--
                        true_y = (Left_Y + cell_y * 64) + 32.
                        DestrCount++
                        MiscDestructables[DestrCount] = CreateDestructable(left, true_x, true_y, 0., 0.65, 0)
                        DestrCount++
                        MiscDestructables[DestrCount] = CreateDestructable(right, true_x, true_y, 0., 0.65, 0)
                        width--
                    }
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(down_left, true_x, true_y, 0., 0.65, 0)
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(down_right, true_x, true_y, 0., 0.65, 0)
            }
            elseif (lenght > 1 and width == 1){
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(up_left, true_x, true_y, 0., 0.65, 0)
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(down_left, true_x, true_y, 0., 0.65, 0)
                    while(lenght > 1){
                        cell_x++
                        true_x = (Left_X + cell_x * 64) + 32.   
                        DestrCount++
                        MiscDestructables[DestrCount] = CreateDestructable(up, true_x, true_y, 0., 0.65, 0)
                        DestrCount++
                        MiscDestructables[DestrCount] = CreateDestructable(down, true_x, true_y, 0., 0.65, 0)
                        lenght--
                    }
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(up_right, true_x, true_y, 0., 0.65, 0)
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(down_right, true_x, true_y, 0., 0.65, 0)
            }
            elseif (lenght > 1 and width > 1){
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(up_left, true_x, true_y, 0., 0.65, 0)
                // + velocity in right
                l = lenght; c_x = cell_x
                    while(l > 1){
                        c_x++
                        true_x = (Left_X + c_x * 64) + 32.
                        DestrCount++
                        MiscDestructables[DestrCount] = CreateDestructable(up, true_x, true_y, 0., 0.65, 0)
                        l--
                    }
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(up_right, true_x, true_y, 0., 0.65, 0)
                //========================================================================
                // + velocity in down
                w = width; c_y = cell_y
                    while(w > 1){
                        c_y--
                        true_y = (Left_Y + c_y * 64) + 32.
                        DestrCount++
                        MiscDestructables[DestrCount] = CreateDestructable(right, true_x, true_y, 0., 0.65, 0)
                        w--
                    }
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(down_right, true_x, true_y, 0., 0.65, 0)
                //========================================================================
                // - velocity in down
                true_x = (Left_X + cell_x * 64) + 32.
                w = width; c_y = cell_y
                    while(w > 1){
                        c_y--
                        true_y = (Left_Y + c_y * 64) + 32.
                        DestrCount++
                        MiscDestructables[DestrCount] = CreateDestructable(left, true_x, true_y, 0., 0.65, 0)
                        w--
                    }
                DestrCount++
                MiscDestructables[DestrCount] = CreateDestructable(down_left, true_x, true_y, 0., 0.65, 0)
                //========================================================================
                // - velocity in right
                true_x = (Left_X + cell_x * 64) + 32.
                l = lenght; c_x = cell_x
                    while(l > 1){
                        c_x++
                        true_x = (Left_X + c_x * 64) + 32.
                        DestrCount++
                        MiscDestructables[DestrCount] = CreateDestructable(down, true_x, true_y, 0., 0.65, 0)
                        l--
                    }
            }
            //CreateDestructable('B000', (start_x + cell_x * 64) + 32.,(start_y + cell_y * 64) + 32., 0., 1.1, 0)
    }
    
    public void BuildInterface(int variation){
        int background, down_right, down_left, up_right, up_left, up, down, left, right
        int c = 22
        real x, y, a, dist = 64.
                if IsShowed { return }
                else { IsShowed = true }
                
            SetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK, 270., 0.)
            SetCameraField(CAMERA_FIELD_TARGET_DISTANCE, 1645., 0.)
            TimerStart(CameraLockTimer, 0.01, true, function CameraProcess)
                if variation == 1 {
                    background = BACKGROUND_HUMAN_ID
                    down_right = BORDER_HUMAN_DOWN_RIGHT
                    down_left = BORDER_HUMAN_DOWN_LEFT
                    up_right = BORDER_HUMAN_UP_RIGHT
                    up_left = BORDER_HUMAN_UP_LEFT
                    up = BORDER_HUMAN_UP
                    down = BORDER_HUMAN_DOWN
                    left = BORDER_HUMAN_LEFT
                    right = BORDER_HUMAN_RIGHT
                }
                elseif variation == 2 {
                    background = BACKGROUND_ORC_ID
                    down_right = BORDER_ORC_DOWN_RIGHT
                    down_left = BORDER_ORC_DOWN_LEFT
                    up_right = BORDER_ORC_UP_RIGHT
                    up_left = BORDER_ORC_UP_LEFT
                    up = BORDER_ORC_UP
                    down = BORDER_ORC_DOWN
                    left = BORDER_ORC_LEFT
                    right = BORDER_ORC_RIGHT
                }
                elseif variation == 3 {
                    background = BACKGROUND_ELF_ID
                    down_right = BORDER_ELF_DOWN_RIGHT
                    down_left = BORDER_ELF_DOWN_LEFT
                    up_right = BORDER_ELF_UP_RIGHT
                    up_left = BORDER_ELF_UP_LEFT
                    up = BORDER_ELF_UP
                    down = BORDER_ELF_DOWN
                    left = BORDER_ELF_LEFT
                    right = BORDER_ELF_RIGHT
                }
                elseif variation == 4 {
                    background = BACKGROUND_UNDEAD_ID
                    down_right = BORDER_UNDEAD_DOWN_RIGHT
                    down_left = BORDER_UNDEAD_DOWN_LEFT
                    up_right = BORDER_UNDEAD_UP_RIGHT
                    up_left = BORDER_UNDEAD_UP_LEFT
                    up = BORDER_UNDEAD_UP
                    down = BORDER_UNDEAD_DOWN
                    left = BORDER_UNDEAD_LEFT
                    right = BORDER_UNDEAD_RIGHT
                }
            BASE = CreateDestructable(BASE_ID, BASE_X, BASE_Y, 90., 6.5, 0)
            BACKGROUND = CreateDestructable(background, BASE_X + 32., BASE_Y, 0., 2., 0)
            FogModifierStart(Visibility)
            // UP
            // x = BASE_X + Rx(746.374, 149.036); y = BASE_Y + Ry(746.374, 149.036)
            x = BASE_X + Rx(801.921, 151.390); y = BASE_Y + Ry(801.921, 151.390)
                while(c != 0) {
                    UP[c] = CreateDestructable(up, x + Rx(dist, 0.), y + Ry(dist, 0.), 0., 0.65, 0)
                    dist += 64.
                    c--
                }
            // DOWN
            // x = BASE_X + Rx(715.547, -153.435); y = BASE_Y + Ry(715.547, -153.435)
            x = BASE_X + Rx(773.327, -155.556); y = BASE_Y + Ry(773.327, -155.556)
            c = 22; dist = 64.
                while(c != 0) {
                    DOWN[c] = CreateDestructable(down, x + Rx(dist, 0.), y + Ry(dist, 0.), 0., 0.65, 0)
                    dist += 64.
                    c--
                }
            // RIGHT
            x = BASE_X + Rx(858.656, 26.565); y = BASE_Y + Ry(858.656, 26.565)
            c = 10; dist = 64.
                while(c != 0) {
                    RIGHT[c] = CreateDestructable(right, x + Rx(dist, -90.), y + Ry(dist, -90.), 0., 0.65, 0)
                    dist += 64.
                    c--
                }
            // LEFT
            x = BASE_X + Rx(801.921, 151.390); y = BASE_Y + Ry(801.921, 151.390)
            c = 10; dist = 64.
                while(c != 0) {
                    LEFT[c] = CreateDestructable(left, x + Rx(dist, -90.), y + Ry(dist, -90.), 0., 0.65, 0)
                    dist += 64.
                    c--
                }
        UP_LEFT = CreateDestructable(up_left, BASE_X + Rx(801.921, 151.390), BASE_Y + Ry(801.921, 151.390), 0., 0.65, 0)
        UP_RIGHT = CreateDestructable(up_right, BASE_X + Rx(858.656, 26.565), BASE_Y + Ry(858.656, 26.565), 0., 0.65, 0)
        DOWN_LEFT = CreateDestructable(down_left, BASE_X + Rx(773.327, -155.556), BASE_Y + Ry(773.327, -155.556), 0., 0.65, 0)
        DOWN_RIGHT = CreateDestructable(down_right, BASE_X + Rx(832.015, -22.620), BASE_Y + Ry(832.015, -22.620), 0., 0.65, 0)
    }
    
    private void InitBasePos(){
        if GetDestructableTypeId(GetEnumDestructable()) == BASE_ID {
            BASE_X = GetDestructableX(GetEnumDestructable())
            BASE_Y = GetDestructableY(GetEnumDestructable())
            RemoveDestructable(GetEnumDestructable())
        }
    }
    
    private void DelayedInit(){
        Left_X = BASE_X + Rx(773.327, -155.556); Left_Y = BASE_Y + Ry(773.327, -155.556)
        ClickSound = CreateSound("Sound\\Interface\\MouseClick1.wav", false, false, false , 10, 10, "CombatSoundsEAX")
        ActivateSound = CreateSound("Sound\\Interface\\AutoCastButtonClick1.wav", false, false, false, 10, 10, "CombatSoundsEAX")
        AreaRect = Rect(BASE_X - 768., BASE_Y - 512., BASE_X + 922., BASE_Y + 512.)
        Visibility = CreateFogModifierRect(Player(0), FOG_OF_WAR_VISIBLE, AreaRect, true, false)
        FogModifierStop(Visibility)
        DT(GetExpiredTimer())
    }
    
    private void Init(){
        EnumDestructablesInRect(bj_mapInitialPlayableArea, null, function InitBasePos)
        TimerStart(CT, 0.1, false, function DelayedInit)
    }

endlibrary

Это библиотека крафтовых навыков
library CraftsButtonsDatabase initializer Init

define {
    CBD = 60 // не забывай увеличивать это кол-во при добавлении новых навыков! та же штука со скилами
}

enum (crafts_database) { CRAFTS_NONE, FIGHTING_C, ALCHEMY_C, COOKING_C, BLACKSMITHING_C, FARMING_C, HUNTERING_C, BRIGANDAGE_C, SEWING_C, ENGINEERING_C, JEWERLY_C, MAGIC_C, ORATORY_C,L_C, MISC_C DOWN_BUTTON, UP_BUTTON }

// globals
    int array CraftsButtonId[CBD]
    int array CraftsIcon[CBD]
    int array CraftsCategory[CBD]
    int array CraftsLevel[CBD]
    string array CraftsName[CBD]
    string array CraftsDescription[CBD][14]
    int Crafts_lastFinded = 0

    
    int GetCraftsButtonCell(int id){
        int c = -1
            while(c++ < CBD)  { if CraftsButtonId[c] == id { Crafts_lastFinded = c; return c } }
        return 0
    }
    
    private void Init(){
        int c = 0
        //==========================
            CraftsButtonId[c] = 0
            CraftsIcon[c] = 0
            c++
        //==========================
            CraftsButtonId[c] = FIGHTING_C
            CraftsIcon[c] = 'B02X'
            c++
        //==========================
            CraftsButtonId[c] = ALCHEMY_C
            CraftsIcon[c] = 'B02Y'
            c++
        //==========================
            CraftsButtonId[c] = ENGINEERING_C
            CraftsIcon[c] = 'B02Z'
            c++
        //==========================
            CraftsButtonId[c] = ORATORY_C
            CraftsIcon[c] = 'B030'
            c++
        //==========================
            CraftsButtonId[c] = BLACKSMITHING_C
            CraftsIcon[c] = 'B031'
            c++
        //==========================
            CraftsButtonId[c] = COOKING_C
            CraftsIcon[c] = 'B032'
            c++
        //==========================
            CraftsButtonId[c] = HUNTERING_C
            CraftsIcon[c] = 'B033'
            c++
        //==========================
            CraftsButtonId[c] = BRIGANDAGE_C
            CraftsIcon[c] = 'B034'
            c++
        //==========================
            CraftsButtonId[c] = MAGIC_C
            CraftsIcon[c] = 'B035'
            c++
        //==========================
            CraftsButtonId[c] = FARMING_C
            CraftsIcon[c] = 'B036'
            c++
        //==========================
            CraftsButtonId[c] = SEWING_C
            CraftsIcon[c] = 'B037'
            c++
        //==========================
            CraftsButtonId[c] = JEWERLY_C
            CraftsIcon[c] = 'B038'
            c++
        //==========================
            CraftsButtonId[c] = L_C
            CraftsIcon[c] = 'B03A'
            c++
        //==========================
            CraftsButtonId[c] = MISC_C
            CraftsIcon[c] = 'B03B'
            c++
        //==========================
            CraftsButtonId[c] = DOWN_BUTTON
            CraftsIcon[c] = 'B029'
            c++
        //==========================
            CraftsButtonId[c] = UP_BUTTON
            CraftsIcon[c] = 'B02A'
            c++
        //==========================
            CraftsButtonId[c] = 'A00A'
            CraftsIcon[c] = 'B039'
            CraftsCategory[c] = FIGHTING_C
			CraftsLevel[c] = 1
			CraftsName[c] = "Одноручное оружие"
            CraftsDescription[c][1] = "Одноручное оружие"
            CraftsDescription[c][2] = "Владение одноручным оружием."
            c++
        //==========================
            CraftsButtonId[c] = 'A01A'
            CraftsIcon[c] = 'B03C'
            CraftsCategory[c] = FIGHTING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Парирование щитом"
            CraftsDescription[c][1] = "Парирование щитом"
            CraftsDescription[c][2] = "Умение обращаться со щитом."
            c++
        //==========================    
            CraftsButtonId[c] = 'A02A'
            CraftsIcon[c] = 'B03D'
            CraftsCategory[c] = FIGHTING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Тяжёлое оружие"
            CraftsDescription[c][1] = "Тяжёлое оружие"
            CraftsDescription[c][2] = "Умение обращаться с молотами, "
			CraftsDescription[c][3] = "топорами, тяжёлыми дубинами."
            c++
        //==========================    
			CraftsButtonId[c] = 'A03A'
            CraftsIcon[c] = 'B03E'
            CraftsCategory[c] = FIGHTING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Магические посохи"
            CraftsDescription[c][1] = "Магические посохи"
            CraftsDescription[c][2] = "Умение обращаться с магическими посохами."
            c++
        //==========================
			CraftsButtonId[c] = 'A04A'
            CraftsIcon[c] = 'B03F'
            CraftsCategory[c] = FIGHTING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Древковое оружие"
            CraftsDescription[c][1] = "Древковое оружие"
            CraftsDescription[c][2] = "Умение обращаться с посохами, копьями, пиками."
            c++
        //==========================   
			CraftsButtonId[c] = 'A05A'
            CraftsIcon[c] = 'B03G'
            CraftsCategory[c] = FIGHTING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Тяжёлые доспехи"
            CraftsDescription[c][1] = "Тяжёлые доспехи"
            CraftsDescription[c][2] = "Умение носить тяжёлые доспехи."
            c++
        //==========================
			CraftsButtonId[c] = 'A06A'
            CraftsIcon[c] = 'B03H'
            CraftsCategory[c] = FIGHTING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Лёгкие доспехи"
            CraftsDescription[c][1] = "Лёгкие доспехи"
            CraftsDescription[c][2] = "Умение носить лёгкие доспехи."
            c++
        //==========================  
			CraftsButtonId[c] = 'A01L'
            CraftsIcon[c] = 'B03I'
            CraftsCategory[c] = ALCHEMY_C
			CraftsLevel[c] = 1
			CraftsName[c] = "Травничество"
            CraftsDescription[c][1] = "Травничество"
            CraftsDescription[c][2] = "Способность собирать растения."
            c++
        //========================== 
			CraftsButtonId[c] = 'A02L'
            CraftsIcon[c] = 'B03J'
            CraftsCategory[c] = ALCHEMY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Варка зелий здоровья"
            CraftsDescription[c][1] = "Варка зелий здоровья"
            CraftsDescription[c][2] = "Способность варить лечебные зелья."
            c++
        //========================== 
			CraftsButtonId[c] = 'A03L'
            CraftsIcon[c] = 'B03K'
            CraftsCategory[c] = ALCHEMY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Варка зелий маны"
            CraftsDescription[c][1] = "Варка зелий маны"
            CraftsDescription[c][2] = "Способность варить зелья маны."
            c++
        //========================== 
			CraftsButtonId[c] = 'A04L'
            CraftsIcon[c] = 'B03L'
            CraftsCategory[c] = ALCHEMY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Варка особых зелий"
            CraftsDescription[c][1] = "Варка особых зелий"
            CraftsDescription[c][2] = "Способность варить особые зелья."
            c++
        //========================== 
			CraftsButtonId[c] = 'A05L'
            CraftsIcon[c] = 'B03M'
            CraftsCategory[c] = ALCHEMY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Варка постоянных зелий"
            CraftsDescription[c][1] = "Варка постоянных зелий"
            CraftsDescription[c][2] = "Способность варить постоянные зелья."
            c++
        //========================== 
			CraftsButtonId[c] = 'A06L'
            CraftsIcon[c] = 'B03N'
            CraftsCategory[c] = ALCHEMY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Смешивание"
            CraftsDescription[c][1] = "Смешивание"
            CraftsDescription[c][2] = "Способность смешивать зелья."
            c++
        //========================== 
			CraftsButtonId[c] = 'A07L'
            CraftsIcon[c] = 'B044'
            CraftsCategory[c] = ALCHEMY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Приготовление ядов"
            CraftsDescription[c][1] = "Приготовление ядов"
            CraftsDescription[c][2] = "Способность изготавливать яды."
            c++
        //========================== 
			CraftsButtonId[c] = 'B01R'
            CraftsIcon[c] = 'B03P'
            CraftsCategory[c] = BRIGANDAGE_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Карманное воровство"
            CraftsDescription[c][1] = "Карманное воровство"
            CraftsDescription[c][2] = "Возможность воровать у персонажей."
            c++
        //========================== 
			CraftsButtonId[c] = 'B02R'
            CraftsIcon[c] = 'B03O'
            CraftsCategory[c] = BRIGANDAGE_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Взлом замков"
            CraftsDescription[c][1] = "Взлом замков"
            CraftsDescription[c][2] = "Возможность взламывать замки "
			CraftsDescription[c][3] = "с помощью отмычки."
            c++
        //========================== 
			CraftsButtonId[c] = 'B03R'
            CraftsIcon[c] = 'B03Q'
            CraftsCategory[c] = BRIGANDAGE_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Марадёрство"
            CraftsDescription[c][1] = "Марадёрство"
            CraftsDescription[c][2] = "Возможность вскрывать могилы."
            c++
        //========================== 
			CraftsButtonId[c] = 'O01R'
            CraftsIcon[c] = 'B03R'
            CraftsCategory[c] = ORATORY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Лесть"
            CraftsDescription[c][1] = "Лесть"
            CraftsDescription[c][2] = "Способность подлизываться к собеседнику."
            c++
        //========================== 
			CraftsButtonId[c] = 'O02R'
            CraftsIcon[c] = 'B03S'
            CraftsCategory[c] = ORATORY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Ложь"
            CraftsDescription[c][1] = "Ложь"
            CraftsDescription[c][2] = "Умение врать."
            c++
        //========================== 
			CraftsButtonId[c] = 'O03R'
            CraftsIcon[c] = 'B03T'
            CraftsCategory[c] = ORATORY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Подкуп"
            CraftsDescription[c][1] = "Подкуп"
            CraftsDescription[c][2] = "Коррупция всегда помогает преступникам."
            c++
        //========================== 
			CraftsButtonId[c] = 'O04R'
            CraftsIcon[c] = 'B03U'
            CraftsCategory[c] = ORATORY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Убеждение"
            CraftsDescription[c][1] = "Убеждение"
            CraftsDescription[c][2] = "Искусство убеждать."
            c++
        //========================== 
			CraftsButtonId[c] = 'O05R'
            CraftsIcon[c] = 'B03V'
            CraftsCategory[c] = ORATORY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Угрозы"
            CraftsDescription[c][1] = "Угрозы"
            CraftsDescription[c][2] = "Умение запугивать собеседника."
            c++
        //========================== 
			CraftsButtonId[c] = 'O06R'
            CraftsIcon[c] = 'B03W'
            CraftsCategory[c] = ORATORY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Феня"
            CraftsDescription[c][1] = "Феня"
            CraftsDescription[c][2] = "Воровской жаргон. Поможет вам найти" 
			CraftsDescription[c][3] = "общий язык с преступниками."
            c++
        //========================== 
			CraftsButtonId[c] = 'O07R'
            CraftsIcon[c] = 'B03X'
            CraftsCategory[c] = ORATORY_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Шутка"
            CraftsDescription[c][1] = "Шутка"
            CraftsDescription[c][2] = "Добрая шутка поможет разрядить обстановку."
            c++
        //========================== 
			CraftsButtonId[c] = 'B01S'
            CraftsIcon[c] = 'B03Y'
            CraftsCategory[c] = BLACKSMITHING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Заточка оружия"
            CraftsDescription[c][1] = "Заточка оружия"
            CraftsDescription[c][2] = "Увеличивает урон от оружия на 50%."
            c++
        //========================== 
			CraftsButtonId[c] = 'F01F'
            CraftsIcon[c] = 'B03Z'
            CraftsCategory[c] = FARMING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Бортничество"
            CraftsDescription[c][1] = "Бортничество"
            CraftsDescription[c][2] = "Способность добывать мёд."
            c++
        //========================== 
			CraftsButtonId[c] = 'F02F'
            CraftsIcon[c] = 'B040'
            CraftsCategory[c] = FARMING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Доение скота"
            CraftsDescription[c][1] = "Доение скота"
            CraftsDescription[c][2] = "Способность доить коров и других молочных животных."
            c++
        //========================== 
			CraftsButtonId[c] = 'F03F'
            CraftsIcon[c] = 'B043'
            CraftsCategory[c] = FARMING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Посадка"
            CraftsDescription[c][1] = "Посадка"
            CraftsDescription[c][2] = "Способность садить культурные растения."
            c++
        //========================== 
			CraftsButtonId[c] = 'F04F'
            CraftsIcon[c] = 'B041'
            CraftsCategory[c] = FARMING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Прополка"
            CraftsDescription[c][1] = "Прополка"
            CraftsDescription[c][2] = "Способнось удалять сорняки."
            c++
        //========================== 
			CraftsButtonId[c] = 'F05F'
            CraftsIcon[c] = 'B042'
            CraftsCategory[c] = FARMING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Сбор урожая"
            CraftsDescription[c][1] = "Сбор урожая"
            CraftsDescription[c][2] = "Выучив эту способность вы" 
			CraftsDescription[c][3] = "сможете правильно собирать урожай."
            c++
        //========================== 
			CraftsButtonId[c] = 'C01C'
            CraftsIcon[c] = 'B045'
            CraftsCategory[c] = COOKING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Выпечка"
            CraftsDescription[c][1] = "Выпечка"
            CraftsDescription[c][2] = "Возможность печь мучные изделия." 
            c++
        //========================== 
			CraftsButtonId[c] = 'C02C'
            CraftsIcon[c] = 'B046'
            CraftsCategory[c] = COOKING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Жарка"
            CraftsDescription[c][1] = "Жарка"
            CraftsDescription[c][2] = "Возможность жарить пищу." 
            c++
        //========================== 
			CraftsButtonId[c] = 'C03C'
            CraftsIcon[c] = 'B047'
            CraftsCategory[c] = COOKING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Самогоноварение"
            CraftsDescription[c][1] = "Самогоноварение"
            CraftsDescription[c][2] = "Возможность гнать алкогольные напитки." 
            c++
        //========================== 
			CraftsButtonId[c] = 'H01H'
            CraftsIcon[c] = 'B048'
            CraftsCategory[c] = HUNTERING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Владение луком"
            CraftsDescription[c][1] = "Владение луком"
            CraftsDescription[c][2] = "Умение стрелять из лука." 
            c++
        //==========================
			CraftsButtonId[c] = 'H02H'
            CraftsIcon[c] = 'B049'
            CraftsCategory[c] = HUNTERING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Добыча трофеев"
            CraftsDescription[c][1] = "Добыча трофеев"
            CraftsDescription[c][2] = "Умение добывать:  " 
			CraftsDescription[c][3] = "- шкуры животных (1 уровень) " 
			CraftsDescription[c][4] = "- шкуры рептилий (2 уровень) " 
			CraftsDescription[c][5] = "- рога, клыки, когти (3 уровень) " 
			CraftsDescription[c][6] = "- органы (4 уровень) " 
			CraftsDescription[c][7] = "- яды (5 уровень) " 
            c++
        //==========================
			CraftsButtonId[c] = 'H03H'
            CraftsIcon[c] = 'B04A'
            CraftsCategory[c] = HUNTERING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Добыча мяса"
            CraftsDescription[c][1] = "Добыча мяса"
            CraftsDescription[c][2] = "Умение добывать мясо." 
            c++
        //==========================
			CraftsButtonId[c] = 'H04H'
            CraftsIcon[c] = 'B04B'
            CraftsCategory[c] = HUNTERING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Использование ловушек"
            CraftsDescription[c][1] = "Использование ловушек"
            CraftsDescription[c][2] = "Умение применять капканы,"
			CraftsDescription[c][3] = "сети и прочие ловушки." 
            c++
        //==========================
			CraftsButtonId[c] = 'H05H'
            CraftsIcon[c] = 'B04C'
            CraftsCategory[c] = HUNTERING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Разведение костров"
            CraftsDescription[c][1] = "Разведение костров"
            CraftsDescription[c][2] = "Время жизни костра = "
			CraftsDescription[c][3] = "уровень способности * 20."
            c++
        //==========================
			CraftsButtonId[c] = 'H06H'
            CraftsIcon[c] = 'B04D'
            CraftsCategory[c] = HUNTERING_C
			CraftsLevel[c] = 0
			CraftsName[c] = "Рыбалка"
            CraftsDescription[c][1] = "Рыбалка"
            CraftsDescription[c][2] = "Возможность ловить рыбу."
            c++
        //==========================
    }

endlibrary
0
29
1 год назад
Отредактирован nazarpunk
0
Это только один триггер. А там их порядка 15.
Не вижу 100500 зависимостей, из-за которых могут быть проблемы. Попробуй превратить всё это в jass. Там будет 100500 функций наподобие GUI_DestroyInterface(), которые при желании можно будет запросто превратить в vJass/zinc библиотеку. а можно и забить.
0
29
1 год назад
Отредактирован nazarpunk
0
Красота, для vscode завезли подсветку zinc. Если скинешь весь код, могу перегнать в zinc. Правда за работоспособность проверить не смогу ибо сижу на MacOS.
Загруженные файлы
2
12
1 год назад
2
nazarpunk, Какой смысл использовать мертвый диалект zinc и в чем отличие от использовании сjass/vjass?
PUVer, Ты можешь реально скопировать папку триггеров в пустую карту, а потом вытащить оттуда war3map.j и забрать что получилось в основной проект. К слову сказать, Даро приходилось так делать не раз, для того чтоб избавиться от мусорного синтаксиса сахара.
0
29
1 год назад
Отредактирован nazarpunk
0
Какой смысл использовать мертвый диалект zinc
С какой радости он мёртвый, если zinc является альтернативным диалектом vJass и работает в Reforged?

Переписал для начала CraftsButtonsDatabase. По идее его можно тупо заменить, если он не находится ни у кого в зависимости.
0
29
1 год назад
Отредактирован nazarpunk
0
В порядке бреда можно прикрутить UjAPI, сконвертировать c помощью cjass2lua весь jass и писать на более удобном языке.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.