• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

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

Status
Not open for further replies.
Level 10
Joined
May 12, 2018
Messages
147
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
 
Status
Not open for further replies.
Top