Слышал, что с версии 1.31 можно менять интерфейс. Подскажите: как мне сделать, чтоб у способности типа "книга заклинаний" было не 11 свободных ячеек на панели(как это обычно), а на 3 больше, то есть всего 14? Без мемхака.

DopaMine, нельзя поменять кол-во ячеек в книге заклинаний.
Можно набросать в интерфейс кнопок и обрабатывать нажатия на них, без абилок юнитов. Но есть три нюанса
  1. нет визуального редактора интерфейса, все делается в коде и файлах разметки
  2. только жасс или луа, а гуй не справится с этой задачей
  3. это сложно
примерно алгоритм выглядит так
  1. разобраться в файлах разметки фреймов fdf
  2. запилить свой фрейм в fdf файле, засунуть этот файл в карту
  3. в нужный момент создать и отобразить фрейм триггером
  4. динамически добавить триггеры для обработки нажатий на кнопки фрейма после его создания
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
11
Ну или найти кого-то кто уже находил нужный тебе фрейм.
АХАХ, так и думал, что в итоге только гуглить по форумам:DDDDD
prog:
Именно. Я же предупреждал что это сложно...
Хмм, ну, у меня не то чтобы прям целые абилки были вставлены в эти ячейки...Но если есть команды на жассе, позволяющие получить координаты мыши или нажатие "горячих клавиш", то с этим попроще будет. Дичь в том, что искать, что за фрейм.
Proshel_Doty:
А ещё можно заглянуть сюда xgm.guru/p/wc3/frame
А здесь нет указаний, какой fdf файл за что отвечает? Я пока в понятиях не совсем разобрался. Константы, функции. Это, как я понял, для работы с отображением готовых фреймов в самом редакторе уже.
24
Но если есть команды на жассе, позволяющие получить координаты мыши или нажатие "горячих клавиш", то с этим попроще будет.
Есть даже событие клика на кнопку в фрейме, если я правильно помню.
11
Есть даже событие клика на кнопку в фрейме, если я правильно помню.
То есть, всё-таки есть понятие "кнопка" внутри фрейма? Или это неточно)
24
DopaMine, кнопка - разновидность фрейма. Сама по себе кнопка без других фреймов невидима и умеет только ловить мышку и вроде звуки издавать. Чтобы у кнопки был текст и картинка, к кнопке добавляется еще несколько фреймов и все это добро складывается внутрь еще одного фрейма для удобства (и, естественно, есть стандартные фреймы в которых это уже сделано).
11
(и, естественно, есть стандартные фреймы в которых это уже сделано).
И, естественно, как их искать - никто не знает:D
Тогда вот вопрос: а как я хотя бы могу проверить, тот ли фрейм я просматриваю или не тот? Тупо изменить что-то в нём, сохранить в свой toc файл, импортировать в карту, загрузить с помощью нативки - и посмотреть, что поменялось в интерфейсе. Только так?
И я чёт не уловил: вот у меня к примеру свой скопированный и немножко изменённый(на одну цифру) фрейм. Я его загружу, допустим(с помощью команды) - он заменит стандартный или последний надо спрятать, прежде чем отобразить мой?
24
DopaMine, если я правильно помню, менять стандартные фреймы через fdf нельзя, только добавлять новые на их основе.
Т.е. создаеш fdf файл, в нем описание фрейма, с айдишником отличающимся от стандартного, импортируешь в карту, потом создаешь toc файл, в нем указываешь путь к fdf внутри карты, тоже импортируешь, потом в коде грузиш toc одной нативкой и создаешь фрейм по айди другой.
Вобще, в поисках нужного фрейма люди обычно включают мозг и смотрят по содержимому похож ли фрейм на то что они ищут, если похож, то проверяют уже на практике, если нет, то ищут дальше. Ну и статьи в которых рассказывается как прятать стандартные фреймы как минимум позволяют узнать айдишники стандартных фреймов, а дальше уже поиск по файлам сильно упрощается...
11
Хм, я, конечно, извиняюсь.
// -- INCLUDE FILES ---------------------------------------------

IncludeFile "UI\FrameDef\Glue\StandardTemplates.fdf",

