Compare commits

...

5 Commits

Author SHA1 Message Date
Jim Shield
54b1280bef Remove debug print 2025-09-21 12:09:12 +01:00
Jim Shield
3ac65d4630 Add "pre support" for jim-shops exploit security 2025-09-21 12:00:05 +01:00
Jim Shield
ed49876c69 Fix cleanup of targets for qb-target
Realised it was trying to remove `nil` when players were unloading/the scripts were ensured
2025-09-21 10:35:22 +01:00
Jim Shield
69d0f07bb6 Potential fix for playerInfo is nil 2025-09-20 17:56:47 +01:00
Jim Shield
b975f318a0 Fix hunger and thirst events
Missed out the math part when adding hunger and thirst to a player when eating items when I reworked the functions

should fix for all frameworks
2025-09-19 23:06:11 +01:00
3 changed files with 49 additions and 49 deletions

View File

@@ -2688,6 +2688,13 @@ function registerShop(name, label, items, society, coords)
shopExploitCheck = shopExploitCheck or {}
shopExploitCheck[name] = shopExploitCheck[name] or {}
if isStarted("jim-shops") then
-- Add support for new jim-shops registration export
if checkExportExists("jim-shops", "registerShop") then
exports["jim-shops"]:registerShop(name, label, items, society, coords)
end
end
for i = 1, #InvFunc do
local inv = InvFunc[i]
if isStarted(inv.invName) then

View File

