GetTickCount
#1

Добрый день, или что у вас там за окном ...
Прошу помочь мне с решением некой проблемы, она заключается в следующем:
Код:
	if(strcmp(cmdtext, "/lol", true == 0)
	{
	SendClientMessage(playerid,0x000000,"lol");
	return 1;
	}
как сделать с GetTickCount

то что в начало нужно добавлять массив
Код:
new lol[MAX_PLAYERS];
и гдето в этой строке:
Код:
	if(strcmp(cmdtext, "/lol", true == 0)
вставить
Код:
(GetTickCount() - lol[playerid]) > 100)
ну и в конце команды поставить:
Код:
	}
	lol[playerid] - GetTickCount();
==================
ну у меня ни чего не выходит =(
прошу помочь..
Заранее благодарен
Reply
#2

1) объясни чего ты хочешь получить?
2) последние 4 предложения какая-то несусветная ахинея
Reply
#3

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
1) объясни чего ты хочешь получить?
2) последние 4 предложения какая-то несусветная ахинея
1. если чел вводит /lol и стоит SendClientMessageToAll то засирается чат, я хочу предотвратить ето путем установки GetTickCount ... то есть, после того как поставлю это, игроки не смогут тупо сразу флудить этой командой, а только поистечению времени которое будет указано..
2. ??
Reply
#4

Помойму проще или даже лучше через таймеры.. Либо через один глобальный таймер который крутится по интервалу в 1000 мс, в таймере цикл всех игроков, и обрабатывать там твой массив..
Т.е. примерно так:
pawn Код:
new antiflood[ MAX_PLAYERS ];
public OnGameModeInit(...)
{
    SetTimer("oneSecondTimer", 1000, 1);
}
pawn Код:
public oneSecondTimer() {
    for(new i = 0; i <= maxPlayers; i++)
    {
        if(antiflood[ i ] > 0)
        {
            antiflood[ i ]--;
        }
    }
}
pawn Код:
if(strcmp(cmdtext, "/lol", true == 0)
{
    if(antiflood[ playerid ] == 0)
    {
        SendClientMessage(playerid,0x000000,"lol");
        antiflood[ playerid ] = 3;
    }
    return 1;
}
или нужно именно через GetTickCount ?

Хотя я честно говоря не понял вопроса...
Reply
#5

допустим

Юзаем NUM'ы :
Код:
new lol[MAX_PLAYERS];

   if(newkeys == 16384 && (GetTickCount() - lol[playerid]) > 9900)
   {
    (тело функции)
    }
    lol[playerid] = GetTickCount();
    }
Reply
#6

Quote:
Originally Posted by Kernell
Посмотреть сообщение
Помойму проще или даже лучше через таймеры..
увы, но проще, и даже лучше, чтобы новички сперва думали, а уж потом ждали когда правильное решение напишут программисты.
pawn Код:
if(!strcmp(cmdtext, "/lol", true) && GetPVarInt(playerid,"LolKey") < GetTickCount())
{
    SendClientMessage(playerid,0x000000,"lol");
    SetPVarInt(playerid,"LolKey",GetTickCount() + 1000);
    return 1;
}
Reply
#7

заюзал твой вариант, теперь пишет Unknow command ><
Reply
#8

PVars плохо.

Использование массива вместо.
Reply
#9

Quote:
Originally Posted by [CripZ]SERCH
Посмотреть сообщение
заюзал твой вариант, теперь пишет Unknow command ><
Это я примерно сделал, естественно тебе нужно его доработать "под себя"!

Unknow command вылетает потому что return 0; (Либо реально 0 либо массив вылетает)
Reply
#10

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
увы, но проще, и даже лучше, чтобы новички сперва думали, а уж потом ждали когда правильное решение напишут программисты.
pawn Код:
if(!strcmp(cmdtext, "/lol", true) && GetPVarInt(playerid,"LolKey") < GetTickCount())
{
    SendClientMessage(playerid,0x000000,"lol");
    SetPVarInt(playerid,"LolKey",GetTickCount() + 1000);
    return 1;
}
Я всего лишь предложил вариант и то примерный, а новички пускай задают вопросы если что не ясно. Наша задача сейчас помогать..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)