[Standalone] πŸ’’ NRG Stress System – Dynamic Psychology & Immersive Player Reactions

:face_with_spiral_eyes: Dynamic Stress System for RP

Add a whole new layer of immersion to your RP server with a fully customizable stress system! Players’ actions trigger real psychological effects that influence their movement, aim, and overall gameplay, making stress management a vital part of roleplay.


:brain: Stress Levels and Effects

Stress accumulates dynamically and is divided into 6 distinct stages, each with escalating impact:

  • :green_circle: No Stress – Calm and steady, no penalties
  • :yellow_circle: Low Stress – Minor distractions and slight hand tremors
  • :orange_circle: Medium Stress – Noticeable visual effects and impaired focus
  • :red_circle: High Stress – Strong tremors and reduced aiming accuracy
  • :skull_and_crossbones: Very High Stress – Severe control issues, intense screen effects
  • :skull: Extreme Stress – Critical state, maximum difficulty in controlling actions

Each stage is fully configurable, with adjustable timers and effect intensity to fit your server’s needs.


:zap: Sources of Stress

Stress increases due to various in-game events:

  • :gun: Shooting – Every shot fired adds stress
  • :red_car: Car Crashes – Collisions cause a spike in stress
  • :boxing_glove: Fights – Engaging or receiving hits adds to stress
  • :racing_car: Fast Driving – Speeding elevates stress over time
  • :skull: Witnessing Death – Seeing NPCs or players killed adds stress

:man_in_lotus_position: Stress Relief and RP Items

This system does not include built-in stress-reducing items.
You can easily create your own immersive RP items (cigarettes, pills, tea, etc.) using exports that reduce stress.


:shield: Stress Immunity & Temporary Buffs

Exports allow granting:

  • Immunity to stress from specific activities
  • Temporary reduction of incoming stress by percentage

:gear: Exports Documentation

AddStress(Value) β€” Adds stress
GetStress() β€” Returns stress
SetStress(Value) β€” Sets stress
SetStressProof(Name, Value) β€” Immunity toggle
SetTemporaryProof(Percent, Time) β€” Temporary stress reduction


:globe_with_meridians: Fully Configurable & Multi-language Support

  • Select your notification system
  • Configure stress drop intervals and cooldowns
  • Full language support

:gear: CONFIG

Config = {}

Config.Debug = {
    command = false,
    info = false,
}

Config.Notification = 'OxLib'                          -- Notification type: 'OxLib', 'ESX', 'QBCore', 'nrg_hud' or 'Custom (see client/notify.lua)'
Config.SavaToSQL = false                                 -- Save to SQL (true/false)  -- TODO: if you use multicharacter, go to server/PlayerLicense.lua and change the GetPlayerLicense function

Config.HUD = true                                       -- Show HUD (true/false)
Config.DynamicHud = true                                -- Show dynamic hud (true/false) if false hud is visible all the time

Config.NrgAlcoEffect = false                            -- If you use as nrg_alcoeffect, set to true for refresh the Alcohol effect

Config.Language = 'en'                                  -- Language
-- Available languages:
-- 'pl'  - Polish
-- 'en'  - English
-- 'fr'  - French
-- 'it'  - Italian
-- 'pt'  - Portuguese
-- 'sv'  - Swedish
-- 'es'  - Spanish
-- 'de'  - German
-- 'tr'  - Turkish

Config.MaxStress = 100                                   -- Max stress

Config.StressDrop = {
    interval = 20,                                       -- Stress drop interval in seconds
    drop = 1,                                            -- Stress drop in one interval
}

Config.StressLevel = {
    ['Low'] = {
        stress = 10,                                     -- Start 'low' stress
        ShakeIntensity = 0.2,                            -- Shake intensity
        redmistStrength = 0,                             -- Redmist strength
        audio = {
            Play = true,                                 -- Play audio
            Number = {1},                                -- Number of audio to play from 1 to 3
            },                                          
        interval = 30,                                   -- Interval in seconds
        HoldEffect = 300                                 -- Hold effect in milliseconds
     },
    ['Medium'] = {
        stress = 30,                                     -- Start 'medium' stress
        ShakeIntensity = 0.3,                            -- Shake intensity
        redmistStrength = 0,                             -- Redmist strength
        audio = {
            Play = true,                                 -- Play audio
            Number = {1, 2},                             -- Number of audio to play from 1 to 3
            },                                          
        interval = 20,                                   -- Interval in seconds
        HoldEffect = 600                                 -- Hold effect in milliseconds
    },
    ['High'] = {
        stress = 50,                                     -- Start 'high' stress
        ShakeIntensity = 0.5,                            -- Shake intensity
        redmistStrength = 0.5,                           -- Redmist strength
        audio = {
            Play = true,                                 -- Play audio
            Number = {1, 2},                             -- Number of audio to play from 1 to 3
            },                                          
        interval = 15,                                   -- Interval in seconds
        HoldEffect = 800                                -- Hold effect in milliseconds
    },
    ['Very High'] = {
        stress = 70,                                     -- Start 'very high' stress
        ShakeIntensity = 0.7,                            -- Shake intensity
        redmistStrength = 0.7,                           -- Redmist strength
        audio = {
            Play = true,                                 -- Play audio
            Number = {2, 3},                             -- Number of audio to play from 1 to 3
            },                                          
        interval = 10,                                    -- Interval in seconds
        HoldEffect = 1000                                -- Hold effect in milliseconds
    },
    ['Extreme'] = {
        stress = 90,                                     -- Start 'extreme' stress
        ShakeIntensity = 1.0,                            -- Shake intensity
        redmistStrength = 0.7,                           -- Redmist strength
        audio = {
            Play = true,                                 -- Play audio
            Number = {2, 3},                             -- Number of audio to play from 1 to 3
            },                                          
        interval = 8,                                    -- Interval in seconds
        HoldEffect = 1200                                -- Hold effect in milliseconds
    },
}

