Отключить КЛАНТЕГИ игроков накорню.

Статус
В этой теме нельзя размещать новые ответы.

pur4s

Участник
Сообщения
367
Реакции
92
Операционная система
Linux
Нуждаюсь в помощи.

Нужно с корнем отключить КЛАНТЕГИ игроков на сервере и оставит только клантеги, которые выдает сервер.
Возможно плагин, или квары, кто-нибудь прошарен?

На данным момент пользуюсь Block Clan Tag, работает нестабильно, клантеги снова появляются и пропадают в начале каждого раунда, бывает остаются до конца раунда.
 

SIRIUS

♿___DejaVu
Сообщения
509
Реакции
253
Нуждаюсь в помощи.

Нужно с корнем отключить КЛАНТЕГИ игроков на сервере и оставит только клантеги, которые выдает сервер.
Возможно плагин, или квары, кто-нибудь прошарен?

На данным момент пользуюсь Block Clan Tag, работает нестабильно, клантеги снова появляются и пропадают в начале каждого раунда, бывает остаются до конца раунда.
Ты ставил версию из этого сообщения [CS:S] Block Clan Tag или уже закрепленный .smx из первого?

Так же если у игроков стоит бинд на WASD, то можешь поставить еще это Запрет для смены ника более X раз для CSGO (Антиспам). (насчет работоспособности сказать ничего не могу).
C++:
#pragma semicolon 1
#include <sourcemod>
#include <cstrike>
#pragma newdecls required

public Plugin myinfo =
{
    name        = "No Tag/Nick Flood",
    author        = "AlexTheRegent & AlmazON",
    description    = "",
    version        = "1.0.0",
    url            = "http://hlmod.ru"
}

char    g_szOldNick[MAXPLAYERS+1][MAX_NAME_LENGTH], g_szOldTag[MAXPLAYERS+1][12];
int        g_iWarnNick[MAXPLAYERS+1], g_iWarnings[MAXPLAYERS+1];
int        g_iMaxWarnNick, g_iMaxWarnings;
int        g_iBanNick, g_iBanLength;

public void OnPluginStart()
{
    ConVar cvar;
    HookConVarChange(cvar = CreateConVar("sm_nonickflood_maxwarns",        "3",    "Сколько раз игрок может сменить ник за одно подключение.", _, true, 0.0), ChangeCvar_NickWarn);
    g_iMaxWarnNick = cvar.IntValue;
    HookConVarChange(cvar = CreateConVar("sm_nonickflood_banlen",        "10",    "Время бана в минутах: 0 - только кик, -1 - бан навсегда.", _, true, -1.0), ChangeCvar_NickBan);
    g_iBanNick = cvar.IntValue;
    HookConVarChange(cvar = CreateConVar("sm_notagflood_maxwarns",        "3",    "Сколько раз игрок может сменить тэг за одно подключение.", _, true, 0.0), ChangeCvar_TagWarn);
    g_iMaxWarnings = cvar.IntValue;
    HookConVarChange(cvar = CreateConVar("sm_notagflood_banlen",        "10",    "Время бана в минутах: 0 - только кик, -1 - бан навсегда.", _, true, -1.0), ChangeCvar_TagBan);
    g_iBanLength = cvar.IntValue;
    AutoExecConfig(true, "No_tag_flood");
}

public void ChangeCvar_NickWarn(ConVar convar, const char[] oldValue, const char[] newValue)
{
    g_iMaxWarnNick = convar.IntValue;
}

public void ChangeCvar_NickBan(ConVar convar, const char[] oldValue, const char[] newValue)
{
    g_iBanNick = convar.IntValue;
}

public void ChangeCvar_TagWarn(ConVar convar, const char[] oldValue, const char[] newValue)
{
    g_iMaxWarnings = convar.IntValue;
}

public void ChangeCvar_TagBan(ConVar convar, const char[] oldValue, const char[] newValue)
{
    g_iBanLength = convar.IntValue;
}

public void OnClientPutInServer(int iClient)
{
    GetClientName(iClient, g_szOldNick[iClient], sizeof(g_szOldNick[]));
    g_iWarnNick[iClient] = g_iWarnings[iClient] = 0;
    CS_GetClientClanTag(iClient, g_szOldTag[iClient], sizeof(g_szOldTag[]));
}

public void OnClientSettingsChanged(int iClient)
{
    if (IsClientInGame(iClient)) {
        char szBuffer[MAX_NAME_LENGTH];
        GetClientName(iClient, szBuffer, sizeof(g_szOldNick[]));
        if (strcmp(szBuffer, g_szOldNick[iClient])) {
            if (++g_iWarnNick[iClient] < g_iMaxWarnNick) strcopy(g_szOldNick[iClient], sizeof(g_szOldNick[]), szBuffer);
            else {
                switch (g_iBanNick) {
                    case 0: ServerCommand("sm_kick #%d \"Сервер: Частая смена ника\"", GetClientUserId(iClient));
                    case -1: ServerCommand("sm_ban #%d 0 \"Вы забанены навсегда за частую смену ника\";sm_kick #%d \"Вы забанены навсегда за частую смену ника\"",
                    GetClientUserId(iClient), GetClientUserId(iClient));
                    default: ServerCommand("sm_ban #%d %d \"Частая смена ника (бан на %d минут)\";sm_kick #%d \"Частая смена ника (бан на %d минут)\"",
                    GetClientUserId(iClient), g_iBanLength, g_iBanLength, GetClientUserId(iClient), g_iBanLength);
                }
            }
        }
        CS_GetClientClanTag(iClient, szBuffer, sizeof(g_szOldTag[]));
        if (strcmp(szBuffer, g_szOldTag[iClient])) {
            if (++g_iWarnings[iClient] < g_iMaxWarnings) strcopy(g_szOldTag[iClient], sizeof(g_szOldTag[]), szBuffer);
            else {
                switch (g_iBanLength) {
                    case 0: ServerCommand("sm_kick #%d \"Сервер: Частая смена тега\"", GetClientUserId(iClient));
                    case -1: ServerCommand("sm_ban #%d 0 \"Вы забанены навсегда за частую смену тэгов\";sm_kick #%d \"Вы забанены навсегда за частую смену тэгов\"",
                    GetClientUserId(iClient), GetClientUserId(iClient));
                    default: ServerCommand("sm_ban #%d %d \"Частая смена тэга (бан на %d минут)\";sm_kick #%d \"Частая смена тэга (бан на %d минут)\"",
                    GetClientUserId(iClient), g_iBanLength, g_iBanLength, GetClientUserId(iClient), g_iBanLength);
                }
            }
        }
    }
}
 
Последнее редактирование:

xtance

Участник
Сообщения
513
Реакции
743
На корню? Ну...
C-подобный:
#include <cstrike>

public void OnGameFrame(){
    for (int i = 1; i <= MaxClients; i++){
        if(IsClientInGame(i) && !IsFakeClient(i)){
            CS_SetClientClanTag(i, "");
        }
    }
}
Если нагружает сервер смените public void OnGameFrame(){ for (int i = 1; i <= MaxClients; i++){ на public Action OnPlayerRunCmd(int i, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon){
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу