Alles, was du anpassen kannst, befindet sich an zwei Orten: in config.lua für das Verhalten und im Ordner bridge/ für die Anbindung an Framework, Target und Text-UI. Beide sind offen einsehbar (in escrow_ignore gelistet); client/client.lua und server.lua sind escrow-geschützt.
| Datei | Was sie entscheidet |
|---|
config.lua | Framework, Item-Name, Interaktionssystem, Labels, Tasten, Distanzen, Seillänge und -physik, Marker, Cooldown, Zeitlimit |
bridge/server_bridge.lua | Framework-Abruf, Registrierung des rope-Items als nutzbar, Prüfung ob der Spieler das Seil besitzt |
bridge/client_bridge.lua | 3D-Text und Marker im drawtext-Modus, sowie das Client-Event zum Ausrüsten und Wegstecken des Seils |
bridge/target.lua | Optionen für ox_target und qb-target, sowie der automatische Fallback auf drawtext |
bridge/README.md | Kurze Hinweise zur Bridge (auf Spanisch) |
inventory/ | Fertige Item-Definitionen für ox_inventory, QBCore und ESX |
stream/ | Prop-Modell und Textur des Seils |
Es gibt keinen locales/-Ordner. Der einzige Text, den Spieler sehen, sind die Labels in Config.Labels.
| Option | Was sie macht | Standard |
|---|
Config.Framework | esx oder qbcore. Nutze bei QBox qbcore — QBox führt QBCore-Ressourcen über seine Kompatibilität aus. Jeder andere Wert stoppt die Ressource beim Start | esx |
Config.Item | Das Inventar-Item, welches das Seil darstellt | rope |
| Option | Was sie macht | Standard |
|---|
Config.InteractionSystem | ox_target, qb-target oder drawtext. Ein nicht gestartetes Target fällt auf drawtext zurück, bis es gestartet wird | ox_target |
Config.Labels | Der Text für jede Aktion: grab (Mit Seil ziehen), release (Spieler loslassen), attach (An Auto binden), detach (Von Auto lösen) | Englisch |
Config.KeyLabels | Die im drawtext-Modus angezeigten Tastennamen: Attach und Vehicle | E, Y |
Config.ShowInteractionMarkers | Zeichnet einen Marker über dem interagierbaren Spieler oder Fahrzeug. Nur im drawtext-Modus | true |
Was jede Aktion bewirkt:
| Aktion | Wer kann es ausführen | Was passiert |
|---|
| Mit Seil ziehen | Du, mit Seil in der Hand, nahe einem Spieler zu Fuß | Dieser Spieler wird an deine Hand gebunden |
| Spieler loslassen | Die ziehende Person | Das Seil wird entfernt und der Spieler steht wieder auf |
| An Auto binden | Die ziehende Person, nahe einem Fahrzeug | Das Seil wandert von deiner Hand an das Heck des Wagens |
| Von Auto lösen | Die Person, die es angebunden hat | Das Seil kommt zurück in deine Hand, Spieler bleibt dran |
| Spieler loslassen (am Fahrzeug) | Die Person, die es angebunden hat | Der Spieler wird direkt vom Fahrzeug aus losgebunden |
Die Tasten sind FiveM-Control-Nummern. Die Pfeiltasten funktionieren in jedem Modus; E und Y spielen nur im drawtext-Modus eine Rolle (bei einem Target wählst du die Aktion aus dem Menü).
| Option | Was sie macht | Standard |
|---|
Config.AttachKey | Spieler packen oder loslassen | 38 (E) |
Config.AttachToVehicleKey | An Fahrzeug binden oder davon lösen | 246 (Y) |
Config.AdjustLengthUpKey | Gedrückt halten, um Seil zu verlängern | 172 (Pfeil hoch) |
Config.AdjustLengthDownKey | Gedrückt halten, um Seil zu verkürzen | 173 (Pfeil runter) |
Falls du AttachKey oder AttachToVehicleKey änderst, passe auch Config.KeyLabels an, da sonst die alte Taste in der Anzeige steht.
| Option | Was sie macht | Standard |
|---|
Config.MaxDetectionDistance | Wie nah (m) ein Spieler sein muss, um gepackt zu werden. Auch die Target-Distanz für Spieler | 2.0 |
Config.MaxVehicleAttachDistance | Wie nah (m) ein Fahrzeug sein muss, um das Seil daran zu binden. Auch die Target-Distanz für Fahrzeuge | 5.0 |
Config.MarkerVisibilityDistance | Steht noch in config.lua, wird aber in der aktuellen Version nicht ausgelesen — die Aufforderung erscheint innerhalb der beiden obigen Distanzen | 20.0 |
| Option | Was sie macht | Standard |
|---|
Config.InitialRopeLength | Länge (m) zu Beginn des Ziehens | 3.0 |
Config.MinRopeLength | Kürzeste Länge über die Pfeiltasten | 1.0 |
Config.MaxRopeLength | Längste Länge über die Pfeiltasten | 100.0 |
Config.RopeType | Seil-Typ des Spiels | 1 |
Config.RopeSlack | Steht noch in config.lua, wird aber nicht ausgelesen — der Durchhang ergibt sich aus der Länge | 0.5 |
Config.RopePropModel | Prop in der Hand des Spielers. Das Standardmodell wird aus stream/ gestreamt | prop_stag_do_rope |
| Option | Was sie macht | Standard |
|---|
Config.MarkerType | Marker-Typ des Spiels | 2 |
Config.MarkerHeightOffset | Höhe (m) über dem Spieler, an der Prompt und Marker sitzen | 1.0 |
Config.MarkerScale | Größe des Markers | 0.3 |
Config.MarkerColor | Marker-Farbe als Rot, Grün, Blau und Alpha | rot, Alpha 150 |
| Option | Was sie macht | Standard |
|---|
Config.DragCooldown | Millisekunden zwischen zwei Seilaktionen | 1000 |
Config.DisableControls | Blockiert alle Steuerungen des gezogenen Spielers. Deaktiviert, kann er sich trotz Ragdoll noch bewegen | true |
Config.EnableMaxDragTime | Löst das Seil automatisch nach MaxDragTime | false |
Config.MaxDragTime | Sekunden bis das Seil reißt, wenn die obige Option aktiv ist | 100 |
Config.NeedItemToRelease | Zu Fuß erfordert das Loslassen das Seil in der Hand. Ein angebundenes Fahrzeug kann immer gelöst werden | true |
Der gezogene Spieler befindet sich im Ragdoll-Zustand, kann nicht schießen und ist unverwundbar, bis das Seil gelöst wird.
Es gibt keine Sprachdatei. Übersetze einfach die vier Zeichenketten in Config.Labels, sowie Config.KeyLabels, falls deine Spieler andere Tastenbezeichnungen verwenden.
Der Ordner bridge/ ist offen gestaltet, damit du das Seil an beliebige Umgebungen anpassen kannst. Die Seilphysik und die Netzwerk-Events verbleiben in den escrow-geschützten Dateien und müssen nicht verändert werden.
server_bridge.lua — Framework und Inventar. Ruft ESX oder QBCore ab, registriert Config.Item als nutzbares Item und beantwortet die Frage “Trägt dieser Spieler ein Seil?”, wenn ein Ziehvorgang beginnt. Für ein eigenes Framework oder ein Inventar mit eigener API überschreibst du Bridge.GetPlayer, Bridge.HasRope und Bridge.RegisterRopeItem. Registriere das Item nur an einer Stelle — zwei Registrierungen führen zu doppelter Ausführung.
client_bridge.lua — Text und Marker. Bridge.DrawText und Bridge.DrawMarker zeichnen die Aufforderung in jedem Frame, in dem sie sichtbar ist. Ersetze sie durch deinen eigenen 3D-Text oder eine TextUI-Ressource. Hier wird auch das Client-Event mic_drag:useRope verarbeitet, welches das Seil hervorholt oder wegsteckt — triggere dies aus dem Verwendungs-Callback deines Inventars, falls du keine Standard-Framework-Items nutzt.
target.lua — Target-Menüs. Fügt die globalen Spieler- und Fahrzeugoptionen für ox_target und qb-target hinzu bzw. entfernt sie und schaltet auf drawtext um, falls das Target beendet wird. Ein weiteres Target-System würde hier integriert.
| Export (Client) | Rückgabe |
|---|
GetInteractionState | Eine Tabelle: mode (aktive Interaktion), hasRope (Seil in Hand), targetServerId (wer gezogen wird), vehicle (Fahrzeug, an dem Seil hängt), beingDragged, busy |
Dieser Export ist schreibgeschützt: nützlich für ein HUD oder damit andere Skripte erkennen, dass sie nicht mit einem Spieler interagieren sollen, der gerade an einem Seil hängt.