Иконка ресурса
Установка
1. В директорию cstrike/addons/amxmodx/modules копируем файл reaimdetector_amxx_i386.so, если у вас Linux или reaimdetector_amxx.dll, если у вас Windows.
2. Открываем файл addons/amxmodx/configs/modules.ini, и добавляем строку:
3. Скопируйте файл reaimdetector.inc в директорию: amxmodx/scripting/include/
4. Скомпилируйте плагин (инструкция).
5. Скопируйте скомпилированный файл reaimdetector.amxx в директорию: amxmodx/plugins/
6. Пропишите reaimdetector.amxx в файле /amxmodx/configs/plugins.ini
7. Скопируйте файл настроек reaimdetector.ini в директорию: amxmodx/configs/
7. Установка ReAimDetector завершена.
Настройки
Код:

[AIMBOT]
; Включить Обнаружение AimBot (0 | 1)
AIM_DETECTION = 1
; Чувствительность Обнаружения AimBot (0 | 10)
SENS = 8
; Активация Выдачи Нескольких Предупреждений За Одну Проверку [Отключите для DeathMatch] (0 | 1)
MULTI_WARN = 1
; Предупреждений до Начала Оповещения Админов в Чате (0 | 50)
NOTIFY_WARNS = 3
; Предупреждений до Обнаружения AimBot (2 | 50)
MAX_WARNS = 5
; Сброс Предупреждений После N Чистых Выстрелов (5 | 1000)
SHOTS_RESET = 40
; Сброс Предупреждений После N Убийств Противников (10 | 500)
KILLS_RESET = 35
; Сброс Предупреждений После N Секунд с Последнего Предупреждения (30 | 1800)
TIME_RESET = 420
[NOSPREAD]
; Включить Обнаружение NoSpread (0 | 1)
NOSPREAD_DETECTION = 1
; Предупреждений до Начала Оповещения Админов в Чате (15 | 300)
NOTIFY_WARNS = 15
; Предупреждений до Обнаружения NoSpread (25 | 300)
MAX_WARNS = 40
[PUNISH]
; Причина Наказания за AimBot
REASON_AIMBOT = Aim Detected
; Время Назания за AimBot
BAN_TIME_AIMBOT = 43200
; Причина Наказания за NoSpread
REASON_NOSPREAD = NoSpread Detected
; Время Наказания за NoSpread
BAN_TIME_NOSPREAD = 43200
; Формирование Строки Команды Бана
; Параметры для Подстановки:
; [time] - Время бана
; [userid] - Userid игрока
; [steam] - SteamID игрока
; [ip] - IP игрока
; [reason] - Причина бана
; Строка Наказания за Обнаружение AimBot (Максимальная длина 127 символов)
PUNISH_AIMBOT = amx_ban [time] [userid] [reason]
; Строка Наказания за Обнаружение NoSpread (Максимальная длина 127 символов)
PUNISH_NOSPREAD = amx_ban [time] [userid] [reason]
[SAVE]
; Сохранение Предупреждений После Перезахода Игрока на Сервер (0 | 3)
; 0 - отключено | 1 - SteamID | 2 - IP | 3 - SteamID или IP
TYPE = 1
; Минимальное Количество Предупреждений для Сохранения за AimBot (2 | 50)
AIM_WARNS = 2
; Минимальное Количество Предупреждений для Сохранения за NoSpread (15 | 300)
NOSPREAD_WARNS = 15
[OTHER]
; Флаг(и) Админа, Который Будет Видеть Оповещения (Пример: abcde)
FLAG_ALERT = d
; Включить Защищенную Отправку Оружия (0 | 1)
SEND_PROTECTION_WEAPON = 0
; Включить Crash Читов (0 | 1)
CRASH_CHEAT = 0
API
Код:
#if defined _reaimdetector_included
    #endinput
#endif

#define _reaimdetector_included

#if AMXX_VERSION_NUM >= 175
    #pragma reqlib reaimdetector
    #if !defined AMXMODX_NOAUTOLOAD
        #pragma loadlib reaimdetector
    #endif
#else
    #pragma library reaimdetector
#endif

enum NotifyType
{
    WARNING,
    DETECT
};

enum PunishType
{
    AIMBOT,
    NOSPREAD
};

enum ResetType
{
    KILLED,
    SHOTS,
    TIME
};

enum ADSet
{
    AimDetection,
    AimSens,
    AimMultiWarns,
    AimNotifyWarns,
    AimMaxWarns,
    AimShotsReset,
    AimKillsReset,
    AimTimeReset,
    NoSpreadDetection,
    NoSpreadNotifyWarns,
    NoSpreadMaxWarns,
    SendProtectionWeapon,
    CrashCheat
};

enum ADClient
{
    AimCheck,
    AimWarn,
    AimShots,
    AimKills,
    AimTimeTask,
    NoSpreadCheck,
    NoSpreadWarn
};

/*
* Module initialization.
*
* @param Version
* @param Map
*
* @noreturn
*/
forward ad_init(const Version[], const Map[]);

/*
* Notifies about warnings the player, also detection aim.
*
* @param index            Client index
* @param pType            Punish type
* @param nType            Notify type
* @param Kills            The amount of kills a enemies
* @param Shots            The amount of clean shots
* @param Warn            The current amount of warnings for player
*
* @noreturn
*/
forward ad_notify(const index, const PunishType:pType, const NotifyType:nType, const Kills, const Shots, const Warn);

/*
* Reset the player warnings.
*
* @param index            Client index
* @param rType            Reset type
* @param Kills            The amount of kills a enemies
* @param Shots            The amount of clean shots
*
* @noreturn
*/
forward ad_aim_reset_warn(const index, const ResetType:rType, const Kills, const Shots);

/*
* Returns setting from config.
*
* @param Type        enum ADSet
*
*/
native ad_get_cfg(const ADSet:Type);

/*
* Sets setting config.
*
* @param Type        enum ADSet
* @param Value        Type int
*
* @noreturn
*
*/
native ad_set_cfg(const ADSet:Type, const Value);

/*
* Returns a data of the player.
*
* @param index        Client index
* @param Type        enum ADClient
*
*/
native ad_get_client(const index, const ADClient:Type);

/*
* Sets a data of the player.
*
* @param index        Client index
* @param Type        enum ADClient
* @param Value        Type int
*
* @noreturn
*
*/
native ad_set_client(const index, const ADClient:Type, const Value);

#define REAIMDETECTOR_VERSION            "0.2.2"
#define REAIMDETECTOR_VERSION_MAJOR    4
#define REAIMDETECTOR_VERSION_MINOR    0

public __reaimdetector_version_check(const majorVersion, const minorVersion)
{
    if (majorVersion != REAIMDETECTOR_VERSION_MAJOR)
    {
        new temp[512];
        formatex(temp, sizeof temp - 1, "[ReAimDetector]: Api major version mismatch; expected %d, real %d", REAIMDETECTOR_VERSION_MAJOR, majorVersion);
        set_fail_state(temp);
        return;
    }

    if (minorVersion < REAIMDETECTOR_VERSION_MINOR)
    {
        new temp[512];
        formatex(temp, sizeof temp - 1, "[ReAimDetector]: Api minor version mismatch; expected at least %d, real %d", REAIMDETECTOR_VERSION_MINOR, minorVersion);
        set_fail_state(temp);
        return;
    }
}
Сверху Снизу