FDF
Ниже будет изложено именно это
Импортная FDF, это единственное, что нужно импортировать, содержимое её вот такое
раскрыть
// -- INCLUDE FILES ---------------------------------------------
IncludeFile "UI\FrameDef\Glue\StandardTemplates.fdf",
// -- LOCAL TEMPLATES -------------------------------------------
Frame "TEXT" "DemoButtonTextTemplate" {
DecorateFileNames,
FrameFont "MasterFont", 0.013, "",
FontJustificationH JUSTIFYCENTER,
FontJustificationV JUSTIFYMIDDLE,
FontFlags "FIXEDSIZE",
FontColor 1.0 1.0 1.0 1.0,
//FontHighlightColor 1.0 1.0 1.0 1.0,
//FontDisabledColor 0.5 0.5 0.5 1.0,
FontShadowColor 0.0 0.0 0.0 0.9,
FontShadowOffset 0.001 -0.001,
}
// -- FRAMES ----------------------------------------------------
Frame "GLUETEXTBUTTON" "GlueWText" {
// текстура
ControlBackdrop "DemoButtonBackdropTemplate",
Frame "BACKDROP" "DemoButtonBackdropTemplate" {
}
// Текст в центре фрейма
ButtonText "DemoButtonText",
Frame "TEXT" "DemoButtonText" INHERITS "DemoButtonTextTemplate" {
}
}
Кастомная FDF является кнопкой расширенного типа GLUETEXTBUTTON в дефолте это просто кнопки меню, и она обладает 1 странным багом
Нельзя добавить текст во внутрь, а если текст и наложить, но кнопка будет некликабельной в области текста. Эта FDF и решает этот баг.
Нельзя добавить текст во внутрь, а если текст и наложить, но кнопка будет некликабельной в области текста. Эта FDF и решает этот баг.
Для примера
Демокод
do --Инициализация
TimerStart(CreateTimer(), 1, false, function()
--создаёт триггер отлова клавишь
if not BlzLoadTOCFile("Main.toc") then
print("errloadtoc")
end
TimerStart(CreateTimer(), 1, false, function()
CreateAbilityFrame(0.4,0.3,nil,9999,Player(0))
end)
end)
end
--
function CreateAbilityFrame(posX,PosY,texture,chargesCount,player) -- позиция 1 - 12
local NextPoint=0.039
if not texture then
texture="ReplaceableTextures\\CommandButtons\\BTNSelectHeroOn"
end
local SelfFrame = BlzCreateFrame("GlueWText", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0, 0)
BlzFrameSetVisible(SelfFrame,false)
BlzFrameSetVisible(SelfFrame,GetLocalPlayer()==player)
BlzFrameSetTexture(BlzFrameGetChild(SelfFrame, 0), texture, 0, true)
BlzFrameSetText(BlzFrameGetChild(SelfFrame, 1), "99")
BlzFrameSetSize(SelfFrame,NextPoint,NextPoint)
BlzFrameSetAbsPoint(SelfFrame,FRAMEPOINT_CENTER,posX,PosY)
local ChargeContent=BlzCreateFrame("GlueWText", SelfFrame, 0, 0)
local chargesBox=BlzFrameGetChild(ChargeContent, 0)-- рамка
local chargesText=BlzFrameGetChild(ChargeContent, 1)-- текст заряда
BlzFrameSetText(chargesText, chargesCount)
BlzFrameSetTexture(chargesBox, "UI\\Widgets\\Console\\Human\\CommandButton\\human-button-lvls-overlay", 0, true)
BlzFrameSetSize(ChargeContent,NextPoint/1.5,NextPoint/3)
BlzFrameSetScale(chargesText,0.6)
BlzFrameSetPoint(ChargeContent, FRAMEPOINT_BOTTOMRIGHT, SelfFrame, FRAMEPOINT_BOTTOMRIGHT, 0.001,0.)
--print(BlzFrameGetChildrenCount(SelfFrame))
if true then -- События кликов по кнопке
print("создана ативная кнопка")
local ClickTrig = CreateTrigger()
BlzFrameSetEnable(BlzGetTriggerFrame(), false)
BlzFrameSetEnable(BlzGetTriggerFrame(), true)
BlzTriggerRegisterFrameEvent(ClickTrig, SelfFrame, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(ClickTrig, ChargeContent, FRAMEEVENT_CONTROL_CLICK)
TriggerAddAction(ClickTrig, function ()
print("Нажата кнопка ")
BlzFrameSetEnable(BlzGetTriggerFrame(), false)
BlzFrameSetEnable(BlzGetTriggerFrame(), true)
end)
end
local TrigMOUSE_ENTER = CreateTrigger()
BlzTriggerRegisterFrameEvent( TrigMOUSE_ENTER, SelfFrame, FRAMEEVENT_MOUSE_ENTER)
BlzTriggerRegisterFrameEvent( TrigMOUSE_ENTER, ChargeContent, FRAMEEVENT_MOUSE_ENTER)
TriggerAddAction( TrigMOUSE_ENTER, function ()
print("показать подсказку")
end)
local TrigMOUSE_LEAVE = CreateTrigger()
BlzTriggerRegisterFrameEvent( TrigMOUSE_LEAVE, SelfFrame, FRAMEEVENT_MOUSE_LEAVE)
BlzTriggerRegisterFrameEvent( TrigMOUSE_LEAVE, ChargeContent, FRAMEEVENT_MOUSE_LEAVE)
TriggerAddAction( TrigMOUSE_LEAVE, function ()
print("убрать подсказку")
end)
return SelfFrame
end
Разумеется не забудьте импортировать fdf и создать toc файл
Ред. MpW
Ред. MpW
Или юзать импорт, но он не работает.Не смог че то disabled texture запускать без триггеров, текстуру можно заменить.