Guide : Autoriser les mouvements tout en étant menotté (FiveM) Indispensable
Vous souhaitez que les joueurs menottés puissent se déplacer dans FiveM sans perdre en réalisme ? Notre guide pratique vous guide à travers des ajustements de code faciles pour QBCore, ESX et vRP, permettant ainsi les mouvements tout en désactivant les actions indésirables.
Guide : Autoriser les mouvements tout en étant menotté (FiveM)
Sur les serveurs de jeu de rôle avec FiveM, les menottes ajoutent une touche de réalisme et de tension. De nombreux joueurs trouvent que le gel par défaut peut être trop restrictif, rendant l'expérience artificielle. Ce guide vous explique comment permettre aux joueurs de se déplacer avec les menottes sur tous les frameworks populaires (QBCore, ESX et vRP), tout en empêchant les actions les plus évidentes comme tirer ou conduire.
—
Comprendre le déroulement du menottage
Lorsqu'un joueur est menotté, le serveur active généralement quelques paramètres côté client :
L'animation des menottes est jouée (par exemple, « mp_arresting », « idle »).
Les commandes des menottes sont activées (`SetEnableHandcuffs`).
L'entité est généralement gelée pour verrouiller le joueur en place.
Pour permettre le mouvement, vous devez dégeler l'entité avant en maintenant tous les autres contrôles restrictifs actifs. Le défi consiste à localiser les lignes exactes dans chaque cadre et à les ajuster sans perturber la logique existante.
—
QBCore Framework (et QBOX) – Étape par étape
1. Trouvez le code des menottes
Recherchez dans les scripts de travail ou d'utilitaires de la police le signal qui déclenche le menottage. Il ressemble généralement à ceci :
« Lua
TaskPlayAnim(playerPed, 'mp_arresting', 'idle', 8.0, -8, -1, 49, 0, 0, 0, 0)
SetEnableHandcuffs(joueurPed, vrai)
FreezeEntityPosition(joueurPed, vrai)
“`
2. Permettre le mouvement
Remplacer l'appel de gel :
« Lua
FreezeEntityPosition(playerPed, false) — Autorise la marche libre
“`
Votre extrait mis à jour devient :
« Lua
TaskPlayAnim(playerPed, 'mp_arresting', 'idle', 8.0, -8, -1, 49, 0, 0, 0, 0)
SetEnableHandcuffs(joueurPed, vrai)
FreezeEntityPosition(joueurPed, faux)
“`
3. Gardez les contrôles restreints
Créez un thread continu qui désactive les actions potentiellement problématiques :
« Lua
Citoyen.CreateThread(fonction()
bien que ce soit vrai
Citoyen.Attendez(10)
si IsHandcuffed alors
DisableControlAction(0, 24, true) — Attaque
DisableControlAction(0, 25, true) — Objectif
DisableControlAction(0, 142, true) — MeleeAttackAlternate
DisableControlAction(0, 75, true) — Quitter le véhicule
DisableControlAction(0, 92, true) — Tirer dans le véhicule
fin
fin
fin)
“`
Remplacez « IsHandcuffed » par la variable qui indique l’état de menottage pour votre script spécifique.
—
ESX Framework – Comment procéder ?
1. Localisez la section principale des menottes
Recherchez `esx_policejob/client/main.lua` et localisez le code suivant :
« Lua
TaskPlayAnim(playerPed, 'mp_arresting', 'idle', 8.0, -8, -1, 49, 0, 0, 0, 0)
SetEnableHandcuffs(joueurPed, vrai)
SetPedCanPlayGestureAnims(joueurPed, faux)
FreezeEntityPosition(joueurPed, vrai)
“`
2. Retirez le gel
Changez `FreezeEntityPosition(playerPed, true)` en `false` pour que la marche soit possible.
3. Désactiver les commandes clés
Implémentez un fil similaire pour garder les armes et les commandes de véhicules à distance :
« Lua
Citoyen.CreateThread(fonction()
bien que ce soit vrai
Citoyen.Attendez(10)
si IsHandcuffed alors
DisableControlAction(0, 142, true) — MeleeAttackAlternate
DisableControlAction(0, 30, true) — MoveLeftRight
DisableControlAction(0, 31, true) — Déplacer vers le haut vers le bas
DisableControlAction(0, 24, true) — Tirer
DisableControlAction(0, 92, true) — Tirer dans la voiture
DisableControlAction(0, 75, true) — Quitter le véhicule
fin
fin
fin)
“`
Assurez-vous de lier « IsHandcuffed » à votre indicateur de menottes ESX.
—
vRP – Personnalisation du mouvement
1. Trouvez la déclaration des menottes
La logique principale réside souvent dans « vrp/modules/police.lua » ou dans une ressource personnalisée. Recherchez :
« Lua
vRPclient.playAnim(joueur, {true, {{mp_arresting, idle}}, true})
vRPclient.setHandcuffed(joueur, vrai)
vRPclient.setFreeze(joueur, vrai)
“`
2. Dégeler pour le mouvement
Échanger la ligne de gel :
« Lua
vRPclient.setFreeze(joueur, faux)
“`
3. Verrouiller des actions spécifiques
Insérer ou modifier un script client pour désactiver en continu les contrôles indésirables :
« Lua
Citoyen.CreateThread(fonction()
bien que ce soit vrai
Citoyen.Attendez(10)
si IsHandcuffed alors
DisableControlAction(0, 24, true) — Attaque
DisableControlAction(0, 25, true) — Objectif
DisableControlAction(0, 142, true) — MeleeAttackAlternate
DisableControlAction(0, 75, true) — Quitter le véhicule
DisableControlAction(0, 92, true) — Tirer dans le véhicule
DisableControlAction(0, 30, true) — Déplacer vers la gauche/droite
DisableControlAction(0, 31, true) — Déplacer vers le haut/bas
fin
fin
fin)
“`
4. Synchronisez le drapeau des menottes
Définissez une variable globale et écoutez un événement côté serveur :
« Lua
local IsHandcuffed = faux
RegisterNetEvent('vrp:menottes')
AddEventHandler('vrp:menottes', fonction(état)
IsHandcuffed = statut
fin)
“`
Déclenchez cet événement chaque fois qu'un joueur est menotté ou libéré.
—
Considérations finales
Testez soigneusement sur une copie de votre serveur avant de mettre en ligne les modifications.
Ajustez la liste « DisableControlAction » pour qu'elle corresponde à vos règles de jeu de rôle : certains serveurs peuvent vouloir autoriser certains mouvements ou échanges.
Gardez toujours vos variables claires et cohérentes ; les espaces réservés comme « IsHandcuffed » doivent être liés à des indicateurs de script réels.
—
Conclusion – Votre plan de mobilité ultime avec menottes
En suivant ceci Guide : Autoriser les mouvements tout en étant menotté (FiveM), vous pouvez introduire des mécanismes de menottes réalistes permettant aux joueurs de se déplacer tout en ressentant les contraintes liées à leur entrave. Cette approche préserve l'immersion du gameplay sur les serveurs QBCore, ESX et vRP, rendant les rencontres de jeu de rôle plus fluides et plus engageantes pour tous.






