Raised This Month: $12 Target: $400
 3% 

AimBot Detection


Post New Thread Reply   
 
Thread Tools Display Modes
Plugin Info:     Modification:   Counter-Strike        Category:   Admin Commands        Approver:   v3x (159)
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 09-21-2008 , 12:14   AimBot Detection
Reply With Quote #1

AimBot Detection v1.4beta2

Note: Be sure to also download the config file as new cvars are commonly added with each release.

- Description -
This plugin detects aimbots by using an invisible detection bot to simulate an enemy. To watch a player for aimbot detection, use the amx_aimwatch command. Once the player is being watched, the bot will be spawned above each of his victims until he either passes all checks or is detected. There is also an auto-watch option that will apply watches automatically based on performance ratios (see below). When the watched player gets a kill, the bot gets spawned high above the victims head. There are two methods to choose from to detect the aimbots (see below). If the bot is spawned cvar ad_aimattempts times (default: 3) and not shot\aimed at, the watch gets removed from the player. You can specify the number of detections that are needed before a player gets punished via cvar ad_detectsneeded (default: 1). You can also specify the type of punishment to issue via cvar ad_punishment (default: 0 - log only). The bot will not be spawned if the spawn location is within a ceiling or outside the confines of the map. It will also not be spawned if the angle from the watched player to spawn location is too steep (aiming up) or if it requires the player to be aiming down. A bot spawn will only occur if the watched player kills his victim with a gun (grenades and knife are ignored).

You do NOT need to have any 3rd party bots installed on your server to run this plugin.

There are two separate admin flag settings that control which admins get notifications from the plugin and which admins can issue commands. The default level required for both is ADMIN_RCON which can be changed via const FLAG_NOTIFY and FLAG_COMMAND. There is also an option to limit how many notifications are issued for plugin actions, see verbose mode section below.

- Auto-Watch -
The auto watch option (cvar amx_aimautowatch, enabled by default) will check all players performance statistics at the end of each round. There are 5 different ratios that are checked, each having their own defined ratio-value and detection-points if met. If the detection-points reaches cvar ad_awp_rpointsneeded (default: 3), an auto-watch point gets added for the player. If the players auto-watch points reaches AW_ad_aw_pointsneeded (default: 3), an aimbot watch gets applied to the player. If the detection bot is spawned and the watched player does not shoot at it, the g_AimPasses variable is incremented. If g_AimPasses reaches cvar amx_aimattempts (default: 3), the aimbot watch is removed. If this occurs cvar ad_aw_maxautowatches (default: 2) times, the player will no longer get ratio-checked for auto-watch. If you are using a mod that does not use rounds then you must use the custom mod option (set cvar ad_custommod to 1) and set an interval at which ratios get checked via cvar ad_checkinterval (default 180.0 seconds).

- Detection Methods - CVar: ad_detectmethod
  • Shooting
    The shooting method will monitor how many times and what body parts of the bot were shot. Once the bot is spawned it will remain in the air for cvar ad_botstaytime (default: 1.5 seconds) waiting to be shot. If the shots satisfy the requirements for detection, the player gets detected. The type of weapon used and different parts of the body are all considered for determining a detection. For example, if the bot is shot in the head or is shot with a low-recoil weapon, it is an instant detection since there is only a small chance this was accidental. Head hits have the highest point value and always result in an instant detection regardless of the weapon used. Legs have the lowest point value since these shots may occur from recoil; for a detection to occur from leg hits only it will take 4 shots. To use this method, set cvar ad_detectmethod to 0
  • Aiming
    The aiming method will check how long the watched player aimed at the detection bot. The aim checks occur every 0.25 second; you can specify the number of checks to use via cvar ad_aimnumneeded (default: 4) which would result the bot being in the air for 1 full second (4 x 0.25). A detection will result if the watched player aimed at the detection bot for all checks. To use this method, set cvar ad_detectmethod to 1. This method is new and still experimental. Please report any issues or if you have any ideas for improvement.
- Verbose Modes - CVar: ad_verbosemode
  • 0 - All nofication disabled
  • 1 - Display detections only
  • 2 - Display only when watch enabled\disabled and when player detected
  • 3 - Display everything
