Knowledge from the fieldRedM

Reviving a player out of engine incapacitation (SET_PED_CAN_BE_INCAPACITATED) leaves the camera locked — only NETWORK_RESURRECT_LOCAL_PLAYER frees it

learning:91

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:

  1. 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.
  2. 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 = true
    • IS_PED_INCAPACITATED = false, IS_PED_IN_WRITHE = false, IS_ENTITY_DEAD = false, IS_PLAYER_DEAD = false
    • IS_PLAYER_CONTROL_ON = true
    • look controls (INPUT_LOOK_LR 0xA987235F / INPUT_LOOK_UD 0xD2047988) 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

  • ClearPedTasksImmediately fixes 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

Back to documentation