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

Принятый ответ

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
11
5 лет назад
0
Хм, я, конечно, извиняюсь.
// -- 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
Этих файлов нет ни в одной из двух вышеперечисленных папок. А где они тогда?
0
24
5 лет назад
Отредактирован prog
0
Frame <тип фрейма> <айди фрейма> [наследование] {
[параметры фрейма и вложенные фреймы]
},

А где они тогда?
Поскольку это файлы строк судя по названию, то, очевидно, где-то в локалях.
0
11
5 лет назад
0
В общем, я щас пробую свой фрейм отобразить. У меня вот так пока код написан. Это верно?
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
Вопрос в том, какая команда позволит отобразить фрейм из этого ток файла. У меня и ток, и фдф импортированы в карту.
Загруженные файлы
0
23
5 лет назад
0
prog, эти глобалы сидит внутри движка =)
0
11
5 лет назад
0
И вот, что содержит ток файл:
war3mapImported\GlobalHeroMy.fdf
prog, эти глобалы сидит внутри движка =)
Взломать можете?:D
0
24
5 лет назад
0
эти глобалы сидит внутри движка =)
А вот и нет

DopaMine, теперь ищи нативку создающую фрейм по айдишнику. Я не подскажу т.к. не помню уже какая именно нативка для этого используется, а заново искать по статьям здесь и на хайве мне лениво.
0
11
5 лет назад
0
А дальше создаешь фрейм функцией создания фрейма.
Не нашёл функцию нигде, которая позволяет создать фрейм( Помогите плес
prog:
DopaMine, теперь ищи нативку создающую фрейм по айдишнику. Я не подскажу т.к. не помню уже какая именно нативка для этого используется, а заново искать по статьям здесь и на хайве мне лениво.
Эх. Ну хоть как её гуглить?(
0
23
5 лет назад
0
prog, а ты его октрывал? Содержимое
0
24
5 лет назад
0
Эти от enus локали. Остальные локали текущая версия каск вьювера пощупать не может, увы, только их размер и факт наличия посмотреть можно.
0
23
5 лет назад
0
DopaMine, вы можете создать по айди готового без подрузки fdf и внутри манипулирвовать по своему!
Так как изначально создает черный фон чтобы запрешать кликать в землю а сверху накладывает ConsoleUI так преобразует интерфейс. А после чего создает сверху инвентари абилки кнопки инфу юнита и герове и минкарту. Все это реализовано на уровне движке. Но вы можете свои реализовать. Создать поведение интерфейсов.
А то кто хотел 14кнопок в абилке делаем сетку интерфейс и брать основной айди консоле по номеру и скрыть а его заменить новым интерфейс с 14 слотами но в игре будет показывать 12 слотовы по умолчание так как это движок создает команды 12 слотов и скрывает заменяя текстур когда его октрывает закрывает и всякое.
Так что убираем кнопки 12 скрывая его. И создаем свои фрейм кнопка по айди того кнопка так как каждого создания увеличивает айди того кнопка 12 а значит у вас начнет уже 13 и так далее до 27 и сохраняем массив и делаем каждые кнопки свои события при наведение или при нажатии.
Ну дальше нет смысла описать вам надо понять архитектуру поведения
prog, страно почему то у тя работает а я открыл 1.31 и там пусто содержимое с комментарии лишь
0
24
5 лет назад
Отредактирован prog
0
DopaMine,
Начни с того что пройдись по статьям на хайве, к которым есть ссылки там:
xgm.guru/p/wc3/frame
Наверняка в одной из них найдется и нужная функция и другие примеры работы с фреймами.

JCtapuk, ничего странного, просто я открыл бету рефоржа, а не 1.31
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.