Configuration

Everything lives in pressurewasherv2/config.lua.

Framework and permissions

  • UseESX, UseNewESX, UseQBCORE — leave all false for standalone
  • JobNames — jobs allowed to use a job pump
  • UseWhitelist, Identifiers, AcePermission — standalone gating
  • UseTarget, UseOXTarget — target support

Economy (Config.Economy)

  • PumpUsePrice — charged on pickup for selfservice and business
  • CleanReward — paid per car on job pumps
  • PumpBreakFee — charged when the hose snaps
  • Society — the society account business pumps bank into
  • RewardCooldown — per-player cooldown on the reward event
  • DefaultPumpMode — 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 stage
  • ScrubTime — how long the sponge stage takes
  • ScrubMaxDistance — how far the player can stray before the scrub cancels
  • HudViewDot — 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 alike
  • VehicleDecalType — optional separate type for hits on a vehicle, purely to give foam a different look on paint. nil uses DecalType for both
  • Size — 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 first
  • Color / Opacity — RGB tint coefficients and opacity
  • Lifespan — seconds a mark stays. Set it well beyond the time it takes to soap a whole car so nothing fades mid-job
  • Spacing — minimum distance between marks. Keep it below Size so marks overlap and merge into a mass rather than sitting as separate blobs
  • MaxSpots — hard cap on active marks. Once reached the oldest is deleted. Roughly Spacing squared per mark, so ~150 marks at 0.4 covers about 24 m², enough for a saloon
  • DropInterval — milliseconds between dropping marks while spraying soap
  • WashRadius / 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 faster
  • MaxSplashDistance — how far the jet reaches
  • WaterDensity / SoapDensity — how many looped particle effects are stacked on the nozzle. Raise for a thicker jet at a cost
  • PumpRadius — 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 length
  • RopeMaxLength — how far the player can walk before it snaps
  • RopeBendFactor — how much the hose sags
  • ExplodeAfterRopeBreak — explosion on a static pump. A van hose never explodes

Custom hose (HoseInfo.CustomRope)

  • Enabled — use the custom rope type
  • DefaultRopeType — fallback if registration fails
  • NumSections — vertex resolution
  • Radius — tube thickness
  • DiffuseTexture / NormalMap — texture names inside rope.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 props
  • AttachOffset — 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 bank business takings 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 loop
  • Depth — maximum plus/minus pitch change. 0.05 is 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.

Can't find what you need? Ask on Discord — response in under 5 hours.