Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: Anti GM (GodMode)

  1. #1
    Аватар для Brendan
    Новичок

    Статус
    Оффлайн
    Регистрация
    25.02.2014
    Адрес
    Russia | Kirov
    Сообщений
    21
    Репутация:
    3 ±

    Anti GM (GodMode)

    Доброго времени суток, форумчане.
    Вот предоставлю античит на GodMod.

    К инклудам:

    PHP код:
    #include <YSF> 

    Ко всем переменным, добавим:

    PHP код:
    new 
        
    ShotsTotal[MAX_PLAYERS], 
        
    ShotsDoneEffect[MAX_PLAYERS]

    Далее в каблек public OnPlayerTakeDamage, добавим:

    PHP код:
        if(!IsPlayerPaused(playerid)) ShotsDoneEffect[playerid]++;
        else { 
    ShotsTotal[playerid] = 0ShotsDoneEffect[playerid] = 0; } 
    Далее в калбек public OnPlayerWeaponShot, добавим:

    PHP код:
        if(hittype == BULLET_HIT_TYPE_PLAYER)
        {
            if(!
    IsPlayerPaused(hitid))
            {
                
    ShotsTotal[hitid]++;
                if(
    ShotsTotal[hitid] - ShotsDoneEffect[hitid] > 1)
                {
                    
    Kick(hitid); //cheater
                
    }
            }
        } 
    Ну и последнее, в калбек public OnPlayerDisconnect, добавим 2 строчки:

    PHP код:
        ShotsTotal[playerid] = 0;
        
    ShotsDoneEffect[playerid] = 0
    И вот на этом всё! Античит готов. Пользуйтесь.

    Материал скопирован с forum.sa-mp.com
    Источник - http://forum.sa-mp.com/showthread.php?t=553615
    Последний раз редактировалось Brendan; 03.01.2015 в 20:22.

  2. #2
    Аватар для gangzone.ini
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.06.2014
    Сообщений
    651
    Репутация:
    106 ±
    PHP код:
    IsPlayerPaused 
    ?

  3. #3
    Аватар для Brendan
    Новичок

    Статус
    Оффлайн
    Регистрация
    25.02.2014
    Адрес
    Russia | Kirov
    Сообщений
    21
    Репутация:
    3 ±
    Цитата Сообщение от #Azumi Посмотреть сообщение
    PHP код:
    IsPlayerPaused 
    ?
    Проверка на паузу, использует ли ESC

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от Brendan Посмотреть сообщение
    Проверка на паузу, использует ли ESC
    И что с этого? Это не стандартная функция.

  5. #5
    Аватар для Pe4en9
    Пользователь

    Статус
    Оффлайн
    Регистрация
    16.08.2014
    Сообщений
    35
    Репутация:
    1 ±
    Материал скопирован с forum.sa-mp.com
    Сама тема - http://forum.sa-mp.com/showthread.php?t=553615
    Кипоп мафака - https://github.com/Anuris/-SA-MP-Ant...ter/AntiGM.pwn
    Последний раз редактировалось Pe4en9; 03.01.2015 в 16:10.

  6. #6
    Аватар для Maranzalla
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    25.04.2014
    Адрес
    Moscow
    Сообщений
    108
    Репутация:
    -1 ±
    видимо IsPlayerPaused где-то в #include <YSF>, который автор кстати забыл указать

  7. #7
    Аватар для Brendan
    Новичок

    Статус
    Оффлайн
    Регистрация
    25.02.2014
    Адрес
    Russia | Kirov
    Сообщений
    21
    Репутация:
    3 ±
    Всё подправил тему. Источника указал.
    Я же не писал, что я автор)

  8. #8
    Аватар для Pe4en9
    Пользователь

    Статус
    Оффлайн
    Регистрация
    16.08.2014
    Сообщений
    35
    Репутация:
    1 ±
    надо бы указывать.

  9. #9
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    ТС, придумайте что-нибудь на счёт функции / макроса IsPlayerPaused. Из-за небольшой системы загружать всю библиотеку очень не логично.

    Хорошо. На примере покажу как можно это реализовать.

    В OnPlayerUpdate устанавливаем значение переменной игрока в тиках:
    PHP код:
    SetPVarInt(playerid"player_afk_time"GetTickCount()); 
    Данный паблик вызывается только тогда, когда игрок не находится в AFK. То есть, если игрок ушёл в AFK, мы замерили то время, когда он в последний раз был AFK.

    Далее просто проверяем проверкой, сколько времени прошло с начала AFK игрока данным способом:
    PHP код:
    if(GetTickCount() - GetPVarInt(playerid"player_afk_time") > 3000) {
        
    // игрок находится в AFK

    Почему проверка на больше чем 3000 милисекунд ( а это 3 секунды )? Дело в том, что при стате игрока: PLAYER_STATE_WASTED сервер считает, игрок в AFK, из-за того что он не заспавнился.

    Далее, если не особо хочется писать длинный код на проверку, показанную выше можно сделать полезный макрос ( в данном случае назовём его также, как в Вашем мануале ), который мы добавим в начало скрипта:
    PHP код:
    #define IsPlayerPaused(%0) \
        
    GetTickCount() - GetPVarInt(%0"player_afk_time") > 3000 
    И используем в данном случае также как и в Вашем мануале:
    PHP код:
    if (IsPlayerPaused(playerid))
        
    // игрок находится в AFK 
    Вот мы и избавились от подключения лишней библиотеки.

  10. #10
    Аватар для Brendan
    Новичок

    Статус
    Оффлайн
    Регистрация
    25.02.2014
    Адрес
    Russia | Kirov
    Сообщений
    21
    Репутация:
    3 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    ТС, придумайте что-нибудь на счёт функции / макроса IsPlayerPaused. Из-за небольшой системы загружать всю библиотеку очень не логично.

    Хорошо. На примере покажу как можно это реализовать.

    В OnPlayerUpdate устанавливаем значение переменной игрока в тиках:
    PHP код:
    SetPVarInt(playerid"player_afk_time"GetTickCount()); 
    Данный паблик вызывается только тогда, когда игрок не находится в AFK. То есть, если игрок ушёл в AFK, мы замерили то время, когда он в последний раз был AFK.

    Далее просто проверяем проверкой, сколько времени прошло с начала AFK игрока данным способом:
    PHP код:
    if(GetTickCount() - GetPVarInt(playerid"player_afk_time") > 3000) {
        
    // игрок находится в AFK

    Почему проверка на больше чем 3000 милисекунд ( а это 3 секунды )? Дело в том, что при стате игрока: PLAYER_STATE_WASTED сервер считает, игрок в AFK, из-за того что он не заспавнился.

    Далее, если не особо хочется писать длинный код на проверку, показанную выше можно сделать полезный макрос ( в данном случае назовём его также, как в Вашем мануале ), который мы добавим в начало скрипта:
    PHP код:
    #define IsPlayerPaused(%0) \
        
    GetTickCount() - GetPVarInt(%0"player_afk_time") > 3000 
    И используем в данном случае также как и в Вашем мануале:
    PHP код:
    if (IsPlayerPaused(playerid))
        
    // игрок находится в AFK 
    Вот мы и избавились от подключения лишней библиотеки.
    Отлично)

 

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

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

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

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

Ваши права

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