From 423b75e7d92efa12821c2e7dc92e19ea98db178c Mon Sep 17 00:00:00 2001 From: Jim Shield Date: Wed, 30 Apr 2025 17:53:26 +0100 Subject: [PATCH] Tgiann Inv support added --- shared/coreloader.lua | 5 +++-- shared/inventories.lua | 8 +++++++ shared/itemcontrol.lua | 34 ++++++++++++++++++++++++++++++ shared/phones.lua | 5 +++++ shared/shops.lua | 17 ++++++++++++--- shared/stashcontrol.lua | 42 ++++++++++++++++++++++++++++++++----- shared/wrapperfunctions.lua | 4 ++++ starter.lua | 1 + 8 files changed, 106 insertions(+), 10 deletions(-) diff --git a/shared/coreloader.lua b/shared/coreloader.lua index d9422c7..6d38f05 100644 --- a/shared/coreloader.lua +++ b/shared/coreloader.lua @@ -27,14 +27,15 @@ OXLibExport, QBXExport, QBExport, ESXExport, OXCoreExport = Exports.ESXExport or "", Exports.OXCoreExport or "" -OXInv, QBInv, PSInv, QSInv, CoreInv, CodeMInv, OrigenInv = +OXInv, QBInv, PSInv, QSInv, CoreInv, CodeMInv, OrigenInv, TgiannInv = Exports.OXInv or "", Exports.QBInv or "", Exports.PSInv or "", Exports.QSInv or "", Exports.CoreInv or "", Exports.CodeMInv or "", - Exports.OrigenInv or "" + Exports.OrigenInv or "", + Exports.TgiannInv or "" RSGExport, RSGInv = Exports.RSGExport or "", diff --git a/shared/inventories.lua b/shared/inventories.lua index 15cf085..c3c9fdf 100644 --- a/shared/inventories.lua +++ b/shared/inventories.lua @@ -125,6 +125,14 @@ function getPlayerInv(src) grabInv = exports[CodeMInv]:getUserInventory() end + elseif isStarted(TgiannInv) then + foundInv = TgiannInv + if src then + grabInv = exports[TgiannInv]:GetPlayerItems(src) + else + grabInv = exports[TgiannInv]:GetPlayerItems() + end + elseif isStarted(QBInv) then foundInv = QBInv if src then diff --git a/shared/itemcontrol.lua b/shared/itemcontrol.lua index dd226b0..8496696 100644 --- a/shared/itemcontrol.lua +++ b/shared/itemcontrol.lua @@ -64,18 +64,28 @@ function invImg(item) if item ~= "" and Items[item] then if isStarted(OXInv) then imgLink = "nui://"..OXInv.."/web/images/"..(Items[item].image or "") + elseif isStarted(QSInv) then imgLink = "nui://"..QSInv.."/html/images/"..(Items[item].image or "") + elseif isStarted(CoreInv) then imgLink = "nui://"..CoreInv.."/html/img/"..(Items[item].image or "") + elseif isStarted(CodeMInv) then imgLink = "nui://"..CodeMInv.."/html/itemimages/"..(Items[item].image or "") + elseif isStarted(OrigenInv) then imgLink = "nui://"..OrigenInv.."/html/img/"..(Items[item].image or "") + elseif isStarted(QBInv) then imgLink = "nui://"..QBInv.."/html/images/"..(Items[item].image or "") + + elseif isStarted(TgiannInv) then + imgLink = "nui://inventory_images/images/"..(Items[item].image or "") + elseif isStarted(RSGInv) then imgLink = "nui://"..RSGInv.."/html/images/"..(Items[item].image or "") + else print("^4ERROR^7: ^2No Inventory detected for invImg - Check starter.lua") end @@ -219,6 +229,9 @@ RegisterNetEvent(getScript()..":server:toggleItem", function(give, item, amount, elseif isStarted(CodeMInv) then invName = CodeMInv exports[CodeMInv]:RemoveItem(src, item, remamount) + elseif isStarted(TgiannInv) then invName = TgiannInv + exports[TgiannInv]:RemoveItem(src, item, remamount) + elseif isStarted(QBInv) then invName = QBInv while remamount > 0 do if Core.Functions.GetPlayer(src).Functions.RemoveItem(item, 1, slot) then @@ -296,6 +309,9 @@ RegisterNetEvent(getScript()..":server:toggleItem", function(give, item, amount, elseif isStarted(OrigenInv) then invName = OrigenInv exports[OrigenInv]:addItem(src, item, amountToAdd, info, slot) + elseif isStarted(TgiannInv) then invName = TgiannInv + exports[TgiannInv]:AddItem(src, item, amountToAdd, slot, info) + elseif isStarted(QBInv) then invName = QBInv if Core.Functions.GetPlayer(src).Functions.AddItem(item, amountToAdd, nil, info) then TriggerClientEvent((isStarted(QBInv) and QBInvNew and "qb-" or "").."inventory:client:ItemBox", src, Items[item], "add", amountToAdd) @@ -467,6 +483,16 @@ function getDurability(item) end end + if isStarted(TgiannInv) then + local itemcheck = exports[TgiannInv]:GetPlayerItems() + for _, v in pairs(itemcheck) do + if v.name == item and v.slot <= lowestSlot then + lowestSlot = v.slot + durability = v.metadata.durability + end + end + end + -- For ESX default inventory (es_extended) if ESX and isStarted(ESXExport) then local xPlayer = ESX.GetPlayerData() or {} @@ -524,6 +550,9 @@ RegisterNetEvent(getScript()..":server:setMetaData", function(data) elseif isStarted(OrigenInv) then exports[OrigenInv]:setMetadata(src, data.slot, data.metadata) + + elseif isStarted(TgiannInv) then + exports[TgiannInv]:UpdateItemMetadata(src, data.item, data.slot, data.metadata) end end) @@ -633,6 +662,11 @@ function canCarry(itemTable, src) resultTable[k] = exports[OrigenInv]:canCarryItem(src, k, v) end + elseif isStarted(TgiannInv) then + for k, v in pairs(itemTable) do + resultTable[k] = exports[TgiannInv]:CanCarryItem(source, k, v) + end + elseif isStarted(QBInv) then for k, v in pairs(itemTable) do resultTable[k] = exports[QBInv]:CanAddItem(src, k, v) diff --git a/shared/phones.lua b/shared/phones.lua index 62d9c28..df04b1c 100644 --- a/shared/phones.lua +++ b/shared/phones.lua @@ -78,6 +78,11 @@ function sendPhoneMail(data) TriggerServerEvent(getScript()..":jpr:SendMail", mailData) end, }, + { name = "ef-phone", + send = function(mailData) + TriggerServerEvent('qb-phone:server:sendNewMail', mailData) + end, + }, } local activePhone = nil diff --git a/shared/shops.lua b/shared/shops.lua index c2ffdec..8e70f0a 100644 --- a/shared/shops.lua +++ b/shared/shops.lua @@ -160,6 +160,9 @@ function openShop(data) elseif isStarted(QSInv) then TriggerServerEvent("inventory:server:OpenInventory", "shop", data.items.label, data.items) + elseif isStarted(TgiannInv) then + TriggerServerEvent(getScript()..':server:OpenShopTgiann', data.shop) + elseif isStarted(QBInv) then if QBInvNew then TriggerServerEvent(getScript()..':server:OpenShopNewQB', data.shop) @@ -168,17 +171,20 @@ function openShop(data) end elseif isStarted(RSGInv) then - TriggerServerEvent(getScript()..':server:OpenShopNewRSG', data.shop) + TriggerServerEvent(getScript()..':server:OpenShopRSG', data.shop) end lookEnt(data.coords) end ---- Server event handler for opening a shop using the new QB inventory system. RegisterNetEvent(getScript()..':server:OpenShopNewQB', function(data) exports[QBInv]:OpenShop(source, data) end) -RegisterNetEvent(getScript()..':server:OpenShopNewRSG', function(data) +RegisterNetEvent(getScript()..':server:OpenShopTgiann', function(data) + exports[TgiannInv]:OpenShop(source, data) +end) + +RegisterNetEvent(getScript()..':server:OpenShopRSG', function(data) exports[RSGInv]:OpenShop(source, data) end) @@ -201,6 +207,11 @@ function registerShop(name, label, items, society) inventory = items, society = society, }) + + elseif isStarted(TgiannInv) then + debugPrint("^6Bridge^7: ^2Registering ^3Tgiann ^2Store^7:", name, label) + exports[TgiannInv]:RegisterShop(name, items) + elseif isStarted(QBInv) and QBInvNew then debugPrint("^6Bridge^7: ^2Registering ^3QB ^2Store^7:", name, label) exports[QBInv]:CreateShop({ diff --git a/shared/stashcontrol.lua b/shared/stashcontrol.lua index 028db47..71895a3 100644 --- a/shared/stashcontrol.lua +++ b/shared/stashcontrol.lua @@ -151,6 +151,14 @@ function openStash(data) elseif isStarted(OrigenInv) then exports[OrigenInv]:openInventory('stash', data.stash, { label = data.label }) + elseif isStarted(TgiannInv) then + TriggerServerEvent(getScript()..':server:OpenStashTgiann', { + stashName = data.stash, + label = data.label, + maxweight = data.maxWeight or 600000, + slots = data.slots or 40 + }) + elseif isStarted(QBInv) then if QBInvNew then TriggerServerEvent(getScript()..':server:OpenStashQB', { @@ -181,7 +189,10 @@ function openStash(data) lookEnt(data.coords) end --- Register an event for opening QB stashes. +RegisterNetEvent(getScript()..':server:OpenStashTgiann', function(data) + exports[TgiannInv]:OpenInventory(source, 'stash', data.stashName, data) +end) + RegisterNetEvent(getScript()..':server:OpenStashQB', function(data) exports[QBInv]:OpenInventory(source, data.stashName, data) end) @@ -234,6 +245,10 @@ function getStash(stashName) stashResource = OrigenInv stashItems = exports[OrigenInv]:getInventory(stashName) + elseif isStarted(TgiannInv) then + stashResource = TgiannInv + stashItems = exports[TgiannInv]:GetSecondaryInventoryItems("stash", stashName) + elseif isStarted(PSInv) then stashResource = PSInv local result = MySQL.scalar.await('SELECT items FROM stashitems WHERE stash = ?', { stashName }) @@ -330,7 +345,7 @@ function stashRemoveItem(stashItems, stashName, items) elseif isStarted(CoreInv) then for k, v in pairs(items) do - exports[CoreInv]:removeItemExact(stashName, k, v) + exports[CoreInv]:removeItemExact(stashName[1], k, v) debugPrint("^6Bridge^7: ^2Removing item from ^3Stash^2 with ^7"..CoreInv, k, v) end @@ -348,15 +363,22 @@ function stashRemoveItem(stashItems, stashName, items) end end end - exports[CodeMInv]:UpdateStash(stashName, stashItems) + exports[CodeMInv]:UpdateStash(stashName[1], stashItems) debugPrint("^6Bridge^7: ^3saveStash^7: ^2Saving ^3CodeM^2 stash ^7'^6"..stashName.."^7'") elseif isStarted(OrigenInv) then for k, v in pairs(items) do - exports[OrigenInv]:RemoveFromStash(stashName, k, v) + exports[OrigenInv]:RemoveFromStash(stashName[1], k, v) debugPrint("^6Bridge^7: ^2Removing item from ^3Stash^2 with ^7"..OrigenInv, k, v) end + elseif isStarted(TgiannInv) then + for k, v in pairs(items) do + local itemData = exports["tgiann-inventory"]:GetItemByNameFromSecondaryInventory("stash", stashName[1], k) + exports[TgiannInv]:RemoveItemFromSecondaryInventory("stash", stashName[1], k, v, itemData.slot, nil) + debugPrint("^6Bridge^7: ^2Removing item from ^3Stash^2 with ^7"..TgiannInv, k, v) + end + elseif isStarted(PSInv) then for k, v in pairs(items) do for l in pairs(stashItems) do @@ -409,6 +431,16 @@ function stashRemoveItem(stashItems, stashName, items) }) end + elseif isStarted(RSGInv) then + for k, v in pairs(items) do + exports[RSGInv]:RemoveItem(stashName[1], k, v, false, 'crafting') + debugPrint("^6Bridge^7: ^2Removing item from ^3Stash^2 with ^7"..RSGInv, k, v) + end + debugPrint("^6Bridge^7: ^3saveStash^7: ^2Saving ^3QB^2 stash ^7'^6"..stashName[1].."^7'") + MySQL.Async.insert('INSERT INTO inventories (identifier, items) VALUES (:stash, :items) ON DUPLICATE KEY UPDATE items = :items', { + ['stash'] = stashName[1], + ['items'] = json.encode(stashItems) + }) else print("^4ERROR^7: ^2No Inventory detected ^7- ^2Check ^3starter^1.^2lua^7") end @@ -433,7 +465,7 @@ RegisterNetEvent(getScript()..":server:stashRemoveItem", stashRemoveItem) --- local hasAll, details = stashhasItem(currentStashItems, { iron = 2, wood = 5 }) --- ``` function stashhasItem(stashItems, items, amount) - local invs = { OXInv, QSInv, CoreInv, CodeMInv, OrigenInv, QBInv, PSInv } + local invs = { OXInv, QSInv, CoreInv, CodeMInv, OrigenInv, TgiannInv, QBInv, PSInv, RSGInv } local foundInv = "" for _, inv in ipairs(invs) do if isStarted(inv) then diff --git a/shared/wrapperfunctions.lua b/shared/wrapperfunctions.lua index 50f4ed9..57685ec 100644 --- a/shared/wrapperfunctions.lua +++ b/shared/wrapperfunctions.lua @@ -70,6 +70,10 @@ function registerStash(name, label, slots, weight, owner, coords) elseif isStarted(OrigenInv) then debugPrint("^6Bridge^7: ^2Registering ^3OrigenInv ^2Stash^7:", name, label) exports["origen_inventory"]:registerStash(name, label, slots or 50, weight or 4000000) + + elseif isStarted(TgiannInv) then + debugPrint("^6Bridge^7: ^2Registering ^3TgiannInv ^2Stash^7:", name, label) + exports[TgiannInv]:RegisterStash(name, label, slots or 50, weight or 4000000) end end diff --git a/starter.lua b/starter.lua index fef9852..c183ad7 100644 --- a/starter.lua +++ b/starter.lua @@ -13,6 +13,7 @@ Exports = { CoreInv = "core_inventory", CodeMInv = "codem-inventory", OrigenInv = "origen_inventory", + TgiannInv = "tgiann-inventory", OXLibExport = "ox_lib",