Commands
Every Raven Anticheat command, where it runs, which in-game ability each one checks, and what the in-game admin menu does.
Raven is driven by a single command, rac. Run it from the server console for full access, or in game if your identifier is tagged for in-game staff access on your dashboard. Typed in game with no arguments it opens the admin menu. Every subcommand in game checks one ability off the list on that staff row, so access is decided on the dashboard and nowhere else. This page lists every subcommand, which ability it needs, what refuses one and why, and what each page of the menu does.
Where a command runs
There are two places a command can come from, and they do not have the same access. The server console means the txAdmin live console, the raw server window or an RCON session, and it can run everything, including the subcommands that write to resource files, with no ability checked on any of them. In game means a player with an in-game staff row, and it covers help, ban, kick, unban, clear and the menu, each behind its own ability. Everything else answers This command can only be run from the server console.
A third caller is refused outright. Another resource running ExecuteCommand('rac ...') is refused, and Raven prints a refusal naming it. That applies to every subcommand, so no script on your server can ban, clear or reinstall through the command.
| Command | Where | What it does |
|---|---|---|
rac | In game | Opens the admin menu, and closes it again if it is already open. From the console it prints "The admin menu only opens in game. Run "rac help" for the console commands." |
rac help | Both | Prints the command list. The console gets all twelve lines; in game you get the six that work there. |
rac status | Console | Prints "Server version: 1.8.9", marked "(Outdated)" when a newer build exists, then "Installed: 12/40" for twelve protected resources out of forty. |
rac dashboard | Console | Reports the live link to the dashboard and watches for 30 seconds when it is down. |
rac resource [resourceName] | Console | Checks one resource and says whether Raven is installed in it. The name has to match a loaded resource. |
rac ban [playerId] [reason] | Both | Bans an online player by server id. In game the reason is required and the ban is refused without one. From the console it is optional. |
rac kick [playerId] [reason] | Both | Kicks an online player by server id. The reason is optional in both places. |
rac unban [banId] [reason] | Both | Lifts a ban by its id. The reason is optional. |
rac clear [peds|vehicles|objects|all] | Both | Asks the dashboard to delete world entities. The argument is required. The console path is off until you turn it on. |
rac install [resourceName] | Console | Writes Raven into one resource, or into every resource when the name is left off. |
rac uninstall [resourceName] | Console | Removes Raven from one resource, or from every resource when the name is left off. |
rac update | Console | Downloads the newest build and writes it into the Raven folder without restarting the anticheat. |
rac update --force | Console | Downloads the build and restarts the anticheat so it takes effect. "rac update force" is accepted too. |
What each subcommand needs in game
Reaching the rac command at all needs an in-game staff row. Past that, each subcommand reads one ability off that row, and a row with nothing ticked can print the help and nothing else. There is no second route: no ace right, no server.cfg value and no console convar widens what a player in game may do. See Ace permissions for what became of the old rac.* rights.
| Subcommand | Ability it reads | Notes |
|---|---|---|
rac | players:view | The menu will not open without it, and it is the ability every other one is useless without, so it is held ticked for you as soon as you tick anything else. |
rac help | Nothing beyond a staff row | Printing the six in-game lines is not gated on an ability. |
rac ban | players:ban | Checked before the player id is even read, so a refusal costs nothing. |
rac kick | players:kick | Same check, same place. |
rac unban | bans:remove | The same ability the menu reads for lifting a ban. |
rac clear | entities:peds, entities:vehicles, entities:objects | One per type asked for, so rac clear all needs all three. The dashboard checks the player a second time on top of this. |
Status and info
rac status and rac resource
Both are console only and both just read. rac status prints the build version and how many of your resources are protected. rac resource esx_ambulancejob checks one resource by its exact name and says whether Raven is installed in it, or that the resource was not found.
rac dashboard
Reports the live WebSocket link between the server and the dashboard. When it reports a disconnection it also starts a one-off watcher that prints Dashboard: reconnected. if the link comes back within 30 seconds, and otherwise tells you to check your license, the server IP and that ws.ravenac.net is reachable.
| Line printed | What it means |
|---|---|
Dashboard: connected over WebSocket. Last activity 4 seconds ago. | Healthy. The seconds count from the last contact. |
Dashboard: connected over WebSocket. | Healthy, but no contact has been timed yet this run, so there are no seconds to print. |
Dashboard: disconnected (last activity 96 seconds ago). Trying to reconnect... | The link dropped after working at least once. Raven keeps retrying on its own. |
Dashboard: not connected yet. Trying to reach it... | The link has never come up this run. |
Dashboard: not initialized yet. The license is still being verified. | Verification has not finished, so there is nothing to report yet. |
Moderate players
Ban, kick and unban all go through the dashboard, so the server has to be verified and reachable. A ban is recorded first and the player is dropped afterwards, which is why the command answers with a ban id rather than instantly.
A ban typed in game needs a reason written after the player id. Without one it is refused and no ban is recorded, because the reason is what every surface shows afterwards and what the player reads on the way out. A kick in game falls back to Kicked by an admin. and the console may ban without a reason the same way.
On resource 1.8.9 and newer a refusal from the dashboard carries its own reason, so an unban for an id that does not exist reads Ban not found rather than looking like a lost connection. An IP-lock refusal is rewritten so the address is never printed; see IP reset requests. On an older resource most refusals read the generic connection line whatever the dashboard said.
| Message | What it means |
|---|---|
Server is not verified. Cannot execute commands. | The license has not been confirmed. Check the key and that the server can reach the dashboard. |
You do not have permission to run Raven admin commands. | In game with no in-game staff row on that server, so there is nothing to check an ability against. An ace right does not get past this. Repeated for the same player at most once every 5 seconds. |
You do not have permission for that. | In game with a staff row that does not hold the ability this subcommand needs, which is the table above. The same line covers a clear where one of the requested types is missing. |
This command can only be run from the server console. | A console-only subcommand typed in game. |
Refused. Resource "myscript" tried to run "rac ban" through ExecuteCommand. | Another resource called the command. Every subcommand is refused this way, not just clear. |
Usage: rac ban [playerId] [reason] | The player id was missing or not a number. |
A ban needs a reason. Usage: rac ban [playerId] [reason] | In game only. A ban typed with no reason after the id is refused and nothing is recorded. A kick does not need one. |
Player 12 is not online. | Nobody is connected on that server id. |
You cannot use this command on yourself. | In game only. The console has no id to compare against. |
That player is staff at your level or above. Change their row on the dashboard first. | In game only, on a kick or a ban. An Admin can act on a Moderator, a Moderator on anybody who is not staff, and neither on their own level. The console can ban or kick anyone. |
Ban not found. | The dashboard has no ban with that id. Resource 1.8.9 and newer passes the reason straight through. |
This server is not on the IP its Raven license is locked to. The owner can request an IP reset from the dashboard | The license is locked elsewhere. The address itself is never printed. |
Failed to connect to ban API | The reply could not be read at all: the dashboard was out of reach, or the FiveM artifact drops refused replies. The same line exists for kick and unban. |
Rate limits
Each limit is counted per player, and every console caller shares one bucket. On top of the bursts below, only one rac command per caller may be waiting on the dashboard at a time: a second one reads Raven is still waiting on your last command. Let it answer before running another one. and that hold clears after 30 seconds even if the first never answers.
| Command | Burst | Window |
|---|---|---|
rac ban | 3 | 10 seconds |
rac kick | 3 | 10 seconds |
rac unban | 3 | 10 seconds |
rac clear | 1 | 60 seconds |
Install and update
rac install writes Raven into one resource, or into every resource when you leave the name off. Each resource reports back as installed or failed and you get a final tally. From 1.9.3 it leaves out every resource on the Resources Installation whitelist, and refuses a whitelisted resource you name until you take it off the list. rac uninstall is the reverse, and is what to run before you share or edit a resource so it goes back to its original files.
rac update updates Raven itself: it downloads the newest build and writes it into the Raven resource folder. It does not touch your other resources, and re-applying Raven across those is rac install. Run by hand without --force it leaves the anticheat running on the old files and prints Files updated without restarting. Run "rac update --force" to restart the anticheat and apply them. With --force it refreshes and restarts the resource. An update Raven starts on its own, because the cloud said the build was out of date, restarts without being asked.
Clear the world
rac clear [peds|vehicles|objects|all] deletes world entities of the chosen kind, and all clears peds, vehicles and objects together. The argument is required: with none, the command prints its usage line and clears nothing. Players keep their own characters, though clearing vehicles removes the ones they are driving.
In game it is checked twice over. The game server reads the player's own row first and needs the ability for every type asked for, so rac clear all needs all three. Then the request goes to the dashboard, which matches the player to a dashboard account by their discord: identifier and checks the same three World ticks there. A refusal is reported as it was given, and so is a failure that happened after approval, with the counts that went through before it stopped. Every approved clear is written to the Activity Log with who asked for it and how many entities went.
The admin menu
In game, rac with nothing after it opens the admin menu, and typing it again closes it. That needs players:view. The menu mirrors the dashboard rather than inventing its own layout, and each thing it does is gated on its own ability, so a staff member who can open the menu does not automatically get everything inside it.
| Page | What it holds | Abilities it reads |
|---|---|---|
| Overview | Protection and uptime cards, trust spread, the players-online chart, the lowest-trust watch list and the message composer. | players:view, and the composer on players:message or players:announce |
| Players List | Every connected player with trust, ping, play time and vitals, plus kick, ban, watch and the Staff panel. | players:kick, players:ban, players:stream, players:message, moderators:view, moderators:edit, moderators:whitelist |
| Multi Stream | Up to six player screens side by side. | players:stream |
| World | Clear peds, vehicles or objects, and the same message composer. | entities:peds, entities:vehicles, entities:objects, and the composer on players:message or players:announce |
| Bans List | The active bans, opening one for its evidence, and lifting it. | bans:view, bans:remove |
Below the five pages the sidebar has a footer of its own, holding two icon-only buttons rather than a sixth page: a cog that opens Menu Settings, and an arrow that narrows the sidebar to its icons and widens it again. Both keep a label for a screen reader even though neither shows one on screen. The header carries a search box that matches a player or ban by name or id, and it is cleared whenever you change page.
Acting on a player
Picking a player on the Players List opens a panel with their vitals and a row of actions. Kick needs players:kick, Ban needs players:ban, Live stream needs players:stream and Message needs players:message. Each one you do not hold is drawn as a disabled button whose hover text says so, rather than being hidden, so the panel reads the same for everybody and nobody wonders whether a button exists.
From resource 1.9.2, Live stream also works on yourself, which is a quick way to see what a stream shows before you rely on it. Your own row in the Multi Stream picker and your own stream tile carry a You tag. When a stream fails to open or is cut off, its tile now says why, for example that the server is not connected to Raven, the link expired, or too many live views were opened at once.
Both Kick and Ban open a small composer rather than firing at once. A kick may be sent with it empty and falls back to the standard reason; a ban cannot, and the Ban button stays disabled with Type why this player is being banned. until something is written. The cap is 160 characters either way. The game server checks the same thing again when the request arrives, so a ban with no reason is refused there too.
Kick and Ban also read the levels. A Moderator may act on anybody who is not staff, an Admin may act on a Moderator as well, and neither may act on their own level or on themselves. The button is disabled with You cannot act on someone at your own level or above., and a request sent past it answers That player is staff at your level or above. Change their row on the dashboard first.
The Staff panel
The same player panel carries a Staff card for anyone holding one of the three moderator abilities. It shows that player's in-game level, whether they are whitelisted, and which of the fourteen abilities they hold, and it offers the four management actions to an Admin.
| On the Staff panel | Ability | What happens today |
|---|---|---|
| Reading a level, a whitelist and an ability list | moderators:view | Works. The panel lists all fourteen abilities and ticks the ones that player holds. |
| Make moderator, Edit abilities | moderators:edit | Offered to an Admin acting on a Moderator, checked against every rule, and then not saved. |
| Remove moderator | moderators:edit | Same: offered, checked, not saved. |
| Give whitelist, Take whitelist | moderators:whitelist | Same: offered, checked, not saved. |
The roster the panel reads walks the connected players only, because the game server cannot read your moderator list itself. A staff member who is offline, and a row you tagged by identifier for somebody who has never connected, do not appear there at all. Reads are capped at six in 15 seconds and each write at three in 30 seconds. See Admins and moderators for the rules in full.
Filter and sort
Players List, Multi Stream and Bans List each carry a Filter control and a separate Sort control, to the same model as the dashboard, so a band means the same thing in both halves of the product. Filter takes as many choices at once as you like. Sort takes one key and a direction and narrows nothing.
Choices on different fields narrow each other, and choices on the same field widen it. Role Admin with Ping 150+ is the admins who also have a high ping; Trust 0-19 with Trust 20-39 is either band. A player carries every role that applies, so an admin who is also whitelisted matches both. The age bands on the Bans List overlap the way the dashboard's do, so Last 7 days includes the last 24 hours and Last 30 days includes the last week.
| Filter | Pages | Choices |
|---|---|---|
| Role | Players List, Multi Stream | Admin, Whitelist, Neither |
| Trust | Players List, Multi Stream | 80 - 100, 60 - 79, 40 - 59, 20 - 39, 0 - 19, Not rated |
| Ping | Players List, Multi Stream | Under 50, 50 - 99, 100 - 149, 150+ |
| Play time | Players List, Multi Stream | Under 1h, 1 - 10h, 10h+ |
| Stream | Multi Stream | Watching, Not watching |
| Kind | Bans List | Manual, Detection |
| Banned by | Bans List | Admin, Console, Resource |
| Age | Bans List | Last 24h, Last 7 days, Last 30 days, Older |
| Page | Sort keys | Opens on |
|---|---|---|
| Players List | Default, Name, ID, Trust, Ping, Play time | Default, ascending |
| Multi Stream | Default, Name, ID, Trust, Ping, Play time | Default, ascending |
| Bans List | Date, Name | Date, descending |
The bar itself holds the Filter button, which carries a badge with the number of choices held, the Sort button, one removable token per active choice, and the count, which reads 12 of 48. Clear all is inside the Filter panel, at the top beside Filter by, and it is greyed out while nothing is held. A list the filters emptied says how many filters are hiding everything and offers to clear them there, rather than reading as an empty server. Both controls live in the menu for the session only and are per page, so nothing leaks from one page to another and nothing survives a reconnect.
Messaging from the menu
The Overview and the World page carry the same Message panel, so writing to somebody is never a walk across the menu. It is one composer with a Direct message or Announcement choice at the top of it, the same shape as the dashboard's. The cap and the counter follow the mode, text you have already typed survives a switch, and the mode and the half-written draft are one choice across both pages rather than one each. Both kinds carry the name of the admin who sent them. The game server trims by characters rather than bytes, so text in Cyrillic, Chinese or another non-Latin script arrives whole.
| Mode | Ability | Characters | Reaches | Limit |
|---|---|---|---|---|
| Direct message | players:message | 240 | 1 to 20 players you pick | 4 every 20 seconds |
| Announcement | players:announce | 200 | every screen on the server | 1 a minute, and 1 every 20 seconds across all admins |
The switch only offers what you hold, because the two abilities are separate and neither is ever included in a broader grant. Holding both opens the composer on Announcement: that is the mode with no picker in it, which is what lets the composer sit in the Overview's row of cards instead of turning a glance screen into a form, and it is the mode that can send the moment it opens, where a direct message cannot until somebody has been picked. Holding one means the composer opens in that mode with no switch drawn, so a staff member with direct messages alone never meets an announcement default they could not have used. Holding neither means no composer. The server checks the ability again on the way in, so this is about not offering something that would be refused rather than about security.
Players online
The chart on the Overview is built from hourly samples, newest on the right, and the game server keeps at most 24 of them. The first sample is taken the moment Raven starts, so the label counts intervals rather than samples: one sample reads Since startup, two read Last hour, and a full buffer reads Last 23 hours, which is the longest span the panel can print. The span is also held down by how long the server has been up, so a server six hours into its run says Last 6 hours rather than claiming a day it has not been up for. A sample a minute over one hour, which is what it used to be, told an admin nothing the Players List was not already showing.
The peak printed beside the span is the highest of the hourly samples on the line, so it is the highest point you can see and it can miss a rush that came and went between two samples. The Peak online line on the Protection card catches those, because it is checked every minute, so it can be a number no point on the line reaches.
The Acted on card and the Peak online line count from when the anticheat last started, and their label says over what. They read this uptime when that is within two minutes of the whole time the server has been up, and in 25m or similar when Raven was restarted on a server that stayed up, so neither claims the span on the Uptime card beside them. For the first minute after such a restart they read in <1m.
When the menu loses touch
The menu is fed by a push from the game server every two seconds. A push cannot tell you that pushes have stopped, so a timer watches for silence instead, and there are three different things that silence can mean.
| What happened | What you see | How much it takes over |
|---|---|---|
| The game server stopped pushing for more than 8 seconds | Connection lost | Replaces the body. The sidebar and header stay where they are. |
| Your own machine reports it is offline | No network connection | Replaces the body. Worded apart because the remedy is different. |
| The dashboard did not answer the ban fetch | Cloud unreachable | Shows inside the Bans List only. The players list and the world controls keep working, and it retries on its own. |
Recovery is automatic in every case. The next push clears it with no reload and nothing to click, so it is never a state you can get into and not out of. That same push is what carries the abilities, so an ability taken off somebody on the dashboard while their menu is open is gone from it within a couple of seconds rather than at their next connect.
Settings
The cog in the sidebar footer opens Menu Settings. It needs no ability of its own: it changes how the menu draws for you and reaches nothing on the server.
| Setting | Default | What it does |
|---|---|---|
| Menu text size | 50% | A slider from 0 to 100% in steps of 5, with 50% marked as the normal size. It scales the text only: the window, the cards and their padding hold still. |
| Keep game controls while the menu is open | Off | Lets the game keep receiving input underneath, so you can walk and look around with the menu up. Typing still goes to the menu. |
| Lock the menu in place | Off | Stops the window being dragged or resized. It is still kept on screen if the resolution changes. |
Granting in-game access
There is nothing to put in server.cfg for this. On the dashboard, under Management, open In-Game Moderators, add the player's identifier, tick In-game staff and tick the abilities they need. If they are connected, Moderator Access on their card in the Players List opens the same screen without your having to copy an identifier. A change to a connected server takes effect in that session.
System command permission
Install, uninstall, and update read and write resource files, which needs permission to run system commands. If that permission is missing, Raven stops and prints the two lines to add. Put them in your server.cfg (swap rac for your resource folder name) and restart the server.
add_ace resource.rac command allow
add_unsafe_child_process_permission "rac"These two are about what the Raven resource itself may do on the host, and have nothing to do with the rac.* player rights. The add_ace line is also what lets Raven stop itself if your license expires while the server is running. Without it Raven tears its detections down, stays loaded and asks you to run stop rac by hand. See Troubleshooting. It also lets Raven restart once an update has written the new files. Without it, resource 1.8.9 and newer prints Restart the anticheat to apply the update: ensure rac instead, and the update takes effect when you run that.