Возможно ли сделать определённую зону для курсора где можно запретить например вывод текста при нажатии на лкм.

я уже написал в своей статье. но мы не читаем конечно
вот
--чекаем принадлежность курсора в игровом поле
  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

карта немного старая, тут портрета нет. посмотри в моим вопросах, где вопрос недавно задавал про портрет
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
27
Возможно ли сделать определённую зону для курсора где можно запретить например вывод текста при нажатии на лкм.
Вывод текста - эта всплывающая подсказка Tooltip что ли? Она не активируется нажатием ЛКМ, она сама открывается. Если у вас что-то открывается, значит, это что у вас. Надо в коде смотреть итд

Ее можно попробовать скрыть. За всплывающие подсказки отвечают 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 будут у нас невидимыми пустышками, они нужны для проверки. Когда курсор оказывается внутри фрейма, то подсказка становится видимой. Таймером чекаем подсказки. Можно разбить экран на несколько частей.
Еще не забывайте про стандарт фреймы, они тоже подсказки показывают. Эти используют станд подсказку на все ORIGIN_FRAME_TOOLTIP и ORIGIN_FRAME_UBERTOOLTIP
--чекаем принадлежность курсора в игровом поле
  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
                
    end)

  end)
Как привязать курсор к игровому полю?
чтобы курсор не выходил за пределы есть спец нативка, привязывающая курсор к фрейму
---@param frame framehandle
---@param enable boolean
---@return nothing
function BlzFrameCageMouse(frame, enable) end -- (native)
1
МрачныйВорон, пример на лкм забит триггер при нажатии на неё выводится текст на экран нужна запретить это действие в определённых областях.

МрачныйВорон, например нажимая на на кнопки интерфейса, просто сделал стрельбу на лкм нужно нажать на предмет а он стреляет как отменить это не знаю.
27
Survivalist, ты приказом attack отдаешь атаковать? замени на smart. smart - щелчок мыщи, если цель юнит он либо следует за союзником, либо атакует врага, предмет подбирает, а декор - разрушает (если имеет условие для этого, для рубки дерева необходим навык).
А когда юнит находится в зоне игрока, то там можно было отключить ЛКМ атаку.

можно еще маску на экран накрыть фреймом. и открывать в нужный момент. пример
1
МрачныйВорон, не, нажимаешь лкм летит снаряд все, срабатывает даже когда предметы на панели юзаешь.
27
Survivalist, кажется понял. У тебя клик мыши срабатывается и по интерфейсу.
выше скинул пример как определить лежит ли курсор в игровом поле (см. выше код). там разделил на две части: поле интерфейса и игровое поле. потом есть события нажатия мыши (ЛКМ и ПКМ, еще СКМ). Когда жмешь, ты чекаешь лежит ли курсор в игровом поле, если лежит стреляешь, не лежит, не стреляем.
1
МрачныйВорон, можешь написать какой под чёт не понятно.

МрачныйВорон, я пока ток с интерфейсом работать научился вопросы вот задаю.
27
я уже написал в своей статье. но мы не читаем конечно
вот
--чекаем принадлежность курсора в игровом поле
  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

карта немного старая, тут портрета нет. посмотри в моим вопросах, где вопрос недавно задавал про портрет
Загруженные файлы
Принятый ответ
1
МрачныйВорон, у меня карта на jass уже ну ничего страшного разберёмся.
27
Survivalist, я уже объяснял как работает. Тут на каждый фрейм создают подсказку пустышку-фрейм. Когда курсор оказывается внутри фрейма появляется эта самая подсказка. Когда мы уходим из фрейма, подсказка исчезает. Отдельно работают подсказки варивские. Тк в рефорджете нет нативок, определяющих положения фрейма на экране, то на помощь пришли эти подсказки они быстрее.
Есть события у фреймов, которые ловят вход в фрейм/выход из фрейма - они не работают так хорошо как хотелось бы. Там обновляется событие медленно. Можно мышью крутануть в конец экрана, и все, у тебя курсор не внутри фрейма, событие может не зафиксировать вход/выход. Только если очень медленно подводить курсор. вО-ВТОРЫХ, ЕСЛИ КРУТАНУТЬ СИЛЬНО. И КУРСОР ОКАЖЕТСЯ ВНУТРИ, то событие не фиксируется, что мышь внутри, только входы/выходы. В-третьих, не все типы фреймов могут иметь нужными событиями.
Подсказки более приемлемый вариант, ниче более не остается. Подсказки тоже не очень, они мгновенно не могут переключаться, если один фрейм выключить, то подсказка исчезнет не сразу. И точно также не сразу появится след подсказка. Короче, частота обновления подсказки 0.01-0.02 сек. Щас все так используют. Хотя способ немного причудливый.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.