Interactive bathing system for RedM servers using RSG Core.
Immersive bathhouses where players can pay for a normal or deluxe bath.
Includes realistic animations, NPC attendants, and localized prompts for Saint Denis, Valentine, and Annesburg.
Locales: locales/en.json, fr.json, el.json, pt-br.json (loaded via lib.locale()).
- Available in Saint Denis, Valentine, and Annesburg.
- Choose between:
- Normal Bath → base price (default
$1) - Deluxe Bath → assisted version (default
$5)
- Normal Bath → base price (default
- Dynamic NPC attendants spawn at each bathhouse.
- Integrated blips and prompts for easy interaction.
- Server-side validation via RSG Core (
Player.Functions.RemoveMoney('cash')). - Prevents simultaneous use — only one player per bath at a time.
- Notifies players if:
- insufficient funds (
notify_not_enough_money) - bath is already occupied (
notify_occupied).
- insufficient funds (
- Uses RDR2 native bathing animations:
script@mini_game@bathing@BATHING_INTRO_OUTRO_ST_DENISscript@mini_game@bathing@BATHING_INTRO_OUTRO_VALENTINEscript@mini_game@bathing@BATHING_INTRO_OUTRO_ANNESBURG
- Includes door closing, ragdoll positioning, and fade effects.
Config.NormalBathPrice = 1
Config.DeluxeBathPrice = 5
Config.BathingZones = {
["SaintDenis"] = {
dict = "script@mini_game@bathing@BATHING_INTRO_OUTRO_ST_DENIS",
rag = vector4(2629.4, -1223.33, 58.57, -92.66),
consumer = vector3(2632.6, -1223.79, 59.59),
lady = `CS_BATHINGLADIES_01`,
guy = `CS_LeviSimon`,
door = 779421929
},
["Valentine"] = {
dict = "script@mini_game@bathing@BATHING_INTRO_OUTRO_VALENTINE",
rag = vector4(-317.37, 761.8, 116.44, 10.365),
consumer = vector3(-320.56, 762.41, 117.44),
lady = `CS_BATHINGLADIES_01`,
guy = `CS_LeviSimon`,
door = 142240370
},
["Annesburg"] = {
dict = "script@mini_game@bathing@BATHING_INTRO_OUTRO_ANNESBURG",
rag = vector4(2952.65, 1334.7, 43.44, -291.27),
consumer = vector3(2950.42, 1332.15, 44.44),
lady = `CS_BATHINGLADIES_01`,
guy = `CS_LeviSimon`,
door = 1041746010
}
}- Place
rsg-bathinginside yourresources/[rsg]folder. - Ensure rsg-core, ox_lib, and oxmysql are installed.
- Adjust bath prices and zone coordinates in
config.lua. - Add to your
server.cfg:ensure ox_lib ensure rsg-core ensure rsg-bathing
- Restart your server.
Provided in locales/: en, fr, el, pt-br.
Uses lib.locale() for multilingual notifications and prompts.
Exports a state variable:
exports('IsBathingActive', function()
return LocalPlayer.state.isBathingActive
end)Use this to check if a player is currently in a bathing sequence.
- Original RSG adaptation by Rexshack Gaming
- Base idea origin unknown (if you build this resource and have any issues with it please contact me)
- Community testers and translators
- License: GPL‑3.0