瓦克可乐吧 关注:114贴子:1,056
  • 1回复贴,共1

SAMP防作弊脚本

只看楼主收藏回复

1楼2015-08-22 14:15回复
    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;
    }


    2楼2015-08-22 14:43
    回复