One Bus.
Not One Ghost Bus Per Client.
rde_busdriver is the most realistic AI-powered public transport for FiveM ox_core — a single NetID-synced vehicle following real city routes, with a ticket system, black rider fines, and a pending queue so buses survive an empty server instead of failing to spawn.
Overview
Most FiveM bus systems are either broken, paywalled, or a buggy mess where every client spawns their own copy of the vehicle ("ghost buses"). rde_busdriver syncs a single entity via NetID, and buses queue rather than fail to spawn on an empty server.
Why this over other bus scripts
| Other Bus Scripts | rde_busdriver |
|---|---|
| Ghost buses — every client spawns their own | One entity, synced via NetID |
| Server empty = no buses | Pending queue — buses wait, auto-spawn on join |
| Can't enter — door lock status desynced | Local state tracking, reliable door detection |
| Discord webhook rate limits | DB + Nostr — permanent, decentralized, unlimited |
Quick Start
ensure rde_busdriver
-- optional Nostr logging
ensure rde_nostr_log
ensure rde_busdriver
- Install →
ensure rde_busdriver, start the server — the Beach Line spawns automatically. - Walk to a bus stop blip on the map and wait for the bus.
- Use ox_target on the bus → buy ticket → enter.
- Ride to the next stop → exit with ox_target.
Tables auto-create on first start — no SQL import needed. Admin menu: /busadmin or F7.
Configuration
-- Ticket system
Config.TicketPrice = 50 -- ox_inventory money item count
Config.BlackRiderFine = 250
Config.InspectorChance = 0.15 -- 15% per stop
-- Bus behavior
Config.MaxBusSpeed = 50.0 -- km/h
Config.StopDuration = 15000 -- ms at each stop
Config.MaxActiveBuses = 3
money items in inventory, not just bank balance.
Routes & Stops
The Beach Line auto-creates on first start with 6 stops (Del Perro Pier, Magellan Ave, New Empire Way, Ginger St, Marathon Ave, Puerto Del Sol). Two more routes (Downtown Express, North Loop) ship commented-out in config.lua.
Admins can create/delete routes and stops in-game — walk to a location, press E to place a stop (50m minimum distance between stops enforced), X to cancel placement.
Nostr Integration
When rde_nostr_log is running, bus arrivals/departures, ticket sales, black rider fines, and admin actions are posted with full searchable tags. Zero-crash design — every call is pcall-wrapped, so the bus system works perfectly with no errors if rde_nostr_log isn't running.
🚌 Bus arrived | Route: Beach Line | Stop: Del Perro Pier
🎫 Ticket sold | Player: Shin | Stop: Del Perro Pier | Route: Beach Line | $50
🚨 Black rider | Player: Skid123 | Fine: $250 | Stop: Vespucci Beach
Database Schema
| Table | Purpose |
|---|---|
| rde_bus_stops / rde_bus_routes | Stop locations and route configs with stop arrays |
| rde_bus_stop_logs | Every arrival/departure with boarding counts |
| rde_bus_ticket_logs | Every ticket sold — player, citizenid, route, price |
| rde_bus_fine_logs | Every black rider fine issued |
| rde_bus_stats | Daily passenger & revenue totals |
Common Pitfalls
Bus doesn't spawn when I join
Buses auto-spawn 5 seconds after server start — if no players were online at startup, they queue instead.
Fix: nothing to fix — check console for "🚌 Queued" messages, the bus spawns when the first player joins.
Can't enter the bus
The enter option only appears while the bus is stopped and doors are open.
Fix: wait for the doors-opening notification before trying to board.
NPCs spawn underground
The NPC passenger feature is still Beta.
Fix: set Config.MinNPCsPerStop and MaxNPCsPerStop to 0 to disable it entirely.
FAQ
Do NPC passengers actually board and exit?
Not yet — real boarding/exiting NPCs are on the v1.1 roadmap. Currently NPCs wait at stops with idle scenarios but don't board.
Is rde_nostr_log required?
No — fully optional, detected at startup with zero-crash fallback.
Roadmap
NPC passengers that actually board & exit, bus schedule display at stops, multiple bus models per route.
Season pass tickets, admin live map of active buses, player-driven bus job.