CONFIGURATION — ns-taxi
Everything below lives in config.lua unless another file is named. Content tables (cab models,
passengers, dialogues, upgrades, achievements, default locations) live in data/*.lua; texts in
locales/*.lua. All of them stay editable under escrow.
Coordinates marked -- example are defaults for the vanilla map — replace them with your own.
Core
| Key | Default | Effect |
|---|---|---|
Config.Framework | 'auto' | 'auto', 'qbox', 'qbcore', 'esx', 'standalone'. |
Config.Locale / Config.FallbackLocale | 'tr' / 'en' | Active language and the one used for missing keys. |
Config.Debug | true | Verbose console output and test commands. Set false in production. |
Config.DebugCategories | nil | nil = all, or e.g. { dispatch = true, payment = true }. |
Config.UseOxLib / Config.UseOxTarget | true | Allow those integrations when the resources run. |
Features
Config.Features switches whole systems off without touching code: RandomEvents, Reputation,
Achievements, Upgrades, Dialogues, DynamicDemand, CustomerMemory, PlayerRides,
Companies, NightShift, Airport, FuelTracking, StreetHail, ManualMeter.
Job access — Config.Job
| Key | Default | Effect |
|---|---|---|
required | false | true = only players with the job below can start a shift. |
name / minGrade | 'taxi' / 0 | Job name and minimum grade. |
requireOnDuty | false | Also require framework duty (Qbox / QBCore). |
Money
Config.Payment
| Key | Default | Effect |
|---|---|---|
account | 'bank' | 'cash' or 'bank'. |
maxPayoutPerRide | 2500 | Hard ceiling for fare + tip; anything above is refused and flagged. |
reason | 'ns-taxi' | Text passed to the framework money log. |
Config.Fare
| Key | Default | Effect |
|---|---|---|
base, perKm, perMinute, minimum | 12, 9.0, 0.9, 18 | Fare formula. |
roadFactor | 1.3 | Estimated road distance = straight line × factor. |
maxDetourFactor | 1.8 | Billable distance cap (no fare farming with detours). |
averageSpeedKmh, maxDurationFactor | 55, 1.6 | Duration estimate and billable time cap. |
airportFee, longDistance, vipPremium, emergencyBonus | Extras. | |
periodMultipliers | day 1.0, night 1.1, late_night 1.2 | Per time period (Config.Time). |
Config.Tip: enabled, minRating (3.0), minPercent / maxPercent (5 / 25 % of the fare),
perfectBonusChance.
Config.Standalone holds the server functions used when no framework runs (addMoney,
removeMoney, getMoney, isAdmin) — replace them with your own economy.
Progression
| Table | What it sets |
|---|---|
Config.Levels | maxLevel (50), XP curve base * (level-1) ^ exponent or explicit thresholds, titles per level. |
Config.XP | XP per ride, per km, bonuses (rating, tip, long, airport, VIP, perfect, clean, night), maxPerRide (250). XP is never taken away. |
Config.Unlocks | Minimum level for long rides (5), airport (10), premium (15), VIP (20), luxury cabs (25), company (30). |
Config.Reputation | start 50, range 0-100, change per star, collision penalty, diminishing gains, tier effects on request frequency and tip chance. |
Security / admin / database
Config.Security
| Key | Default | Effect |
|---|---|---|
floodCapacity / floodRefillPerSecond | 20 / 4 | Token bucket for all requests of one player. |
defaultRateLimit | 250 | ms between two calls of the same request (unless it sets its own). |
dropAfterFlags | 0 | Suspicious flags inside flagWindowSeconds before a kick. 0 = log only. |
flagLogCooldown | 30 | Seconds between identical log lines for one player. |
Config.Admin: ace (ns-taxi.admin), useFrameworkAdmin, testCommandsRequireDebug,
testRidesGiveRewards (false — test rides never pay), and commands (rename any admin command).
Config.Database: autoMigrate (true), rideLogRetentionDays (30), customerRetentionDays (45),
auditRetentionDays (90). 0 keeps rows forever.
Discord log / update check — Config.Logs
| Key | Default | Effect |
|---|---|---|
webhook | { security = true, admin = true, payout = true } | Categories posted to Discord: suspicious flags, admin audit rows, large payments. |
payoutMin | 2500 | Payments from this amount on are posted (payout). |
versionCheck | true | Compares the version on start with the manifest URL (ns_version_url in fxmanifest or the nullsect_version_url convar). Without a URL nothing is checked. |
The webhook URL is a server convar — never config.lua (it is sent to the clients):
set ns_taxi_webhook "https://discord.com/api/webhooks/..."
set ns_taxi_webhook_security "https://discord.com/api/webhooks/..." # optional per category: _security, _admin, _payout
/nsstatus (ACE / framework admin or console) lists every running NullSect resource with its
version, a newer version when known, and its state (database, sessions, rides).
HQ, cab and dispatch
| Table | What it sets |
|---|---|
Config.TaxiCompany | HQ label, duty point, garage, spawn points (tried in order), return point, serverTolerance added to every radius. |
Config.Vehicle | Plate prefix, roof light, start fuel, warp into the cab, spawn clear radius / timeout, seconds the driver may leave the cab. |
Config.Dispatch | Tick, time between requests (20-60 s, scaled by demand), offer timeout, drivers per request, offer radius, pickup and trip distances, low fuel warning. |
Config.Rides | Cancel penalties / cooldown, pickup / destination radius, maximum arrival speed, boarding rules, passenger patience, ped streaming distances, luggage. |
Config.Tracking | Server sample interval for active rides, teleport speed (fails the ride), live meter push interval. |
Config.DrivingQuality | Speed limit, hard brake / acceleration, collision damage, scoring weights (safety, comfort, route, timeliness). |
Config.Rating | Passenger rating formula (driving score, preferences, dislikes, condition, penalties, perfect ride). |
Time and demand
Config.Time.source: 'auto' (weather sync GlobalState.currentTime, else server clock), 'real'
or 'fixed' (fixedHour, for testing). periods defines day / night / late night.
Config.Demand: zones (circles) with a base level LOW / NORMAL / HIGH / VERY_HIGH; each
level sets a fare multiplier, request frequency and premium passenger bonus. Zones drift every
updateInterval seconds and drop one level when more than supplyThreshold drivers are inside.
Passengers, dialogues, events
| Table | What it sets |
|---|---|
Config.Airport | Extra luggage chance and waiting time at airport locations. |
Config.Dialogues | First question delay, interval, questions per ride, answer time, rating cap, remarks, tourist detour (extraStop). Questions live in data/dialogues.lua. |
Config.RandomEvents | Chance per ride (0.30), delays, answer time, maxEventReward, weight per event (0 disables one), settings per event. |
Config.Integrations | Alert provider for EMS / police / mechanic ('auto', 'ps-dispatch', 'cd_dispatch', 'events', 'custom', 'none'), job names, police cooldown. |
Config.CustomerMemory | Return chance of regulars, favourite bonus, grudge penalty, cache. |
Cab condition, services, upgrades
| Table | What it sets |
|---|---|
Config.Condition | Wear per ride / km, messy passengers, complaints below a cleanliness, premium passenger limits, dirt level, warning threshold. |
Config.Services | Account and reason for cleaning / maintenance payments. |
Config.Cleaning / Config.Maintenance | enabled, price, duration, stations (-- example), driver distance, scenario. |
Config.Upgrades | enabled, fuel saver interval. Levels and prices: data/upgrades.lua. |
Config.Fuel | 'auto', 'ox_fuel', 'LegacyFuel', 'cdn-fuel', 'ps-fuel', 'native', 'custom'. |
Config.VehicleKeys | 'auto', 'qbx_vehiclekeys', 'qb-vehiclekeys', 'none', 'custom'. |
Interaction, UI, keys
| Table | What it sets |
|---|---|
Config.Target | 'auto', 'ox_target', 'qb-target', 'none' (built-in prompt, key promptControl = E). |
Config.Blips | HQ, cab, pickup and destination blips. |
Config.Notifications | provider ('auto', 'ox_lib', 'qbox', 'qbcore', 'esx', 'native', 'custom'), duration, position. |
Config.Tablet | Tablet item, inventory ('auto', 'ox', 'framework', 'none'), deposit, shift / terminal rules, dispatcher NPC. |
Config.UI | Accent colour, dashboard command / key (taxi / F6), refresh, HUD scale, summary time, open while driving. |
Config.Keybinds | Accept / decline (Y / N), taximeter (G / U / O), dialogue answers (Y, N, J, K). Players can rebind them. |
Taximeter and street hail (0.13.0)
Config.Meter
| Key | Default | Effect |
|---|---|---|
defaults | classic, top, 1.0, sound on | Look for new players; each player picks their own on the tablet. |
displayTariff | true | Roleplay meter (no money, no XP) when nobody accepts a metered ride. |
extraAmount / maxExtras | 10 / 5 | Extra charge per press of Config.Keybinds.meterExtra (O). |
waitingSpeed | 1.5 | Below this speed (m/s) waiting time counts. |
payScreenSeconds | 10 | How long the PAY screen stays. |
Config.StreetHail: npc (waving NPCs), interval 120-300 s, maximum cab speed, distance,
waiting time; players (metered ride offer to a player in the back), consentSeconds,
playerFareCap (600).
Player rides, companies, fleet
| Table | What it sets |
|---|---|
Config.PlayerRides | Commands (taksicagir, taksiiptal, taksihedef), radial item, request lifetime, offers, destination list, accounts, fare caps, balance check, pairCooldown (anti farming with a second account), escrow, timeouts, rating card, maximum tip, note length. |
Config.Companies | License fee (25000), minimum level, maximum companies / members, name length, commission range, manager rights, invite time, refund on disband. |
Config.Fleet | Company cabs: maximum, sell factor, who pays services, grades for upgrades / services, unassigned cabs, level requirement, plate prefix. |
Locations, achievements, statistics
| Table | What it sets |
|---|---|
Config.Locations | useDefaults (also use data/locations.lua), file of recorded spots (data/locations.json), location tool view range and preview. |
Config.Achievements | Give rewards, money reward cap (5000), account, check on load. Definitions: data/achievements.lua. |
Config.Leaderboard | Period (7 days), size, minimum rated rides, cache. |
Config.Statistics | Earnings chart days, recent rides in the trip log, cache. |