// -- LOCAL TEMPLATES -------------------------------------------

Frame "POPUPMENU" "PlayerSlotPopupMenu" {
    Width 0.109,
    Height 0.025,
    PopupButtonInset 0.01,

    ControlBackdrop "PlayerSlotPopupMenuBackdrop",
    Frame "BACKDROP" "PlayerSlotPopupMenuBackdrop" {
        BackdropTileBackground,
        BackdropBackground  "UI\Widgets\Glues\GlueScreen-Button1-BackdropBackground.blp",
        BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R",
        BackdropCornerSize  0.016,
        BackdropBackgroundSize  0.032,
        BackdropBackgroundInsets 0.004 0.004 0.004 0.004,
        BackdropEdgeFile  "UI\Widgets\Glues\GlueScreen-Button1-BorderedBackdropBorder.blp",
    }

    ControlDisabledBackdrop "PlayerSlotPopupMenuDisabledBackdrop",
    Frame "BACKDROP" "PlayerSlotPopupMenuDisabledBackdrop" {
        BackdropTileBackground,
        BackdropBackground  "UI\Widgets\Glues\GlueScreen-Button1-BackdropBackground-Disabled.blp",
        BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R",
        BackdropCornerSize  0.016,
        BackdropBackgroundSize  0.032,
        BackdropBackgroundInsets 0.004 0.004 0.004 0.004,
        BackdropEdgeFile  "UI\Widgets\Glues\GlueScreen-Button1-BorderedBackdropBorder-Disabled.blp",
    }

    ControlPushedBackdrop "PlayerSlotPopupMenuPushedBackdrop",
    Frame "BACKDROP" "PlayerSlotPopupMenuPushedBackdrop" {
        BackdropTileBackground,
        BackdropBackground  "UI\Widgets\Glues\GlueScreen-Button1-BackdropBackground.blp",
        BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R",
        BackdropCornerSize  0.016,
        BackdropBackgroundSize  0.032,
        BackdropBackgroundInsets 0.004 0.004 0.004 0.004,
        BackdropEdgeFile  "UI\Widgets\Glues\GlueScreen-Button1-BorderedBackdropBorder-Down.blp",
    }

    PopupTitleFrame "PlayerSlotPopupMenuTitle",
    Frame "GLUETEXTBUTTON" "PlayerSlotPopupMenuTitle" INHERITS WITHCHILDREN "StandardPopupMenuTitleTemplate" {
    }

    PopupArrowFrame "PlayerSlotPopupMenuArrow",
    Frame "BUTTON" "PlayerSlotPopupMenuArrow" INHERITS WITHCHILDREN "StandardPopupMenuArrowTemplate" { 
    }
}

// -- FRAMES ----------------------------------------------------

