# Configuring Smart Hose

{% hint style="warning" %}
Make sure your resource folder is named **"SmartHose**" to allow integration with our Fire Supply Line resource if your server uses it. **Do not rename** the resource folder.
{% endhint %}

To begin configuring the resource, open the **config.lua** file within the resource folder. Some values in this config overlap with our Fire Supply Line resource, which will be explained later in this documentation page. This explains why you may see some values referencing the **water tank.**

## Walkthrough Video

Here's a video walking you through the Smart Hose config:

{% embed url="<https://youtu.be/_EXG3SNC4q4>" %}

## Installation Video

This installation video was created by a third party. Please note, updates to this resource have taken place since this installation video was published and you should therefore also read the rest of this documentation to ensure Smart Hose is setup correctly for your server.

{% embed url="<https://www.youtube.com/watch?ab_channel=BGHDDevelopment&v=3Vd6CWNeJq4>" %}

## Debug Mode

Smart Hose has a debug mode which can be enabled in the config:

```lua
Debug = true,
```

This mode will print important debug messages to the in-game F8 console. If you are experiencing any issues with Smart Hose and intend to open a ticket, we ask you to enable Debug Mode and record or screenshot the F8 console during the issue you are experiencing.

This will allow our development team to investigate your problem and provide a quicker solution.

## Experimental Feature

We are currently trialling a new experimental feature for Smart Hose, allowing you to push objects, people and vehicles with the hose. To enable this, just set it to true in the config file.

```lua
experimentalFeature = {
        waterPhysics = false,
}
```

## Keybinds

The first part of the **config.lua** file allows you to adjust the different keys, such as interacting with the fire truck, switching between foam/water, shooting the hose, dropping the hose, picking up the hose and adjusting the pressure.

