Skip to content

RPSync Benny's Job

A full tuning bench job — performance, body, wheels, paint, neons and more, with its own independent employee system

Complete and self-contained Benny’s Original Motor Works job for ESX Legacy servers: a tuning bench that lets players customize everything on a vehicle (performance, exterior, wheels, paint, neons, xenons, window tint, extras, plate, livery) — with its own grade/employee system, completely independent from ESX jobs (jobs / job_grades). Zero risk of conflicting with a “mechanic” job you already have on your server.


  • Own employee system — dedicated SQL table (rpsync_bennys_employees), fully independent from ESX’s jobs/job_grades. Players become employees through a hire command, not through a job center.
  • Configurable grades — defined in config.lua.
  • Clock in / clock out — status stored in the dedicated table.
  • Workshop blip — always visible on the map for every player, employee or not.
  • Server-side validation everywhere — employee status, duty, distance, price, client funds: everything is re-checked server-side, a client can never force or obtain a modification without paying.
  • Billing history — every payment is logged (rpsync_bennys_invoices) for reference.
  • Admin commands to manage the roster without touching the database.
  • Version check on startup — same system as RPSync Job Center, warns in the server console if an update is available.

A single interaction point: the nearest vehicle becomes the target. Customization happens in real time, directly on the vehicle — no back-and-forth between a menu and the game:

  • Performance — engine, brakes, transmission, suspension, armor, turbo
  • Exterior — bumpers, hood, fenders, skirt, roof, exhaust, grille, spoiler (each slot only appears if it actually exists for the targeted vehicle model)
  • Wheels — wheel type (Sport, Muscle, Lowrider, SUV, Off-road, Tuner, Bike, High-end) + front/rear wheels
  • Paint — primary, secondary, pearlescent and wheel color
  • Neons — 4 independent sides + free RGB color (native color picker)
  • Xenons — toggle + color
  • Window tint — 7 standard game tints
  • Extras — mirrors, roof bars, etc. (auto-detected per vehicle)
  • Plate — plate holder, stickers/trim
  • Livery, when the vehicle has one

The total only includes what actually differs from the vehicle’s state when the bench was opened: reverting a value back to its original state (toggling something back off, re-picking the starting color…) removes that slot from the invoice instead of still charging for it. Closing the window without paying restores the vehicle exactly as it was — no free modification is ever possible.

  • Horizontal bar anchored at the bottom of the screen — not a centered window blocking the view: a compact bar with icon tabs (wrench, wheels, paint…) and horizontally scrollable setting cards, so the vehicle and surroundings stay visible during customization
  • NUI design aligned with other RPSync products (Job Center, Garbage Collector, Police Job)

ResourceRole
es_extendedPlayer identity and money (cash/bank) — no ESX job/garage system is used
ox_libZones, notifications, callbacks
oxmysqlAccess to the employee table and billing history

All three resources must be started before rpsync_bennys in your server.cfg.


Before installing make sure your server has:

  • FiveM server running
  • ESX Legacy framework
  • ox_lib
  • oxmysql installed
  • Basic server knowledge

Run install.sql once against your database (phpMyAdmin, HeidiSQL…) — creates the rpsync_bennys_employees and rpsync_bennys_invoices tables.


Download the script from your Tebex purchase.

Extract the archive to:

resources/rpsync_bennys


After es_extended, ox_lib and oxmysql:

ensure rpsync_bennys

The default coordinates in config.lua are approximate (Benny’s area, Strawberry). To adjust them:

  1. Start the server and connect as admin.
  2. Go to the desired spot and type /bennys_poscoords in chat.
  3. Copy the displayed vector4(x, y, z, heading) into config.lua:
    • Config.DutyPoint — clock in/out point
    • Config.ShopBlip.coords — map blip position (the vector4 from /bennys_poscoords works here too, just ignore the w)
    • Config.BenchPoint — tuning bench (the nearest vehicle within Config.BenchRadius becomes the target)

In config.lua:

  • Config.ChargeMode: 'driver' (the vehicle’s driver pays — recommended for a real customer-facing mechanic role), 'self' (the mechanic pays, useful for an internal fleet) or 'free' (no payment)
  • Config.PaymentAccount: 'money' (cash) or 'bank'
  • Config.Prices: price charged per modified category

Step 6 — Hire your first employee, then restart

Section titled “Step 6 — Hire your first employee, then restart”
refresh
ensure rpsync_bennys

This script doesn’t depend on any job center: hiring is done through commands (admin-only, restricted by ACE — covered by the add_ace group.admin command allow already present in a standard FiveM server.cfg).

CommandEffect
/bennys_hire [id] [grade]Hires player id at the given grade (0 by default)
/bennys_fire [id]Fires player id
/bennys_setgrade [id] [grade]Changes the grade of an already hired employee

