The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
Я прекрасно понимаю, что часто названия плагинов можно очень просто забыть. Однако это становится причиной постоянного создания тем рода "помогите найти плагин X".

Так вот, чтобы содержать форум в порядке и чистоте, поступим следующим образом:
  1. В дальнейшем создаваемые темы с "помогите найти плагин" будут удаляться, а авторам — выдаваться предупреждения
  2. Если Вы захотите найти плагин, то сначала воспользуйтесь поиском

Если всё же не удалось найти плагин, заполните следующую форму и ответьте в этой теме:

  • Функции плагина
  • Мод/Игра, которая использует этот плагин

Прежде чем отвечать в теме, воспользуйтесь поиском гугла, который почти всегда находит нужное.

Старые темы будут перемещены в корзину.
 
Последнее редактирование модератором:

Nikly

Участник
Сообщения
290
Реакции
76
Добрый день, ищу плагин !rs, который будет показывать окошко с подтверждением сбора счёта
 

Felton

Участник
Сообщения
799
Реакции
59

Bason

Может этот подойдёт
 

-=|УЧЕНИК|=-

вся жизнь,сплошной цирк.
Сообщения
876
Реакции
212
Привет всем!
Подскажите если плагин,чтоб отключались прицелы у всех,на оружиях скаут и авп,на таких картах как скаут и лего?
 

Felton

Участник
Сообщения
799
Реакции
59
Добрый день.Не знаю существует ли такой плагин.Когда допустим идёт голосование за смену карты все игроки замораживаются(ну типа паузы на сервере) и должны все проголосовать и потом продолжается игра т.е всех размораживает.Игра Counter-Strike Source v.34
 

___BRAIN___

Участник
Сообщения
6
Реакции
1
Привет всем, ищу плагин который может у дробовика ускорить выстрел пуль, тоесть если за 1 секунду выстрелил 5 раз, он и выстрелит 5 раз. weaponspeed не помогает. буду очень благодарен вам. Игра left 4 dead
 

-=|УЧЕНИК|=-

вся жизнь,сплошной цирк.
Сообщения
876
Реакции
212
Привет всем
Может есть у кого rechargers стабильный?

Чтоб не было такого<что на других картах,появляется модель в воздухе или еще где-то healt armor.
Замечал на таких картах,как авп лего,assault,модель просто в воздухе весит.
Версия игры 34
Вдруг у кого завалялась,заранее благодарю
 

Голос_в_ночи

Племяш Габена
Сообщения
333
Реакции
31
Игра CSS OB, SM 1.10
1) Нужен плагин, который будет кикать игроков за бхоп, стрейф или вообще любое ускорение (с сообщением "Вы развили сильно большую скорость")
2) Нужен античит, который будет банить только за АИМ. Liac не предлагать, ибо он далеко не сразу детектит аимы
 

teafest

Участник
Сообщения
202
Реакции
34
Добрый день.
Подскажите пожалуйста, где найти плагин запрета подбора гранат?
В этой ветке есть когд, который ограничивает подбор всего оружия кроме гранат, как можно сделать наоборот, ограничить как раз только подбор гранат?
 
Последнее редактирование:

Felton

Участник
Сообщения
799
Реакции
59
Добрый вечер.Достался мне плагин без исходника.Проверте пожалуйсте нет ли там чего нибудь подозрительного.Сори сто пишу сюда не нашёл подходящей темы.
 

Вложения

  • FlyingBirds.rar
    5.6 КБ · Просмотры: 5

Ganter1234

Участник
Сообщения
1,149
Реакции
667
Добрый вечер.Достался мне плагин без исходника.Проверте пожалуйсте нет ли там чего нибудь подозрительного.Сори сто пишу сюда не нашёл подходящей темы.
Ничего такого там нет
 

Felton

Участник
Сообщения
799
Реакции
59
ок спасибо
Сообщения автоматически склеены:

Ganter1234

Доброго времени суток.Достался мне плагин но при компиле выдает ошибку
prefix.sp
refix.sp(121) : error 017: undefined symbol "GetClientAuthId"
Сесвер Counter-Strike Source v.34 SourceMod [1.6.4] Возможно подпилить под мою версию
C-подобный:
#include <sdktools>

public Plugin:myinfo = {
    name = "[SM] Set Tags Clients",
    author = "css-help",
    version = "1.1.0",
    description = "",
    url = "",
};

new bool:g_bIsTag[66];
new String:g_AuthId_Steam2[66][64];
new String:g_sGetTag[66][100];
new String:g_sGetColorTag[66][16];
new g_iTimeTag[66];
new bool:g_bCreateTag[66];
new String:g_sBufferTag[66][100];
new String:g_sBufferColor[66][16];
new Handle:g_arInAdvanceTag = INVALID_HANDLE;
new g_iNuM_Tag[66];
new g_id_Target[66];
new Handle:g_hTIMER = INVALID_HANDLE;
new Handle:g_hDB_TagClients = INVALID_HANDLE;

public OnPluginStart()
{
    DBI_Create();
    RegAdminCmd("sm_tag", OpenGlobalMenu, 16384, _, _, 0);
    RegAdminCmd("sm_prefix", OpenGlobalMenu, 16384, _, _, 0);
    g_arInAdvanceTag = CreateArray(100, 0);
}

public OnMapStart()
{
    if (FileExists("addons/sourcemod/logs/prefix.txt", false))
    {
        DeleteFile("addons/sourcemod/logs/prefix.txt");
    }
    ClearArray(g_arInAdvanceTag);
    OnCreateFile_SetTagCFG("cfg/sourcemod/prefix.cfg");
    OnOpenFile_SetTagCFG("cfg/sourcemod/prefix.cfg");
    if (g_hTIMER == INVALID_HANDLE)
    {
        g_hTIMER = CreateTimer(5.0, OnCheckTagPlayer, 0, 1);
    }
}

public Action:OnCheckTagPlayer(Handle:timer)
{
    new iTheTime = GetTime(_);
    for (new iClient = 1; iClient <= MaxClients; iClient++)
    {
        if (IsClientInGame(iClient) && !IsFakeClient(iClient))
        {
            if (g_bIsTag[iClient] && g_sGetTag[iClient][0] && iTheTime > g_iTimeTag[iClient] && g_iTimeTag[iClient] != -1)
            {
                g_bIsTag[iClient] = false;
                g_sGetTag[iClient][0] = '\0';
            }
        }
    }
}

