Проблема с Антиматом
#1

Проблема заключается в следующем: Когда игрок матерится, ему, как и полагается, банит чат на 1 минуту, но публичное сообщение может повторится в чате как 1 раз, так и 10.


Вот сам код Антимата:
pawn Code:
#pragma tabsize 4

#include <a_samp>

#define RED 0xAA3333AA
#define GREEN 0x33AA33AA

new var0[25];
new var1[256];

#define MAX_SWEARS 100
#define STR 100
forward UnMute(playerid);
new Swears[MAX_SWEARS][STR];
new num_words = 0;
new swear[MAX_PLAYERS];
public OnFilterScriptInit()
{
    new string[STR], File:file;
    if((file = fopen("antiswear.cfg",io_read)))
    {
        while(fread(file,string))
        {
            for(new i = 0, j = strlen(string); i < j; i++) if(string[i] == '\n' || string[i] == '\r') string[i] = '\0';
            Swears[num_words] = string;
            printf("%s", string);
            num_words++;
        }
        fclose(file);
    }
    return 1;
}

public OnPlayerText(playerid,text[])
{
    if(swear[playerid] == 1)
    {
        SendClientMessage(playerid, 0xFFFFFFAA, "Âû áûëè çàòêíóòû íà 60 ñåêóíä çà ìàò.");
        return 0;
    }
    for(new s = 0; s < num_words; s++)
    {
        new pos;
        while((pos = strfind(text,Swears[s],true)) != -1) for(new i = pos, j = pos + strlen(Swears[s]); i < j; i++){
        text[i] = '*';
        swear[playerid] = 1;
        GetPlayerName(playerid, var0, 25);
        format(var1, 256, "Èãðîêó %s àâòîìàòè÷åñêè çàáàíåí ÷àò íà 1 ìèíóòó ïî ïðè÷èíå: Ìàò(û).", var0);
        SendClientMessageToAll(RED, var1);
        if(swear[i] == 1)
    {
        SetTimerEx("UnMute",60000,0,"M",playerid);
        return 0;
    }
  }
        }
    return 1;
}
public UnMute(playerid)
{
swear[playerid] = 0;
GetPlayerName(playerid, var0, 25);
format(var1, 256, "Èãðîêó %s áûë àâòîìàòè÷åñêè ðàçáàíåí ÷àò.", var0);
SendClientMessageToAll(GREEN, var1);
return 0;
}
public OnPlayerConnect(playerid)
{
swear[playerid] = 0;
return 1;
}
Код паблика с сообщением:
pawn Code:
public OnPlayerText(playerid,text[])
{
    if(swear[playerid] == 1)
    {
        SendClientMessage(playerid, 0xFFFFFFAA, "Âû áûëè çàòêíóòû íà 60 ñåêóíä çà ìàò.");
        return 0;
    }
    for(new s = 0; s < num_words; s++)
    {
        new pos;
        while((pos = strfind(text,Swears[s],true)) != -1) for(new i = pos, j = pos + strlen(Swears[s]); i < j; i++){
        text[i] = '*';
        swear[playerid] = 1;
        GetPlayerName(playerid, var0, 25);
        format(var1, 256, "Сообщение................", var0);
        SendClientMessageToAll(RED, var1);
        if(swear[i] == 1)
    {
        SetTimerEx("UnMute",60000,0,"M",playerid);
        return 0;
    }
  }
        }
    return 1;
}
Просто, раньше с таким никогда не сталкивался, проблем, вроде бы не нашёл.
Reply


Messages In This Thread
Проблема с Антиматом - by K-911 - 27.12.2010, 13:20
Re: Проблема с Антиматом - by ZiGGi - 27.12.2010, 13:45
Re: Проблема с Антиматом - by K-911 - 27.12.2010, 14:07
Re: Проблема с Антиматом - by Aleks10 - 27.12.2010, 15:55
Re: Проблема с Антиматом - by ZiGGi - 27.12.2010, 16:15
Re: Проблема с Антиматом - by K-911 - 27.12.2010, 19:20

Forum Jump:


Users browsing this thread: 3 Guest(s)