๐ŸšฝBasic Needs

A comprehensive needs system for FiveM servers that adds realistic player needs including sleep, bladder, and bowel movements.

Features

  • Realistic sleep system with fatigue effects

  • Bladder and bowel movement mechanics

  • Gender-specific animations and sounds

  • Customizable UI

  • Framework support for ESX and QB-Core

  • Progress bar support for multiple systems (ox_lib, mythic_progbar, esx_progressbar, qb-core)

  • Configurable effects and thresholds

  • NEW: JSON file saving for better performance on large servers

  • NEW: Option to completely disable the needs system

  • Database persistence (SQL or JSON)

Installation

  1. Download the resource

  2. Import the sql.sql file into your database (only needed if using SQL save method)

  3. Add the following to your server.cfg:

ensure hate-needs

Configuration

System Settings

Config.EnableNeedsSystem = true    -- Set to false to completely disable
Config.SaveMethod = "json"         -- Options: "sql" or "json" (recommended for large servers)

Framework Selection

Config.Framework = "QB" -- Options: "ESX" or "QB"

Sleep System

Config.Needs.Sleep = {
    Max = 100,
    DecayRate = 0.02,           -- Fatigue increase rate
    DecayRateRunning = 0.04,    -- Fatigue rate while running
    EffectsThreshold = 60,      -- Mild effects start
    SevereEffectsThreshold = 80, -- Severe effects start
    RagdollThreshold = 100,     -- Pass out threshold
    WakeUpValue = 30,          -- Reset value after passing out
    MinimumToSleep = 30,       -- Minimum fatigue to sleep
    RecoveryPerTick = 1,       -- Fatigue recovery per tick
    RecoveryTickTime = 1,      -- Recovery tick interval
    MaxSleepTime = 120,        -- Maximum sleep duration
}

Bladder System

Config.Needs.Pee = {
    Max = 100,
    IncrementRate = 0.05,      -- Bladder fill rate
    FoodIncrease = 15,         -- Increase from food
    DrinkIncrease = 25         -- Increase from drinks
}

Bowel System

Config.Needs.Poop = {
    Max = 100,
    IncrementRate = 0.03,      -- Bowel fill rate
    FoodIncrease = 30,         -- Increase from food
    DrinkIncrease = 5          -- Increase from drinks
}

UI Settings

Config.UseOwnUI = true         -- Enable/disable custom UI
Config.UIRefreshInterval = 1000 -- UI update interval

Controls

Config.Controls = {
    WakeUp = 73,              -- Key to wake up (X)
    ToggleUI = 'F7'           -- Key to toggle UI
}

Exports

Server Exports

-- System Control
exports['hate-needs']:SetNeedsSystemEnabled(true/false)
-- Enable or disable the needs system at runtime

exports['hate-needs']:IsNeedsSystemEnabled()
-- Returns: boolean - current system state

exports['hate-needs']:GetPlayerNeeds(playerId)
-- Returns player needs data (JSON method only)
-- Returns: table or nil

exports['hate-needs']:SetPlayerNeed(playerId, needType, amount)
-- Set a specific need for a player
-- Parameters: playerId (number), needType (string), amount (number 0-100)
-- Returns: boolean - success status

exports['hate-needs']:MigrateFromSqlToJson()
-- Migrate existing SQL data to JSON files
-- Returns: boolean - always true

Console Commands

# Migrate existing SQL player data to JSON files
migrate_needs_sql_to_json

Client Exports

exports['hate-needs']:GetNeeds()
-- Returns current needs values (or zeros if disabled)
-- Returns: {sleep: number, pee: number, poop: number, sickness: number}

exports['hate-needs']:IncreaseNeed(type, amount)
-- Increases or decreases a specific need
-- Parameters: type ("pee", "poop", "sleep"), amount (number)
-- Returns: boolean - success status

exports['hate-needs']:SetNeed(type, amount)
-- Sets a specific need to exact value
-- Parameters: type ("pee", "poop", "sleep", "sickness"), amount (number 0-100)
-- Returns: boolean - success status

exports['hate-needs']:IsNeedsSystemEnabled()
-- Returns: boolean - current system state

Commands

Admin Commands

/setneed [id] [type] [amount]
-- Sets a specific need for a player
-- Parameters:
--   id: Player server ID
--   type: "pee", "poop", "sleep", or "sickness"
--   amount: 0-100

Player Commands

/sleep -- Sleep to recover fatigue
/pee   -- Relieve bladder
/poop  -- Relieve bowel
/needs -- Toggle needs UI

Dependencies

  • One of the following progress bar systems:

    • ox_lib

    • mythic_progbar

    • esx_progressbar

    • qb-core

  • oxmysql (only required if using SQL save method)

Performance Notes

JSON vs SQL Saving

  • JSON: Recommended for servers with 50+ players

    • Faster load/save times (1-5ms vs 50-100ms)

    • No database overhead

    • Better scalability

    • Files stored in /data/ folder

  • SQL: Traditional database saving

    • Integrated with existing database

    • Requires oxmysql dependency

    • Higher server load with many players

Disabling the System

When Config.EnableNeedsSystem = false:

  • All calculations stop

  • No data loading/saving

  • Minimal resource usage

  • Commands show disabled messages

  • Exports return safe defaults

Notes

  • The script is protected with escrow encryption

  • Client and server files are encrypted

  • Only config.lua, server/sv_functions.lua, and client/cl_main.lua are accessible for customization