#Dv^ Posted August 3, 2016 Share Posted August 3, 2016 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
aka Blue Posted August 3, 2016 Share Posted August 3, 2016 Debes usar las funciones db. Link to comment
#Dv^ Posted August 3, 2016 Author Share Posted August 3, 2016 ¿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
aka Blue Posted August 4, 2016 Share Posted August 4, 2016 Ah pero si es accountData es mas sencillo... Link to comment
#Dv^ Posted August 4, 2016 Author Share Posted August 4, 2016 Tengo un panel top 10 kills, quería saber como hacer para que en el panel salga de primero a decimo sus kills Link to comment
aka Blue Posted August 4, 2016 Share Posted August 4, 2016 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
Enargy, Posted August 4, 2016 Share Posted August 4, 2016 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
#Dv^ Posted August 4, 2016 Author Share Posted August 4, 2016 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
Enargy, Posted August 4, 2016 Share Posted August 4, 2016 Si quieres mostrar al primero que tenga mas kills usa table.sort y haces la comparacion de mayor a menor. Link to comment
#Dv^ Posted August 5, 2016 Author Share Posted August 5, 2016 EDIT: Gracias por la ayuda, pude arreglarlo Link to comment
Recommended Posts