Troubleshooting
Diagnose startup, permission, creation, membership, base, garage, territory, turf map, war, treasury, radio, and settings issues in Oxide Gangs.
Common problems and how to fix them. Each one lists what you would see, then the fixes in the order worth trying. If nothing here helps, see Getting Help at the bottom.
Startup Issues
The resource does not start
Symptoms:
/gangsdoes nothing in chat.- Red text in the server console when the server boots.
Solutions:
-
Read the console message. It names the problem directly:
[ERROR] oxide-gangs requires o-link but it is not running (state: missing). Ensure it is started before oxide-gangs. [ERROR] oxide-gangs cannot start due to missing dependencies listed above.state: missingmeans the resource is not in yourresourcesfolder at all.state: stoppedmeans it is there but never started. -
Fix the load order.
ox_lib,oxmysql, ando-linkmust all be running beforeoxide-gangs. Open yourserver.cfgand check theensurelines are in this order:server.cfg ensure ox_lib ensure oxmysql ensure qb-core # or qbx_core / es_extended ensure o-link ensure oxide-gangsSee Installation → Load Order for the full explanation.
-
If you use an
[oxide]folder,o-linkinside it starts beforeoxide-gangson its own because folders start alphabetically. Just make sureensure [oxide]comes after your framework. -
Check the folder name. It must be exactly
oxide-gangs. A folder calledoxide-gangs-mainoroxide-gangs (1)— which is what you get from some download tools — will not work.
On a clean start with everything present, oxide-gangs prints a handful of [INFO] lines — "loaded N gangs from database" and "oxide-gangs initialized" among them. [INFO] lines are normal; only [WARN]/[ERROR] lines need attention.
The database tables were not created
Symptoms:
- Errors mentioning
gang_gangsor anothergang_*table in the console. - The admin panel opens but shows nothing and nothing can be saved.
Solutions:
-
Check
oxmysqlis connected. Look foroxmysqlerrors earlier in the console. Ifoxmysqlcannot reach your database, nothing else will work either. Check theset mysql_connection_stringline in yourserver.cfg. -
Check your database user can create tables. Some shared hosts restrict this. If yours does, import
sql/install.sqlby hand using your database tool (HeidiSQL, phpMyAdmin, DBeaver, or your host's panel) and restart. -
Check your database version. The schema uses
JSONcolumns, which need MySQL 5.7+ or MariaDB 10.2+. Run this in your database tool:SELECT VERSION();If you are below those versions the
JSONcolumns fail to create — ask your host to upgrade your database.
Permission Issues
"You do not have permission to do that" on a staff command
Symptoms:
/gangs adminor/gangs settingsrefuses to open for an admin.
Solutions:
-
Check your
server.cfggrants the permission.oxide-gangsaccepts either thecommandACE or theadminACE. Most stock configs already have this line:server.cfg add_ace group.admin command allow -
If you do not have that line, add both of these:
server.cfg add_principal identifier.license:YOUR_LICENSE_HERE group.admin add_ace group.admin admin allowBeing a member of
group.adminis not enough by itself. Theadd_aceline is what actually grants the permission. -
Restart the server after editing
server.cfg. Permission lines are read at startup. -
Test from the console instead. The server console is always treated as staff. If
/gangs create testgangworks from the console but not in game, the problem is definitely your ACE setup and not the resource.
On ESX, a player your framework already treats as an admin passes even without either ACE. Denied attempts are written to your server log with the player's identifier, so you can confirm the command was reaching the resource at all.
Gang Creation Issues
/gangs request says requests are disabled
Symptoms:
- Players see "Gang creation requests are disabled on this server."
Solution: open /gangs settings → Creation → Creation mode and set it to Player requests, admin approves. It is probably set to Admins only.
A gang name is rejected
Symptoms:
- "Names must be 3-40 characters: lowercase letters, numbers and underscores, starting with a letter."
- "That name is not allowed."
- "That name is already taken."
Solutions:
-
Use the right format for the internal name. Lowercase only, no spaces, no punctuation other than
_, and it must start with a letter.ballasis fine.The Ballas,Ballas, and4ballasare not. The display name — the one with capitals and spaces — is a separate field. -
"Not allowed" means it is on the blocklist. The name is in
Config.NameBlocklist(/gangs settings→ Creation → Blocked names). Remove it there if you want it allowed, or add more names (job names, slurs, whatever you like) to block them. Gang money is safe regardless of the name — gang bank accounts use agang_prefix, so they can never collide with a job's account. -
"Already taken" means an active gang has it. Disbanded gangs release their name immediately, so this always means a live gang.
Approving a request fails
Symptoms:
- "The requester must be online to pay the creation fee."
- "The requester cannot afford the creation fee."
- "The requester has since joined a gang; request rejected."
Solutions:
-
For the fee messages, either wait until the requester is online with enough money in their bank account, or set the fee to 0 in
/gangs settings→ Creation → Creation fee. -
"Has since joined a gang" is not an error to fix — the player was recruited while their request sat in the queue. The request is closed automatically. Nothing further is needed.
Membership Issues
A player's gang is wrong, or missing, on another script
Symptoms:
- Another resource that reads the framework's gang data sees the wrong gang, or none.
Solutions:
-
Have the player reconnect. Their gang is re-applied from the database when they load in, which corrects any drift.
-
Restart
oxide-gangs. The full gang list is pushed into QBCore or QBX every time the resource starts, and every online player is reconciled at the same time. -
On ESX this is expected. ESX has no gang system of its own, so a script reading ESX's gang data directly will always find nothing. Scripts must ask
o-linkinstead — see the API Reference.
oxide-gangs never reads gang data back from your framework, only writes to it. If another script changes a player's gang directly, oxide-gangs will overwrite that change on their next login. This is deliberate — one system has to be in charge, and it is this one.
A player kicked while offline is still in the gang
Symptoms:
- A member removed from the admin panel while offline still appears in a framework menu.
Solution: this is expected until they reconnect. The removal is stored immediately and applied to their character the next time they load in. Their framework-side gang is cleared at that point.
The last boss cannot leave
Symptoms:
- "Promote another boss before leaving, or disband the gang."
Solutions:
- Promote someone else to a boss rank first, then leave.
- Or disband the gang — from
/gangs admin, or with/gangs disband <name>.
A gang cannot be left leaderless. The one exception is a boss who is the gang's only member: leaving in that case disbands the gang.
Base and Stash Issues
No base blip on the map
Symptoms:
- A member cannot see their gang base on the map.
Solutions:
- Check the gang actually has a base.
/gangs admin→ select the gang → Base. If the base position is unset, place it. - Check blips are on.
/gangs settings→ Bases & Stash → Base blips. Also check the per-base blip toggle in the admin panel. - Check the member's rank. If the base has a minimum rank set and the member is below it, they see nothing at all.
- Confirm they are actually in the gang —
/gangs infotells them.
Nothing happens at the stash or garage point
Symptoms:
- Standing on the spot, no interaction prompt appears.
Solutions:
- Check you have a target resource installed and running. The stash and garage points are interaction points, and they need one.
ox_target,qb-target,tgiann-target, and other targeting resources all work througho-link. - Check the point is actually placed.
/gangs admin→ select the gang → Base. A stash point and a garage point are separate from the base position; placing the base does not place them. - Stand closer. The distance comes from
Config.Bases.interactDistance(2 metres by default) andConfig.Garage.interactDistance(5 metres). Raise them in/gangs settingsif your placement is awkward. - Have the player rejoin. The base is drawn when they load in and when their gang changes.
"The stash is unavailable right now."
Symptoms:
- The stash prompt appears but opening it fails with this message.
Solutions:
- Check an inventory resource is installed and running. The gang stash needs one. Any inventory
o-linksupports works —ox_inventory,qb-inventory,qs-inventory,ps-inventory, and others. - Check
o-linkis up to date. Older versions may not have an adapter for your inventory. - Restart
oxide-gangsafter installing an inventory. Stashes are registered at boot.
"Your gang has no stash."
The base exists but no stash point has been placed on it. /gangs admin → select the gang → Base → place the stash point.
"Too far away."
The server checks distance itself, and it is deliberately a little more generous than the visible prompt. If you get this while standing right on the point, the point is probably placed somewhere other than where you think — re-place it from the admin panel.
Garage and Vehicle Issues
"All garage bays are blocked."
Symptoms:
- A member cannot take a vehicle out.
Solutions:
- Clear the bays. Every spawn bay has a car parked within about 3 metres of it. Move or return them.
- Add more bays.
/gangs admin→ select the gang → Base → Add bay. A gang with several members wants several bays. - Check bays exist at all. A base with a garage point but no spawn bays has nowhere to put a car.
"You already have a vehicle out."
Each player may have one gang vehicle out at a time. Return the current one first. Any member with the garage permission can return it, so a colleague can do it for them.
A vehicle is stuck marked as "out"
Symptoms:
- A vehicle shows as out in the fleet list but nobody can find it, or it fell through the map.
Solution: /gangs admin → select the gang → Fleet → Recover next to the vehicle. This deletes whatever is left of it and puts the row back to stored.
Restarting the server also clears every stuck vehicle — any car still marked out at boot is returned to the garage.
"The vehicle could not be spawned."
Symptoms:
- Taking a vehicle out fails immediately.
Solutions:
- Check the vehicle model exists on your server. A typo, or an add-on car that is not installed, produces this. Check the model name in
/gangs admin→ Fleet. - For add-on vehicles, make sure the vehicle resource is started before
oxide-gangs. - Check the spawn bay is somewhere a car can physically exist — not inside a wall or under the map.
A gang car lost its modifications or plate
Symptoms:
- A car spawns in stock colours, or with the wrong plate.
Solutions:
- Give it a moment. Gang cars are created by the server, and the first nearby player's game applies the paint, mods, plate, fuel, and damage a moment later. It is not instant.
- Check the car was returned properly. A car's condition is saved when it is returned, not continuously. A car abandoned in the street and recovered by staff keeps whatever it had when it was last returned.
Gang cars stay in the world after the player who took them out leaves. That is intentional — a car left in the street is meant to still be there.
Territory Issues
No territories exist
Symptoms:
/gangs admin→ Territories is empty. The dashboard says "No territories are active on this server."
Solutions:
- Check the territory table. The shipped 34 districts are seeded on any boot where the
gang_territoriestable is empty — so if someone deleted them all, a restart brings them back. If the table has even one row (for example a single custom zone), nothing is seeded. - To restore the shipped map, empty the
gang_territoriestable in your database and restart the resource. This also clears all influence and ownership. - Or draw your own.
/gangs admin→ Territories → New territory.
Influence never goes up
Symptoms:
- Gangs play in a district for hours and their influence stays at zero.
Solutions:
- Check territories are switched on.
/gangs settings→ Territory → Territories enabled. - Check the players are actually inside a zone. Open
/gangs admin→ Territories and confirm the zone covers where they are playing. Zones drawn on the in-panel map cover all heights; zones walked in the world may have recorded height bounds. - Check the gain values are not zero.
/gangs settings→ Territory. IfPresence gainis 0, standing in a zone earns nothing. - Check the hourly caps are not zero. A cap of
0for a source disables that source completely. - Wait for the presence check. Presence only awards influence when the check runs, every
Presence tickminutes (5 by default). Nothing happens in between. - For drug sales, confirm the drug resource actually reports them. Only Oxide drug resources and scripts written against the API do — see the API Reference.
Influence goes up then falls back down
This is decay, and it is meant to happen. Every gang loses Decay per hour influence in every zone, every hour, and each territory a gang already owns makes that faster (Decay per holding).
If turf feels too hard to hold, lower Decay per hour or Decay per holding in /gangs settings → Territory. If it feels too easy, raise them.
A territory will not change hands
Symptoms:
- A gang has more influence than the owner but the zone stays put.
Solutions:
- This is the contest window doing its job. Overtaking the owner opens a window lasting
Contest windowreal hours (6 by default). The zone only changes hands when that window closes, and only if the challenger is still ahead. Check the dashboard's Territory screen — it shows the countdown. - Check the challenger is above the threshold. They need at least
Ownership thresholdinfluence (100 by default), not just more than the owner. - Check the cooldown. After a contest settles, no new contest can open on that zone for
Contest cooldownhours (12 by default). - To make flips faster, lower
Contest windowandContest cooldownin/gangs settings→ Territory.
Kills are not winning turf
They are not supposed to. Kill influence only counts during an active war, and even then it is capped at Kill influence share (25% by default) of the influence the gang has already earned there through activity. A gang with no footprint in a district earns nothing there no matter how many people it kills.
Turf Map Issues
No filled areas on the minimap or pause map
Symptoms:
- Territory blips show but there is no coloured fill.
Solutions:
-
Check the player is in a gang. The turf fill is members-only by design. Someone with no gang sees nothing.
-
Check it is switched on.
/gangs settings→ Territory → Member turf map → Enabled. -
Look for this in the player's F8 console (the client console, opened in game with F8 — these messages never appear in the server console):
[oxide-gangs] territory fill disabled: MINIMAP_LOADER.gfx is missing from the resourceThe file
MINIMAP_LOADER.gfxmust be in theoxide-gangsfolder. Restore it from your download. See Installation → The Minimap File. -
Or this one:
[oxide-gangs] territory fill disabled: the turf atlas texture never became availableThe map image did not finish loading. This usually clears on a rejoin. If it happens every time on every player, contact Oxide Studios support.
-
Check the zones have at least three points. A zone with fewer is skipped.
The fill is too strong or too faint
/gangs settings → Territory → Member turf map:
- Owned fill opacity — how solid claimed zones look (0–255, default 110)
- Unclaimed fill opacity — how solid unclaimed zones look (0–255, default 70)
War Issues
"Wars are disabled on this server."
/gangs settings → Wars → Wars enabled → on.
A war cannot be declared
Symptoms:
- One of: "Your gang is already at war", "Your gang already has an outgoing declaration. Withdraw it first.", "That gang is already at war.", "Too soon — these gangs fought recently.", "Invalid stake.", "The treasury does not have enough money."
Solutions:
- One war at a time. A gang can be in one active war and have one outgoing declaration. Withdraw the outgoing one from the Wars screen first.
- "Too soon" is the rematch cooldown. Lower or disable it:
/gangs settings→ Wars → Rematch cooldown (set 0 to turn it off). - "Invalid stake" means the stake is above
Max stakeor is a negative number. Raise the limit in settings, or set it to 0 for unlimited. - "The treasury does not have enough money" means the declaring gang cannot currently cover its own stake. Fund it, or declare with a smaller one.
Kills are not scoring
Symptoms:
- Members are killing each other but the scoreboard does not move.
Solutions:
- Both players must be in the two warring gangs. A kill on an uninvolved player scores nothing.
- Check the distance limit. Kills where the two players are more than
Max kill distanceapart (300 m by default) are rejected as implausible. Raise it, or set it to 0 to turn the check off, in/gangs settings→ Wars. - Check the repeat-kill cooldown. Killing the same victim again within
Repeat-kill cooldownseconds (180 by default) scores nothing. This is deliberate — it stops kill trading. Lower it if it is too strict for your server. - A gang cannot score on itself. Killing your own gang member never counts.
Capture points never appear
Symptoms:
- A war is running but no capture points spawn.
Solutions:
- Check they are on.
/gangs settings→ Wars → Capture objectives → Objectives enabled. - Wait. The first point spawns
Spawn intervalminutes (20 by default) after the war starts, not immediately. - Check at least one side has a territorial footprint. Points spawn inside a warring gang's territory. If neither gang owns any zone and neither has influence anywhere, no point can spawn and the war runs on kills only. Lower the ownership threshold, or let the gangs build some influence first.
A war did not end when it should have
Symptoms:
- The clock ran out but the war is still showing as active.
Solutions:
- Give it a minute. The settle check runs once a minute.
- Force it.
/gangs admin→ select either gang → Wars → Force end. It settles as a draw and both stakes are refunded in full.
Wars settle on their stored clock, so a war whose end time passed while the server was down settles as soon as the server comes back up.
Treasury Issues
"The treasury does not have enough money."
The gang does not have the amount being withdrawn or spent. Check the balance on the dashboard Treasury screen, or top it up with /gangs fund <gang> <amount>.
Deposits fail with "You do not have enough in your bank account."
Deposits come from the member's bank account, not their cash. Have them deposit their cash at a bank first.
Treasury balances are all zero after switching to banking accounts
Symptoms:
- You turned on Use banking accounts and every gang now shows $0.
Solutions:
- This is expected. The two storage modes are separate. Balances held in
oxide-gangs' own ledger are not migrated into your banking resource. - Turn the setting back off to see the original balances again, or use
/gangs fundto set up the new accounts with the right amounts. - Check you actually run a banking resource
o-linksupports. Without one, the accounts do not exist and every balance reads as 0.
Gang bank accounts are named gang_<name> — for example gang_ballas.
Radio Issues
Gangs have no radio channel
Symptoms:
- Members cannot find their gang channel.
Solutions:
-
Check
oxide-radiois installed and running. Without it, nothing is registered and the radio settings do nothing. -
Check gang channels are on.
/gangs settings→ Radio → Gang channels. -
Work out the frequency. It is
Frequency baseplus the gang's numeric ID. With the default base of 900, gang #1 is on 901. The ID is theidcolumn of thegang_gangstable in your database (gangs are numbered in the order they were created). -
Look in your server console for a frequency clash:
gang channel frequency held by another resourceAnother resource already owns that frequency, so the gang's channel was skipped. Change
Frequency baseto a clear range.
Members are not tuned in automatically
- Check
Auto-tune membersin/gangs settings→ Radio. - Check auto-tune in
oxide-radiotoo. Both have to be on.oxide-radio's own setting isConfig.AutoJoinDefault. - Players already on a channel are never moved. They have to leave their current channel first.
Settings Issues
A setting change did nothing
Symptoms:
- You changed something in
/gangs settingsbut nothing happened in game.
Solutions:
- Make sure you clicked Save Changes. Nothing applies until you do.
- Check for a partial save. "Some settings were rejected — check the highlighted fields" means part of your save did not apply. The rejected fields are marked in the panel.
- Do not edit the config files. After the first boot, the database is what the resource reads. Editing
shared/config.luahas no effect on an existing install — use the settings panel. - Check you are looking at the right setting. Some things are per gang or per base, not global. Base blips, territory blips, and vehicle minimum ranks all have per-item overrides in the admin panel that beat the global setting.
Something in the game still uses the old value
Most settings apply instantly. Two exceptions:
- War duration is locked in when a war is accepted. Changing it only affects wars accepted afterwards.
- Gang rank templates (
shared/config/grades.lua) only apply to gangs created after the change. Existing gangs keep their ranks.
The console warns a setting is too large
Symptoms:
setting is large enough that clients may not receive itSolution: one setting has grown big enough that it may not reach players' games reliably. In practice this only happens with an unusually long request form or blocked-names list. Trim it down. If you need it that size, contact Oxide Studios support.
The F8 console says a config value was corrupt
Symptoms (in a player's F8 client console):
[oxide-gangs] ignored corrupt config for <name> (... is not a finite number) — keeping previous valueSolution: a stored number went bad. The resource ignores it and keeps the last good value, so nothing is broken. Open /gangs settings, find that setting, use Reset to default, and set it again.
Turning On Detailed Logging
oxide-gangs has no debug toggle of its own. Detailed logging comes from oxide-logger, a free Oxide resource that collects logs from every Oxide resource in one place.
-
Install
oxide-logger. It works wherever it starts in your load order; if you also want it to catch the boot messages, give it its ownensure oxide-loggerline above the line that startsoxide-gangs. -
Turn up the detail for this resource, from the server console or in game as an admin:
/oxlog level oxide-gangs debug -
Reproduce your problem.
-
Read the output in your server console, or in
oxide-logger's log files.
To go back to normal:
/oxlog level oxide-gangs infoWithout oxide-logger installed, oxide-gangs still prints errors and warnings to your server console — you just get less detail.
Getting Help
If none of the above fixes your issue:
- Turn on detailed logging as described above and reproduce the problem.
- Copy your server console output from around the moment it happens — the whole block, not one line.
- Note exactly what you did, what you expected, and what happened instead.
- Note your setup: which framework (QBCore / QBX / ESX), which inventory, which target resource, and the versions of
ox_lib,oxmysql, ando-link. - Check the player's F8 console too if the problem is something they see on screen. Press F8 in game to open it.
- Contact Oxide Studios support with all of the above.
Do not edit the resource's script files
Only the settings files, locale files, and SQL files are yours to change — everything else is encrypted, and a change there will be overwritten by the next update. If a fix needs a code change, we will ship it in an update.
Next Steps
- Installation — setup and verification
- Configuration — every setting
- Admin — commands and the admin panel
- Features — how the systems work