Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя
Показано с 1 по 10 из 32
  1. #1
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±

    AirBrake & Teleport

    Всем привет! Вот небольшие наброски моего "античита" .

    Переменные для хранения данных, которые мы будем использовать в дальнейшем коде.

    PHP код:
    new Float:Player_Pos[3][MAX_PLAYERS];
    new 
    Player_Off_Protect[MAX_PLAYERS];
    new 
    Player_Timer[MAX_PLAYERS];// Если нет таймера, если есть, то вставляем код из этого таймера в свой
    new Player_Timer_Tick[MAX_PLAYERS]; 
    * Если у вас есть таймер, НЕ СОЗДАВАЙТЕ НОВЫЙ!
    * Минимальная частота вашего таймера, должна быть 1 секунду.


    OnPlayerConnect:

    PHP код:
    Player_Off_Protect[playerid] = 9999999;
    Player_Timer_Tick[playerid] = 0;
    Player_Timer[playerid] = SetTimerEx("@_WAC_Timer_Function"2501"d"playerid); 
    OnPlayerDisconnect
    PHP код:
    KillTimer(Player_Timer[playerid]); 
    OnPlayerSpawn
    PHP код:
    Player_Off_Protect[playerid] = 2
    OnPlayerExitVehicle
    PHP код:
    GetPlayerPos(playeridPlayer_Pos[0][playerid], Player_Pos[1][playerid], Player_Pos[2][playerid]); 



    Функция телепорта. Я просто сделал #define, в перехвате функций не силен =).

    В начало мода (по желанию, можно также использовать напрямую):
    PHP код:
    #define SetPlayerPos              WAC_SetPlayerPos 

    Сама функция:
    PHP код:
    stock WAC_SetPlayerPos(playeridFloat:x,Float:y,Float:z)
    {
        
    Player_Pos[0][playerid] = x;
        
    Player_Pos[1][playerid] = y;
        
    Player_Pos[2][playerid] = z;
        
        
    #if defined SetPlayerPos
            #undef SetPlayerPos
        #endif
        
    SetPlayerPos(playeridx,y,z);
        
    #define SetPlayerPos WAC_SetPlayerPos
            
    Player_Off_Protect[playerid] = 2;
            if(!
    IsPlayerInRangeOfPoint(playerid10.0x,y,z)) return Kick(playerid); // NOP
        
    return 1;




    Таймер.

    PHP код:
    @_WAC_Timer_Function(playerid);
    @
    _WAC_Timer_Function(playerid)
    {    
        if(!
    Player_Off_Protect[playerid])
        {
            new 
    Float:Distance GetPlayerDistanceFromPoint(playeridPlayer_Pos[0][playerid], Player_Pos[1][playerid], Player_Pos[2][playerid]);
            if(
    10.0 Distance 40.0)
            {
                if(!
    IsPlayerInAnyVehicle(playerid))
                {
                    
    Kick(playerid);
                }
            }
            else if(
    40 Distance)
            {
                
    Kick(playerid);
            }
            
    GetPlayerPos(playeridPlayer_Pos[0][playerid], Player_Pos[1][playerid], Player_Pos[2][playerid]);
        }
        
    Player_Timer_Tick[playerid]++;
        if(
    Player_Timer_Tick[playerid] >= 4)
        {
            
    Player_Timer_Tick[playerid] = 0;
            if(
    Player_Off_Protect[playerid] > 0Player_Off_Protect[playerid]--;
        }
        return 
    1;

      Открыть/закрыть
    Player_Timer_Tick - переменная, которая подсчитывает в таймере на 250 мс, каждую секунду. Если вы используете таймер с частотой 1 секунду, избавляйтесь от переменной Player_Timer_Tick.




    Жду критики.

    Автор: wAx
    Последний раз редактировалось wAx; 26.12.2014 в 21:32.

  2. 3 пользователя(ей) сказали cпасибо:
    Dima_Tushin (26.12.2014) Unreal (19.09.2015) Web (27.08.2018)
  3. #2
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    Баян.

  4. #3
    Аватар для #Bezdonny
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.10.2014
    Сообщений
    6
    Репутация:
    3 ±
    Попробую отпишусь

  5. #4
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    Баян.
    Пруфы?

  6. Пользователь сказал cпасибо:
    Dima_Tushin (26.12.2014)
  7. #5
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    Пруфы?
    В гугле anti airbreak вбей и увидишь, что тем с подобным принципом действия много.

  8. #6
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    У читов так-то принцип действия тоже одинаковый.

  9. Пользователь сказал cпасибо:
    Dima_Tushin (26.12.2014)
  10. #7
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    мой вариант.

    PHP код:
    new FloatAirBreak[MAX_PLAYERS][3];
    stock SetPlayerPosAC(playeridFloatXFloatYFloatZ)
    {
        
    AirBreak[playerid][0] = X;
        
    AirBreak[playerid][1] = Y;
        
    AirBreak[playerid][2] = Z;
        
    SetPlayerPos(playeridXYZ);
        return 
    1;
    }
    #if    defined    _ALS_SetPlayerPos
    #undef    SetPlayerPos
    #else
    #define    _ALS_SetPlayerPos
    #endif
    #define SetPlayerPos SetPlayerPosAC 
    PHP код:
    public OnPlayerExitVehicle(playeridvehicleid)
    {
        
    GetPlayerPos(playeridAirBreak[playerid][0], AirBreak[playerid][1], AirBreak[playerid][2]);
        return 
    true;

    В секундный таймер!

    PHP код:
            //AirBreak
            
    if(GetPlayerState(i) == PLAYER_STATE_ONFOOT)
            {
                new 
    Floatdistance GetPlayerDistanceFromPoint(iAirBreak[i][0], AirBreak[i][1], AirBreak[i][2]);
                if(!
    IsPlayerInAnyVehicle(i))
                {
                    if(
    distance 40.0)
                    {
                        
    format(okrozsizeof(okroz), "<<Warning>> Игрок %s[%d]: Возможно AirBreak"Name(i), i);
                        
    SendAdminMessage(COLOR_ADMINokroz);
                        return 
    1;
                    }
                    if(
    distance 120.0)
                    {
                        
    SendClientMessage(iCOLOR_LIGHTRED""KickPlayerid" [#9957]");
                        
    SetTimerEx("Kicks"250false"i"i);
                    }
                    
    GetPlayerPos(iAirBreak[i][0], AirBreak[i][1], AirBreak[i][2]);
                }
                return 
    1;
            } 
    PHP код:
    #define KickPlayerid "Вы были кикнуты подозрению в читерстве!" 
    Если включить NOP SetPlayerPos все равно будит ловить
    Последний раз редактировалось Dima_Tushin; 26.12.2014 в 18:44.

  11. #8
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    Ты доработай уж свой вариант, а потом выкладывай. Защита от NOP, делается 1 строчкой в моем варианте, сейчас пересмотри его.

  12. Пользователь сказал cпасибо:
    Dima_Tushin (26.12.2014)
  13. #9
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    Ты доработай уж свой вариант, а потом выкладывай. Защита от NOP, делается 1 строчкой в моем варианте, сейчас пересмотри его.
    все увидел буду знать!

    напиши урок о починке авто собейтом! очень ищу пытался сделать но не получается

    SetVehicleHealth или RepairVehicle ( сделай хоть один из них буду благодарен! )

  14. #10
    Аватар для Mazzilla
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.11.2013
    Адрес
    Нижневартовск
    Сообщений
    256
    Репутация:
    63 ±
    А теперь объясни, зачем нам Player_WAC_User)

 

 
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •