newkeys & timer
#1

Добрый день или что у вас там за окном.
Прошу помочь мне со следующей проблемой...

------
Алгоритм:
Игрок нажимает NUM6 > выдает сообщение в чат > запускается таймер > игрок перекрашивается в другой цвет > килится таймер > игроку возвращается свой цвет ...
Игрок нажимает NUM4 > выдает сообщение в чат > запускается таймер > игрок перекрашивается в другой цвет > килится таймер > игроку возвращается свой цвет ...
------
Проблема:
Заключается в том, что когда человек нажал одну из этих кнопок и сразу же тыкает на вторую ... то действует алгоритм:
Игроку выдается цвет от первой нажатой кнопки > килится таймер > выдается цвет от второй нажатой кнопки > таймер потерялся и цвет остается от второй нажатой кнопки.

--------
Желаемое решение:
Сделать так:
(алгоритм)
Игрок нажимает NUM6 > клацает на NUM4 > в чат выводится Предупреждение о том что один из NUM'ов уже нажат, мол подождите несколько секунд > килится таймер "несколько секунд" > NUM4 становится доступным ...

======
Очень прошу помочь с этой проблемой!
Reply
#2

при нажатии на NUM4 делай SetPVarInt(playerid,"NUM",4);
и в кнопку NUM6 делай проверку if(GetPVarInt(playerid,"NUM")==4)return SendClientMessage(playerid,WHITE,"Вы уже нажали кнопку"),1;

аналогично с NUM6
ах да и ещё в KillTimer удаляй PVar (DeletePVar(playerid,"NUM")
Reply
#3

сейчас юзану ... сек мэн
Reply
#4

Удалил: тут был плохой совет
Reply
#5

Можно вообще таймеры не юзать.
Reply
#6

ну а как ты предложишь степашк?
Reply
#7

не вникал глубоко в суть проблемы, но напомню что таймер можно запускать так, чтоб сработал только один раз. тогда убивать его не придется. если я не правильно понял суть проблемы, извиняйте )
Reply
#8

не работает по принципу Johnny_Xayc ...
жму на нум6 - все ок ....
жму на нум4 - пишет клавиша уже нажата (пишет бесконечно) ...
ставлю на обе клавиши такой алгоритм так они нажимаются как и раньше ....

вот код одной из клавиш:

Code:
   if(newkeys == 16384 && (GetTickCount() - Lag[playerid]) > 9900)
   {
	new string[STR], tmpcolour;
    switch(Player[playerid][pTeam])
    {
    case L_OL1: tmpcolour = ass;
    case L_OL2: tmpcolour = ass1;
    case L_OL3: tmpcolour = ass2;
    default:
    {
    SendClientMessage(playerid, 0x000000, "лол?");
    return 0;
    }
	}
(тут все что просиходит после нажатия нума)
	{
    if(IsPlayerConnected(i))
    {
    if(Player[playerid][pTeam] == Player[i][pTeam])
    {
   	SendClientMessage(i, tmpcolour, string);
    }
    }
    }
    Lag[playerid] = GetTickCount();
    }
Reply
#9

[CripZ]SERCH -_-,у меня работает!
Reply
#10

блин ...
скинь тогда код я посмотрю что не так напортачил у себя )
Reply
#11

я же тебе уже дал пример
pawn Code:
if(newkeys == NUM4)THEN
      if(GetPVarInt(playerid,"NUM6"))return .i.;
      if(GetPVarInt(playerid,"NUM4"))return ты уже нажимал эту кнопку!;
      SetPVarInt(playerid,"NUM4",1);
      SetTimerEx(".i.",5000,0,"ii",playerid,4);
END
if(newkeys == NUM6)THEN
      if(GetPVarInt(playerid,"NUM4"))return .i.;
      if(GetPVarInt(playerid,"NUM6"))return ты уже нажимал эту кнопку!;
      SetPVarInt(playerid,"NUM6",1);
      SetTimerEx(".i.",5000,0,"ii",playerid,6);
END
function:.i.(playerid,num)THEN
switch(num)THEN
       case 4:DeletePVar(playerid,"NUM4");
       case 6:DeletePVar(playerid,"NUM6");
END
END

вот тебе пример
Reply
#12

o_O
это ты на каком языке написал? D
===
ни чего не вышло D
Reply
#13

на pawn я написал,просто использую макросы=)
Reply
#14

го без макросов плз
напиши по человечески
Reply
#15

Quote:
Originally Posted by [CripZ]SERCH
View Post
го без макросов плз
напиши по человечески
http://pastebin.com/nEKq8Z8P
Reply
#16

Code:
error 076: syntax error in the expression, or invalid function call
error 076: syntax error in the expression, or invalid function call
error 010: invalid function or declaration
warning 235: public function lacks forward declaration (symbol "pisya")
это и при том что я NUM4 & NUM6 заменил на настоящий код клавиш
===
что делать?
Reply
#17

Quote:
Originally Posted by [CripZ]SERCH
View Post
Code:
error 076: syntax error in the expression, or invalid function call
error 076: syntax error in the expression, or invalid function call
error 010: invalid function or declaration
warning 235: public function lacks forward declaration (symbol "pisya")
это и при том что я NUM4 & NUM6 заменил на настоящий код клавиш
===
что делать?
покажи строчки error 076: и твой код
Reply
#18

один из нумов:

Code:
   if(newkeys == 16384 && (GetTickCount() - lolkostyle[playerid]) > 9900)
   {
   new string[STR], tmpcolour;
   switch(Player[playerid][pTeam])
   {
   case T_LOL: tmpcolour = COLOR_TLOL;
   case T_LOL1: tmpcolour = COLOR_TLOL1;
   case T_LOL2: tmpcolour = COLOR_TLOL2;
   default:
   {
   SendClientMessage(playerid, 0xf0f0f0, "lol?");
   return 0;
   }
	}
   format(string,STR," %s aaaaaaa ya dypak ybeite menya", Playername(playerid));
   for(new i; i < MAX_PLAYERS; i++)
	{
   if(IsPlayerConnected(i))
   {
   if(Player[playerid][pTeam] == Player[i][pTeam])
   {
   	SendClientMessage(i, tmpcolour, string);
   }
   }
   }
   lolkostyle[playerid] = GetTickCount();
   }
Reply
#19

Quote:
Originally Posted by [CripZ]SERCH
View Post
это и при том что я NUM4 & NUM6 заменил на настоящий код клавиш
зря, а если код измениться, будешь очень долго потом искать где ошибка?!
Reply
#20

Quote:
Originally Posted by [CripZ]SERCH
View Post
один из нумов:
и что это? Это даже на верхний код не похоже...
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)