- Punishments - CVar: ad_punishment
  • 0 = Log Only (Default, No Punishment)
  • 1 = Kick Only
  • 2 = Kick & Ban by SteamID
  • 3 = Kick & Ban by IP
  • 4 = Kick & AMX Ban
  • 5 = Shoot Blanks by SteamID [Saved via SteamID, gets reapplied if player reconnects]
  • 6 = Shoot Blanks by IP [Saved via IP, gets reapplied if player reconnects
- Usage -
  • amx_aimwatch <player> <0=disable | 1=enable> - Apply\Remove watch from player
  • amx_aimwatch (no arguments) - Returns currently watched player
  • amx_aimstatus - Display all players aimbot detection status
- Required Modules -
  • Fakemeta
  • Hamsandwich
  • CSX
- Languages -
  • English
  • Lithuanian
  • Swedish
  • German
  • Dutch

- Configuration -
Code:
///////////////////////////////////////////////////////////////////////////
// **************** Aimbot Detection Configuration File **************** //	
////////////////////////////////// v1.4 ///////////////////////////////////
///////////////////////////////////////////////////////////////////////////

echo Executing Aimbot Detection Configuration File

///////////////////////////////////////////////////////////////////////////
// Enable\Disable the plugin.						 //
///////////////////////////////////////////////////////////////////////////
// 0 - Disabled								 //
// 1 - Enabled								 //
///////////////////////////////////////////////////////////////////////////
// Default: 1		     						 //
///////////////////////////////////////////////////////////////////////////

ad_enabled 1 

///////////////////////////////////////////////////////////////////////////
// Enable\Disable Auto-Watch option.					 //
///////////////////////////////////////////////////////////////////////////
// 0 - Disabled								 //
// 1 - Enabled								 //
///////////////////////////////////////////////////////////////////////////
// Default: 1								 //
///////////////////////////////////////////////////////////////////////////

ad_autowatch 1

///////////////////////////////////////////////////////////////////////////
// Verbose Mode. (Level of chat notification)				 //
///////////////////////////////////////////////////////////////////////////
// 0 - All nofication disabled 						 //
// 1 - Display detections only  					 //	
// 2 - Display only when watch enabled\disabled and when player detected //
// 3 - Display everything						 //
///////////////////////////////////////////////////////////////////////////
// Default: 3								 //
///////////////////////////////////////////////////////////////////////////

ad_verbosemode 3

///////////////////////////////////////////////////////////////////////////
// Detection method used to detect aimbots.				 //
///////////////////////////////////////////////////////////////////////////
// 0 - Detect by monitoring if detection bot was shot by watched player. //
// 1 - Detect by monitoring if watched player aimed at detection bot.    //
// 2 - Detect using both shoot and aiming method.                        //
///////////////////////////////////////////////////////////////////////////
// Default: 0								 //
///////////////////////////////////////////////////////////////////////////

ad_detectmethod 0

///////////////////////////////////////////////////////////////////////////
// The number of detections needed for a player to be punished. If set   //
// to a value greater than 1, a chat notification will be displayed upon //
// detection notifying how many more detections are needed for the user  //
// to be punished. 							 //
///////////////////////////////////////////////////////////////////////////
// Default: 1								 //
///////////////////////////////////////////////////////////////////////////

ad_detectsneeded 1

///////////////////////////////////////////////////////////////////////////
// The number of times we attempt to detect a player using an aimbot. If //
// the bot is spawned and the player does not shoot\aim at the bot this  //
// many times consequetively, we remove the watch on the player. If a    //
// player has accumulated 2 attempts without shooting\aiming at the bot  //
// and then does aim\shoot it, the attempts counter gets reset.  	 //
///////////////////////////////////////////////////////////////////////////
// Default: 3								 //
///////////////////////////////////////////////////////////////////////////

ad_aimattempts 3

///////////////////////////////////////////////////////////////////////////
// The type punishment to issue on a player if his # of detections reach //
// the ad_detectsneeded cvar. 						 //
///////////////////////////////////////////////////////////////////////////
// 0 - Log only (no punishment)						 //
// 1 - Kick only							 //
// 2 - Kick and ban using the players Steam ID				 //
// 3 - Kick and ban using the players IP address			 //
// 4 - Kick and ban via AMX ban						 //
// 5 - Shoot blanks, saved via Steam ID and reapplied if user reconnects //
// 6 - Shoot blanks, saved via IP addr and reapplied if user reconnects  //
///////////////////////////////////////////////////////////////////////////
// Default: 0 (log only)						 //
///////////////////////////////////////////////////////////////////////////

ad_punishment 0

///////////////////////////////////////////////////////////////////////////
// RGB color to spawn the bot. This is mainly to make the plugin work    //
// with newer aimbots that will check if the player is visible before    //
// aiming.  								 //
///////////////////////////////////////////////////////////////////////////
// Default: 0 0 0 (invisible)						 //
///////////////////////////////////////////////////////////////////////////

ad_botcolor "0 0 0"

///////////////////////////////////////////////////////////////////////////
// The amount of time (minutes) to ban player if using a ban punishment. //
///////////////////////////////////////////////////////////////////////////
// Default: 0 (permanent)						 //
///////////////////////////////////////////////////////////////////////////

ad_bantime 0

///////////////////////////////////////////////////////////////////////////
// This will control how the plugin reacts when admin(s) are present on  //
// the server.								 //
///////////////////////////////////////////////////////////////////////////
// 0 - No action (plugin will act no differently when admins present)    //
// 1 - Admin players are not monitored for auto-watch			 //
// 2 - Auto-watch disabled when 1+ admins are present			 //
///////////////////////////////////////////////////////////////////////////
// Default: 0								 //
///////////////////////////////////////////////////////////////////////////

ad_aw_admin 0

///////////////////////////////////////////////////////////////////////////
// This cvar is only used if you have auto-watch enabled and are using a // 
// custom mod that doesn't use rounds as standard counter-strike does.   //
// For this type of mod, this option will make the plugin check users    //
// stats at an interval instead of at round-end. If set to 1 (enabled) 	 //
// you must also set ad_checkinterval to your desired check interval.	 //
///////////////////////////////////////////////////////////////////////////
// 0 - Disabled								 //
// 1 - Enabled								 //
///////////////////////////////////////////////////////////////////////////
// Default: 0 (standard Counter-Strike, no custom mod)			 //
///////////////////////////////////////////////////////////////////////////

ad_custommod 0

///////////////////////////////////////////////////////////////////////////
// If ad_custommod is set to 1 (enabled), this will set the frequency in //
// seconds at which users stats are checked for auto-watch. 	 	 //
///////////////////////////////////////////////////////////////////////////
// Default: 180 (3 minutes)						 //
///////////////////////////////////////////////////////////////////////////

ad_checkinterval 180.0

///////////////////////////////////////////////////////////////////////////
// ************************ Auto-Watch Ratios *************************  //
// Each ratio item has 2 elements. One defines the actual ratio to check //
// and the other defines the ratio-points added if the ratio is met.	 //
///////////////////////////////////////////////////////////////////////////
// ad_awr_TYPE - Ratio value						 //
// ad_awp_TYPE - Ratio-points added if ratio met			 //
///////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////
// Ratio of round-kills needed before any of the other auto-watch ratios //
// are checked. This ratio is only checked if there are 5+ enemies. If   //
// there are <= 2 enemies, the ratio of round-kills needed is 100%, if   //
// there are <= 4 enemies, the ratio of round-kills needed is 50%. These //
// ratios cannot be changed.						 //
///////////////////////////////////////////////////////////////////////////
// Default: 0.33 (33%)							 //
///////////////////////////////////////////////////////////////////////////

ad_awr_roundkills 0.33

///////////////////////////////////////////////////////////////////////////
// Ratio of kills-to-deaths. 						 //
// Example, if set to 3.0 and a player has 15 kills and 5 deaths, this   //
// ratio is met.  	   					         //
///////////////////////////////////////////////////////////////////////////
// Default: 3.0	(3 to 1)						 //
///////////////////////////////////////////////////////////////////////////

ad_awr_killdeath 3.0
ad_awp_killdeath 1

///////////////////////////////////////////////////////////////////////////
// Ratio of hits-to-shots. 						 //
// Example, if set to 0.4 or 40%, and a player has shot 100 times and 	 //
// hit a player with 40 of the shots then the ratio is met.		 //
///////////////////////////////////////////////////////////////////////////
// Default: 0.4	(40%)							 //
///////////////////////////////////////////////////////////////////////////

ad_awr_hitsshots 0.4
ad_awp_hitsshots 1

///////////////////////////////////////////////////////////////////////////
// Ratio of headshot kills to non-headshot kills. 			 //
// Example: If set to 0.5 (50%) and a player has 10 kills, 5 of them via //
// headshot then this ratio is met.					 //
///////////////////////////////////////////////////////////////////////////
// Default: 0.5	(50%)							 //
///////////////////////////////////////////////////////////////////////////

ad_awr_hskill 0.5
ad_awp_hskill 1

///////////////////////////////////////////////////////////////////////////
// Ratio of head-hits to total hits. 					 //
// Example: If set to 0.33 and a player has 100 hits (can be multiple    //
// players) and 33 of them hit the enemies head, this ratio is met.	 //
///////////////////////////////////////////////////////////////////////////
// Default: 0.33 (33%)							 //
///////////////////////////////////////////////////////////////////////////

ad_awr_headbody 0.33
ad_awp_headbody 1

///////////////////////////////////////////////////////////////////////////
// Ratio of chest-hits to total hits (functions same as above excpet for //
// chest.								 //
///////////////////////////////////////////////////////////////////////////
// Default: 0.6 (60%)							 //
///////////////////////////////////////////////////////////////////////////

ad_awr_chestbody 0.6
ad_awp_chestbody 1

///////////////////////////////////////////////////////////////////////////
// Specifies the number of ratio points needed to add an autowatch point //
// for the player. When a ratio is met, the cooresponding ratio point is //
// added to the counter. When this counter reaches this cvar value, an   //
// auto-watch point is added for the player.				 //
///////////////////////////////////////////////////////////////////////////
// Default: 3								 //
///////////////////////////////////////////////////////////////////////////

ad_awp_rpointsneeded 3

///////////////////////////////////////////////////////////////////////////
// Specifies the max number of times a player can be auto-watched.       //
///////////////////////////////////////////////////////////////////////////
// Default : 2								 //
///////////////////////////////////////////////////////////////////////////

ad_aw_maxautowatches 2

///////////////////////////////////////////////////////////////////////////
// Specifies the number of auto-watch points needed before an auto-watch //
// gets applied on player. 						 //
///////////////////////////////////////////////////////////////////////////
// Default: 3								 //
///////////////////////////////////////////////////////////////////////////

ad_aw_pointsneeded 3

///////////////////////////////////////////////////////////////////////////
// ************************ Aiming Detection CVar ********************** //
///////////////////////////////////////////////////////////////////////////
// If using the aiming detection method (ad_detectmethod 1), this cvar   //
// specifies the number of times the watched player has to be aiming at  //
// the bot for him to be detected. When the bot is spawned, a check is   //
// done every 0.25 second. If set to 4, we check a total of 4 times and  //
// if in each check the watched player was aiming at the bot, the player //
// gets detected. For each number in this cvar, add 0.25 second to the   //
// amount of time the bot is on the server. Default 2 = 0.5 second	 //
///////////////////////////////////////////////////////////////////////////
// Default: 2								 //
///////////////////////////////////////////////////////////////////////////

ad_aimnumneeded 2

///////////////////////////////////////////////////////////////////////////
// ******************** Shooting Detection CVars *********************** //
///////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////
// Specifies the time in seconds that the bot will remain on the server, //
// in the air, waiting to be shot. 					 //
///////////////////////////////////////////////////////////////////////////
// Default: 1.5 (seconds)						 //
///////////////////////////////////////////////////////////////////////////

ad_botstaytime 1.5

///////////////////////////////////////////////////////////////////////////
// Enable\Disable auto-shoot feature. This will force the watched player //
// to reload and then fire 2 shots shortly after the bot is spawned. The //
// players ammo will then be restored to the original value.		 //
///////////////////////////////////////////////////////////////////////////
// 0 - Disabled								 //
// 1 - Enabled								 //
///////////////////////////////////////////////////////////////////////////
// Default: 1								 //
///////////////////////////////////////////////////////////////////////////

ad_forceshoot 1

///////////////////////////////////////////////////////////////////////////
// Specifies number of bot body hit-points added if the watched player   //
// shoots the bot and hits it in the specified body part. 		 //
///////////////////////////////////////////////////////////////////////////
// Defaults: ad_hp_head	4						 //
//	     ad_hp_midbody 2						 //
//	     ad_hp_legs 1						 //
///////////////////////////////////////////////////////////////////////////

ad_hp_head 4
ad_hp_midbody 2
ad_hp_legs 1

///////////////////////////////////////////////////////////////////////////
// Specifies the number of bot body hit-points needed for a player to be //
// detected.								 //
///////////////////////////////////////////////////////////////////////////
// Default: 4								 //
///////////////////////////////////////////////////////////////////////////

ad_hp_hitsneeded 4
Thank you to those who have contributed code, ideas, testing, and comments - Sorry if I left anyone out
xOR, Owyn, brad, alka, stupok, freamer, ehha, mats, Lenfitz, WildSoft, joaquimandrade, Gizmo, supergreg, paulis8a

- Changelog -
  • v1.4 beta2
    - Moved all code from client_authorized() to client_putinserver().
    - Removed GetMaxClipAmmo function and replaced with an array.
    - Fixed bug (hopefully) that was causing the detection bot to be partially visible (when set to 0 0 0)
    - Modified functions in which large static strings were being used, this reduced the total requirements of the plugin at compile time from 104,724 to 80,396.
  • v1.4 beta
    - Changed the PrintColorMsg function to allow either printing to just 1 player or to all players. This replaced the need to have a for-loop throughout the code whenever a notify was needed. This function now handles all types of notification. To notify just one player, the id gets passed in the first param; to notify all players, a 0 is passed. This also fixed the bug where when a watch is issued on a player he was notified in chat that he was being watched.
    - Changed get_user_ip() usage; added 3rd param of 1 to omit the port. Previously the port was being retrieved and a strfind() was used to trim the port off of the retrieved IP\Port string.
    - Added ad_aw_admin cvar to control how auto-watch functions with admins. Set it to 0 to function as normal without paying any special consideration to admins. Set to 1 to skip admins. Set to 2 to disable auto-watch totally if any admins are on the server.
    - Added block in Ham_TakeDamage forward to make the bot not take damage if the aiming detection method is being used.
    - Added detection option that will use both the aiming and shooting method. When the detection bot is spawned, the plugin will monitor the amount of times the bot was shot and aimed at and then will calculate the percentage of aims-counted/aims-needed + shots-counted/shots-needed. If the sum of this is >= 1.0 then we count it as a detection.
    - It was brought to my attention that some aimbots will check whether a player is visible before deciding if it will act upon the player. Added option to set the detection bots visibility via cvar ad_botcolor which is in RGB format. Default is "0 0 0" which is invisible.
    - A bug was fixed that was causing an error with podbots. This fix is experimental, podbot users please report back to advise if this is fixed.
    - Misc minor efficiency improvements
  • v1.3c
    - Corrected bug where when a player gets watched he is notified in chat. Thanks to xOR for this find
  • v1.3b
    - Fixed bug where if you were using a shoot blanks punishment, all players would shoot blanks. Knives and grenades still did work. Thanks again to xor for his report.
  • v1.3a
    - Changed 1-line fm functions to macros
    - Fixed a bug where auto-watch may have been applied on players when it shouldn't have.
    - Fixed bug pointed out by xor which would cause an 'index out of bounds' error if you are using SHOOT_BLANKS_IP punishment and the player that was punished has an IP address with each octet 3 numbers long. ie. "255.255.255.255".
    - Added external config file. Location: amxmodx/configs/aimbotdetection.cfg
    - Reduced default ad_aimnumneeded to 2. 4 seemed a bit too high and I noticed if the player tried to drag his aim away from the bot he could avoid a detection. Being set to 2 has a much better chance of detecting the player.
  • v1.3
    - Added a block so the plugin will not recognize the bot taking damage for detection if not inflicted by a bullet or if not by the watched player. Previously, HAM_IGNORED was returnd which made the bot still take damage but not let the player get detected; now HAM_SUPERCEDE is returned so all damage is ignored if not by the watched player and via a bullet. Also added HAM_SUPERCEDE at the end of the takedamage forward so the bot will not get hurt even if shot by the watched player. This will allow it to take an unlimited number of shots without dying.
    - Added blockage of bot being spawned if the watched players victim is killed with a grenade
    - Removed checking if victim ground distance is too close to killer. Now only the aiming angle is checked from the watched player to the location where the bot will be spawned. If the bot spawn origin is outside of the acceptable angle range, we do not spawn the bot. The angle ranges currently being used are (Angle <= 50) & (Angle >= 5). This solves the bug where a player gets falsely detected because his gun is already in the aiming direction of where the bot is spawned. This error has been reported a few times on cs_assault when the watched player is on the ground outside and has killed an enemy that was standing on the roof. The player kills the enemy and then the bot gets spawned and hit by shots because the player is already aiming in the direction. Thanks to owyn for his reports and stupok for the angle calculation code.
    - Added colorization of the 'Aimbot Detection' chat header when a player is detectd. This will now appear in green, all other chat messages remain in normal chat color.
    - Owyn reported that some aimbot hacks will only aim at the other player if they have a weapon. When the bot is spawned it is now given a deagle.
    - Added verbose mode cvar so you can now limit the amount of notification that is printed in chat. See enum below for levels.
    - Added a 2nd detection method. This new method will spawn the detection bot and check if the watched player is aiming at the bot every 0.25 second for a total of (cvar ad_aimnumneeded [default 4]) checks. If the watched player was aiming at the bot during each check, the player gets detected. To enable this method, set cvar ad_detectmethod to 1. Setting the detection requirement cvar for this method (ad_aimnumneeded) will determine how long the bot stays on the server. The time is equal to the cvar value times 0.25 so for the default of 4 would be: 4 x 0.25 = 1 second. This method is still experimental
  • v1.2
    - Removed get_user_attacker because of a bug that was causing the gun and hitzone params to return 0. Hitzones are now determined via fakemeta call get_pdata_int(g_BotID, m_LastHitGroup). Re-added get_user_weapon to retrieve what weapon the bot was shot with for determining hit-points.
    - Changed get\set origin to fakemeta; all origins are now floats.
    - Removed fun module; it was being used only for set_user_hitzones. Replaced with fm_set_user_hitzones (written by samurai), slightly edited. As with the ham forwards that are enabled\disabled when needed, the same is done for the fm_traceline forward used in fm_set_user_hitzones. The forward is enabled if 1+ players have shootblanks punishment and is disabled when all shootblanks-punished players disconnect.
    - Removed HIT_GENERIC hitzone as it was added in an attempt to fix the v1.0-v1.1 hitzone bug. This bug was resolved via m_LastHitGroup.
    - Added priority-checking to applying auto-watches. When applying an auto watch, we first check players that have not yet passed a watch session. If no watchable players are found in the passed-watch players, we then check players that have previously passed a watch.
    - Changed all configuration to cvar. See PUNISHMENT enum for setting punishment.
  • v1.1
    - Multilingual support.
    - Added BAN_TIME to punishment config section so you can now specify how long a player gets banned. Default: 0 (permanent)
    - Fixed bug in Ham_Killed forward if-statement that was supposed to block if not watching a player but the code was still being executed causing invalid player index error. "if( !g_PlayerToWatch && " should have been "if( !g_PlayerToWatch || "
    - Added\adjusted blocking for when the victim and watched player are too close together and at a different height in the map (Z-coord). Per bug reported by .Owyn., a watched player was on top of a building, shooting down, and killed his victim. The bot was then spawned and was hit by the players shots since the player was already aiming down. The bot will no longer be spawned if its Z coord will be >= watched-player-Z + 30.
    - Removed get_user_weapon call in Ham_TakeDamage forward. Was using 2 separate functions to retrieve enemy weapon and bot hitzones that were shot. Both of these are now retrieved with get_user_attacker.
    - Added HIT_GENERIC as a bot hitzone. While testing, I noticed at times I was shooting the bot multiple times, with each shot blood poured out of the bot, yet I was not getting detected. I determined that regardless of where the bot was shot, get_user_attacker hitzone was always returning HIT_GENERIC. This is a strange and inconsistent bug that occurs randomly, a simple mapchange usually fixes it. To reproduce this bug I keep doing map changes until I see HIT_GENERIC gets returned on bot all shots. By default I set GENERICHIT to the same value as a leg hit (1). This may be the cause of the problem some users have of not seeing many detections. There is a demo in the forum thread on page 28 that shows this bug.
    - Removed LogDetection function, replaced with log_to_file native.
  • v1.0
    - Adjusted body hit-point values. Now to be detected, a total of 4 points must be reached. Head=4, chest=2, legs=1.
    - Fixed bug in kill\death ratio calculating in auto-watch checking. This ratio was always being returned true because usage of float() was incorrect.
    - Changed method for applying auto-watch. Now, each time auto-watch criteria is met, an auto-watch point is added to the players counter variable, g_AutoWatchPts[]. If the counter variable reaches AW_POINTSNEEDED (default 3), an auto-watch gets applied to the player. This method also allows auto-watches to be queued because round stat ratios will now be calculated even if there is already an on-going watch; previously stats were only checked at round-end if there were no active watches. At the end of every round, if there is no active watch and a players auto-watch counter variable is >= AW_POINTSNEEDED, an auto-watch will get applied to the player.
    - Hits\Shots ratio was re-added for auto-watch ratio checking.
    - Auto-watch previously would only do ratio checking if there were a set constant number of players playing on the server. Now, the plugin will check the # of enemies and only check ratios if the player has an appropriate % of round kills respective to the # of enemies. This allows accurate functionality on a server with any number of players. Below is the current config:
    [ ENEMIES ; KILLS NEEDED ] - [ <= 2 ; 100% ] [ > 2 & <= 4 ; 50% ] [ >=5 ; 33.3% ]
    - Added compatibility for custom-mods that do not use rounds. To use this method, set CUSTOMMOD to 1 and set CHECKINTERVAL to your desired check interval (in seconds, default 3 minutes). This will make auto-watch check a players performance statistics at each interval instead of at round-end. If you are using the plugin on counter-strike without any other custom-mod installed then this change does not effect you. I have not fully tested this new method because I do not run these mods. If you have any issues please post to the forum.
    - Added amx_aimstatus command. This will display a MOTD with watch\detection\punishment info for all currently connected players.
    - Added variable to limit # of times an auto-watch can be applied to a player if he passes all detection tests. g_PassedWatch[id] holds the number of times player passed all tests within a watch and AW_MAXWATCHES is the max auto-watches that can be applied. If g_PassedWatch[id] reaches AW_MAXWATCHES, the player will no longer get auto-watched. A manual watch can still be applied.
    - Changed the way we accept damage in the ham_takedamage forward; now we only register damage inflicted to the bot if via bullet. Previously, it was accepting all damage except for grenade and knife. Per bug report from WildSoft, this was causing a bug in WC3FT-mod servers because players explode; this explosion was killing the bot and registering it as a aimbot detection.
    - Added option of DETECTSNEEDED (default 1) aimbot detections needed for the player to be punished. If\when the watched player shoots the bot and satisfies the 'detection' criteria, a counter is added to the detection variables; g_Detected holds the # of detections per aimbot-watch session, g_Detections[] holds each players entire # of detections per connection to the server. Upon a detection, if the counter is >= DETECTSNEEDED, the player gets punished. If you choose to punish with only 1 detection, keep DETECTSNEEDED at the default of 1. Detections stick between multiple watches, the only time the detections variable gets reset is when the player disconnects. I may make this save to the vault so, for example, if DETECTSNEEDED is set to 3 and a player gets 2 detections on monday and then gets another detection on friday, he will then be punished on fridays detection. This was added to make the plugin a bit more lenient\safe for 24/7 server usage for less false detections since a player would need to be caught more than once to be punished. On the negative side, using a DETECTSNEEDED value higher than 1 can allow an aimbot player to realize he is possibly getting caught (if using AUTOSHOOT) and can then turn off the aimbot and avoid detection.
    - Removed array of bot names. Since the bot is on the server for such a short period of time, it really doesn't need a realistic name.
    - Changed variable used in Ham_TakeDamage forward from inflictor to attacker. Per the hamsandwich include, inflictor is the weapon that is inflicting the damage, not the player. The inflictor variable was functioning correctly because if the carrier of the weapon (inflictor) is the attacker, inflictor returns the player id of attacker.
    - Removed email option.
    - Added ability to start an aimbot watch on a player while there is already an existing watch. When this happens, the current watch is stopped and the new watch is started.
    - Removed multiple RemoveBot calls. Now the bot will only be removed via the task set in HamKilled forward. This was causing an issue with the timing of the bot being removed and deathmsg display. At times, a deathmsg was being displayed when the bot was killed because g_BotID was being reset before the hlengine went to display the deathmsg.
    - Fixed the way StatusText was blocked. Occasionally the bots name was showing when being aimed at.
Download counts
v0.8 821
v0.9 883
v0.9b 2361
v1.0 310
v1.1 272
v1.2 1025
v1.3 300
v1.3b 4155
v1.4beta 2545
Attached Files
File Type: txt aimbotdetect.txt (12.6 KB, 38352 views)
File Type: sma Get Plugin or Get Source (aimbotdetect.sma - 28553 views - 62.1 KB)
File Type: cfg aimbotdetection.cfg (15.0 KB, 45189 views)
File Type: sma Get Plugin or Get Source (aimbotdetect_14beta2.sma - 18251 views - 62.2 KB)
__________________

Last edited by Bugsy; 07-24-2010 at 08:31.
Bugsy is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 09-21-2008 , 12:18   Re: AimBot Detection
Reply With Quote #2

Would be better to test on a unsecure server ;)

