339 lines
		
	
	
	
		
			16 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			339 lines
		
	
	
	
		
			16 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| -- with this command you can integrate your qb inventories into the new system
 | |
| -- if you write a code for different inventories please share it with us
 | |
| -- Commands only available from cmd/live consol
 | |
| 
 | |
| local function convertItemsFile()
 | |
|     local addedAnyItems = false
 | |
|     if config.framework == "qb" then
 | |
|         local QBCore = exports['qb-core']:GetCoreObject({ "Shared" })
 | |
|         local items = QBCore.Shared.Items
 | |
|         if items and table.type(items) ~= 'empty' then
 | |
|             for k, item in pairs(items) do
 | |
|                 if type(item) == 'table' then
 | |
|                     item.name = tgiCore.trim(string.lower(item.name or k))
 | |
|                     if not string.find(item.name, "weapon_") and not itemsData[item.name] then
 | |
|                         item.type = item.type or 'item'
 | |
|                         item.image = item.image or item.name .. ".webp"
 | |
|                         item.unique = item.unique or false
 | |
|                         item.useable = item.useable or false
 | |
|                         item.shouldClose = item.shouldClose or false
 | |
|                         item.description = item.description or ""
 | |
|                         itemsData[item.name] = item
 | |
|                         addedAnyItems = true
 | |
|                     end
 | |
|                 end
 | |
|             end
 | |
|         end
 | |
|     elseif config.framework == "esx" then
 | |
|         local items = MySQL.query.await("SELECT * FROM items")
 | |
|         if items and table.type(items) ~= 'empty' then
 | |
|             for _, item in pairs(items) do
 | |
|                 item.name = tgiCore.trim(string.lower(item.name))
 | |
|                 if not string.find(item.name, "weapon_") and not itemsData[item.name] then
 | |
|                     itemsData[item.name] = {
 | |
|                         name = item.name, label = item.label, weight = item.weight, type = 'item', image = item.name .. '.webp', unique = false, useable = true, shouldClose = true, description = ''
 | |
|                     }
 | |
|                     addedAnyItems = true
 | |
|                 end
 | |
|             end
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     if not addedAnyItems then
 | |
|         return tgiCore.DebugLog('No items added to items.lua file! Your tgiann-inventory items file already converted!')
 | |
|     end
 | |
| 
 | |
|     local fileContent = "itemsData = " .. tgiCore.SerializeTable(itemsData)
 | |
|     SaveResourceFile("tgiann-inventory", 'items/items.lua', fileContent, -1)
 | |
|     if config.framework == "qb" then
 | |
|         tgiCore.DebugLog('Your items have been copied from the QBCore.Shared.Items! You should restart the resource to load the new items! You can edit your items from items/items.lua file.')
 | |
|     else
 | |
|         tgiCore.DebugLog('Your items have been copied from the items database! You should restart the resource to load the new items! You can edit your items from items/items.lua file.')
 | |
|     end
 | |
| end
 | |
| 
 | |
| local function convertItems(items)
 | |
|     if not items then return "[]" end
 | |
|     items = json.decode(items)
 | |
|     if not items then return "[]" end
 | |
|     for _, itemData in pairs(items) do
 | |
|         if itemData then
 | |
|             itemData.info = itemData.metadata or itemData.info
 | |
|             itemData.amount = itemData.count or itemData.amount
 | |
|             if string.find(itemData.name, "weapon_") then itemData.info = nil end
 | |
|         end
 | |
|     end
 | |
|     return json.encode(items)
 | |
| end
 | |
| 
 | |
| local function checkTableExist(table)
 | |
|     return MySQL.single.await("SHOW TABLES LIKE ?", { table })
 | |
| end
 | |
| 
 | |
| RegisterCommand(config.commands.convert.convertItemsFile, function(source)
 | |
|     if source > 0 then return tgiCore.DebugErrorLog("Pls use on server cmd") end
 | |
|     convertItemsFile()
 | |
| end)
 | |
| 
 | |
| -- Qb Inventory
 | |
