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 travar 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 framework e ajustá-las sem quebrar sua lógica existente. —Framework QBCore (e QBOX) – Passo a passo
1. Encontre o código da algema
Pesquise nos scripts de trabalho policial ou utilitários a deixa que aciona a algemagem. Normalmente se parece com: “`lua TaskPlayAnim(playerPed, ‘mp_arresting’, ‘idle’, 8.0, -8, -1, 49, 0, 0, 0, 0) SetEnableHandcuffs(playerPed, true) FreezeEntityPosition(playerPed, true) “`2. Habilitar o movimento
Substitua a chamada de congelamento: “`lua FreezeEntityPosition(playerPed, false) — Permite caminhar livremente “` Seu trecho atualizado fica: “`lua TaskPlayAnim(playerPed, ‘mp_arresting’, ‘idle’, 8.0, -8, -1, 49, 0, 0, 0, 0) SetEnableHandcuffs(playerPed, true) FreezeEntityPosition(playerPed, false) “`3. Mantenha os controles restritos
Crie uma thread contínua que desabilita as ações potencialmente problemáticas: “`lua Citizen.CreateThread(function() while true do Citizen.Wait(10) if IsHandcuffed then DisableControlAction(0, 24, true) — Atacar DisableControlAction(0, 25, true) — Mirar DisableControlAction(0, 142, true) — AtaqueCorpoACorpoAlternativo DisableControlAction(0, 75, true) — Sair do Veículo DisableControlAction(0, 92, true) — Atirar no veículo end end end) “` Substitua `IsHandcuffed` pela variável que indica o estado de algemagem do 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’, ‘idle’, 8.0, -8, -1, 49, 0, 0, 0, 0) SetEnableHandcuffs(playerPed, true) SetPedCanPlayGestureAnims(playerPed, false) FreezeEntityPosition(playerPed, true) “`2. Remova o congelamento
Altere `FreezeEntityPosition(playerPed, true)` para `false` para que seja possível caminhar.3. Desabilite os controles de tecla
Implemente uma thread semelhante para manter armas e controles de veículo sob controle: “`lua Citizen.CreateThread(function() while true do Citizen.Wait(10) if IsHandcuffed then DisableControlAction(0, 142, true) — AtaqueCorpoACorpoAlternativo DisableControlAction(0, 30, true) — MoverEsquerdaDireita DisableControlAction(0, 31, true) — MoverCimaBaixo DisableControlAction(0, 24, true) — Atirar DisableControlAction(0, 92, true) — Atirar no carro DisableControlAction(0, 75, true) — Sair do Veículo end end end) “` Certifique-se de vincular `IsHandcuffed` à sua flag de algemagem do ESX. —vRP – Personalização do Movimento
1. Encontre a Declaração de Algemas
A lógica principal geralmente reside em `vrp\/modules\/police.lua` ou em um recurso personalizado. Procure por: “`lua vRPclient.playAnim(player, {true, {{mp_arresting, idle}}, true}) vRPclient.setHandcuffed(player, true) vRPclient.setFreeze(player, true) “`2. Descongele para se movimentar
Troque a linha de congelamento: “`lua vRPclient.setFreeze(player, false) “`3. Bloquear ações específicas
Insira ou modifique um script do cliente para desabilitar continuamente os controles indesejados: “`lua Citizen.CreateThread(function() while true do Citizen.Wait(10) if IsHandcuffed then DisableControlAction(0, 24, true) — Atacar DisableControlAction(0, 25, true) — Mirar DisableControlAction(0, 142, true) — AtaqueCorpoACorpoAlternativo DisableControlAction(0, 75, true) — Sair do Veículo DisableControlAction(0, 92, true) — Atirar no veículo DisableControlAction(0, 30, true) — Mover Esquerda\/Direita DisableControlAction(0, 31, true) — Mover Cima\/Baixo end end end) “`4. Sincronize a bandeira das algemas
Defina uma variável global e escute um evento do lado do servidor: “`lua local IsHandcuffed = false RegisterNetEvent(‘vrp:handcuff’) AddEventHandler(‘vrp:handcuff’, function(status) IsHandcuffed = status end) “` Dispare este evento sempre que um jogador for algemado ou liberado. —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; placeholders como `IsHandcuffed` devem estar vinculados às flags reais do script. — 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 que os jogadores andem enquanto ainda sentem as restrições de estar algemados. Esta abordagem mantém uma jogabilidade detalhada para servidores QBCore, ESX e vRP, tornando os encontros de role‑play mais suaves e envolventes para todos.Caminhos FiveMX relacionados
Use estas páginas internas como a próxima etapa de revisão antes de escolher um recurso para um servidor ao vivo: