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 sur place. Pour autoriser le mouvement, vous devez dégeler l'entité avant en gardant tous les autres contrôles restrictifs actifs. Le défi est de localiser les lignes exactes dans chaque framework et de les ajuster sans casser votre logique existante. —QBCore Framework (et QBOX) – Étape par étape
1. Trouvez le code des menottes
Recherchez dans les scripts de job de police ou utilitaires le signal qui déclenche le menottage. Il ressemble normalement à : “`lua TaskPlayAnim(playerPed, ‘mp_arresting’, ‘idle’, 8.0, -8, -1, 49, 0, 0, 0, 0) SetEnableHandcuffs(playerPed, true) FreezeEntityPosition(playerPed, true) “`2. Permettre le mouvement
Remplacez l'appel de gel : “`lua FreezeEntityPosition(playerPed, false) — Permet la marche libre “` Votre extrait mis à jour devient : “`lua TaskPlayAnim(playerPed, ‘mp_arresting’, ‘idle’, 8.0, -8, -1, 49, 0, 0, 0, 0) SetEnableHandcuffs(playerPed, true) FreezeEntityPosition(playerPed, false) “`3. Gardez les contrôles restreints
Créez un thread continu qui désactive les actions potentiellement problématiques : “`lua Citizen.CreateThread(function() while true do Citizen.Wait(10) if IsHandcuffed then DisableControlAction(0, 24, true) — Attaque DisableControlAction(0, 25, true) — Viser DisableControlAction(0, 142, true) — AttaqueMêléeAlternée DisableControlAction(0, 75, true) — Sortir du véhicule DisableControlAction(0, 92, true) — Tirer dans le véhicule end end end) “` 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
Trouvez `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(playerPed, true) SetPedCanPlayGestureAnims(playerPed, false) FreezeEntityPosition(playerPed, true) “`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 thread similaire pour tenir à distance les armes et les contrôles de véhicule : “`lua Citizen.CreateThread(function() while true do Citizen.Wait(10) if IsHandcuffed then DisableControlAction(0, 142, true) — AttaqueMêléeAlternée DisableControlAction(0, 30, true) — DéplacementGaucheDroite DisableControlAction(0, 31, true) — DéplacementHautBas DisableControlAction(0, 24, true) — Tirer DisableControlAction(0, 92, true) — Tirer dans la voiture DisableControlAction(0, 75, true) — Sortir du véhicule end end end) “` Assurez-vous de lier `IsHandcuffed` à votre indicateur de menottage ESX. —vRP – Personnalisation du mouvement
1. Trouvez la déclaration des menottes
La logique principale réside souvent dans `vrp\/modules\/police.lua` ou une ressource personnalisée. Recherchez : “`lua vRPclient.playAnim(player, {true, {{mp_arresting, idle}}, true}) vRPclient.setHandcuffed(player, true) vRPclient.setFreeze(player, true) “`2. Dégeler pour le mouvement
Échangez la ligne de gel : “`lua vRPclient.setFreeze(player, false) “`3. Verrouiller des actions spécifiques
Insérez ou modifiez un script client pour désactiver en continu les contrôles indésirables : “`lua Citizen.CreateThread(function() while true do Citizen.Wait(10) if IsHandcuffed then DisableControlAction(0, 24, true) — Attaque DisableControlAction(0, 25, true) — Viser DisableControlAction(0, 142, true) — AttaqueMêléeAlternée DisableControlAction(0, 75, true) — Sortir du véhicule DisableControlAction(0, 92, true) — Tirer dans le véhicule DisableControlAction(0, 30, true) — Déplacement Gauche\/Droite DisableControlAction(0, 31, true) — Déplacement Haut\/Bas end end end) “`4. Synchronisez le drapeau des menottes
Définissez une variable globale et écoutez un événement côté serveur : “`lua local IsHandcuffed = false RegisterNetEvent(‘vrp:handcuff’) AddEventHandler(‘vrp:handcuff’, function(status) IsHandcuffed = status end) “` Déclenchez cet événement lorsqu'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 aux indicateurs réels du script. — 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 qui permettent aux joueurs de se déplacer tout en ressentant les restrictions d'être entravés. Cette approche conserve un gameplay détaillé pour les serveurs QBCore, ESX et vRP, rendant les rencontres de role‑play plus fluides et plus engageantes pour tout le monde.Chemins FiveMX associés
Utilisez ces pages internes comme prochaine étape de révision avant de choisir une ressource pour un serveur en direct: