Просмотр полной версии : [Вопрос] Курсор и команда
Hello, ребят выручайте, хочу сделать что бы игрок мог когда ему надо включать/выключать курсор, например админ в RECON Режиме мог быстро нажав на кнопку выключить курсор и посмотреть вокруг игрока.Так вот вот команда:
CMD:mouse(playerid)
{
if(MouseStatus[playerid] == 0)
{
SelectTextDraw(playerid, 0x000E17FF);
SCM(playerid, -1, "{009CFF}|{FFFFFF} Вы включили курсор, что бы отключить его опять нажмите на {009CFF}ESC{FFFFFF}.");
MouseStatus[playerid] = 1;
}
else
{
CancelSelectTextDraw(playerid);
MouseStatus[playerid] = 0;
}
return true;
}
К команде претензий нету, всё хорошо работает, но когда я делаю например на кнопку, она включается но что бы выключить приходится нажимать ESC, а на N не хочет выключаться.
if(newkeys & KEY_NO)
{
cmd::mouse(playerid);
}
Daniel_Cortez
26.07.2016, 15:56
Скорее всего, в OnPlayerKeyPressed уже есть конструкция if с "newkeys & KEY_NO" или чем-то похожим в условии и return в теле ветвления.
Скорее всего, в OnPlayerKeyPressed уже есть конструкция if с "newkeys & KEY_NO" или чем-то похожим в условии и return в теле ветвления.
Может быть OnPlayerKeyStateChange?
Может быть OnPlayerKeyStateChange?
опечтался человек, с кем не бывает. Обязательно придраться нужно?
опечтался человек, с кем не бывает. Обязательно придраться нужно?
Ну я просто подумал мб есть такой паблик, вдруг я чего то не знаю.
Скорее всего, в OnPlayerKeyPressed уже есть конструкция if с "newkeys & KEY_NO" или чем-то похожим в условии и return в теле ветвления.
Нет проверил нигде не используется
По-моему, это просто "фича" SA-MP и когда включается кликабельность для текстдравов, OnPlayerKeyStateChange не работает. Проверить легко:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
SendClientMessage(playerid, -1, "OnPlayerKeyStateChange");
return 1;
}
Если сообщение будет выводится при нажатии на N (в режиме кликабельных текстдравов), то можно продолжать искать проблему. Иначе остаётся лишь смириться
vovandolg
26.07.2016, 18:20
new MouseStatus[MAX_PLAYERS char]; // глобальная
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_NO)
{
if(MouseStatus{playerid} == 0)
{
MouseStatus{playerid} = 1;
SelectTextDraw(playerid, 0x000E17FF);
SCM(playerid, -1, !"{009CFF}|{FFFFFF} Вы включили курсор, что бы отключить его нажмите на {009CFF}ESC{FFFFFF}.");
}
}
return 1;
}
public OnPlayerClickTextDraw(playerid, Text:clickedid) //тут смотри по названию не спутай индивидум/глобальный клик TD
{
if(_:clickedid == INVALID_TEXT_DRAW)
{
if(MouseStatus{playerid} == 1)
{
MouseStatus{playerid} = 0;
CancelSelectTextDraw(playerid); //не помню честно это надо или оно и так уберётся
SCM(playerid, -1, !"{009CFF}|{FFFFFF} Вы выключили курсор, что бы включить его нажмите на {009CFF}NO{FFFFFF}.");
}
}
return 1;
}
По-моему, это просто "фича" SA-MP и когда включается кликабельность для текстдравов, OnPlayerKeyStateChange не работает. Проверить легко:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
SendClientMessage(playerid, -1, "OnPlayerKeyStateChange");
return 1;
}
Если сообщение будет выводится при нажатии на N (в режиме кликабельных текстдравов), то можно продолжать искать проблему. Иначе остаётся лишь смириться
К сожалению да это фича такая(
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot