Print(('Converting %s user inventories to new data format'):format(total))
for i = 1, total do
count += 1
local inventory, slot = {}, 0
local items = users[i].inventory and json.decode(users[i].inventory) or {}
local accounts = users[i].accounts and json.decode(users[i].accounts) or {}
local loadout = users[i].loadout and json.decode(users[i].loadout) or {}
for k, v in pairs(accounts) do
if type(v) == 'table' then break end
if server.accounts[k] and Items(k) and v > 0 then
slot += 1
inventory[slot] = {slot=slot, name=k, count=v}
end
end
for k in pairs(loadout) do
local item = Items(k)
if item then
slot += 1
inventory[slot] = {slot=slot, name=k, count=1, metadata = {durability=100}}
if item.ammoname then
inventory[slot].metadata.ammo = 0
inventory[slot].metadata.components = {}
inventory[slot].metadata.serial = GenerateSerial()
end
end
end
for k, v in pairs(items) do
if type(v) == 'table' then break end
if Items(k) and v > 0 then
slot += 1
inventory[slot] = {slot=slot, name=k, count=v}
end
end
parameters[count] = {json.encode(inventory), users[i].identifier}
end
MySQL.prepare.await('UPDATE users SET inventory = ? WHERE identifier = ?', parameters)
Print('Successfully converted user inventories')
started = false
end
local function ConvertQB()
if started then
return warn('Data is already being converted, please wait..')
end
started = true
local users = MySQL.query.await('SELECT citizenid, inventory, money FROM players')
if not users then return end
local count = 0
local parameters = {}
for i = 1, #users do
local inventory, slot = {}, 0
local user = users[i]
local items = user.inventory and json.decode(user.inventory) or {}
local accounts = user.money and json.decode(user.money) or {}
for k, v in pairs(accounts) do
if type(v) == 'table' then break end
if k == 'cash' then k = 'money' end
if server.accounts[k] and Items(k) and v > 0 then
slot += 1
inventory[slot] = {slot=slot, name=k, count=v}
end
end
local shouldConvert = false
for _, v in pairs(items) do
if Items(v?.name) then
slot += 1
inventory[slot] = {slot=slot, name=v.name, count=v.amount, metadata = type(v.info) == 'table' and v.info or {}}
if v.type == "weapon" then
inventory[slot].metadata.durability = v.info.quality or 100
inventory[slot].metadata.ammo = v.info.ammo or 0
inventory[slot].metadata.components = {}
inventory[slot].metadata.serial = v.info.serie or GenerateSerial()
inventory[slot].metadata.quality = nil
end
end
shouldConvert = v.amount and true
end
|