OnCreateFile_SetTagCFG(String:filename[])
{
    if (!FileExists(filename, false))
    {
        new Handle:file = OpenFile(filename, "w+");
        if (file)
        {
            WriteFileLine(file, "[VIP]\n[ADMIN]\n[BOSS]");
            CloseHandle(file);
        }
    }
}

OnOpenFile_SetTagCFG(String:filename[])
{
    new Handle:file = OpenFile(filename, "r");
    if (file)
    {
        new String:buffer[100];
        while (!IsEndOfFile(file))
        {
            ReadFileLine(file, buffer, 100);
            new pos = 0;
            pos = StrContains(buffer, "//", true);
            if (pos != -1)
            {
                buffer[pos] = '\0';
            }
            pos = StrContains(buffer, "#", true);
            if (pos != -1)
            {
                buffer[pos] = '\0';
            }
            pos = StrContains(buffer, ";", true);
            if (pos != -1)
            {
                buffer[pos] = '\0';
            }
            TrimString(buffer);
            if (buffer[0] == 0)
            {
                continue;
            }
            if (FindStringInArray(g_arInAdvanceTag, buffer) != -1)
            {
                continue;
            }
            PushArrayString(g_arInAdvanceTag, buffer);
        }
        CloseHandle(file);
    }
}

public OnClientPutInServer(client)
{
    if (IsClientInGame(client) && !IsFakeClient(client))
    {
        GetClientAuthId(client, AuthId_Steam2, g_AuthId_Steam2[client], 64, true);
        decl String:Name[64];
        GetClientName(client, Name, 64);
        LogToFileEx("addons/sourcemod/logs/prefix.txt", "OnClientPutInServer :: %s %s", Name, g_AuthId_Steam2[client]);
        DBI_SelectInfo(client);
    }
}

public OnClientDisconnect(client)
{
    decl String:Name[64];
    GetClientName(client, Name, 64);
    LogToFileEx("addons/sourcemod/logs/prefix.txt", "OnClientDisconnect :: %s %s", Name, g_AuthId_Steam2[client]);
    DBI_UpdateInfo(client);
}

public Action:OpenGlobalMenu(client, args)
{
    if (client && IsClientInGame(client))
    {
        MenuGlobal(client);
    }
}

MenuGlobal(client)
{
    new Handle:menu = CreateMenu(_MenuGlobal, MENU_ACTIONS_DEFAULT);
    SetMenuTitle(menu, "Запись Префиксов\n");
    AddMenuItem(menu, "", "Установить Префикс", 0);
    AddMenuItem(menu, "", "Удалить Префикс", 0);
    SetMenuExitButton(menu, true);
    DisplayMenu(menu, client, 0);
}

public _MenuGlobal(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        if (item == 0)
        {
            MenuTag(client);
        }
        else
        {
            MenuDelTag(client);
        }
    }
    else
    {
        if (action == MenuAction:16)
        {
            CloseHandle(menu);
        }
    }
}

MenuTag(client)
{
    new size_array = 0;
    if ((size_array = GetArraySize(g_arInAdvanceTag)) > 0)
    {
        new Handle:menu = CreateMenu(_MenuTag, MENU_ACTIONS_DEFAULT);
        SetMenuTitle(menu, "Выберите префикс:\n");
        new String:NuM[16], String:buffer[100];
        AddMenuItem(menu, "new", "Свой префикс", 0);
        for (new i = 0; i < size_array; i++)
        {
            GetArrayString(g_arInAdvanceTag, i, buffer, 100);
            IntToString(i, NuM, 15);
            AddMenuItem(menu, NuM, buffer, 0);
        }
        SetMenuExitButton(menu, true);
        DisplayMenu(menu, client, 0);
    }
    else
    {
        g_iNuM_Tag[client] = -1;
        g_bCreateTag[client] = true;
        PrintToChat(client, "[SM] Напишите в чат желаемый префикс");
    }
}

public _MenuTag(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        new String:buffer[64];
        GetMenuItem(menu, item, buffer, 64, _, _, 0);
        if (StrEqual(buffer, "new", true))
        {
            g_iNuM_Tag[client] = -1;
            g_bCreateTag[client] = true;
            PrintToChat(client, "[SM] Напишите в чат желаемый префикс");
        }
        else
        {
            g_iNuM_Tag[client] = StringToInt(buffer, 10);
            MenuColorTag(client);
        }
    }
    else
    {
        if (action == MenuAction:16)
        {
            CloseHandle(menu);
        }
    }
}

MenuColorTag(client)
{
    new Handle:menu = CreateMenu(_MenuColorTag, MENU_ACTIONS_DEFAULT);
    SetMenuTitle(menu, "Каким цветом будет Тег:\n");
    AddMenuItem(menu, "{DEFAULT}", "Желтый", 0);
    AddMenuItem(menu, "{GREEN}", "Зеленый", 0);
    AddMenuItem(menu, "{LIGHTGREEN}", "Салатовый", 0);
    AddMenuItem(menu, "{TEAM}", "Цвет команды", 0);
    AddMenuItem(menu, "{RED}", "Красный", 0);
    AddMenuItem(menu, "{BLUE}", "РЎРёРЅРёР№", 0);
    AddMenuItem(menu, "{GRAY}", "Серый", 0);
    SetMenuExitButton(menu, true);
    DisplayMenu(menu, client, 0);
}

public _MenuColorTag(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        GetMenuItem(menu, item, g_sBufferColor[client], 16, _, _, 0);
        MenuPlayerTag(client);
        DBI_UpdateInfo(client);
    }
    else
    {
        if (action == MenuAction:16)
        {
            CloseHandle(menu);
        }
    }
}

MenuPlayerTag(client)
{
    new Handle:menu = CreateMenu(_MenuPlayerTag, MENU_ACTIONS_DEFAULT);
    new String:userid[8], String:sTar[64];
    SetMenuTitle(menu, "Кому установить префикс:\n");
    for (new iClient = 1; iClient <= MaxClients; iClient++)
    {
        if (IsClientInGame(iClient) && !IsFakeClient(iClient))
        {
            IntToString(GetClientUserId(iClient), userid, 15);
            GetClientName(iClient, sTar, 64);
            AddMenuItem(menu, userid, sTar, 0);
        }
    }
    SetMenuExitButton(menu, true);
    DisplayMenu(menu, client, 0);
}

