• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[JASS] Displaying tooltip box and tooltip text over the UI Frame Icon?

Level 8
Joined
May 12, 2018
Messages
106
I've had some success in creating container boxes, buttons, and clicking button triggering. However, I don't know how to make the tooltip text and tooltip text display near the mouse cursor's position when cursor is over the icon.
here's my code.
JASS:
library UniqueArmoryButtons requires UniqueArmory
    globals
        private constant string ICON_HERO_ANUBARAK = "ReplaceableTextures\\CommandButtons\\BTNAnubarak.blp"
        private constant string ICON_HERO_DARKRANGER = "ReplaceableTextures\\CommandButtons\\BTNBansheeRanger.blp"
        private constant real hero00iconX = 0.023
        private constant real hero00iconY = 0.138
    endglobals

    public function UniqueArmoryButtonsSetup takes nothing returns nothing
        //local framehandle prevButton
        local framehandle prevIcon
        local framehandle prevFrame
        local framehandle prevText

        set prevIcon = BlzCreateFrameByType("BACKDROP", "", heroestalentscontainer, "", 0)
        call BlzFrameSetSize(prevIcon, 0.04, 0.04)
        call BlzFrameSetPoint(prevIcon, FRAMEPOINT_LEFT, heroestalentscontainer, FRAMEPOINT_LEFT, hero00iconX, hero00iconY)
        call BlzFrameSetTexture(prevIcon, ICON_HERO_ANUBARAK, 0, false)
        set prevFrame = prevIcon
    endfunction
