Frequently Asked Questions

1. How does the multiplayer crew system work?

Every player automatically has an individual crew lobby:

  • Inviting Workers: The crew leader can open the in-game dashboard (default key: F7) and invite nearby players (within 10m) who have the required job.
  • Payout Equity: In the Lobby tab, members manage their profit percentage shares. The total sum of all member shares must equal exactly 100% before the leader can start the route.
  • Synchronized Work Route: When the leader initiates the route, all crew members receive the exact same assigned work areas, blips, and service vehicles.
  • Dynamic Task Scaling: The server scales the number of active tasks at each work area based on your active crew size (math.min(activeMembers, #availableTasks)). Solo workers receive 1 task per area, while a 4-person crew gets up to 4 parallel tasks to tackle together at each stop.

2. Can players perform the job completely solo?

Yes! If a player chooses not to invite anyone, their crew lobby consists of just themselves with a 100% payout share. They can start the route, get their assigned service vehicle, and collect 100% of the route earnings upon returning to base. In solo mode, vehicle scanning tasks automatically adapt to speed maintenance without requiring a passenger radar operator.

3. What happens if a player disconnects or crashes mid-route?

The script features an intelligent Ghost Lobby & Reconnect Protection System:

  • When a worker disconnects, they are flagged as a "ghost" (isOffline = true), and the lobby continues without resetting.
  • Their earned task progress and shift work time are safely recorded up to the disconnection moment, and players have a 10-minute grace period to reconnect.
  • The remaining crew members can continue completing the route uninterrupted.
  • When the disconnected worker rejoins the server, the script recognizes their active lobby membership and immediately restores their active route, vehicle keys, and completed task states.
  • If the crew leader crashes, leadership is automatically passed to the next senior online member.

4. How does the Distance Pay system work?

The distance pay system rewards crews who travel to remote corners of San Andreas:

  • Starts applying after minDistance (default: 250m from base).
  • Scales linearly up to maxDistance (default: 3,500m from base).
  • Adds up to maxBonus (default: +45% bonus earnings) on top of the base task reward and level multiplier.

5. How do vehicles and level progression work?

As players complete tasks, they accumulate character XP:

  • Level 1 (0 XP): Unlocks the Brute Boxville (boxville). Base payout multiplier 1.00x.
  • Level 2 (2,200 XP): Unlocks the Utility Truck (utillitruck3). Payout multiplier 1.10x (+10%).
  • Level 3 (6,000 XP): Unlocks the Bravado Bison (bison3). Payout multiplier 1.22x (+22%).

If a crew has 3 or 4 players, the script automatically spawns 2 service vehicles so everyone travels comfortably.

6. Can I make this a whitelisted job or keep it open for everyone?

Open config/sh_config.lua:

  • Open to everyone: Set jobName = false. Any citizen can approach the supervisor NPC and start working.
  • Whitelisted / Restricted job: Set jobName = 'roadmaintenance' (or your framework job name). Only players with that job assigned will be able to talk to the supervisor NPC and open the job tablet.

7. Which Frameworks, Targets, and Notifications are supported?

  • Frameworks: qbx_core (QBox), qb-core, es_extended (ESX Legacy / 1.final).
  • Target Systems: ox_target, qb-target.
  • Vehicle Keys: qb-vehiclekeys, qbx_vehiclekeys, qs-vehiclekeys.
  • Notifications: ox_lib, bs-advnotifications, esx, qb, qbx, mythic_notify, okokNotify, pNotify.
  • Custom Frameworks: The entire bridge/ directory is 100% unencrypted, allowing you to adapt the resource to any custom core or notification system in minutes.

8. Why is add_ace resource.bs-roadmaintenancejob command.add_ace allow required?

FiveM's security engine blocks server scripts from running ExecuteCommand('add_ace ...') unless the resource itself has been granted permission to manage ACEs. Since bs-roadmaintenancejob dynamically links the serverConfig.adminPermission group to roadmaintenancejob.admin upon boot, adding add_ace resource.bs-roadmaintenancejob command.add_ace allow in server.cfg prevents permission rejection.