public _MenuPlayerTag(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        decl String:userid[16];
        GetMenuItem(menu, item, userid, 15, _, _, 0);
        new target = GetClientOfUserId(StringToInt(userid, 10));
        if (target < 1 || !IsClientInGame(target))
        {
            PrintToChat(client, "[SM] РРіСЂРѕРє больше РЅРµ доступен.");
            MenuPlayerTag(client);
        }
        else
        {
            g_id_Target[client] = target;
            MenuTimerTag(client);
        }
    }
}

MenuTimerTag(client)
{
    new Handle:menu = CreateMenu(_MenuTimerTag, MENU_ACTIONS_DEFAULT);
    SetMenuTitle(menu, "На сколько довать Тег");
    new String:sTimeTag[16];
    IntToString(86400, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "1 день", 0);
    IntToString(604800, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "7 дней", 0);
    IntToString(2419200, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "1 месяц", 0);
    IntToString(4838400, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "2 месяца", 0);
    IntToString(7257600, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "3 месяца", 0);
    IntToString(12096000, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "5 месяцев", 0);
    IntToString(29030400, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "1 РіРѕРґ", 0);
    SetMenuExitButton(menu, true);
    DisplayMenu(menu, client, 0);
}

public _MenuTimerTag(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        new target = g_id_Target[client];
        if (!IsClientInGame(target))
        {
            PrintToChat(client, "[SM] РРіСЂРѕРє больше РЅРµ доступен.");
            MenuPlayerTag(client);
            return;
        }
        decl String:sTimeTag[16];
        GetMenuItem(menu, item, sTimeTag, 16, _, _, 0);
        if (g_iNuM_Tag[client] != -1)
        {
            decl String:buffer[100];
            GetArrayString(g_arInAdvanceTag, g_iNuM_Tag[client], buffer, 100);
            strcopy(g_sGetTag[target], 100, buffer);
        }
        else
        {
            strcopy(g_sGetTag[target], 100, g_sBufferTag[client]);
        }
        g_bIsTag[target] = true;
        g_iTimeTag[target] = GetTime(_) + StringToInt(sTimeTag, 10);
        strcopy(g_sGetColorTag[target], 16, g_sBufferColor[client]);
        decl String:sAdmin[64], String:sTarger[64];
        GetClientName(client, sAdmin, 64);
        GetClientName(target, sTarger, 64);
        PrintToChat(target, "[SM] Админ \x03%s установил вам префикс.", sAdmin);
        PrintToChat(client, "[SM] Вы установили \x03%s префикс.", sTarger);
        DBI_UpdateInfo(target);
    }
    else
    {
        if (action == MenuAction:16)
        {
            CloseHandle(menu);
        }
    }
}

MenuDelTag(client)
{
    new Handle:menu = CreateMenu(_MenuDelTag, MENU_ACTIONS_DEFAULT);
    new String:userid[8], String:sTar[64];
    SetMenuTitle(menu, "У кого удалить Тег:\n");
    for (new iClient = 1; iClient <= MaxClients; iClient++)
    {
        if (IsClientInGame(iClient) && !IsFakeClient(iClient) && g_bIsTag[iClient])
        {
            IntToString(GetClientUserId(iClient), userid, 15);
            GetClientName(iClient, sTar, 64);
            AddMenuItem(menu, userid, sTar, 0);
        }
    }
    SetMenuExitButton(menu, true);
    DisplayMenu(menu, client, 0);
}

public _MenuDelTag(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        decl String:userid[16];
        GetMenuItem(menu, item, userid, 15, _, _, 0);
        new target = GetClientOfUserId(StringToInt(userid, 10));
        if (target < 1 || !IsClientInGame(target))
        {
            PrintToChat(client, "[SM] РРіСЂРѕРє больше РЅРµ доступен.");
            MenuDelTag(client);
        }
        else
        {
            decl String:sAdmin[64], String:sTarger[64];
            GetClientName(client, sAdmin, 64);
            GetClientName(target, sTarger, 64);
            PrintToChat(target, "[SM] Админ \x03%s удалил Ваш префикс.", sAdmin);
            PrintToChat(client, "[SM] Вы удалили префикс игроку \x03%s.", sTarger);
            g_bIsTag[target] = false;
            g_sGetTag[target][0] = '\0';
            MenuDelTag(client);
            DBI_UpdateInfo(target);
        }
    }
}

MenuConfirmTag(client)
{
    new Handle:menu = CreateMenu(_MenuConfirmTag, MENU_ACTIONS_DEFAULT);
    new String:buffer[256];
    Format(buffer, 255, "Вы написали этот префикс:\n%10s%s\nВсе верно?\n \n", " ", buffer);
    SetMenuTitle(menu, buffer);
    AddMenuItem(menu, "", "Да. Продолжить", 0);
    AddMenuItem(menu, "", "Нет. Написать другой", 0);
    if (GetArraySize(g_arInAdvanceTag))
    {
        AddMenuItem(menu, "", "Нет. Выбрать из списка", 0);
    }
    SetMenuExitButton(menu, true);
    DisplayMenu(menu, client, 0);
}

public _MenuConfirmTag(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        if (item == 0)
        {
            MenuColorTag(client);
        }
        else
        {
            if (item == 1)
            {
                g_bCreateTag[client] = true;
                PrintToChat(client, "[SM] Напишите в чат свой желаемый префикс");
            }
            else
            {
                if (item == 2)
                {
                    MenuTag(client);
                }
            }
        }
    }
    else
    {
        if (action == MenuAction:16)
        {
            CloseHandle(menu);
        }
    }
}

