Anleitung: Bewegungsfreiheit in Handschellen (FiveM)
Das Anlegen von Handschellen an Spieler ist ein wichtiges Feature in Rollenspielszenarien für QBCore und ESX Police Job Frameworks in FiveM. Manchmal möchten Sie Spielern erlauben, sich mit Handschellen zu bewegen, während Sie bestimmte Steuerelemente einschränken, um den Realismus zu wahren. In diesem Leitfaden wird erklärt, wie Sie dies für beide erreichen können. QBCore Und ESX.
Nur ein Hinweis: Wir haben dieses Tutorial im November 2024 aktualisiert.
Zum Inhalt
Für QBCore Framework (& QBOX)
Schritt 1: Suchen Sie den Handschellencode
In QBCore, das Anlegen von Handschellen wird normalerweise im Polizeijobskript oder einem separaten Hilfsskript für Spielerinteraktionen behandelt. Suchen Sie den relevanten Code für das Anlegen von Handschellen, der oft so aussieht:
TaskPlayAnim(playerPed, 'mp_arresting', 'idle', 8.0, -8, -1, 49, 0, 0, 0, 0)
SetEnableHandcuffs(Spielerped, wahr)
FreezeEntityPosition(SpielerPed, true)
Schritt 2: Bewegung ermöglichen, wenn Handschellen angelegt sind
Ändern Sie die Zeile, die die Position des Spielers einfriert:
Vor:
luaCode kopierenFreezeEntityPosition(SpielerPed, true)
Nach:
FreezeEntityPosition(SpielerPed, false)
Diese Änderung ermöglicht es dem Spieler, sich mit Handschellen zu bewegen. Ihr aktualisierter Code sollte nun folgendermaßen aussehen:
TaskPlayAnim(playerPed, 'mp_arresting', 'idle', 8.0, -8, -1, 49, 0, 0, 0, 0)
SetEnableHandcuffs(Spielerped, wahr)
FreezeEntityPosition(SpielerPed, false)
Schritt 3: Bestimmte Aktionen einschränken
Um bestimmte Aktionen wie Angreifen oder Schießen einzuschränken, fügen Sie den folgenden Code hinzu:
Bürger.CreateThread(Funktion()
während wahr
Bürger.Warten(10)
wenn IsHandcuffed dann
DisableControlAction(0, 24, true) – Angriff
DisableControlAction(0, 25, true) – Zielen
DisableControlAction(0, 142, true) – MeleeAttackAlternate
DisableControlAction(0, 75, true) – Fahrzeug verlassen
DisableControlAction(0, 92, true) – Im Fahrzeug schießen
Ende
Ende
Ende)
Ersetzen Ist mit Handschellen gefesselt
mit der entsprechenden Variable oder Funktion, die in Ihrem Skript verwendet wird, um zu überprüfen, ob der Spieler Handschellen trägt.
Für ESX Framework
Schritt 1: Suchen Sie den Handschellencode
In ESX, Handschellenverhalten wird typischerweise definiert als esx_policejob/client/main.lua
. Suchen Sie nach Code ähnlich dem folgenden:
luaCode kopierenTaskPlayAnim(SpielerPed, „mp_arresting“, „idle“, 8.0, -8, -1, 49, 0, 0, 0, 0) SetEnableHandcuffs(SpielerPed, wahr) SetPedCanPlayGestureAnims(SpielerPed, falsch) FreezeEntityPosition(SpielerPed, wahr)
Schritt 2: Bewegung ermöglichen, wenn Handschellen angelegt sind
Ändern Sie die Objektposition einfrieren
Funktion:
Vor:
FreezeEntityPosition(SpielerPed, true)
Nach:
FreezeEntityPosition(SpielerPed, false)
Der geänderte Code sollte nun folgendermaßen aussehen:
TaskPlayAnim(playerPed, 'mp_arresting', 'idle', 8.0, -8, -1, 49, 0, 0, 0, 0)
SetEnableHandcuffs(Spielerped, wahr)
SetPedCanPlayGestureAnims(SpielerPed, false)
FreezeEntityPosition(SpielerPed, false)
Schritt 3: Bestimmte Aktionen einschränken
Fügen Sie den folgenden Thread hinzu, um Aktionen in gefesselten Händen einzuschränken:
luaCode kopierenCitizen.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) -- Schießen DisableControlAction(0, 92, true) -- Im Auto schießen DisableControlAction(0, 75, true) -- Fahrzeug verlassen end end end)
Ersetzen Ist mit Handschellen gefesselt
mit der entsprechenden Variable oder Funktion, die in Ihrem ESX-Skript verwendet wird.
Für vRP
Schritt 1: Suchen Sie den Handschellencode
In vRP, Handschellen werden in der Regel verwaltet in der vrp/modules/police.lua
Datei oder in einer benutzerdefinierten Ressource, wenn Ihr Server benutzerdefinierte Skripts hat. Suchen Sie nach Code, der die Animationen und Verhaltensweisen des Spielers steuert, wenn er gefesselt ist.
Der relevante Teil sieht typischerweise so aus:
vRPclient.playAnim(Spieler, {true, {{"mp_arresting", "idle"}}, true})
vRPclient.setHandcuffed(Spieler, wahr)
vRPclient.setFreeze(Spieler, true)
Schritt 2: Bewegung ermöglichen, während man mit Handschellen gefesselt ist
Um Bewegung in gefesselten Händen zu ermöglichen, ändern Sie das Einfrierverhalten. Ersetzen Sie die folgende Zeile:
Vor:
vRPclient.setFreeze(Spieler, true)
Nach:
vRPclient.setFreeze(Spieler, false)
Der aktualisierte Code sollte jetzt folgendermaßen aussehen:
vRPclient.playAnim(Spieler, {true, {{"mp_arresting", "idle"}}, true})
vRPclient.setHandcuffed(Spieler, wahr)
vRPclient.setFreeze(Spieler, false)
Schritt 3: Bestimmte Aktionen einschränken
Um den Realismus zu wahren, können Sie bestimmte Steuerelemente deaktivieren, während der Spieler gefesselt ist. Fügen Sie ein neues clientseitiges Skript hinzu oder ändern Sie ein vorhandenes, um den folgenden Code einzufügen:
Bürger.CreateThread(Funktion()
während wahr
Bürger.Warten(10)
wenn IsHandcuffed dann
DisableControlAction(0, 24, true) – Angriff
DisableControlAction(0, 25, true) – Zielen
DisableControlAction(0, 142, true) – MeleeAttackAlternate
DisableControlAction(0, 75, true) – Fahrzeug verlassen
DisableControlAction(0, 92, true) – Im Fahrzeug schießen
DisableControlAction(0, 30, true) – Nach links/rechts bewegen
DisableControlAction(0, 31, true) – Nach oben/unten verschieben
Ende
Ende
Ende)
Verknüpfung des Handschellenstatus
Bei vRP ist die Ist mit Handschellen gefesselt
Variable muss mit dem Handschellenstatus des Spielers verknüpft werden. Aktualisieren Sie Ihre vRPclient
Skript zum Synchronisieren des Handcuff-Status. Beispiel:
lokales IsHandcuffed = false
RegisterNetEvent('vrp:handschellen')
AddEventHandler('vrp:handcuff', Funktion(Status)
Ist in Handschellen gefesselt = Status
Ende)
Lösen Sie dieses Ereignis in Ihrem serverseitigen Skript aus, wenn einem Spieler Handschellen angelegt oder die Handschellen gelöst werden.
Abschließende Anmerkungen
- Stellen Sie sicher, dass Sie die geänderten Skripts auf Ihrem Server testen, um sicherzustellen, dass sie wie vorgesehen funktionieren.
- Verwenden Sie geeignete Variablen und Funktionen, um zu überprüfen, ob ein Spieler Handschellen trägt (
Ist mit Handschellen gefesselt
ist ein Platzhalter in dieser Anleitung). - Passen Sie die
DisableControlAction
Anrufe basierend auf den Rollenspielanforderungen Ihres Servers. - Diese Anleitung verbessert das Eintauchen, indem sie Bewegung ermöglicht, die Steuerung jedoch realistisch begrenzt hält.
Wenn Sie dieser Anleitung folgen, können Sie die Bewegung für gefesselte Spieler in beiden aktivieren QBCore Und ESX Frameworks, während sie gleichzeitig die Kontrolle über ihre Aktionen behalten, was zu einem spannenderen Rollenspielerlebnis führt.