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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
11
5 лет назад
Отредактирован DopaMine
0
(и, естественно, есть стандартные фреймы в которых это уже сделано).
И, естественно, как их искать - никто не знает:D
Тогда вот вопрос: а как я хотя бы могу проверить, тот ли фрейм я просматриваю или не тот? Тупо изменить что-то в нём, сохранить в свой toc файл, импортировать в карту, загрузить с помощью нативки - и посмотреть, что поменялось в интерфейсе. Только так?
И я чёт не уловил: вот у меня к примеру свой скопированный и немножко изменённый(на одну цифру) фрейм. Я его загружу, допустим(с помощью команды) - он заменит стандартный или последний надо спрятать, прежде чем отобразить мой?
0
24
5 лет назад
0
DopaMine, если я правильно помню, менять стандартные фреймы через fdf нельзя, только добавлять новые на их основе.
Т.е. создаеш fdf файл, в нем описание фрейма, с айдишником отличающимся от стандартного, импортируешь в карту, потом создаешь toc файл, в нем указываешь путь к fdf внутри карты, тоже импортируешь, потом в коде грузиш toc одной нативкой и создаешь фрейм по айди другой.
Вобще, в поисках нужного фрейма люди обычно включают мозг и смотрят по содержимому похож ли фрейм на то что они ищут, если похож, то проверяют уже на практике, если нет, то ищут дальше. Ну и статьи в которых рассказывается как прятать стандартные фреймы как минимум позволяют узнать айдишники стандартных фреймов, а дальше уже поиск по файлам сильно упрощается...
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 локали. Остальные локали текущая версия каск вьювера пощупать не может, увы, только их размер и факт наличия посмотреть можно.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.