Jump to content

Ayuda Total Kills


#Dv^

Recommended Posts

Hola!

Disculpen pero tengo un panel que marca un top 10 del total de asesinatos que hizo cada player, en el DB se guardan las kills de cada cuenta, pero me podrían explicar como debo vincular eso con el panel o que debo usar para llegar a formular eso?

Si es mucho pedir se los agradezco.

Link to comment

¿Me podrías algo en eso? Apenas estoy empezando con esto del Db :v

Tengo esto

addEventHandler ( "onPlayerWasted", root, 
    function( totalAmmo, killer, killerWeapon, bodypart, stealth ) 
        if killer then 
            local account = getPlayerAccount ( killer ) 
            if killer ~= source then 
                setAccountData( account,"totalkillsdeaths.Kills",tonumber( getAccountData( account,"totalkillsdeaths.Kills" ) or 0 ) +1 ) 
                setElementData( killer, "T/K", tonumber( getAccountData( account,"totalkillsdeaths.Kills" ) ) ) 
            end  
        else 
            local accountSource = getPlayerAccount ( source ) 
            setAccountData( accountSource,"totalkillsdeaths.Deaths",tonumber( getAccountData(accountSource,"totalkillsdeaths.Deaths") or 0 ) +1 ) 
            setElementData( source, "T/D", tonumber( getAccountData( accountSource,"totalkillsdeaths.Deaths" ) ) ) 
             
        end 
    end 
)       
  
addEventHandler( "onPlayerLogin",root, 
    function( thePreviousAccount, theCurrentAccount, autoLogin ) 
        local account = getPlayerAccount ( source ) 
        if not getAccountData( account,"totalkillsdeaths.Kills" ) and not getAccountData( account,"totalkillsdeaths.Deaths" ) then 
            setAccountData( account,"totalkillsdeaths.Kills",0 ) 
            setAccountData( account,"totalkillsdeaths.Deaths",0 ) 
        end 
        setElementData( source,"T/D",tonumber( getAccountData( account,"totalkillsdeaths.Deaths" ) or 0 ) ) 
        setElementData( source,"T/K",tonumber( getAccountData( account,"totalkillsdeaths.Kills" ) or 0 ) ) 
    end 
 ) 
  
addEventHandler( "onResourceStart",resourceRoot, 
    function( ) 
        outputDebugString( "add Total Kills to scoreboard Return: "..tostring( 
            call( getResourceFromName("Scoreboard"), "addScoreboardColumn", "T/K",root,5, 0.050 ) 
        ) ) 
         
         
        outputDebugString( "add Total Deaths to scoreboard Return: "..tostring( 
            call( getResourceFromName("Scoreboard"), "addScoreboardColumn", "T/D",root,5, 0.050 ) 
        ) ) 
    end 
) 
  

¿Esto debe hacer un trigger al client?

Link to comment

getAccounts devuelve una tabla con todas las cuentas en el servidor.

local cuentas = { } 
  
function obtenerCuentas( ) 
    local allAccts = getAccounts( ) 
    cuentas = { } -- Limpiamos la tabla por si hay una cuenta nueva o algo. 
    for i=1, #allAccts do 
        local cuenta = allAccts[ i ] 
        table.insert( cuentas, cuenta ) 
    end 
end 

Esto lo que hace es obtener las cuentas de todo el servidor e introducirlas en una tabla. Lo que podrías hacer a continuación es loopear esa tabla nuevamente y sacarle el accountData, enviandolo al cliente y de ahí comparando.

Link to comment
getAccounts devuelve una tabla con todas las cuentas en el servidor.
local cuentas = { } 
  
function obtenerCuentas( ) 
    local allAccts = getAccounts( ) 
    cuentas = { } -- Limpiamos la tabla por si hay una cuenta nueva o algo. 
    for i=1, #allAccts do 
        local cuenta = allAccts[ i ] 
        table.insert( cuentas, cuenta ) 
    end 
end 

Esto lo que hace es obtener las cuentas de todo el servidor e introducirlas en una tabla. Lo que podrías hacer a continuación es loopear esa tabla nuevamente y sacarle el accountData, enviandolo al cliente y de ahí comparando.

Por que crear otra función que haga exactamente lo mismo que otra?

Link to comment
  
  
function getPlayerFromNamePart(name) 
    if name then 
        for i, player in ipairs(getElementsByType("player")) do 
            if string.find(getPlayerName(player):lower(), tostring(name):lower(), 1, true) then 
                return player 
            end 
        end 
    end 
    return false 
end 
  
function createTopSystem( player ) 
    if not isElement( player ) then 
        return 
    end 
    local Top = {} 
    local allAccts = getAccounts( ) 
    for i = 1, #allAccts do 
        local cuenta = allAccts[ i ] 
        table.insert(Top,cuenta) 
    end 
    setTimer( 
    function() 
        for k, data in ipairs(Top) do 
            if k == 1 then 
                triggerClientEvent (player,"deltTop",player) 
            end  
            triggerClientEvent (player,"updateTop",player,tostring(data.name),tostring(data.score),tonumber(k)) 
            if k == 10 then 
                    table.remove(Top) 
                break 
            end 
        end 
    end, 
        500, 
    1 
    ) 
end 
  
  
addEvent("getTop", true) 
addEventHandler("getTop", root, 
    function() 
        createTopSystem( source ) 
    end 
) 

Intenté así pero me da error

Gracias por la ayuda

Link to comment
  • Recently Browsing   0 members

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