
new FSName[30] = "智能防刷屏";
#define MAX_SPAM_LIMIT_NO_SPEAK 4
#define MAX_SPAM_LIMIT_KICK 7
new LastText[256];
new LastPlayerid=-1;
new SpamCtr=0;
new bool:NoSpeak[MAX_PLAYERS];
public OnPlayerText(playerid, text[])//防止重复发言 代价打汉字之前要打空格
{
new CheckPos=0;
new Len=strlen(text);
if(Len>=3)CheckPos=random(Len);
else CheckPos=0;
if(NoSpeak[playerid]==true)SendClientMessage(playerid,CLR_ALERT,"你被禁言了"); if(text[CheckPos]==LastText[CheckPos]&&playerid==LastPlayerid)
{
SpamCtr++;
//DEBUG printf("Pos: %d",CheckPos);
if(NoSpeak[playerid]==false&&SpamCtr>=2)SendClientMessage(playerid,CLR_ALERT,"请不要重复发送相同的讯息");
if(SpamCtr>MAX_SPAM_LIMIT_KICK&&NoSpeak[playerid]==true)
{
new SpamerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpamerName,MAX_PLAYER_NAME);
Qformat("刷屏的报应",SpamerName);
SendClientMessageToAll(CLR_ALERT,Qinf);
SendClientMessage(playerid,CLR_ALERT,"你因为刷屏被踢出服务器");
Kick(playerid);
return 0;
}
else if(SpamCtr>MAX_SPAM_LIMIT_NO_SPEAK&&NoSpeak[playerid]==false)
{
new SpamerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpamerName,MAX_PLAYER_NAME);
Qformat(" %s请不要刷屏",SpamerName);
SendClientMessageToAll(CLR_WHITE,Qinf);
SendClientMessage(playerid,CLR_ALERT,"你被禁言了");
NoSpeak[playerid]=true;
return 0;
}
else return 0;
}
else
{
strcpy(LastText,text);
LastPlayerid=playerid;
SpamCtr=0;
return 1;
}
#define MAX_SPAM_LIMIT_NO_SPEAK 4
#define MAX_SPAM_LIMIT_KICK 7
new LastText[256];
new LastPlayerid=-1;
new SpamCtr=0;
new bool:NoSpeak[MAX_PLAYERS];
public OnPlayerText(playerid, text[])//防止重复发言 代价打汉字之前要打空格
{
new CheckPos=0;
new Len=strlen(text);
if(Len>=3)CheckPos=random(Len);
else CheckPos=0;
if(NoSpeak[playerid]==true)SendClientMessage(playerid,CLR_ALERT,"你被禁言了"); if(text[CheckPos]==LastText[CheckPos]&&playerid==LastPlayerid)
{
SpamCtr++;
//DEBUG printf("Pos: %d",CheckPos);
if(NoSpeak[playerid]==false&&SpamCtr>=2)SendClientMessage(playerid,CLR_ALERT,"请不要重复发送相同的讯息");
if(SpamCtr>MAX_SPAM_LIMIT_KICK&&NoSpeak[playerid]==true)
{
new SpamerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpamerName,MAX_PLAYER_NAME);
Qformat("刷屏的报应",SpamerName);
SendClientMessageToAll(CLR_ALERT,Qinf);
SendClientMessage(playerid,CLR_ALERT,"你因为刷屏被踢出服务器");
Kick(playerid);
return 0;
}
else if(SpamCtr>MAX_SPAM_LIMIT_NO_SPEAK&&NoSpeak[playerid]==false)
{
new SpamerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpamerName,MAX_PLAYER_NAME);
Qformat(" %s请不要刷屏",SpamerName);
SendClientMessageToAll(CLR_WHITE,Qinf);
SendClientMessage(playerid,CLR_ALERT,"你被禁言了");
NoSpeak[playerid]=true;
return 0;
}
else return 0;
}
else
{
strcpy(LastText,text);
LastPlayerid=playerid;
SpamCtr=0;
return 1;
}
