Olá! Seja bem-vindo(a) ao fórum.
Primeiramente, partindo do princípio de que banco de dados foi feito para salvar dados únicos, e não um objeto, como JSON. Da forma que você está tentando fazer, fica um pouco mais complicado. Pois, você iria precisar:
Criar uma função, cuja recebe o objeto JSON do db;
Converter para um formato que o MTA entenda, usando fromJSON;
Inserir o resultado do fromJSON em uma tabela, com seus respectivos índice e valor.
Uma vez com a tabela contendo os índices e valores, você iria alterar o valor de alguma delas e converter novamente para JSON, usando toJSON. Daí você estaria pronto para salvar novamente os itens do jogador no banco de dados.
Exemplo:
local playerItems = [[
[ { "maconha": [ 1, 1 ], "cocaina": [ 5, 2 ], "factionid": 1, "anfetamina": [ 3, 3 ], "crack": [ 1, 4 ], "heroina": [ 25, 5 ], "alcool": [ 0, 0 ] } ]
]] -- Pegando como exemplo o seu, da forma que retornaria do banco de dados
function convertJSONToTable(object) -- Função para converter JSON em uma tabela no qual poderemos modificar
local JSON = fromJSON(object)
local data = {}
for index, value in pairs(JSON) do
data[index] = value
end
return data
end
local myItems = convertJSONToTable(playerItems)
-- Modificando o valor
myItems["crack"][1] = 2 -- [edita_este_valor, 4]
myItems["crack"][2] = 6 -- [1, edita_este_valor]
local modifiedItems = toJSON(myItems)
-- Salve o "modifiedItems" no banco de dados