Сегодня Воскресенье | Дата: 05.05.2024 | Время: 00:29
                        
Последние новости
Оф. C-HUD GTA-ONE (v. beta 1.0) by Darius Stone для GTA - SA
Добавил: Kronos
Всего комментариев: 0
Новая волна GTA-ONE
Добавил: Ice_Code
Всего комментариев: 3
Трейлер Grand Theft Auto - V
Добавил: Kronos
Всего комментариев: 0
Новые темы форума
Last Empire War Z
Ответил: Kronos
Всего ответов:
Adobe Photoshop Touch
Ответил: Kronos
Всего ответов:
ePSXe for Android
Ответил: Kronos
Всего ответов:
Лучшие пользователи
Kronos
Логин: Kronos
Репутация: 10
Группа: Администраторы
Ice_Code
Логин: Ice_Code
Репутация: 2
Группа: Администраторы
ExT
Логин: ExT
Репутация: 1
Группа: Пользователи
Здравствуй, Гость! Авторизуйся или зарегистрируйся
Цвет фона
Случайные материалы



Последние материалы

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Pawn - скриптинг » Мануалы/уроки » Античиты » [Античит] Античит на Airbreak
[Античит] Античит на Airbreak
KronosДата: Четверг, 03.07.2014, 01:01 | Сообщение # 1
Местный мазафака
Сообщений: 117
Награды: 0
Репутация: 10
Доброго времени суток дорогие друзья! После многих неудачных способов защиты от ****ганов-читеров которые таки наравят передвигаться с помощью собейта, многие разработчики разочеровались. Сегодня мы попытаемся решить эту незадачу.

Для начала предлагаю создать дефайны которые станут необходимы в процессе написания античита. Итак, ко всем дефайнам добавляем:
Код
#define SetPlayerPos t_SetPlayerPos

Прошу Вас заметить, что после написания античита, Вам будет необходимо изменить все SetPlayerPos на t_SetPlayerPos

Далее в enum pInfo добавим:
Код
Float: pPos_x,
Float: pPos_y,
Float: pPos_z

Создаем stock:
Код
stock onCheckAirBrk( playerid )
{
     if( IsPlayerConnected( playerid ) ) // проверка на коннект игрока
     {
         new Float:currentPos[ 3 ],
             Float:distance;
         GetPlayerPos( playerid, currentPos[ 0 ], currentPos[ 1 ], currentPos[ 2 ] );
         distance = floatround( GetPlayerDistanceFromPoint( playerid, PlayerInfo[ playerid ][ pPos_x ], PlayerInfo[ playerid ][ pPos_y ], PlayerInfo[ playerid ][ pPos_z] ) );
         if(GetPVarInt(playerid, "AntiBreik") == 0)
         {
             if(GetPlayerState(playerid) == 1) //если игрок пешком
             {
                 if( distance > 40)
                 {
                        KickWithMessage(playerid, "Вы были кикнуты по подозрению в читерстве");// Это функция кика. Она у меня выглядит именно так
                 }
             }
             else//если игрок в авто
             {
                 if( distance > 80)
                 {
                        KickWithMessage(playerid, "Вы были кикнуты по подозрению в читерстве");
                 }
             }
         }
         PlayerInfo[ playerid ][ pPos_x ] = currentPos[ 0 ];
         PlayerInfo[ playerid ][ pPos_y ] = currentPos[ 1 ];
         PlayerInfo[ playerid ][ pPos_z ] = currentPos[ 2 ];
     }
}

В любой ежесекундный паблик добавляем:
Код
        if(PlayerLogged[i] > 0)
         {
                onCheckAirBrk( i );
             if(GetPVarInt(i, "AntiBreik") > 0) SetPVarInt(i, "AntiBreik", GetPVarInt(i, "AntiBreik") - 1);
         }

где i это максимальное кол-во игроков (MAX_PLAYERS)