| RegisterCommand(config.commands.convert.convertqb, function(source)
 | |
|     if source > 0 then return tgiCore.DebugErrorLog("Pls use on server cmd") end
 | |
| 
 | |
|     local newQb = checkTableExist("inventories")
 | |
|     if newQb then
 | |
|         local result = MySQL.query.await('SELECT * FROM inventories')
 | |
|         if result and #result > 0 then
 | |
|             for i = 1, #result do
 | |
|                 local inventory = result[i]
 | |
|                 local items = inventory.items
 | |
|                 local identifier = inventory.identifier
 | |
|                 if identifier:find('trunk-') then
 | |
|                     MySQL.query.await('INSERT INTO `tgiann_inventory_trunkitems` (plate, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                         string.gsub(identifier, "trunk-", ""), items
 | |
|                     })
 | |
|                 elseif identifier:find('glovebox-') then
 | |
|                     MySQL.query.await('INSERT INTO `tgiann_inventory_gloveboxitems` (plate, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                         string.gsub(identifier, "glovebox-", ""), items
 | |
|                     })
 | |
|                 else
 | |
|                     MySQL.query.await('INSERT INTO `tgiann_inventory_stashitems` (stash, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                         identifier, items
 | |
|                     })
 | |
|                 end
 | |
|             end
 | |
|         end
 | |
|         tgiCore.DebugLog("New Qb inventories converted")
 | |
|     else
 | |
|         local response = MySQL.query.await('SELECT * FROM `stashitems`')
 | |
|         if response and next(response) then
 | |
|             for i = 1, #response do
 | |
|                 MySQL.query.await('INSERT INTO `tgiann_inventory_stashitems` (stash, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                     response[i].stash, response[i].items
 | |
|                 })
 | |
|             end
 | |
|             tgiCore.DebugLog("stashitems converted")
 | |
|         end
 | |
| 
 | |
|         local response = MySQL.query.await('SELECT * FROM `trunkitems`')
 | |
|         if response and next(response) then
 | |
|             for i = 1, #response do
 | |
|                 MySQL.query.await('INSERT INTO `tgiann_inventory_trunkitems` (plate, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                     response[i].plate, response[i].items
 | |
|                 })
 | |
|             end
 | |
|             tgiCore.DebugLog("trunkitems converted")
 | |
|         end
 | |
| 
 | |
|         local response = MySQL.query.await('SELECT * FROM `gloveboxitems`')
 | |
|         if response and next(response) then
 | |
|             for i = 1, #response do
 | |
|                 MySQL.query.await('INSERT INTO `tgiann_inventory_gloveboxitems` (plate, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                     response[i].plate, response[i].items
 | |
|                 })
 | |
|             end
 | |
|             tgiCore.DebugLog("gloveboxitems converted")
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     if checkTableExist("players") then
 | |
|         local response = MySQL.query.await('SELECT citizenid, inventory FROM `players`')
 | |
|         if response and next(response) then
 | |
|             for i = 1, #response do
 | |
|                 if response[i].inventory then
 | |
|                     MySQL.query.await('INSERT INTO `tgiann_inventory_player` (citizenid, inventory, clotheinventory) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE inventory = VALUES(inventory), clotheinventory = VALUES(clotheinventory)', {
 | |
|                         response[i].citizenid, response[i].inventory, "[]"
 | |
|                     })
 | |
|                 end
 | |
|             end
 | |
|             tgiCore.DebugLog("Player inventorys converted")
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     convertItemsFile()
 | |
| 
 | |
|     tgiCore.DebugLog("Finished")
 | |
| end)
 | |
| 
 | |
| -- Ox Inventory
 | |
| RegisterCommand(config.commands.convert.convertox, function(source)
 | |
|     if source > 0 then return tgiCore.DebugErrorLog("Pls use on server cmd") end
 | |
|     if not checkTableExist("ox_inventory") then
 | |
|         return tgiCore.DebugErrorLog("Ox Inventory not found")
 | |
|     end
 | |
| 
 | |
|     local response = MySQL.query.await('SELECT name, data FROM `ox_inventory`')
 | |
|     if response and next(response) then
 | |
|         for i = 1, #response do
 | |
|             local owner = response[i].owner or ""
 | |
|             MySQL.query.await('INSERT INTO `tgiann_inventory_stashitems` (stash, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                 response[i].name .. "_" .. owner, convertItems(response[i].data)
 | |
|             })
 | |
|             if response[i].owner then
 | |
|                 tgiCore.DebugWarningLog(string.format("%s Converted but u need the edit open event! When opening the stash you need to send the player id in the stash name! Example: TriggerServerEvent('inventory:server:OpenInventory', 'stash', %s_PlayerData.citizenid)", response[i].name, response[i].name))
 | |
