-
Notifications
You must be signed in to change notification settings - Fork 3
HUD State Reference
TaxiDriverHUDState is the complete UI-facing snapshot emitted by the GE extension. Version 3.0.0 Beta and newer also emits TaxiDriverHUDPatch while Connected Phone is active. Every full snapshot carries hudEpoch and hudRevision; every patch carries epoch, baseRevision, revision, changed values, and removed field names. The JavaScript controller accepts only a continuous revision chain and requests a full resynchronization after a gap.
| Field | Type | Meaning |
|---|---|---|
active |
Boolean | Taxi shift is online |
phase |
String | Current phase ID from config.lua
|
phaseLabel |
String | Backend diagnostic label; UI normally uses localized phase keys |
message |
String | Backend status/diagnostic message |
balance |
Number | Wallet balance rounded to cents |
rating |
Number | Persistent rating from 0 to 5 |
ratingCount |
Integer | Number of ratings included in the average |
completedRides |
Integer | Successfully completed rides |
difficulty |
String | Active preset ID |
realisticMode |
Boolean | Realistic economy is active for this shift |
shift |
Object | Current and previous shift accounting snapshots |
shiftHistory |
Object | Restorable shift cards plus current restore status/ID |
currentVehicle |
Object | Selected vehicle identity, preview, odometer, work totals, and availability |
autopilot |
Object | Availability, enabled/suspended state, supervisor status, reason, stuck time and recovery attempt |
fleet |
Object | Fleet availability, economy, persistent totals, active drivers, garage/traffic candidates, and map markers |
driverProfile |
Object |
{fullName, avatar} header summary |
passengerOnboard |
Boolean | Current phase logically contains a passenger |
deliveryOnboard |
Boolean | Current phase logically contains loaded cargo |
settings |
Object | Canonical settings document |
settingsNeedsLegacyImport |
Boolean | UI may import old local-storage settings |
lan |
Object | Experimental external-phone listener, connection count, address, port, URL, and bridge diagnostics |
lan.enabled reflects the current session only. The bridge additionally reports bridgeReady and bridgeError; url contains the stable token and should not be published in bug reports.
shiftHistory.items contains only sanitized, installed and non-zero-ride entries:
id, startedAt, lastSavedAt, vehicleName, vehiclePreview,
modelKey, configKey, rides, aiRides, grossIncome, fuelCost,
penaltyLoss, netIncome, averageRating, energyType, energyPercent
shiftHistory.restoring and restoringId prevent concurrent restore actions while BeamNG replaces and settles the vehicle.
{
available, enabled, suspended,
status, reason,
stuckSeconds, recoveryAttempt
}Known statuses are off, planning, driving, waitingSignal, waitingTraffic, recovering, approaching, stopping, paused, and unavailable. See AI Driver and Recovery.
{
enabled, activeDrivers, maxDrivers,
hiringFee, wagePerTenMinutes, ownerSharePercent, canAffordHire,
stats: { rides, passengerRides, deliveryRides, distanceMeters,
grossRevenue, ownerRevenue, wages, hiringFees },
drivers: [{ id, vehicleId, name, preview, source, status, jobType,
progress, remainingMeters, ai, stats }],
markers: [{ id, position: [x, y, z], name }],
trafficCandidates: [{ vehicleId, name, distance }],
garage: [{ key, modelKey, configKey, name, preview }]
}drivers are live, session-scoped BeamNG vehicles. stats are persistent. Marker positions are also included in Connected Phone map publication, while the native minimap obtains equivalent markers from the fleet manager's renderer. See Fleet Operations.
| Field | Type | Meaning |
|---|---|---|
offers |
Array | Current dispatcher cards |
offerTargetCount |
Integer | Random target from 10 to 12 |
nextOffer |
Object/null | Floating offer, remaining time, duration, accepted flag |
notification |
Object/null | Phone-local notification key, values, severity, and monotonic ID |
Each offer exposes:
id, passengerName, passengerCalmness,
isDelivery, cargoWeightKg, cargoWeightBonusPercent,
cargoWeightBonusAmount, cargoDamagePercent,
pickupDistance, pickupEtaMinutes, pickupWaitSeconds,
rideDistance, etaMinutes,
baseFare, ratingAdjustedFare, estimatedFare,
ratingBonusPercent, ratingBonusAmount,
isMultiStop, stopCount, stopWaitSeconds,
isRush, bonusPercent, bonusAmount, timeLimitMinutes,
randomEvent
| Field | Type | Meaning |
|---|---|---|
activeTripId |
Integer | Current offer/trip ID; zero when absent |
passengerName |
String | Current passenger |
passengerCalmness |
Number | Current dynamic mood percentage |
passengerInitialCalmness |
Number | Mood at offer creation |
passengerMoodMaximum |
Number | Initial mood + 40, capped at 100 |
passengerMoodChangeId |
Integer | Increments for each applied mood change |
passengerMoodChangeDirection |
String |
up or down
|
passengerMoodChangeAmount |
Number | Absolute applied change |
passengerStressPercent |
Number | Stress divided by the current mood-dependent threshold |
| Field | Type | Meaning |
|---|---|---|
isDelivery |
Boolean | Current work item is a cargo delivery |
cargoWeightKg |
Number | Physical cargo mass selected for the order |
cargoWeightBonusPercent |
Number | Linear weight fare premium × 100 |
cargoWeightBonusAmount |
Currency | Weight premium included in the delivery base fare |
cargoDamagePercent |
Number | Cumulative package damage from 0 to 100 |
finalFare |
Currency | Locked completion payout |
rideRating |
Number | Delivery result from 1 to 5 |
| Field | Type | Meaning |
|---|---|---|
distanceToTarget |
Metres | Ground-marker path length to current target |
rideDistance |
Metres | Complete passenger route length |
etaMinutes |
Minutes | ETA to current target at 40 km/h |
rideEtaMinutes |
Minutes | Remaining passenger drive plus scheduled waits |
routeProgress |
0–1 | Current pickup, fuel, or complete passenger-route progress |
progressLabel |
String | Backend progress label |
speedLimit |
km/h | Closest road-link speed limit, or zero |
currentSpeed |
km/h | Active vehicle speed |
nextStopDistance |
Metres | Remaining distance to the current intermediate stop |
fuelEnoughForTrip |
Boolean | Estimated current range covers the remaining route |
tripEvent |
Object | Safe UI projection of the active optional random event |
pickupWaitLimit, pickupTimeRemaining, pickupLate, pickupLateSeconds,
isMultiStop, stopCount, currentStopIndex, stopProgressMarkers,
stopWaitDuration, stopWaitRemaining,
rushOrder, rushBonusActive, rushBonusLost,
rushBonusAmount, rushTimeLimit, rushTimeRemaining
Every stop marker has {index, progressPercent, active, completed}.
| Field | Type | Meaning |
|---|---|---|
estimatedFare |
Currency | Offer value including rating/rush bonus before penalties |
adjustedFare |
Currency | Current payable amount after penalties and lost rush bonus |
tipAmount |
Currency | Earned conditional event tip, included in final/projected payout |
ratingBonusPercent |
Number | Current rating bonus rate × 100 |
ratingBonusAmount |
Currency | Rating bonus amount |
penaltyPercent |
Number | Capped combined penalty × 100 |
penaltyEvents |
Array | UI event log with localized kind data |
penalties |
Object | Aggregate component values and event counters |
Penalty event fields:
id, kind, label, detail, fareAmount, penaltyPercent,
speedExcess, duration, damage, peakG, lateSeconds, stationName
Kinds currently include speeding, collision, aggression, pickupDelay, bonus, fuelStop, and cargoDamage.
vehicleEnergy is refreshed through Vehicle Bridge at a throttled interval:
available, energyType, quantity, maxQuantity, percent, unit, estimatedRangeKm
The full and minimized ride dashboards use it to show current fuel/charge and approximate range without polling Vehicle Lua every frame.
forcedExitDuration, forcedExitRemaining,
earlyExitRatingLossPercent,
offlinePenaltyExtraPercent, offlinePenaltyRatingLoss, offlinePenaltyFinalRating,
driverAbandonmentRatingLoss, driverAbandonmentExtraPercent
The UI uses the preview fields before calling confirmDriverAbandonment().
fuelStation contains:
{
available,
id,
name,
magic,
balance,
options: [{
energyType, unit,
currentQuantity, maxQuantity, missingQuantity,
affordableQuantity, currentPercent,
pricePerUnit, maxCost, consumptionPer100Km
}],
refueling: {
active, completing, energyType,
quantity, cost, duration, elapsed,
progress, remainingSeconds, completionId
}
}completionId allows the UI to detect a newly completed transaction even when subsequent state snapshots contain no active refueling session.
fuelDetour contains:
active, hadTrip, passengerOnboard,
stationName, routeDistance, penaltyPercent, arrived
The underlying Lua state also stores the previous phase and route information, but those internal values are not exposed to the UI.
TaxiDriver Reloaded documentation · Version 4.0.3 · BeamNG.drive 0.39
- Installation and Quick Start
- Gameplay and Ride Lifecycle
- Order Generation and Routing
- Passengers, Fares and Ratings
- Cargo Deliveries
- Realistic Refueling
- Driver Profile and Persistence
- Settings, Localization and Audio
- Navigation and Map Controls
- External Web UI
- Driver UI Design
- AI Driver Engine 0.39
- AI Driver and Recovery
- Fleet Operations
- Troubleshooting and Compatibility