2026-04-14 17:41:39 +02:00

116 lines
4.5 KiB
Lua

if Config.Inventory ~= 'default' then return end
-- ════════════════════════════════════════
-- DEFAULT INVENTORY (NO ITEM REQUIREMENT)
-- All functions return positive/true values
-- ════════════════════════════════════════
local Inventory = {}
Inventory.Config = {
ItemName = Config.ItemName or 'phone',
RequireItem = false, -- Default always bypasses item requirement
DebugMode = Config.Debug or false
}
-- ════════════════════════════════════════
-- UTILITY FUNCTIONS
-- ════════════════════════════════════════
local function Log(type, message, ...)
if not Inventory.Config.DebugMode then return end
local prefix = '^2[Default Inventory]^7'
if type == 'error' then prefix = '^1[Default Inventory ERROR]^7' end
if type == 'warn' then prefix = '^3[Default Inventory WARNING]^7' end
print(string.format('%s %s', prefix, string.format(message, ...)))
end
-- ════════════════════════════════════════
-- INVENTORY FUNCTIONS (ALL RETURN TRUE/POSITIVE)
-- ════════════════════════════════════════
function Inventory.GetAllItems(_source)
Log('debug', 'GetAllItems called - returning empty table (default mode)')
return {}
end
function Inventory.GetItemsByName(_source, _itemName)
Log('debug', 'GetItemsByName called - returning empty table (default mode)')
return {}
end
function Inventory.GetPhoneItem(_source)
Log('debug', 'GetPhoneItem called - returning true (default mode)')
return true
end
function Inventory.HasPhoneWithNumber(_source, _phoneNumber)
Log('debug', 'HasPhoneWithNumber called - returning success (default mode)')
return {
success = true,
myPhone = true
}
end
function Inventory.HasAnyPhone(_source)
Log('debug', 'HasAnyPhone called - returning true (default mode)')
return true
end
function Inventory.SetPhoneNumber(_source, _phoneNumber)
Log('debug', 'SetPhoneNumber called - returning true (default mode)')
return true
end
function Inventory.UpdatePhoneMetadata(_source, _phoneNumber, _metadata)
Log('debug', 'UpdatePhoneMetadata called - returning true (default mode)')
return true
end
function Inventory.RemoveInventoryItem(_source, _itemname, _amount)
Log('debug', 'RemoveInventoryItem called - returning true (default mode)')
return true
end
-- ════════════════════════════════════════
-- USEABLE ITEMS (Optional - Only if Core exists)
-- ════════════════════════════════════════
Citizen.CreateThread(function()
if Core and Core.Functions and Core.Functions.CreateUseableItem then
Core.Functions.CreateUseableItem(Inventory.Config.ItemName, function(source, item)
Log('debug', 'Phone item used by player %s', source)
TriggerClientEvent("codem-phone:PhoneUsed", source, item or {})
end)
if Config.BatterySystem and Config.BatterySystem.enable then
Core.Functions.CreateUseableItem(Config.BatterySystem.powerBankItemName, function(source, _item)
Log('debug', 'PowerBank used by player %s', source)
TriggerClientEvent("codem-phone:UsePowerBank", source)
end)
end
else
Log('warn', 'Core.Functions.CreateUseableItem not available - skipping useable item registration')
end
end)
RPC.Register('codem-phone:inventory:HasPhoneItem', function(source, phoneNumber)
return Inventory.HasPhoneWithNumber(source, phoneNumber)
end)
RPC.Register('codem-phone:inventory:HasAnyPhone', function(source)
return Inventory.HasAnyPhone(source)
end)
RPC.Register('codem-phone:inventory:GetPhoneItem', function(source)
return Inventory.GetPhoneItem(source)
end)
GetPlayerInventoryItem = Inventory.GetPhoneItem
SetPhoneNumber = Inventory.SetPhoneNumber
UpdatePhoneMetadata = Inventory.UpdatePhoneMetadata
GetItemsByName = Inventory.GetItemsByName