What if the server is full ?
__________________
- tired and retired -

- my plugins -
ConnorMcLeod is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 09-21-2008 , 12:39   Re: AimBot Detection
Reply With Quote #3

Quote:
Originally Posted by connorr View Post
Would be better to test on a unsecure server ;)

What if the server is full ?
That is true, to be safe.

I did not yet take that into consideration but I am adding that to the list of things I am going to need to add\change once others chime in.

Thanks
__________________
Bugsy is offline
FakeNick
Senior Member
Join Date: Feb 2008
Location: Poland
Old 09-21-2008 , 15:27   Re: AimBot Detection
Reply With Quote #4

Nice plugin, i've tested it with aim bot and it is working great.
Good job!
__________________


[||||||||||] Snowball war v3.05

Pol
ish translations here ;) (PM me if you want one).


FakeNick is offline
Brad
AMX Mod X Team Member
Join Date: Jun 2004
Old 09-21-2008 , 15:38   Re: AimBot Detection
Reply With Quote #5

Nice idea! Good job.
__________________
Brad is offline
Alka
AMX Mod X Plugin Approver
Join Date: Dec 2006
Location: malloc(null)
Old 09-21-2008 , 15:48   Re: AimBot Detection
Reply With Quote #6

Nice.Also you can use only hamsandwich and fakemeta.
Alka is offline
Toster v2.1
Senior Member
Join Date: Oct 2006
Location: Latvia, Riga
Old 09-21-2008 , 15:58   Re: AimBot Detection
Reply With Quote #7

