[ESX] mdm_firehose

[ESX] [PARTLY-OPEN-SOURCE]

:counterclockwise_arrows_button: 1. Full Network Synchronization

Fire hoses are 100% synchronized among all players. This ensures every participant on the scene sees exactly the same thing, guaranteeing smooth and seamless cooperation among firefighters during interventions.

:fire_engine: 2. Flexible Vehicle and Hydrant Configuration

The script offers extensive customization options. In the config file, a developer can precisely define the points from which the hose will be attached and deployed.

:droplet: 3. Individual Water Tank Capacities

The tank size can be set individually for each vehicle model. This allows for easy differentiation of fire engines into light, medium, and heavy categories, significantly diversifying the fire department’s fleet.

:stopwatch: 4. Refill Speed Control

The ability to precisely adjust the speed at which vehicles replenish their water supplies from defined hydrants.

:chart_increasing: 5. Dynamic and Realistic Water Consumption

This is one of the script’s strongest features. If multiple people are simultaneously using hoses connected to a single truck, the water consumption in the tank increases proportionally to the number of users. This forces players to properly manage resources and makes the gameplay incredibly realistic.

:fire: 6. Full Compatibility with Fire Scripts

The script fully cooperates and seamlessly integrates with external scripts responsible for generating dynamic and procedural fires.

Preview: YouTube

Buy: Tebex

This is how the config looks like

Config = {}

Config.job = "lsfd"
Config.maxlinelenght = 20.0
Config.weapon = "WEAPON_HOSE"
Config.NozzleOffSet = vec3(0.15, 0.1, 0.1)
Config.HudUpdateTime = 100           -- in miliseconds
Config.HydrantFillingSpeed = 2.0
Config.Target = true                 -- you can configure it in client
Config.CanInsideVehWhenCarry = false -- default false, when true you can enter vehicle with the hose

Config.Animation = {
    Allow = true, -- default true, if false no animation will be performed
    Dict = "timetable@gardener@filling_can",
    Name = "gar_ig_5_filling_can",
    Duration = 1000 -- in miliseconds
}

Config.vehicles = {
    {
        hash = "firetruk",
        vx = -0.85,
        vy = 0.0,
        vz = 0.2,

        mx = -1.0,
        my = 0.0,
        mz = 0.5,

        hx = -0.85,
        hy = 0.0,
        hz = 0.0,

        tankCapacity = 200
    },
}

Config.firehydrant = {
    {
        hash = "prop_fire_hydrant_1",
        hx = 0.0,
        hy = 0.0,
        hz = 0.6,

        mx = 0.0,
        my = 0.0,
        mz = 1.1
    },
    {
        hash = "prop_fire_hydrant_2",
        hx = 0.0,
        hy = 0.0,
        hz = 0.6,

        mx = 0.0,
        my = 0.0,
        mz = 1.1
    },
    {
        hash = "prop_fire_hydrant_2_l1",
        hx = 0.0,
        hy = 0.0,
        hz = 0.6,

        mx = 0.0,
        my = 0.0,
        mz = 1.1
    },
}

Config.TextUI = {
    hydrant = {
        message = "[~b~E~s~] Podłącz wąż | [~b~G~s~] Odłącz wąż",
        type = "info"
    },
    attachHydrant = {
        message = "[~b~E~s~] podepnij hydrant",
        type = "info"
    },
    veh1 = {
        message = "[~b~E~s~] weź wąż [~b~G~s~] odepnij hydrant",
        type = "info"
    },
    veh2 = {
        message = "[~b~E~s~] weź wąż",
        type = "info"
    },
    veh3 = {
        message = "[~b~E~s~] odłóż wąż",
        type = "info"
    }
}

Config.Message = {
    haveHose = {
        message = "Masz już wąż w ręce!",
        type = "error",
        duration = 5000
    },
    hydrantUsed = {
        message = "Hydrant jest już używany!",
        type = "info",
        duration = 5000
    },
    hydrantAttached = {
        message = "Podpiąłeś wąż do hydranta!",
        type = "info",
        duration = 5000
    },
    pickedUpHose = {
        message = "Wziąłeś wąż!",
        type = "info",
        duration = 5000
    },
    haveStInHand = {
        message = "Masz coś w ręku!",
        type = "error",
        duration = 5000
    },
    hoseAttached = {
        message = "Podpiąłeś wąż!",
        type = "info",
        duration = 5000
    },
    hoseDetached = {
        message = "Odpiąłeś wąż!",
        type = "info",
        duration = 5000
    },
    hoseWasPutAway = {
        message = "Odłożyłeś wąż!",
        type = "info",
        duration = 5000
    },
    hydrantDetachedSupport = {
        message = "Odpiąłeś wąż pomocniczy od hydranta!",
        type = "info",
        duration = 5000
    },
    noSupportInHand = {
        message = "Nie masz węża pomocniczego w ręce!",
        type = "error",
        duration = 5000
    },
    noMoreWater = {
        message = "Zabrakło wody w wozie!",
        type = "error",
        duration = 2000
    }
}

Update: 1.0.1

  • Added support for older ESX versions
Code is accessible partly
Subscription-based No
Lines (approximately) Number of lines
Requirements ESX
Support Yes

Need support or have a question? Join to my discord

My other resources:

1 Like

Compatible with smart-fires? Compatible with ox_inventory?

There are no contraindications to using this with smart-fires. There should be no problems. The script fully works with ox_inventory, by default it was written with functions taken from it, but I decided to slightly change the functions so that it would not force a given inventory.

Not working no support lmao

Support is only available via my Discord, in private messages. If you have any problems with the script, please report it there. This information is included in the ReadMe file when purchasing the script.