Jump to content

Scoreboard Image


downight

Recommended Posts

How to add an image so it opens and closes when you press TAB? My code:

-- THESE CAN BE CHANGED 
triggerKey = "tab" -- default button to open/close scoreboard
settingsKey = "F7" -- default button to open the settings window
drawOverGUI = true -- draw scoreboard over gui?
seperationSpace = 80 -- the space between top/bottom screen and scoreboard top/bottom in pixels
 
-- BUT DON'T TOUCH THESE
scoreboardToggled = false
scoreboardForced = false
scoreboardDrawn = false
forceScoreboardUpdate = false
useAnimation = true
scoreboardIsToggleable = false
showServerInfo = false
showGamemodeInfo = false
showTeams = true
useColors = true
drawSpeed = 1
scoreboardScale = 1
teamHeaderFont = "clear"
contentFont = "default-bold"
columnFont = "default-bold"
serverInfoFont = "default"
rmbFont = "clear"
cBlack = tocolor( 0, 0, 0 )
cWhite = tocolor( 255, 255, 255 )
cSettingsBox = tocolor( 255, 255, 255, 150 )
MAX_PRIRORITY_SLOT = 500
 
scoreboardColumns = {}
resourceColumns = {}
scoreboardDimensions = { ["width"] = 0, ["height"] = 0, ["phase"] = 1, ["lastSeconds"] = 0 }
scoreboardTicks = { ["lastUpdate"] = 0, ["updateInterval"] = 500 }
scoreboardContent = {}
firstVisibleIndex = 1
sortBy = { ["what"] = "__NONE__", ["dir"] = -1 } -- -1 = dec, 1 = asc
sbOutOffset, sbInOffset = 1, 1
sbFont = "clear"
sbFontScale = 0.68
serverInfo = {}
fontScale = { -- To make all fonts be equal in height
    ["default"] = 1.0,
    ["default-bold"] = 1.0,
    ["clear"] = 1.0,
    ["arial"] = 1.0,
    ["sans"] = 1.0,
    ["pricedown"] = 0.5,
    ["bankgothic"] = 0.5,
    ["diploma"] = 0.5,
    ["beckett"] = 0.5
}
customFont = "default-bold"
fontScaleRace = 5
colorCode = {128,255,0}
 
selectedRows = {}
 
addEvent( "onClientPlayerScoreboardClick" )
 
addEventHandler( "onClientResourceStart", getResourceRootElement( getThisResource() ),
    function ( resource )
        cScoreboardBackground = tocolor( defaultSettings.bg_color.r, defaultSettings.bg_color.g, defaultSettings.bg_color.b, defaultSettings.bg_color.a )
        cSelection = tocolor( defaultSettings.selection_color.r, defaultSettings.selection_color.g, defaultSettings.selection_color.b, defaultSettings.selection_color.a )
        cHighlight = tocolor( defaultSettings.highlight_color.r, defaultSettings.highlight_color.g, defaultSettings.highlight_color.b, defaultSettings.highlight_color.a )
        cHeader = tocolor( defaultSettings.header_color.r, defaultSettings.header_color.g, defaultSettings.header_color.b, defaultSettings.header_color.a )
        cTeam = tocolor( defaultSettings.team_color.r, defaultSettings.team_color.g, defaultSettings.team_color.b, defaultSettings.team_color.a )
        cBorder = tocolor( defaultSettings.border_color.r, defaultSettings.border_color.g, defaultSettings.border_color.b, defaultSettings.border_color.a )
        cServerInfo = tocolor( defaultSettings.serverinfo_color.r, defaultSettings.serverinfo_color.g, defaultSettings.serverinfo_color.b, defaultSettings.serverinfo_color.a )
        cContent = tocolor( defaultSettings.content_color.r, defaultSettings.content_color.g, defaultSettings.content_color.b, defaultSettings.content_color.a )
       
        bindKey( triggerKey, "down", "Toggle scoreboard", "1" )
        bindKey( triggerKey, "up", "Toggle scoreboard", "0" )
        bindKey( settingsKey, "down", "Open scoreboard settings", "1" )
        local resource = getResourceFromName("race")
        if resource then
            customFont,fontScaleRace,colorCode = call(resource,"getRaceSettings")
            if not customFont then customFont = "default-bold" end
            if not customFont then customFont = "default-bold" end
            if not fontScaleRace then fontScaleRace = 5 end
            if not colorCode then colorCode = {128,255,0} end
        end
       
        addEventHandler( "onClientRender", getRootElement(), drawScoreboard )
        triggerServerEvent( "onClientDXScoreboardResourceStart", getRootElement() )
        readScoreboardSettings()
        triggerServerEvent( "requestServerInfo", localPlayer )
       
        colorPicker.constructor()
    end
)
 