Not all aim bots shoot/aim at the victim automaticly. Ex: <snip> only aims at s user selected target's head when you press +attack.
__________________
I am 52% addicted to Counterstrike. What about you?

Last edited by Brad; 09-21-2008 at 20:57. Reason: snipped hack name. easy enough for people to find ways around hack detections, no need to spoon feed them
Toster v2.1 is offline
Send a message via Skype™ to Toster v2.1
P4rD0nM3
Veteran Member
Join Date: Feb 2006
Old 09-21-2008 , 17:08   Re: AimBot Detection
Reply With Quote #8

I don't get the description.

When a cheater kills a player, a bot is placed on that player's spot? To make it think like it's still alive? Is that how it is?
P4rD0nM3 is offline
stupok
Veteran Member
Join Date: Feb 2006
Old 09-21-2008 , 17:36   Re: AimBot Detection
Reply With Quote #9

@P4rD0nM3

First, you mark a player that you'd like to watch. Now, when the "watched" player kills someone, an invisible bot is immediately placed above the dead player. Now, if the "watched" player aims up at the bot and shoots it, you can suspect that he might use an aimbot.
stupok is offline
P4rD0nM3
Veteran Member
Join Date: Feb 2006
Old 09-21-2008 , 18:30   Re: AimBot Detection
Reply With Quote #10

Aaah, so legitimate players won't see the invisible bot that is placed right after they make a kill while players that cheat will still see the err invisible player?
P4rD0nM3 is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 16:51.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode