From d6c46197175e0f0d9a6a69b83fe8a09c78638835 Mon Sep 17 00:00:00 2001 From: Jim Shield Date: Tue, 5 Aug 2025 12:38:39 +0100 Subject: [PATCH] Enhance Distance based props and cleanup --- shared/make/makeProp.lua | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/shared/make/makeProp.lua b/shared/make/makeProp.lua index bb84985..1ccd051 100644 --- a/shared/make/makeProp.lua +++ b/shared/make/makeProp.lua @@ -1,4 +1,5 @@ local Props = {} +local distProps = {} --- Creates a prop (object) in the game world at specified coordinates. --- @@ -57,17 +58,21 @@ end --- } --- makeDistProp(propData, true, false) --- ``` -function makeDistProp(data, freeze, synced, range) +function makeDistProp(data, freeze, synced, range, func) local name = keyGen()..keyGen() - createCirclePoly({ + distProps[#distProps + 1] = createCirclePoly({ name = name, coords = vec3(data.coords.x, data.coords.y, data.coords.z - 1.03), radius = range or 50.0, onEnter = function() Props[name] = makeProp(data, freeze, synced) + if func then + func(Props[name]) + end end, onExit = function() destroyProp(Props[name]) + Props[name] = nil end, debug = debugMode, }) @@ -92,6 +97,16 @@ function destroyProp(entity) end end +onPlayerUnloaded(function() + for k in pairs(Props) do + DeleteObject(Props[k]) + end + for i = 1, #distProps do + removeZoneTarget(distProps[i]) + end + distProps = {} +end) + --- Cleans up all created props when the resource stops. onResourceStop(function() for k in pairs(Props) do