NullSect
Systems nominal

Docs / Vehicle Handling / Changelog

Changelog

1.2.0

Added

  • Drive layout and suspension geometry: fDriveBiasFront (0 = rear-wheel drive, 1 = front-wheel drive, in between = all-wheel drive), fSuspensionUpperLimit, fSuspensionLowerLimit, fRollCentreHeightFront, fRollCentreHeightRear, fCamberStiffnesss (40 fields in total). They need Apply & refresh.
  • handling.meta export / import: Export shows the editor values as handling.meta lines with a Copy button. Import takes a whole handling.meta, one vehicle's <Item> or single lines; values out of range are skipped and listed, lines the editor does not have are counted and ignored. Imported values are only stored on Save (the server validates them again).
  • Field search at the top of the category list (Ctrl+F): names, field ids, descriptions and categories. Esc in the search box clears it.
  • Test drive measurements: while the panel is hidden for a test drive, a strip shows the speed, top speed, 0-100 km/h time and 100-0 km/h braking distance (last and best). The best values stay in the footer when you return, so profiles can be compared. Config.TestDrive (telemetry, unit = 'kmh' | 'mph').

Changed

  • New editor look in the NullSect theme: black panel, warm text, orange accent, NullSect mark in the header. Serif titles, numbers and labels in a monospace face, rounded buttons with the orange Save button as the main action. Fonts are bundled in nui/fonts/ (Geist, Instrument Serif, JetBrains Mono, SIL OFL); no internet access needed.
  • Field descriptions and docs now give the right units: the handling natives use handling.meta units (steering lock in degrees, top speed in km/h, 0.5 = balanced bias). Earlier texts said radians, m/s and "1.0 = balanced".
  • Turkish title is "Araç Handling" (was all caps).

Fixed

  • Default profiles captured before a field was enabled (new version or Config.AllowedFields) had no original value for it: the editor showed - and the field could not be reset. Such a Default is now completed from the vehicle the next time an admin opens the editor on that model; stored values are kept.

Upgrade notes

  • Keeping your old config.lua? Add the six new field ids to Config.AllowedFields (see INSTALLATION.md). Config.TestDrive is optional. No database change.

1.1.4

Changed

  • Release defaults: Config.Locale is 'en' and Config.Debug is false (1.1.3 shipped with Turkish and debug output on; the documentation already listed these defaults).

Fixed

  • An editor action that was still waiting for the server when the editor closed (e.g. the admin left the vehicle) was logged as an internal error; it now ends quietly.
  • Installation docs: neutral wording for getting the resource on Tebex.

1.1.3

Security

  • Admin check: on servers where the ACE check answers 1 / 0 instead of true / false, every player was treated as an admin (0 counts as yes in Lua) and could open the handling editor and manage profiles. The ACE permission (Config.Permissions.ace) and the group.* checks now accept only true or 1.

Development

  • Offline test for the 1 / 0 ACE answer.
  • ARCHITECTURE.md: profiles, applying handling (state bag + GlobalState), request contract, data ownership.
  • Offline tests (lua5.4 tests/run_tests.lua): field validation, sanitising, router gates, editor and profile lifecycle (version conflict, history / restore, activate, delete rules), public actions. Not shipped.

1.1.2

Added

  • /vhcompare debug command (admin, Config.Debug): compares the handling and effective values of two vehicles of the same model.

Changed

  • Activating a profile now always applies it to every spawned vehicle of that model (including the vehicle being edited). The "also apply to vehicles that are already spawned" checkbox and Config.AutoApply.applyExistingOnActivate were removed (the option can be deleted from config.lua).

Fixed

  • Newly spawned vehicles often did not fully use the active profile (e.g. a 1-gear profile spawned with 6 gears; other spawn-cached values differed from Apply & refresh): it was written after the vehicle had been created and its mods applied. The active profile is now written into the model's global handling on every client (GlobalState), so vehicles are created with it. New Config.HandlingNames for add-ons whose handlingId differs from the model name.
  • Vehicles spawned without a mod kit (e.g. /car) drove differently from the same vehicle after Apply & refresh. The mod kit is now set before the profile is applied, like Apply & refresh does.
  • After activating a profile and closing the editor, the vehicle sometimes reverted to Default or to the previously applied profile instead of the new active one.
  • The editor previewed the active profile on vehicles that were explicitly stock; it now shows Default as the applied profile for them.
  • The driver fallback (claim) was skipped for vehicles that reused the network id of an earlier vehicle, and was never retried after a timeout / rate limit, so such vehicles could spawn with Default handling.
  • Profile / default value fetches could be rate limited when several vehicles streamed in at once, leaving those vehicles unsynced.

1.1.1

Fixed

  • Active profile was not applied to newly spawned vehicles with some spawn methods (server-created vehicles / entities whose type was not replicated yet when entityCreated fired). The server now retries briefly, and the driver's client asks once for the active profile as a fallback.
  • Profile is applied a second time shortly after spawn, so garages that set vehicle properties right after spawning cannot undo it.

Changed

  • Activating a profile without "apply to existing vehicles" now marks already spawned, untouched vehicles of that model as stock, so only new spawns get the profile.

1.1.0

Added

  • Help page in the editor: short tuning tips (acceleration, top speed, grip, brakes, drift, durability). Each tip links to the fields it mentions.

Fixed

  • Activating a profile failed with "Database error" on oxmysql (TINYINT(1) values are returned as booleans).

1.0.0

Added

  • In-game handling editor (/vh, /vehiclehandling) for admins
  • 34 handling fields in 9 categories with live preview and refresh detection
  • Profiles per model: new, edit, rename, clone, activate, delete, reset
  • Read-only Default profile with the original handling
  • Version history with restore
  • Automatic apply of the active profile on spawn and after restarts
  • Apply & refresh (respawn that keeps customization)
  • English and Turkish

Cart

Your cart is empty.