Configuration
Everything lives in pressurewasherv2/config.lua.
Framework and permissions
UseESX,UseNewESX,UseQBCORE— leave all false for standaloneJobNames— jobs allowed to use ajobpumpUseWhitelist,Identifiers,AcePermission— standalone gatingUseTarget,UseOXTarget— target support
Economy (Config.Economy)
PumpUsePrice— charged on pickup forselfserviceandbusinessCleanReward— paid per car onjobpumpsPumpBreakFee— charged when the hose snapsSociety— the society accountbusinesspumps bank intoRewardCooldown— per-player cooldown on the reward eventDefaultPumpMode— fallback for any unlisted pump found in the world
Cleaning (Cleaning)
SoapPortion/ScrubPortion/WaterPortion— each tool's share of the dirt. Must add up to 1.0. Set any to 0 to drop that stageScrubTime— how long the sponge stage takesScrubMaxDistance— how far the player can stray before the scrub cancelsHudViewDot— how directly the player must be looking at the vehicle for the card to show
Foam marks (Cleaning.Foam)
DecalType— splatter type. 1030 works on tarmac and paint alikeVehicleDecalType— optional separate type for hits on a vehicle, purely to give foam a different look on paint.nilusesDecalTypefor bothSize— width/height of each mark in metres. Keep it small. One big splat covers a panel in a single recognisable shape and reads as a pattern painted on the car; several small overlapping ones read as foam. If it starts looking like cow spots, bring this down firstColor/Opacity— RGB tint coefficients and opacityLifespan— seconds a mark stays. Set it well beyond the time it takes to soap a whole car so nothing fades mid-jobSpacing— minimum distance between marks. Keep it belowSizeso marks overlap and merge into a mass rather than sitting as separate blobsMaxSpots— hard cap on active marks. Once reached the oldest is deleted. RoughlySpacingsquared per mark, so ~150 marks at 0.4 covers about 24 m², enough for a saloonDropInterval— milliseconds between dropping marks while spraying soapWashRadius/WashStrength— how far from a water hit decals are washed, and how aggressively per pass
The game keeps its own global decal pool and recycles the oldest when it fills, so raising MaxSpots indefinitely just evicts other decals — tyre marks, bullet holes — rather than showing more foam.Decal types in the 9000+ range (solidPool_, porousPool_, liquidTrail_*) are the ground-liquid pool system and will never render on a vehicle — do not use those. Others worth trying: 4010 metal impact, 4020 concrete, 4032 mud, 1010 blood, 1020 mud, 1110 blood2.
Pump behaviour (PumpInfo)
WaterCleanRate/SoapCleanRate— dirt removed per tick. Higher is fasterMaxSplashDistance— how far the jet reachesWaterDensity/SoapDensity— how many looped particle effects are stacked on the nozzle. Raise for a thicker jet at a costPumpRadius— the player and the vehicle must both be within this distance to clean. Also resets the usage payment once the player walks away
Hose (HoseInfo)
RopeLength— resting hose lengthRopeMaxLength— how far the player can walk before it snapsRopeBendFactor— how much the hose sagsExplodeAfterRopeBreak— explosion on a static pump. A van hose never explodes
Custom hose (HoseInfo.CustomRope)
Enabled— use the custom rope typeDefaultRopeType— fallback if registration failsNumSections— vertex resolutionRadius— tube thicknessDiffuseTexture/NormalMap— texture names insiderope.ytd, not file paths
Defaults match stock rope type 1 exactly, so the hose keeps the shape it had before the custom design — only the texture changes. If registration fails the script falls back to DefaultRopeType and prints why.
The pump prop (WasherPumpModel)
Model— prop model spawned for a pump, and the model the script looks for when adopting ymap propsAttachOffset— where the hose plugs into it
Framework money plumbing
RewardAccount— which account job payouts land in,"bank"or"cash"QBSocietyResource— the society/management resource QBCore should bankbusinesstakings through. Leave as shipped unless you run a non-standard one
The sponge
SpongeTool— the prop placed in the player's right hand for the scrub stage. Swap it for any model you like
Audio (EngineSound)
File, MaxDistance, MaxVolume, BackVolume, SkipStartSeconds, UpdateInterval, PitchVariation.
The listener is the rendered camera: distance sets the volume, the camera's facing sets left/right pan and a mild front/back drop. Sounds are keyed by their source, so two players working off the same washer make it sound once rather than stacked.
PitchVariation gives each washer a subtle random pitch drift so the loop never sounds mechanically static.
Display
DisplayStyle: NUI (default, world-anchored HTML panels with key chips), 3D, NOTIFI, NOTIFI2, SUBTITLE. HoverTextFont sets the font id for the 3D style. Every string in Locales is editable.
Spray mode badge (SprayModeHud)
Left, Top (CSS values) and Size (pixels).
Pitch drift (EngineSound.PitchVariation)
Enabled— turn the drift off for a dead-steady loopDepth— maximum plus/minus pitch change.0.05is 5%IntervalMs— roughly how often a washer picks a new pitch to drift toward
Each washer wanders on its own, so two running side by side never sound identical.