public Action:OnClientSayCommand(client, const String:command[], const String:sArgs[])
{
    if (client && IsClientInGame(client))
    {
        decl String:sText[256];
        strcopy(sText, 255, sArgs);
        TrimString(sText);
        StripQuotes(sText);
        if (sArgs[1] == 64 || sArgs[1] == 47)
        {
            return Plugin_Continue;
        }
        if (g_bCreateTag[client])
        {
            if (strlen(sText) < 2)
            {
                PrintToChat(client, "[SM] Ошибка. Минимальное количество символов \x03(2)");
                return Plugin_Handled;
            }
            strcopy(g_sBufferTag[client], 100, sText);
            MenuConfirmTag(client);
            g_bCreateTag[client] = false;
            return Plugin_Handled;
        }
        if (g_bIsTag[client])
        {
            decl String:buffer[256], String:sName[64];
            GetClientName(client, sName, 64);
            new iColor = ReplaceColors(g_sGetColorTag[client]);
            FormatEx(buffer, 255, "%s[%s] %s: %s", (iColor == -2) ? "" : ((iColor == -1) ? "" : "\x03"), g_sGetTag[client], sName, sText);
            switch (iColor)
            {
                case -2, -1, 0:
                {
                    for (new target = 1; target <= MaxClients; target++)
                    {
                        if (IsClientInGame(target) && !IsFakeClient(client))
                        {
                            PrintToChat(target, buffer);
                        }
                    }
                }
                case 1, 2, 3:
                {
                    PrintSayToChatAll(buffer, iColor);
                }
                case 4:
                {
                    PrintSayAll(client, buffer);
                }
            }
            return Plugin_Handled;
        }
    }
    return Plugin_Continue;
}

PrintSayAll(client, String:text[])
{
    new Handle:h = StartMessageAll("SayText2", 0);
    if (h)
    {
        BfWriteByte(h, client);
        BfWriteByte(h, 1);
        BfWriteString(h, text);
        EndMessage();
    }
}

PrintSayToChatAll(String:text[], iColor)
{
    new iTarget = FindPlayerByTeam(iColor);
    if (iTarget)
    {
        new Handle:h = StartMessageAll("SayText2", 0);
        if (h)
        {
            BfWriteByte(h, iTarget);
            BfWriteByte(h, 1);
            BfWriteString(h, text);
            EndMessage();
        }
    }
    else
    {
        PrintMsgToAll(text);
    }
}

PrintMsgToAll(String:text[])
{
    for (new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i))
        {
            new Handle:hBf = StartMessageOne("SayText2", i, 0);
            if (hBf)
            {
                BfWriteByte(hBf, i);
                BfWriteByte(hBf, 1);
                BfWriteString(hBf, text);
                EndMessage();
            }
        }
    }
}

ReplaceColors(String:color[])
{
    if (StrContains(color, "{GREEN}", true) != -1)
    {
        return -1;
    }
    if (StrContains(color, "{LIGHTGREEN}", true) != -1)
    {
        return 0;
    }
    if (StrContains(color, "{GRAY}", true) != -1)
    {
        return 1;
    }
    if (StrContains(color, "{RED}", true) != -1)
    {
        return 2;
    }
    if (StrContains(color, "{BLUE}", true) != -1)
    {
        return 3;
    }
    if (StrContains(color, "{TEAM}", true) != -1)
    {
        return 4;
    }
    return -2;
}

FindPlayerByTeam(iTeam)
{
    for (new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && GetClientTeam(i) == iTeam)
        {
            return i;
        }
    }
    return -1;
}

OnClearInfo(client)
{
    g_bIsTag[client] = false;
    g_iTimeTag[client] = 0;
    g_sGetTag[client][0] = '\0';
    strcopy(g_sGetColorTag[client], 16, "{DEFAULT}");
}

DBI_Create()
{
    decl String:buffer[256];
    g_hDB_TagClients = SQLite_UseDatabase("prefix", buffer, 255);
    if (!g_hDB_TagClients)
    {
        LogError("SQLite_UseDatabase error: %s", buffer);
        SetFailState("SQLite_UseDatabase error: %s", buffer);
    }
    SQL_LockDatabase(g_hDB_TagClients);
    Format(buffer, 255, "CREATE TABLE IF NOT EXISTS %s (steam TEXT(%i), tag_name TEXT(%i), color_tag TEXT(%i), time INT);", "prefix", 64, 100, 16);
    SQL_FastQuery(g_hDB_TagClients, buffer, -1);
    SQL_UnlockDatabase(g_hDB_TagClients);
}

DBI_SelectInfo(client)
{
    if (!IsClientInGame(client) || IsFakeClient(client))
    {
        return;
    }
    decl String:buffer[256];
    Format(buffer, 255, "SELECT * FROM %s WHERE steam = '%s' LIMIT 1;", "prefix", g_AuthId_Steam2[client]);
    SQL_TQuery(g_hDB_TagClients, OnSelectClient, buffer, GetClientUserId(client), DBPrio_Normal);
}

DBI_AddInfo(client)
{
    if (!IsClientInGame(client) || IsFakeClient(client))
    {
        return;
    }
    decl String:buffer[256];
    Format(buffer, 255, "INSERT INTO %s (steam, tag_name, color_tag, time) VALUES ('%s', '', '{DEFAULT}', 0);", "prefix", g_AuthId_Steam2[client]);
    SQL_TQuery(g_hDB_TagClients, OnSQLRequest, buffer, 0, DBPrio_Normal);
    decl String:Name[64];
    GetClientName(client, Name, 64);
    LogToFileEx("addons/sourcemod/logs/prefix.txt", "OnAddClient :: %s %s [enable='%s' | time='%i' | tag='%s' | color='%s']", Name, g_AuthId_Steam2[client], (g_bIsTag[client]) ? "true" : "false", g_iTimeTag[client], g_sGetTag[client], g_sGetColorTag[client]);
}

DBI_UpdateInfo(client)
{
    if (IsClientInGame(client) && !IsFakeClient(client))
    {
        decl String:buffer[256];
        Format(buffer, 255, "UPDATE %s SET tag_name = '%s', color_tag = '%s', time = %i WHERE steam = '%s';", "prefix", g_sGetTag[client], g_sGetColorTag[client], g_iTimeTag[client], g_AuthId_Steam2[client]);
        SQL_TQuery(g_hDB_TagClients, OnSQLRequest, buffer, client, DBPrio_Normal);
        decl String:Name[64];
        GetClientName(client, Name, 64);
        LogToFileEx("addons/sourcemod/logs/prefix.txt", "OnUpdateClient :: %s %s [enable='%s' | time='%i' | tag='%s' | color='%s']\n \n", Name, g_AuthId_Steam2[client], (g_bIsTag[client]) ? "true" : "false", g_iTimeTag[client], g_sGetTag[client], g_sGetColorTag[client]);
    }
}

