Contexto
Auditoria de bugs (ver BUGS_AUDIT.md). Vazamentos de thread/entidade e toggles dessincronizados no cliente.
Problemas
- C-05 🟠
client/toggle_laser.lua:39-135 — cada toggle cria uma thread while true que nunca sai (inclusive ao desligar); N ciclos → 2N threads imortais mandando NUI a cada 500ms.
- C-06 🟠
client/players.lua:5-21 — Blip/Tag são globais únicas sobrescritas por jogador no loop; removeNameAndBlips() remove só o último → blips/gamer tags órfãos.
- C-07 🟠
client/vehicles.lua:187-220 — SpawnPersonalVehicle usa targetVehModel após Wait(100) fixo; sob latência >100ms ainda é nil → no-op intermitente.
- C-08 🟠
client/misc.lua:112-129 e client/vehicles.lua:118-141 — UIs grudam: while show do ... end sai sem mandar show=false final; menu dev também crasha em lib.getVehicleProperties(false) ao sair do veículo (desync).
- C-09 🟠
client/misc.lua:196-200 — DevMode faz TriggerEvent('...ToggleLaser')/ToggleNearbyScanner (toggles cegos) em vez de forçar on/off → toggles invertidos/dessincronizados.
- C-10 🟠
client/main.lua:610-624 — GotoWaypoint teleporta para z+0.5 quando o probe de solo falha (quase sempre, terreno não-carregado) → embaixo do mapa.
- C-11 🟠
client/wall.lua:39,48 — RegisterNetEvent(GlobalState["mri_wall"]..":toggleWall"): state-bag pode não ter replicado no init após restart ao vivo → concatenate a nil value mata o script.
- C-12 🟠
client/noclip.lua:91-92 — SetEveryoneIgnorePlayer/SetPoliceIgnorePlayer recebem ped/veículo em vez de índice de Player (cache.playerId) → ignore não aplica.
- C-13 🟡 diversos:
main.lua:178,511 (getData registrado 2×), main.lua:121-125 (foco NUI sem atualizar MenuVisible), spectate.lua:29-45 (re-trigger sobrescreve oldPos), key_capture.lua:95-131 (race de watchersCount), world.lua:57-61 (setClipboard(nil)), vehicles.lua:18 (GetHashKey de handle), wall.lua:336-337 (health < 101 rotula ferido como morto).
Severidade: 🟠 Médio — IDs: C-05..C-13
Contexto
Auditoria de bugs (ver
BUGS_AUDIT.md). Vazamentos de thread/entidade e toggles dessincronizados no cliente.Problemas
client/toggle_laser.lua:39-135— cada toggle cria uma threadwhile trueque nunca sai (inclusive ao desligar); N ciclos → 2N threads imortais mandando NUI a cada 500ms.client/players.lua:5-21—Blip/Tagsão globais únicas sobrescritas por jogador no loop;removeNameAndBlips()remove só o último → blips/gamer tags órfãos.client/vehicles.lua:187-220—SpawnPersonalVehicleusatargetVehModelapósWait(100)fixo; sob latência >100ms ainda énil→ no-op intermitente.client/misc.lua:112-129eclient/vehicles.lua:118-141— UIs grudam:while show do ... endsai sem mandarshow=falsefinal; menu dev também crasha emlib.getVehicleProperties(false)ao sair do veículo (desync).client/misc.lua:196-200— DevMode fazTriggerEvent('...ToggleLaser')/ToggleNearbyScanner(toggles cegos) em vez de forçar on/off → toggles invertidos/dessincronizados.client/main.lua:610-624— GotoWaypoint teleporta paraz+0.5quando o probe de solo falha (quase sempre, terreno não-carregado) → embaixo do mapa.client/wall.lua:39,48—RegisterNetEvent(GlobalState["mri_wall"]..":toggleWall"): state-bag pode não ter replicado no init após restart ao vivo →concatenate a nil valuemata o script.client/noclip.lua:91-92—SetEveryoneIgnorePlayer/SetPoliceIgnorePlayerrecebem ped/veículo em vez de índice de Player (cache.playerId) → ignore não aplica.main.lua:178,511(getDataregistrado 2×),main.lua:121-125(foco NUI sem atualizarMenuVisible),spectate.lua:29-45(re-trigger sobrescreveoldPos),key_capture.lua:95-131(race de watchersCount),world.lua:57-61(setClipboard(nil)),vehicles.lua:18(GetHashKeyde handle),wall.lua:336-337(health < 101rotula ferido como morto).Severidade: 🟠 Médio — IDs: C-05..C-13