Guía: Permitir el movimiento mientras está esposado (FiveM)
En servidores de rol con FiveM, las esposas añaden un toque de realismo y tensión. Muchos jugadores descubren que el comportamiento de congelación predeterminado puede ser demasiado restrictivo, haciendo que la experiencia se sienta artificial. Esta guía te muestra cómo permitir que los jugadores se muevan mientras están esposados en todos los frameworks populares—QBCore, ESX y vRP—mientras se siguen evitando las acciones más obvias como disparar o conducir.
—
Comprensión del flujo de esposamiento
Cuando un jugador está esposado, el servidor generalmente alterna algunas configuraciones del lado del cliente:
Se reproduce la animación de las esposas (por ejemplo, `'mp_arresting', 'idle'`).
Los controles de esposas están habilitados (`SetEnableHandcuffs`).
La entidad suele congelarse para bloquear al jugador en su lugar.
Para permitir el movimiento, debes descongelar la entidad antes manteniendo activos todos los demás controles restrictivos. El desafío es localizar las líneas exactas en cada framework y ajustarlas sin romper tu lógica existente.
—
1. Encuentra el código de las esposas
Busca en los scripts de trabajo policial o utilidades la señal que activa las esposas. Normalmente se ve así:
“`lua
TaskPlayAnim(playerPed, ‘mp_arresting’, ‘idle’, 8.0, -8, -1, 49, 0, 0, 0, 0)
SetEnableHandcuffs(playerPed, true)
FreezeEntityPosition(playerPed, true)
“`
2. Habilitar el movimiento
Reemplaza la llamada de congelación:
“`lua
FreezeEntityPosition(playerPed, false) — Permite caminar libremente
“`
Tu fragmento actualizado queda:
“`lua
TaskPlayAnim(playerPed, ‘mp_arresting’, ‘idle’, 8.0, -8, -1, 49, 0, 0, 0, 0)
SetEnableHandcuffs(playerPed, true)
FreezeEntityPosition(playerPed, false)
“`
3. Mantenga los controles restringidos
Create a continuous thread that disables the potentially problematic actions:
“`lua
Citizen.CreateThread(function()
while true do
Citizen.Wait(10)
if IsHandcuffed then
DisableControlAction(0, 24, true) — Attack
DisableControlAction(0, 25, true) — Aim
DisableControlAction(0, 142, true) — MeleeAttackAlternate
DisableControlAction(0, 75, true) — Leave Vehicle
DisableControlAction(0, 92, true) — Shoot in vehicle
end
end
end)
“`
Replace `IsHandcuffed` with the variable that indicates the do‑handcuff state for your specific script.
—
1. Localice la sección principal de las esposas
Encuentra `esx_policejob\/client\/main.lua` y localiza el siguiente código:
“`lua
TaskPlayAnim(playerPed, ‘mp_arresting’, ‘idle’, 8.0, -8, -1, 49, 0, 0, 0, 0)
SetEnableHandcuffs(playerPed, true)
SetPedCanPlayGestureAnims(playerPed, false)
FreezeEntityPosition(playerPed, true)
“`
2. Eliminar la congelación
Cambie `FreezeEntityPosition(playerPed, true)` a `false` para que sea posible caminar.
3. Desactivar controles de teclas
Implement a similar thread to keep weapons and vehicle controls at bay:
“`lua
Citizen.CreateThread(function()
while true do
Citizen.Wait(10)
if IsHandcuffed then
DisableControlAction(0, 142, true) — MeleeAttackAlternate
DisableControlAction(0, 30, true) — MoveLeftRight
DisableControlAction(0, 31, true) — MoveUpDown
DisableControlAction(0, 24, true) — Shoot
DisableControlAction(0, 92, true) — Shoot in car
DisableControlAction(0, 75, true) — Leave Vehicle
end
end
end)
“`
Be sure to link `IsHandcuffed` to your ESX handcuff flag.
—
1. Encuentra la Declaración de Esposas
La lógica principal suele residir en `vrp\/modules\/police.lua` o en un recurso personalizado. Busca:
“`lua
vRPclient.playAnim(player, {true, {{mp_arresting, idle}}, true})
vRPclient.setHandcuffed(player, true)
vRPclient.setFreeze(player, true)
“`
2. Descongelar para el movimiento
Intercambia la línea de congelación:
“`lua
vRPclient.setFreeze(player, false)
“`
3. Bloquear acciones específicas
Insert or modify a client script to continuously disable undesired controls:
“`lua
Citizen.CreateThread(function()
while true do
Citizen.Wait(10)
if IsHandcuffed then
DisableControlAction(0, 24, true) — Attack
DisableControlAction(0, 25, true) — Aim
DisableControlAction(0, 142, true) — MeleeAttackAlternate
DisableControlAction(0, 75, true) — Leave Vehicle
DisableControlAction(0, 92, true) — Shoot in vehicle
DisableControlAction(0, 30, true) — Move Left/Right
DisableControlAction(0, 31, true) — Move Up/Down
end
end
end)
“`
4. Sincroniza la bandera de las esposas
Define a global variable and listen for a server‑side event:
“`lua
local IsHandcuffed = false
RegisterNetEvent(‘vrp:handcuff’)
AddEventHandler(‘vrp:handcuff’, function(status)
IsHandcuffed = status
end)
“`
Trigger this event whenever a player is handcuffed or released.
—
Consideraciones finales
Pruebe a fondo en una copia de su servidor antes de enviar los cambios en vivo.
Ajuste la lista `DisableControlAction` para que coincida con sus reglas de juego de rol; algunos servidores pueden querer permitir ciertos movimientos o intercambios.
Mantén siempre tus variables claras y consistentes; los marcadores de posición como `IsHandcuffed` deben estar vinculados a indicadores reales del script.
—
Conclusión: Su plan definitivo para la movilidad con esposas
Siguiendo esto
Guía: Permitir el movimiento mientras está esposado (FiveM), puedes introducir mecánicas de esposas realistas que permitan a los jugadores caminar mientras aún sienten las restricciones de estar inmovilizados. Este enfoque conserva un juego detallado para servidores QBCore, ESX y vRP, haciendo que los encuentros de rol sean más fluidos y atractivos para todos.
Rutas HiFiveM relacionadas