Плагин авто-бана

Deff

Участник
Сообщения
350
Реакции
137
Всем привет,что тут не так?
C-подобный:
#include <materialadmin>
#pragma newdecls required

static const char ForbiddenPhrase [][]=
{
    "EZfrags.co.uk",
    "If I was cheating",
    "You just got pwned by EZfrags, the #1 CS:GO cheat",
    "I'm not using www.EZfrags.co.uk, you're just bad",
    "Stop being a noob! Get good with www.EZfrags.co.uk",
    "Visit www.EZfrags.co.uk for the finest public & private CS:GO cheats"
};

public void OnClientSayCommand_Post(int iClient, const char[] command, const char[] sArgs) {
    if (iClient > 0) {
        for (int i; i < sizeof(ForbiddenPhrase); ++i){
            if (!StrContains(sArgs, ForbiddenPhrase[i], false)) {
                MABanPlayer(iClient, 0, 0, "Анти чит  нашел читы,говнюк");
                // ServerCommand("sm_ban \"%N\" 0 \"Auto-Ban_Cheat\"", iClient);
                break;
            }
        }
    }
}
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Из критичных:
PHP:
if (!StrContains(sArgs, ForbiddenPhrase[i], false))
{
     // any code
}
-->
PHP:
if (StrContains(sArgs, ForbiddenPhrase[i], false) != -1)
{
     // any code
}
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
На самом деле выглядит, как велосипед, т.к. данный плагин уже есть, но...

PHP:
#include <sourcemod>
#include <materialadmin>

#pragma newdecls required

static const char ForbiddenPhrase [][]=
{
    "EZfrags.co.uk",
    "If I was cheating",
    "You just got pwned by EZfrags, the #1 CS:GO cheat",
    "I'm not using www.EZfrags.co.uk, you're just bad",
    "Stop being a noob! Get good with www.EZfrags.co.uk",
    "Visit www.EZfrags.co.uk for the finest public & private CS:GO cheats"
};

int iLen = sizeof(ForbiddenPhrase);

public Action OnClientSayCommand(int client, const char[] command, const char[] szArgs)
{   
    if(!client || !IsClientInGame(client)){
        return Plugin_Continue;
    }

    for(int i; i < iLen; i++)
    {
        if(StrContains(szArgs, ForbiddenPhrase[i], false) != -1){
            MABanPlayer(0, client, MA_BAN_STEAM, 0, "Овощ");   
            return Plugin_Handled;
        }
    }
    

    return Plugin_Continue;
}
 
Последнее редактирование:

The_C@t

Слабоумие и отвага
Сообщения
272
Реакции
142
Плагин, который есть в паблике, насколько помню не шибко стабилен. Отказался, хотя идея хорошая
 

Deff

Участник
Сообщения
350
Реакции
137
На самом деле выглядит, как велосипед, т.к. данный плагин уже есть, но...

Замените функцию свою на эту.
PHP:
public Action OnClientSayCommand(int client, const char[] command, const char[] szArgs)
{
    if(!client || !IsClientInGame(client)){
        return Plugin_Continue;
    }

    int iLen = sizeof(ForbiddenPhrase);    // лучше записать в глоб переменную

    for(int i; i < iLen; i++)
    {
        if(StrContains(szArgs, ForbiddenPhrase[i], false) != -1){
            MABanPlayer(0, client, MA_BAN_STEAM, 0, "Овощ");
            return Plugin_Handled;
        }
    }
 

    return Plugin_Continue;
}
я извиняюсь,но куда вписывать текст за который банит?
 

mika

Участник
Сообщения
1,069
Реакции
641
я извиняюсь,но куда вписывать текст за который банит?
вместо вашего

C-подобный:
public void OnClientSayCommand_Post(int iClient, const char[] command, const char[] sArgs) {
    if (iClient > 0) {
        for (int i; i < sizeof(ForbiddenPhrase); ++i){
            if (!StrContains(sArgs, ForbiddenPhrase[i], false)) {
                MABanPlayer(iClient, 0, 0, "Анти чит  нашел читы,говнюк");
                // ServerCommand("sm_ban \"%N\" 0 \"Auto-Ban_Cheat\"", iClient);
                break;
            }
        }
    }
}

Если вы про причину бана - на месте "овоща"
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,560
Реакции
5,060
В принципе, можно и так:
PHP:
#include <materialadmin>

