Anti-cheat guide
Server setup
Several settings in mtaserver.conf control AC behaviour for a server:
<disableac></disableac>
Comma separated list of disabled anti-cheats. This setting disables specific AC codes. If a detection is triggered and it's not disabled by the server, a player will get kicked and be shown the AC code corresponding to that detection.
DISCLAIMER: Please note that this will only void the AC # kick for using GTA singleplayer cheats and some very basic, outdated and patched MP cheats (such as s0beit). Hacks & cheats designed for MTA or other general hacking tools may trigger a Global ban. If you try to use a typical MTA cheat or hacktool under the belief using disableAC will save your day, and get banned for a while, it's your own fault, regardless of this setting being used to disable any of the AC classifications that it may fall under.
There is also a good chance that disabling certain detections won't enable your players to (even) use the majority of 'basic' GTA:SA trainers, but result in a kick only. Due to the current state of MTA anti-cheat, and its advanced heuristics, it's simply not feasible to try and create a freehaven for cheaters. You can experiment, but we don't recommend using disableac for these reasons.
Note: With trainer, cheats (for MTA or GTA) or forbidden cheat tools are meant. This is especially true for AC #4.
Please note that getting kicked for anything listed here isn't neccesarily (intended) hacking, someone can open hacktools that they plan to use for another game, while both that game and MTA are opened, and be kicked.
It's also possible that someone isn't aware of certain software containing hack/tamper features (making it prohibited) when they run it and get kicked.
Basically, (the intent of) cheating on MTA or your server can never be proven by triggering these detections alone.
Available codes are:
Code for <disableac> | Displayed on detect | Required server version | Required <minclientversion> | Notes |
---|---|---|---|---|
1 | AC #1 | any | Classic health/armour hack detector | |
2 | AC #2 | any | Corrupted dll files | |
4 | AC #4 | any | Detects presence of trainer. Capital letters in the message are for tagging particular trainers | |
5 | AC #5 | any | Detects use of trainer. | |
6 | VF #6 | any | Detects use of trainer incl.: player movement, health/damage, weapons, money, gamespeed, game cheats, aimbot | |
7 | VF #7 | any | Detects use of trainer. | |
8 | VF #8 | any | Detects unauthorized mods | |
11 | AC #11 | any | More trainers | |
VF #11 | any | Dll injector / Trainer | ||
13 | SD #13 | any | Data files issue | |
17 | VF #17 | any | Speed / wall hacks | |
21 | AC #21 | any | 1.3.1-9.05097 | More trainers |
VF #21 | any | 1.3.1-9.05097 | Custom gta_sa.exe | |
26 | SD #26 | any | 1.3.4-9.05858 | Anti-cheat component blocked |
<enablesd></enablesd>
Comma separated list of enabled Special Detections (SD #). A special detection is a type of anti-cheat for (usually) harmless game modifications. Competitive servers or servers dealing with a certain problem structurally may wish to enable special detections, but most servers should leave this setting blank. Available codes are:
Code for <enablesd> | Displayed on detect | Required server version | Required <minclientversion> | Notes | |
---|---|---|---|---|---|
12 | SD #12 | any | Disallow custom D3D9.DLL | ||
14 | SD #14 | 1.3.1-9.04605 | 1.3.1-9.04605 | Disallow virtual machines such as VMWare | |
15 | SD #15 | 1.3.1-9.04791 | 1.3.1-9.04791 | Disallow disabled driver signing | |
16 | SD #16 | 1.3.1-9.05097 | 1.3.1-9.05097 | Disallow disabled anti-cheat components. This is triggered when an anti-cheat component can not start. It is usually due to some problem with the PC and might be fixed by a reboot. Can also be triggered by a virus. | |
20 | SD #20 | 1.3.1-9.05097 | 1.3.1-9.05097 | Disallow non-standard gta3.img or gta_int.img (For servers not using onPlayerModInfo) | |
22 | SD #22 | 1.3.4-9.05884 | 1.3.4-9.05884 | Disallow resource download errors/corruption (Lua script files) | |
23 | SD #23 | 1.3.4-9.05884 | 1.5.2-9.07911 | Disallow resource download errors/corruption (Non-Lua files e.g. png,dff) | |
28 | SD #28 | 1.3.4-9.05884 | 1.3.4-9.05884 | Disallow Linux Wine | |
31 | SD #31 | 1.5.3 | 1.5.3-9.11204 | Ignore injected keyboard inputs (e.g. from AutoHotKey, macro's and on screen keyboard) | |
32 | SD #32 | 1.5.3 | 1.5.4-9.11528 | Ignore injected mouse button inputs and movement (this detection can prevent an ambigious type of aim hacks (bullet spread/recoil manipulation) | |
33 | SD #33 | 1.5.6 | 1.5.6 | Disallow software of the category 'Net limiter' (ideal for lagswitching or causing structural lag, but may also be used for benign purposes) | |
34 | SD #34 | 1.5.6 | 1.5.6 | Disallow internet café users (only use as last resort to combat mass ban evasion using café PC's) |
We are constantly working on keeping the definitions for above SD (special detections) up-to-date, so as to ensure all violating software or circumstances that you opt-in to disable gets detected once used. While we are pro-actively checking if new or unknown software/tools are still being detected under the same signature, it's possible that something slips through the cracks. Therefore, you can help us if you come across anything that should be detectable using SD # but is not currently; send a forum PM to Dutchman101 or ccw with your report.
<client_file name="data/carmods.dat" verify="0"/>
By default, clients may not join a server if they have customized GTA:SA data files. Adding one or more of the above lines excludes files from validation. The file names that can be used are:
- "data/carmods.dat"
- "data/animgrp.dat"
- "data/ar_stats.dat"
- "data/melee.dat"
- "data/clothes.dat"
- "data/object.dat"
- "data/default.dat"
- "data/surface.dat"
- "data/default.ide"
- "data/gta.dat"
- "data/surfinfo.dat"
- "data/peds.ide"
- "data/vehicles.ide"
- "data/pedstats.dat"
- "data/water.dat"
- "data/txdcut.ide"
- "data/water1.dat"
- "models/coll/weapons.col"
- "data/weapon.dat"
- "data/plants.dat"
- "anim/ped.ifp"
- "data/furnitur.dat"
- "data/procobj.dat"
- "data/maps"
Note 1: "data/maps" represents all the files and directories within "data/maps"
Note 2: "data/handling.cfg" is not included as it is always ignored by MTA because of the internal vehicle handling functions. See here if you want to load custom handling.cfg files
<hideac></hideac>
You can use this setting in mtaserver.conf to hide the AC info from the client, showing the following line upon join:
Server AC info: [Allowed client files: Undisclosed] [Disabled AC: Undisclosed] [Enabled SD: Undisclosed]
Values: 0 - disabled, 1 - enabled; default value: 0.
Client
When joining a server, the server AC info is displayed in the client console (F8)
Example:
Server AC Info: [Allowed client files: None] [Disabled AC: None] [Enabled SD: None]
Disabled AC contains the contents of the server setting from <disableac></disableac>
Enabled SD contains the contents of the server setting from <enablesd></enablesd>
Allowed client files contains numbers to indicate which client files the server allows to be modified. The numbers represent these files:
- 1 - "data/carmods.dat"
- 2 - "data/animgrp.dat"
- 4 - "data/ar_stats.dat"
- 5 - "data/melee.dat"
- 6 - "data/clothes.dat"
- 7 - "data/object.dat"
- 8 - "data/default.dat"
- 9 - "data/surface.dat"
- 10 - "data/default.ide"
- 12 - "data/gta.dat"
- 13 - "data/surfinfo.dat"
- 14 - "data/peds.ide"
- 15 - "data/vehicles.ide"
- 16 - "data/pedstats.dat"
- 17 - "data/water.dat"
- 18 - "data/txdcut.ide"
- 19 - "data/water1.dat"
- 20 - "models/coll/weapons.col"
- 21 - "data/weapon.dat"
- 22 - "data/plants.dat"
- 23 - "anim/ped.ifp"
- 24 - "data/furnitur.dat"
- 25 - "data/procobj.dat"
- 26 - "data/maps"
Note: If the info is marked "Undisclosed", it means that the server has decided not to disclose the AC info to the client.
Using modified files
If you want to use modified data files from your GTA:SA install directory, check this check box:
Settings -> Multiplayer -> Use customized GTA:SA files
(checkbox only appears if your GTA:SA data files are customized)
Note: This will restrict your access to some public servers as most do not allow customized data files.
AC Panel resource
An anti-cheat helper resource called acpanel is included with the default resources.
It shows the current anti-cheat status of your server, along with an option to keep your clients up to date and a basic implementation of onPlayerModInfo to block modified img files.
AC Guide purpose
The toolset available to server owners, as described in the AC guide, is intended to provide methods to reduce several types of unfair advantage that a player may get over others. It is not related to core MTA anti-cheat (the way we continuously fend off hackers using cheats designed for MTA), which you cannot exercise any control over (more on that is listed in the <disableac> header at the beginning of this page).
The definition of 'preventing unfair advantage' truly depends on the type of server (gamemode) and competitiveness. You always got to think out a custom approach depending on your server's needs. Good examples of what is possible for you to achieve and to what sort of gamemode they belong;
- Disabling client GTA mods (custom gta3.img) to prevent any sort of "small skin" abuse (a form where the player's skin has a small hitbox, while the attacker's screen shows it as if bullets collided anywhere). Removed world objects to gain unfair advantage in maps or areas where combat takes place, in order to easily see (or shoot) through them, or vehicle mods which have been stripped of its collisions, are also combatted by these means.
- Disabling mouse and keyboard button macro's using SD #31 & 32 if you have a server revolving around combat (like easily affected by macro's facilitating server bug abuse, "binds" enabling easy (stealth)kills using macro combinations rather than natural skill, certain types of aim hackery as described in the <enablesd> column for SD #32, or custom trainers that can be made to interact with your gamemode's GUIs (think of an auto-cracker for a bankrob cracking pad script: they may succeed to inject the desired input into the game and crack the math inhumanly). This detection may serve as a heuristic for possible future cheats and unfair advantage tools that are not yet anticipated.
Also, with SD #31 and #32 you can prevent mass-firing of performance-intensive serverside function calls (such as commands or GUI buttons). Without using this, and if your gamemode doesn't gave proper timer management, it is possible for malicious players to create macro binds (e.g commands bound to call serverside functions) and induce server lag by massively triggering them, for example 1000 times a second using a macro capable of doing so. This is not related to gaining unfair advantages, but your gamemode's existing code measures make or break the feasability of blocking macro key or mouse button inputs.