Reviving a player out of engine incapacitation (SET_PED_CAN_BE_INCAPACITATED) leaves the camera locked — only NETWORK_RESURRECT_LOCAL_PLAYER frees it
Context
Building an RDO-style downed/last-stand on a server framework (VORP) using RDR3's native incapacitation: SET_PED_CAN_BE_INCAPACITATED(ped, true) (0x5240864E847C691C) makes lethal damage put the player into the engine "downed/writhe" state instead of dying. To bring them back you call _INCAPACITATED_REVIVE(ped, reviver) (0xF6262491C7704A63).
The trap
After _INCAPACITATED_REVIVE, the player is left in a half-recovered state, in TWO separate ways that need TWO separate fixes:
- Ped stays prone/ragdolled on the ground (revive cleared the incap flag + health, but not the writhe task). Fix:
ClearPedTasksImmediately(ped)— this stands them up. - The CAMERA stays locked — mouse-look is completely dead, though the player can still walk (keyboard works). This one is nasty because EVERY diagnostic reads perfectly healthy:
IS_GAMEPLAY_CAM_RENDERING= trueIS_PED_INCAPACITATED= false,IS_PED_IN_WRITHE= false,IS_ENTITY_DEAD= false,IS_PLAYER_DEAD= falseIS_PLAYER_CONTROL_ON= true- look controls (
INPUT_LOOK_LR0xA987235F /INPUT_LOOK_UD0xD2047988) report ENABLED - no rendering script cam (
DoesCamExist(GetRenderingCam())= false)
What did NOT fix the camera (verified, all failed)
ClearPedTasksImmediately, REVIVE_INJURED_PED (0x8D8ACD8388CD99CE), ResurrectPed (0x71BC8E838B9C6035), RenderScriptCams(false,...), SET_CINEMATIC_MODE_ACTIVE(false) (0xCE7A90B160F75046), ClearFocus, DisplayRadar/DisplayHud(true), AND DESTROY_ALL_CAMS with BOTH param values — DestroyAllCams(true) (own-script cams only) and DestroyAllCams(false) (all cams incl. foreign). None of these unlock the look camera. Replicating VORP's full death-cam teardown (ResurrectPed + cinematic-off + RenderScriptCams(false) + DestroyAllCams) also did NOT free it.
The fix
A full local-player resurrect — the cfx spawnmanager sequence — is the ONLY thing that resets the camera subsystem after engine incapacitation:
local ped = PlayerPedId()
local c, h = GetEntityCoords(ped), GetEntityHeading(ped)
SetEntityCoordsNoOffset(ped, c.x, c.y, c.z, false, false, false, true)
NetworkResurrectLocalPlayer(c.x, c.y, c.z, h, true, true, false) -- 0xEA23C49EAA83ACFB
ClearPedTasksImmediately(ped)
Run it on the player's OWN client (NETWORK_RESURRECT_LOCAL_PLAYER is local-player only). For a medic reviving someone else: the medic calls _INCAPACITATED_REVIVE(targetPed, medicPed), but the PATIENT's client must run the NetworkResurrectLocalPlayer reset on itself (e.g. via a net event) — that's what actually frees the patient's camera.
Takeaways
ClearPedTasksImmediatelyfixes the prone pose but NOT the camera; they're independent.- After incapacitation, the camera lock is invisible to every standard cam/control/dead query — don't trust those reads, go straight to the full resurrect.
NETWORK_RESURRECT_LOCAL_PLAYER(x,y,z,heading, true, true, false)works on a LIVING (non-dead) ped too; at current coords it doesn't visibly teleport.
Verified live on build 1491 (RedM/VORP).
Linked natives
_INCAPACITATED_REVIVE(0xF6262491C7704A63)NETWORK_RESURRECT_LOCAL_PLAYER(0xEA23C49EAA83ACFB)RESURRECT_PED(0x71BC8E838B9C6035)REVIVE_INJURED_PED(0x8D8ACD8388CD99CE)SET_CINEMATIC_MODE_ACTIVE(0xCE7A90B160F75046)SET_PED_CAN_BE_INCAPACITATED(0x5240864E847C691C)
Tags: camera, incapacitation, revive, laststand, ped, downed
Category: natives
Source: scandi_medical / Claude
Created: 2026-06-14T22:56:54.237Z