Skip to content

FiniAC Triggers โ€‹

FiniAC's trigger system is a powerful automation tool that monitors your game server for specific events and automatically executes actions based on customizable conditions. Think of it as an "if-then" system: if certain conditions are met, then execute specific actions.

How Triggers Work โ€‹

Triggers continuously monitor two main event types on your server:

  • Player connections: When FiniAC handles a players connection to your server
  • Server logs: All logs generated by FiniAC on your server

When an event occurs, FiniAC evaluates it against your configured trigger conditions. If the conditions match, the trigger executes its defined actions automatically.

Creating Triggers โ€‹

Each trigger consists of:

  1. Name: A descriptive identifier for your trigger
  2. Conditions: Rules that determine when the trigger should activate
  3. Actions: What happens when the conditions are met (up to 5 actions per trigger)

Condition Builder โ€‹

The trigger condition builder is a visual interface that allows you to:

  • Combine multiple rules with AND/OR logic
  • Group rules into nested rulesets for complex conditions
  • Use various operators to match against player and log data

Available Condition Fields โ€‹

Player Information โ€‹

FieldDescriptionAvailable When
Player nameThe player's nameAlways
Player UIDSteamID (Arma) or license identifier (FiveM)Always
Player countryCountry code (e.g., US, CA, GB)Always
Player proxyWhether player is using VPN/proxyAlways
Player IPPlayer's IP address (supports CIDR notation)Always

Player session

When a player joins, FiniAC snapshots everything it knows about them (TrustScore, bans, account history, Discord checks) for the duration of their session. Every field below is read from that snapshot, so it is available on log events as well as connection events. If a player joined before the snapshot existed, these fields are unknown until they reconnect.

TrustScore & Ban Information โ€‹

FieldDescriptionAvailable When
TrustScorePlayer's TrustScore band. Bands are ordered Red < Orange < Yellow < Lime < Green, so <= Yellow matches Yellow, Orange and RedAlways
Global ban countNumber of global bans the player hasAlways
Ban countTotal bans (including local server bans)Always
Local ban countActive bans the player has on this serverAlways
Days since last global banDays since player's most recent global banAlways
Global expiredWhether player joined due to expired global ban, dependant on Global ban expiration config optionAlways
BlacklistedTwo or more active global bans for this gameAlways
IP bannedThe connection IP is banned on this serverAlways

Account & Reputation โ€‹

FieldDescriptionAvailable When
Cfx.re account ageAge of the player's Cfx.re account in days (unknown ages never match)Always
FiniAC account ageDays since FiniAC first saw the player on any serverAlways
Connection countConnections FiniAC has recorded for the player across all serversAlways
New accountFewer than 5 recorded connectionsAlways
In cheating DiscordThe player's Discord account is a member of a known cheating communityAlways
Cheating Discord countNumber of known cheating communities the player's Discord account is inAlways

Log Information โ€‹

FieldTypeDescriptionAvailable When
Log textStringRaw log message content including identifiersLog events
Log typeStringLog event type (e.g. MenuDetection)Log events
Log dataStringSerialized log data payloadLog events

Identifiers โ€‹

FieldTypeDescriptionAvailable When
IdentifiersStringJoined identifier values (for contains / not contains)Log events
idents.discordStringDiscord identifierLog events
idents.steamStringSteam identifierLog events

Use idents.<key> for any identifier key present on the log.

Cooldown โ€‹

Optional Cooldown (seconds) on each trigger. When set above 0, the same player cannot re-fire that triggerโ€™s actions until the window expires. Matches still show in Debug/Analytics; actions are skipped while cooled down.

Debug, Replay & Pack Tools โ€‹

  • Debug: dry-run a log or connection against live triggers without executing actions.
  • Replay (Analytics): re-run a recent match against current trigger rules and open Debug with the result.
  • Clone / Export / Import: duplicate a trigger, or move trigger packs between servers as portable JSON.

Available Operators โ€‹

OperatorDescriptionWorks With
=Equals (exact match)All field types
!=Not equalsAll field types
containsContains substringString fields
not containsDoes not contain substringString fields
>Greater thanNumber fields, TrustScore bands
>=Greater than or equalNumber fields, TrustScore bands
<Less thanNumber fields, TrustScore bands
<=Less than or equalNumber fields, TrustScore bands

IP Address & CIDR Support โ€‹

The Player IP field supports both individual IP addresses and CIDR notation:

  • Individual IP: 192.168.1.100
  • CIDR range: 192.168.1.0/24 (matches 192.168.1.1 through 192.168.1.254)
  • Larger networks: 10.0.0.0/8 (matches all 10.x.x.x addresses)
  • Can be compared with the = and != operators

Learn more about CIDR notation here.

Available Actions โ€‹

Ban Player โ€‹

Permanently removes the player from your server.
The action value will be shown as the ban message.

Kick Player โ€‹

Temporarily removes the player from your server.
The action value will be shown as the kick message.

Webhook โ€‹

Sends an HTTP POST request to a specified URL with trigger data.
Plus and Ultimate plan subscribers can send webhooks to any custom URL to connect with external systems.

  • Sends JSON payload with event data
  • Includes message, screenshot URL, log type, and raw data
  • Custom endpoints for integration with external systems

Configuration:

  • URL: Webhook endpoint
  • Message: Custom message with templating

Discord URLs

Webhook actions pointing at a discord.com webhook URL still send a Discord embed for backwards compatibility, but new triggers should use the dedicated Discord Webhook action below.

Discord Webhook โ€‹

Sends a rich embed to a Discord webhook.

  • Creates rich embeds with trigger information
  • Supports %screenshot% template for image embeds
  • Auto fields: player name, UID, log type; footer uses the server name

Configuration:

  • URL: Discord webhook URL
  • Message: Custom message with templating
  • Title (optional): Embed title (defaults to trigger name)
  • Color (optional): Embed color as #RRGGBB or decimal
  • Role ID (optional): Discord role to mention when the webhook fires

Run Script on Server โ€‹

Executes code directly on your game server.

FiveM:

  • JavaScript code execution
  • Example: console.log('%name% triggered anticheat')
  • Can use all server natives, such as TriggerEvent(), ExecuteCommand(), etc.

Arma:

  • SQF code execution
  • Access to remoteExec, publicVariable, etc.
  • Example: '%name% is cheating' remoteExec ['hint', -2];

Templating โ€‹

All action messages and scripts support templating using %variable% syntax:

Always Available โ€‹

  • %uid% - Player unique identifier
  • %name% - Player display name
  • %server.name% - Server name
  • %server.game% - Game type (arma/fivem)

Time Variables โ€‹

  • %time.unix% - Unix timestamp
  • %time.utc% - UTC time string
  • %time.iso% - ISO 8601 timestamp

Player Session โ€‹

Read from the join snapshot, so available on log events too. Any value FiniAC does not know renders as N/A.

  • %country% - Player country code
  • %ip% - Player IP address
  • %trustscore% - Player TrustScore band (green/lime/yellow/orange/red)
  • %bans.count% - Total ban count
  • %bans.global.count% - Global ban count
  • %bans.local.count% - Active bans on this server
  • %bans.global.expired% - Global ban expired status
  • %bans.global.days% - Days since last global ban
  • %cfx.age% - Cfx.re account age in days
  • %account.age% - Days since FiniAC first saw the player
  • %account.connections% - Connections recorded across all servers
  • %discord.cheating.count% - Known cheating communities the player's Discord is in

Log Events โ€‹

  • %log% - Raw log text
  • %log.beautified% - Formatted log text
  • %log.type% - Log event type
  • %log.data% - Log data payload
  • %screenshot.url% - Screenshot URL if available
  • %screenshot% - Special Discord embed variable

Player Identifiers โ€‹

  • %idents% - JSON of all player identifiers
  • %idents.steam% - Steam identifier
  • %idents.license% - License identifier
  • %idents.discord% - Discord identifier
  • %idents.{key}% - Any specific identifier

Limitations โ€‹

  • Maximum 5 actions per trigger
  • Some condition fields only available during specific events (connection vs. log)