function updateCustomSettings(customFontRace,fontScaleRaceRace,colorCodeRace)
    customFont,fontScaleRace,colorCode = customFontRace,fontScaleRaceRace,colorCodeRace
    readScoreboardSettings()
end
addEvent("onRaceWantUpdateInterfaceData",true)
addEventHandler("onRaceWantUpdateInterfaceData",getRootElement(),updateCustomSettings)
 
 
addEventHandler( "onClientPlayerQuit", getRootElement(),
    function()
        selectedRows[source] = nil
    end
)
 
function sendServerInfo( output )
    serverInfo = output
end
addEvent( "sendServerInfo", true )
addEventHandler( "sendServerInfo", getRootElement(), sendServerInfo )
 
function toggleScoreboard( _, state )
    state = iif( state == "1", true, false )
    if scoreboardIsToggleable and state then
        scoreboardToggled = not scoreboardToggled
    elseif not scoreboardIsToggleable then
        scoreboardToggled = state
    end
end
addCommandHandler( "Toggle scoreboard", toggleScoreboard )
 
function openSettingsWindow()
    if scoreboardDrawn then
        local sX, sY = guiGetScreenSize()
        if not (windowSettings and isElement( windowSettings ) and guiGetVisible( windowSettings )) then
            --createScoreboardSettingsWindow( sX-323, sY-350 )
            --showCursor( true )
        elseif isElement( windowSettings ) then
            --destroyScoreboardSettingsWindow()
        end
    end
end
addCommandHandler( "Open scoreboard settings", openSettingsWindow )
 
addCommandHandler( "scoreboard",
    function ()
        scoreboardToggled = not scoreboardToggled
    end
)
 
function iif( cond, arg1, arg2 )
    if cond then
        return arg1
    end
    return arg2
end
 