#pragma newdecls required

static const char ForbiddenPhrase[][]=        // в этот массив вписываем запрещённый текст, за который банят
{
    "EZfrags.co.uk",
    "If I was cheating",
    "You just got pwned by EZfrags, the #1 CS:GO cheat",    // не обязательно писать всю фразу
    "I'm not using www.EZfrags.co.uk, you're just bad",        // достаточно пары слов рядом с ссылкой
    "Stop being a noob! Get good with www.EZfrags.co.uk",    // хотя всё равно совпадение будет детектится ещё по 1-й строчке
    "Visit www.EZfrags.co.uk for the finest public & private CS:GO cheats"    // а не 3 последним
};

public Action OnClientSayCommand(int client, const char[] command, const char[] szArgs)
{
    static int i, len;
    if(!len) len = sizeof(ForbiddenPhrase);

    if(client && IsClientInGame(client)) for(i = 0; i < len; i++) if(StrContains(szArgs, ForbiddenPhrase[i], false) != -1)
    {
        MABanPlayer(0, client, MA_BAN_STEAM, 0, "рачила с читами");    // а вот здесь пишется причина бана
        return Plugin_Handled;
    }

    return Plugin_Continue;
}
 

Deff

Участник
Сообщения
350
Реакции
137
В принципе, можно и так:
PHP:
#include <materialadmin>

#pragma newdecls required

static const char ForbiddenPhrase[][]=        // в этот массив вписываем запрещённый текст, за который банят
{
    "EZfrags.co.uk",
    "If I was cheating",
    "You just got pwned by EZfrags, the #1 CS:GO cheat",    // не обязательно писать всю фразу
    "I'm not using www.EZfrags.co.uk, you're just bad",        // достаточно пары слов рядом с ссылкой
    "Stop being a noob! Get good with www.EZfrags.co.uk",    // хотя всё равно совпадение будет детектится ещё по 1-й строчке
    "Visit www.EZfrags.co.uk for the finest public & private CS:GO cheats"    // а не 3 последним
};

public Action OnClientSayCommand(int client, const char[] command, const char[] szArgs)
{
    static int i, len;
    if(!len) len = sizeof(ForbiddenPhrase);

    if(client && IsClientInGame(client)) for(i = 0; i < len; i++) if(StrContains(szArgs, ForbiddenPhrase[i], false) != -1)
    {
        MABanPlayer(0, client, MA_BAN_STEAM, 0, "рачила с читами");    // а вот здесь пишется причина бана
        return Plugin_Handled;
    }

    return Plugin_Continue;
}
На самом деле выглядит, как велосипед, т.к. данный плагин уже есть, но...

PHP:
#include <sourcemod>
#include <materialadmin>

#pragma newdecls required

static const char ForbiddenPhrase [][]=
{
    "EZfrags.co.uk",
    "If I was cheating",
    "You just got pwned by EZfrags, the #1 CS:GO cheat",
    "I'm not using www.EZfrags.co.uk, you're just bad",
    "Stop being a noob! Get good with www.EZfrags.co.uk",
    "Visit www.EZfrags.co.uk for the finest public & private CS:GO cheats"
};

int iLen = sizeof(ForbiddenPhrase);

public Action OnClientSayCommand(int client, const char[] command, const char[] szArgs)
{  
    if(!client || !IsClientInGame(client)){
        return Plugin_Continue;
    }

    for(int i; i < iLen; i++)
    {
        if(StrContains(szArgs, ForbiddenPhrase[i], false) != -1){
            MABanPlayer(0, client, MA_BAN_STEAM, 0, "Овощ");  
            return Plugin_Handled;
        }
    }
   

    return Plugin_Continue;
}
вместо вашего

C-подобный:
public void OnClientSayCommand_Post(int iClient, const char[] command, const char[] sArgs) {
    if (iClient > 0) {
        for (int i; i < sizeof(ForbiddenPhrase); ++i){
            if (!StrContains(sArgs, ForbiddenPhrase[i], false)) {
                MABanPlayer(iClient, 0, 0, "Анти чит  нашел читы,говнюк");
                // ServerCommand("sm_ban \"%N\" 0 \"Auto-Ban_Cheat\"", iClient);
                break;
            }
        }
    }
}

Если вы про причину бана - на месте "овоща"
Спасибо Вам огромное за помощь
 
Сверху Снизу