Jump to content

[DUDA] Guardar Informacion en una DB


Recommended Posts

Hola buenas, siempre he sido malo con las DB xD...

Quiero tomar unos datos y guardarlos.

Ejemplo al Conectarse un usuario de el clan XANA por ejemplo se guarde en la DB se que es contadores pero nose usar DB.

asi por ejemplo se conectaron 10 del clan entonces queda guardado XANA 10, igual con otro clan por ejemplo LBR 50 donde LBR es el nombre del clan y 50 el numero de usuarios de ese clan que se han conectado nose si me explico.

Y como podria recuperar esa informacion una vez ya guardado?

Link to comment

¿Hay algún motivo específico por el que quieras usar una base de datos SQLite o MySQL? Porque si no, es el peor método posible para lo que describes en tu ejemplo (y para cualquier tipo de guardado que no sea altamente masivo en información).

Link to comment
--[[ 
local db = dbConnect("sqlite", "test.db") 
  
function start() 
    dbExec(db, "CREATE TABLE IF NOT EXISTS my_members(clan TEXT, members INTEGER)") 
    for _, player in ipairs(getElementsByType("player")) do 
        local myTeam = getPlayerTeam(player) 
        if myTeam then 
            local teamName = getTeamName(myTeam) 
            local sqlr = dbPoll(dbQuery(db,"SELECT * FROM my_members WHERE clan=?", teamName), -1) 
            if (#sqlr == 0) then 
                dbExec(db, "INSERT INTO my_members(clan,members) VALUES(?,?)", teamName, countPlayersInTeam(myTeam)) 
                else 
                dbExec(db, "UPDATE my_members SET clan='"..teamName.."', members='"..countPlayersInTeam(myTeam).."' WHERE clan=?", teamName) 
            end 
        end 
    end 
end 
addEventHandler("onResourceStart", resourceRoot, start) 
]] 
-- aqui consigo los valores de la columna 'members' siempre y cuando el nombre de un clan es valido. 
function getMemberCount(teamName) 
    if type(team) ~= "string" or not team then return end 
    local results = dbPoll(dbQuery(db,"SELECT * FROM my_members WHERE clan=?", tostring(teamName)), -1) 
    if (#results ~= 0) then 
        return #results 
    end 
    return 0 
end 
  
--[[ 
-- aqui un claro ejemplo de querer obtener la cantidad. 
addCommandHandler("getmember", 
function(player) 
    local team = getPlayerTeam(player) 
    if team then 
        outputChatBox("Mi clan tiene "..getMemberCount(getTeamName(team)).." persona/s", player) 
    end 
end) 
]] 
  

No lo he probado pero debe funcionar.

Link to comment
¿Hay algún motivo específico por el que quieras usar una base de datos SQLite o MySQL? Porque si no, es el peor método posible para lo que describes en tu ejemplo (y para cualquier tipo de guardado que no sea altamente masivo en información).

Quiero hacer un top kills pero de clanes

Link to comment
Realmente, con simples setAccountData puedes hacer eso. Es decir, cada día a una determinada hora, puedes usar setAccountData (getPlayerAccount(player), "aentradohoy", 0).

Luego cuando el jugador use el login, simplemente cambias el valor de 0 a 1.

setAccountData (getPlayerAccount(player), "aentradohoy", 1)

Ya con eso, después, usas https://wiki.multitheftauto.com/wiki/GetAccounts

usas un for para llamar a todas las cuentas,

y haces la sumatoria de todas las cuentas con su respectiva condicional de si el jugador está en cierto grupo. etc.

pereo el valor no lo quiero guardar en una cuenta, ya que es un top de todos los clanes, por eso necesito guardarlo en db

Link to comment
pereo el valor no lo quiero guardar en una cuenta, ya que es un top de todos los clanes, por eso necesito guardarlo en db

Y además eso consume muchos más recursos que cualquier otro método.

¿El 'top kills' estará en una web o dentro del server?

Si estará sólo en el server, utiliza tablas y luego la ordenas de forma descendente con table.sort.

Link to comment
pereo el valor no lo quiero guardar en una cuenta, ya que es un top de todos los clanes, por eso necesito guardarlo en db

Y además eso consume muchos más recursos que cualquier otro método.

¿El 'top kills' estará en una web o dentro del server?

Si estará sólo en el server, utiliza tablas y luego la ordenas de forma descendente con table.sort.

en el mismo server, ya tengo un top de kills pero de users eso es facil con getAccounts, pero para clanes debo guardarlo de otra forma, como dices en tabla podria pero al pagar el resource se perderia

Link to comment

Me tome la libertad de escribir un código arriba con respecto a recuperar los datos de una DB como lo querías. Como dice Alexs puedes crear una tabla y luego la conviertes en una cadena(string :P) y luego la guardas en la SQL así que tendrás que editar mi código.

Link to comment
  • 2 weeks later...

no logro entender mucho... pero es algo asi?

  
  
local connection = dbConnect ( "sqlite" , "newDB.db" ) 
local queryHandle = dbQuery ( connection , "CREATE TABLE IF NOT EXISTS GangTop (kill TEXT,gang TEXT)" ) 
  
  
Muertes = {} 
  
function KillClan (killer, headshot, weapon) 
gang = getElementData(killer,"gang") 
Muertes[gang] = Muertes[gang] + 1 
outputChatBox(gang.." ahora tiene "..Muertes[gang].." Kills", getRootElement(), 255, 255, 255) 
dbFree ( dbQuery ( connection , "UPDATE GangTop SET column1 = ?" , "row1" ) ) 
outputServerLog ("Tablas Actualziadas") 
end 
addEvent("DanoV2", true) 
addEventHandler("DanoV2", getRootElement(), KillClan) 
  
  

Link to comment
local connection = dbConnect ( "sqlite" , "newDB.db" ) 
dbExec ( connection , "CREATE TABLE IF NOT EXISTS GangTop (kill INTEGER,gang TEXT)" ) 
  
  
Muertes = {} 
  
function KillClan (killer, headshot, weapon) 
    gang = getElementData(killer,"gang") 
    Muertes[gang] = Muertes[gang] + 1 
    outputChatBox(gang.." ahora tiene "..Muertes[gang].." Kills", getRootElement(), 255, 255, 255) 
    local check = dbPoll(dbQuery(connection, "SELECT * FROM GangTop WHERE gang=?", tostring(gang)),-1) 
    if (#check > 0) then 
        dbExec(connection, "UPDATE GangTop SET kill="..tonumber(Muertes[gang]).." WHERE gang=?", tostring(gang)) 
        outputServerLog ("Columna Actualziada") 
        else 
        dbExec(connection, "INSERT INTO GangTop(kill,gang) VALUES(?,?)", tonumber(Muertes[gang]), tostring(gang)) 
        outputServerLog ("Columna Añadida") 
    end 
end 
addEvent("DanoV2", true) 
addEventHandler("DanoV2", getRootElement(), KillClan) 
  

Link to comment
  • Recently Browsing   0 members

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