Documentation

Pepper Fight Club

Boxing and fight career with its own combat system – a story in 12 chapters, an academy with 46 lessons, a pro ranking, training, an underground with police raids, a PvP arena, tournaments and betting for ESX, QBCore and Qbox.

Overview

Pepper Fight Club turns fist fights into a career: from the backyard in Davis to the world title. Fights use the script's own combat system – the server decides every hit. Players follow a story in 12 parts (prologue, chapters 1–10, epilogue), learn every technique in the academy, climb the pro ranking, fight in the underground and face each other in the arena.

Everything runs through a tablet (F7 or /fightclub). Admins set up the locations once with the /fcsetup assistant and manage everything else in the /fcadmin window.

Note: All coordinates that ship with the script are approximations. Check the locations once on your server – the /fcsetup assistant walks you through all 36 steps.

Features

  • Own combat system, the server decides every hit: jab, cross, hooks, uppercut, kicks, clinch, guard, slips, parries, counters, combos, stamina and finishers – with latency compensation for fair PvP
  • 4 fighting styles: street fighting, boxing, kickboxing, freestyle
  • Knockdowns with a referee count and a get-up mini-game, rounds, a corner with tactics, three judges
  • Story career in 12 parts with cutscenes, a trainer, a promoter and a rival – choices lead to 3 different endings
  • Academy with 46 lessons in 8 modules and 4 exams: you learn every technique before you can use it in a fight
  • Pro career: a ranking of 50 boxers, licenses, training camps, press conferences and 5 titles
  • Underground: 8 venues with 56 fighters, bosses, rivals, reputation, a cage and belts – or a legal league via the config
  • PvP arena: challenges with stakes, Elo seasons, a champion belt, tournaments, fight nights and NPC show fights
  • Betting with fixed odds, a player pool and live bets in the corner
  • Police raids with heat per venue, a built-in alert or your own dispatch integration
  • 17 training stations with mini-games, injuries, doctors and nutrition
  • 29 items for ox_inventory with ready-made images, sponsors, manager, cutman, daily and weekly tasks, 58 achievements
  • Your own gym (6 gyms to buy) and fight teams of up to 6 members
  • Levels 1–100 with unlocks, prestige up to tier 10 and a signature move
  • First-time setup assistant /fcsetup and admin window /fcadmin with 11 tabs
  • Arrange the HUD freely: position (drag or fixed spot) and size of every HUD element in the admin window
  • Pause the career: objective and waypoints disappear until the player continues
  • German & English, open config, locales, bridges and install files

Requirements

Dependency Required/optional Used for Link
FiveM server build ≥ 7290 required declared in fxmanifest.lua as /server:7290 https://runtime.fivem.net/artifacts/fivem/build_server_windows/master/
OneSync required server-side combat system, instances, spectators https://docs.fivem.net/docs/scripting-reference/onesync/
ESX Legacy, QBCore or Qbox required (one of them) money, jobs, names, admin groups – Config.Framework = 'auto' detects it https://github.com/esx-framework/esx_core
ox_lib required UI building blocks, callbacks https://github.com/overextended/ox_lib
oxmysql required database (MySQL/MariaDB, 18 tables fc_*) https://github.com/overextended/oxmysql
ox_inventory required 29 items (tablet, wraps, gloves …) https://github.com/overextended/ox_inventory
ox_target optional interacting with characters – without it a hint + key E is used https://github.com/overextended/ox_target
RTX Gym (Realistic or Basic Gym System) optional training in the RTX gym raises Fight Club stats, fights give RTX combat XP (Config.RtxGym). With the Basic Gym (rtx_gym) the Fight Club reads the stats via exports.rtx_gym:GetAllStats and takes over the training progress (the first time also existing stats, capped; Config.RtxGym.ToFightClub.basic) –

