03.01.2017, 21:17
PHP Code:
public OnPlayerText(playerid, text[])
{
if(!PlayerInfo[playerid][pLogged]) return SendClientMessage(playerid, COLOR_BORDO, "Чтобы писать в чат, необходимо залогиниться!"), 0;
if(PlayerInfo[playerid][pMute]) return SendClientMessage(playerid, COLOR_RED, "Вы не можете писать в чат, Вы заглушены!"), 0;
if(PlayerInfo[playerid][pFloodTime] > gettime())
{
PlayerInfo[playerid][pFloodCount]++;
if(PlayerInfo[playerid][pFloodCount] >= 3)
{
static string[145];
format(string, sizeof string, "%s(ID: %d) был кикнут. Причина: Спам", PlayerInfo[playerid][pName], playerid);
SendClientMessageToAll(COLOR_BORDO, string);
Kick2(playerid);
return 0;
}
else if(PlayerInfo[playerid][pFloodCount] >= 2) SendClientMessage(playerid, COLOR_RED, "АнтиСпам предупреждение! Дальше кик.");
else SendClientMessage(playerid, COLOR_LIGHTBLUE, "Администрация: не флуди!");
return 0;
}
if(ContainsAnyIP(text))
{
static string[145];
format(string, sizeof string, "SERVER: %s(%d) забанен на сервере. Причина: реклама", PlayerInfo[playerid][pName], playerid);
SendClientMessageToAll(COLOR_BORDO, string);
Ban2(playerid);
return 0;
}
for(new s, i, pos, start, end; s < sizeof Swears; s++)
{
pos = -1;
while((pos = strfuzzyfind(text, Swears[s], pos + 1, start, end)) != -1)
{
for(i = end; i >= start; --i) text[i] = '*';
}
}
if(PlayerInfo[playerid][pCaps]) UpperToLower(text);
PlayerInfo[playerid][pFloodTime] = gettime() + 1;
if(IsEmptyMessage(text)) return 0;
if(text[0] == '!')
{
if(IsEmptyMessage(text[1])) return 0;
static string[145];
if(PlayerInfo[playerid][pGang])
{
format(string, sizeof string, "* Чат банды %s >> от %s: %s", GName[PlayerInfo[playerid][pGang]], PlayerInfo[playerid][pName], text[1]);
SendClientMessageToGang(PlayerInfo[playerid][pGang], GetPlayerColor(playerid), string);
}
else
{
format(string, sizeof string, "* Чат банды %s >> от %s: %s", DefaultGangNames[PlayerInfo[playerid][pTeam]], PlayerInfo[playerid][pName], text[1]);
SendClientMessageToTeam(PlayerInfo[playerid][pTeam], GetPlayerColor(playerid), string);
}
return 0;
}
if(text[0] == '#' && IsPlayerAdminEx(playerid, 1))
{
if(IsEmptyMessage(text[1])) return 0;
static string[145];
format(string, sizeof string, "* Админский чат: %s: %s", PlayerInfo[playerid][pName], text[1]);
SendClientMessageToAdmins(COLOR_LIME, string);
return 0;
}
if(PlayerInfo[playerid][pGang] && GTag[PlayerInfo[playerid][pGang]])
{
static string[145];
format(string, sizeof string, "[%s]%s(%d): {FFFFFF}%s", GName[PlayerInfo[playerid][pGang]], PlayerInfo[playerid][pName], playerid, text);
SendClientMessageToAll(GetPlayerColor(playerid), string);
return 0;
}
static string[145];
format(string, sizeof string, "(%d): %s", playerid, text);
SendPlayerMessageToAll(playerid, string);
return 0;
}
Quote:
"SERVER: %s(%d) забанен на сервере. Причина: реклама" |
ContainsAnyIP - это вроде MX_Master делал, в ней есть баг, всё равно можно написать текст так, что система ложно подумает, что это ип, => иногда забаниться не виновный игрок.
Quote:
Немного доработан антимат |