Универсальную функцию сделать сложно без дополнительной мороки, ибо нужно как-то определять, повторяется ли сообщение или это совсем другое сообщение из другой части кода.
Мой вариант подразумевал то, что ты вручную будешь к каждому нужному сообщению делать проверки, но можно и сделать более универсальный вариант, который так же потребует правки существующего кода.
PHP код:
enum e_SERVER_MESSAGE_ANTIFLOOD// Тут перечисляются "ID" сообщений
{
MESSAGE_NAME_1,
MESSAGE_NAME_2,
MESSAGE_NAME_3
};
new server_message_antiflood_time[MAX_PLAYERS][e_SERVER_MESSAGE_ANTIFLOOD];// Название очень уникальное и оригинальное, ога
stock SendServerMessage(playerid, color, const message[], message_id, message_interval = 10)
{
static
smaf_timestamp;
/*Если не уверен, что сможешь самостоятельно контролировать валидность ID которые будет указывать - раскомментируй эту проверку
if(!(0 <= message_id < sizeof(server_message_antiflood_time[])))
return 1;
*/
smaf_timestamp = gettime();
if(server_message_antiflood_time[playerid][e_SERVER_MESSAGE_ANTIFLOOD:message_id] > smaf_timestamp)
return 1;
server_message_antiflood_time[playerid][e_SERVER_MESSAGE_ANTIFLOOD:message_id] = smaf_timestamp+message_interval;
return SendClientMessage(playerid, color, message);
}
Пример использования:
PHP код:
CMD:message_one(playerid, params[])
{
SendServerMessage(playerid, -1, "Сообщение №1", MESSAGE_NAME_1);
return 1;
}
CMD:message_two(playerid, params[])
{
SendServerMessage(playerid, -1, "Сообщение №2", MESSAGE_NAME_2);
return 1;
}
CMD:message_three(playerid, params[])
{
SendServerMessage(playerid, -1, "Сообщение №3", MESSAGE_NAME_3);
return 1;
}
Можешь так же для каждого конкретного сообщения свой интервал указывать после ID сообщения