Overview
When a player dies, LenoSpirit clones their ped (same clothes, same face), makes the copy see-through, poses it, and lets it rise from the body while it fades out. A particle burst covers the moment it vanishes.
Features
| Area | Purpose |
|---|---|
| Spirit | An exact copy of the player, with the same clothes and face |
| Poses | 5 base-game poses (meditate, lying, sunbathe, dead, T-pose), plus your own |
| Particles | Start, trail, and finish effects from the base game, with size and height per effect |
| Sound | Base-game sounds at the start and at the end |
| Visibility | Only the player who died, or every player nearby |
| Death detection | Native GTA death, ESX / QBCore events, or one export from your own script |
| Season | All year, or only during the months you choose (server clock) |
| Player choice | Each player can hide the effect for themselves with /spirit |
| Admin | Test command with a pose preview, and a global on / off switch, using ACE permissions |
| Notifications | GTA feed, ox_lib, okokNotify, QBCore, ESX, or your own function |
| Languages | English and Portuguese included; add more in config.lua |
How it works
| Part | Where it runs | Why |
|---|---|---|
| Spirit, particles, sound | Each client, locally | No networked entities: nothing to sync, and it works with sv_entityLockdown |
| "I died" message | One event to the server | The server picks the players nearby (same routing bucket) and tells each one to show the spirit |
| On / off and season | Server, through GlobalState | Only the server decides, so clients can't fake it |
Hide for me (/spirit) | Client KVP | Saved on the player's PC, no database |
The spirit can't be shot, doesn't block bullets, and can't be targeted.
Frameworks
LenoSpirit is standalone. It works on any server with the default native trigger mode.
| Framework | Support |
|---|---|
| Any | triggerMode = 'native': detects the GTA death directly |
| ESX | triggerMode = 'framework': listens to esx:onPlayerDeath |
| QBCore | triggerMode = 'framework': watches metadata.isdead |
| Anything else | Call the Trigger export from your death script. See Exports and Events |
Performance
- Idle: 0.00 ms. One 500 ms check of the player's own ped.
- During the effect: a per-frame loop runs only while a spirit is on screen (6 s by default) and stops by itself.
- Big fights:
General.maxSpiritscaps how many spirits one client draws at the same time.
Where to start
- Server owners: Installation and Configuration.
- Admins: Commands.
- Developers: Exports and Events.
- Problems: FAQ / Troubleshooting.