endlibrary
JASS:
library UniqueArmory

    globals
        framehandle windowcontainer
        framehandle box
        real boxWidth = 0.72
        real boxHeight = 0.54
     
        framehandle startmission
        real startmissionWidth = 0.08
        real startmissionHeight = 0.04
        real startmissionX = -0.02
        real startmissionY = 0.02
        string startmissionText = "Start\nMission"

        framehandle resetheroespoints
        real resetheroespointsWidth = 0.11
        real resetheroespointsHeight = 0.04
        real resetheroespointsX = -0.10
        real resetheroespointsY = 0.02
        string resetheroespointsText = "Reset Heroes\nTalent Points"

        framehandle heroespointstext
        real heroespointstextscale = 1.15
        real heroespointstextX = 0.24
        real heroespointstextY = 0.06

        framehandle resetcultpoints
        real resetcultpointsWidth = 0.11
        real resetcultpointsHeight = 0.04
        real resetcultpointsX = -0.21
        real resetcultpointsY = 0.02
        string resetcultpointsText = "Reset Cult\nArmory Points"

        framehandle cultpointstext
        real cultpointstextscale = 1.15
        real cultpointstextX = 0.24
        real cultpointstextY = 0.07

        framehandle resetscourgepoints
        real resetscourgeWidth = 0.11
        real resetscourgeHeight = 0.04
        real resetscourgeX = -0.32
        real resetscourgeY = 0.02
        string resetscourgeText = "Reset Scourge\nArmory Points"

        framehandle scourgepointstext
        real scourgepointstextscale = 1.15
        real scourgepointstextX = 0.24
        real scourgepointstextY = 0.08

        framehandle factionscourge
        real factionscourgeWidth = 0.08
        real factionscourgeHeight = 0.04
        real factionscourgeX = 0.02
        real factionscourgeY = -0.02
        string factionscourgeText = "Undead\nScourge"

        framehandle factioncult
        real factioncultWidth = 0.08
        real factioncultHeight = 0.04
        real factioncultX = 0.02
        real factioncultY = -0.055
        string factioncultText = "Cult of the\nDamned"

        framehandle heroestalents
        real heroestalentsWidth = 0.08
        real heroestalentsHeight = 0.04
        real heroestalentsX = 0.02
        real heroestalentsY = -0.09
        string heroestalentsText = "Heroes\nTalents"

        framehandle scourgebase
        real scourgebaseWidth = 0.08
        real scourgebaseHeight = 0.04
        real scourgebaseX = 0.10
        real scourgebaseY = -0.02
        string scourgebaseText = "Scourge\nBase"

        framehandle scourgeunits
        real scourgeunitsWidth = 0.08
        real scourgeunitsHeight = 0.04
        real scourgeunitsX = 0.10
        real scourgeunitsY = -0.055
        string scourgeunitsText = "Scourge\nUnits"

        framehandle cultbase
        real cultbaseWidth = 0.08
        real cultbaseHeight = 0.04
        real cultbaseX = 0.10
        real cultbaseY = -0.02
        string cultbaseText = "Cult\nBase"

        framehandle cultunits
        real cultunitsWidth = 0.08
        real cultunitsHeight = 0.04
        real cultunitsX = 0.10
        real cultunitsY = -0.055
        string cultunitsText = "Cult\nUnits"

        framehandle heroestalentscontainer
        real heroestalentscontainerWidth = 0.72
        real heroestalentscontainerHeight = 0.36
        real heroestalentscontainerX = 0
        real heroestalentscontainerY = 0.059
    endglobals
 
    public function UniqueArmoryPageTrg takes nothing returns nothing
        local framehandle clickedButton = BlzGetTriggerFrame()
        if GetLocalPlayer() == GetTriggerPlayer() then
            call BlzFrameSetVisible(scourgebase, false)
            call BlzFrameSetVisible(scourgeunits, false) 
            call BlzFrameSetVisible(cultbase, false)
            call BlzFrameSetVisible(cultunits, false)
            call BlzFrameSetVisible(heroestalentscontainer, false)
            if clickedButton == factionscourge then
                call BlzFrameSetVisible(scourgebase, true)
                call BlzFrameSetVisible(scourgeunits, true)
            elseif clickedButton == factioncult then
                call BlzFrameSetVisible(cultbase, true)
                call BlzFrameSetVisible(cultunits, true)
            elseif clickedButton == heroestalents then
                call BlzFrameSetVisible(heroestalentscontainer, true)
            endif
        endif
        endfunction

    public function UniqueArmoryGetScourgePointsRemainText takes nothing returns string
            return "Scourge Armory Points remain: " + I2S(udg_UA_ScourgePoints)
        endfunction

    public function UniqueArmoryGetCultPointsRemainText takes nothing returns string
            return "Cult Armory Points remain: " + I2S(udg_UA_CultPoints)
        endfunction

    public function UniqueArmoryGetHeroesPointsRemainText takes nothing returns string
            return "Heroes Talent Points remain: " + I2S(udg_UA_HeroesPoints)
        endfunction

    public function UniqueArmoryUpdatePointsAndTexts takes nothing returns nothing
        call BlzFrameSetText(heroespointstext, UniqueArmory_UniqueArmoryGetHeroesPointsRemainText())
        call BlzFrameSetText(cultpointstext, UniqueArmory_UniqueArmoryGetCultPointsRemainText())
        call BlzFrameSetText(scourgepointstext, UniqueArmory_UniqueArmoryGetScourgePointsRemainText())
    endfunction

    public function UniqueArmoryResetScourgePoints takes nothing returns nothing
        if GetLocalPlayer() == GetTriggerPlayer() then
            set udg_UA_ScourgePoints = udg_UA_ScourgePointsMax
            call UniqueArmory_UniqueArmoryUpdatePointsAndTexts()
        endif
    endfunction

    public function UniqueArmoryResetCultPoints takes nothing returns nothing
        if GetLocalPlayer() == GetTriggerPlayer() then
            set udg_UA_CultPoints = udg_UA_CultPointsMax
            call UniqueArmory_UniqueArmoryUpdatePointsAndTexts()
        endif
    endfunction

    public function UniqueArmoryResetHeroesPoints takes nothing returns nothing
        if GetLocalPlayer() == GetTriggerPlayer() then
            set udg_UA_HeroesPoints = udg_UA_HeroesPointsMax
            call UniqueArmory_UniqueArmoryUpdatePointsAndTexts()
        endif
    endfunction

    public function UniqueArmoryStartMission takes nothing returns nothing
        if GetLocalPlayer() == GetTriggerPlayer() then
            call BlzFrameSetVisible(windowcontainer, false)
        endif
    endfunction

    public function UniqueArmorySetup takes player p returns nothing
        local trigger startmissionTrg = CreateTrigger()
        local trigger resetheroespointsTrg = CreateTrigger()
        local trigger resetcultpointsTrg = CreateTrigger()
        local trigger resetscourgepointsTrg = CreateTrigger()
        local trigger pageTrg = CreateTrigger()

        local framehandle iconbutton
        local framehandle prevFrame
     
        set windowcontainer = BlzCreateFrameByType("FRAME", "", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), "", 0)

        set box = BlzCreateFrameByType("BACKDROP", "", windowcontainer, "EscMenuBackdrop", 0)
        call BlzFrameClearAllPoints(box)
        call BlzFrameSetAbsPoint(box, FRAMEPOINT_CENTER, 0.4, 0.3) // 0.35, 0.34
        call BlzFrameSetSize(box, boxWidth, boxHeight)

        set startmission = BlzCreateFrame("ScriptDialogButton", box, 0, 0)
        call BlzFrameClearAllPoints(startmission)
        call BlzFrameSetPoint(startmission, FRAMEPOINT_BOTTOMRIGHT, box, FRAMEPOINT_BOTTOMRIGHT, startmissionX, startmissionY)
        call BlzFrameSetSize(startmission, startmissionWidth, startmissionHeight)
        call BlzFrameSetText(startmission, startmissionText)

        call BlzTriggerRegisterFrameEvent(startmissionTrg, startmission, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(startmissionTrg, function UniqueArmoryStartMission )
     
        set resetheroespoints = BlzCreateFrame("ScriptDialogButton", box, 0, 0)
        call BlzFrameClearAllPoints(resetheroespoints)
        call BlzFrameSetPoint(resetheroespoints, FRAMEPOINT_BOTTOMRIGHT, box, FRAMEPOINT_BOTTOMRIGHT, resetheroespointsX, resetheroespointsY)
        call BlzFrameSetSize(resetheroespoints, resetheroespointsWidth, resetheroespointsHeight)
        call BlzFrameSetText(resetheroespoints, resetheroespointsText)

        call BlzTriggerRegisterFrameEvent(resetheroespointsTrg, resetheroespoints, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(resetheroespointsTrg, function UniqueArmoryResetHeroesPoints )
     
        set heroespointstext = BlzCreateFrameByType("TEXT", "name", box, "", 0)
        call BlzFrameSetAbsPoint(heroespointstext, FRAMEPOINT_BOTTOMRIGHT, heroespointstextX, heroespointstextY)
        call BlzFrameSetEnable(heroespointstext, false)
        call BlzFrameSetScale(heroespointstext, heroespointstextscale)
        call BlzFrameSetTextAlignment(heroespointstext, TEXT_JUSTIFY_BOTTOM, TEXT_JUSTIFY_LEFT)

        set resetcultpoints = BlzCreateFrame("ScriptDialogButton", box, 0, 0)
        call BlzFrameClearAllPoints(resetcultpoints)
        call BlzFrameSetPoint(resetcultpoints, FRAMEPOINT_BOTTOMRIGHT, box, FRAMEPOINT_BOTTOMRIGHT, resetcultpointsX, resetcultpointsY)
        call BlzFrameSetSize(resetcultpoints, resetcultpointsWidth, resetcultpointsHeight)
        call BlzFrameSetText(resetcultpoints, resetcultpointsText)

        set cultpointstext = BlzCreateFrameByType("TEXT", "name", box, "", 0)
        call BlzFrameSetAbsPoint(cultpointstext, FRAMEPOINT_BOTTOMRIGHT, cultpointstextX, cultpointstextY)
        call BlzFrameSetEnable(cultpointstext, false)
        call BlzFrameSetScale(cultpointstext, cultpointstextscale)
        call BlzFrameSetTextAlignment(cultpointstext, TEXT_JUSTIFY_BOTTOM, TEXT_JUSTIFY_LEFT)

        call BlzTriggerRegisterFrameEvent(resetcultpointsTrg, resetcultpoints, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(resetcultpointsTrg, function UniqueArmoryResetCultPoints )

        set resetscourgepoints = BlzCreateFrame("ScriptDialogButton", box, 0, 0)
        call BlzFrameClearAllPoints(resetscourgepoints)
        call BlzFrameSetPoint(resetscourgepoints, FRAMEPOINT_BOTTOMRIGHT, box, FRAMEPOINT_BOTTOMRIGHT, resetscourgeX, resetscourgeY)
        call BlzFrameSetSize(resetscourgepoints, resetscourgeWidth, resetscourgeHeight)
        call BlzFrameSetText(resetscourgepoints, resetscourgeText)

        set scourgepointstext = BlzCreateFrameByType("TEXT", "name", box, "", 0)
        call BlzFrameSetAbsPoint(scourgepointstext, FRAMEPOINT_BOTTOMRIGHT, scourgepointstextX, scourgepointstextY)
        call BlzFrameSetEnable(scourgepointstext, false)
        call BlzFrameSetScale(scourgepointstext, scourgepointstextscale)
        call BlzFrameSetTextAlignment(scourgepointstext, TEXT_JUSTIFY_BOTTOM, TEXT_JUSTIFY_LEFT)

        call BlzTriggerRegisterFrameEvent(resetscourgepointsTrg, resetscourgepoints, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(resetscourgepointsTrg, function UniqueArmoryResetScourgePoints )

        set factionscourge = BlzCreateFrame("ScriptDialogButton", box, 0, 0)
        call BlzFrameClearAllPoints(factionscourge)
        call BlzFrameSetPoint(factionscourge, FRAMEPOINT_TOPLEFT, box, FRAMEPOINT_TOPLEFT, factionscourgeX, factionscourgeY)
        call BlzFrameSetSize(factionscourge, factionscourgeWidth, factionscourgeHeight)
        call BlzFrameSetText(factionscourge, factionscourgeText)

        set factioncult = BlzCreateFrame("ScriptDialogButton", box, 0, 0)
        call BlzFrameClearAllPoints(factioncult)
        call BlzFrameSetPoint(factioncult, FRAMEPOINT_TOPLEFT, box, FRAMEPOINT_TOPLEFT, factioncultX, factioncultY)
        call BlzFrameSetSize(factioncult, factioncultWidth, factioncultHeight)
        call BlzFrameSetText(factioncult, factioncultText)

        set heroestalents = BlzCreateFrame("ScriptDialogButton", box, 0, 0)
        call BlzFrameClearAllPoints(heroestalents)
        call BlzFrameSetPoint(heroestalents, FRAMEPOINT_TOPLEFT, box, FRAMEPOINT_TOPLEFT, heroestalentsX, heroestalentsY)
        call BlzFrameSetSize(heroestalents, heroestalentsWidth, heroestalentsHeight)
        call BlzFrameSetText(heroestalents, heroestalentsText)

        set heroestalentscontainer = BlzCreateFrameByType("BACKDROP", "", box, "EscMenuBackdrop", 0) // set BACKDROP to FRAME, EscMenuBackdrop to null after works complete
        call BlzFrameClearAllPoints(heroestalentscontainer)
        call BlzFrameSetSize(heroestalentscontainer, heroestalentscontainerWidth, heroestalentscontainerHeight)
        call BlzFrameSetPoint(heroestalentscontainer, FRAMEPOINT_BOTTOM, box, FRAMEPOINT_BOTTOM, heroestalentscontainerX, heroestalentscontainerY)





        set scourgebase = BlzCreateFrame("ScriptDialogButton", box, 0, 0)
        call BlzFrameClearAllPoints(scourgebase)
        call BlzFrameSetPoint(scourgebase, FRAMEPOINT_TOPLEFT, box, FRAMEPOINT_TOPLEFT, scourgebaseX, scourgebaseY)
        call BlzFrameSetSize(scourgebase, scourgebaseWidth, scourgebaseHeight)
        call BlzFrameSetText(scourgebase, scourgebaseText)

        set scourgeunits = BlzCreateFrame("ScriptDialogButton", box, 0, 0)
        call BlzFrameClearAllPoints(scourgeunits)
        call BlzFrameSetPoint(scourgeunits, FRAMEPOINT_TOPLEFT, box, FRAMEPOINT_TOPLEFT, scourgeunitsX, scourgeunitsY)
        call BlzFrameSetSize(scourgeunits, scourgeunitsWidth, scourgeunitsHeight)
        call BlzFrameSetText(scourgeunits, scourgeunitsText)

        set cultbase = BlzCreateFrame("ScriptDialogButton", box, 0, 0)
        call BlzFrameClearAllPoints(cultbase)
        call BlzFrameSetPoint(cultbase, FRAMEPOINT_TOPLEFT, box, FRAMEPOINT_TOPLEFT, cultbaseX, cultbaseY)
        call BlzFrameSetSize(cultbase, cultbaseWidth, cultbaseHeight)
        call BlzFrameSetText(cultbase, cultbaseText)

        set cultunits = BlzCreateFrame("ScriptDialogButton", box, 0, 0)
        call BlzFrameClearAllPoints(cultunits)
        call BlzFrameSetPoint(cultunits, FRAMEPOINT_TOPLEFT, box, FRAMEPOINT_TOPLEFT, cultunitsX, cultunitsY)
        call BlzFrameSetSize(cultunits, cultunitsWidth, cultunitsHeight)
        call BlzFrameSetText(cultunits, cultunitsText)

        call BlzTriggerRegisterFrameEvent(pageTrg, factionscourge, FRAMEEVENT_CONTROL_CLICK)
        call BlzTriggerRegisterFrameEvent(pageTrg, factioncult, FRAMEEVENT_CONTROL_CLICK)
        call BlzTriggerRegisterFrameEvent(pageTrg, heroestalents, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(pageTrg, function UniqueArmoryPageTrg )

        //set iconbutton = BlzCreateFrameByType("BUTTON", "", heroestalents, "IconButtonTemplate", 0)
        //call BlzFrameSetEnable(iconbutton, false)

        call UniqueArmory_UniqueArmoryUpdatePointsAndTexts()

        call BlzFrameSetVisible(box, true)
        call BlzFrameSetVisible(scourgebase, false)
        call BlzFrameSetVisible(scourgeunits, false)
        call BlzFrameSetVisible(cultbase, false)
        call BlzFrameSetVisible(cultunits, false)

        call BlzFrameSetVisible(heroestalentscontainer, false)

        set startmissionTrg = null
        set resetheroespointsTrg = null
        set resetcultpointsTrg = null
        set resetscourgepointsTrg = null
        set pageTrg = null
    endfunction
endlibrary

1688270699808.png
 
Top