mirror of
https://github.com/jimathy/jim_bridge.git
synced 2026-08-17 05:56:02 +01:00
refactor + attempt better support for other inventories
This commit is contained in:
@@ -1,4 +1,24 @@
|
||||
--[[
|
||||
Player Metadata Utilities Module
|
||||
----------------------------------
|
||||
This module provides functions for retrieving and setting metadata for players
|
||||
across different frameworks (QB, ESX, OXCore). It also registers server callbacks
|
||||
for getting and setting metadata.
|
||||
]]
|
||||
|
||||
-------------------------------------------------------------
|
||||
-- Player Retrieval
|
||||
-------------------------------------------------------------
|
||||
|
||||
--- Retrieves the player object using the active core export.
|
||||
---
|
||||
--- @param source number The server ID of the player.
|
||||
--- @return table|nil table The player object, or nil if no supported core is detected.
|
||||
---
|
||||
--- @usage
|
||||
--- ```lua
|
||||
--- local player = GetPlayer(playerId)
|
||||
--- ```
|
||||
function GetPlayer(source)
|
||||
if isStarted(QBExport) then
|
||||
debugPrint("^6Bridge^7: ^3GetPlayer^7() QBExport")
|
||||
@@ -16,9 +36,24 @@ function GetPlayer(source)
|
||||
return nil
|
||||
end
|
||||
|
||||
-- Get Metadata
|
||||
-------------------------------------------------------------
|
||||
-- Metadata Retrieval
|
||||
-------------------------------------------------------------
|
||||
|
||||
--- Retrieves metadata from a player object.
|
||||
---
|
||||
--- If called client-side (player is nil), it triggers a server callback to retrieve metadata.
|
||||
---
|
||||
--- @param player table|nil The player object; if nil, metadata is retrieved via a server callback.
|
||||
--- @param key string The metadata key to retrieve.
|
||||
--- @return any The value of the requested metadata, or nil if not found.
|
||||
---
|
||||
--- @usage
|
||||
--- ```lua
|
||||
--- local myMeta = GetMetadata(player, "myKey")
|
||||
--- ```
|
||||
function GetMetadata(player, key)
|
||||
if not player then -- This would be called client side
|
||||
if not player then
|
||||
debugPrint("^6Bridge^7: ^3GetMetadata^7() calling server: "..key)
|
||||
return triggerCallback(getScript()..":server:GetMetadata", key)
|
||||
else
|
||||
@@ -36,56 +71,65 @@ function GetMetadata(player, key)
|
||||
return nil
|
||||
end
|
||||
|
||||
-- Register a server callback for retrieving metadata.
|
||||
createCallback(getScript()..":server:GetMetadata", function(source, key)
|
||||
debugPrint("^6Bridge^7: ^3GetMetadata^7() Callback", source, key)
|
||||
debugPrint("^6Bridge^7: ^3GetMetadata Callback^7 from source: "..tostring(source)..", key: "..tostring(key))
|
||||
local player = GetPlayer(source)
|
||||
local Metadata = {}
|
||||
if not player then
|
||||
print("Error getting metadata")
|
||||
print("Error getting metadata: player not found for source "..tostring(source))
|
||||
return
|
||||
end
|
||||
|
||||
if type(key) == "table" then
|
||||
local Metadata = {}
|
||||
for _, k in ipairs(key) do
|
||||
Metadata[k] = GetMetadata(player, k).k
|
||||
Metadata[k] = GetMetadata(player, k)
|
||||
end
|
||||
return Metadata
|
||||
elseif type(key) == "string" then
|
||||
return GetMetadata(player, key)
|
||||
end
|
||||
|
||||
jsonPrint(Metadata)
|
||||
return Metadata
|
||||
end)
|
||||
|
||||
-- Set Metadata
|
||||
-------------------------------------------------------------
|
||||
-- Metadata Setting
|
||||
-------------------------------------------------------------
|
||||
|
||||
--- Sets metadata on a player object.
|
||||
---
|
||||
--- The function updates the player's metadata using the active core export.
|
||||
---
|
||||
--- @param player table The player object.
|
||||
--- @param key string The metadata key to set.
|
||||
--- @param value any The new value for the metadata key.
|
||||
---
|
||||
--- @usage
|
||||
--- ```lua
|
||||
--- SetMetadata(player, "myKey", "newValue")
|
||||
--- ```
|
||||
function SetMetadata(player, key, value)
|
||||
--if player == nil then -- This would be called client side
|
||||
-- debugPrint("^6Bridge^7: ^3SetMetadata^7() calling server")
|
||||
-- triggerCallback(getScript()..":server:SetMetadata", { key, value })
|
||||
-- else
|
||||
debugPrint("^6Bridge^7: ^3SetMetadata^7() setting metadata")
|
||||
if isStarted(QBExport) or isStarted(QBXExport) then
|
||||
debugPrint("^6Bridge^7: ^3SetMetadata^7() QBExport or QBXExport")
|
||||
player.Functions.SetMetaData(key, value)
|
||||
elseif isStarted(ESXExport) then
|
||||
debugPrint("^6Bridge^7: ^3SetMetadata^7() ESXExport")
|
||||
player.setMeta(key, value)
|
||||
elseif isStarted(OXCoreExport) then
|
||||
debugPrint("^6Bridge^7: ^3SetMetadata^7() OXCoreExport")
|
||||
player.set(key, value)
|
||||
end
|
||||
--end
|
||||
debugPrint("^6Bridge^7: ^3SetMetadata^7() setting metadata for key: "..key)
|
||||
if isStarted(QBExport) or isStarted(QBXExport) then
|
||||
debugPrint("^6Bridge^7: ^3SetMetadata^7() using QBExport/QBXExport")
|
||||
player.Functions.SetMetaData(key, value)
|
||||
elseif isStarted(ESXExport) then
|
||||
debugPrint("^6Bridge^7: ^3SetMetadata^7() using ESXExport")
|
||||
player.setMeta(key, value)
|
||||
elseif isStarted(OXCoreExport) then
|
||||
debugPrint("^6Bridge^7: ^3SetMetadata^7() using OXCoreExport")
|
||||
player.set(key, value)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- Register a server callback for setting metadata.
|
||||
createCallback(getScript()..":server:SetMetadata", function(source, key, value)
|
||||
print(source, key, value)
|
||||
debugPrint("SetMetadata callback triggered for source:", source, "key:", key, "value:", value)
|
||||
local player = GetPlayer(source)
|
||||
--jsonPrint(player)
|
||||
--[[if not player then
|
||||
print("Error getting metadata")
|
||||
print("Error setting metadata: player not found for source "..tostring(source))
|
||||
return false
|
||||
end]]
|
||||
print("i did it")
|
||||
SetMetadata(player, key, value)
|
||||
print("Metadata set successfully.", key)
|
||||
return true
|
||||
end)
|
||||
Reference in New Issue
Block a user