Skip to content

Installation

Requirements#

ResourceRequiredNotes
ox_libYesKey hint UI, notifications and progress bars
pma-voiceYesAny mumble based voice script works, pma-voice is the tested one
qb-target or ox_targetOptionalUsed for the placed gas tank. Without a target script a key based fallback is used
FrameworkYesQBCore, QBox or ESX. Detected automatically
InventoryYesox_inventory, qb-inventory and all qb forks, qs, codem, tgiann, core, origen. Detected automatically

Step 1 - Add the resource#

Drag the frkn-helium folder into your resources directory, for example:

text
resources/frkn-helium

Step 2 - Start the resource#

Add this to your server.cfg, after ox_lib and your voice script:

cfg
ensure ox_lib
ensure pma-voice
ensure frkn-helium

If your resources folder is already started as a group, for example ensure [qb], you do not need a separate line.

Step 3 - Add the items#

Three items: one balloon per gas plus a single tank that serves them all. Helium pitches the voice up, sulfur hexafluoride pitches it down.

ItemWhat it is
helium_balloonBalloon for helium, squeaky voice
sf6_balloonBalloon for sulfur hexafluoride, deep voice
helium_tankThe gas tank. Placed on the ground, it refills whichever balloon a player is holding

QBCore - qb-core/shared/items.lua

lua
helium_balloon = { name = 'helium_balloon', label = 'Helium Balloon', weight = 100, type = 'item', image = 'helium_balloon.png', unique = true, useable = true, shouldClose = true, description = 'A balloon filled with helium. Makes your voice squeaky.' },
sf6_balloon    = { name = 'sf6_balloon', label = 'SF6 Balloon', weight = 100, type = 'item', image = 'sf6_balloon.png', unique = true, useable = true, shouldClose = true, description = 'A balloon filled with sulfur hexafluoride. Makes your voice deep.' },
helium_tank    = { name = 'helium_tank', label = 'Gas Tank', weight = 4000, type = 'item', image = 'gas_tank.png', unique = true, useable = true, shouldClose = true, description = 'An industrial gas tank. Place it down and let people refill their balloons.' },

ox_inventory - ox_inventory/data/items.lua

lua
['helium_balloon'] = {
    label = 'Helium Balloon',
    weight = 100,
    stack = false,
    close = true,
    description = 'A balloon filled with helium. Makes your voice squeaky.'
},
['sf6_balloon'] = {
    label = 'SF6 Balloon',
    weight = 100,
    stack = false,
    close = true,
    description = 'A balloon filled with sulfur hexafluoride. Makes your voice deep.'
},
['helium_tank'] = {
    label = 'Gas Tank',
    weight = 4000,
    stack = false,
    close = true,
    description = 'An industrial gas tank.'
},

ESX with a database item table

sql
INSERT INTO items (name, label, weight) VALUES
('helium_balloon', 'Helium Balloon', 1),
('sf6_balloon', 'SF6 Balloon', 1),
('helium_tank', 'Gas Tank', 4);

Every one of them must be unique / stack = false. Each balloon and tank carries its own gas amount in metadata, stacking them would merge different gas levels into one item.

The tank item is called helium_tank by default, rename it in Tank.item in shared/config.lua if you prefer something like gas_tank.

Only want helium? Delete the sf6 line from Gases in shared/config.lua and skip that item. Want a third gas? Add a line with a unique id and create one balloon item for it, the tank already covers it.

Step 4 - Copy the item images#

Three images ship with the resource in the itemimages folder: helium_balloon.png, sf6_balloon.png and gas_tank.png. Copy them into your inventory:

InventoryTarget folder
ox_inventoryox_inventory/web/images
qb-inventoryqb-inventory/html/images
qs-inventoryqs-inventory/html/images

Step 5 - Set your language#

Open shared/config.lua:

lua
Language = "en",

Available out of the box: ar, de, en, es, fr, it, pt, ru, tr.

Installation is done. Give yourself a balloon and a tank, then read the Features page to learn the controls.

The microphone permission#

The voice effect pitch shifts the player's real microphone, so FiveM asks each player once to allow microphone access (F8 → Allow, remembered per server). Nothing has to be installed.

By default a balloon can only be used after that permission was given (Voice.requireMic = true in shared/config.lua), which guarantees everyone is heard with the real pitch shift. Using a balloon without permission opens the prompt and retries automatically once allowed.

The Voice System page explains how it works and how to relax or disable it.

Troubleshooting#

ProblemFix
Using an item does nothingMake sure the item exists in your inventory config with useable = true, and that you ran refresh after adding the resource
No key hint box appears when using a balloonox_lib is not started, or it is started after frkn-helium
Placed tanks disappear after a restartThat is intended, placed tanks are not saved. Players pick them back up with the take option
The fallback voice effect does nothingsetr voice_useNativeAudio true is missing from server.cfg
Balloon prop is invisibleThe stream folder is missing or was not copied, the balloon and tank models are streamed by the resource
Texts show as raw keys like hud_inhaleLanguage is set to a code with no file in the locales folder

⚠️ Upgrading from an older version?#

Older versions required native audio. This is no longer needed — remove the line below from your server.cfg:

lua
setr voice_useNativeAudio true

Leaving it enabled can cause choppy audio and voices sounding distant or coming from the wrong direction — not just for this script, but for all voice chat on your server.

A full server restart is required after removing it (a resource restart is not enough).