Добавлен , опубликован

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 и решает этот баг.

Для примера

Демокод

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 файл
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
38
Что он даёт так и не понял, есть скрины?
33

Без потери кликабельности

Если работать на дефолте то зоны с 99 и 9999 будут игнорировать все эвенты мыши
8
Именно фрейм-наработок я ждал все это время. Спасибо!
22
Почему меня не позвал =) Спс за ссылку дискорд.
33
Почему меня не позвал =)
Так это же было месяц назад уже, ты был не актив недели 3
27
кстати я никак не могу disabledBackdrop запустить с изображением, вернее вставить. да и не работает эта штука во время паузы. только кажись если триггерно отключить фрейм работает. не подключить никак в игру (во время паузы мой кастомный фрейм должен поменять на неактивное изобр, а он не меняется). и если это не работает, то нужно тогда будет отслеживать таймером паузу, и вставлять disabled. Нужно ли делать вторую неактивное изображение ?
код fdf
    ControlDisabledBackdrop "MyButtonDisabledBackdropTemplate",
    Frame "BACKDROP" "MyButtonDisabledBackdropTemplate" {
        DecorateFileNames,
        BackdropTileBackground,
        BackdropBackground  "ReplaceableTextures\CommandButtonsDisabled\DISBTNSelectHeroOn.blp",
        BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R",
        BackdropCornerSize  0.0125,
        BackdropBackgroundSize  0.256,
        BackdropBackgroundInsets 0.005 0.005 0.005 0.005,
        BackdropEdgeFile  "EscMenuButtonDisabledBorder",
    }
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.