Config file
Config = {}
-- Base locale used for UI texts and notifications.
Config.Locale = 'en' -- da/en
-- Command/Keybind configuration for opening the tuner.
Config.Command = {
enabled = true,
name = 'kexhaust',
defaultKey = 'F7',
allowKeyMapping = true
}
-- Default exhaust state applied when nothing has been saved yet.
Config.DefaultState = {
valveMode = 'auto',
autoStrategy = 'rpm',
tone = 50,
volume = 70,
burble = 30,
crackle = 20,
idle = 40
}
-- Safety limits to prevent abuse – all slider values are clamped to these ranges.
Config.Limits = {
tone = { min = 0, max = 100 },
volume = { min = 0, max = 100, cap = 85 },
burble = { min = 0, max = 100, cap = 75 },
crackle = { min = 0, max = 100, cap = 65 },
idle = { min = 0, max = 100, cap = 80 }
}
local function buildBackfireSampleList(prefix, count)
local list = {}
for index = 1, count do
list[index] = ('assets/audio/%s %d.ogg'):format(prefix, index)
end
return list
end
local BackfireSamplePaths = {
pop = buildBackfireSampleList('pop', 5),
limiter = buildBackfireSampleList('limiter pop', 6)
}
-- Valve modes & auto strategies – values are kept language agnostic while labels live in locales.
Config.ValveModes = {
order = { 'auto', 'open', 'closed' },
labels = {
auto = { da = 'Auto', en = 'Auto' },
open = { da = 'Åben', en = 'Open' },
closed = { da = 'Lukket', en = 'Closed' }
}
}
Config.AutoStrategies = {
order = { 'rpm', 'speed', 'timed' },
labels = {
rpm = { da = 'Auto (Omdr./Belastning)', en = 'Auto (RPM/Load)' },
speed = { da = 'Auto (Hastighed)', en = 'Auto (Speed)' },
timed = { da = 'Auto (Tidsbaseret)', en = 'Auto (Timer)' }
}
}
-- Presets available inside the UI. Values follow the slider scale (0-100).
Config.Presets = {
order = { 'quiet', 'sport', 'track', 'show' },
defaultPrimary = 'sport',
labels = {
quiet = { da = 'Stille', en = 'Quiet' },
sport = { da = 'Sport', en = 'Sport' },
track = { da = 'Bane', en = 'Track' },
show = { da = 'Show', en = 'Show' }
},
data = {
quiet = { tone = 40, volume = 35, burble = 5, crackle = 0, idle = 25 },
sport = { tone = 55, volume = 70, burble = 30, crackle = 20, idle = 40 },
track = { tone = 45, volume = 85, burble = 55, crackle = 40, idle = 55 },
show = { tone = 65, volume = 85, burble = 75, crackle = 65, idle = 60 }
}
}
-- Maps tone levels to existing GTA sound sets.
Config.AudioProfiles = {
{ maxTone = 25, sound = 'dominator' },
{ maxTone = 50, sound = 'sultanrs' },
{ maxTone = 75, sound = 'comet' },
{ maxTone = 100, sound = 'italigtb' }
}
-- Vehicle specific presets applied automatically when a supported model is driven for the first time.
-- Focuses on Los Santos Tuners vehicles with a more aggressive burble/crackle mix and louder output.
Config.VehicleProfileOverrides = {
calico = { tone = 60, volume = 83, burble = 58, crackle = 46, idle = 42 },
comet6 = { tone = 75, volume = 84, burble = 60, crackle = 50, idle = 45 },
cypher = { tone = 66, volume = 82, burble = 57, crackle = 46, idle = 42 },
dominator7 = { tone = 70, volume = 85, burble = 70, crackle = 60, idle = 48 },
euros = { tone = 65, volume = 82, burble = 58, crackle = 45, idle = 43 },
futo2 = { tone = 52, volume = 76, burble = 54, crackle = 44, idle = 37 },
growler = { tone = 73, volume = 83, burble = 63, crackle = 52, idle = 46 },
jester4 = { tone = 68, volume = 82, burble = 62, crackle = 48, idle = 45 },
previon = { tone = 62, volume = 79, burble = 52, crackle = 42, idle = 41 },
remus = { tone = 58, volume = 80, burble = 60, crackle = 50, idle = 40 },
rt3000 = { tone = 55, volume = 78, burble = 55, crackle = 40, idle = 38 },
sultanrs = { tone = 60, volume = 84, burble = 68, crackle = 56, idle = 44 },
sultan3 = { tone = 57, volume = 81, burble = 61, crackle = 50, idle = 44 },
tailgater2 = { tone = 50, volume = 77, burble = 48, crackle = 38, idle = 36 },
vectre = { tone = 63, volume = 80, burble = 56, crackle = 44, idle = 40 },
warrener2 = { tone = 48, volume = 78, burble = 60, crackle = 52, idle = 38 },
zr350 = { tone = 72, volume = 84, burble = 64, crackle = 52, idle = 47 }
}
-- Audio multipliers for subtle variation. Values are intentionally conservative.
Config.AudioTuning = {
volumePressure = { min = 0.05, max = 0.65 },
idleRpm = { min = 0.25, max = 0.6 },
burbleTurbo = { min = 0.0, max = 0.9 },
crackleIntensity = { min = 0.0, max = 0.85 }
}
-- Backfire pop sound configuration. Each vehicle uses the sound set defined below when
-- burble/crackle values are high enough. Add/remove models or change file paths here
-- if the supplied samples don't fit your server's balance.
Config.BackfireAudio = {
enabled = true,
-- When true, the resource mutes GTA's built-in backfire pops and replaces them with
-- the provided NUI samples instead. Disable this if you prefer the vanilla sound.
replaceGamePopAudio = true,
-- Audio flag used to silence the default pop effect. Different mods may want to
-- customise this value if they rely on other audio tweaks.
replaceAudioFlag = 'DisableVehicleEnginePopSound',
-- Optional fallback set if a vehicle isn't explicitly listed below.
defaultSet = nil,
-- Detection tuning
tickInterval = 140, -- ms between detection checks
minSpeedMph = 15.0, -- ignore pops while rolling slowly
minRpm = 0.35,
limiterRpm = 0.88,
throttleActiveThreshold = 0.42,
throttleReleaseThreshold = 0.18,
rpmDrop = 0.12,
burbleThreshold = 35,
crackleThreshold = 30,
-- Behaviour tuning
popChance = 0.78,
limiterChance = 0.54,
popCooldown = { min = 220, max = 360 },
limiterCooldown = { min = 360, max = 540 },
-- Audio levels
baseVolume = 0.35,
limiterVolume = 0.45,
burbleVolumeScale = 0.25,
crackleVolumeScale = 0.18,
-- Sound sets (paths are relative to the resource root)
sets = {
tuner = {
pop = BackfireSamplePaths.pop,
limiter = BackfireSamplePaths.limiter
}
},
-- Vehicles (by model name) mapped to the sound set above.
vehicleSets = {
calico = 'tuner',
comet6 = 'tuner',
cypher = 'tuner',
dominator7 = 'tuner',
euros = 'tuner',
futo2 = 'tuner',
growler = 'tuner',
jester4 = 'tuner',
previon = 'tuner',
remus = 'tuner',
rt3000 = 'tuner',
sultan3 = 'tuner',
sultanrs = 'tuner',
tailgater2 = 'tuner',
vectre = 'tuner',
warrener2 = 'tuner',
zr350 = 'tuner'
}
}
-- Automatically reapply the player's saved profile when they enter a new vehicle as the driver.
Config.AutoApplySavedProfile = true
-- Interval (ms) for pruning stale vehicle states server-side. Set to 0 to disable.
Config.StateCleanupInterval = 60000
-- Locale strings – add further languages by following the same structure.
Config.Locales = {
da = {
ui = {
headerPath = 'Klobow Audio • Exhaust Module',
title = 'K-Exhaust Tuner',
labels = {
valveMode = 'Ventiltilstand',
autoStrategy = 'Auto strategi',
tone = 'Tone (mørk → lys)',
volume = 'Udstødningsvolumen',
burble = 'Burble intensitet',
crackle = 'Crackle længde',
idle = 'Tomgangs lydstyrke'
},
help = {
tone = 'Changer "klang"/fremtoning. 0% = dyb/boomy • 100% = lys/raspy',
burble = 'Off-throttle & decel pops',
crackle = 'Hvor længe efter gas-slip'
},
buttons = {
save = 'Gem profil',
apply = 'Anvend'
},
toasts = {
profileSaved = 'Profil gemt',
applied = 'Indstillinger anvendt',
trimmed = 'Nogle værdier blev justeret af sikkerhedssystemet'
}
},
notifications = {
noVehicle = 'Du skal være i et køretøj for at bruge tuneren.',
driverOnly = 'Du skal sidde på førersædet.',
applied = 'Udstødningsprofilen er aktiveret.',
profileSaved = 'Din udstødningsprofil er gemt server-side.',
valuesTrimmed = 'Følgende værdier blev sænket: {fields}'
},
command = {
description = 'Åbn Klobow Exhaust tuneren'
}
},
en = {
ui = {
headerPath = 'Klobow Audio • Exhaust Module',
title = 'K-Exhaust Tuner',
labels = {
valveMode = 'Valve mode',
autoStrategy = 'Auto strategy',
tone = 'Tone (dark → bright)',
volume = 'Exhaust volume',
burble = 'Burble intensity',
crackle = 'Crackle length',
idle = 'Idle loudness'
},
help = {
tone = 'Changes the colour/character of the sound. 0% = deep/boomy • 100% = bright/raspy',
burble = 'Off-throttle & deceleration pops',
crackle = 'How long the crackle continues after throttle lift'
},
buttons = {
save = 'Save profile',
apply = 'Apply'
},
toasts = {
profileSaved = 'Profile saved',
applied = 'Settings applied',
trimmed = 'Some values were reduced by the safety system'
}
},
notifications = {
noVehicle = 'You need to be in a vehicle to use the tuner.',
driverOnly = 'You need to be in the driver seat.',
applied = 'Exhaust profile activated.',
profileSaved = 'Your exhaust profile has been saved server-side.',
valuesTrimmed = 'The following values were lowered: {fields}'
},
command = {
description = 'Open the Klobow Exhaust tuner'
}
}
}Last updated