Everything you can change is in two places: config.lua for behaviour, and the bridge/ folder for how the rope talks to your framework, your target and your text UI. Both are open (listed in escrow_ignore); client/client.lua and server.lua are escrowed.
| File | What it decides |
|---|
config.lua | Framework, item name, interaction system, labels, keys, distances, rope length and physics, marker, cooldown, time limit |
bridge/server_bridge.lua | Getting the framework, registering the rope item as usable, checking the player carries it |
bridge/client_bridge.lua | The 3D text and the marker drawn in drawtext mode, and the client event that takes the rope out |
bridge/target.lua | The ox_target and qb-target options, and the fall-back to drawtext |
bridge/README.md | Short notes on the bridge (in Spanish) |
inventory/ | Ready-made item definitions for ox_inventory, QBCore and ESX |
stream/ | The rope prop model and texture |
There is no locales/ folder. The only text players see is the labels in Config.Labels.
| Option | What it does | Default |
|---|
Config.Framework | esx or qbcore. On QBox, use qbcore — QBox runs QBCore resources through its compatibility layer. Anything else stops the resource on start | esx |
Config.Item | The inventory item that is the rope | rope |
| Option | What it does | Default |
|---|
Config.InteractionSystem | ox_target, qb-target or drawtext. A target that is not running falls back to drawtext until it starts | ox_target |
Config.Labels | The text for each action: grab (Drag with rope), release (Release player), attach (Tie to vehicle), detach (Untie from vehicle) | English |
Config.KeyLabels | The key names shown in drawtext mode: Attach and Vehicle | E, Y |
Config.ShowInteractionMarkers | Draw a marker over the player or vehicle you can act on. Drawtext mode only | true |
What each action does:
| Action | Who can do it | What happens |
|---|
| Drag with rope | You, with the rope in hand, near a player on foot | That player is tied to your hand |
| Release player | The one dragging | The rope is removed and the player gets up |
| Tie to vehicle | The one dragging, near a vehicle | The rope moves from your hand to the back of the vehicle |
| Untie from vehicle | The one who tied it | The rope comes back into your hand, player still attached |
| Release player (on the vehicle) | The one who tied it | The player is let go from the vehicle |
Keys are FiveM control numbers. Arrow keys work in every mode; E and Y only matter in drawtext mode (with a target, you pick the action from the menu).
| Option | What it does | Default |
|---|
Config.AttachKey | Grab or release a player | 38 (E) |
Config.AttachToVehicleKey | Tie to or untie from a vehicle | 246 (Y) |
Config.AdjustLengthUpKey | Hold to lengthen the rope | 172 (Arrow Up) |
Config.AdjustLengthDownKey | Hold to shorten the rope | 173 (Arrow Down) |
If you change AttachKey or AttachToVehicleKey, change Config.KeyLabels too, or the prompt will show the old key.
| Option | What it does | Default |
|---|
Config.MaxDetectionDistance | How close (m) a player must be to be grabbed. Also the target distance for players | 2.0 |
Config.MaxVehicleAttachDistance | How close (m) a vehicle must be to tie the rope to it. Also the target distance for vehicles | 5.0 |
Config.MarkerVisibilityDistance | Still in config.lua, but not read by the current version — the prompt shows for whoever is within the two distances above | 20.0 |
| Option | What it does | Default |
|---|
Config.InitialRopeLength | Length (m) when a drag starts | 3.0 |
Config.MinRopeLength | Shortest the arrows can make it | 1.0 |
Config.MaxRopeLength | Longest the arrows can make it | 100.0 |
Config.RopeType | The game’s rope type | 1 |
Config.RopeSlack | Still in config.lua, but not read by the current version — the rope’s give comes from its length | 0.5 |
Config.RopePropModel | The prop in the player’s hand. The default one streams from stream/ | prop_stag_do_rope |
| Option | What it does | Default |
|---|
Config.MarkerType | The game’s marker type | 2 |
Config.MarkerHeightOffset | Height (m) above the player where the prompt and marker sit | 1.0 |
Config.MarkerScale | Marker size | 0.3 |
Config.MarkerColor | Marker colour, as red, green, blue and alpha | red, alpha 150 |
| Option | What it does | Default |
|---|
Config.DragCooldown | Milliseconds between two rope actions | 1000 |
Config.DisableControls | Block every control of the player being dragged. Off, they can still use their controls while ragdolled | true |
Config.EnableMaxDragTime | Break the rope on its own after MaxDragTime | false |
Config.MaxDragTime | Seconds before the rope breaks, when the option above is on | 100 |
Config.NeedItemToRelease | On foot, releasing needs the rope in hand. The owner can always release someone tied to a vehicle | true |
The player being dragged is ragdolled, can not fire, and is invincible until the rope comes off.
There is no locale file. Translate the four strings in Config.Labels, and Config.KeyLabels if your players use a different key naming.
The bridge/ folder is open so you can fit the rope to a setup it does not know. The rope physics and the network events stay in the escrowed files and do not need to change.
server_bridge.lua — framework and inventory. Gets ESX or QBCore, registers Config.Item as a usable item, and answers “does this player carry a rope?” when a drag starts. For a custom framework or an inventory with its own API, rewrite Bridge.GetPlayer, Bridge.HasRope and Bridge.RegisterRopeItem. Register the item in one place only — two integrations registering the same item will fire twice.
client_bridge.lua — text and marker. Bridge.DrawText and Bridge.DrawMarker draw the drawtext prompt every frame it is visible. Replace them to use your own 3D text or TextUI resource. It also listens for the client event mic_drag:useRope, which takes the rope out or puts it away — trigger that from a custom inventory’s use callback if you do not use the framework’s usable items.
target.lua — target menus. Adds and removes the global player and vehicle options for ox_target and qb-target, and switches to drawtext when the target stops. Another target resource would be added here.
| Export (client) | Returns |
|---|
GetInteractionState | A table: mode (the interaction in use), hasRope (rope in hand), targetServerId (who you are dragging), vehicle (the vehicle the rope is tied to), beingDragged, busy |
It is read-only: useful for a HUD, or for another script to know not to act on a player who is on a rope.