Jump to content

Scoreboard Con imagenes


0xCiBeR

Recommended Posts

  • MTA Team

Hola lo que deseo es agregar un sistema de rangos (medallas) en las cual yo pueda darle cierta imagen, ocea medalla a un jugador en particular..Se como hacer para que el scoreboard dibuje las imagenes y ya lo tengo editado..Ahora..Suponiendo que mi columna donde quiero mis medallas se llama "Rank" y mis imagenes son 0.png 01.png 02.png etc..Como hago para indicarle al scoreboard que imagen dibujar? Gracias!

Link to comment
  • MTA Team

La parte del scoreboard? Ok

elseif column.name == "RankTest" then 
                                        dxDrawImage( topX+theX, y-s(0.5), 30, 30, content, 0, 0, 0, cWhite, drawOverGUI ) 

Link to comment
  • MTA Team

Bien, y como hago para que el scoreboard lea ese elementData? que le agrego ami linea?

Y otra cosita..Me indicas si puse en el lugar indicado lo de dibujar imagenes en el scoreboard? Gracias

-- 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 = true
useAnimation = true
scoreboardIsToggleable = true
showServerInfo = true
showGamemodeInfo = false
showTeams = true
useColors = true
drawSpeed = 1
scoreboardScale = 1
teamHeaderFont = "clear"
contentFont = "default-bold"
columnFont = "default-bold"
serverInfoFont = "sans"
rmbFont = "clear"
cBlack = tocolor( 0, 0, 0 )
cWhite = tocolor( 255, 255, 255 )
cRed = tocolor( 255, 0, 0 )
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
}
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" )
       
        addEventHandler( "onClientRender", getRootElement(), drawScoreboard )
        triggerServerEvent( "onClientDXScoreboardResourceStart", getRootElement() )
        readScoreboardSettings()
        triggerServerEvent( "requestServerInfo", getRootElement() )
 
        colorPicker.constructor()
    end
)
 
addEventHandler( "onClientPlayerQuit", getRootElement(),
    function()
        selectedRows[source] = nil
    end
)
 
function sendServerInfo( output )
    serverInfo = output
end
addEvent( "sendServerInfo", true )
addEventHandler( "sendServerInfo", getResourceRootElement( getThisResource() ), 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 #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),
                   
                    ["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(),
                   
Link to comment
  • MTA Team

Ok 2 cosas mas.. El problema ahora es que la imagen es grande (quiero que sea asi) pero la linea del nombre no se ajusta al tamaño de la imagen..No se si me explico..Ocea que la imagen queda bien pero, no se ajusta el espacio de acuerdo al nombre..

Link to comment
  • Recently Browsing   0 members

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