Installation
Requirements
| Dependency | Notes |
|---|---|
| ox_lib | Required — notifications, menus, progress bars |
| ox_inventory | Recommended — stash system and weight management |
| ESX / QBCore / OX Core | One framework required (auto-detected) |
| OneSync | Required for routing buckets |
Steps
Download and place the resource
Download mbt_ktf from the MBT Store.
Place it keeping the exact resource name:
resources/
└── [mbt]/
└── mbt_ktf/
├── client/
├── server/
├── html/
├── config.lua
└── fxmanifest.luaConfigure locations
Open config.lua and update MBT.Locations to match coordinates on your map:
MBT.Locations = {
["PreGameLocation"] = vector3(-1052.37, 4911.14, 210.35), -- NPC + lobby area
["GameArea"] = vector3(-1114.75, 4923.61, 202.05), -- arena center
["StashLocation"] = vector3(-1058.85, 4915.94, 212.0), -- deposit/withdraw
["FirstFlag"] = vector3(-1165.240, 4925.880, 221.982), -- flag spawn
["WinnerSpot"] = { ["Coords"] = vector3(-1169.88, 4926.89, 223.38), ["Heading"] = 89.23 },
}Set the spawn points array (MBT.SpawnPoints) to safe locations inside your arena.
Configure your framework
The script auto-detects ESX, QBCore and OX Core. No extra flag is needed — just make sure the framework resource is running before mbt_ktf.
If you use ox_inventory, set MBT.EnableStashes = true (it is already true by default). If you do not use ox_inventory, set it to false so the stash UI is not shown.
Configure rewards
Edit MBT.Rewards in config.lua to set what the winner receives:
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 from the list is picked at random each time a winner is declared. Item names must exist in your inventory system.
Add to server.cfg
ensure ox_lib
ensure ox_inventory # remove if not using ox_inventory
ensure mbt_ktfFramework resources (es_extended, qb-core, etc.) must start before mbt_ktf.
Verifying the install
Go to the configured PreGameLocation. You should see a smoking NPC (csb_isldj_04 by default) with a green marker underfoot. Press E — the player-selection UI should open.
Select at least one other online player, press ENTER to confirm, and the match should start after the countdown.
To test with a single developer:
- Set
MBT.MinPlayer.Active = falseinconfig.lua— this removes the minimum-player requirement so you can start a solo match.
Routing bucket 400 is used by default. If that bucket conflicts with another resource on your server, change MBT.DedicatedBucket to any unused number.