Player ids are the ones shown in-game (F8 / player list). Grades are the ones defined in Config.Grades (currently informative — no grade-based restriction is applied on the tuning bench, customize it in client/customize.lua if needed).


  1. A Bennys employee clocks in at the service point (Config.DutyPoint).
  2. The client parks their vehicle near the tuning bench (Config.BenchPoint, radius Config.BenchRadius).
  3. The employee presses E: the nearest vehicle becomes the target, and the tuning bar opens at the bottom of the screen (the vehicle and surroundings stay visible above it).
  4. Every change applies immediately to the in-game vehicle (a real preview, not an image) and updates the total shown in the bar’s header. Reverting to the original value brings the total back down (see “Net-change billing” above).
  5. Confirm bills the client (or the employee / nothing, depending on Config.ChargeMode) and keeps the changes. Cancel (or the close button / Escape) restores the vehicle exactly as it was before the menu opened, with no charge at all.

All configuration is located in:

config.lua

OptionDescription
Config.DebugDetailed logs in the server console (billing, checks)
Config.GradesAvailable grades (informative)
Config.DefaultGradeGrade assigned by default when hiring
Config.DutyPointClock in/out point
Config.RequireDutyWhether being on duty is required to use the tuning bench
Config.BenchPoint / Config.BenchRadiusInteraction point and detection radius for the target vehicle
Config.ChargeModeWho pays: 'driver', 'self' or 'free'
Config.PaymentAccountAccount charged: 'money' or 'bank'
Config.PricesPrice per modified category
Config.ModCategoriesModification slots offered (performance, exterior, wheels, plate, livery)
Config.ExtraSlotsExtra IDs tested (1 to 14 by default)
Config.WheelTypesWheel types offered
Config.WindowTintsWindow tints offered
Config.PaintColorCount / Config.XenonColorCountNumber of color indexes offered in the UI
Config.MarkersGround marker shown at each point
Config.ShopBlipWorkshop blip visible to everyone

Config.ChargeMode = 'driver' -- 'driver' | 'self' | 'free'
Config.PaymentAccount = 'money' -- 'money' | 'bank'

Config.Prices = {
performance = 3500, -- engine, brakes, transmission, suspension, armor, turbo
exterior = 1200, -- bumpers, hood, fenders, skirt, roof, exhaust, grille, spoiler
wheels = 1800, -- wheel type + front/rear wheels
paint = 900, -- primary/secondary/pearlescent paint + wheel color
neon = 2200, -- neons (per side) + color
xenon = 1500, -- xenon headlights + color
tint = 400, -- window tint
plate = 300, -- plate holder / stickers
livree = 900, -- livery
extras = 500, -- extras (mirrors, roof bars, etc.)
}

Config.Grades = {
[0] = { label = 'Apprentice' },
[1] = { label = 'Mechanic' },
[2] = { label = 'Shop Manager' },
}
Config.DefaultGrade = 0

server/version_check.lua automatically compares, 3 seconds after the resource starts, the version declared in fxmanifest.lua against the latest version published by RPSync, and prints the result to the server console:

  • 🟢 “You are running the latest version” — everything is up to date.
  • 🟡 “A new version is available!” — shows your version, the latest available version, and a download/changelog link if provided.
  • 🔴 “Version check failed” — the request failed (site unreachable, outbound firewall blocked, etc.); never prevents the resource from working, it’s purely informational.

This is the same system used by RPSync Job Center. It doesn’t collect or send any data from your server: a single HTTP GET request is made to rpsync-site.pages.dev to read the latest published version. To disable it, simply remove server/version_check.lua from fxmanifest.lua.


Check that install.sql was executed and that your admin account has the command.bennys_hire ACE permission (covered by command allow on the admin group in a default server.cfg).

Duty point / tuning bench doesn’t appear

Section titled “Duty point / tuning bench doesn’t appear”

Check the coordinates in config.lua (use /bennys_poscoords to verify your current position), and that the player has actually been hired.

The vehicle must be within Config.BenchRadius meters of the point — move it closer or increase the value.

In 'driver' mode, the script identifies the driver by comparing connected peds at confirmation time — make sure a player (not a ped) is actually sitting in the driver’s seat.

This is normal if the vehicle model doesn’t offer any option for that part type (native game behavior, not a bug).

Your server can’t reach rpsync-site.pages.dev (blocked outbound access, host firewall…) — no impact on the resource itself, it just can’t tell whether an update exists.


1.0.0

  • Initial release
  • Independent employee system (rpsync_bennys_employees), separate from ESX jobs
  • Full tuning bench: performance, exterior, wheels, paint, neons, xenons, window tint, extras, plate, livery
  • Real-time preview directly on the vehicle
  • Net-change billing with configurable charge mode and prices
  • Billing history (rpsync_bennys_invoices)
  • Admin commands for roster management
  • Automatic version checking system

Before requesting support:

  1. Check documentation
  2. Check F8 console
  3. Restart resource

Support channels:


RPSync License

Allowed:

  • Use on your server
  • Modify configuration
  • Modify translations

Not allowed:

  • Resell
  • Redistribute
  • Remove escrow protection