Назначение клавиш на какие-либо действия

В теме 4 сообщения

Antoxa39
Dance 80-90, mmm Nice)

Здрасти, сегодня мы разберем паблик public OnPlayerKeyStateChange. // он предназначается для того,чтобы на какую либо клавишу сделать действие.

Начнем!)

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

{

    if(newkeys == ID)// если написать newkeys && ID то тогда если у вас зажаты другие клавишы код сработает,а если стоит == то код сработает когда все клавиши будут отжаты.
    {

        //действие
    }

    //допустим,мы хотим чтобы когда игрок нажимал клавишу N,у него выводилось сообщение в чате.
    if(newkeys && 131072)// 131072 = KEY_NO
    {
        SendClientMessage(playerid,-1,"Вы нажали клавишу "N" ");
    }
    //создадим создание машины при нажатии кнопки LALT
    
        if(newkeys & 1024)
        {
            new Float:pos[3]; // создаем перемуную, в которой храним координаты игрока
            GetPlayerPos(playerid,pos[0],pos[1],pos[2]);// узнаем и записываем эти координаты в перемуню "pos"
            CreateVehicle(Modelid,pos[0],pos[1]+2.1,pos[2]+2.9,color1,color2,-1);//создаем машину по координатам игрока

        }
        // Вот и все)
    return 1;

}

Жду поправок)

Отредактировано пользователем Antoxa39

Заметка от DEST , создано

Пока не дотягивает до уровня раздела "Уроки", перемещено в "Песочницу".
Если решите модифицировать свой урок, добавить больше информации/пояснений, возможно, со ссылками на другие источники, отпишите администрации для повторной проверки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Cawfee
Великий Гуру

@Antoxa39,

 

  Цитата
if(newkeys && 131072)// 131072 = KEY_NO
Читать далее...  

 

Зачем использовать значение константы, если есть сама константа? Во-первых, константы нужны для удобства, во-вторых, вы лишь тратите время на поиск значения этой константы, когда могли бы использовать ее напрямую.

 

Также обращаю ваше внимание на существование двух абсолютно разных операторов:

  • Оператор логического умножения: &&. Результат логического выражения дает ноль только в случае, если он равен нулю. В остальных случаях результат выражения - единица. Соответственно, newkeys && 131072 дает единицу всегда, если нажата хотя бы одна клавиша, поскольку значения newkeys и 131072 отличаются от нуля.
  • Оператор побитового И: &. Результат такой операции дает единицу в том случае, если биты одного операнда совпадают с битами другого операнда. Соответственно, newkeys & 131072 даст 1 только при условии, если семнадцатый бит в переменной newkeys установлен в 1. Откуда семнадцать? 131072 = 2^17 = (00000000 00000010 00000000 00000000) в двоичной системе счисления.

Если есть желание доработать тему, было бы неплохо исправить вышеизложенные недочеты и привести список констант с их значениями. Либо же сослаться сюда.

 

В подобных темах еще неплохо указывать возвращаемые значения из callback-функций (к чему приводит возврат нуля и единицы из функции). Но, коль уж для OnPlayerKeyStateChange возвращаемое значение не играет роли, про это можно и умолчать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev

Ох, да простят меня модераторы за оффтоп.


@Antoxa39, упустим момент, что ты недавно просил помощи по элементарным вопросам SQL, в то же время предоставляешь услуги pawn-разработчика. Что за детский лепет ты здесь показал? Мало того, что русский язык не ахти, так еще и объяснения не внятные. Не понятен лишь один момент: вы таким образом сообщения тут набиваете или что? *facepalm*

 

Что это такое?

"если написать newkeys && ID то тогда если у вас зажаты другие клавишы код сработает,а если стоит == то код сработает когда все клавиши будут отжаты.";
"допустим,мы хотим чтобы когда игрок нажимал клавишу N,у него выводилось сообщение в чате.";

Условие, например, if(newkeys & KEY_WALK) используется для срабатывания кода при нажатии клавиши в сочетании с другими.
Попрошу подметить, что в условии выше используется ОДИН АМПЕРСАНД, а не два.


Условие, например, if(newkeys == KEY_WALK) будет срабатывать ТОЛЬКО когда нажата именно одна клавиша (огонь в данном случае). Т.е. если при этом зажата клавиша прицеливания или какая-либо другая, скрипт не сработает!

Именно так должны писаться подобные уроки.
Дам лишь один совет: перед тем как писать подобные темы - выучи теорию и перестань предоставлять свои услуги pawn-разработчика.

 

Удачи.

UPD:
SendClientMessage(playerid,-1,"Вы нажали клавишу "N" "); //неверное использование кавычек.
SendClientMessage(playerid,-1,"Вы нажали клавишу \"N\" "); //верное использование кавычек.

Если пишете подобные уроки, то будьте добры, учитывайте все моменты до единого.

Отредактировано пользователем glvde.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • migghty
      От migghty
      Ищу кодера, который допилит мод под мою идею SAMP 0.3.7
    • lisicaf
      От lisicaf
      Всех приветствую и заранее спасибо за любую оказанную помощь.
      Суть: Аризона выпускает новое обновление в котором меняет CEF доната(скрин ниже), каким образом можно его скопировать и перенести к себе в мод Аризоны?

    • xpadio
      От xpadio
      Dubai RP | Eternity Onyx
      Скачать файл Спасибо большое SliverShoks за этот мод( если ошибся в нейме - sorry ) 
      Крч переделанная версия мода
      Eternity   от SliverShoks
      Если кто-то хочет узнать как и что установить, заходим на ютуб и смотрим мой видос, я всё рассказал там сыллку ниже прикреплю
      Тут нечего писать не буду ведь всё расписал, удачи тебе тому самому счастливому обладателю этого обновлённого мода!!!!!

       
      Видео обзор и объяснение
      Добавил xpadio Добавлено 18.07.2025 Категория Моды Автор xpadio