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: