diff --git a/client/client.lua b/client/client.lua index b8be995..6fb5dd3 100644 --- a/client/client.lua +++ b/client/client.lua @@ -314,10 +314,23 @@ RegisterNetEvent(getScript()..':Consume', function(itemName) end) if needStats then if needStats.hunger then - TriggerServerEvent(getScript()..":server:addNeed", Core.Functions.GetPlayerData().metadata["hunger"] + needStats.hunger, "hunger") + local hunger = 0 + if Core.Functions and Core.Functions.GetPlayerData then + hunger = Core.Functions.GetPlayerData().metadata["hunger"] or 0 + elseif ESX and ESX.GetPlayerData then + hunger = ESX.GetPlayerData().hunger or 0 + end + TriggerServerEvent(getScript()..":server:addNeed", hunger + needStats.hunger, "hunger") end + if needStats.thirst then - TriggerServerEvent(getScript()..":server:addNeed", Core.Functions.GetPlayerData().metadata["thirst"] + needStats.thirst, "thirst") + local thirst = 0 + if Core.Functions and Core.Functions.GetPlayerData then + thirst = Core.Functions.GetPlayerData().metadata["thirst"] or 0 + elseif ESX and ESX.GetPlayerData then + thirst = ESX.GetPlayerData().thirst or 0 + end + TriggerServerEvent(getScript()..":server:addNeed", thirst + needStats.thirst, "thirst") end end debugPrint("^5Debug^7: ^2Hunger^7: [^6"..(needStats.hunger or 0).."^7] ^2Thrist^7: [^6"..(needStats.thirst or 0).."^7]" ) diff --git a/server/server.lua b/server/server.lua index d09d6d0..97ad1eb 100644 --- a/server/server.lua +++ b/server/server.lua @@ -19,14 +19,37 @@ onResourceStop(function() end) RegisterNetEvent(getScript()..':server:addNeed', function(amount, type) - local Player = Core.Functions.GetPlayer(source) if not Player then return end - if type == "thirst" then - Player.Functions.SetMetaData('thirst', amount) - TriggerClientEvent('hud:client:UpdateNeeds', source, Player.PlayerData.metadata.hunger, amount) - elseif type == "hunger" then - Player.Functions.SetMetaData('hunger', amount) - TriggerClientEvent('hud:client:UpdateNeeds', source, amount, Player.PlayerData.metadata.thirst) - end + local src = source + + if Core.Functions and Core.Functions.GetPlayer then -- QBCore/QBox + local Player = Core.Functions.GetPlayer(src) + if not Player then return end + + if type == "thirst" then + Player.Functions.SetMetaData('thirst', amount) + TriggerClientEvent('hud:client:UpdateNeeds', src, Player.PlayerData.metadata.hunger, amount) + elseif type == "hunger" then + Player.Functions.SetMetaData('hunger', amount) + TriggerClientEvent('hud:client:UpdateNeeds', src, amount, Player.PlayerData.metadata.thirst) + end + + elseif ESX and ESX.GetPlayerFromId then -- ESX + local xPlayer = ESX.GetPlayerFromId(src) + if not xPlayer then return end + + local hunger = xPlayer.get('hunger') or 0 + local thirst = xPlayer.get('thirst') or 0 + + if type == "thirst" then + thirst = amount + xPlayer.set('thirst', thirst) + elseif type == "hunger" then + hunger = amount + xPlayer.set('hunger', hunger) + end + + TriggerClientEvent('hud:client:UpdateNeeds', src, hunger, thirst) + end end) local syncScheduled = false