Files
T
2025-12-25 13:17:59 -08:00

83 lines
2.9 KiB
Lua

-- ============================================================
-- LANE STATE (SINGLE LANE)
-- ============================================================
local laneStates = {
LaneA = Config.MainLights and Config.MainLights.AutoMode and true or nil
}
-- Prevent multiple timers from overlapping
local autoTimers = {
LaneA = false
}
-- ============================================================
-- SEND STATE TO PLAYER
-- ============================================================
RegisterNetEvent("jd_weighlight:requestState")
AddEventHandler("jd_weighlight:requestState", function()
local src = source
-- Sends the current server truth to the client
TriggerClientEvent("jd_weighlight:setLaneState", src, "LaneA", laneStates.LaneA)
end)
-- ============================================================
-- SET LANE STATE (MANUAL)
-- ============================================================
RegisterNetEvent("jd_weighlight:setLaneState")
AddEventHandler("jd_weighlight:setLaneState", function(lane, state)
local src = source
if lane ~= "LaneA" then return end
-- ACL check
if Config.ACL.UseACL and not IsPlayerAceAllowed(src, Config.ACL.MainLights) then
print(("[weigh_lights] Player %d denied access"):format(src))
return
end
-- Update the Master State and tell EVERYONE to update their local objects
laneStates.LaneA = state
TriggerClientEvent("jd_weighlight:setLaneState", -1, "LaneA", state)
end)
-- ============================================================
-- AUTO MODE TRIGGER
-- ============================================================
RegisterNetEvent("jd_weighlight:autoTrigger")
AddEventHandler("jd_weighlight:autoTrigger", function(lane)
if lane ~= "LaneA" or not Config.MainLights.AutoMode then return end
-- Safety: If a timer is already running, don't start another one
if autoTimers.LaneA then return end
-- Turn the light RED for everyone
laneStates.LaneA = false
TriggerClientEvent("jd_weighlight:setLaneState", -1, "LaneA", false)
autoTimers.LaneA = true
CreateThread(function()
Wait(30000) -- 30 Seconds
autoTimers.LaneA = false
-- Only set back to GREEN if a staff member hasn't manually changed it or turned it OFF
if laneStates.LaneA == false then
laneStates.LaneA = true
TriggerClientEvent("jd_weighlight:setLaneState", -1, "LaneA", true)
end
end)
end)
-- ============================================================
-- PERMISSION CHECK
-- ============================================================
RegisterNetEvent("weigh_lights:checkPermissionMain")
AddEventHandler("weigh_lights:checkPermissionMain", function()
local src = source
local allowed = true
if Config.ACL.UseACL then
allowed = IsPlayerAceAllowed(src, Config.ACL.MainLights)
end
TriggerClientEvent("weigh_lights:permissionResultMain", src, allowed)
end)