Le menottage des joueurs est une fonctionnalité essentielle dans les scénarios de jeu de rôle pour les frameworks QBCore et ESX Police Job dans FiveM. Parfois, vous souhaiterez peut-être autoriser les joueurs à se déplacer avec les menottes tout en limitant des commandes spécifiques pour maintenir le réalisme. Ce guide explique comment y parvenir pour les deux QBCore et ESX.
Attention : nous avons mis à jour ce tutoriel en novembre 2024.
Accéder au contenu

Pour QBCore Framework (et QBOX)
Étape 1 : Localisez le code de menottage
Dans QBCore, le menottage est généralement géré dans le script de travail de la police ou dans un script utilitaire distinct pour les interactions des joueurs. Recherchez le code approprié pour le menottage, qui ressemble souvent à ceci :
TaskPlayAnim(joueurPed, 'mp_arresting', 'idle', 8.0, -8, -1, 49, 0, 0, 0, 0)
SetEnableHandcuffs(joueurPed, vrai)
FreezeEntityPosition(joueurPed, vrai)
Étape 2 : Permettre le mouvement lorsque l'on est menotté
Modifier la ligne qui gèle la position du joueur :
Avant:
Copier le code LuaFreezeEntityPosition(joueurPed, vrai)
Après:
FreezeEntityPosition(joueurPed, faux)
Cette modification permet au joueur de se déplacer tout en étant menotté. Votre code mis à jour devrait maintenant ressembler à ceci :
TaskPlayAnim(joueurPed, 'mp_arresting', 'idle', 8.0, -8, -1, 49, 0, 0, 0, 0)
SetEnableHandcuffs(joueurPed, vrai)
FreezeEntityPosition(joueurPed, faux)
Étape 3 : restreindre des actions spécifiques
Pour restreindre des actions spécifiques comme attaquer ou tirer, ajoutez le code suivant :
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)
Remplacer Est menotté
avec la variable ou la fonction appropriée utilisée dans votre script pour vérifier si le joueur est menotté.

Pour ESX Framework
Étape 1 : Localisez le code de menottage
Dans ESX, le comportement de menottage est généralement défini dans esx_policejob/client/main.lua
Recherchez un code similaire à celui-ci :
Copier le code LuaTaskPlayAnim(playerPed, 'mp_arresting', 'idle', 8.0, -8, -1, 49, 0, 0, 0, 0) SetEnableHandcuffs(playerPed, true) SetPedCanPlayGestureAnims(playerPed, false) FreezeEntityPosition(playerPed, true)
Étape 2 : Permettre le mouvement lorsque l'on est menotté
Modifier le FreezeEntityPosition
fonction:
Avant:
FreezeEntityPosition(joueurPed, vrai)
Après:
FreezeEntityPosition(joueurPed, faux)
Le code modifié devrait maintenant ressembler à ceci :
TaskPlayAnim(joueurPed, 'mp_arresting', 'idle', 8.0, -8, -1, 49, 0, 0, 0, 0)
SetEnableHandcuffs(joueurPed, vrai)
SetPedCanPlayGestureAnims(joueurPed, faux)
FreezeEntityPosition(joueurPed, faux)
Étape 3 : restreindre des actions spécifiques
Ajoutez le fil suivant pour restreindre les actions lorsque vous êtes menotté :
Copier le code LuaCitizen.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) -- Shoot DisableControlAction(0, 92, true) -- Tirer dans la voiture DisableControlAction(0, 75, true) -- Quitter le véhicule end end end)
Remplacer Est menotté
avec la variable ou la fonction correspondante utilisée dans votre script ESX.
Pour vRP
Étape 1 : Localisez le code de menottage
Dans vRP, le menottage est généralement géré dans le vrp/modules/police.lua
fichier ou dans une ressource personnalisée si votre serveur dispose de scripts personnalisés. Recherchez le code qui contrôle les animations et les comportements des joueurs lorsqu'ils sont menottés.
La partie pertinente ressemble généralement à ceci :
vRPclient.playAnim(joueur, {true, {{"mp_arresting", "idle"}}, true})
vRPclient.setHandcuffed(joueur, vrai)
vRPclient.setFreeze(joueur, vrai)
Étape 2 : Permettre les mouvements tout en étant menotté
Pour permettre le mouvement avec les menottes, modifiez le comportement de blocage. Remplacez la ligne suivante :
Avant:
vRPclient.setFreeze(joueur, vrai)
Après:
vRPclient.setFreeze(joueur, faux)
Le code mis à jour devrait maintenant ressembler à ceci :
vRPclient.playAnim(joueur, {true, {{"mp_arresting", "idle"}}, true})
vRPclient.setHandcuffed(joueur, vrai)
vRPclient.setFreeze(joueur, faux)
Étape 3 : restreindre des actions spécifiques
Pour conserver le réalisme, vous pouvez désactiver certains contrôles lorsque le joueur est menotté. Ajoutez un nouveau script côté client ou modifiez-en un existant pour inclure le code suivant :
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)
Lier le statut menotté
Dans vRP, le Est menotté
la variable doit être liée au statut menotté du joueur. Mettez à jour votre Client vRP
script pour synchroniser l'état des menottes. Par exemple :
local IsHandcuffed = faux
RegisterNetEvent('vrp:menottes')
AddEventHandler('vrp:menottes', fonction(état)
IsHandcuffed = statut
fin)
Déclenchez cet événement lorsqu'un joueur est menotté ou démené dans votre script côté serveur.
Notes finales
- Assurez-vous de tester les scripts modifiés sur votre serveur pour vérifier qu'ils fonctionnent comme prévu.
- Utilisez des variables et des fonctions appropriées pour vérifier si un joueur est menotté (
Est menotté
est un espace réservé dans ce guide). - Personnalisez le
DésactiverControlAction
appels basés sur les besoins de jeu de rôle de votre serveur. - Ce guide améliore l'immersion en permettant le mouvement tout en gardant les commandes limitées de manière réaliste.
En suivant ce guide, vous pouvez permettre le mouvement des joueurs menottés dans les deux QBCore et ESX cadres tout en gardant le contrôle de leurs actions, conduisant à une expérience de jeu de rôle plus engageante.