public OnSelectClient(Handle:owner, Handle:hndl, String:error[], any:data)
{
    if (!hndl)
    {
        LogError("OnSelectClient error: %s", error);
        return;
    }
    new client = GetClientOfUserId(data);
    if (!client)
    {
        return;
    }
    OnClearInfo(client);
    if (SQL_FetchRow(hndl))
    {
        if (IsClientInGame(client) && !IsFakeClient(client))
        {
            SQL_FetchString(hndl, 1, g_sGetTag[client], 100, _);
            if (!StrEqual(g_sGetTag[client], "", true))
            {
                SQL_FetchString(hndl, 2, g_sGetColorTag[client], 16, _);
                g_iTimeTag[client] = SQL_FetchInt(hndl, 3, _);
                g_bIsTag[client] = true;
                decl String:Name[64];
                GetClientName(client, Name, 64);
                LogToFileEx("addons/sourcemod/logs/prefix.txt", "OnSelectClient :Get Array: %s %s [enable='%s' | time='%i' | tag='%s' | color='%s']\n \n", Name, g_AuthId_Steam2[client], (g_bIsTag[client]) ? "true" : "false", g_iTimeTag[client], g_sGetTag[client], g_sGetColorTag[client]);
            }
        }
    }
    else
    {
        DBI_AddInfo(client);
    }
}

public OnSQLRequest(Handle:owner, Handle:hndl, String:error[], any:data)
{
    if (!hndl)
    {
        LogError("OnSQLRequest error: %s", error);
        return;
    }
}
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Felton, сделай что-нибудь с кодировкой: у тебя в комменте не utf-8
 

Felton

Участник
Сообщения
799
Реакции
59

Grey83

А так
C-подобный:
#include <sdktools>

public Plugin:myinfo = {
    name = "[SM] Set Tags Clients",
    author = "css-help",
    version = "1.1.0",
    description = "",
    url = "",
};

new bool:g_bIsTag[66];
new String:g_AuthId_Steam2[66][64];
new String:g_sGetTag[66][100];
new String:g_sGetColorTag[66][16];
new g_iTimeTag[66];
new bool:g_bCreateTag[66];
new String:g_sBufferTag[66][100];
new String:g_sBufferColor[66][16];
new Handle:g_arInAdvanceTag = INVALID_HANDLE;
new g_iNuM_Tag[66];
new g_id_Target[66];
new Handle:g_hTIMER = INVALID_HANDLE;
new Handle:g_hDB_TagClients = INVALID_HANDLE;

public OnPluginStart()
{
    DBI_Create();
    RegAdminCmd("sm_tag", OpenGlobalMenu, 16384, _, _, 0);
    RegAdminCmd("sm_prefix", OpenGlobalMenu, 16384, _, _, 0);
    g_arInAdvanceTag = CreateArray(100, 0);
}

public OnMapStart()
{
    if (FileExists("addons/sourcemod/logs/prefix.txt", false))
    {
        DeleteFile("addons/sourcemod/logs/prefix.txt");
    }
    ClearArray(g_arInAdvanceTag);
    OnCreateFile_SetTagCFG("cfg/sourcemod/prefix.cfg");
    OnOpenFile_SetTagCFG("cfg/sourcemod/prefix.cfg");
    if (g_hTIMER == INVALID_HANDLE)
    {
        g_hTIMER = CreateTimer(5.0, OnCheckTagPlayer, 0, 1);
    }
}

public Action:OnCheckTagPlayer(Handle:timer)
{
    new iTheTime = GetTime(_);
    for (new iClient = 1; iClient <= MaxClients; iClient++)
    {
        if (IsClientInGame(iClient) && !IsFakeClient(iClient))
        {
            if (g_bIsTag[iClient] && g_sGetTag[iClient][0] && iTheTime > g_iTimeTag[iClient] && g_iTimeTag[iClient] != -1)
            {
                g_bIsTag[iClient] = false;
                g_sGetTag[iClient][0] = '\0';
            }
        }
    }
}

OnCreateFile_SetTagCFG(String:filename[])
{
    if (!FileExists(filename, false))
    {
        new Handle:file = OpenFile(filename, "w+");
        if (file)
        {
            WriteFileLine(file, "[VIP]\n[ADMIN]\n[BOSS]");
            CloseHandle(file);
        }
    }
}

OnOpenFile_SetTagCFG(String:filename[])
{
    new Handle:file = OpenFile(filename, "r");
    if (file)
    {
        new String:buffer[100];
        while (!IsEndOfFile(file))
        {
            ReadFileLine(file, buffer, 100);
            new pos = 0;
            pos = StrContains(buffer, "//", true);
            if (pos != -1)
            {
                buffer[pos] = '\0';
            }
            pos = StrContains(buffer, "#", true);
            if (pos != -1)
            {
                buffer[pos] = '\0';
            }
            pos = StrContains(buffer, ";", true);
            if (pos != -1)
            {
                buffer[pos] = '\0';
            }
            TrimString(buffer);
            if (buffer[0] == 0)
            {
                continue;
            }
            if (FindStringInArray(g_arInAdvanceTag, buffer) != -1)
            {
                continue;
            }
            PushArrayString(g_arInAdvanceTag, buffer);
        }
        CloseHandle(file);
    }
}

public OnClientPutInServer(client)
{
    if (IsClientInGame(client) && !IsFakeClient(client))
    {
        GetClientAuthId(client, AuthId_Steam2, g_AuthId_Steam2[client], 64, true);
        decl String:Name[64];
        GetClientName(client, Name, 64);
        LogToFileEx("addons/sourcemod/logs/prefix.txt", "OnClientPutInServer :: %s %s", Name, g_AuthId_Steam2[client]);
        DBI_SelectInfo(client);
    }
}

public OnClientDisconnect(client)
{
    decl String:Name[64];
    GetClientName(client, Name, 64);
    LogToFileEx("addons/sourcemod/logs/prefix.txt", "OnClientDisconnect :: %s %s", Name, g_AuthId_Steam2[client]);
    DBI_UpdateInfo(client);
}