Frame "CONTROL" "PlayerSlot" {
    Height 0.025,

    Frame "TEXT" "DownloadValue" INHERITS "StandardLabelTextTemplate" {
        Width 0.01,
        UseActiveContext,
        SetPoint LEFT, "PlayerSlot", LEFT, 0.0, 0.0,
    }

    Frame "POPUPMENU" "NameMenu" INHERITS WITHCHILDREN "PlayerSlotPopupMenu" {
        Width 0.153,
        UseActiveContext,
        SetPoint LEFT, "DownloadValue", RIGHT, -0.01, 0.0,

        PopupMenuFrame "NamePopupMenuMenu",
        Frame "MENU" "NamePopupMenuMenu" INHERITS WITHCHILDREN "StandardPopupMenuMenuTemplate" {
            UseActiveContext,
        }
    }

    Frame "POPUPMENU" "RaceMenu" INHERITS WITHCHILDREN "PlayerSlotPopupMenu" {
        Width 0.114,
        UseActiveContext,
        SetPoint LEFT, "NameMenu", RIGHT, 0.0, 0.0,

        PopupMenuFrame "RacePopupMenuMenu",
        Frame "MENU" "RacePopupMenuMenu" INHERITS WITHCHILDREN "StandardPopupMenuMenuTemplate" {
            UseActiveContext,

            MenuItem "RANDOM",     -2,
            MenuItem "HUMAN",      -2,
            MenuItem "ORC",        -2,
            MenuItem "UNDEAD",     -2,
            MenuItem "NIGHT_ELF",  -2,
        }
    }

    Frame "BUTTON" "TeamButton" {
        Height 0.025,
        Width 0.087,
        UseActiveContext,
        SetPoint LEFT, "RaceMenu", RIGHT, 0.0, 0.0,

        ControlBackdrop "TeamButtonBackdrop",
        Frame "BACKDROP" "TeamButtonBackdrop" {
            UseActiveContext,
            BackdropTileBackground,
            BackdropBackground  "UI\Widgets\Glues\GlueScreen-Button1-BackdropBackground.blp",
            BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R",
            BackdropCornerSize  0.016,
            BackdropBackgroundSize  0.032,
            BackdropBackgroundInsets 0.004 0.004 0.004 0.004,
            BackdropEdgeFile  "UI\Widgets\Glues\GlueScreen-Button1-BorderedBackdropBorder.blp",
        }

        ControlDisabledBackdrop "TeamButtonDisabledBackdrop",
        Frame "BACKDROP" "TeamButtonDisabledBackdrop" {
            UseActiveContext,
            BackdropTileBackground,
            BackdropBackground  "UI\Widgets\Glues\GlueScreen-Button1-BackdropBackground-Disabled.blp",
            BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R",
            BackdropCornerSize  0.016,
            BackdropBackgroundSize  0.032,
            BackdropBackgroundInsets 0.004 0.004 0.004 0.004,
            BackdropEdgeFile  "UI\Widgets\Glues\GlueScreen-Button1-BorderedBackdropBorder-Disabled.blp",
        }

        Frame "TEXT" "TeamButtonTitle" {
            UseActiveContext,
            SetPoint LEFT, "TeamButton", LEFT, 0.01, 0.0,
            DecorateFileNames,
            FrameFont "MasterFont",0.011,"",
            FontFlags "FIXEDSIZE",
        }

        Frame "BACKDROP" "TeamButtonArrow" { 
            UseActiveContext,
            Height 0.011,
            Width 0.011,
            SetPoint RIGHT, "TeamButton", RIGHT, -0.008, 0.0,
            BackdropBlendAll,
            BackdropBackground "UI\Widgets\Glues\GlueScreen-Pulldown-Arrow.blp",
        }

    }

    Frame "BUTTON" "ColorButton" {
        Height 0.025,
        Width 0.04,
        UseActiveContext,
        SetPoint LEFT, "TeamButton", RIGHT, 0.0, 0.0,

        ControlBackdrop "ColorButtonBackdrop",
        Frame "BACKDROP" "ColorButtonBackdrop" {
            UseActiveContext,
            BackdropTileBackground,
            BackdropBackground  "UI\Widgets\Glues\GlueScreen-Button1-BackdropBackground.blp",
            BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R",
            BackdropCornerSize  0.016,
            BackdropBackgroundSize  0.032,
            BackdropBackgroundInsets 0.004 0.004 0.004 0.004,
            BackdropEdgeFile  "UI\Widgets\Glues\GlueScreen-Button1-BorderedBackdropBorder.blp",
        }

        ControlDisabledBackdrop "ColorButtonDisabledBackdrop",
        Frame "BACKDROP" "ColorButtonDisabledBackdrop" {
            UseActiveContext,
            BackdropTileBackground,
            BackdropBackground  "UI\Widgets\Glues\GlueScreen-Button1-BackdropBackground-Disabled.blp",
            BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R",
            BackdropCornerSize  0.016,
            BackdropBackgroundSize  0.032,
            BackdropBackgroundInsets 0.004 0.004 0.004 0.004,
            BackdropEdgeFile  "UI\Widgets\Glues\GlueScreen-Button1-BorderedBackdropBorder-Disabled.blp",
        }

        Frame "BACKDROP" "ColorButtonValue" {
            UseActiveContext,
            Height 0.0125,
            Width 0.0125,
            SetPoint LEFT, "ColorButton", LEFT, 0.007, 0.0,
        }

        Frame "BACKDROP" "ColorButtonArrow" { 
            UseActiveContext,
            Height 0.011,
            Width 0.011,
            SetPoint RIGHT, "ColorButton", RIGHT, -0.008, 0.0,
            BackdropBlendAll,
            BackdropBackground "UI\Widgets\Glues\GlueScreen-Pulldown-Arrow.blp",
        }

    }

    Frame "GLUEPOPUPMENU" "HandicapMenu" INHERITS WITHCHILDREN "PlayerSlotPopupMenu" {
        Width 0.054,
        UseActiveContext,
        SetPoint LEFT, "ColorButton", RIGHT, 0.0, 0.0,

        PopupMenuFrame "HandicapPopupMenuMenu",
        Frame "MENU" "HandicapPopupMenuMenu" INHERITS WITHCHILDREN "StandardPopupMenuMenuTemplate" {
            UseActiveContext,

            MenuItem "PERCENT_100",    -2,
            MenuItem "PERCENT_90",     -2,
            MenuItem "PERCENT_80",     -2,
            MenuItem "PERCENT_70",     -2,
            MenuItem "PERCENT_60",     -2,
            MenuItem "PERCENT_50",     -2,
        }
    }

    Frame "TEXT" "PingValue" INHERITS "StandardLabelTextTemplate" {
        Width 0.0225,
        Height 0.0125,
        
        FrameFont "MasterFont",0.011,"",
        FontFlags "FIXEDSIZE",
            
        UseActiveContext,
        SetPoint LEFT, "HandicapMenu", RIGHT, 0.0, 0.0,
    }
}