@@ -16,14 +16,18 @@ local hungerThirstFunc = {
setThirst =
function(src, thirst)
local Player = Core.Functions.GetPlayer(src)
Player.Functions.SetMetaData('thirst', thirst)
TriggerClientEvent("hud:client:UpdateNeeds", src, Player.PlayerData.metadata.hunger, thirst)
local newThirst = Player.PlayerData.metadata.thirst + thirst
newThirst = (newThirst >= 100.0 and 100.0) or (newThirst <= 0 and 0) or newThirst
Player.Functions.SetMetaData('thirst', newThirst)
TriggerClientEvent("hud:client:UpdateNeeds", src, Player.PlayerData.metadata.hunger, newThirst)
end,
setHunger =
function(src, hunger)
local Player = Core.Functions.GetPlayer(src)
Player.Functions.SetMetaData('hunger', hunger)
TriggerClientEvent("hud:client:UpdateNeeds", src, hunger, Player.PlayerData.metadata.thirst)
local newHunger = Player.PlayerData.metadata.hunger + hunger
newHunger = (newHunger >= 100.0 and 100.0) or (newHunger <= 0 and 0) or newHunger
Player.Functions.SetMetaData('hunger', newHunger)
TriggerClientEvent("hud:client:UpdateNeeds", src, newHunger, Player.PlayerData.metadata.thirst)
end,
},
@@ -31,14 +35,18 @@ local hungerThirstFunc = {
setThirst =
function(src, thirst)
local Player = Core.Functions.GetPlayer(src)
Player.Functions.SetMetaData('thirst', thirst)
TriggerClientEvent("hud:client:UpdateNeeds", src, Player.PlayerData.metadata.hunger, thirst)
local newThirst = Player.PlayerData.metadata.thirst + thirst
newThirst = (newThirst >= 100.0 and 100.0) or (newThirst <= 0 and 0) or newThirst
Player.Functions.SetMetaData('thirst', newThirst)
TriggerClientEvent("hud:client:UpdateNeeds", src, Player.PlayerData.metadata.hunger, newThirst)
end,
setHunger =
function(src, hunger)
local Player = Core.Functions.GetPlayer(src)
Player.Functions.SetMetaData('hunger', hunger)
TriggerClientEvent("hud:client:UpdateNeeds", src, hunger, Player.PlayerData.metadata.thirst)
local newHunger = Player.PlayerData.metadata.hunger + hunger
newHunger = (newHunger >= 100.0 and 100.0) or (newHunger <= 0 and 0) or newHunger
Player.Functions.SetMetaData('hunger', newHunger)
TriggerClientEvent("hud:client:UpdateNeeds", src, newHunger, Player.PlayerData.metadata.thirst)
end,
},
@@ -46,25 +54,29 @@ local hungerThirstFunc = {
setThirst =
function(src, thirst)
local Player = Core.Functions.GetPlayer(src)
Player.Functions.SetMetaData('thirst', thirst)
TriggerClientEvent("hud:client:UpdateNeeds", src, Player.PlayerData.metadata.hunger, thirst)
local newThirst = Player.PlayerData.metadata.thirst + thirst
newThirst = (newThirst >= 100.0 and 100.0) or (newThirst <= 0 and 0) or newThirst
Player.Functions.SetMetaData('thirst', newThirst)
TriggerClientEvent("hud:client:UpdateNeeds", src, Player.PlayerData.metadata.hunger, newThirst)
end,
setHunger =
function(src, hunger)
local Player = Core.Functions.GetPlayer(src)
Player.Functions.SetMetaData('hunger', hunger)
TriggerClientEvent("hud:client:UpdateNeeds", src, hunger, Player.PlayerData.metadata.thirst)
local newHunger = Player.PlayerData.metadata.hunger + hunger
newHunger = (newHunger >= 100.0 and 100.0) or (newHunger <= 0 and 0) or newHunger
Player.Functions.SetMetaData('hunger', newHunger)
TriggerClientEvent("hud:client:UpdateNeeds", src, newHunger, Player.PlayerData.metadata.thirst)
end,
},
{ framework = ESXExport,
setThirst =
function(src, thirst)
TriggerClientEvent('esx_status:add', src, 'thirst', thirst)
TriggerClientEvent('esx_status:add', src, 'thirst', tonumber(thirst) * 10000)
end,
setHunger =
function(src, hunger)
TriggerClientEvent('esx_status:add', src, 'hunger', hunger)
TriggerClientEvent('esx_status:add', src, 'hunger', tonumber(hunger) * 10000)
end,
},
}
@@ -372,19 +384,21 @@ local hasGroupFunc = {
local hasJobFlag, duty = false, true
local playerInfo = GetPlayer(src)
local jobinfo = playerInfo.job or playerInfo.PlayerData.job
if jobinfo.name == group then
if jobinfo and jobinfo.name == group then
hasJobFlag = true
duty = jobinfo.onduty
if grade and not (grade <= jobinfo.grade.level) then
hasJobFlag = false
end
return hasJobFlag, duty
end
local ganginfo = playerInfo.gang or playerInfo.PlayerData.gang
if ganginfo.name == group then
if ganginfo and ganginfo.name == group then
hasJobFlag = true
if grade and not (grade <= ganginfo.grade.level) then
hasJobFlag = false
end
return hasJobFlag, duty
end
return hasJobFlag, duty
end,
@@ -396,7 +410,7 @@ local hasGroupFunc = {
local hasJobFlag, duty = false, true
local playerInfo = GetPlayer(src)
local jobinfo = playerInfo.job or playerInfo.PlayerData.job
if jobinfo.name == group then
if jobinfo and jobinfo.name == group then
hasJobFlag = true
duty = jobinfo.onduty
if grade and not (grade <= jobinfo.grade.level) then
@@ -404,7 +418,7 @@ local hasGroupFunc = {
end
end
local ganginfo = playerInfo.gang or playerInfo.PlayerData.gang
if ganginfo.name == group then
if ganginfo and ganginfo.name == group then
hasJobFlag = true
if grade and not (grade <= ganginfo.grade.level) then
hasJobFlag = false
@@ -434,26 +448,6 @@ local hasGroupFunc = {
end,
},
{ framework = OXCoreExport,
hasGroup =
function(group, grade, src)
local hasJobFlag, duty = false, true
if src then
local chunk = assert(load(LoadResourceFile('ox_core', ('imports/%s.lua'):format('server')), ('@@ox_core/%s'):format(file)))
chunk()
local player = Ox.GetPlayer(src)
for k, v in pairs(player.getGroups()) do
if k == group then hasJobFlag = true end
end
end
local info = OxPlayer.getGroups()
for k, v in pairs(info) do
if k == group then hasJobFlag = true break end
end
return hasJobFlag, duty
end,
},
{ framework = ESXExport,
hasGroup =
function(group, grade, src)
@@ -479,7 +473,7 @@ local hasGroupFunc = {
local hasJobFlag, duty = false, true
local playerInfo = GetPlayer(src)
local jobinfo = playerInfo.job or playerInfo.PlayerData.job
if jobinfo.name == group then
if jobinfo and jobinfo.name == group then
hasJobFlag = true
duty = jobinfo.onduty
if grade and not (grade <= jobinfo.grade.level) then
@@ -487,7 +481,7 @@ local hasGroupFunc = {
end
end
local ganginfo = playerInfo.gang or playerInfo.PlayerData.gang
if ganginfo.name == group then
if ganginfo and ganginfo.name == group then
hasJobFlag = true
if grade and not (grade <= ganginfo.grade.level) then
hasJobFlag = false

View File

@@ -33,7 +33,7 @@ local targetFunc = {
canInteract = opts[i].canInteract or nil,
}
end
exports[OXTargetExport]:addLocalEntity(entity, options)
return exports[OXTargetExport]:addLocalEntity(entity, options)
end,
boxTarget =
@@ -105,7 +105,7 @@ local targetFunc = {
canInteract = opts[i].canInteract or nil,
}
end
exports[OXTargetExport]:addModel(models, options)
return exports[OXTargetExport]:addModel(models, options)
end,
removeTargetEntity =
@@ -128,7 +128,7 @@ local targetFunc = {
entityTarget =
function(entity, opts, dist)
local options = { options = opts, distance = dist }
exports[QBTargetExport]:AddTargetEntity(entity, options)
return exports[QBTargetExport]:AddTargetEntity(entity, options)
end,
boxTarget =
@@ -148,7 +148,7 @@ local targetFunc = {
modelTarget =
function(models, opts, dist)
local options = { options = opts, distance = dist }
exports[QBTargetExport]:AddTargetModel(models, options)
return exports[QBTargetExport]:AddTargetModel(models, options)
end,
removeTargetEntity =
@@ -213,11 +213,10 @@ local targetFunc = {
-- Tables for storing created targets for the fallback system and zone management.
local TextTargets = {} -- For fallback DrawText3D targets.
local targetEntities = {} -- For entity targets.
local boxTargets = {} -- For box-shaped zone targets.
local circleTargets = {} -- For circular zone targets.
local modelTargets = {}
-------------------------------------------------------------
-- Entity Target Creation
-------------------------------------------------------------
@@ -442,7 +441,7 @@ function createModelTarget(models, opts, dist)
if isStarted(script.targetName) then
debugPrint("^6Bridge^7: ^2Creating new ^3Model ^2target with ^6"..script.targetName.."^7")
local target = script.modelTarget(models, opts, dist)
circleTargets[#circleTargets + 1] = target
modelTargets[#modelTargets + 1] = target
return target
end
end
@@ -553,7 +552,7 @@ local function CleanupTargets()
if isStarted(OXTargetExport) then
exports[OXTargetExport]:removeZone(boxTargets[i], true)
elseif isStarted(QBTargetExport) then
exports[QBTargetExport]:RemoveZone(boxTargets[i].name)
exports[QBTargetExport]:RemoveZone(boxTargets[i])
end
end
-- Remove circle zone targets.
@@ -561,7 +560,7 @@ local function CleanupTargets()
if isStarted(OXTargetExport) then
exports[OXTargetExport]:removeZone(circleTargets[i], true)
elseif isStarted(QBTargetExport) then
exports[QBTargetExport]:RemoveZone(circleTargets[i].name)
exports[QBTargetExport]:RemoveZone(circleTargets[i])
end
end
end