Algemar jogadores é um recurso crítico em cenários de RPG para QBCore e ESX Police Job frameworks no FiveM. Às vezes, você pode querer permitir que os jogadores se movam enquanto algemados, restringindo controles específicos para manter o realismo. Este guia explica como fazer isso para ambos QBCore e ESX.
Apenas um aviso: atualizamos este tutorial em novembro de 2024.
Ir para o conteúdo

Para QBCore Framework (e QBOX)
Etapa 1: Localize o código de algemas
Em QBCore, algemas são tipicamente tratadas no script de trabalho da polícia ou em um script utilitário separado para interações do jogador. Localize o código relevante para algemas, que geralmente se parece com isto:
TaskPlayAnim(playerPed, 'mp_arresting', 'inativo', 8.0, -8, -1, 49, 0, 0, 0, 0)
DefinirHabilitarAlgemas(playerPed, verdadeiro)
FreezeEntityPosition(jogadorPed, verdadeiro)
Etapa 2: Habilite o movimento quando algemado
Modifique a linha que congela a posição do jogador:
Antes:
luaCode copiarFreezeEntityPosition(jogadorPed, verdadeiro)
Depois:
FreezeEntityPosition(jogadorPed, falso)
Essa mudança permite que o jogador se mova enquanto estiver algemado. Seu código atualizado agora deve ficar assim:
TaskPlayAnim(playerPed, 'mp_arresting', 'inativo', 8.0, -8, -1, 49, 0, 0, 0, 0)
DefinirHabilitarAlgemas(playerPed, verdadeiro)
FreezeEntityPosition(jogadorPed, falso)
Etapa 3: restringir ações específicas
Para restringir ações específicas, como atacar ou atirar, adicione o seguinte código:
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, verdadeiro) -- Ataque Corpo a Corpo Alternativo
DisableControlAction(0, 75, true) -- Sair do veículo
DisableControlAction(0, 92, true) -- Atirar no veículo
fim
fim
fim)
Substituir Está algemado
com a variável ou função apropriada usada em seu script para verificar se o jogador está algemado.

Para ESX Framework
Etapa 1: Localize o código de algemas
Em ESX, o comportamento de algemar é normalmente definido em esx_policejob/cliente/main.lua
. Procure por um código semelhante ao seguinte:
luaCode copiarTaskPlayAnim(playerPed, 'mp_arresting', 'idle', 8.0, -8, -1, 49, 0, 0, 0, 0) SetEnableHandcuffs(playerPed, verdadeiro) SetPedCanPlayGestureAnims(playerPed, falso) FreezeEntityPosition(playerPed, verdadeiro)
Etapa 2: Habilite o movimento quando algemado
Modificar o CongelarPosiçãoEntidade
função:
Antes:
FreezeEntityPosition(jogadorPed, verdadeiro)
Depois:
FreezeEntityPosition(jogadorPed, falso)
O código modificado agora deve ficar assim:
TaskPlayAnim(playerPed, 'mp_arresting', 'inativo', 8.0, -8, -1, 49, 0, 0, 0, 0)
DefinirHabilitarAlgemas(playerPed, verdadeiro)
DefinirPedCanPlayGestureAnims(jogadorPed, falso)
FreezeEntityPosition(jogadorPed, falso)
Etapa 3: restringir ações específicas
Adicione o seguinte tópico para restringir ações enquanto estiver algemado:
luaCode copiarCitizen.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) -- Atirar DisableControlAction(0, 92, true) -- Atirar no carro DisableControlAction(0, 75, true) -- Sair do veículo end end end)
Substituir Está algemado
com a variável ou função correspondente usada no seu script ESX.
Para vRP
Etapa 1: Localize o código de algemas
Em vRP, o algemamento é geralmente administrado no vrp/módulos/policia.lua
arquivo ou em um recurso personalizado se seu servidor tiver scripts personalizados. Procure por código que controle animações e comportamentos do jogador quando algemado.
A parte relevante geralmente se parece com isto:
vRPclient.playAnim(jogador, {verdadeiro, {{"mp_arresting", "inativo"}}, verdadeiro})
vRPclient.setHandcuffed(jogador, verdadeiro)
vRPclient.setFreeze(jogador, verdadeiro)
Etapa 2: Habilite o movimento enquanto estiver algemado
Para permitir movimento enquanto algemado, modifique o comportamento de congelamento. Substitua a seguinte linha:
Antes:
vRPclient.setFreeze(jogador, verdadeiro)
Depois:
vRPclient.setFreeze(jogador, falso)
O código atualizado agora deve ficar assim:
vRPclient.playAnim(jogador, {verdadeiro, {{"mp_arresting", "inativo"}}, verdadeiro})
vRPclient.setHandcuffed(jogador, verdadeiro)
vRPclient.setFreeze(jogador, falso)
Etapa 3: restringir ações específicas
Para manter o realismo, você pode desabilitar certos controles enquanto o jogador estiver algemado. Adicione um novo script do lado do cliente ou modifique um existente para incluir o seguinte código:
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, verdadeiro) -- 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)
Vinculando o status algemado
No vRP, o Está algemado
variável precisa ser vinculada ao status de algemado do jogador. Atualize seu cliente vRP
script para sincronizar o estado de algema. Por exemplo:
local IsHandcuffed = falso
RegisterNetEvent('vrp:algema')
AddEventHandler('vrp:algema', função(status)
IsHandcuffed = status
fim)
Acione este evento quando um jogador estiver algemado ou solto no seu script do lado do servidor.
Notas Finais
- Certifique-se de testar os scripts modificados no seu servidor para verificar se eles funcionam conforme o esperado.
- Use variáveis e funções adequadas para verificar se um jogador está algemado (
Está algemado
é um espaço reservado neste guia). - Adapte o
DesabilitarControleAção
chamadas com base nas necessidades de interpretação de papéis do seu servidor. - Este guia aumenta a imersão ao permitir movimento e ao mesmo tempo manter os controles realisticamente limitados.
Seguindo este guia, você pode habilitar o movimento de jogadores algemados em ambos QBCore e ESX estruturas, mantendo o controle sobre suas ações, resultando em uma experiência de RPG mais envolvente.