public Action:OpenGlobalMenu(client, args)
{
    if (client && IsClientInGame(client))
    {
        MenuGlobal(client);
    }
}

MenuGlobal(client)
{
    new Handle:menu = CreateMenu(_MenuGlobal, MENU_ACTIONS_DEFAULT);
    SetMenuTitle(menu, "Запись Префиксов\n");
    AddMenuItem(menu, "", "Установить Префикс", 0);
    AddMenuItem(menu, "", "Удалить Префикс", 0);
    SetMenuExitButton(menu, true);
    DisplayMenu(menu, client, 0);
}

public _MenuGlobal(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        if (item == 0)
        {
            MenuTag(client);
        }
        else
        {
            MenuDelTag(client);
        }
    }
    else
    {
        if (action == MenuAction:16)
        {
            CloseHandle(menu);
        }
    }
}

MenuTag(client)
{
    new size_array = 0;
    if ((size_array = GetArraySize(g_arInAdvanceTag)) > 0)
    {
        new Handle:menu = CreateMenu(_MenuTag, MENU_ACTIONS_DEFAULT);
        SetMenuTitle(menu, "Выберите префикс:\n");
        new String:NuM[16], String:buffer[100];
        AddMenuItem(menu, "new", "Свой префикс", 0);
        for (new i = 0; i < size_array; i++)
        {
            GetArrayString(g_arInAdvanceTag, i, buffer, 100);
            IntToString(i, NuM, 15);
            AddMenuItem(menu, NuM, buffer, 0);
        }
        SetMenuExitButton(menu, true);
        DisplayMenu(menu, client, 0);
    }
    else
    {
        g_iNuM_Tag[client] = -1;
        g_bCreateTag[client] = true;
        PrintToChat(client, "[SM] Напишите в чат желаемый префикс");
    }
}

public _MenuTag(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        new String:buffer[64];
        GetMenuItem(menu, item, buffer, 64, _, _, 0);
        if (StrEqual(buffer, "new", true))
        {
            g_iNuM_Tag[client] = -1;
            g_bCreateTag[client] = true;
            PrintToChat(client, "[SM] Напишите в чат желаемый префикс");
        }
        else
        {
            g_iNuM_Tag[client] = StringToInt(buffer, 10);
            MenuColorTag(client);
        }
    }
    else
    {
        if (action == MenuAction:16)
        {
            CloseHandle(menu);
        }
    }
}

MenuColorTag(client)
{
    new Handle:menu = CreateMenu(_MenuColorTag, MENU_ACTIONS_DEFAULT);
    SetMenuTitle(menu, "Каким цветом будет Тег:\n");
    AddMenuItem(menu, "{DEFAULT}", "Желтый", 0);
    AddMenuItem(menu, "{GREEN}", "Зеленый", 0);
    AddMenuItem(menu, "{LIGHTGREEN}", "Салатовый", 0);
    AddMenuItem(menu, "{TEAM}", "Цвет команды", 0);
    AddMenuItem(menu, "{RED}", "Красный", 0);
    AddMenuItem(menu, "{BLUE}", "Синий", 0);
    AddMenuItem(menu, "{GRAY}", "Серый", 0);
    SetMenuExitButton(menu, true);
    DisplayMenu(menu, client, 0);
}

public _MenuColorTag(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        GetMenuItem(menu, item, g_sBufferColor[client], 16, _, _, 0);
        MenuPlayerTag(client);
        DBI_UpdateInfo(client);
    }
    else
    {
        if (action == MenuAction:16)
        {
            CloseHandle(menu);
        }
    }
}

MenuPlayerTag(client)
{
    new Handle:menu = CreateMenu(_MenuPlayerTag, MENU_ACTIONS_DEFAULT);
    new String:userid[8], String:sTar[64];
    SetMenuTitle(menu, "Кому установить префикс:\n");
    for (new iClient = 1; iClient <= MaxClients; iClient++)
    {
        if (IsClientInGame(iClient) && !IsFakeClient(iClient))
        {
            IntToString(GetClientUserId(iClient), userid, 15);
            GetClientName(iClient, sTar, 64);
            AddMenuItem(menu, userid, sTar, 0);
        }
    }
    SetMenuExitButton(menu, true);
    DisplayMenu(menu, client, 0);
}

public _MenuPlayerTag(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        decl String:userid[16];
        GetMenuItem(menu, item, userid, 15, _, _, 0);
        new target = GetClientOfUserId(StringToInt(userid, 10));
        if (target < 1 || !IsClientInGame(target))
        {
            PrintToChat(client, "[SM] Игрок больше не доступен.");
            MenuPlayerTag(client);
        }
        else
        {
            g_id_Target[client] = target;
            MenuTimerTag(client);
        }
    }
}

MenuTimerTag(client)
{
    new Handle:menu = CreateMenu(_MenuTimerTag, MENU_ACTIONS_DEFAULT);
    SetMenuTitle(menu, "На сколько довать Тег");
    new String:sTimeTag[16];
    IntToString(86400, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "1 день", 0);
    IntToString(604800, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "7 дней", 0);
    IntToString(2419200, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "1 месяц", 0);
    IntToString(4838400, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "2 месяца", 0);
    IntToString(7257600, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "3 месяца", 0);
    IntToString(12096000, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "5 месяцев", 0);
    IntToString(29030400, sTimeTag, 16);
    AddMenuItem(menu, sTimeTag, "1 год", 0);
    SetMenuExitButton(menu, true);
    DisplayMenu(menu, client, 0);
}

public _MenuTimerTag(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        new target = g_id_Target[client];
        if (!IsClientInGame(target))
        {
            PrintToChat(client, "[SM] Игрок больше не доступен.");
            MenuPlayerTag(client);
            return;
        }
        decl String:sTimeTag[16];
        GetMenuItem(menu, item, sTimeTag, 16, _, _, 0);
        if (g_iNuM_Tag[client] != -1)
        {
            decl String:buffer[100];
            GetArrayString(g_arInAdvanceTag, g_iNuM_Tag[client], buffer, 100);
            strcopy(g_sGetTag[target], 100, buffer);
        }
        else
        {
            strcopy(g_sGetTag[target], 100, g_sBufferTag[client]);
        }
        g_bIsTag[target] = true;
        g_iTimeTag[target] = GetTime(_) + StringToInt(sTimeTag, 10);
        strcopy(g_sGetColorTag[target], 16, g_sBufferColor[client]);
        decl String:sAdmin[64], String:sTarger[64];
        GetClientName(client, sAdmin, 64);
        GetClientName(target, sTarger, 64);
        PrintToChat(target, "[SM] Админ \x03%s установил вам префикс.", sAdmin);
        PrintToChat(client, "[SM] Вы установили \x03%s префикс.", sTarger);
        DBI_UpdateInfo(target);
    }
    else
    {
        if (action == MenuAction:16)
        {
            CloseHandle(menu);
        }
    }
}

