Guia: Permitindo o movimento enquanto algemado (FiveM) MustHave
Quer que jogadores algemados se movam no FiveM sem perder o realismo? Nosso guia prático mostra ajustes simples de código para QBCore, ESX e vRP, permitindo a movimentação enquanto mantém as ações indesejadas desabilitadas.
Guia: Permitindo movimento enquanto algemado (FiveM)
Em servidores de RPG com FiveM, algemas adicionam um toque de realismo e tensão. Muitos jogadores acham que o comportamento padrão de congelamento pode ser muito restritivo, tornando a experiência artificial. Este guia mostra como permitir que os jogadores se movam algemados em todas as plataformas populares — QBCore, ESX e vRP — e ainda impedir as ações mais óbvias, como atirar ou dirigir.
—
Compreendendo o fluxo de algemas
Quando um jogador é algemado, o servidor normalmente alterna algumas configurações do lado do cliente:
A animação da algema é reproduzida (por exemplo, `'mp_arresting', 'idle'`).
Os controles de algemas estão habilitados (`SetEnableHandcuffs`).
A entidade geralmente é congelada para fixar o jogador no lugar.
Para permitir o movimento, você precisa descongelar a entidade antes mantendo todos os outros controles restritivos ativos. O desafio é localizar as linhas exatas em cada estrutura e ajustá-las sem quebrar a lógica existente.
—
Framework QBCore (e QBOX) – Passo a passo
1. Encontre o código da algema
Procure nos scripts de emprego ou de utilidade pública o gatilho que aciona o algemamento. Normalmente, parece algo assim:
“`lua
TaskPlayAnim(playerPed, 'mp_arresting', 'inativo', 8.0, -8, -1, 49, 0, 0, 0, 0)
DefinirHabilitarAlgemas(playerPed, verdadeiro)
FreezeEntityPosition(jogadorPed, verdadeiro)
“`
2. Habilitar o movimento
Substitua a chamada de congelamento:
“`lua
FreezeEntityPosition(playerPed, false) — Permite caminhada livre
“`
Seu snippet atualizado se torna:
“`lua
TaskPlayAnim(playerPed, 'mp_arresting', 'inativo', 8.0, -8, -1, 49, 0, 0, 0, 0)
DefinirHabilitarAlgemas(playerPed, verdadeiro)
FreezeEntityPosition(jogadorPed, falso)
“`
3. Mantenha os controles restritos
Crie um thread contínuo que desabilite as ações potencialmente problemáticas:
“`lua
Cidadão.CreateThread(função()
enquanto verdadeiro faça
Cidadão.Espere(10)
se IsHandcuffed então
DisableControlAction(0, 24, true) — Ataque
DisableControlAction(0, 25, true) — Objetivo
DisableControlAction(0, 142, true) — Ataque Corpo a Corpo Alternativo
DisableControlAction(0, 75, true) — Sair do veículo
DisableControlAction(0, 92, true) — Atirar no veículo
fim
fim
fim)
“`
Substitua `IsHandcuffed` pela variável que indica o estado do‑handcuff para seu script específico.
—
ESX Framework – Como fazer
1. Localize a seção principal das algemas
Encontre `esx_policejob/client/main.lua` e localize o seguinte código:
“`lua
TaskPlayAnim(playerPed, 'mp_arresting', 'inativo', 8.0, -8, -1, 49, 0, 0, 0, 0)
DefinirHabilitarAlgemas(playerPed, verdadeiro)
DefinirPedCanPlayGestureAnims(jogadorPed, falso)
FreezeEntityPosition(jogadorPed, verdadeiro)
“`
2. Remova o congelamento
Altere `FreezeEntityPosition(playerPed, true)` para `false` para que seja possível caminhar.
3. Desabilite os controles de tecla
Implemente um tópico semelhante para manter os controles de armas e veículos sob controle:
“`lua
Cidadão.CreateThread(função()
enquanto verdadeiro faça
Cidadão.Espere(10)
se IsHandcuffed então
DisableControlAction(0, 142, true) — Ataque Corpo a Corpo Alternativo
DisableControlAction(0, 30, true) — MoverEsquerdaDireita
DisableControlAction(0, 31, true) — Mover para cima e para baixo
DisableControlAction(0, 24, true) — Disparar
DisableControlAction(0, 92, true) — Atirar no carro
DisableControlAction(0, 75, true) — Sair do veículo
fim
fim
fim)
“`
Não se esqueça de vincular `IsHandcuffed` ao seu sinalizador de algema ESX.
—
vRP – Personalização do Movimento
1. Encontre a Declaração de Algemas
A lógica central geralmente reside em `vrp/modules/police.lua` ou em um recurso personalizado. Procure por:
“`lua
vRPclient.playAnim(jogador, {verdadeiro, {{mp_arresting, inativo}}, verdadeiro})
vRPclient.setHandcuffed(jogador, verdadeiro)
vRPclient.setFreeze(jogador, verdadeiro)
“`
2. Descongele para se movimentar
Troque a linha de congelamento:
“`lua
vRPclient.setFreeze(jogador, falso)
“`
3. Bloquear ações específicas
Insira ou modifique um script de cliente para desabilitar continuamente controles indesejados:
“`lua
Cidadão.CreateThread(função()
enquanto verdadeiro faça
Cidadão.Espere(10)
se IsHandcuffed então
DisableControlAction(0, 24, true) — Ataque
DisableControlAction(0, 25, true) — Objetivo
DisableControlAction(0, 142, true) — Ataque Corpo a Corpo Alternativo
DisableControlAction(0, 75, true) — Sair do veículo
DisableControlAction(0, 92, true) — Atirar no veículo
DisableControlAction(0, 30, true) — Mover para a esquerda/direita
DisableControlAction(0, 31, true) — Mover para cima/baixo
fim
fim
fim)
“`
4. Sincronize a bandeira das algemas
Defina uma variável global e escute um evento do lado do servidor:
“`lua
local IsHandcuffed = falso
RegisterNetEvent('vrp:algema')
AddEventHandler('vrp:algema', função(status)
IsHandcuffed = status
fim)
“`
Acione este evento sempre que um jogador for algemado ou solto.
—
Considerações Finais
Teste completamente em uma cópia do seu servidor antes de colocar as alterações no ar.
Ajuste a lista `DisableControlAction` para corresponder às suas regras de dramatização — alguns servidores podem querer permitir certos movimentos ou trocas.
Mantenha sempre suas variáveis claras e consistentes; marcadores de posição como `IsHandcuffed` devem ser vinculados a sinalizadores de script reais.
—
Conclusão – Seu Projeto Definitivo de Mobilidade com Algemas
Seguindo isto Guia: Permitindo movimento enquanto algemado (FiveM), você pode introduzir mecânicas realistas de algemas que permitem aos jogadores andarem sem deixar de sentir as restrições de estarem presos. Essa abordagem mantém a jogabilidade imersiva para servidores QBCore, ESX e vRP, tornando os encontros de RPG mais fluidos e envolventes para todos.






