Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 3 1 2 3 ПоследняяПоследняя
Показано с 1 по 10 из 22
  1. #1
    Аватар для I'm Cobra
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.10.2013
    Сообщений
    151
    Репутация:
    17 ±

    Электрошокер

    Здравствуйте, ув. пользователи Pro-Pawn! Я искал электрошокер, но везде был только пистолет-электрошокер. В связи с этим, я решил сделать электрошокер объектом.

    В начало мода:
    PHP код:
    new tazer_status[MAX_PLAYERS char]; 
    Добавим команду:
    PHP код:
    CMD:tazer(playeridparams[])
    {
        if(!<
    ваша проверка на тоавторизовался ли игрок>)
            return 
    true;
        if(
    tazer_status{playerid} == 0)
        {
            
    SetPlayerAttachedObject(playerid01864260.060.010.08180.00.00.0);
            
    tazer_status{playerid} = 1;
        }
        else
        {
            
    RemovePlayerAttachedObject(playerid0);
            
    tazer_status{playerid} = 0;
        }
        return 
    1;

    У кого стоит стандартный командный процессор, изменяем шапку команды на:
    PHP код:
    if(strcmp(cmdtext"/tazer"true)) 
    Теперь сделаем так, чтобы игрок мог ударять тазером используя сочетания клавиш ПКМ+ЛКМ.
    1. Нажимаем ПКМ и наводим на игрока, и если над головой у него загорается зеленый маркер, жмем ЛКМ.


    Добавляем в OnPlayerKeyStateChange:
    PHP код:
        if(newkeys KEY_FIRE)
        {
            if(
    tazer_status{playerid} == 1)
            {
                new 
    targetplayer GetPlayerTargetPlayer(playerid);
                if(
    targetplayer != INVALID_PLAYER_ID)
                {
                    
    TogglePlayerControllable(targetplayer0);
                    
    SetTimerEx("Unfreeze"100000"%d"targetplayer);
                }
            }
        } 
    Добавим в конец мода:

    PHP код:
    forward Unfreeze(playerid);
    public 
    Unfreeze(playerid)
        return 
    TogglePlayerControllable(playerid1); 
    Если я что-то не понятно написал, пишите в комментарии, я все объясню :)
    Также можно добавить проверку на то, состоит ли игрок в законе, чтобы электрошокер был доступен только им. Или можно добавить покупку электрошокера в магазин 24/7.

    Спасибо пользователю [ForD] за то, что подсказал название проверки, отвечающую за зеленый маркер над головой игрока.
    Последний раз редактировалось L0ndl3m; 02.05.2015 в 14:14.

  2. Пользователь сказал cпасибо:
    [ForD] (21.10.2015)
  3. #2
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    Зачем использовать OnPlayerUpdate? Если можно все удобно уместить в OnPlayerKeyStateChange?

  4. #3
    Аватар для I'm Cobra
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.10.2013
    Сообщений
    151
    Репутация:
    17 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    Зачем использовать OnPlayerUpdate? Если можно все удобно уместить в OnPlayerKeyStateChange?
    Хмм, не подумал об этом. Приду домой поправлю.

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

    Статус
    Оффлайн
    Регистрация
    16.10.2014
    Сообщений
    11
    Репутация:
    0 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    Зачем использовать OnPlayerUpdate? Если можно все удобно уместить в OnPlayerKeyStateChange?
    OnPlayerKeyStateChange не меньше вызывается.

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

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    Цитата Сообщение от James_Cruise Посмотреть сообщение
    OnPlayerKeyStateChange не меньше вызывается.
    По крайней мере не 25 раз за секунду...

    + В нем логично проверять нажатие клавиши? Нет? Так не думаешь?

  7. #6
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±

    Ничего страшного, но чтозанах?

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

    Статус
    Оффлайн
    Регистрация
    06.08.2014
    Сообщений
    12
    Репутация:
    0 ±
    Ничего страшного, но чтозанах?
    А что тут?

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

    Статус
    Оффлайн
    Регистрация
    16.10.2014
    Сообщений
    11
    Репутация:
    0 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    По крайней мере не 25 раз за секунду...

    + В нем логично проверять нажатие клавиши? Нет? Так не думаешь?
    Ну во первых,Update не всегда проверяется 25 раз в секунду,да и зависит от настройки конфига,но стандартный подход это обновление каждые 40 ms в случае отправки пакета.

    Если проверять в Update мы сэкономим пару тиков. В том случае,что если проверять на нажатие ПКМ+ЛКМ в OnPlayerKeyStateChange.
    Я как то выводил логирование кнопок из под паблика OnPlayerKeyStateChange,так вот,флуд был не меренный. Точно в 100% не могу сказать,что меньше вызывается,нужно смотреть проверять. Знаю одно,что в среднем выйдет почти одинаково.
    Возможно как когда нибудь проверю.

  10. #9
    Аватар для I'm Cobra
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.10.2013
    Сообщений
    151
    Репутация:
    17 ±
    Обновил код
    Последний раз редактировалось I'm Cobra; 17.01.2015 в 20:57.

  11. #10
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Определитесь уже, что Вы хотите использовать: PVar'ы ("tazer") или переменные (массив tazer_status).
    P.S.: 2-й вариант желательнее, т.к. кол-во PVar'ов у каждого игрока ограничено.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

 

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

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

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

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

Ваши права

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