Antiaim Metamod plugin
Short description
This plugin implements a system for detecting aim bots on the client side.
Essentially, it sits on the server side and monitors/analyses client's
moves (mouse and keyboard) and makes a decision about the usage of the
aim bot on the client's side. This is done by a simple neural net which
was trained using the data generated by playing counter strike with and
without using a cheat. The plugin preforms relatively well with respect
to the time and resources which I had to generate the training data as
this was a school project. It successfuly detects FighterFX v7.2 and
HEADZOT Public v2.1 but with a little less success. I haven't tested any other aim bot.
Output from this plugin is a number ranging from 0 to 1 which can be thought of as a
probability of the player using an aim bot. I'm not a pro so some pro
moves could be missinterpreted ;) Inputs to the net are, roughly
speaking, the differences between two player states (aim vector,
position, ... check the source code) in two consecutive time slices.
Accuracy of the net is a little over 81% but this is compensated by
averaging the net's output over 10 consecutive samples. It takes no
action based on the results, it just prints them on the server's
console. If anyone finds this plugin useful, please use it...
Download
source
binary - win32
binary - amd64 (ubuntu gutsy)
binary - i386 (ubuntu hardy)
the aa_cs.nn file (should be in the cstrike/ directory)
Compiling
Compiling for linux is straight forward... just get the metamod and hlsdk source, extract the source
to the metamod directory and run make in the antiaim directory.
On widows, use the antiaim.sln solution file in the msvc directory and setup any include directories needed (ie, hlsdk, metamod).
Notes
I'm fresh to the hlsdk/metamod coding so this plugin can be improved
and probably has bugs in it. If someone has the time and energy, feel
free to improve/use/whatever. I haven't provided any docs for it but
it's really simple to understand. Except, maybe, for the neural net
part... but the interface for it is pretty straight forward.
Finally, some info on using the plugin. The plugin has two cvars:
| aa_enable |
- set to 1 to enable the plugin |
| aa_show |
- set to 1 to enable the printout of every calculation for each player |
One command is implemented which has 4 subcommands. It has the following form:
aa [command] [options]
Available commands:
| record [file] |
- record the data to the specified file |
| stop |
- stop the recording |
| show [player_name] |
- show the current status of the player (the name is case sensitive) |
| help |
- show the help screen |
Contact
If you have any questions and/or suggestions you can contact me by email at:
