From cb0c7b2a9846b9e460b1921116d7ba5f8b9c4f31 Mon Sep 17 00:00:00 2001 From: Ygor Leal Date: Thu, 9 Apr 2026 03:18:33 +0200 Subject: [PATCH] fix(menu): prevent frozen players from bypassing freeze via vehicle spawn (#1000) Replace the one-shot FreezeEntityPosition call with a persistent thread that continuously re-applies freeze, disables vehicle entry controls, and ejects+freezes any vehicle the player manages to enter. --- resource/menu/client/cl_freeze.lua | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/resource/menu/client/cl_freeze.lua b/resource/menu/client/cl_freeze.lua index f22f67b06..74f3feb05 100644 --- a/resource/menu/client/cl_freeze.lua +++ b/resource/menu/client/cl_freeze.lua @@ -28,12 +28,31 @@ RegisterNetEvent('txcl:freezePlayerOk', function(isFrozen) sendSnackbarMessage('info', localeKey, true) end) +local isFrozenFlag = false + RegisterNetEvent('txcl:setFrozen', function(isFrozen) debugPrint('Frozen: ' .. tostring(isFrozen)) - --NOTE: removed the check for vehicle, but could be done with - -- IsPedInAnyVehicle for vehicles and IsPedOnMount for horses local playerPed = PlayerPedId() TaskLeaveAnyVehicle(playerPed, 0, 16) FreezeEntityPosition(playerPed, isFrozen) sendFreezeAlert(isFrozen) + + if isFrozen and not isFrozenFlag then + isFrozenFlag = true + Citizen.CreateThread(function() + while isFrozenFlag do + local ped = PlayerPedId() + FreezeEntityPosition(ped, true) + DisableControlAction(0, 75, true) -- disable entering vehicles + local veh = GetVehiclePedIsIn(ped, false) + if veh ~= 0 then + FreezeEntityPosition(veh, true) + TaskLeaveAnyVehicle(ped, 0, 16) + end + Wait(0) + end + end) + elseif not isFrozen then + isFrozenFlag = false + end end)