๐ฝ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
Download the resource
Import the
sql.sql
file into your database (only needed if using SQL save method)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