🎈 Poggy's Balloon: The Hot Air Balloon System RedM Deserves [VORP/QBCORE/RSG]

:balloon: Poggy’s Balloon — The Hot Air Balloon System RedM Deserves


:oncoming_taxi: NPC-Piloted Taxi Service

Set a waypoint anywhere on the map. Walk up to one of eight balloon stations scattered across the frontier. Talk to the operator. Climb aboard. Press B when you’re ready.

Then sit back and watch the world drift by beneath you.

Your AI pilot handles everything — smooth ascents, cruising altitude, terrain avoidance around mountains, and a gentle descent right to your destination. You’re not wrestling with controls. You’re a passenger. You’re enjoying the view. You’re immersed.

:videocassette: Terrain Avoidance Preview

:airplane: In-Flight Controls

Key Action
Q Request early stop (land at current position)
R Change destination (reroute to new waypoint)
A “Step on it!” (toggle speed boost — 26 m/s → 42 m/s)
C Change seat (cycle through seats 0-3)
F Disembark safely

:ticket: Balloon Rental System

Sometimes you don’t want a chauffeur. You want the stick.

The rental system lets players grab a balloon for a full hour and take it anywhere. Timer warnings keep them informed. The balloon is theirs until time runs out.

Same stations. Same operators. Different experience.


:sparkles: Animations That Actually Work

This was the part that bothered us most about existing balloon scripts. Passengers T-posing. Captains frozen in place. It broke the illusion.

For Captains: A realistic burner-pull animation with visible rope. You’re not just pressing buttons — you’re flying this thing.

For Passengers: Proper sitting animations in designated basket positions. Up to four players can ride together without anyone clipping through the floor or launching themselves into the stratosphere.

For AI Pilots: Idle burner animations during taxi flights. They look like they’re doing their job because, visually, they are.

:shield: An invisible safety floor prevents ragdolling inside the basket. Server-side synchronization means everyone sees the same thing. No desync. No weirdness.


:video_game: Intuitive Flight Controls

https://youtu.be/PczB2GiYVwY

Camera-relative movement makes flying intuitive. You push forward, the balloon goes forward relative to where you’re looking.

Control Action
W/S Move forward/backward
A/D Move left/right
Space Ascend
F Boost (increase speed)
R Brake (slow down)
Space Toggle altitude lock

Altitude lock lets you hold a steady height for horizontal navigation. Boost and brake give you fine speed control when you need it. The prompt system keeps new players informed without cluttering the screen for veterans.


:world_map: Eight Locations Across the Map

Location Rental Available
:strawberry: Strawberry :white_check_mark:
:rose: Rhodes :white_check_mark:
:heart_with_arrow: Valentine :white_check_mark:
:pick: Annesburg :white_check_mark:
:cityscape: Saint Denis :white_check_mark:
:ocean: Blackwater :white_check_mark:
:cactus: Armadillo :white_check_mark:
:desert: Tumbleweed :white_check_mark:

:globe_with_meridians: Multi-Language Support

  • :united_kingdom: English
  • :france: French
  • :spain: Spanish
  • :germany: German

Adding more languages takes minutes in a single config file.


:gear: Fully Configurable

Config.BalloonTaxi = {
    Enabled = true,
    Price = 3,                    -- Cost for taxi ride
    CruisingAltitude = 80.0,      -- Flight altitude in meters
    TravelSpeed = 26.0,           -- Normal speed (m/s)
    TravelSpeedFast = 38.0,       -- "Step on it" speed (m/s)
    -- ... more settings
}

Config.BalloonRental = {
    Enabled = true,
    Price = 50,                   -- Rental cost
    RentalDuration = 3600000,     -- 1 hour in milliseconds
    WarningTime = 300000,         -- 5 minute warning
}

:package: What’s Included

  • :white_check_mark: NPC-piloted taxi service with intelligent pathfinding
  • :white_check_mark: Player-controlled rental system with timer warnings
  • :white_check_mark: Complete captain and passenger animation systems
  • :white_check_mark: Four-player basket capacity with synced positions
  • :white_check_mark: Eight pre-configured balloon stations
  • :white_check_mark: Four languages with easy expansion
  • :white_check_mark: VORP menu and economy integration
  • :white_check_mark: Terrain avoidance and smooth flight physics
  • :white_check_mark: Full documentation and debug tools

:hammer_and_wrench: Installation

  1. Extract the poggy-balloon folder into your server’s resources directory
  2. Add ensure poggy-balloon to your server.cfg (after VORP dependencies)
  3. Configure settings in config.lua
  4. Set your preferred language in translations.lua
  5. Restart your server

:bug: Debug Commands

Command Description
/balloon_debug_main [level|toggle|status] Main module debug
/balloon_debug_anim [level|toggle] Animation module debug
/balloon_debug_ctrl [level|toggle] Controls module debug
/balloon_server_status View balloon occupancy (admin)
/balloon_debug_ride Show current taxi ride state

Debug levels: 0 (OFF) → 4 (DEBUG), default 3 (INFO)


:shopping_cart: Purchase

Get Poggy’s Balloon
Get The FREE Poggy’s Balloon Controller Only


MY OTHER SCRIPTS

:star: ALL ACCESS — every script, one subscription — $12.99/mo (over $300 of scripts)

Browse everything at poggy.app/store


Code is accessible Yes
Subscription-based No
Lines (approximately) ~2500
Requirements vorp_core, vorp_menu, uiprompt
Support Yes
5 Likes

Hello, thank you for sharing.
Does the script provide a location on the map where the balloon can be used or a command to spawn it?

No, that would be handled by another script, like a stable script where you buy the balloon as a “wagon” option. This script merely provides a control schema and system for passengers. I could add in a command if you wanted to spawn in a balloon, however. Reference also the original inspiration for this called “balloon crap”.

Adding the command back to your balloon.lua should enable you to spawn one with the balloon command.

image

Looks like you have it coded so that balloon-crap becomes a dependency for the exports

You’re right! This export failure is a result of me still using the original folder on my test server.

To fix this, there are four instances of “balloon-crap” that need to be changed to “poggy-balloon”.

In balloon_controls.lua change line 94, and 130

And in balloonanimations.lua change line 134, and 230.

I’ll publish an update soon.

Alternatively you could rename the folder to “balloon-crap”, and change the ensure in your server config.

Another option is use GetCurrentResourceName() in place of balloon-crap, which will get the current folder name, and is more reliable if you ever change the name of the folder.