И снова создадим stock:
Код
stock t_SetPlayerPos( playerid, Float:x, Float:y, Float:z )
{
     SetPlayerPos( playerid, x, y, z );
     PlayerInfo[ playerid ][ pPos_x ] = x;
     PlayerInfo[ playerid ][ pPos_y ] = y;
     PlayerInfo[ playerid ][ pPos_z ] = z;
     SetPVarInt(playerid, "AntiBreik", 3);
     return true;
}

Теперь в OnPlayerRequestClass:
Код
SetPVarInt(playerid, "AntiBreik", 500);

И в OnPlayerSpawn:
Код
SetPVarInt(playerid, "AntiBreik", 3);

Ну вот и все) Автор урока я, обо всех недочетах сообщите в теме.


СообщениеДоброго времени суток дорогие друзья! После многих неудачных способов защиты от ****ганов-читеров которые таки наравят передвигаться с помощью собейта, многие разработчики разочеровались. Сегодня мы попытаемся решить эту незадачу.

Для начала предлагаю создать дефайны которые станут необходимы в процессе написания античита. Итак, ко всем дефайнам добавляем:
Код
#define SetPlayerPos t_SetPlayerPos

Прошу Вас заметить, что после написания античита, Вам будет необходимо изменить все SetPlayerPos на t_SetPlayerPos

Далее в enum pInfo добавим:
Код
Float: pPos_x,
Float: pPos_y,
Float: pPos_z

Создаем stock:
Код
stock onCheckAirBrk( playerid )
{
     if( IsPlayerConnected( playerid ) ) // проверка на коннект игрока
     {
         new Float:currentPos[ 3 ],
             Float:distance;
         GetPlayerPos( playerid, currentPos[ 0 ], currentPos[ 1 ], currentPos[ 2 ] );
         distance = floatround( GetPlayerDistanceFromPoint( playerid, PlayerInfo[ playerid ][ pPos_x ], PlayerInfo[ playerid ][ pPos_y ], PlayerInfo[ playerid ][ pPos_z] ) );
         if(GetPVarInt(playerid, "AntiBreik") == 0)
         {
             if(GetPlayerState(playerid) == 1) //если игрок пешком
             {
                 if( distance > 40)
                 {
                        KickWithMessage(playerid, "Вы были кикнуты по подозрению в читерстве");// Это функция кика. Она у меня выглядит именно так
                 }
             }
             else//если игрок в авто
             {
                 if( distance > 80)
                 {
                        KickWithMessage(playerid, "Вы были кикнуты по подозрению в читерстве");
                 }
             }
         }
         PlayerInfo[ playerid ][ pPos_x ] = currentPos[ 0 ];
         PlayerInfo[ playerid ][ pPos_y ] = currentPos[ 1 ];
         PlayerInfo[ playerid ][ pPos_z ] = currentPos[ 2 ];
     }
}

В любой ежесекундный паблик добавляем:
Код
        if(PlayerLogged[i] > 0)
         {
                onCheckAirBrk( i );
             if(GetPVarInt(i, "AntiBreik") > 0) SetPVarInt(i, "AntiBreik", GetPVarInt(i, "AntiBreik") - 1);
         }

где i это максимальное кол-во игроков (MAX_PLAYERS)

И снова создадим stock:
Код
stock t_SetPlayerPos( playerid, Float:x, Float:y, Float:z )
{
     SetPlayerPos( playerid, x, y, z );
     PlayerInfo[ playerid ][ pPos_x ] = x;
     PlayerInfo[ playerid ][ pPos_y ] = y;
     PlayerInfo[ playerid ][ pPos_z ] = z;
     SetPVarInt(playerid, "AntiBreik", 3);
     return true;
}

Теперь в OnPlayerRequestClass:
Код
SetPVarInt(playerid, "AntiBreik", 500);

И в OnPlayerSpawn:
Код
SetPVarInt(playerid, "AntiBreik", 3);

Ну вот и все) Автор урока я, обо всех недочетах сообщите в теме.

Автор - Kronos
Дата добавления - 03.07.2014 в 01:01
Форум » Pawn - скриптинг » Мануалы/уроки » Античиты » [Античит] Античит на Airbreak
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Revision by www.GTA-ONE.ru
Copyright © 2024 |