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.


image 7

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é.


image 8

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.luaRecherchez 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.

Laisser un commentaire