Armstrrrong
Умник
Вечно надоедало когда игроки беспрерывно строчат в репорт с глупыми вопросами, и вот надумал зделать систему антифлуда на репорт.
И так начнем к Форкавдам добавим это
далее ко вем new добвим это
, создаем новый паблик
в
где нибудь в начале добавим
и
заменяем на мое
и на надо заменить команду /pm вот даю сразу готовую
Все
можно заменить на свое, только что бы везде было оденаковое. Это вам дасть то что если игрок отправил жалобу то он не сможет дать ее повторно пока не истекет таймер или вы ему не ответете на ее. Работает на модах РЛС, на остольных не проверял.
Всё что не ясно остовляйте в коментариях
И так начнем к Форкавдам добавим это
PHP:
forward Clearpm(playerid);
PHP:
static bool:pm[MAX_PLAYERS];
PHP:
public Clearpm(playerid)
{
pm[playerid]=false;
return 1;
}
PHP:
public OnPlayerConnect(playerid)
PHP:
pm[playerid]=false;
PHP:
case 10:
PHP:
case 10:
{
if(response)
{
while(strfind(inputtext,"%",true)!=-1)
{
strdel(inputtext,strfind(inputtext,"%",true),strfind(inputtext,"%",true)+2);
}
if(pm[playerid]) return SendClientMessage(playerid, COLOR_LIGHTRED,"Вы уже отправляли жалобу. Подождите некоторое время");
if(!strlen(inputtext))return ShowPlayerDialog(playerid,10,DIALOG_STYLE_INPUT,"Жалоба администрации","Вы собираетесь отправить жалобу администрации сервера.\nЖалобу сформулируйте чётко и ясно!","Ок","<< Назад");
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "Жалоба: %s",(inputtext));
SendClientMessage(playerid, COLOR_WHITE, string);
SendClientMessage(playerid, COLOR_LIGHTRED,"Ваша жалоба была отправлена администрации сервера");
format(string, sizeof(string), "Жалоба от %s[%d]: %s", sendername, playerid, (inputtext));
ABroadCast(0xAA3333AA,string,1);
pm[playerid]=true;
SetTimerEx("Clearpm",18000,false,"i",playerid);
return 1;
}
PHP:
else if(strcmp(cmd, "/pm", true) == 0 || strcmp(cmd, "/ot", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1)
{
if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_GREY, "Вы еще не вошли!");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "::: Введите: /pm [id] [текст]");
giveplayerid = ReturnUser(tmp);
if (IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, "::: Введите: /pm [id] [текст]");
if (PlayerInfo[playerid][pAdmin] >= 1)
{
format(string, sizeof(string), "Ответ от %s: %s",sendername, (result));
SendClientMessage(giveplayerid, COLOR_YELLOW, string);
pm[giveplayerid]=false;
format(string, sizeof(string), "<-Ответ к %s[%d]: %s", giveplayer, giveplayerid, (result));
ABroadCast(0xA85400AA,string,1);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Игрок не найден!");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
return 1;
}
return 1;
}
PHP:
pm
Всё что не ясно остовляйте в коментариях
