Добавлен Survivalist
Возможно ли сделать определённую зону для курсора где можно запретить например вывод текста при нажатии на лкм.
Принятый ответ
я уже написал в своей статье. но мы не читаем конечно
вот
--чекаем принадлежность курсора в игровом поле
local cursorInGame = true
TimerStart(CreateTimer(),0.0, false,function()
local parent = BlzGetFrameByName("ConsoleUIBackdrop", 0)
local gameUI = BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0)
--DestroyTimer(GetExpiredTimer())
--Screen - родитель игрового поля (т.е. экрана)
local Screen = BlzCreateFrameByType("FRAME", "FaceFrame", parent, "", 0)
--левая центральная
local ScreenFrame1 = BlzCreateFrameByType("GLUETEXTBUTTON", "MyButton", Screen, "ScriptDialogButton", 0)
BlzFrameSetAlpha(ScreenFrame1, 50)
BlzFrameSetAbsPoint(ScreenFrame1, FRAMEPOINT_CENTER, 0.1,0.154+((0.416)/2))
BlzFrameSetSize(ScreenFrame1, 0.2, 0.416)
--центральная игровая
local ScreenFrame2 = BlzCreateFrameByType("GLUETEXTBUTTON", "MyButton", Screen, "ScriptDialogButton", 0)
BlzFrameSetAlpha(ScreenFrame2, 50)
BlzFrameSetAbsPoint(ScreenFrame2, FRAMEPOINT_CENTER, 0.4,0.128+((0.442)/2))
BlzFrameSetSize(ScreenFrame2, 0.4, 0.442)
--правая центральная игровая
local ScreenFrame3 = BlzCreateFrameByType("GLUETEXTBUTTON", "MyButton", Screen, "ScriptDialogButton", 0)
BlzFrameSetAlpha(ScreenFrame3, 50)
BlzFrameSetAbsPoint(ScreenFrame3, FRAMEPOINT_CENTER, 0.7,0.154+((0.416)/2))
BlzFrameSetSize(ScreenFrame3, 0.2, 0.416)
--левая боковая игровая
local ScreenFrame4 = BlzCreateFrameByType("GLUETEXTBUTTON", "MyButton", Screen, "ScriptDialogButton", 0)
BlzFrameSetAlpha(ScreenFrame4, 50)
BlzFrameSetAbsPoint(ScreenFrame4, FRAMEPOINT_CENTER, -0.144/2,(0.164+0.410)/2)
BlzFrameSetSize(ScreenFrame4, 0.144, 0.164+0.410)
--правая боковая игровая
local ScreenFrame5 = BlzCreateFrameByType("GLUETEXTBUTTON", "MyButton", Screen, "ScriptDialogButton", 0)
BlzFrameSetAlpha(ScreenFrame5, 50)
BlzFrameSetAbsPoint(ScreenFrame5, FRAMEPOINT_CENTER, 0.8+0.144/2,(0.164+0.410)/2)
BlzFrameSetSize(ScreenFrame5, 0.144, 0.164+0.410)
--Sreentools - всплывающая подсказка-пустышка
local Sreentools = BlzCreateFrameByType("FRAME", "FaceFrame", parent, "", 0)
BlzFrameSetAlpha(Sreentools, 0)
BlzFrameSetAbsPoint(Sreentools, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetSize(Sreentools, 0, 0)
BlzFrameSetTooltip(ScreenFrame1, Sreentools)
BlzFrameSetTooltip(ScreenFrame2, Sreentools)
BlzFrameSetTooltip(ScreenFrame3, Sreentools)
BlzFrameSetTooltip(ScreenFrame4, Sreentools)
BlzFrameSetTooltip(ScreenFrame5, Sreentools)
--InterfaceField - родитель интерфейса
local InterfaceField = BlzCreateFrameByType("FRAME", "FaceFrame", gameUI, "", 0)
--левая нижняя панель
local Interface1 = BlzCreateFrameByType("GLUETEXTBUTTON", "MyButton", InterfaceField, "ScriptDialogButton", 0)
BlzFrameSetAlpha(Interface1, 50)
BlzFrameSetAbsPoint(Interface1, FRAMEPOINT_CENTER, 0.1, 0.144/2)
BlzFrameSetSize(Interface1, 0.2, 0.154) --0.176
--центральная панель
local Interface2 = BlzCreateFrameByType("GLUETEXTBUTTON", "MyButton", InterfaceField, "ScriptDialogButton", 0)
BlzFrameSetAlpha(Interface2, 50)
BlzFrameSetAbsPoint(Interface2, FRAMEPOINT_CENTER, 0.4, 0.118/2)
BlzFrameSetSize(Interface2, 0.4, 0.128) --0.15
--правая нижняя панель
local Interface3 = BlzCreateFrameByType("GLUETEXTBUTTON", "MyButton", InterfaceField, "ScriptDialogButton", 0)
BlzFrameSetAlpha(Interface3, 50)
BlzFrameSetAbsPoint(Interface3, FRAMEPOINT_CENTER, 0.7, 0.146/2)
BlzFrameSetSize(Interface3, 0.2, 0.154) --0.176
--верхняя панель
local Interface4 = BlzCreateFrameByType("GLUETEXTBUTTON", "MyButton", parent, "ScriptDialogButton", 0)
BlzFrameSetAlpha(Interface4, 50)
BlzFrameSetAbsPoint(Interface4, FRAMEPOINT_CENTER, 0.4, 0.6-(0.026/2))
BlzFrameSetSize(Interface4, 1.088, 0.026) --0.176
--Interfacetools - всплывающая подсказка поля интерфейса
local Interfacetools = BlzCreateFrameByType("FRAME", "FaceFrame", parent, "", 0)
BlzFrameSetAlpha(Interfacetools, 0)
BlzFrameSetAbsPoint(Interfacetools, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetSize(Interfacetools, 0, 0)
BlzFrameSetTooltip(Interface1, Interfacetools)
BlzFrameSetTooltip(Interface2, Interfacetools)
BlzFrameSetTooltip(Interface3, Interfacetools)
BlzFrameSetTooltip(Interface4, Interfacetools)
TimerStart(CreateTimer(),1/32, true,function()
if BlzFrameIsVisible(Sreentools) then
print("курсор в игровом поле")
BlzFrameSetVisible(ScreenFrame1,false)
BlzFrameSetVisible(ScreenFrame2,false)
BlzFrameSetVisible(ScreenFrame3,false)
BlzFrameSetVisible(ScreenFrame4,false)
BlzFrameSetVisible(ScreenFrame5,false)
BlzFrameSetVisible(InterfaceField,true)
if GetLocalPlayer() ~= nil then
cursorInGame = true
end
elseif BlzFrameIsVisible(Interfacetools) or BlzFrameIsVisible(BlzGetOriginFrame(ORIGIN_FRAME_UBERTOOLTIP,0)) then
print("курсор в поле интерфейса")
BlzFrameSetVisible(ScreenFrame1,true)
BlzFrameSetVisible(ScreenFrame2,true)
BlzFrameSetVisible(ScreenFrame3,true)
BlzFrameSetVisible(ScreenFrame4,true)
BlzFrameSetVisible(ScreenFrame5,true)
BlzFrameSetVisible(InterfaceField,false)
if GetLocalPlayer()~=nil then
cursorInGame = false
end
end
карта немного старая, тут портрета нет. посмотри в моим вопросах, где вопрос недавно задавал про портрет
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. MpW
Ее можно попробовать скрыть. За всплывающие подсказки отвечают ORIGIN_FRAME_TOOLTIP и ORIGIN_FRAME_UBERTOOLTIP
f0 = BlzGetOriginFrame(ORIGIN_FRAME_TOOLTIP ,0)
f1 = BlzGetOriginFrame(ORIGIN_FRAME_UBERTOOLTIP,0)
BlzFrameSetVisible(f0,true)
BlzFrameSetVisible(f1,true)
Можно создать каждому фрейму всплывающую подсказку. Tooltips будут у нас невидимыми пустышками, они нужны для проверки. Когда курсор оказывается внутри фрейма, то подсказка становится видимой. Таймером чекаем подсказки. Можно разбить экран на несколько частей.
чтобы курсор не выходил за пределы есть спец нативка, привязывающая курсор к фрейму
---@param frame framehandle
---@param enable boolean
---@return nothing
function BlzFrameCageMouse(frame, enable) end -- (native)
Ред. MpW