Configuration Reference
All configuration lives in config.lua, which is escrow_ignore-listed — you always have full access to it.
General
MBT.Debug = false
MBT.DedicatedBucket = 400
MBT.EnableStashes = true| Option | Type | Default | Description |
|---|---|---|---|
MBT.Debug | boolean | false | Prints debug messages to the console. Disable in production. |
MBT.DedicatedBucket | number | 400 | Routing bucket used to isolate the match from the main server. Change if it conflicts with another resource. |
MBT.EnableStashes | boolean | true | When true and ox_inventory is present, player inventories are stashed at match start and returned at the end. |
Match Timers & Rules
MBT.MinPlayer = { ["Active"] = true, ["Amount"] = 2 }
MBT.WaitPlayerTime = 10
MBT.EventDuration = 180
MBT.AreaDistance = 80
MBT.RepawnTime = 7
MBT.CaptureTime = 10
MBT.MaxKickAttempt = 5
MBT.UpdateVip = 3
MBT.UpdateFlagOwnerPosition = 10
MBT.PickupsRefresh = 15| Option | Type | Default | Description |
|---|---|---|---|
MBT.MinPlayer.Active | boolean | true | Enforce a minimum number of players before the match can start. |
MBT.MinPlayer.Amount | number | 2 | Minimum players required to start. |
MBT.WaitPlayerTime | number | 10 | Countdown in seconds before the match begins after player selection. |
MBT.EventDuration | number | 180 | Total match duration in minutes. |
MBT.AreaDistance | number | 80 | Radius in GTA units around GameArea that defines the playable zone. |
MBT.RepawnTime | number | 7 | Respawn delay in seconds after a player dies. |
MBT.CaptureTime | number | 10 | Time in seconds to capture the flag (progress bar duration). |
MBT.MaxKickAttempt | number | 5 | How many boundary violations before a player is kicked from the match. |
MBT.UpdateVip | number | 3 | How often (in seconds) the leaderboard score syncs to all players. |
MBT.UpdateFlagOwnerPosition | number | 10 | How often (in seconds) the flag-holder's blip position is broadcast. |
MBT.PickupsRefresh | number | 15 | How often (in seconds) weapon pickups respawn across the arena. |
Locations
MBT.Locations = {
["PreGameLocation"] = vector3(-1052.37, 4911.14, 210.35),
["GameArea"] = vector3(-1114.75, 4923.61, 202.05),
["StashLocation"] = vector3(-1058.85, 4915.94, 212.0),
["FirstFlag"] = vector3(-1165.240, 4925.880, 221.982),
["WinnerSpot"] = {
["Coords"] = vector3(-1169.88, 4926.89, 223.38),
["Heading"] = 89.23
},
}| Key | Purpose |
|---|---|
PreGameLocation | Where the NPC stands; players spawn here before and after a match. |
GameArea | Center of the arena; defines the boundary circle for MBT.AreaDistance. |
StashLocation | Marker where players can deposit/withdraw inventory items. |
FirstFlag | Where the flag spawns at match start. |
WinnerSpot | Camera/ped position for the winner celebration sequence. |
Spawn Points
MBT.SpawnPoints = {
vector4(...),
vector4(...),
-- add as many as you need
}Array of vector4 (x, y, z, heading) values. Players respawn at a random point from this list that is not occupied by another player.
Enemy NPCs
MBT.Enemies = {
["SpawnPoints"] = {
vector3(-1100.0, 4920.0, 202.0),
-- ...
},
["Models"] = { `a_m_m_hillbilly_02` },
["Max"] = 3,
}| Option | Type | Description |
|---|---|---|
SpawnPoints | vector3[] | Locations where enemy NPCs can appear. |
Models | model[] | Ped model hashes to choose from for each enemy. |
Max | number | Maximum enemies alive at the same time (refreshes every PickupsRefresh seconds). |
Allowed Weapons
MBT.AllowedWeapon = {
["4191993645"] = 1, -- Hatchet
["940833800"] = 1, -- Stone Hatchet
["1317494643"] = 1, -- Knife
["3756226112"] = 1, -- Switchblade
["419712736"] = 1, -- Wrench
["3713923289"] = 1, -- Machete
["2578778090"] = 1, -- Hammer
["2460120199"] = 1, -- Dagger
["2227010557"] = 1, -- Crowbar
["3441901897"] = 1, -- Battleaxe
["2725352035"] = 1, -- Unarmed
}Any weapon hash not in this table is blocked. A player dealing damage with a blocked weapon is automatically kicked from the match. Add or remove entries using GTA weapon hash values.
Weapon Pickups
MBT.PickupWeapons = {
"PICKUP_WEAPON_HAMMER",
"PICKUP_WEAPON_SWITCHBLADE",
-- ...
"PICKUP_HEALTH_STANDARD",
}Pickups from this list spawn randomly across MBT.SpawnPoints and refresh every MBT.PickupsRefresh seconds.
NPC (Lobby)
MBT.Ped = {
["PedHash"] = `csb_isldj_04`,
["Coords"] = vector3(-1055.05, 4915.59, 211.82),
["Heading"] = 185.87,
["Scenario"] = "WORLD_HUMAN_SMOKING",
}The stationary NPC that players interact with to start the match. Change PedHash and Coords to reposition or restyle the lobby attendant.
Blips
MBT.Blips = {
["FlagOwner"] = { ["Sprite"] = 84, ["Colour"] = 1, ["Scale"] = 1.0 },
["GameArea"] = { ["Colour"] = 1, ["Scale"] = 1.0 },
["Location"] = { ["Sprite"] = 419, ["Colour"] = 1, ["Scale"] = 1.0 },
}Configures the map blips shown during the match. FlagOwner follows the player holding the flag in real time.
Marker
MBT.Marker = {
["Type"] = 23,
["Coords"] = vector3(-1058.791, 4915.471, 210.838),
["Rot"] = { ["X"] = 0, ["Y"] = 0, ["Z"] = 0 },
["Scale"] = { ["X"] = 0.5, ["Y"] = 0.5, ["Z"] = 0.5 },
["Color"] = { ["R"] = 10, ["G"] = 255, ["B"] = 0, ["A"] = 100 },
}The ground marker drawn at the lobby/stash area. Type 23 is a small cylinder. Adjust Scale and Color as needed.
Rewards
MBT.Rewards = {
[1] = { ["Name"] = "money", ["Quantity"] = { ["Min"] = 500, ["Max"] = 1000 } },
[2] = { ["Name"] = "water", ["Quantity"] = { ["Min"] = 1, ["Max"] = 3 } },
[3] = { ["Name"] = "ouija", ["Quantity"] = { ["Min"] = 1, ["Max"] = 3 } },
}One entry is selected at random when the match ends. Name is either "money" (handled as framework cash) or an inventory item name. Quantity is randomised between Min and Max.
Camera Sequences
MBT.Camera = {
["Intro"] = { { pos = ..., rot = ..., fov = 60 }, { ... } },
["Winner"] = { { pos = ..., rot = ..., fov = 60 } },
}Defines the camera positions for the match intro and the winner sequence. Each entry is a keyframe; the camera interpolates between them.
Notifications & Labels
MBT.Notification = function(data)
lib.notify(data)
end
MBT.UIHelp = function(data)
lib.showTextUI(data.text)
end
MBT.HideUIHelp = function()
lib.hideTextUI()
end
MBT.Progress = function(posOutcome, negOutcome)
lib.progressCircle({ ... })
endAll UI calls are wrapped in config functions. Replace any of them with your own library calls if you don't use ox_lib.
Inventory Functions (Custom)
server/storing_custom.lua and client/client_custom.lua are escrow_ignore-listed. Use them to integrate an alternative inventory system if you don't use ox_inventory.
-- server/storing_custom.lua
-- Uncomment and fill in for QBCore / ESX inventory:
-- AddEventHandler("mbt_ktf:handleStoring", function(action)
-- ...
-- end)NUI Notification Colors
Edit html/config.json to change the notification colours shown in the game UI:
{
"WinnerNotifyColor": "#00cc00",
"InfoNotifyColor": "#e69138"
}| Key | Default | Purpose |
|---|---|---|
WinnerNotifyColor | #00cc00 (green) | Colour for winner announcements. |
InfoNotifyColor | #e69138 (orange) | Colour for general in-game info. |