MenuDelTag(client)
{
    new Handle:menu = CreateMenu(_MenuDelTag, MENU_ACTIONS_DEFAULT);
    new String:userid[8], String:sTar[64];
    SetMenuTitle(menu, "У кого удалить Тег:\n");
    for (new iClient = 1; iClient <= MaxClients; iClient++)
    {
        if (IsClientInGame(iClient) && !IsFakeClient(iClient) && g_bIsTag[iClient])
        {
            IntToString(GetClientUserId(iClient), userid, 15);
            GetClientName(iClient, sTar, 64);
            AddMenuItem(menu, userid, sTar, 0);
        }
    }
    SetMenuExitButton(menu, true);
    DisplayMenu(menu, client, 0);
}

public _MenuDelTag(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        decl String:userid[16];
        GetMenuItem(menu, item, userid, 15, _, _, 0);
        new target = GetClientOfUserId(StringToInt(userid, 10));
        if (target < 1 || !IsClientInGame(target))
        {
            PrintToChat(client, "[SM] Игрок больше не доступен.");
            MenuDelTag(client);
        }
        else
        {
            decl String:sAdmin[64], String:sTarger[64];
            GetClientName(client, sAdmin, 64);
            GetClientName(target, sTarger, 64);
            PrintToChat(target, "[SM] Админ \x03%s удалил Ваш префикс.", sAdmin);
            PrintToChat(client, "[SM] Вы удалили префикс игроку \x03%s.", sTarger);
            g_bIsTag[target] = false;
            g_sGetTag[target][0] = '\0';
            MenuDelTag(client);
            DBI_UpdateInfo(target);
        }
    }
}

MenuConfirmTag(client)
{
    new Handle:menu = CreateMenu(_MenuConfirmTag, MENU_ACTIONS_DEFAULT);
    new String:buffer[256];
    Format(buffer, 255, "Вы написали этот префикс:\n%10s%s\nВсе верно?\n \n", " ", buffer);
    SetMenuTitle(menu, buffer);
    AddMenuItem(menu, "", "Да. Продолжить", 0);
    AddMenuItem(menu, "", "Нет. Написать другой", 0);
    if (GetArraySize(g_arInAdvanceTag))
    {
        AddMenuItem(menu, "", "Нет. Выбрать из списка", 0);
    }
    SetMenuExitButton(menu, true);
    DisplayMenu(menu, client, 0);
}

public _MenuConfirmTag(Handle:menu, MenuAction:action, client, item)
{
    if (action == MenuAction:4)
    {
        if (item == 0)
        {
            MenuColorTag(client);
        }
        else
        {
            if (item == 1)
            {
                g_bCreateTag[client] = true;
                PrintToChat(client, "[SM] Напишите в чат свой желаемый префикс");
            }
            else
            {
                if (item == 2)
                {
                    MenuTag(client);
                }
            }
        }
    }
    else
    {
        if (action == MenuAction:16)
        {
            CloseHandle(menu);
        }
    }
}

public Action:OnClientSayCommand(client, const String:command[], const String:sArgs[])
{
    if (client && IsClientInGame(client))
    {
        decl String:sText[256];
        strcopy(sText, 255, sArgs);
        TrimString(sText);
        StripQuotes(sText);
        if (sArgs[1] == 64 || sArgs[1] == 47)
        {
            return Plugin_Continue;
        }
        if (g_bCreateTag[client])
        {
            if (strlen(sText) < 2)
            {
                PrintToChat(client, "[SM] Ошибка. Минимальное количество символов \x03(2)");
                return Plugin_Handled;
            }
            strcopy(g_sBufferTag[client], 100, sText);
            MenuConfirmTag(client);
            g_bCreateTag[client] = false;
            return Plugin_Handled;
        }
        if (g_bIsTag[client])
        {
            decl String:buffer[256], String:sName[64];
            GetClientName(client, sName, 64);
            new iColor = ReplaceColors(g_sGetColorTag[client]);
            FormatEx(buffer, 255, "%s[%s] %s: %s", (iColor == -2) ? "" : ((iColor == -1) ? "" : "\x03"), g_sGetTag[client], sName, sText);
            switch (iColor)
            {
                case -2, -1, 0:
                {
                    for (new target = 1; target <= MaxClients; target++)
                    {
                        if (IsClientInGame(target) && !IsFakeClient(client))
                        {
                            PrintToChat(target, buffer);
                        }
                    }
                }
                case 1, 2, 3:
                {
                    PrintSayToChatAll(buffer, iColor);
                }
                case 4:
                {
                    PrintSayAll(client, buffer);
                }
            }
            return Plugin_Handled;
        }
    }
    return Plugin_Continue;
}

PrintSayAll(client, String:text[])
{
    new Handle:h = StartMessageAll("SayText2", 0);
    if (h)
    {
        BfWriteByte(h, client);
        BfWriteByte(h, 1);
        BfWriteString(h, text);
        EndMessage();
    }
}

PrintSayToChatAll(String:text[], iColor)
{
    new iTarget = FindPlayerByTeam(iColor);
    if (iTarget)
    {
        new Handle:h = StartMessageAll("SayText2", 0);
        if (h)
        {
            BfWriteByte(h, iTarget);
            BfWriteByte(h, 1);
            BfWriteString(h, text);
            EndMessage();
        }
    }
    else
    {
        PrintMsgToAll(text);
    }
}

PrintMsgToAll(String:text[])
{
    for (new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i))
        {
            new Handle:hBf = StartMessageOne("SayText2", i, 0);
            if (hBf)
            {
                BfWriteByte(hBf, i);
                BfWriteByte(hBf, 1);
                BfWriteString(hBf, text);
                EndMessage();
            }
        }
    }
}

