Jump to content

toJSON e fromJSON


Recommended Posts

Basicamente salvar uma tabela usada nos códigos lua diretamente no SQL dá ruim, o toJSON e fromJSON servem para fazer essa conversão.

Aqui o exemplo de um sistema de inventário, onde quando o player sai do servidor, o inventário dele (que é uma tabela) é convertido usando o toJSON e depois hospedado no SQLite:

function onQuit()
    local id_ = getElementData(source, "ID")
    local inv_ = toJSON(inventario[source])
    executeSQLQuery("UPDATE inventario_players SET inv=? WHERE id=?", inv_, id_)
end
addEventHandler("onPlayerQuit", root, onQuit)

E agora para pegar a tabela no SQLite quando o player logar no servidor, convertê-la e setar como o inventário do jogador:

function onLogin()
    local id_ = getElementData(source, "ID")
    local data = executeSQLQuery("SELECT inv FROM inventario_players WHERE id=?", id_)
    inventario[source] = {}
    inventario[source] = fromJSON(data[1]["inv"])
end
addEventHandler("onPlayerLogin", root, onLogin)
  • Thanks 1
Link to comment
  • 2 weeks later...
On 23/01/2022 at 22:06, ber said:

Basicamente salvar uma tabela usada nos códigos lua diretamente no SQL dá ruim, o toJSON e fromJSON servem para fazer essa conversão.

Aqui o exemplo de um sistema de inventário, onde quando o player sai do servidor, o inventário dele (que é uma tabela) é convertido usando o toJSON e depois hospedado no SQLite:

function onQuit()
    local id_ = getElementData(source, "ID")
    local inv_ = toJSON(inventario[source])
    executeSQLQuery("UPDATE inventario_players SET inv=? WHERE id=?", inv_, id_)
end
addEventHandler("onPlayerQuit", root, onQuit)

E agora para pegar a tabela no SQLite quando o player logar no servidor, convertê-la e setar como o inventário do jogador:

function onLogin()
    local id_ = getElementData(source, "ID")
    local data = executeSQLQuery("SELECT inv FROM inventario_players WHERE id=?", id_)
    inventario[source] = {}
    inventario[source] = fromJSON(data[1]["inv"])
end
addEventHandler("onPlayerLogin", root, onLogin)

Entendi um pouco, mas n é possivel usar em uma sql a parte ?

Link to comment
  • 3 weeks later...
On 06/02/2022 at 11:26, Fonseca_ said:

Entendi um pouco, mas n é possivel usar em uma sql a parte ?

O a lógica do exemplo que ele deu é a mesma para quando utilizar SQLite no seu próprio resource (um arquivo independente como db.sqlite, etc).

Ainda assim, não é uma boa prática utilizar as strings JSON em uma linha/coluna do banco de dados. Há maneiras melhores de fazer isso. ?

  • Like 1
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...