Configuration
All of lo_balloon's configuration lives in config.lua (a shared script). This file is escrow-ignored, so you can edit it freely. This page covers the main options.
Main options
| Option | Type | Default | Description |
|---|---|---|---|
Config.Lang | string | "fr" | Active language. Values: en, fr, pt_br, de, ru. |
Config.Command | string | "balloon" | Staff command to spawn a balloon for free. |
Config.Model | table | { "hotairballoon01", ... } | Recognized balloon models (the first is used for spawning). |
Config.DummyObject | string | "p_ambfloorscrub01x" | Invisible object used to stabilize network sync. |
Config.SpawnOffset | number | 5.0 | Spawn offset. |
Config.SpeedBase | number | 0.05 | Base movement speed. |
Config.SpeedSprint | number | 0.15 | Sprint speed. |
Config.ControlTickMs | number | 25 | Control loop interval (ms). |
Config.AutoEnterAsDriver | bool | false | Automatically enter as the driver. |
Config.MaxPassengers | number | 3 | Maximum number of passengers. |
Config.BoardingRange | number | 4.0 | Boarding range (m). |
Config.BoardingKey | string | "INPUT_LOOK_BEHIND" | Boarding key (C by default on PC). |
Config.RentalSpawnClearRadius | number | 5.0 | Radius (m) preventing a 2nd spawn at the same spot. |
Config.ShowPrompts | bool | true | Shows the help prompts in the bottom-right. |
Piloting
Piloting relies on two speeds and a set of visual options.
Config.SpeedBase = 0.05 -- normal movement speed
Config.SpeedSprint = 0.15 -- speed while holding the sprint key
Config.PilotAnimation = true -- pilot animation (chain)
Config.PilotRope = true -- rope linking the pilot
Config.RopeLength = 0.7
Config.SyncRope = true -- syncs the rope for other playersPiloting keys are defined in Config.Inputs:
| Action | Control | Default value |
|---|---|---|
| Forward | Forward | INPUT_VEH_MOVE_UP_ONLY |
| Backward | Backward | INPUT_VEH_MOVE_DOWN_ONLY |
| Left | Left | INPUT_VEH_MOVE_LEFT_ONLY |
| Right | Right | INPUT_VEH_MOVE_RIGHT_ONLY |
| Ascend (chain) | Throttle | INPUT_VEH_FLY_THROTTLE_UP |
| Slow down | Brake | INPUT_CONTEXT_X |
| Lock altitude | LockAltitude | INPUT_CONTEXT_A |
| Sprint | Sprint | INPUT_VEH_TRAVERSAL |
| Orbit camera | Camera | INPUT_VEH_HEADLIGHT |
Orbit camera (optional)
The orbit camera is not forced: the player keeps the game's default camera (and can go first-person). They switch to the distant camera only when pressing the camera key.
Config.PilotCam = true
Config.PilotCamOffset = { x = 0.0, y = -8.0, z = 4.0 } -- (behind, above)TIP
If the camera key icon (INPUT_VEH_HEADLIGHT) doesn't suit you, remap Config.Inputs.Camera to another control.
Passengers
A balloon holds up to Config.MaxPassengers passengers. Boarding is done with the Config.BoardingKey key when the player is within Config.BoardingRange meters. Placement positions are defined by the offsets below.
Config.MaxPassengers = 3
Config.BoardingRange = 4.0
Config.BoardingKey = "INPUT_LOOK_BEHIND" -- C by default on PC
Config.PassengerOffsets = {
{x = 0.55, y = -0.45, z = 0.5},
{x = -0.55, y = -0.45, z = 0.5},
{x = 0.00, y = 0.45, z = 0.5},
}NOTE
Provide as many offsets as MaxPassengers so each passenger has a placement position.
Rental points (Config.Rentals)
Config.Rentals is a list of rental points. Each entry describes:
| Key | Description |
|---|---|
npc.model | Renter NPC model. |
npc.coords | vec4(x, y, z, heading) — NPC position and heading. |
spawn | vec3(x, y, z) — where the balloon appears on rent. |
price | Cash price to pay. |
range | 3D radius (m) around the NPC to rent/return the balloon. |
Example (Strawberry point):
Config.Rentals = {
{ -- strawberry
npc = {
model = "A_M_M_UniBoatCrew_01",
coords = vec4(-1831.70, -596.88, 154.55, 287.23),
},
spawn = vec3(-1821.89, -599.09, 154.71),
price = 15,
range = 2.0,
},
-- Add more rental points here:
-- {
-- npc = { model = "...", coords = vec4(x, y, z, h) },
-- spawn = vec3(x, y, z),
-- price = 50,
-- range = 2.5,
-- },
}By default the resource ships with 6 rental points (Strawberry, Annesburg, Armadillo, the north, etc.), all priced at 15 with a range of 2.0.
TIP
A range of 2.0 to 4.0 is usually ideal: wide enough to stay lenient on uneven terrain, but not so wide as to cause accidental triggers.
A map blip can be shown for each point:
Config.RentalBlip = {
sprite = -1595467349,
scale = 0.2,
}
-- Set Config.RentalBlip = nil to disable blips.Languages
The active language is set by Config.Lang. Translations live in Config.Translations, which includes by default:
| Code | Language |
|---|---|
en | English |
fr | French |
pt_br | Portuguese (Brazil) |
de | German |
ru | Russian |
Config.Lang = "fr"To add a language, create a new entry in Config.Translations using the same keys (Title, Rent, Return, Board, etc.), then set Config.Lang to its code.
Tips
- Staff command —
Config.Command(default"balloon") is reserved for theadminandmodogroups and allows a free spawn for testing. Rename it or keep it staff-only. - Anti-overlap —
Config.RentalSpawnClearRadiusprevents a second balloon from appearing on top of one already occupying the spawn point. - Models — The first model in
Config.Modelis used for spawning; the others are used to recognize balloons already present. - Version check —
Config.VersionCheckcompares the local version with the GitHub repo at startup. Setenabledtofalseto disable it.