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

CategoryExamples
MovementNo-clip, teleport, speed hacks, super jump, freecam, spectate
CombatAimbot, silent aim, no-recoil, no-reload, damage modifiers, hitbox modifiers, explosive/spoofed bullets, kill-rate spam
WeaponsIllegitimate weapon gives, weapon spawners, ammo cheats, blacklisted weapons
EntitiesVehicle/ped/object spawn floods, entity deletion, vehicle attach/throw, handling & speed modifiers, request-control hijacks
ExplosionsExplosion floods, inaudible/invisible explosions, malicious particles
InjectionResource injection, backdoors, event spoofing (client & server), Lua menus, dev tools
IntegrityResource-stop protection, runtime tamper detection, heartbeat/watchdog

How it works

  1. Client detection modules watch for cheat behaviour on each player and report to the server.
  2. 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.
  3. 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

RequirementValue
FiveM artifact (server build)14317 or newer
OneSyncEnabled (required)
fx_versioncerulean
Lualua54 'yes'
LicenseAn 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

RequirementValue
Server build (artifact)14317 or newer
OneSyncEnabled
fx_versioncerulean
Lualua54 'yes'
LicenseActive FeloxAC license for your server IP

Step 1 — Get your license

  1. Purchase a license at feloxac.com.
  2. Open your dashboard and go to Redeem Key.
  3. 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

  1. Download the FeloxAC resource from your dashboard's Download page.
  2. Extract it into your server's resources/ folder.
  3. 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

  1. Open license.txt inside the FeloxAC folder and delete everything in it.
  2. In your dashboard, go to Documentation → Replace license.txt.
  3. Select your server, click Copy license.txt Content, and paste it into license.txt.
  4. 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.

  1. Start your server.
  2. Open the Live Console (txAdmin or the server console) and run:
    fac install smart
  3. Wait for the installation to finish.
  4. 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

CommandDescription
fac install smartRecommended. Only protects resources that use network events.
fac install / fac install allProtects every resource.
fac install optimizeProtects 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

SectionPurpose
SettingsServer-wide options: bans, webhooks, logging, command prefix, and script allowlists.
MainMovement & general client cheats (no-clip, teleport, speed, godmode, injection, event spoofing).
WeaponsCombat & weapon detections (aimbot, damage, ammo, blacklists).
EntitiesVehicle / ped / object spawning and manipulation.
ExplosionsExplosion & particle detections.
PunishmentsPer-detection action: Ban, Kick, or Log.

Punishment modes (Ban / Kick / Log)

ModeBehaviour
BanPermanently bans the player (until unbanned from the dashboard).
KickDisconnects the player; they can rejoin.
LogNo 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?

SituationUse
One event from a script causes false bansSafe Events
A whole resource legitimately teleports / gives weaponsSafe Scripts
A resource is incompatible and must be fully excludedIgnored 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.

ListWhat it does
White Listed PedsPed models that are always allowed (stops repeated ped false bans).
White Listed ObjectsObject models that are always allowed.
White Listed VehiclesVehicle models that are always allowed.
Weapons Black ListWeapons 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

ToggleDefaultPurpose
Anti No-ClipOnDetect no-clip.
Anti TeleportOffDetect teleport (position jumps).
Teleport Max Distance200Distance (metres) that counts as a teleport.
Anti Speed HackOnDetect speed hacks.
Anti Super JumpOnDetect super jump.
Anti Resource InjectionOnDetect malicious resource injection.
Anti Resource StopOnPrevent stopping the FeloxAC resource.
Anti Trigger Server/Client EventOnBlock spoofed events.
Client Revive EventYour custom revive event name (avoids revive false bans).

Weapons

ToggleDefaultPurpose
Anti Aim Bot / Silent AimOnDetect aimbot & silent aim.
Anti Weapon Damages ModifierOnDetect damage multipliers.
Max Damage Multiplier2Max allowed damage multiplier.
Anti Give WeaponsOnDetect illegitimate weapon gives.
Weapons Black ListOff / listWeapons players may never have.

Entities

ToggleDefaultPurpose
Anti Spawn Isolated VehiclesOnDetect vehicles spawned without owner context.
Same Owner Vehicle Spawn Limit3Max vehicles one player may own.
Vehicles Limit In 5 Seconds7Vehicle spawn rate limit.
Anti Request ControlOnDetect entity control hijacking.
Anti Attach VehiclesOnDetect 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:

  1. The anti-cheat was not fully installed (the protection installer was never run), or
  2. Your server basics are not set up correctly (OneSync / license), or
  3. 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 ONset onesync on
  • OneSync population is OFFset 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 installerfac 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

ExportSignatureDescription
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, banDataLook 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

ExportSignatureDescription
getPlayerIdentifiers(netId)tableAll identifiers (license, discord, ip…). Respects BanIpAddress.
getPlayerTokens(netId)tableThe player's hardware/session tokens.
getThreatScore(playerId)number|nilThe player's cumulative threat score.
getPlayTime(playerId)number|nilThe player's play time this session.
hasBypass(playerId)booleanWhether the player has anti-cheat bypass permission.

Configuration

ExportSignatureDescription
ReloadConfiguration()booleanReload 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.

ExportSignatureDescription
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)entityCreate 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)

ExportDescription
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)

ExportDescription
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)

ExportDescription
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 / removeDamageModifierSet base damage, apply a multiplier, or remove it.

Entities, camera & evidence (client)

ExportDescription
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 / destroyCamsWhitelist cameras (legal freecam / admin tools).
disableE2 / disableCamControls / disableAllControlsDisable 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)
ParameterTypeRequiredDescription
sourcenumberThe player's server ID.
reasonstringThe ban reason (shown in logs and the ban record).
detailstableoptionalExtra context logged with the ban (e.g. { by = 'Admin' }).
durationnumberoptionalBan 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)
DurationSeconds
1 hour3600
1 day86400
1 week604800
30 days2592000
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

ExportPurpose
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