[standalone] stinky peds

:fly: Stinky Peds – A Dirt System You Never Knew You Needed
Ever looked at a player and thought:
“Wow… he looks like he hasn’t showered since the tutorial.”
Well, now you can prove it.

Stinky Peds (or whatever you wanna call it) is a lightweight and hilarious immersion script that brings personal hygiene into your server. Every player starts with a dirt level of 0, but as time goes on without cleaning up, things get… noticeable.

:poop: How It Works:
:bug: Dirt increases over time (every 30 minutes) or via external triggers, up to a max of 200.
:fly: At 100+ dirt, a swarm of flies starts orbiting the player. Gross (and funny).
:shower: Jump into water and press [E] to clean yourself with a nice little scrubbing animation.
:soap: Showering reduces dirt by 50. So fresh, so clean.
:bar_chart: Use /checkdirt to see just how filthy you’ve become.
:brain: The system handles a database table for you—automatically creates and updates it, no setup needed.
:package: Fully synced across all clients—everyone will know.

:package: Features:

  • Fully configurable & easy to expand if you know what you’re doing
  • Clean and optimized (as much as possible)
  • No config file included—figure it out yourself, champ
  • First script after jumping back into FiveM dev
  • You can enable/disable NPC reactions to your stinky ped

:dart: Why tho?
Because RP should sometimes be a little funky.
Okay, real talk: I just got back into FiveM scripting and this is my comeback project.

:point_right: Check the GitHub for docs and download:

Code is accessible Yes
Subscription-based No
Lines (approximately) ~320
Requirements oxmysql
Support No
10 Likes

Good idea! Great Script

1 Like

Nice idea, would be funny to have other peds react with animations showing disgust at a certain point.

Also heads up, just missing a license for people to use it.

1 Like

Nice idea, i’ll look into that … thanks for the heads up broski

1 Like

lil update

npc’s will now react (50% chance) to your stinky ass with one of three random animations.

the animations can be changed under this function:

function getRandomDisgustAnim()
    local anims = {
        {dict = "re@construction", anim = "out_of_breath"},
        {dict = "gestures@m@standing@casual", anim = "gesture_no_way"},
        {dict = "anim@mp_player_intcelebrationfemale@stinker", anim = "stinker"}
    }
    local choice = anims[math.random(#anims)]
    dbgPrint("Random animation: " .. choice.dict .. " - " .. choice.anim)
    return choice.dict, choice.anim
end

it also comes with a lil cooldown, so npc’s won’t spam animations
make sure to disable the npc reactions if you don’t run npc’s on your server

-- Set this to true if you want npc's to react to your stinky ass ped
local useNpcReactions = true

this threads needs a little bit more performance optimization, but I’ve seen worse :stuck_out_tongue:
it spikes up to 0.03 ms (when the thread runs with its checks to play the animation),
but i’ll keep optimizing it.

1 Like

That’s awesome, would this be possible to extend to players always well? Would be cool to have player peds instinctively react to someone who stinks.

1 Like

Thanks! Yes, that’s definitely possible. I could make nearby player peds react to smelly players too, similar to how NPCs do. Could be synced via dirt level shared over the network - I’ll look into that and implement it in the future

1 Like

I have made some slight changes to it. Now players will take some actions on the dirty values of other players and can use props for cleaning.
I have to say this is a very good idea, the same idea as the olfactory system I’m try to do conceiving
client.lua (18.5 KB)
server.lua (6.8 KB)

Nice brother. Make a pull request on github please :pray:
I’ll merge it as soon as I find some time

sory i dont know how to use request :sob:

After struggling for a while, I finally figured out how to use pull request. Now you can check it.<3

1 Like

lil update

players can now shower at pre defined coords (client.lua, from line: 13)


@David_Lugo asked if its possible, to let people shower inside showers. I mean, that definetly would make sense. I just stumbled across one major issue regarding “shower-detection”;
There’s no standardized or built-in way to determine whether an interior actually contains a shower or bathroom area, lol (Who would of thought?!?! (why tf would you even need such a function at all))

Anyways, if you have a better way of detecting showers, let me know thru a pull request <3

3 Likes