// -- TEAMCOLORMENU ----------------------------------------------------

Frame "CONTROL" "TeamColorMenu" {
    Width 0.18,
    Height 0.2,
    UseActiveContext,

    ControlBackdrop "TeamColorMenuBackdrop",
    Frame "BACKDROP" "TeamColorMenuBackdrop" INHERITS "StandardBorderedButtonBackdropTemplate" {
        UseActiveContext,
    }

    Frame "SCROLLBAR" "TeamColorMenuScrollBar" INHERITS WITHCHILDREN "StandardScrollBarTemplate" {
        SetPoint TOPRIGHT, "TeamColorMenu", TOPRIGHT, 0.0, 0.0,
        UseActiveContext,
    }
}
Где здесь id фрейма?((
prog:
люди обычно включают мозг и смотрят по содержимому похож ли фрейм на то что они ищут, если похож, то проверяют уже на практике, если нет, то ищут дальше.
Мне б сократить диапазон поиска. К примеру - 2 папки внутри framedef: "ui" и "glue". Как-то отсортированы фреймы по этим папкам или просто в две кучи всё намешано?
А ещё в framedef.toc есть такие 4 строки:
UI\FrameDef\GlobalStrings.fdf
UI\FrameDef\InfoPanelStrings.fdf
UI\FrameDef\NetworkStrings.fdf
UI\FrameDef\DateStrings.fdf
Этих файлов нет ни в одной из двух вышеперечисленных папок. А где они тогда?
24
Frame <тип фрейма> <айди фрейма> [наследование] {
[параметры фрейма и вложенные фреймы]
},

А где они тогда?
Поскольку это файлы строк судя по названию, то, очевидно, где-то в локалях.
11
В общем, я щас пробую свой фрейм отобразить. У меня вот так пока код написан. Это верно?
function Trig_Frames_Actions takes nothing returns nothing
	call BlzLoadTOCFile("war3mapimported\\myframe.toc")
endfunction

//===========================================================================
function InitTrig_Frames takes nothing returns nothing
    set gg_trg_Frames = CreateTrigger(  )
    call TriggerAddAction( gg_trg_Frames, function Trig_Frames_Actions )
endfunction
Вопрос в том, какая команда позволит отобразить фрейм из этого ток файла. У меня и ток, и фдф импортированы в карту.
Загруженные файлы
11
И вот, что содержит ток файл:
war3mapImported\GlobalHeroMy.fdf
prog, эти глобалы сидит внутри движка =)
Взломать можете?:D
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.