Combat animations included: The Fight Club ships with overhauled melee animations (Wolf Fire Modz, FiveM pack by Popcorn Roleplay, included with permission). They replace GTA's animations for all unarmed fights on the server and only show in third person – first person is blocked during fights (Config.CombatAnimations). If you already run another melee animation pack, remove one of them. Credits and license: install/LICENSE-ANIMATIONS.txt.

Installation

  1. Download the resource from the Cfx.re Portal (Granted Assets)
  2. Extract it to resources/[pepper]/pepper_fightclub – do not rename it
  3. Add the items: paste the contents of install/ox_items_en.lua (or install/ox_items_de.lua) into ox_inventory/data/items.lua – inside the table, right before the very last closing }. Do not add another return {
  4. Copy the images: all images from install/images/ to ox_inventory/web/images/
  5. Start it in your server.cfg after the dependencies and grant the admin permission:
ensure oxmysql
ensure ox_lib
ensure es_extended        # or qb-core / qbx_core
ensure ox_inventory
# ensure ox_target        # optional – without ox_target players interact with E
ensure pepper_fightclub

add_ace group.admin pepper.fightclub.admin allow
  1. Database: the script creates its 18 tables (fc_*) on start. Without CREATE permission, import install/pepper_fightclub.sql first
  2. Start the server – the console shows a green line Pepper Fight Club v… started (framework: …)
  3. In game, run /fcsetup as an admin and place the locations (see First-time setup)

First test

  1. As admin run /fcsetup and set at least the first steps (backyard) with E – or pause with X
  2. Press F7 (or /fightclub): the tablet opens with profile, story and academy
  3. Walk to the starting character at the backyard and begin the career – the first fight shows the key help and fight HUD
  4. /fcquit aborts a fight, /fcwipe resets your test save

Configuration

File Contents
config/config.lua language, framework, admin permission, commands, keys, interaction, story, money, dispatch, movement mode
config/combat.lua combat system, styles, techniques, combos, finishers, rules, AI
config/fighters.lua · config/venues.lua opponents and fights · underground venues
config/academy.lua · config/pro.lua lessons and exams · pro ranking, titles, training camps
config/training.lua · config/health.lua stations and gyms · injuries, nutrition, doping
config/arena.lua · config/betting.lua PvP, season, tournaments, fight nights · betting
config/underground.lua heat, raids, flyers, legal mode
config/items.lua · config/economy.lua items · shops, sponsors, tasks, achievements, gym, team, prestige
config/locations.lua · config/setup.lua locations and rings · first-time setup
config/story.lua · config/story_late.lua story chapters and scenes
config/progression.lua level curve, stats, ranks
config/server.lua Discord webhook for logs, version notice, protection limits against macros and fixed fights (ServerConfig.Protection) – never sent to clients
locales/de · locales/en all texts

Important options:

Option Default Meaning
Config.Locale 'de' language (de / en), applies to all players
Config.Framework 'auto' auto, esx, qbcore, qbox, standalone
Config.AdminAllowCommandAce false true = anyone with the ACE command is a Fight Club admin
Config.Commands fightclub, fcquit, … names of the player commands
Config.Keys see controls combat keys (FiveM control IDs) · tablet = default F7
Config.Interaction 'auto' ox_target if started, otherwise a prompt + E · 'target' · 'key'
Config.MovementMode 'strafe' combat movement: 'strafe' = fighting stance, facing the opponent · 'assist' = normal movement, view turns smoothly towards the opponent
Config.Story.Enabled true story career on / off
Config.Story.Instanced true scenes and chapter fights in their own instance (routing bucket)
Config.Story.AllowSkip true skip scenes with BACKSPACE
Config.Story.StartNpc · StartLoc 'lil_d' · 'backyard_promoter' character and place where the career starts · StartNpc = nil = can also be started in the tablet
Config.Story.AllowPause true players may pause their career (/fcpause, tablet, Pops)
Config.Hud.Layout {} start values for position and size of the HUD elements (in game: /fcadmin → HUD)
Config.Underground.enabled true false = legal mode: no heat, no raids, no dirty money, "League" instead of "Underground"
Config.Combat.AutoSpectate false true = all players nearby get the fight HUD automatically (not recommended on RP servers)
Config.Combat.SpectateHint true players near a fight get a hint about /fcwatch
Config.Combat.RingWalls true invisible walls at rings with ropes · per ring with walls = false
Config.Money.account 'cash' account for purses (cash / bank)
Config.Money.black 'auto' dirty money: ESX account black_money, item markedbills on QBCore / Qbox · 'account', 'markedbills', 'cash'
Config.Economy.PayoutAccount · PayAccount 'bank' · 'cash_then_bank' economy payouts · payment method for purchases
Config.Dispatch.mode 'builtin' raid alert: 'builtin' = message + map blip for on-duty police · 'event' = your own event · 'none'
Config.Dispatch.jobs police, sheriff jobs that count as police
Config.Setup.Enabled · AutoPrompt true · true first-time setup on · remind admins
Config.Progression.GlobalXpMultiplier 1.0 levelling speed
Config.Economy.PayoutMultiplier 1.0 scales economy payouts (sponsors, jobs, tasks, achievements, gym)

Almost every module has its own Enabled switch (e.g. Config.Training, Config.Arena, Config.Betting, Config.Pro). Restart the resource after every change.

First-time setup

On the first start – as long as no location has been placed – the script reminds every admin of the open setup when they log in and every 10 minutes after that. Start it with /fcsetup.

The assistant asks for 36 locations in the order of the game: the backyard and Muscle Beach, the underground venues, the pro career halls, the arena, the training gyms, the shop and dealer, the 6 player gyms and the running routes. The current step is shown on the left of the screen, and you can walk around normally.

Key Function
E place the location here (your position and facing direction)
G teleport to the suggestion
BACKSPACE skip the step – the suggestion stays
X pause – /fcsetup continues at the same step
  • Moving along: a ring takes everything that belongs to it – characters, stations, props within range. Running routes rotate with their start point. For rings, a red preview shows size and direction; stand in the middle and face the ring direction
  • Locations placed by hand are never overwritten by the assistant
  • /fcsetup restart starts over, /fcsetup stop pauses
  • Later: /fcadmin → Setup tab lists all steps with their status and redoes single steps. Change single locations under /fcadmin → Places (teleport there, set "here", reset)
  • Export: /fcexport (or Export in the Places tab) prints all changed locations as Lua lines to the server console and F8 – to copy into config/locations.lua

Placed locations are stored in the database and apply immediately, without a restart.

Arranging the HUD

/fcadmin → HUD tab sets position and size of the HUD elements for all players: fight HUD, story objective, notifications, key hints, level up, pads & run, training stations, live bets and raid alert. In the list you change the size in 10 % steps. Open editor shows every element as a frame over the game: drag a frame freely (snaps to the screen center), pick one of 9 fixed spots, size via slider or mouse wheel (50–200 %), then Save. The layout is stored in the database and applies immediately. Start values for new servers live in Config.Hud.Layout.

Player guide

Tablet

F7 or /fightclub opens the tablet. Every player can rebind the key in the GTA settings under Key Bindings → FiveM. At level 2 every player receives the Fight Club tablet item once; using it opens the tablet too.

At the start there are the tabs Home, Career, Academy, Profile, Controls. With higher levels Training, Box-Rec, Underground, Arena, Bets, Heat, Shop, Contracts, Tasks, Gym & Team and Achievements are added. The Home tab shows the next unlocks.

Combat controls

Key Function
Left mouse button light punch (jab / swing)
Right mouse button heavy punch (cross / haymaker)
A / D + left mouse button left / right hook
S + left mouse button body shot
S + right mouse button uppercut
CTRL (hold) guard
SPACE dodge · get up after a knockdown
A / D + SPACE slip
F shove / special punch, kicks in kickboxing
G clinch (freestyle)
Q taunt
E finisher when your adrenaline is full · in dialogs: next line
BACKSPACE skip scene

Which technique a key triggers depends on your style and the lessons you have passed – the Controls tab in the tablet shows the bindings of your server. /fcquit forfeits a running fight.

Story

The career starts in the backyard in Davis and leads through Delgado's Boxing Gym at Muscle Beach to the world title fight. Prologue, 10 chapters and epilogue tell the story with cutscenes, conversations, messages in the tablet and chapter fights. Choices – for example about the underground, doping or fixed fights – change your honor and lead to one of 3 endings. Between chapters you need levels; the Career tab shows the next goal and what you can do until then. Scenes at the gym don't start on their own – there you get "[E] Continue story".

The career starts with Lil' D in the backyard (map marker "Start career"), not in the tablet. Players who have something else to do pause the career in the tablet, with Pops or with /fcpause: objective, waypoints and scenes disappear until they resume – progress is saved.

Academy

The Academy tab holds 46 lessons in 8 modules: drills, pads, rhythm, running routes, sparring with a goal and rules knowledge. A technique can only be used in a fight once its lesson is passed. On top come 4 exams: admission test, amateur license (from level 8), pro license (from level 35) and master exam (from level 98), a daily plan with 3 tasks and the trust of your trainers.

Box-Rec and pro career

The Box-Rec tab shows your record, the ranking of 50 boxers and the promoters' offers. Wins move you up, the purse depends on your rank. Your rank opens the 5 titles: Los Santos, San Andreas, North America, world title and unified world champion – with training camp, press conference and ring walk.

Training and health

17 training stations (punching bag, push-ups, running routes, shadow boxing and more) in the Muscle Beach, backyard and cellar gyms improve your stats with a mini-game; each session costs training energy. Fights leave bruises and sometimes injuries – they heal over time, at a doctor or with items such as an ice pack or a bandage.

Underground

8 venues: Backyard, Parking Garage, Cellar Hole, Harbor Hall, Junkyard Cage, Quarry, VIP Rooftop and The Pit. You accept fight offers from the promoter, and every venue has a ranking, reputation, a boss, rivals and a belt. Purses are paid out as dirty money here (configurable). Every fight raises the venue's heat – if it gets too high, a raid follows: after the warning there is time to leave the zone; whoever stays pays a fine and is banned from the underground for a while. On-duty police officers cannot fight or bet at underground venues.

The backyard opens after the prologue, every other venue opens in chapter 4 when Sal Marino makes his offer. In legal mode (Config.Underground.enabled = false) the underground is called "league": no heat, no raids, and the story tells chapter 4 to match – Sal offers his own show league instead of illegal fights.

Arena

In the arena players fight each other: free challenges (from level 5, optionally with a stake), ranked fights with an Elo rating and a monthly season (from level 20), a queue with an NPC opponent when nobody is free, tournaments with 4, 8 or 16 slots, fight nights with a fight card and a champion belt. Watch other public fights and show fights with /fcwatch.

Betting

Bets only work on site: at the bookmaker, in the tablet or with /fcbet near a ring. Fights with NPCs have fixed odds, PvP fights a player pool. With higher levels you unlock method, live and round bets as well as higher limits. Bets give no XP.

Economy

The sports shop sells gloves, protective gear, food and first aid, the underground dealer has more. Gear wears down and can be repaired at the shop. On top come sponsor contracts, a manager, a cutman, promoter jobs, daily and weekly tasks, 58 achievements with selectable titles, from level 70 your own gym (buy or rent, with upgrades) and from level 72 a fight team.

Prestige

From level 100 you can prestige and start again at level 1 – your techniques stay, you get a star and points for small perks. Up to 10 prestige tiers are possible. At level 100 you also choose your signature move. The Hall of Fame takes players with level 100, a world title or prestige.

Commands and permissions

Commands

Players

Command Function
/fightclub (F7) open the tablet
/fcquit forfeit the running fight or lesson
/fcduel <ID> offer a friendly fight (player nearby)
/fcaccept accept a friendly fight
/fcwatch watch a public fight or show fight nearby – again = stop
/fcpause pause / resume the career
/fcchallenge <ID> [stake] ranked challenge · /fcchallenge free <ID> [stake] free challenge · /fcchallenge yes / no to answer
/fcqueue join / leave the queue at the arena venue
/fcbet betting slip for fights nearby (key can be bound freely)

The names are set in Config.Commands (config/config.lua) and Config.Arena.Commands (config/arena.lua).

Admin

Command Function
/fcadmin admin window: Places, HUD, Setup, Players, Fights, Pro career, Venues, Health, Arena, Underground, Economy
/fcsetup start / continue the first-time setup · restart from the start · stop pause
/fcsetpos <place> set a location to your position
/fcresetpos <place> reset a location to the config value
/fctp <place> teleport to a location
/fcorte list all location names (* = changed)
/fcexport print changed locations as Lua lines (server console + F8)
/fcxp <amount> [ID] give XP
/fclevel <level> [ID] set the level
/fcunlock <technique|all> [ID] unlock techniques
/fcstory reset | <chapter> [step] [ID] reset the story or jump to a chapter (e.g. chapter5)
/fcfight <fight> start a fight from Config.Fights
/fcexam [exam] [ID] reset an exam (default: admission test)
/fcwipe [ID] delete all Fight Club data of a player
/fcmove strafe|assist switch the combat movement mode for yourself (testing)
/fcanimstyle [overhaul|classic] switch the combat animation style for yourself (comparison; no argument toggles)
/fcengine [native|scripted] combat engine for new fights: GTA melee or own combat system (until restart)
/fcdebug combat debug display on / off

Without [ID] a command applies to yourself. The server checks admin commands on every call.

Permissions

A player is an admin if one of these applies:

  • ACE permission pepper.fightclub.admin (Config.AdminAce) – the reliable way on every framework
  • a framework group from Config.AdminGroups (default admin, superadmin, god)
  • only with Config.AdminAllowCommandAce = true: anyone with the general ACE permission command (default off – on many servers moderators have it too)
add_ace group.admin pepper.fightclub.admin allow
add_ace identifier.license:YOUR_LICENSE pepper.fightclub.admin allow

For developers

Exports

-- Server
exports.pepper_fightclub:getProfile(src)        -- profile (name, level, rank, stats, record, honor, styles, techniques) or nil
exports.pepper_fightclub:isInFight(src)         -- true while the player is fighting
exports.pepper_fightclub:getProRank(src)        -- place in the pro ranking (1–50, 51 = unranked) or nil
exports.pepper_fightclub:getProLicense(src)     -- 'none' | 'amateur' | 'pro' or nil
exports.pepper_fightclub:openBetting(src, venue) -- open the betting slip for a player

-- Client
exports.pepper_fightclub:openBetting(venue)     -- open the betting slip (venue = venue ID or nil = fights nearby)

useItem is the export for ox_inventory: the item templates in install/ already reference it (server = { export = 'pepper_fightclub.useItem' }). You don't need to call it yourself.

Hooks for jail and police scripts

Server events – listen with AddEventHandler, not with RegisterNetEvent:

AddEventHandler('pepper_fightclub:raid', function(data) end)
-- data = { venue, phase, coords, police, players = { src, … } }
AddEventHandler('pepper_fightclub:arrestZoneLeft', function(src, venue) end)
-- player left the zone in time
AddEventHandler('pepper_fightclub:raidCaught', function(src, venue, info) end)
-- player was still in the zone when the raid ended · info = { fine, police, banUntil, late }

With Config.Dispatch.mode = 'event' the script calls TriggerEvent(Config.Dispatch.event, data) on an alert (default pepper_fightclub:dispatch, data = { coords, title, message, code }) – connect your dispatch script there. Whether fines are handed out automatically when real police respond is set by Config.Underground.Raid.fineWithPolice (default false: with real police, they or your jail script take over).

The internal events between modules (Fight.Bus) are not a public interface and may change.

Framework integration

bridge/server/esx.lua, qbcore.lua, qbox.lua and standalone.lua provide money, jobs, names and admin groups, bridge/client/frameworks.lua the notifications. All bridges are open.

Troubleshooting

Problem Solution
The resource doesn't start, the console names a missing dependency oxmysql, ox_lib and ox_inventory must start before pepper_fightclub, OneSync must be on, server build 7290 or newer
Console: "Datenbank konnte nicht vorbereitet werden" (database could not be prepared) check oxmysql or import install/pepper_fightclub.sql manually
/fcadmin: no permission add the ACE line from "Permissions" and restart the server
Items without an image or unknown check installation steps 3 and 4, then restart ox_inventory
A character stands in a wall, a ring is crooked /fcadmin → Places → "here", or redo the step under Setup
No "[E]" at a character check Config.Interaction; with ox_target the target menu appears instead
/fcexport prints nothing no locations have been changed yet

FAQ

Who can use /fcadmin and /fcsetup?

Anyone with the ACE permission pepper.fightclub.admin or in a group from Config.AdminGroups. The general command permission only counts with Config.AdminAllowCommandAce = true.

The resource doesn't start – what do I check first?

oxmysql, ox_lib and ox_inventory must start before pepper_fightclub, OneSync must be on and the server build must be 7290 or newer. The console names the missing dependency.

The database tables are missing.

The script creates its 18 tables (fc_*) on start. If your database user has no CREATE permission, import install/pepper_fightclub.sql manually.

Items are unknown or have no image.

Paste the content of install/ox_items_en.lua (or install/ox_items_de.lua) inside the table in ox_inventory/data/items.lua, copy the images from install/images/ to ox_inventory/web/images/ and restart ox_inventory.

The locations don't match my map.

The shipped coordinates are approximations. /fcsetup sets all locations in order, /fcadmin → Places single ones. They are stored in the database; /fcexport lets you copy them into the config.

Does it work without ox_target?

Yes. Without ox_target characters show a hint and players interact with E (Config.Interaction = 'auto').

Can I change the fight keys?

Yes, in Config.Keys (config/config.lua) using FiveM control IDs – e.g. guard 36 (CTRL) or dodge 22 (space). Players change the tablet key F7 themselves in the GTA settings under Key Bindings → FiveM.

Can I turn off the underground?

Yes: Config.Underground.enabled = false is legal mode – no heat, no raids, no dirty money, "league" instead of "underground". The story scenes still talk about the underground.

What about the police?

On-duty officers can't fight or bet at underground venues, off-duty they can (Config.Underground.AllowOffDuty). During a raid the script alerts the police – built in or via your dispatch script (Config.Dispatch.mode). With too few officers on duty a "raid light" runs without real police.

How do I set the progression speed?

Config.Progression.GlobalXpMultiplier (default 1.0) scales all XP, Config.Economy.PayoutMultiplier the payouts of sponsors, jobs, tasks, achievements and gyms.

How do I change texts or switch to English?

Config.Locale = 'en' in config/config.lua – the language applies to all players. All texts are open in locales/de/*.json and locales/en/*.json, the items in install/ox_items_en.lua.

What about performance?

The server only computes combat while a fight is running. Characters, rings and markers are created locally and by distance. We only state a resmon value once it has been measured.

What happens on a restart?

Running fights and scenes end. Level, story, lessons, locations, rankings and items are stored in the database or inventory.

How do I install an update?

Replace the pepper_fightclub folder and back up your changes to config/ and locales/ first. Set locations and HUD layout live in the database and are kept; new items are listed in CHANGELOG.md.

Support

Open a ticket on Discord: https://discord.gg/6NaFJWKDYu (category "Script Support") – link your purchase with /verify first. German or English.

Permanently tested on the Pepper Scripts dev server.

Changelog

Current version: 1.0.4 (2026-10-25). All changes are listed on the updates page and in CHANGELOG.md inside the resource.


Found a mistake? Report it on Discord.