function doDrawScoreboard( rtPass, onlyAnim, sX, sY )
    if getElementData(localPlayer,"loginState") then return end
    if #scoreboardColumns ~= 0 then
 
        --
        -- In/out animation
        --
        local currentSeconds = getTickCount() / 1000
        local deltaSeconds = currentSeconds - scoreboardDimensions.lastSeconds
        scoreboardDimensions.lastSeconds = currentSeconds
        deltaSeconds = math.clamp( 0, deltaSeconds, 1/25 )
           
        if scoreboardToggled or scoreboardForced then
            local phases = {
                [1] = {
                    ["width"]       = s(10),
                    ["height"]      = s(5),
                   
                    ["incToWidth"]  = s(10),
                    ["incToHeight"] = s(5),
               
                    ["decToWidth"]  = 0,
                    ["decToHeight"] = 0
                },
                [2] = {
                    ["width"]   = s(40),
                    ["height"]  = s(5),
                       
                    ["incToWidth"]  = calculateWidth(),
                    ["incToHeight"] = s(5),
                       
                    ["decToWidth"]  = s(10),
                    ["decToHeight"] = s(5)
                       
                },
                [3] = {
                    ["width"]       = calculateWidth(),
                    ["height"]      = s(30),
                       
                    ["incToWidth"]  = calculateWidth(),
                    ["incToHeight"] = calculateHeight(),
                       
                    ["decToWidth"]  = calculateWidth(),
                    ["decToHeight"] = s(5)
                }
            }
       
            if not useAnimation then
                scoreboardDimensions.width = calculateWidth()
                scoreboardDimensions.height = calculateHeight()
                scoreboardDimensions.phase = #phases
            end
           
            local maxChange = deltaSeconds * 30*drawSpeed
            local maxWidthDiff = math.clamp( -maxChange, phases[scoreboardDimensions.phase].incToWidth - scoreboardDimensions.width, maxChange )
            local maxHeightDiff = math.clamp( -maxChange, phases[scoreboardDimensions.phase].incToHeight - scoreboardDimensions.height, maxChange ) 
           
            if scoreboardDimensions.width < phases[scoreboardDimensions.phase].incToWidth then
                scoreboardDimensions.width = scoreboardDimensions.width + maxWidthDiff * phases[scoreboardDimensions.phase].width
                if scoreboardDimensions.width > phases[scoreboardDimensions.phase].incToWidth then
                    scoreboardDimensions.width = phases[scoreboardDimensions.phase].incToWidth
                end
            elseif scoreboardDimensions.width > phases[scoreboardDimensions.phase].incToWidth and not scoreboardDrawn then
                scoreboardDimensions.width = scoreboardDimensions.width - maxWidthDiff * phases[scoreboardDimensions.phase].width
                if scoreboardDimensions.width < phases[scoreboardDimensions.phase].incToWidth then
                    scoreboardDimensions.width = phases[scoreboardDimensions.phase].incToWidth
                end
            end
               
            if scoreboardDimensions.height < phases[scoreboardDimensions.phase].incToHeight then
                scoreboardDimensions.height = scoreboardDimensions.height + maxHeightDiff * phases[scoreboardDimensions.phase].height
                if scoreboardDimensions.height > phases[scoreboardDimensions.phase].incToHeight then
                    scoreboardDimensions.height = phases[scoreboardDimensions.phase].incToHeight
                end
            elseif scoreboardDimensions.height > phases[scoreboardDimensions.phase].incToHeight and not scoreboardDrawn then
                scoreboardDimensions.height = scoreboardDimensions.height - maxHeightDiff * phases[scoreboardDimensions.phase].height
                if scoreboardDimensions.height < phases[scoreboardDimensions.phase].incToHeight then
                    scoreboardDimensions.height = phases[scoreboardDimensions.phase].incToHeight
                end
            end
               
            if  scoreboardDimensions.width == phases[scoreboardDimensions.phase].incToWidth and
                scoreboardDimensions.height == phases[scoreboardDimensions.phase].incToHeight then
                if phases[scoreboardDimensions.phase + 1] then
                    scoreboardDimensions.phase = scoreboardDimensions.phase + 1
                else
                    if not scoreboardDrawn then
                        bindKey( "mouse2", "both", showTheCursor )
                        bindKey( "mouse_wheel_up", "down", scrollScoreboard, -1 )
                        bindKey( "mouse_wheel_down", "down", scrollScoreboard, 1 )
                        addEventHandler( "onClientClick", getRootElement(), scoreboardClickHandler )
                        if not (windowSettings and isElement( windowSettings )) then
                            showCursor( false )
                        end
                        --triggerServerEvent( "requestServerInfo", getRootElement() )
                    end
                    scoreboardDrawn = true
                end
            end
        elseif scoreboardDimensions.width ~= 0 and scoreboardDimensions.height ~= 0 then
            local phases = {
                [1] = {
                    ["width"]       = s(10),
                    ["height"]      = s(5),
                   
Link to comment

You mean that you want to change the black rectangle with an img ? If so replace the

dxDrawRectangle 

with

dxDrawImage 

Edit :

@Line340 Replace it with this function

dxDrawImage( ( sX / 2 ) - ( scoreboardDimensions.width / 2 ), ( sY / 2 ) - ( scoreboardDimensions.height / 2 ), scoreboardDimensions.width, scoreboardDimensions.height, 'imgPath', 0, 0, 0, tocolor( 255, 255, 255 ), drawOverGUI ) 

And don't forget to include the Img path.

Link to comment
My code

Yeah, well, that ain't true.

You'd have to change the scoreboard size so your image fits in, and add the function Blaawee said, near where he said. You'll have to discover how to do it on your own, son: this is kinda messy, and in fact it doesn't feel like you should be doing anything this hard yet. If you really plan to, read the page of documentation for dxDrawImage (click on the red highlighted text up there), so you don't screw everything up. You can always ask for help about what are you doing wrong, but you'd be better trying to do something easier so you actually LEARN how to script, before moving on to DirectX Drawing.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...