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

Тема: Anti GM (GodMode)

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Мануал-то исправлять будете?

  2. #12
    Аватар для #Vito
    #define

    Статус
    Оффлайн
    Регистрация
    14.09.2013
    Адрес
    Одесса
    Сообщений
    129
    Репутация:
    38 ±
    PHP код:
    public OnPlayerGiveDamage(playeriddamagedidFloat:amountweaponid)
    {
    new 
    FloatvidaFloatarmaduraFloatdmg;

    GetPlayerArmour(damagedidarmadura);
    GetPlayerHealth(damagedidvida);

    if(
    armadura 0)
    {
    if(
    amount armadura)
    {
    dmg amount armadura;
    vida vida dmg;
    SetPlayerArmour(damagedid0.0);
    SetPlayerHealth(damagedidvida);
    return 
    1;
    }
    armadura armadura amount;
    SetPlayerArmour(damagedidarmadura);
    }
    if(
    armadura 1)
    {
    vida vida amount;
    SetPlayerHealth(damagedidvida);
    }
    return 
    true;

    разве так не легче?
    Skype: vitya.saveliev


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

    Статус
    Оффлайн
    Регистрация
    01.06.2014
    Адрес
    Москва
    Сообщений
    92
    Репутация:
    16 ±
    Цитата Сообщение от #Vito Посмотреть сообщение
    PHP код:
    public OnPlayerGiveDamage(playeriddamagedidFloat:amountweaponid)
    {
    new 
    FloatvidaFloatarmaduraFloatdmg;

    GetPlayerArmour(damagedidarmadura);
    GetPlayerHealth(damagedidvida);

    if(
    armadura 0)
    {
    if(
    amount armadura)
    {
    dmg amount armadura;
    vida vida dmg;
    SetPlayerArmour(damagedid0.0);
    SetPlayerHealth(damagedidvida);
    return 
    1;
    }
    armadura armadura amount;
    SetPlayerArmour(damagedidarmadura);
    }
    if(
    armadura 1)
    {
    vida vida amount;
    SetPlayerHealth(damagedidvida);
    }
    return 
    true;

    разве так не легче?
    На сколько знаю, есть чит, который будет бесконечно убивать всех на сервере.
    + при использовании некоторых ГМ(ов) OnPlayerGiveDamage не вызывается.
    Посмотрите: 1337 PROJECT

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

    Статус
    Оффлайн
    Регистрация
    25.04.2014
    Адрес
    Moscow
    Сообщений
    108
    Репутация:
    -1 ±
    Цитата Сообщение от Flime Посмотреть сообщение
    На сколько знаю, есть чит, который будет бесконечно убивать всех на сервере.
    + при использовании некоторых ГМ(ов) OnPlayerGiveDamage не вызывается.
    да есть такой чит

    - - - Добавлено - - -

    Цитата Сообщение от 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 
    Вот мы и избавились от подключения лишней библиотеки.
    почему именно 3000?

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Читать внимательнее надо было, я писал почему.

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

    Статус
    Оффлайн
    Регистрация
    25.04.2014
    Адрес
    Moscow
    Сообщений
    108
    Репутация:
    -1 ±
    кароче чушь с ложными срабатываниями - х3 почему но на практике убедился в этом

    - - - Добавлено - - -

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

    вообщето я не спрашиваю почему больше 3 секунд я спрашиваю почему не меньше 3сек почему не 1200 миллисекунд или 500?читай внимательно вначале сам!

 

 
Страница 2 из 2 ПерваяПервая 1 2

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

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

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

Ваши права

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