|             end
 | |
|         end
 | |
|         tgiCore.DebugLog("stashitems converted")
 | |
|     end
 | |
| 
 | |
|     if config.framework == "qb" then
 | |
|         local response = MySQL.query.await('SELECT glovebox, trunk, plate FROM `player_vehicles`')
 | |
|         if response and next(response) then
 | |
|             for i = 1, #response do
 | |
|                 MySQL.query.await('INSERT INTO `tgiann_inventory_gloveboxitems` (plate, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                     response[i].plate, convertItems(response[i].glovebox)
 | |
|                 })
 | |
|                 MySQL.query.await('INSERT INTO `tgiann_inventory_trunkitems` (plate, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                     response[i].plate, convertItems(response[i].trunk)
 | |
|                 })
 | |
|             end
 | |
|             tgiCore.DebugLog("gloveboxitems and trunkitems converted")
 | |
|         end
 | |
|     else
 | |
|         local response = MySQL.query.await('SELECT glovebox, trunk, plate FROM `owned_vehicles`')
 | |
|         if response and next(response) then
 | |
|             for i = 1, #response do
 | |
|                 MySQL.query.await('INSERT INTO `tgiann_inventory_gloveboxitems` (plate, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                     response[i].plate, convertItems(response[i].glovebox)
 | |
|                 })
 | |
|                 MySQL.query.await('INSERT INTO `tgiann_inventory_trunkitems` (plate, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                     response[i].plate, convertItems(response[i].trunk)
 | |
|                 })
 | |
|             end
 | |
|             tgiCore.DebugLog("gloveboxitems and trunkitems converted")
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     if config.framework == "qb" then
 | |
|         local response = MySQL.query.await('SELECT citizenid, inventory  FROM `players`')
 | |
|         if response and next(response) then
 | |
|             for i = 1, #response do
 | |
|                 if response[i].inventory then
 | |
|                     MySQL.query.await('INSERT INTO `tgiann_inventory_player` (citizenid, inventory, clotheinventory) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE inventory = VALUES(inventory), clotheinventory = VALUES(clotheinventory)', {
 | |
|                         response[i].citizenid, convertItems(response[i].inventory), "[]"
 | |
|                     })
 | |
|                 end
 | |
|             end
 | |
|             tgiCore.DebugLog("Player inventorys converted")
 | |
|         end
 | |
|     else
 | |
|         local response = MySQL.query.await('SELECT identifier, inventory  FROM `users`')
 | |
|         if response and next(response) then
 | |
|             for i = 1, #response do
 | |
|                 if response[i].inventory then
 | |
|                     MySQL.query.await('INSERT INTO `tgiann_inventory_player` (citizenid, inventory, clotheinventory) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE inventory = VALUES(inventory), clotheinventory = VALUES(clotheinventory)', {
 | |
|                         response[i].identifier, convertItems(response[i].inventory), "[]"
 | |
|                     })
 | |
|                 end
 | |
|             end
 | |
|             tgiCore.DebugLog("Player inventorys converted")
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     tgiCore.DebugLog("Finished")
 | |
| end)
 | |
| 
 | |
| -- qs_inventory
 | |
| RegisterCommand(config.commands.convert.convertqsinv, function(source)
 | |
|     if source > 0 then return tgiCore.DebugErrorLog("Pls use on server cmd") end
 | |
| 
 | |
|     local response = MySQL.query.await('SELECT * FROM `inventory_stash`')
 | |
|     if response and next(response) then
 | |
|         for i = 1, #response do
 | |
|             MySQL.query.await('INSERT INTO `tgiann_inventory_stashitems` (stash, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                 response[i].stash, response[i].items
 | |
|             })
 | |
|         end
 | |
|         tgiCore.DebugLog("inventory_stash converted")
 | |
|     end
 | |
| 
 | |
|     local response = MySQL.query.await('SELECT * FROM `inventory_trunk`')
 | |
|     if response and next(response) then
 | |
|         for i = 1, #response do
 | |
|             MySQL.query.await('INSERT INTO `tgiann_inventory_trunkitems` (plate, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                 response[i].plate, response[i].items
 | |
|             })
 | |
|         end
 | |
|         tgiCore.DebugLog("inventory_trunk converted")
 | |
|     end
 | |
| 
 | |
|     local response = MySQL.query.await('SELECT * FROM `inventory_glovebox`')
 | |
|     if response and next(response) then
 | |
|         for i = 1, #response do
 | |
|             MySQL.query.await('INSERT INTO `tgiann_inventory_gloveboxitems` (plate, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                 response[i].plate, response[i].items
 | |
|             })
 | |
|         end
 | |
|         tgiCore.DebugLog("inventory_glovebox converted")
 | |
|     end
 | |
| 
 | |
|     if config.framework == "qb" then
 | |
|         local response = MySQL.query.await('SELECT citizenid, inventory FROM `players`')
 | |
|         if response and next(response) then
 | |
|             for i = 1, #response do
 | |
|                 if response[i].inventory then
 | |
|                     MySQL.query.await('INSERT INTO `tgiann_inventory_player` (citizenid, inventory, clotheinventory) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE inventory = VALUES(inventory), clotheinventory = VALUES(clotheinventory)', {
 | |
|                         response[i].citizenid, convertItems(response[i].inventory), "[]"
 | |
|                     })
 | |
|                 end
 | |
|             end
 | |
|             tgiCore.DebugLog("Player inventorys converted")
 | |
|         end
 | |
|     else
 | |
|         local response = MySQL.query.await('SELECT identifier, inventory FROM `users`')
 | |
|         if response and next(response) then
 | |
|             for i = 1, #response do
 | |
|                 if response[i].inventory then
 | |
|                     MySQL.query.await('INSERT INTO `tgiann_inventory_player` (citizenid, inventory, clotheinventory) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE inventory = VALUES(inventory), clotheinventory = VALUES(clotheinventory)', {
 | |
|                         response[i].identifier, convertItems(response[i].inventory), "[]"
 | |
|                     })
 | |
|                 end
 | |
|             end
 | |
|             tgiCore.DebugLog("Player inventorys converted")
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     tgiCore.DebugLog("Finished")
 | |
| end)
 | |
| 
 | |
| -- codem-inventory
 | |
| RegisterCommand(config.commands.convert.convertcodeminv, function(source)
 | |
|     if source > 0 then return tgiCore.DebugErrorLog("Pls use on server cmd") end
 | |
| 
 | |
|     local response = MySQL.query.await('SELECT * FROM `codem_new_stash`')
 | |
|     if response and next(response) then
 | |
|         for i = 1, #response do
 | |
|             MySQL.query.await('INSERT INTO `tgiann_inventory_stashitems` (stash, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                 response[i].stashname, response[i].items
 | |
|             })
 | |
|         end
 | |
|         tgiCore.DebugLog("codem_new_stash converted")
 | |
|     end
 | |
| 
 | |
|     local response = MySQL.query.await('SELECT * FROM `codem_new_vehicleandglovebox`')
 | |
|     if response and next(response) then
 | |
|         for i = 1, #response do
 | |
|             MySQL.query.await('INSERT INTO `tgiann_inventory_gloveboxitems` (plate, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                 response[i].plate, response[i].glovebox
 | |
|             })
 | |
| 
 | |
|             MySQL.query.await('INSERT INTO `tgiann_inventory_trunkitems` (plate, items) VALUES (?, ?) ON DUPLICATE KEY UPDATE items = VALUES(items)', {
 | |
|                 response[i].plate, response[i].trunk
 | |
|             })
 | |
|         end
 | |
|         tgiCore.DebugLog("codem_new_vehicleandglovebox converted")
 | |
|     end
 | |
| 
 | |
|     local response = MySQL.query.await('SELECT identifier, inventory FROM `codem_new_inventory`')
 | |
|     if response and next(response) then
 | |
|         for i = 1, #response do
 | |
|             if response[i].inventory then
 | |
|                 MySQL.query.await('INSERT INTO `tgiann_inventory_player` (citizenid, inventory, clotheinventory) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE inventory = VALUES(inventory), clotheinventory = VALUES(clotheinventory)', {
 | |
|                     response[i].identifier, convertItems(response[i].inventory), "[]"
 | |
|                 })
 | |
|             end
 | |
|         end
 | |
|         tgiCore.DebugLog("Player inventorys converted")
 | |
|     end
 | |
| 
 | |
|     tgiCore.DebugLog("Finished")
 | |
| end)
 | 
