Tech sheet
bnExhaust
Exhaust and sound effects
Changelog
08/2026
New sounds & presets
New preset “Hippy Pack”: a full set of backfires and turbo sounds, selectable in the vehicle settings menu. Localized in English and pt-BR.
Expanded PRESET_06 library: new dump valve, gear whine, limiter pop, mechanical coast, and exhaust pop samples, plus reworked waste gate sounds.
Sound files were reorganized to consistent names (EXHAUST_POP, LIMITER_POP, MECHANICAL_COAST). Saved vehicles keep working: built-in presets are now resolved by key, so renaming assets never leaves a car pointing at a missing file.
Per-preset volume trim: a preset can define its own volume multiplier, applied to every effect it plays.
Config.SoundPresets['preset_06'].volume = 0.8 -- 1.0 = unchanged Tablet UI overhaul
- New unified ModuleControl for the 2-Step, Valet, Pops, and Anti-Lag modules: one consistent control layout instead of four hand-rolled ones.
- New ModuleCard for cleaner app-module tiles on the Pop & Bang home screen.
- New IntensityMeter and Slider components for consistent sliders across the app; the old SliderField was removed.
- PopBangApp was rewritten on top of the new components, removing roughly 490 lines of duplicated UI code.
- Live clock in the tablet layout header.
- Centralized theme colors (
useThemeColors) so every panel pulls from the same palette. - Removed the deprecated LaunchOverlay and an unused dependency.
Mechanic panel
- Shortcut button to jump straight into the Pop & Bang panel from the mechanic menu.
- The active preset now shows its proper localized name for built-in
car_*presets. Custom presets show their raw name.
Fixes & internals
- Presets survive language changes: vehicles now save the preset key rather than the translated label, so presets keep working across languages and asset renames.
- Two duplicate
selected_soundsdecoders were consolidated into one sharedResolveSelectedSounds(). - Debug logging is now consistently gated behind
Config.Debug.
06/2026
Six new configuration keys were added across the shared config files. Existing installations require no migration. The fields are additive with safe defaults.
New configuration options
Vehicle & class blacklist (core.lua): block specific vehicle models or entire GTA vehicle classes from receiving parts. The class check runs client-side before the install progress bar starts, so blocked players get an instant rejection.
Config.VehicleBlacklist = {
-- 'bmx',
-- 'faggio',
}
-- 8 = Motorcycles 13 = Cycles 14 = Boats 15 = Helicopters 16 = Planes
Config.ClassBlacklist = {
8, -- Motorcycles
-- 14, -- Boats
} Both lists are also respected by /popbangall.
Modification history command (core.lua): opens the full modification log for the nearest vehicle via an ox_lib context menu. Each entry shows the action (install, remove, stage change, preset applied), who performed it, and when.
Config.HistoryCommand = 'popbanglog' -- false/'' to disable Per-player preset limit (core.lua): caps how many custom sound presets a player can save. The server rejects the save and the client is notified of the cap once reached.
Config.MaxPresetsPerPlayer = 10 -- 0 = unlimited Fuel resource bridge (core.lua): connects the stage stress FuelDrain multiplier to a real fuel resource.
-- Options: 'auto', 'native', 'LegacyFuel', 'qs-fuel', 'ox_fuel', 'ps-fuel', 'esx_fuel'
Config.FuelResource = 'auto' Gang permissions (permissions.lua): part install/removal now supports gang-based access (Qbox/QB only), independent from Jobs.
Config.Permissions = {
Jobs = {
['mechanic'] = 0,
},
Gangs = {
['ballas'] = 0,
}
} Redesigned screens
Mechanic panel (diagnostic): full visual overhaul. A summary bar shows Stage (dot indicators), installed part count, blocked count with a warning icon, and the active preset name, all without scrolling. Parts are grouped by category with collapsible rows, per-row lock icons, and colored status dots. A new History button opens the modification log directly from the panel; the footer shows connection status, total parts, and script version.
Sound configuration: redesigned under “Playback · Presets · Intensity”. The Effect Intensity slider shows the live value (e.g. 1.5x) with labelled anchors (0.1 - Soft, 1.0 - Default, Extreme - 2.0). The RPM Overlay toggle sits inline below it. Sound packs render as a card grid, with the active preset highlighted and marked ✓ Active.
Bug fixes
ClassBlacklistblocking every vehicle:GetVehicleClasscalled server-side returned incorrect values, making every vehicle look blacklisted. Fixed by passing the class from the client, where the native works correctly.Config.AdminJobsundefined:IsAdmin()referenced a key missing from every config file. Now defined inshared/config/core.luawith commented examples.installAllPartswithout await: the databaseINSERTwas fire-and-forget. Converted toMySQL.query.awaitwith result verification before notifying the admin.removeTuningPartwithout anti-spam: the removal event had no duplicate lock like the install event. Added apendingRemovestable mirroringpendingInstalls.- Intensity multiplier applied twice:
effect_intensitywas applied both in the pop logic and in the playback chain. Now applied once, before the effects chain.