To find out the control number, see the FiveM Controls list [here](https://docs.fivem.net/docs/game-references/controls/).

```lua
Keys = {
        Interact = 38,          -- E
        GrabFireExtinguisher = 38, -- E
        SwitchDecalTypeKey = 47,-- G
        ShootHose = 24,         -- INPUT_ATTACK
        DropHose = 38,          -- E 
        PickupHose = 47,        -- G
        IncreasePressure = 172, -- Arrow Up
        DecreasePressure = 173, -- Arrow Down
},
```

{% hint style="warning" %}
Try not to duplicate the use of controls, such as having the same keybind for picking up and interacting with the hose, as this may lead to issues using the resource.
{% endhint %}

## Permission Checks

The next part of the **config.lua** file allows you to setup permissions straight out of the box for ace permissions, QBCore, ESX or vRP. If you are using another permission system, make the necessary changes in the sv\_utils.lua file.

Multiple permissions can be enabled at once, such as ace permissions and a framework job check. By doing this, a user only has to have one of the enabled permissions (not both) in order to use the hose.

### Ace Permissions

```lua
AcePermissions = {
            Enabled = false,
            Permission = "usehose"
            -- This enables ace permissions on the /salesign command
},
```

By enabling ace permissions, only users with the "usehose" permission are able to interact with the hose and draw it from a fire truck.

### ESX

```lua
ESX = {
            Enabled = false,
            CheckJob = {
                Enabled = false, -- Enable this to use ESX job check
                Jobs = {"fireman"} -- A user can have any of the following jobs, allowing you to add multiple
            }
},
```

Enabling ESX in this section will switch on ESX permissions, requiring a user to have one of the configured jobs in the **Jobs** table, such as "fireman" which is setup by default.

{% hint style="warning" %}
ESX - **Disable Aim Assist**\
\
Some customers have reported being unable to use the hose on the ESX framework. We have identified one possible cause to be the **DisableAimAssist ESX config value**. Setting this to false will likely resolve the problem.
{% endhint %}

### vRP

```lua
vRP = {
            Enabled = false,
            CheckGroup = {
                Enabled = false, -- Enable this to use vRP group check
                Groups = {"fireman"}, -- A user can have any of the following groups, meaning you can add different jobs
            },
            CheckPermission = {
                Enabled = false, -- Enable this to use vRP permission check
                Permissions = {"fireman.usehose"} -- A user can have any of the following permissions, allowing you to add multiple
            },
},
```

Enabling vRP in this section will switch on vRP permissions, requiring a user to have either a certain group or permission depending on what is enabled.

### QBCore

```lua
QBCore = {
            Enabled = false,
            CheckJob = {
                Enabled = false, -- Enable this to use QBCore job check
                Jobs = {"fireman"}, -- A user can have any of the following jobs, meaning you can add different jobs
            },
            CheckPermission = {
                Enabled = false, -- Enable this to use QBCore permission check
                Permissions = {"fireman.usehose"}, -- A user can have any of the following permissions, allowing you to add multiple
            },
},
```

Enabling QBCore in this section will switch on QBCore permissions, requiring a user to have either a certain group or permission depending on what is enabled.

### QBX

```lua
QBX = {
            Enabled = false,
            CheckJob = {
                Enabled = false, -- Enable this to use QBX job check
                Jobs = {"fireman"}, -- A user can have any of the following jobs, meaning you can add different jobs
            }
},
```

Enabling QBX in this section will switch on QBX permissions, requiring a user to have a certain group from the **Jobs** table, such as "fireman" which is setup by default.

### Custom Framework / Permissions

If you want to setup your own custom framework/permission check, head to the **UserHasPermission** function in the **sv\_utils.lua** file and make the necessary changes. If you need any help, reach out to our team who will do their best to advise you.

## Translations

All elements of the resource can be translated into another language in the **translations** section of the config.lua file.

```lua
Translations = {
        storeHoseMessage = "Press E to store hose",
        cannotStoreHoseMessage = "You can only store the hose in the vehicle you grabbed it from.",
        vehicleUnavailableMessage = "The vehicle you grabbed the hose from is no longer available.",
        grabHoseMessage = "Press E to grab hose",
        qbTargetMessage = "Grab/Store Hose",
        grabHoseWorldInteraction = "Grab Hose",
        tankIsEmpty = "Tank is empty! Cannot shoot water!",
        maxRopes = "This vehicle has reached the maximum number of ropes.",
        waterTypeDisplay = "Hose Type ~INPUT_DETONATE~ (Water)\nPressure ~INPUT_CELLPHONE_UP~ | ~INPUT_CELLPHONE_DOWN~ ",
        foamTypeDisplay = "Hose Type ~INPUT_DETONATE~ (Foam)\nPressure ~INPUT_CELLPHONE_UP~ | ~INPUT_CELLPHONE_DOWN~ ",
        maximumPressure = "Maximum pressure reached!",
        minimumPressure = "Minimum pressure reached!",
        noPermission = "You do not have access to use the hose."
},
```

## Notifications

By default, Smart Hose utilises base game notifications but also provides support for QBCore, ESX, QBX and vRP notifications. If you want us to support another notification resource, get in touch and we'll do our best to integrate this.

```lua
Notifications = {
        Enabled = true,
        Framework = {
            QBCore = false,
            QBX = false,
            ESX = false, 
            vRP = false, 
        }
},
```

Simply enable one of the various frameworks here in order to begin using a different notification system.

## Interaction Systems

Smart Hose provides support for interaction systems straight out of the box. By default, Smart Hose uses draw text (base game) which doesn't rely on any third party resources. This can also be switched to screen prompt or the world interaction resource and enabled below in the interact type section.

```lua
InteractType = {
        TruckInteraction = {
            Drawtext = true,
            ScreenPrompt = false,
            WorldInteraction = false,

            ThirdEye = {
                enabled = false,
                qbTarget = false,
                oxTarget = false,
            }
        },
},
```

Furthermore, Smart Hose also has third eye support for both qb\_target and ox\_target, which can be enabled in the interact type section of the config as seen above.

### Rope Settings

The Rope section of the config.lua file allows you to adjust the usage of dynamic ropes within the Smart Hose resource.

```lua
Hose = {
            HoseropeInitialLength = 32.5,  -- Initial rope length (recommended)
            HoseropeLength = 1000.0,      -- Rope Max length (recommended)
            DrawMarker = true, -- Draw marker on the floor when the hose is dropped.
            GrabAnimationDict = 'anim@scripted@freemode@tunprep_ig_grab_midd@male@',
            GrabAnimationName = 'tunprep_ig_grab_midd',
            PickupAnimationDict = 'veh@common@bicycle@ds',
            PickupAnimationName = 'pickup',
},
```

Some of these configuration values won't need to be edited by most servers, so make sure you understand what they mean before making any changes.

The **HoseropeInitialLength** is the initial length of the rope once you draw it from a fire truck, we've set this to 32.5 which we think is an ideal length, however you can change this for your server.

The **HoseropeLength** is the maximum possible length of a rope. This is set to 1000 right now, however you may want to make this smaller for your server.

The **DrawMarker** value determines whether a marker is drawn on the floor when the hose is dropped.

Lastly, the various animation configuration values allow you to adjust the animations used when a hose is either picked up or dropped. For a full list of animations, see [here](https://forge.plebmasters.de/animations).

### Changing the rope colour

This section allows you to change the rope colour directly from the config, in which you can select an RGB value:

```lua
RopeColour = { r = 139, g = 58, b = 58 },
```

By default, we have set the rope to a red colour, however you may want to change this to suit the preference of your server.

### Rope Cache Utility Command

If you change the rope colour or textures, players may sometimes still see the old "cached" version (white or incorrect colour) until they fully restart their game.

To fix this without requiring a full restart, we have included a server command that forces all connected players to clear their local rope cache.

**Default Command:** `refreshallropes`

{% hint style="warning" %}
This command can **only** be executed from the **Server Console** (txAdmin or Live Console). It cannot be run by players in-game.
{% endhint %}

You can change the name of this command in the **config.lua** file under the `refreshRopeCacheCommand` value if you wish to use something else.

## Automatic Discharge

This section of the config is relevant if you have a copy of Fire Supply Line and can be used to adjust the rate of auto discharge from attack lines/valves which are open with nothing connected to them.

```lua
AutoDischarge = {
            Enabled       = true,     -- master switch
            WaterRate     = 8.0,      -- units/sec drained from WATER tank
            FoamRate      = 8.0,      -- units/sec drained from FOAM tank
            TickMs        = 250,      -- drain/FX tick
            SyncThreshold = 250.0,    -- send sync when changed by >= this amount
            SyncMaxAgeMs  = 15000,    -- or at least every N ms
        },
```

## Adding new vehicles for Smart Hose Support

To allow new vehicles to be supported by Smart Hose, jump to the **WaterTank** section at the **bottom of the config.lua file**. This section also overlaps with our Fire Supply Line resource, so if you don't have this, we just want to focus on the **VehicleWaterCapacities** section:

```lua
VehicleWaterCapacities = {
            [`firetruk`] = { capacity = 99500, carryFoam = true, fullTank = true },
            [`exampletruck`] = { capacity = 99500, carryFoam = true, fullTank = true },
            [`newvehicle`] = { capacity = 99500, carryFoam = true, fullTank = true },
}
```

This is where you can add new vehicles to be supported by Smart Hose. If you use Supply Line, the value you set to capacity will be the size of the water tank. If you don't use supply line, you can set this to any number (or even zero) as it won't make a difference given you will have infinite water.

Vehicles will not carry foam by default so you'll need to enable **carryFoam** as seen above if you want them to carry foam.

By default, vehicles will not spawn with a full tank. To enable this, you'll need to enable **fullTank** as seen above, if you want a certain vehicle to spawn with full tank.

{% hint style="info" %}
The model names in the **VehicleWaterCapacities** section must be wrapped in backticks \`\` in order to allow runtime hashing for resource efficiency. This is different to "".
{% endhint %}

## Not using backticks?

It is important that your vehicle model name is wrapped in backticks: \`\`

### Correct Example:

```lua
[`firetruk`]
```

### Incorrect Example:

```lua
["firetruk"]
```

Using regular quotation marks will not achieve the runtime hashing and may lead to your resource not working.

## Fire Extinguisher

Smart Hose allows you to grab fire extinguishers from the map, located in places such as supermarkets.

```lua
FireExtinguisher = {
        PickupRadius = 1.2, -- Radius to pickup the extinguisher
        StoreRadius = 1.0, -- Radius to store the extinguisher
        DecalLife = 300.0, -- How long the decals stay on the floor.

        Models = {
            -875057463,
            -171327159,
            -1980225301,
            -666581633,
            -1610165324
        }
    },
```

This section of the config file allows you to adjust the pickup radius, store radius and decal life. Decal life is the length of time that the decals (foam particles) stay on the floor. The models list is a list of compatible fire extinguisher models in-game, which are located around the map by default.

## Vehicle Settings

After you've setup new vehicles for Smart Hose support in the **VehicleWaterCapacities**, you may want to make further adjustments to the number of ropes a vehicle can have and also the default offsets.

{% hint style="success" %}
This part is optional. Once a vehicle has been added to the **VehicleWaterCapacities** table above, it will work with Smart Hose and no further action is needed.
{% endhint %}

To begin adjusting vehicle settings, head to the **Ropes** > **Vehicle Settings** part of the config.lua file.

```lua
VehicleSettings = {
    [`firetruk`] = {
        useBone = false,
        carryHoses = true, -- Optional
        driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun.
        bones = {
            {name = "discharge_1", portId = "attack1" }, -- left attack
            {name = "discharge_2", portId = "attack2" }, -- right attack
        }, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2"
        offsets = {
            -- Attack Line (Left) - Custom short length of 50.0
            { x = -0.90, y = -0.02, z = -0.050, rx = 0.0, ry = 0.0, rz = 90.0, depth = 0.2, type = "hose", portId = "attack1", length = 250.0 },
            -- Attack Line (Right) - Custom short length of 50.0
            { x = 0.87, y = -0.10, z = 0.0140, rx = 0.0, ry = 0.0, rz = -90.0, depth = 0.2, type = "hose", portId = "attack2", length = 100.0 },
            -- Supply / Intake Line (Rear) - Falls back to global HoseropeLength if length is not defined
            { x = 0.0, y = -3.5, z = 0.5, rx = 0.0, ry = 0.0, rz = 180.0, depth = 0.5, type = "hand" },
        },
        maxRopes = 2,
    },
}
```

The **carryHoses** option allows you to determine whether the vehicle is able to carry a hose, which is an optional value, meaning if you do not add it, the vehicle will still work and be able to carry hoses.

The **driveWhilePumping** option allows you to determine whether the vehicle is able to drive whilst the pump is engaged, which is useful for vehicles with a deck gun.

The Vehicle Offsets section allows you to setup custom offsets to which the rope will be connected to the truck at. For example, you may want ropes to connect to the truck at the side or the back where the water connection valve features in the vehicle model, enhancing realism on your server.

Each new vehicle configuration can have multiple offset values. These consist of position (x, y, z), rotation (rx, ry, rz), depth, and type relative to the vehicle. Here's how they work:

* The X value moves left (minus) and right (positive).
* The Y value moves backwards (minus) and forwards (positive).
* The Z value moves down (minus) and up (positive).
* The rx, ry, and rz values control the rotation and direction the connection faces.

The depth argument allows you to have a custom bend in the rope when coming out of the truck, simulating a rigid metal coupling.

The type argument defines the offset's purpose. Set this to "hose" for Attack Lines, or "hand" for Supply Lines and Relays. This filters interactions so that Attack Lines can only be grabbed from "hose" ports, and Supply Lines can only be connected to "hand" ports.

The length argument (optional) allows you to define a custom maximum rope length specifically for this port (attack lines), overriding the global HoseropeLength setting. This is highly useful for realism, allowing you to configure shorter 50ft attack lines.

## What is the Port ID? (Attack1/Attack2)

Both the offSets and bones properties now accept **Port ID** as an additional argument. Port ID defines which discharge needs to be open for a hose to work and makes the UI feel more realistic.

You will have Port ID either set to **attack1** or **attack2**, which is likely going to be the left/right hand sides of the vehicle. Therefore, when you get a hose from a vehicle, you will either be getting it from **attack1** or **attack2** as **pre-configured** in your config.

However, **Port ID is completely optional** and if you don't set it, opening either of the Attack Line discharges in the UI will let you spray. If you do setup the Port ID's beforehand, you must open the correct discharge.

## Multiple Connection Points

Having multiple connection points is useful for vehicles that have a valve both on the left and right hand side of the vehicle. Smart Hose will then connect the hose to whichever valve the user was closest to when they interacted with the truck to draw the hose. However, a vehicle can have only one connection point if needed.

{% hint style="info" %}
Remember this section is **optional** and a vehicle **does not need** to have custom offsets. If this part is not setup for a certain vehicle, the rope will just connect to the centre of the vehicle. However, if you want the hose to connect exactly to the point of the vehicle hose, it may be worth setting up this part!
{% endhint %}

Setting up the offSets of the vehicle is likely going to be a game of trial and error. For example, in the pre-configured **firetruk** you can see we have two pre-configured offSets. These are for the left and right hand side of the truck. Let's talk through the first offSet value:

```
{ x = -0.90, y = -0.02, z = -0.050, rx = 0.0, ry = 0.0, rz = 90.0, depth = 0.2, type = "hose", portId = "attack1" }
```

An **X** value of `-0.9` will mean the rope connection point will be `-0.9` to the left of the vehicle, as it is relative to the way the model is facing. A **Y** value of `-0.02` will move it backwards by `-0.02`. A **Z** value of `-0.05` will move the connection point down by `-0.05`. An **rz** value of `90.0` points the connection outwards, while a **depth** of `0.2` adds a custom rigid bend in the rope when coming out of the truck. Finally, a **type** of `"hose"` restricts this connection point so players can only grab Attack Lines from it. Overall, this would position an Attack Line to the left hand side of the vehicle, slightly back, down, and facing outward.

Hopefully this allows you to make sense of how vehicle offsets work and the values you are likely to need in order to connect your ropes to the right part of your fire truck.

Multiple offSets can also be used and set up in the table. For more information on finding offSets easily, including our updated method that lets you visualise and rotate an actual rope, see our **Find Hose Positioning Developer Command** below.

## Max Ropes Per Vehicle

Inside the VehicleSettings config is also the maxRopes property, which sets the maximum amount of ropes that can be attached to a vehicle at once.

{% hint style="info" %}
The max ropes per vehicle value is 2 by default, meaning only 2 ropes can be connected to **a fire truck at once** (however you may have multiple fire trucks at one scene). It is important for efficiency that this number is not set too high. If you want to **override the default maximum number of hoses** for a vehicle, then this can be done below. However, this section is **optional** and not filling it out will just mean it uses the default value of 2 hoses.
{% endhint %}

The max number of ropes per vehicle does not stop more people getting a hose out, it just means only X amount of people will have a rope attached to their hose.

{% hint style="warning" %}
Remember the model names must be wrapped in backticks: \`\` for runtime hashing.

This is different to "".
{% endhint %}

## Not using backticks?

It is important that your vehicle model name is wrapped in backticks: \`\`

### Correct Example:

```lua
[`firetruk`]
```

### Incorrect Example:

```lua
["firetruk"]
```

Using regular quotation marks will not achieve the runtime hashing and may lead to your resource not working.

## Bone Connection Points

Instead of setting a custom offSet, you also have the ability to use bone connection points, such as bones on custom models or identified bones for base game models. A good list of vehicle bones can be found [here](https://wiki.rage.mp/index.php?title=Vehicle_Bones), however you might find it easier to setup custom offSets.

To setup bones, enable `useBone` and then add the names as per below (more information on the Port ID's further down).

Just like offsets, you can now define a type for each bone to restrict interactions ("hose" for Attack Lines, "hand" for Supply Lines).

```lua
bones = {
    {name = "discharge_1", portId = "attack1", type = "hose" }, -- left attack
    {name = "discharge_2", portId = "attack2", type = "hose" }, -- right attack
    {name = "intake_1", type = "hand" }, -- rear supply line intake
},
```

Multiple bones can be setup easily and the resource will find the one you are closest to, while respecting the port type you are trying to interact with.

## Find Hose Positioning Developer Command

To help assist you with finding the right offSet values for either the hose or supply line connection point, we've added an easy to use developer command. Check out the video below explaining it:

{% embed url="<https://youtu.be/JQDLUN97gv4>" %}

The command can be accessed with **/findhosepositioning**

<figure><img src="/files/3RQg0hfyqmA1hAHkquJK" alt=""><figcaption></figcaption></figure>

#### How to use the command

To enable the **/findhosepositioning** command, firstly head to the **config.lua** file and enable the **EnablePositioningCommand** value to **true** (make sure to turn it off again after). Once in-game, stand near or sit in the driver's seat of your desired fire truck and run the command with your desired port type:

* **/findhosepositioning hose** (to configure an Attack Line port)
* **/findhosepositioning hand** (to configure a Supply Line / Relay port)

Next, your vehicle should turn transparent as seen here:

<figure><img src="/files/8xokYueHHVLUyBt3loG7" alt=""><figcaption></figcaption></figure>

Instead of a football prop, you will now see an actual dummy rope attached to the vehicle. This allows you to perfectly visualise how the hose will look, including its rotation and bend. The connection point can be moved using the following keys:

* **TAB** - Toggle between Move and Rotate modes
* **Arrow Up / Down** - Move forwards/backwards OR pitch rotation
* **Arrow Left / Right** - Move left/right OR yaw rotation
* **Page Up / Page Down** - Move up/down
* **Insert / Delete** - Increase/decrease the rigid bend (depth)

<div align="left"><figure><img src="/files/auzSkqxh3JlQIN5VjrcB" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Some other resources may conflict with the keybinds used in our **/findhosepositioning** command. To resolve this, open the **config.lua** file and edit the keybinds. Find a list of controls on the FiveM documentation site here: <https://docs.fivem.net/docs/game-references/controls/>.
{% endhint %}

Ideally, you want to position the start of the rope exactly at the point where the valve features on your fire truck model. You can then manually fine-tune the rotation (**rx**, **ry**, **rz**) and bend (**depth**) to achieve the most realistic look.

Once you are perfectly lined up, press **ENTER**.

Now that you have completed the process, your vehicle will return to normal and the temporary rope will be deleted.

```lua
{ x = -0.90, y = -0.02, z = -0.05, rx = 0.0, ry = 0.0, rz = 90.0, depth = 0.2, type = "hose" }
```

The **offSet values have now been printed into your console**, you can now copy these into the VehicleOffsets section of the Smart Hose or Fire Supply Line config.

## Decal & Pressure Settings

Smart Hose has decals for both water and foam, which appear both on the ground and on some objects/vehicles. To configure these decals, head to the **Decals** section of the **config.lua** file.

```lua
Decals = {
        InitialPressure = 0.5,    -- Starting Pressure
        MaxPressure = 1.5, -- Maximum Pressure Possible
        LowestPressure = 0.3, -- Minimum Pressure Possible
        PressureIncrement = 0.1,    -- How much the Pressure goes up / down
        DecalLife = 20.0 -- How long the decals stay on the floor.
},
```

The decals section also allows you to make adjustments to the pressure of the hose.

The **InitialPressure** value allows you to set the starting, default pressure of the hose.

The **MaxPressure** value allows you to set the maximum possible pressure of a hose.

The **LowestPressure** value allows you to set the minimum possible pressure of a hose.

The **PressureIncrement** value allows you to set the increment of the pressure, which is the value at which it increases or decreases by when a user makes an adjustment using their arrow keys.

The **DecalLife** value allows you to set how long the decals will stay on the floor/objects/vehicles for.

## Supply Line Values

If you are using our Fire Supply Line resource, you may want to make some changes to the **WaterTank** section of the **config.lua** file, allowing you to make changes to the usage of water tanks.

```lua
WaterTank = {
    minWaterLevel = 1,      -- Minimum water level to shoot water
    waterDepletionRate = 1,  -- Water depletion rate per second when shooting
    MaxwaterDepletionRate = 50, -- Maximum water depletion rate -> Highest Pressure Possible will always remove this amount of water
    fillRate = 150,
}
```

The **minWaterLevel** value allows you to set the minimum water level which a vehicle must have in order to shoot water.

The **waterDepletionRate** value allows you to set the rate at which water depletes from the tank per second when you are shooting the hose.

The **MaxwaterDepletionRate** value allows you to set the maximum depletion rate per second while you are shooting. This value is important as depending on the pressure of the hose, it will deplete faster - this value sets an upper limit on it and prevents it from depleting at a rate which is too fast. For example, if your pressure is set to 8.0 but your maximum depletion rate is set to 5.0, it would still allow you to use a pressure of 8.0 but your depletion/water usage would remain at 5.0

The **fillRate** value allows you to set the rate at which the tank will fill from a hydrant.

## Hydraulics Values

Server owners will be able to customize the values to be displayed within the UI:

* Nozzle PSI
* Pump RPMS
* DeckGun PSI / GPM
* HoseRewindThreshold distance that triggers the rope path to rewind.

```lua
Hydraulics = {
        NozzlePSI = {
            Min = 60,    -- PSI at minimum flow
            Max = 200,   -- PSI at maximum flow
        },
        Pump = {
            IdleRPM    = 900,
            MaxRPM     = 2200,
            PerLineRPM = 220,   -- RPM added per active discharge line
            PerGPMMul  = 2.8,   -- RPM multiplier per GPM of total flow
        },
        DeckGun = {
            DeckgunPSI = 120,   -- PSI reported by the deck gun / ladder pipe when firing
            DeckgunGPM = 500,   -- GPM reported by the deck gun / ladder pipe when firing
        },
        HoseRewindThreshold = 1.5,  -- distance that triggers path rewind (metres)
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.londonstudios.net/london-studios-documentation/resources/smart-hose-v2/configuring-smart-hose.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
