Добавлен 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
Ред. MpW
Ред. MpW
Есть события у фреймов, которые ловят вход в фрейм/выход из фрейма - они не работают так хорошо как хотелось бы. Там обновляется событие медленно. Можно мышью крутануть в конец экрана, и все, у тебя курсор не внутри фрейма, событие может не зафиксировать вход/выход. Только если очень медленно подводить курсор. вО-ВТОРЫХ, ЕСЛИ КРУТАНУТЬ СИЛЬНО. И КУРСОР ОКАЖЕТСЯ ВНУТРИ, то событие не фиксируется, что мышь внутри, только входы/выходы. В-третьих, не все типы фреймов могут иметь нужными событиями.