ReplaceColors(String:color[])
{
    if (StrContains(color, "{GREEN}", true) != -1)
    {
        return -1;
    }
    if (StrContains(color, "{LIGHTGREEN}", true) != -1)
    {
        return 0;
    }
    if (StrContains(color, "{GRAY}", true) != -1)
    {
        return 1;
    }
    if (StrContains(color, "{RED}", true) != -1)
    {
        return 2;
    }
    if (StrContains(color, "{BLUE}", true) != -1)
    {
        return 3;
    }
    if (StrContains(color, "{TEAM}", true) != -1)
    {
        return 4;
    }
    return -2;
}

FindPlayerByTeam(iTeam)
{
    for (new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && GetClientTeam(i) == iTeam)
        {
            return i;
        }
    }
    return -1;
}

OnClearInfo(client)
{
    g_bIsTag[client] = false;
    g_iTimeTag[client] = 0;
    g_sGetTag[client][0] = '\0';
    strcopy(g_sGetColorTag[client], 16, "{DEFAULT}");
}

DBI_Create()
{
    decl String:buffer[256];
    g_hDB_TagClients = SQLite_UseDatabase("prefix", buffer, 255);
    if (!g_hDB_TagClients)
    {
        LogError("SQLite_UseDatabase error: %s", buffer);
        SetFailState("SQLite_UseDatabase error: %s", buffer);
    }
    SQL_LockDatabase(g_hDB_TagClients);
    Format(buffer, 255, "CREATE TABLE IF NOT EXISTS %s (steam TEXT(%i), tag_name TEXT(%i), color_tag TEXT(%i), time INT);", "prefix", 64, 100, 16);
    SQL_FastQuery(g_hDB_TagClients, buffer, -1);
    SQL_UnlockDatabase(g_hDB_TagClients);
}

DBI_SelectInfo(client)
{
    if (!IsClientInGame(client) || IsFakeClient(client))
    {
        return;
    }
    decl String:buffer[256];
    Format(buffer, 255, "SELECT * FROM %s WHERE steam = '%s' LIMIT 1;", "prefix", g_AuthId_Steam2[client]);
    SQL_TQuery(g_hDB_TagClients, OnSelectClient, buffer, GetClientUserId(client), DBPrio_Normal);
}

DBI_AddInfo(client)
{
    if (!IsClientInGame(client) || IsFakeClient(client))
    {
        return;
    }
    decl String:buffer[256];
    Format(buffer, 255, "INSERT INTO %s (steam, tag_name, color_tag, time) VALUES ('%s', '', '{DEFAULT}', 0);", "prefix", g_AuthId_Steam2[client]);
    SQL_TQuery(g_hDB_TagClients, OnSQLRequest, buffer, 0, DBPrio_Normal);
    decl String:Name[64];
    GetClientName(client, Name, 64);
    LogToFileEx("addons/sourcemod/logs/prefix.txt", "OnAddClient :: %s %s [enable='%s' | time='%i' | tag='%s' | color='%s']", Name, g_AuthId_Steam2[client], (g_bIsTag[client]) ? "true" : "false", g_iTimeTag[client], g_sGetTag[client], g_sGetColorTag[client]);
}

DBI_UpdateInfo(client)
{
    if (IsClientInGame(client) && !IsFakeClient(client))
    {
        decl String:buffer[256];
        Format(buffer, 255, "UPDATE %s SET tag_name = '%s', color_tag = '%s', time = %i WHERE steam = '%s';", "prefix", g_sGetTag[client], g_sGetColorTag[client], g_iTimeTag[client], g_AuthId_Steam2[client]);
        SQL_TQuery(g_hDB_TagClients, OnSQLRequest, buffer, client, DBPrio_Normal);
        decl String:Name[64];
        GetClientName(client, Name, 64);
        LogToFileEx("addons/sourcemod/logs/prefix.txt", "OnUpdateClient :: %s %s [enable='%s' | time='%i' | tag='%s' | color='%s']\n \n", Name, g_AuthId_Steam2[client], (g_bIsTag[client]) ? "true" : "false", g_iTimeTag[client], g_sGetTag[client], g_sGetColorTag[client]);
    }
}

public OnSelectClient(Handle:owner, Handle:hndl, String:error[], any:data)
{
    if (!hndl)
    {
        LogError("OnSelectClient error: %s", error);
        return;
    }
    new client = GetClientOfUserId(data);
    if (!client)
    {
        return;
    }
    OnClearInfo(client);
    if (SQL_FetchRow(hndl))
    {
        if (IsClientInGame(client) && !IsFakeClient(client))
        {
            SQL_FetchString(hndl, 1, g_sGetTag[client], 100, _);
            if (!StrEqual(g_sGetTag[client], "", true))
            {
                SQL_FetchString(hndl, 2, g_sGetColorTag[client], 16, _);
                g_iTimeTag[client] = SQL_FetchInt(hndl, 3, _);
                g_bIsTag[client] = true;
                decl String:Name[64];
                GetClientName(client, Name, 64);
                LogToFileEx("addons/sourcemod/logs/prefix.txt", "OnSelectClient :Get Array: %s %s [enable='%s' | time='%i' | tag='%s' | color='%s']\n \n", Name, g_AuthId_Steam2[client], (g_bIsTag[client]) ? "true" : "false", g_iTimeTag[client], g_sGetTag[client], g_sGetColorTag[client]);
            }
        }
    }
    else
    {
        DBI_AddInfo(client);
    }
}

public OnSQLRequest(Handle:owner, Handle:hndl, String:error[], any:data)
{
    if (!hndl)
    {
        LogError("OnSQLRequest error: %s", error);
        return;
    }
}
 

magis1337

Участник
Сообщения
252
Реакции
23
Может кто то знает, есть ли плагин против музыкантов ?) был бы благодарен, поставил Anti Voice loopback, но не знаю поможет ли
 

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
516
Может кто то знает, есть ли плагин против музыкантов ?) был бы благодарен, поставил Anti Voice loopback, но не знаю поможет ли
У меня есть костыль, временно при заходе блокирует чат и голос на время
 
Сверху Снизу