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