Config.Shooting = {
    AddStressPerShooting = true,                         -- add stress per shooting
    ShowNotify = true,                                   -- show notify when shooting
    CoolDown = 3000,                                     -- shooting timeout before adding stress again in milliseconds
    add = 1,                                             -- add stress per shooting after CoolDown
}

Config.FastDriving = {
    AddStress = true,                                    -- add stress per speed
    ShowNotify = true,                                   -- show notify when driving fast
    Speedmeter = 'km/h',                                 -- 'km/h' or 'mph'
    CoolDown = 10,                                        -- CoolDown in seconds
    Speed = {
        ['100'] = 1.5,                                  -- Speed in km/h or mph  you can add more speeds
        ['160'] = 2,
        ['200'] = 2.5,
        ['300'] = 3,                                     -- Speed in km/h or mph  you can add more speeds
    }
}

Config.Fight = {
    AddStress = true,                                    -- add stress per fight
    ShowNotify = true,                                   -- show notify when fighting
    Hit = 1,                                             -- add stress per hit
    TakeHit = 2,                                         -- add stress per take hit
}

Config.CarCrash = {
    AddStress = true,                                    -- add stress per car crash
    ShowNotify = true,                                   -- show notify when car crash
    CoolDown = 1000,                                     -- CoolDown in milliseconds
    add = 2,                                             -- add stress per car crash after CoolDown
}

Config.SeenPedKilled = {
    AddStress = true,                                    -- add stress per seen ped/player killed
    ShowNotify = true,                                   -- show notify when seen ped/player killed
    add = 1,                                             -- add stress per seen ped/player killed
}

Config.Running = {
    RemoveStress = true,                                 -- remove stress for running
    ShowNotify = true,                                   -- show notify when running
    CoolDown = 10,                                       -- CoolDown in seconds
    remove = 7,                                         -- remove stress per coolDown
}

Config.NoAddingStress = {
    Coords = {
       -- {x = -1303.2339, y = -922.2253, z = 11.2965, radius = 50.0},
    },
    AllBucket = true,                                 -- if on false, Stress will be added only in general bucket
}



-- Client exports
-- exports["nrg_stress"]:AddStress(Value) -- Add stress to player [number]
-- exports["nrg_stress"]:GetStress() -- Get stress from player [number]
-- exports["nrg_stress"]:SetStress(Value) -- Set stress to player [number]
-- exports["nrg_stress"]:SetStressProof(Name, Value) -- Set stress proof to player [string, number] Name = (Shooting, CarCrash, Fight, FastDriving, SeenPedKilled) Value = (1 = true, 0 = false)
-- exports["nrg_stress"]:SetTemporaryProof(Procent, Time) -- Set temporary proof to player [number, number]
-- exports["nrg_stress"]:GetStressProof() -- Get stress proof from player [table]


--  Server exports
-- exports["nrg_stress"]:AddStress(Source, Value) -- Add stress to player [number, number]
-- exports["nrg_stress"]:SetStress(Source, Value) -- Set stress to player [number, number]
-- exports["nrg_stress"]:SetStressProof(Source, Name, Value) -- Set stress proof to player [number, string, number]
-- exports["nrg_stress"]:SetTemporaryProof(Source, Procent, Time) -- Set temporary proof to player [number, number, number]


:camera_flash: Preview


:movie_camera: Watch the Video (YouTube)


:credit_card: Download


:information_source: Final Information

Code is accessible Escrow – editable: config, notify, etc.
Subscription-based No
Lines (approximately) 1800+
Requirements Standalone
Support Yes – regular updates

:package: NRG Releases on CFX

Advanced SIM Card System
Advanced SIM Card System
For LB_phone
NRG Alco Effect System
NRG Alco Effect System
Realistic Drunk Effect
NRG HUD
NRG HUD
Customizable & Modern
NRG Pro Meter
NRG Pro Meter
Vehicle Performance Test
3 Likes