NullSect
Systems nominal

Scripts / systems · v0.1.4

RCS Thrusters

Reaction-control thrusters for cars: hop, roll, flip, fly, boost and drive on walls.

  • Qbox
  • QBCore
  • ESX
$14.99

Features

  1. 01

    One key, five moves

    Tap Q to hop, two or three taps to roll, four for a front flip, five to arm suction, hold to fly.

  2. 02

    Flies like a hovercraft

    The car holds its altitude, Space climbs and W A S D steer it with a little bank. Let go to drop.

  3. 03

    Boost and stabiliser

    E boosts on two rear jets up to 360 km/h. Airborne cars turn upright and landing assist catches hard falls.

  4. 04

    Drive on walls

    Suction sticks the car to walls and ceilings. On a flat road it drives as normal.

  5. 05

    Fair and synced

    A propellant tank refills on all four wheels, and everyone nearby sees the jets and hears the hiss.

Requirements

Frameworks
Qbox, QBCore, ESX
Requires
OneSync
Works with
ox_lib
Version
0.1.4

Recent changes

Read the docs →

0.1.4

  • Lower client cost while driving an RCS car normally (resmon went up to ~0.30 ms on entering the car): a frame on the road with no jets, suction, boost or pending key press and a full tank now only checks whether the car left the ground. The physics frame (matrix, velocity, spin estimate, HUD) runs again as soon as something happens. The seat check runs every 250 ms instead of every frame while idle.
  • Suction no longer casts a synchronous ray every frame: its surface ray runs asynchronously and the newest answer (one frame old) is used. Attaching to a surface takes one frame longer.
  • Lower cost in flight, in the air and with suction: the vector maths uses vector3 (a value type in FiveM's Lua) instead of a new table per vector, which was ~8 KB of garbage per frame in flight. The HUD update builds its message only when something changed, and the seat check runs every 100 ms instead of every frame.
  • With the tank on, the gauge sent a NUI message on every 1 % change (up to 20 a second while refilling): a gauge-only change is now sent at most every 250 ms and the page animates the fill over that time. Mode, suction and boost changes and a full or empty tank are still sent at once.
  • Offline tests no longer fail when the local config.lua has an endless tank (Config.Propellant.enabled = false).

0.1.3

  • Release defaults: Config.Locale is 'en' and Config.Debug is false.
  • Docs: the default car list is { 'tesroad20', 'neon' }; neon (the game's Pfister Neon) works without an add-on, tesroad20 is a Tesla Roadster add-on that is not included.

0.1.2

  • Attached suction made the car undrivable (found in game): vehicle gravity is no longer switched off. On surfaces flatter than Config.Suction.floorAngle (35°) suction leaves the car to the game; on walls and ceilings it cancels gravity and pulls the car into the surface. New key: floorAngle.
  • A / D did not turn the car in flight when another resource disables steering in the air (vehiclehandler does): steering is now read with GetDisabledControlNormal.
  • In flight the jets point straight down (Config.Effects.flightTilt, 0). Boost (E) now has its own two jets out of the rear bumper pointing backward instead of the jets under the car (boostRotation, boostSpread, boostHeight). The state bag carries two new optional flags, f (flight) and b (boost).
  • The boost jets have their own particle (boostAsset, boostJet = ent_amb_steam, boostScale). With Config.Debug, /rcsjet tries rotation / scale / particle in game without a restart and /rcsjettest shows the boost particle on a parked car for 8 s.
  • The driver's own jets are no longer switched off by an older state bag value echoed back to it.

Related

Cart

Your cart is empty.