Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

OnPlayerKeyStateChange клавиши

Мар
1
0
Пользователь
Здравствуйте! Столкнулся с проблемой в своем моде, мне нужно вывести BattlePass в мод на клавишу B и мне нужен ее код.
Пример клавиша Y это KEY_YES
Так же нужно с клавишой B
Кто ранее сталкивался с таким помогите пожалуйста
 
Мар
28
10
Пользователь
2.20. Запрещено публиковать ответы, сгенерированные при помощи ChatGPT или аналогичных ИИ-моделей.
Если у тебя SA:MP / open.mp на Pawn, то здесь важный момент:

KEY_B не существует.
Через OnPlayerKeyStateChange ловятся только те клавиши, которые есть в списке поддерживаемых констант, например KEY_YES = Y, KEY_NO = N, KEY_WALK, KEY_JUMP и т. д. В официальных списках B нет.

То есть:

if(newkeys & KEY_YES)

это нормально, потому что KEY_YES действительно соответствует клавише Y. А вот аналога вида KEY_B в стандартном SA:MP/open.mp нет.

Пример рабочего кода для BattlePass на Y:

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if ((newkeys & KEY_YES) && !(oldkeys & KEY_YES))
{
ShowBattlePass(playerid); // твоя функция открытия BattlePass
}
return 1;
}

Что можно сделать вместо B:

1. Повесить BattlePass на доступную клавишу, например Y, N или H (KEY_CTRL_BACK). Эти константы поддерживаются.


2. Открывать BattlePass через команду, например /bp.


3. Открывать через диалог, текстдрав или кнопку в интерфейсе.


4. Если тебе именно обязательно нужна клавиша B, то стандартным Pawn-кодом на сервере это не делается — для этого уже нужен клиентский мод/плагин, потому что SA:MP сервер сам по себе такую клавишу не отслеживает. Это следует из официального списка доступных key constants, где B отсутствует.



Готовый вариант через команду:

CMD:bp(playerid, params[])
{
ShowBattlePass(playerid);
return 1;
}

Итог:
для SA:MP B через OnPlayerKeyStateChange не поймать, потому что нет KEY_B.
Самый близкий нормальный вариант — поставить BattlePass на KEY_YES, KEY_NO или команду /bp.
 
Rising Star?
Июн
2,882
2,186
Редактор
Если у тебя SA:MP / open.mp на Pawn, то здесь важный момент:

KEY_B не существует.
Через OnPlayerKeyStateChange ловятся только те клавиши, которые есть в списке поддерживаемых констант, например KEY_YES = Y, KEY_NO = N, KEY_WALK, KEY_JUMP и т. д. В официальных списках B нет.

То есть:

if(newkeys & KEY_YES)

это нормально, потому что KEY_YES действительно соответствует клавише Y. А вот аналога вида KEY_B в стандартном SA:MP/open.mp нет.

Пример рабочего кода для BattlePass на Y:

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if ((newkeys & KEY_YES) && !(oldkeys & KEY_YES))
{
ShowBattlePass(playerid); // твоя функция открытия BattlePass
}
return 1;
}

Что можно сделать вместо B:

1. Повесить BattlePass на доступную клавишу, например Y, N или H (KEY_CTRL_BACK). Эти константы поддерживаются.


2. Открывать BattlePass через команду, например /bp.


3. Открывать через диалог, текстдрав или кнопку в интерфейсе.


4. Если тебе именно обязательно нужна клавиша B, то стандартным Pawn-кодом на сервере это не делается — для этого уже нужен клиентский мод/плагин, потому что SA:MP сервер сам по себе такую клавишу не отслеживает. Это следует из официального списка доступных key constants, где B отсутствует.



Готовый вариант через команду:

CMD:bp(playerid, params[])
{
ShowBattlePass(playerid);
return 1;
}

Итог:
для SA:MP B через OnPlayerKeyStateChange не поймать, потому что нет KEY_B.
Самый близкий нормальный вариант — поставить BattlePass на KEY_YES, KEY_NO или команду /bp.
2.20. Запрещено публиковать ответы, сгенерированные при помощи ChatGPT или аналогичных ИИ-моделей.
 
Мар
28
10
Пользователь
2.20. Запрещено публиковать ответы, сгенерированные при помощи ChatGPT или аналогичных ИИ-моделей.
KEY_B нет.
KEY_YES — это не просто буква Y, а готовая константа SA:MP/open.mp.
Для B в стандартных KEY_* аналога нет, поэтому:
либо делай /bp
либо ловить B на клиенте через ASI/CLEO/moonloader
 
𝚖𝚎𝚖𝚎𝚗𝚝𝚘 𝚖𝚘𝚛𝚒.
Мар
1,164
12,365
Команда форума
Администратор
@daghrhh, пакет ловит плагин/интерфейс.

@GashenniiYa, взаимодействия с клавишей B в pawn нет. Если лаунчер, то можно использовать cef для принятия нужных тебе клавиш, либо клиентский плагин от CyberMor - *кликабельно*.
 
Сверху