Introduction
FeloxAC is a modular anti-cheat system for FiveM. It combines client-side detection modules with a server-side authority layer and a web dashboard, protecting your server against cheats, injectors, and exploited resources.
These docs cover everything you need to get FeloxAC running and integrated with your own resources:
- Installation — license, resource placement,
server.cfg, and the protection installer.
- Configuration — detections, punishment modes, and the Safe Events / Safe Scripts allowlists that stop false bans.
- False Bans — why they happen and how to fix them.
- Developer API (Exports) — every export FeloxAC provides to other resources.
- Ban Export — the
banPlayer export in detail.
- Usage Examples — copy-paste integration recipes.
What FeloxAC protects against
| Category | Examples |
| Movement | No-clip, teleport, speed hacks, super jump, freecam, spectate |
| Combat | Aimbot, silent aim, no-recoil, no-reload, damage modifiers, hitbox modifiers, explosive/spoofed bullets, kill-rate spam |
| Weapons | Illegitimate weapon gives, weapon spawners, ammo cheats, blacklisted weapons |
| Entities | Vehicle/ped/object spawn floods, entity deletion, vehicle attach/throw, handling & speed modifiers, request-control hijacks |
| Explosions | Explosion floods, inaudible/invisible explosions, malicious particles |
| Injection | Resource injection, backdoors, event spoofing (client & server), Lua menus, dev tools |
| Integrity | Resource-stop protection, runtime tamper detection, heartbeat/watchdog |
How it works
- Client detection modules watch for cheat behaviour on each player and report to the server.
- The server layer is authoritative — it confirms detections, applies the configured punishment (ban / kick / log), and records evidence (screenshots and gameplay clips) to your Discord webhooks.
- The dashboard is the single source of truth for configuration. Settings are synced to your running server automatically and can be reloaded live with
fac reload.
Requirements
| Requirement | Value |
| FiveM artifact (server build) | 14317 or newer |
| OneSync | Enabled (required) |
fx_version | cerulean |
| Lua | lua54 'yes' |
| License | An active FeloxAC license (per server IP) |
The in-game menu and all console commands use the fac prefix by default (for example fac install, fac reload, or the /fac menu). This prefix is configurable — see Configuration.
Installation
Installing FeloxAC takes five steps: get a license, add the resource, set your license.txt, update server.cfg, and run the protection installer.
Prerequisites
| Requirement | Value |
| Server build (artifact) | 14317 or newer |
| OneSync | Enabled |
fx_version | cerulean |
| Lua | lua54 'yes' |
| License | Active FeloxAC license for your server IP |
Step 1 — Get your license
- Purchase a license at feloxac.com.
- Open your dashboard and go to Redeem Key.
- Choose Create a new server, then paste your license key, enter your public server IP (set only once), enter a server name, and click Add Server.
To extend an existing license, use Extend an existing license, paste the extension key, and pick the server from the dropdown — no IP needed.
Step 2 — Add the resource
- Download the FeloxAC resource from your dashboard's Download page.
- Extract it into your server's
resources/ folder.
- Make sure the folder is named
FeloxAC.
The resource name must be FeloxAC — the server.cfg lines and all exports (exports['FeloxAC']) depend on it.
Step 3 — Configure license.txt
- Open
license.txt inside the FeloxAC folder and delete everything in it.
- In your dashboard, go to Documentation → Replace license.txt.
- Select your server, click Copy license.txt Content, and paste it into
license.txt.
- Save the file.
This file contains your API token. FeloxAC reads it at startup and validates it against feloxac.com for your server IP.
Step 4 — Configure server.cfg
Add OneSync near the top of your server.cfg:
set onesync on
set onesync_population false
Add these among your other permission lines:
add_unsafe_child_process_permission "FeloxAC"
add_ace resource.FeloxAC command allow
Add the ensure line at the very top of your ensure list, before every other resource:
ensure FeloxAC
Load order matters. FeloxAC must start first so it can inject its protection guards into your other resources.
Step 5 — Run the protection installer
Copying the resource is not enough — you must run the installer once so FeloxAC protects your other scripts.
- Start your server.
- Open the Live Console (txAdmin or the server console) and run:
fac install smart
- Wait for the installation to finish.
- Restart your server. FeloxAC is now active.
What fac install smart does
It scans every resource and installs FeloxAC protection only into scripts that use network events. Resources with no network events (vehicles, peds, maps, libraries) are skipped automatically, so the install stays fast and clean.
Other install modes
| Command | Description |
fac install smart | Recommended. Only protects resources that use network events. |
fac install / fac install all | Protects every resource. |
fac install optimize | Protects only entity-spawn and inventory guards (for very heavy servers). |
Verify the installation
- Run
status (or check txAdmin) — FeloxAC should appear in the resource list.
- The server console prints FeloxAC's startup and license validation result.
- Connecting players are logged (join/leave) if connection logging is enabled.
Troubleshooting
License is invalid / players get kicked
- Confirm
license.txt contains the exact token from your dashboard.
- Confirm your server's public IP matches the IP registered for the license.
- Make sure the server can reach
https://feloxac.com (check firewall / hosts file). FeloxAC is fail-closed — if it cannot validate the license it stops and kicks players by design.
fac command not found
- Confirm the
FeloxAC resource is running (status).
- The command prefix is
fac, not feloxac. If you changed CommandPrefix in config, use your custom prefix.
Detections not firing after install
- Confirm
ensure FeloxAC is at the top of your ensure lines.
- Confirm OneSync is on (
set onesync on).
- Confirm your server build is 14317+.
- Re-run
fac install smart and restart.
Configuration
FeloxAC is configured from your dashboard. Everything is done through the panel — toggles, dropdowns, and list ("chip") inputs — so you never edit raw config files by hand.
Changes are synced to your running server automatically. To apply them immediately, run:
fac reload
Your server keeps the last synced configuration in memory as a fallback. If feloxac.com is unreachable at startup, FeloxAC retries and, if it still cannot validate, stops by design (fail-closed).
How the panel works
- Toggles turn a detection on or off.
- Dropdowns choose the action for a detection (Ban / Kick / Log).
- Lists (chips) hold multiple values — such as Safe Events, Safe Scripts, and the white/black lists. To add an item, type it into the "New item, press enter to add…" box and press Enter. To remove one, click the ✕ on its chip.
Sections at a glance
| Section | Purpose |
| Settings | Server-wide options: bans, webhooks, logging, command prefix, and script allowlists. |
| Main | Movement & general client cheats (no-clip, teleport, speed, godmode, injection, event spoofing). |
| Weapons | Combat & weapon detections (aimbot, damage, ammo, blacklists). |
| Entities | Vehicle / ped / object spawning and manipulation. |
| Explosions | Explosion & particle detections. |
| Punishments | Per-detection action: Ban, Kick, or Log. |
Punishment modes (Ban / Kick / Log)
| Mode | Behaviour |
| Ban | Permanently bans the player (until unbanned from the dashboard). |
| Kick | Disconnects the player; they can rejoin. |
| Log | No punishment. Records the detection with video / screenshot evidence only. |
Log mode is your tuning tool. Set a detection to Log while you test it — you still get full evidence and telemetry, but nobody is punished. Once you've confirmed it's accurate, switch it to Kick or Ban.
Safe Events — stop false bans from events
Where: Settings → Safe Events list.
Some legitimate scripts give a weapon or teleport a player through a network event. If that event trips a detection, honest players get false-banned. Add the offending event name to Safe Events and FeloxAC will skip weapon-give / teleport detection for it.
How to add one: type the event name into the Safe Events box and press Enter — for example job:teleportToWork or police:warpToStation. It appears as a chip in the list.
How to find the event name:
- Check the detection log / Discord evidence — the triggering event is included in the ban details.
- Or check the script's source for the
TriggerServerEvent / TriggerClientEvent name it fires when teleporting or giving the weapon.
Only add events you trust. Safe Events disables detection for that event, so any player who can trigger it bypasses that check.
Safe Scripts — trust a whole resource
Where: Settings → Safe Scripts list.
Where Safe Events whitelists a single event, Safe Scripts trusts an entire resource. Add a resource here when it legitimately teleports players or gives weapons and you don't want to whitelist each event individually — for example job systems, rental systems, admin menus, or weapon shops.
How to add one: type the resource name into the Safe Scripts box and press Enter (for example my-rental-system). Matching is case-insensitive.
The bundled fac-weapons helper only works once you add fac-weapons to your Safe Scripts list.
Blacklisted weapons are always rejected, even for a Safe Script. Safe Scripts relax the give-weapon / teleport checks, but they never override the weapon blacklist.
Ignored Scripts — fully exclude a resource
Where: Settings → Ignored Scripts list.
Ignored Scripts disables all FeloxAC checks for a resource — weapons, entities, events, everything. Use it only for a fully trusted resource that is otherwise incompatible with the anti-cheat.
Use with caution. An ignored resource is a blind spot: if a cheater can execute code inside it, FeloxAC will not see it. Prefer Safe Events or Safe Scripts whenever possible.
Which one should I use?
| Situation | Use |
| One event from a script causes false bans | Safe Events |
| A whole resource legitimately teleports / gives weapons | Safe Scripts |
| A resource is incompatible and must be fully excluded | Ignored Scripts |
White lists & black lists
Entities and weapons use the same chip inputs. Type a model name or hash (or weapon name) and press Enter.
| List | What it does |
| White Listed Peds | Ped models that are always allowed (stops repeated ped false bans). |
| White Listed Objects | Object models that are always allowed. |
| White Listed Vehicles | Vehicle models that are always allowed. |
| Weapons Black List | Weapons players may never have (e.g. weapon_rpg, weapon_minigun). |
Seeing repeated false bans from the same ped, object, or vehicle? Whitelisting that model is the fix — see False Bans.
Key detection toggles
Main
| Toggle | Default | Purpose |
| Anti No-Clip | On | Detect no-clip. |
| Anti Teleport | Off | Detect teleport (position jumps). |
| Teleport Max Distance | 200 | Distance (metres) that counts as a teleport. |
| Anti Speed Hack | On | Detect speed hacks. |
| Anti Super Jump | On | Detect super jump. |
| Anti Resource Injection | On | Detect malicious resource injection. |
| Anti Resource Stop | On | Prevent stopping the FeloxAC resource. |
| Anti Trigger Server/Client Event | On | Block spoofed events. |
| Client Revive Event | — | Your custom revive event name (avoids revive false bans). |
Weapons
| Toggle | Default | Purpose |
| Anti Aim Bot / Silent Aim | On | Detect aimbot & silent aim. |
| Anti Weapon Damages Modifier | On | Detect damage multipliers. |
| Max Damage Multiplier | 2 | Max allowed damage multiplier. |
| Anti Give Weapons | On | Detect illegitimate weapon gives. |
| Weapons Black List | Off / list | Weapons players may never have. |
Entities
| Toggle | Default | Purpose |
| Anti Spawn Isolated Vehicles | On | Detect vehicles spawned without owner context. |
| Same Owner Vehicle Spawn Limit | 3 | Max vehicles one player may own. |
| Vehicles Limit In 5 Seconds | 7 | Vehicle spawn rate limit. |
| Anti Request Control | On | Detect entity control hijacking. |
| Anti Attach Vehicles | On | Detect illegal vehicle attaching. |
For scripts that legitimately teleport or give weapons, prefer Safe Events / Safe Scripts over disabling a whole detection. Turning a detection off removes protection for every player.
False Bans
Almost every false ban comes from an object, a vehicle, or a ped. In the vast majority of cases it is not the detection that is wrong — it is one of two things:
- The anti-cheat was not fully installed (the protection installer was never run), or
- Your server basics are not set up correctly (OneSync / license), or
- A legitimate resource keeps spawning the same entity, which just needs to be whitelisted.
Work top to bottom: fix the setup first, and only whitelist a specific model if the same ped / object / vehicle keeps triggering the ban.
Step 1 — Check your setup first
Most false bans disappear the moment the basics are correct:
- OneSync is ON —
set onesync on
- OneSync population is OFF —
set onesync_population false (this one is the most commonly forgotten)
- You have a paid FiveM (Keymaster) account — free / unlicensed setups cause detection problems
- You ran the installer —
fac install smart, then restarted the server
If any of these is missing, fix it and test again before whitelisting anything.
Ped false bans
If players are getting false-banned from a ped, it is almost always one of these:
- OneSync is not on
- No paid FiveM Keymaster account
onesync_population is not set to false (the forgotten command)
fac install smart was not run
Fix those first. If the ban always comes from the same ped, that ped is legitimate — add its model to the White Listed Peds list.
Object false bans
- If the anti-cheat keeps banning from objects in general,
fac install smart was most likely not run, so the protection was never installed. Run it and restart.
- If the ban is always from the same object, that object is legitimate — add it to the White Listed Objects list.
Vehicle false bans
- Make sure
fac install smart has been run and the server restarted.
- If a specific, legitimate vehicle is repeatedly flagged, add it to the White Listed Vehicles list.
How to whitelist a model
Whitelisting is done from the dashboard, using the chip inputs:
- White Listed Peds — for peds
- White Listed Objects — for objects
- White Listed Vehicles — for vehicles
Type the model (name or hash) into the "New item, press enter to add…" box and press Enter. Then run fac reload (or restart) to apply.
Only whitelist a model when you are sure it is legitimate. A whitelisted model is no longer checked, so don't whitelist something a cheater could abuse — fix the setup instead whenever possible.
When it's a script, not an entity
If the false ban is caused by a resource that teleports players or gives weapons (not by a spawned entity), use Safe Events or Safe Scripts instead — see Configuration.
Developer API (Exports)
FeloxAC exposes exports so your resources can ban/kick players, read player state, and tell the anti-cheat when an action is legitimate (admin teleports, heals, weapon gives, and so on).
All exports are called on the FeloxAC resource:
exports['FeloxAC']:exportName(args)
Call server exports from server scripts and client exports from client scripts. For the ban export, see the dedicated Ban Export page.
Server exports
Moderation
| Export | Signature | Description |
banPlayer | (source, reason, details?, duration?) | Ban a player. duration in seconds, -1 = permanent. |
kickPlayer | (source, reason, details?, duration?) | Kick a player. |
unbanPlayer | (banId, reason, from) | Unban a single ban by its ban ID. |
unbanAllPlayers | (from) | Unban everyone. |
getBanInfo | (banId) → found, banData | Look up a ban by ID. |
screenshot | (source, webhook) | Screenshot a player and upload to a Discord webhook. |
captureLastSeconds | (source, webhook) | Upload the player's last ~10s of gameplay to a webhook. |
-- Ban a player for 1 hour (3600 seconds)
exports['FeloxAC']:banPlayer(source, 'Aimbot', { by = 'Admin' }, 3600)
-- Unban by id
exports['FeloxAC']:unbanPlayer('BAN-ID-HERE', 'Appeal accepted', 'HeadAdmin')
Player state
| Export | Signature | Description |
getPlayerIdentifiers | (netId) → table | All identifiers (license, discord, ip…). Respects BanIpAddress. |
getPlayerTokens | (netId) → table | The player's hardware/session tokens. |
getThreatScore | (playerId) → number|nil | The player's cumulative threat score. |
getPlayTime | (playerId) → number|nil | The player's play time this session. |
hasBypass | (playerId) → boolean | Whether the player has anti-cheat bypass permission. |
Configuration
| Export | Signature | Description |
ReloadConfiguration | () → boolean | Reload configuration without a restart (same as fac reload). |
Legitimate-action markers (server)
These tell FeloxAC that an action performed by your script is intentional, so a detection does not fire. They are not security bypasses — they scope an allowance to a specific action.
| Export | Signature | Description |
markExternalTeleport | (sourceId, fallbackSource?) | Mark an upcoming teleport of this player as legitimate. |
markExternalHeal | (sourceId, fallbackSource?) | Mark a heal of this player as legitimate. |
registerLegalPedModel | (playerId, model) | Allow a ped-model change for this player. |
registerLegalSpeedModifier | (playerId) | Allow a movement-speed change for this player. |
registerLegalWeapon | (playerId, weaponHash) | Mark a weapon as legitimately owned (inventory integration). |
unregisterLegalWeapon / clearLegalWeapons | (playerId, weaponHash?) | Remove one / all legal-weapon registrations. |
registerLegalSuperJump | (playerId, durationMs) | Allow super jump for a duration (ms). |
CreateEntity | (modelHash) → entity | Create a server entity pre-approved by the anti-cheat. |
MarkServerEntity | (entity, modelHash) | Mark an existing server entity as legitimate. |
-- Admin teleports a player without a false ban
exports['FeloxAC']:markExternalTeleport(target)
SetEntityCoords(GetPlayerPed(target), x, y, z)
Client exports
Legitimate-action markers (client)
| Export | Description |
markExternalTeleport() / hasTeleported() | Mark the next local teleport as legitimate. |
markExternalHeal() / healthRefilled() | Mark a heal / health refill as legitimate. |
playerRevived() | Mark that the player was revived legitimately. |
resettedStamina() | Mark a legitimate stamina reset. |
hasAddedAmmo() | Mark a legitimate ammo add. |
hasChangedPedModel(model) | Mark a legitimate ped-model change. |
Godmode / player state (client)
| Export | Description |
proofsEnabled(toggle) | Enable/disable proof-of-life checks (legal godmode scripts). |
canBeDamaged(toggle) / isInvincible(toggle) | Mark the player as (not) damageable / invincible legitimately. |
isVisible(toggle) / canRagdoll(toggle) | Mark visibility / ragdoll legitimately. |
setSpectatorMode(toggle) | Enable/disable legitimate spectate. |
Weapons & damage (client)
| Export | Description |
giveWeapon(weaponHash, callsite) | Give a weapon through the anti-cheat-aware path. |
removeWeapon(weaponHash) / removeAllWeapons() | Remove one / all weapons. |
markToolScenario(scenarioName, callsite) | Whitelist a scenario/animation (admin tools). |
setNewDamage / setDamageModifier / removeDamageModifier | Set base damage, apply a multiplier, or remove it. |
Entities, camera & evidence (client)
| Export | Description |
CreateVehicle / CreatePed / CreateObject(modelHash) | Create anti-cheat-approved entities. |
ChangeVehiclePlate(vehicle, plateText) | Change a plate through the anti-cheat-aware path. |
allowTexture(textureDict) | Whitelist a texture dictionary. |
createCam / destroyCam / destroyCams | Whitelist cameras (legal freecam / admin tools). |
disableE2 / disableCamControls / disableAllControls | Disable inputs for admin tools. |
screenshot(webhook) / captureLastSeconds(webhook) | Capture the local player's screen / last ~10s. |
Prefer the Safe Scripts / Safe Events config allowlists when a whole resource or event is legitimate. Use these markers for one-off, per-action allowances inside your own code.
Ban Export
Use the banPlayer export to ban a player from any server-side script — your admin menu, a custom detection, a report system, and so on. The ban is applied through the same pipeline FeloxAC uses internally, so it is recorded in your ban list, synced to the dashboard, and logged to Discord.
Signature
exports['FeloxAC']:banPlayer(source, reason, details, duration)
| Parameter | Type | Required | Description |
source | number | ✅ | The player's server ID. |
reason | string | ✅ | The ban reason (shown in logs and the ban record). |
details | table | optional | Extra context logged with the ban (e.g. { by = 'Admin' }). |
duration | number | optional | Ban length in seconds. -1 = permanent. If omitted, the configured BanDuration is used. |
Returns: a boolean indicating whether the punishment was applied.
duration is measured in seconds, not milliseconds. Use -1 for a permanent ban and a positive number of seconds for a temporary one. Omit it to fall back to your dashboard BanDuration setting.
Examples
Permanent ban
-- Omitting duration uses your configured BanDuration (default: permanent)
exports['FeloxAC']:banPlayer(source, 'Cheating')
-- Or be explicit
exports['FeloxAC']:banPlayer(source, 'Cheating', nil, -1)
Temporary ban
-- Ban for 1 day (86400 seconds)
exports['FeloxAC']:banPlayer(source, 'Toxic behaviour', { by = 'Moderator' }, 86400)
| Duration | Seconds |
| 1 hour | 3600 |
| 1 day | 86400 |
| 1 week | 604800 |
| 30 days | 2592000 |
| Permanent | -1 |
Ban with rich details
exports['FeloxAC']:banPlayer(source, 'Money exploit', {
by = 'AutoDetect',
amount = 500000,
resource = GetCurrentResourceName(),
}, -1)
Ban from an admin command
RegisterCommand('myban', function(src, args)
local target = tonumber(args[1])
local reason = table.concat(args, ' ', 2)
if not target or reason == '' then
return print('Usage: myban [id] [reason]')
end
exports['FeloxAC']:banPlayer(target, reason, { by = GetPlayerName(src) }, -1)
end, true) -- restricted command
Ban from another resource via an event
-- In your other resource (server side)
RegisterNetEvent('myac:ban', function(targetId, reason, seconds)
exports['FeloxAC']:banPlayer(targetId, reason, { by = 'myac' }, seconds or -1)
end)
Always validate who is allowed to trigger a ban. Register admin/ban commands as restricted and never trust a raw client event without permission checks — otherwise a cheater could weaponise your ban handler.
Related exports
| Export | Purpose |
kickPlayer(source, reason, details?, duration?) | Kick instead of ban. |
unbanPlayer(banId, reason, from) | Reverse a ban by its ban ID. |
getBanInfo(banId) | Look up a ban record. |
unbanAllPlayers(from) | Clear all bans. |
Usage Examples
Copy-paste patterns for the most common integrations. All exports are called on the FeloxAC resource.
Admin teleport without a false ban
Mark the teleport as legitimate right before you move the player.
Server side:
RegisterCommand('tp', function(src, args)
local target = tonumber(args[1]) or src
exports['FeloxAC']:markExternalTeleport(target)
-- ... perform your teleport (SetEntityCoords on the target's ped) ...
end, true)
Client side (if you teleport locally):
exports['FeloxAC']:markExternalTeleport()
SetEntityCoords(PlayerPedId(), x, y, z, false, false, false, false)
Admin heal / revive without a false ban
-- Client side, before healing/reviving
exports['FeloxAC']:markExternalHeal()
SetEntityHealth(PlayerPedId(), 200)
-- After a revive
exports['FeloxAC']:playerRevived()
If you use a custom revive event, also set Client Revive Event in the dashboard to that event name so revives never trip a detection.
Give a weapon from a trusted script
The cleanest option is to add your resource to the Safe Scripts list in the dashboard, so its weapon gives are always trusted (see Configuration).
For a per-action allowance from client code instead:
exports['FeloxAC']:giveWeapon(GetHashKey('weapon_pistol'), 'my-weapon-shop')
The weapon blacklist always applies, even for Safe Scripts.
Ban a cheater from your own detection
-- Server side
if isCheating then
exports['FeloxAC']:banPlayer(source, 'Custom detection: money exploit', {
by = GetCurrentResourceName(),
}, -1)
end
See the Ban Export page for full details.
Gate content by threat score
-- Server side: deny a sensitive action to high-threat players
local score = exports['FeloxAC']:getThreatScore(source) or 0
if score > 75 then
TriggerClientEvent('chat:addMessage', source, { args = { 'System', 'Action temporarily unavailable.' } })
return
end
Collect evidence on demand
-- Server side: screenshot a suspicious player and post it to Discord
exports['FeloxAC']:screenshot(source, 'https://discord.com/api/webhooks/...')
-- Grab the last ~10 seconds of their gameplay
exports['FeloxAC']:captureLastSeconds(source, 'https://discord.com/api/webhooks/...')
Fix false bans from a job / rental script
If a specific event from a script teleports players or gives them items and causes false bans, add just that event to the Safe Events list in the dashboard (type the event name, press Enter). If the whole resource is trusted, use Safe Scripts instead.
For false bans caused by a spawned object, vehicle, or ped (not by a script), see False Bans.
Spawn entities that the anti-cheat trusts
-- Client side
local veh = exports['FeloxAC']:CreateVehicle(GetHashKey('adder'))
-- Server side
local ent = exports['FeloxAC']:CreateEntity(GetHashKey('prop_barrier_work05'))
Reload configuration after changes
exports['FeloxAC']:ReloadConfiguration()
Or from the console:
fac reload