Jaksam Inventory
AddEventHandler('inventory:refresh',function()
local success, items = pcall(MySQL.query.await, 'SELECT * FROM av_items')
Script.Items = Script.Items or {}
if success and items and next(items) then
local dump = {}
local resource = GetCurrentResourceName()
local path = GetResourcePath(resource)
for i = 1, #items do
local item = items[i]
if not Script.Items[item.name] then
item.close = true
item.stackable = true
item.description = item.description
item.weight = toFloat(item.weight)
item.type = 'item'
dump[i] = item
if item.image then
PerformHttpRequest(item.image, function (errorCode, resultData, resultHeaders)
if errorCode >= 200 and errorCode < 300 then
local image = assert(io.open(path..'/_images/'..item.name..'.png', "wb"))
image:write(resultData)
image:flush()
image:close()
else
print("We couldn't download item image for product "..item.name..", this is not a script problem, possibly a not valid url or some firewall blocking the request (?)")
end
end)
end
end
end
if table.type(dump) ~= "empty" then
local file = {string.strtrim(LoadResourceFile(resource, '_data/items.lua'))}
file[1] = file[1]:gsub('}$', '')
local itemFormat = [[
['%s'] = {
label = '%s',
weight = %s,
type = 'item',
stackable = %s,
close = %s,
description = %s
},
]]
local fileSize = #file
for _, item in pairs(dump) do
local formatName = item.name:gsub("'", "\\'"):lower()
if not Script.Items[formatName] then
fileSize += 1
file[fileSize] = (itemFormat):format(formatName, item.label:gsub("'", "\\'"):lower(), item.weight, item.stackable, item.close, item.description and ('"%s"'):format(item.description) or 'nil')
Script.Items[formatName] = item
end
end
file[fileSize+1] = '}'
SaveResourceFile(resource, '_data/items.lua', table.concat(file), -1)
end
end
end)
function toFloat(number)
if not number then return 1.0 end
if tonumber(number) >= 100 then
return 1.0
end
return tonumber(number) + 0.0
endLast updated