Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define pwcKickForWeaponCheat 1 // кикать ли за любой чит оружия?
- #define pwcCheatReportToCheater 1 // сообщать ли читеру о его чите?
- #define pwcTempWeaponId 0 // проверочное оружие (ИД)
- enum playerWeaponCheck_enum
- {
- pwcStarted, // флаг - работает ли проверка оружия для игрока прямо сейчас
- pwcWeaponId, // ИД оружия, который был у игрока до начала проверки
- pwcCheatsDetected, // кол-во обнаруженных попыток чита на оружие для игрока
- pwcDelayTimer // таймер отложенной проверки
- }
- stock playerWeaponCheck[MAX_PLAYERS][playerWeaponCheck_enum];
- // запускает проверку на чит оружия для указанного игрока
- forward startPlayerWeaponCheck ( playerid );
- public startPlayerWeaponCheck ( playerid )
- {
- if ( ! IsPlayerConnected(playerid) ) return 0;
- playerWeaponCheck[playerid][pwcWeaponId] = GetPlayerWeapon(playerid);
- // если сейчас у игрока проверочное оружие, то отложим проверку на 1 сек
- if ( playerWeaponCheck[playerid][pwcWeaponId] == pwcTempWeaponId )
- {
- playerWeaponCheck[playerid][pwcDelayTimer] = SetTimerEx( "startPlayerWeaponCheck", 1000, 1, "i", playerid );
- return 0;
- }
- playerWeaponCheck[playerid][pwcStarted] = 1;
- SetPlayerArmedWeapon( playerid, pwcTempWeaponId );
- return 1;
- }
- // останавливает проверку на чит оружия
- stock stopWeaponCheck ( playerid )
- {
- playerWeaponCheck[playerid][pwcStarted] = 0;
- playerWeaponCheck[playerid][pwcCheatsDetected] = 0;
- if ( playerWeaponCheck[playerid][pwcDelayTimer] )
- KillTimer(playerWeaponCheck[playerid][pwcDelayTimer]);
- }
- public OnPlayerConnect ( playerid )
- {
- stopWeaponCheck(playerid);
- return 1;
- }
- public OnPlayerDisconnect ( playerid, reason )
- {
- stopWeaponCheck(playerid);
- return 1;
- }
- public OnPlayerUpdate ( playerid )
- {
- // если для игрока запущена проверка чита на оружие
- if ( playerWeaponCheck[playerid][pwcStarted] )
- {
- // узнаем текущее оружие
- new curWeaponId = GetPlayerWeapon(playerid);
- // если текущее оружие изменилось
- if ( curWeaponId != playerWeaponCheck[playerid][pwcWeaponId] )
- {
- playerWeaponCheck[playerid][pwcStarted] = 0; // выключим проверку
- SetPlayerArmedWeapon( playerid, playerWeaponCheck[playerid][pwcWeaponId] ); // вернем прежнее оружие
- // если текущее оружие оказалось не таким, каким выставил его сервер
- if ( curWeaponId != pwcTempWeaponId )
- {
- playerWeaponCheck[playerid][pwcCheatsDetected]++; // кол-во читов +1
- #if defined pwcCheatReportToCheater && pwcCheatReportToCheater == 1
- // инфо самому игроку
- SendClientMessage( playerid, 0xFF0000FF, "Server detected you are using weapon cheats!" );
- #endif
- #if defined pwcKickForWeaponCheat && pwcKickForWeaponCheat == 1
- // наказать, если нужно
- Kick(playerid);
- #endif
- }
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement