Не много отредактировать

  • Автор темы ...aDDidas...
  • Дата начала
Статус
В этой теме нельзя размещать новые ответы.
A

...aDDidas...

Всем привет. Может кто отредактировать плагин banv34, а именно добавить еще одну команду, по которой идет бан и собственно проверка бана. На данный момент в плагине бан по одной команде.

P.S. команду можете добавить любую (rate, cl_cmdrate и т.п.)
 

Вложения

  • banv34.sp
    3.6 КБ · Просмотры: 51

CAH4E3

Сосанчез.
Сообщения
1,597
Реакции
779
Разве так не работает?
PHP:
public OnPluginStart()
{
    RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN);
    RegAdminCmd("sm_blabla", Command_Banv, ADMFLAG_BAN);
    g_bActivated = true;
}
На см 1.6.4 компилируется
lwSjdwq.png

Я сейчас сонный и могу тупить...
 
A

...aDDidas...

Разве так не работает?
PHP:
public OnPluginStart()
{
    RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN);
    RegAdminCmd("sm_blabla", Command_Banv, ADMFLAG_BAN);
    g_bActivated = true;
}
На см 1.6.4 компилируется
lwSjdwq.png

Я сейчас сонный и могу тупить...
Вы не поняли (либо я плохо объяснил).
Данный плагин банит по переменной. Например, xbox_throttlebias 0 меняется на xbox_throttlebias 1. Так вот, кроме это переменной нужно добавить еще одну.
 

CAH4E3

Сосанчез.
Сообщения
1,597
Реакции
779
Вы не поняли (либо я плохо объяснил).
Данный плагин банит по переменной. Например, xbox_throttlebias 0 меняется на xbox_throttlebias 1. Так вот, кроме это переменной нужно добавить еще одну.
А, я просто спать хочу и поэтому не понял суть вопроса... Извини тогда, лучше я ночью больше не полезу уже в исходник...Может кто другой поможет
 

Rostu

Добрая душа
Сообщения
986
Реакции
623
@...aDDidas..., Ну можно же заменить xbox_throttlebias и потом заменить iRate = 46; на 148 строке
 

Mensi1337

Участник
Сообщения
242
Реакции
16
Это я знаю, но нужна еще одна переменная.
PHP:
#pragma semicolon 1

#include <sourcemod>

public Plugin:myinfo =
{
    name = "BanV34",
    description = "",
    author = "Regent",
    version = "1.0",
    url = "http://all4css.ru/"
};

new bool:g_bActivated;
new bool:g_bBanned[65];

public OnPluginStart()
{
    RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN);
    g_bActivated = true;
}

public OnClientAuthorized(iClient, const String:auth[])
{
    QueryClientConVar(iClient, "xbox_throttlebias", Query_Func);
    QueryClientConVar(iClient, "joy_forwardsensitivity", Query_Func);
}

public Action:Command_Banv(iClient, szArgs)
{
    Send_MainMenu(iClient);
    return Plugin_Handled;
}

public Query_Func(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) == 46)
    {
        g_bBanned[iClient] = true;
        if (g_bActivated)
        {
            KickClient(iClient, "You are banned on this server");
        }
    }
    else
    {
        g_bBanned[iClient] = false;
    }
}

Send_MainMenu(iClient)
{
    new Handle:hPanel = CreatePanel();
    SetPanelTitle(hPanel, "[BanV34]\n \n", false);
    if (g_bActivated)
    {
        DrawPanelItem(hPanel, "Забанить игрока", 0);
        DrawPanelItem(hPanel, "Защита: включена\n \n", 2);
        DrawPanelItem(hPanel, "Выключить защиту\n \n", 0);
        DrawPanelItem(hPanel, "Выход", 0);
    }
    else
    {
        DrawPanelItem(hPanel, "Разбанить игрока", 0);
        DrawPanelItem(hPanel, "Защита: отключена\n \n", 2);
        DrawPanelItem(hPanel, "Включить защиту\n \n", 0);
        DrawPanelItem(hPanel, "Выход", 0);
    }
    SendPanelToClient(hPanel, iClient, Handle_MainMenu, 0);
    CloseHandle(hPanel);
}

Send_PlayerMenu(iClient)
{
    new Handle:hMenu = CreateMenu(Handle_PlayerMenu);
    if (g_bActivated)
    {
        SetMenuTitle(hMenu, "Забанить игрока:\n \n");
    }
    else
    {
        SetMenuTitle(hMenu, "Разбанить игрока:\n \n");
    }
    decl String:szName[64];
    decl String:szClient[8];
    for (new i = 1; i < MaxClients; i++)
    {
        if (IsClientConnected(i))
        {
            QueryClientConVar(i, "xbox_throttlebias", Query_Func);
            if (g_bActivated && !g_bBanned[i])
            {
                GetClientName(i, szName, 64);
                IntToString(i, szClient, 8);
                AddMenuItem(hMenu, szClient, szName, 0);
            }
            else if (!g_bActivated && g_bBanned[i])
            {
                GetClientName(i, szName, 64);
                IntToString(i, szClient, 8);
                AddMenuItem(hMenu, szClient, szName, 0);
            }
        }
    }
    SetMenuExitButton(hMenu, true);
    DisplayMenu(hMenu, iClient, 0);
}

public Handle_MainMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
    if (action == MenuAction_Select)
    {
        if (iInfo == 1)
        {
            Send_PlayerMenu(iClient);
        }
        if (iInfo == 2)
        {
            g_bActivated = !g_bActivated;
            Send_MainMenu(iClient);
        }
    }
}

public Handle_PlayerMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
    if (action == MenuAction_End)
    {
        CloseHandle(menu);
    }
    else
    {
        if (action == MenuAction_Cancel)
        {
            Send_MainMenu(iClient);
        }
        if (action == MenuAction_Select)
        {
            decl String:szInfo[8];
            GetMenuItem(menu, iInfo, szInfo, 8);
            new iTarget = StringToInt(szInfo, 10);
            if (!IsClientConnected(iTarget))
            {
                PrintToChat(iClient, "\x04[Banv34:] \x03Player not in game");
            }
            decl iRate;
            if (g_bActivated)
            {
                iRate = 46;
            }
            else
            {
                iRate = 1;
            }
            decl String:szCmd[128];
            Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate);
            new Handle:data = CreateKeyValues("data");
            KvSetString(data, "type", "2");
            KvSetString(data, "cmd", szCmd);
            ShowVGUIPanel(iTarget, "info", data, true);
            CloseHandle(data);
        }
    }
}
--- Добавлено позже ---
Если нет,то не знаю
 

Вложения

  • banv34.sp
    3.7 КБ · Просмотры: 8
Последнее редактирование:
A

...aDDidas...

PHP:
#pragma semicolon 1

#include <sourcemod>

public Plugin:myinfo =
{
    name = "BanV34",
    description = "",
    author = "Regent",
    version = "1.0",
    url = "http://all4css.ru/"
};

new bool:g_bActivated;
new bool:g_bBanned[65];

public OnPluginStart()
{
    RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN);
    g_bActivated = true;
}

public OnClientAuthorized(iClient, const String:auth[])
{
    QueryClientConVar(iClient, "xbox_throttlebias", Query_Func);
    QueryClientConVar(iClient, "joy_forwardsensitivity", Query_Func);
}

public Action:Command_Banv(iClient, szArgs)
{
    Send_MainMenu(iClient);
    return Plugin_Handled;
}

public Query_Func(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) == 46)
    {
        g_bBanned[iClient] = true;
        if (g_bActivated)
        {
            KickClient(iClient, "You are banned on this server");
        }
    }
    else
    {
        g_bBanned[iClient] = false;
    }
}

Send_MainMenu(iClient)
{
    new Handle:hPanel = CreatePanel();
    SetPanelTitle(hPanel, "[BanV34]\n \n", false);
    if (g_bActivated)
    {
        DrawPanelItem(hPanel, "Забанить игрока", 0);
        DrawPanelItem(hPanel, "Защита: включена\n \n", 2);
        DrawPanelItem(hPanel, "Выключить защиту\n \n", 0);
        DrawPanelItem(hPanel, "Выход", 0);
    }
    else
    {
        DrawPanelItem(hPanel, "Разбанить игрока", 0);
        DrawPanelItem(hPanel, "Защита: отключена\n \n", 2);
        DrawPanelItem(hPanel, "Включить защиту\n \n", 0);
        DrawPanelItem(hPanel, "Выход", 0);
    }
    SendPanelToClient(hPanel, iClient, Handle_MainMenu, 0);
    CloseHandle(hPanel);
}

Send_PlayerMenu(iClient)
{
    new Handle:hMenu = CreateMenu(Handle_PlayerMenu);
    if (g_bActivated)
    {
        SetMenuTitle(hMenu, "Забанить игрока:\n \n");
    }
    else
    {
        SetMenuTitle(hMenu, "Разбанить игрока:\n \n");
    }
    decl String:szName[64];
    decl String:szClient[8];
    for (new i = 1; i < MaxClients; i++)
    {
        if (IsClientConnected(i))
        {
            QueryClientConVar(i, "xbox_throttlebias", Query_Func);
            if (g_bActivated && !g_bBanned[i])
            {
                GetClientName(i, szName, 64);
                IntToString(i, szClient, 8);
                AddMenuItem(hMenu, szClient, szName, 0);
            }
            else if (!g_bActivated && g_bBanned[i])
            {
                GetClientName(i, szName, 64);
                IntToString(i, szClient, 8);
                AddMenuItem(hMenu, szClient, szName, 0);
            }
        }
    }
    SetMenuExitButton(hMenu, true);
    DisplayMenu(hMenu, iClient, 0);
}

public Handle_MainMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
    if (action == MenuAction_Select)
    {
        if (iInfo == 1)
        {
            Send_PlayerMenu(iClient);
        }
        if (iInfo == 2)
        {
            g_bActivated = !g_bActivated;
            Send_MainMenu(iClient);
        }
    }
}

public Handle_PlayerMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
    if (action == MenuAction_End)
    {
        CloseHandle(menu);
    }
    else
    {
        if (action == MenuAction_Cancel)
        {
            Send_MainMenu(iClient);
        }
        if (action == MenuAction_Select)
        {
            decl String:szInfo[8];
            GetMenuItem(menu, iInfo, szInfo, 8);
            new iTarget = StringToInt(szInfo, 10);
            if (!IsClientConnected(iTarget))
            {
                PrintToChat(iClient, "\x04[Banv34:] \x03Player not in game");
            }
            decl iRate;
            if (g_bActivated)
            {
                iRate = 46;
            }
            else
            {
                iRate = 1;
            }
            decl String:szCmd[128];
            Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate);
            new Handle:data = CreateKeyValues("data");
            KvSetString(data, "type", "2");
            KvSetString(data, "cmd", szCmd);
            ShowVGUIPanel(iTarget, "info", data, true);
            CloseHandle(data);
        }
    }
}
--- Добавлено позже ---
Если нет,то не знаю
К сожалению не работает (бан дается только по xbox_throttlebias)
 

Rostu

Добрая душа
Сообщения
986
Реакции
623
@...aDDidas..., Попробуй это еще
PHP:
#pragma semicolon 1

#include <sourcemod>

public Plugin:myinfo =
{
    name = "BanV34",
    description = "",
    author = "Regent",
    version = "1.0",
    url = "http://all4css.ru/"
};

new bool:g_bActivated;
new bool:g_bBanned[65];

public OnPluginStart()
{
    RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN);
    g_bActivated = true;
}

public OnClientAuthorized(iClient, const String:auth[])
{
    QueryClientConVar(iClient, "xbox_throttlebias", Query_Func);
    QueryClientConVar(iClient, "cl_cmdrate", Query_Func2);
}

public Action:Command_Banv(iClient, szArgs)
{
    Send_MainMenu(iClient);
    return Plugin_Handled;
}

public Query_Func(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) == 46)
    {
        g_bBanned[iClient] = true;
        if (g_bActivated)
        {
            KickClient(iClient, "You are banned on this server");
        }
    }
    else
    {
        g_bBanned[iClient] = false;
    }
}
public Query_Func2(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) == 46)
    {
        g_bBanned[iClient] = true;
        if (g_bActivated)
        {
            KickClient(iClient, "You are banned on this server");
        }
    }
    else
    {
        g_bBanned[iClient] = false;
    }
}

Send_MainMenu(iClient)
{
    new Handle:hPanel = CreatePanel();
    SetPanelTitle(hPanel, "[BanV34]\n \n", false);
    if (g_bActivated)
    {
        DrawPanelItem(hPanel, "Забанить игрока", 0);
        DrawPanelItem(hPanel, "Защита: включена\n \n", 2);
        DrawPanelItem(hPanel, "Выключить защиту\n \n", 0);
        DrawPanelItem(hPanel, "Выход", 0);
    }
    else
    {
        DrawPanelItem(hPanel, "Разбанить игрока", 0);
        DrawPanelItem(hPanel, "Защита: отключена\n \n", 2);
        DrawPanelItem(hPanel, "Включить защиту\n \n", 0);
        DrawPanelItem(hPanel, "Выход", 0);
    }
    SendPanelToClient(hPanel, iClient, Handle_MainMenu, 0);
    CloseHandle(hPanel);
}

Send_PlayerMenu(iClient)
{
    new Handle:hMenu = CreateMenu(Handle_PlayerMenu);
    if (g_bActivated)
    {
        SetMenuTitle(hMenu, "Забанить игрока:\n \n");
    }
    else
    {
        SetMenuTitle(hMenu, "Разбанить игрока:\n \n");
    }
    decl String:szName[64];
    decl String:szClient[8];
    for (new i = 1; i < MaxClients; i++)
    {
        if (IsClientConnected(i))
        {
            QueryClientConVar(i, "xbox_throttlebias", Query_Func);
            QueryClientConVar(i, "cl_cmdrate", Query_Func2);
          
            if (g_bActivated && !g_bBanned[i])
            {
                GetClientName(i, szName, 64);
                IntToString(i, szClient, 8);
                AddMenuItem(hMenu, szClient, szName, 0);
            }
            else if (!g_bActivated && g_bBanned[i])
            {
                GetClientName(i, szName, 64);
                IntToString(i, szClient, 8);
                AddMenuItem(hMenu, szClient, szName, 0);
            }
        }
    }
    SetMenuExitButton(hMenu, true);
    DisplayMenu(hMenu, iClient, 0);
}

public Handle_MainMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
    if (action == MenuAction_Select)
    {
        if (iInfo == 1)
        {
            Send_PlayerMenu(iClient);
        }
        if (iInfo == 2)
        {
            g_bActivated = !g_bActivated;
            Send_MainMenu(iClient);
        }
    }
}

public Handle_PlayerMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
    if (action == MenuAction_End)
    {
        CloseHandle(menu);
    }
    else
    {
        if (action == MenuAction_Cancel)
        {
            Send_MainMenu(iClient);
        }
        if (action == MenuAction_Select)
        {
            decl String:szInfo[8];
            GetMenuItem(menu, iInfo, szInfo, 8);
            new iTarget = StringToInt(szInfo, 10);
            if (!IsClientConnected(iTarget))
            {
                PrintToChat(iClient, "\x04[Banv34:] \x03Player not in game");
            }
            decl iRate;
            decl iRate2;
            if (g_bActivated)
            {
                iRate = 46;
                iRate2 = 46;
            }
            else
            {
                iRate = 1;
                iRate2 = 128;
            }
            decl String:szCmd[128];
            decl String:szCmd2[128];
            Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate);
            Format(szCmd2, 128, "cl_cmdrate %d; retry", iRate2);
            new Handle:data = CreateKeyValues("data");
            KvSetString(data, "type", "2");
            KvSetString(data, "cmd", szCmd);
            ShowVGUIPanel(iTarget, "info", data, true);
            CloseHandle(data);
        }
    }
}
Оффтоп
 
Последнее редактирование:

Mensi1337

Участник
Сообщения
242
Реакции
16
@...aDDidas..., Попробуй это еще
PHP:
#pragma semicolon 1

#include <sourcemod>

public Plugin:myinfo =
{
    name = "BanV34",
    description = "",
    author = "Regent",
    version = "1.0",
    url = "http://all4css.ru/"
};

new bool:g_bActivated;
new bool:g_bBanned[65];

public OnPluginStart()
{
    RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN);
    g_bActivated = true;
}

public OnClientAuthorized(iClient, const String:auth[])
{
    QueryClientConVar(iClient, "xbox_throttlebias", Query_Func);
    QueryClientConVar(iClient, "cl_cmdrate", Query_Func2);
}

public Action:Command_Banv(iClient, szArgs)
{
    Send_MainMenu(iClient);
    return Plugin_Handled;
}

public Query_Func(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) == 46)
    {
        g_bBanned[iClient] = true;
        if (g_bActivated)
        {
            KickClient(iClient, "You are banned on this server");
        }
    }
    else
    {
        g_bBanned[iClient] = false;
    }
}
public Query_Func2(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) == 46)
    {
        g_bBanned[iClient] = true;
        if (g_bActivated)
        {
            KickClient(iClient, "You are banned on this server");
        }
    }
    else
    {
        g_bBanned[iClient] = false;
    }
}

Send_MainMenu(iClient)
{
    new Handle:hPanel = CreatePanel();
    SetPanelTitle(hPanel, "[BanV34]\n \n", false);
    if (g_bActivated)
    {
        DrawPanelItem(hPanel, "Забанить игрока", 0);
        DrawPanelItem(hPanel, "Защита: включена\n \n", 2);
        DrawPanelItem(hPanel, "Выключить защиту\n \n", 0);
        DrawPanelItem(hPanel, "Выход", 0);
    }
    else
    {
        DrawPanelItem(hPanel, "Разбанить игрока", 0);
        DrawPanelItem(hPanel, "Защита: отключена\n \n", 2);
        DrawPanelItem(hPanel, "Включить защиту\n \n", 0);
        DrawPanelItem(hPanel, "Выход", 0);
    }
    SendPanelToClient(hPanel, iClient, Handle_MainMenu, 0);
    CloseHandle(hPanel);
}

Send_PlayerMenu(iClient)
{
    new Handle:hMenu = CreateMenu(Handle_PlayerMenu);
    if (g_bActivated)
    {
        SetMenuTitle(hMenu, "Забанить игрока:\n \n");
    }
    else
    {
        SetMenuTitle(hMenu, "Разбанить игрока:\n \n");
    }
    decl String:szName[64];
    decl String:szClient[8];
    for (new i = 1; i < MaxClients; i++)
    {
        if (IsClientConnected(i))
        {
            QueryClientConVar(i, "xbox_throttlebias", Query_Func);
            QueryClientConVar(i, "cl_cmdrate", Query_Func2);
          
            if (g_bActivated && !g_bBanned[i])
            {
                GetClientName(i, szName, 64);
                IntToString(i, szClient, 8);
                AddMenuItem(hMenu, szClient, szName, 0);
            }
            else if (!g_bActivated && g_bBanned[i])
            {
                GetClientName(i, szName, 64);
                IntToString(i, szClient, 8);
                AddMenuItem(hMenu, szClient, szName, 0);
            }
        }
    }
    SetMenuExitButton(hMenu, true);
    DisplayMenu(hMenu, iClient, 0);
}

public Handle_MainMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
    if (action == MenuAction_Select)
    {
        if (iInfo == 1)
        {
            Send_PlayerMenu(iClient);
        }
        if (iInfo == 2)
        {
            g_bActivated = !g_bActivated;
            Send_MainMenu(iClient);
        }
    }
}

public Handle_PlayerMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
    if (action == MenuAction_End)
    {
        CloseHandle(menu);
    }
    else
    {
        if (action == MenuAction_Cancel)
        {
            Send_MainMenu(iClient);
        }
        if (action == MenuAction_Select)
        {
            decl String:szInfo[8];
            GetMenuItem(menu, iInfo, szInfo, 8);
            new iTarget = StringToInt(szInfo, 10);
            if (!IsClientConnected(iTarget))
            {
                PrintToChat(iClient, "\x04[Banv34:] \x03Player not in game");
            }
            decl iRate;
            decl iRate2;
            if (g_bActivated)
            {
                iRate = 46;
                iRate2 = 46;
            }
            else
            {
                iRate = 1;
                iRate2 = 128;
            }
            decl String:szCmd[128];
            decl String:szCmd2[128];
            Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate);
            Format(szCmd2, 128, "cl_cmdrate %d; retry", iRate2);
            new Handle:data = CreateKeyValues("data");
            KvSetString(data, "type", "2");
            KvSetString(data, "cmd", szCmd);
            ShowVGUIPanel(iTarget, "info", data, true);
            CloseHandle(data);
        }
    }
}
Оффтоп
Я плохо пишу просто попробывал :D
 
A

...aDDidas...

@...aDDidas..., Попробуй это еще
PHP:
#pragma semicolon 1

#include <sourcemod>

public Plugin:myinfo =
{
    name = "BanV34",
    description = "",
    author = "Regent",
    version = "1.0",
    url = "http://all4css.ru/"
};

new bool:g_bActivated;
new bool:g_bBanned[65];

public OnPluginStart()
{
    RegAdminCmd("sm_banv", Command_Banv, ADMFLAG_BAN);
    g_bActivated = true;
}

public OnClientAuthorized(iClient, const String:auth[])
{
    QueryClientConVar(iClient, "xbox_throttlebias", Query_Func);
    QueryClientConVar(iClient, "cl_cmdrate", Query_Func2);
}

public Action:Command_Banv(iClient, szArgs)
{
    Send_MainMenu(iClient);
    return Plugin_Handled;
}

public Query_Func(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) == 46)
    {
        g_bBanned[iClient] = true;
        if (g_bActivated)
        {
            KickClient(iClient, "You are banned on this server");
        }
    }
    else
    {
        g_bBanned[iClient] = false;
    }
}
public Query_Func2(QueryCookie:cookie, iClient, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) == 46)
    {
        g_bBanned[iClient] = true;
        if (g_bActivated)
        {
            KickClient(iClient, "You are banned on this server");
        }
    }
    else
    {
        g_bBanned[iClient] = false;
    }
}

Send_MainMenu(iClient)
{
    new Handle:hPanel = CreatePanel();
    SetPanelTitle(hPanel, "[BanV34]\n \n", false);
    if (g_bActivated)
    {
        DrawPanelItem(hPanel, "Забанить игрока", 0);
        DrawPanelItem(hPanel, "Защита: включена\n \n", 2);
        DrawPanelItem(hPanel, "Выключить защиту\n \n", 0);
        DrawPanelItem(hPanel, "Выход", 0);
    }
    else
    {
        DrawPanelItem(hPanel, "Разбанить игрока", 0);
        DrawPanelItem(hPanel, "Защита: отключена\n \n", 2);
        DrawPanelItem(hPanel, "Включить защиту\n \n", 0);
        DrawPanelItem(hPanel, "Выход", 0);
    }
    SendPanelToClient(hPanel, iClient, Handle_MainMenu, 0);
    CloseHandle(hPanel);
}

Send_PlayerMenu(iClient)
{
    new Handle:hMenu = CreateMenu(Handle_PlayerMenu);
    if (g_bActivated)
    {
        SetMenuTitle(hMenu, "Забанить игрока:\n \n");
    }
    else
    {
        SetMenuTitle(hMenu, "Разбанить игрока:\n \n");
    }
    decl String:szName[64];
    decl String:szClient[8];
    for (new i = 1; i < MaxClients; i++)
    {
        if (IsClientConnected(i))
        {
            QueryClientConVar(i, "xbox_throttlebias", Query_Func);
            QueryClientConVar(i, "cl_cmdrate", Query_Func2);
         
            if (g_bActivated && !g_bBanned[i])
            {
                GetClientName(i, szName, 64);
                IntToString(i, szClient, 8);
                AddMenuItem(hMenu, szClient, szName, 0);
            }
            else if (!g_bActivated && g_bBanned[i])
            {
                GetClientName(i, szName, 64);
                IntToString(i, szClient, 8);
                AddMenuItem(hMenu, szClient, szName, 0);
            }
        }
    }
    SetMenuExitButton(hMenu, true);
    DisplayMenu(hMenu, iClient, 0);
}

public Handle_MainMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
    if (action == MenuAction_Select)
    {
        if (iInfo == 1)
        {
            Send_PlayerMenu(iClient);
        }
        if (iInfo == 2)
        {
            g_bActivated = !g_bActivated;
            Send_MainMenu(iClient);
        }
    }
}

public Handle_PlayerMenu(Handle:menu, MenuAction:action, iClient, iInfo)
{
    if (action == MenuAction_End)
    {
        CloseHandle(menu);
    }
    else
    {
        if (action == MenuAction_Cancel)
        {
            Send_MainMenu(iClient);
        }
        if (action == MenuAction_Select)
        {
            decl String:szInfo[8];
            GetMenuItem(menu, iInfo, szInfo, 8);
            new iTarget = StringToInt(szInfo, 10);
            if (!IsClientConnected(iTarget))
            {
                PrintToChat(iClient, "\x04[Banv34:] \x03Player not in game");
            }
            decl iRate;
            decl iRate2;
            if (g_bActivated)
            {
                iRate = 46;
                iRate2 = 46;
            }
            else
            {
                iRate = 1;
                iRate2 = 128;
            }
            decl String:szCmd[128];
            decl String:szCmd2[128];
            Format(szCmd, 128, "xbox_throttlebias %d; retry", iRate);
            Format(szCmd2, 128, "cl_cmdrate %d; retry", iRate2);
            new Handle:data = CreateKeyValues("data");
            KvSetString(data, "type", "2");
            KvSetString(data, "cmd", szCmd);
            ShowVGUIPanel(iTarget, "info", data, true);
            CloseHandle(data);
        }
    }
}
Оффтоп
Первая переменная меняется, а вот вторая почему-то нет =(
 

Rostu

Добрая душа
Сообщения
986
Реакции
623
@...aDDidas..., Она должна при бане меняться? Вроде же если разбан то = 128 а если бан 46
 

Rostu

Добрая душа
Сообщения
986
Реакции
623
@...aDDidas..., А давай WS попробуем:ab:? В чат по идеи тупо nsadmin без ! Если у игрока cl_cmdrate != 100 = бан
PHP:
#include <sourcemod>

public Plugin:myinfo =
{
    name = "Nsbans",
    author = "Schmidt",
    description = "No-Steam-Bans",
    version = "1.0",
    url = "http://world-source.ru/"
};

new bool:PlayerBanned[MAXPLAYERS+1],
    bool:Protect = true,
    bool:BanAction[MAXPLAYERS+1];

public OnPluginStart()
{
    RegAdminCmd("nsadmin", Nsbans, ADMFLAG_ROOT);
}

public Action:Nsbans(i, args)
{
    if (!(GetUserFlagBits(i) & ADMFLAG_ROOT))
    {
        ReplyToCommand(i, "[ Nsbans ] У вас нет доступа");
        return Plugin_Handled;
    }
    if (args < 1) ShowGlavPanel(i);
    return Plugin_Handled;
}

ShowGlavPanel(i)
{
    decl Handle:Nsbans_Panel;
    if ((Nsbans_Panel = CreatePanel()) == INVALID_HANDLE)
    {
        ReplyToCommand(i, "[ Nsbans ] Не удалось создать меню");
        return;
    }
    DrawPanelText(Nsbans_Panel, "[ Nsbans ] Меню\n \n");
    if (Protect) DrawPanelItem(Nsbans_Panel, "Дать Бан");
    else DrawPanelItem(Nsbans_Panel, "Дать Бан", ITEMDRAW_DISABLED);
    if (Protect) DrawPanelItem(Nsbans_Panel, "Разбанить Игрока", ITEMDRAW_DISABLED);
    else DrawPanelItem(Nsbans_Panel, "Разбанить Игрока");
    decl String:Schmidt[75];
    if (Protect) Format(Schmidt, sizeof(Schmidt), "Защита: ВКЛ (ОТКЛ)\n \n");
    else Format(Schmidt, sizeof(Schmidt), "Защита: ОТКЛ (ВКЛ)\n \n");
    DrawPanelItem(Nsbans_Panel, Schmidt);
    DrawPanelItem(Nsbans_Panel, "Выход");
    SendPanelToClient(Nsbans_Panel, i, wS_SelectGlavPanel, 0);
    CloseHandle(Nsbans_Panel);
}

public wS_SelectGlavPanel(Handle:menu, MenuAction:action, i, z)
{
    if (action != MenuAction_Select && z > 3)
    {
        return;
    }
    if (z < 3)
    {
        if (z == 1) BanAction[i] = true;
        else BanAction[i] = false;
        ShowBanMenu(i);
    }
    else if (z == 3)
    {
        if (Protect)
        {
            Protect = false;
            PrintToChat(i, "\x01[ \x03Nsbans\x01 ] Защита отключена");
        }
        else
        {
            Protect = true;
            PrintToChat(i, "\x01[ \x03Nsbans\x01 ] \x04Защита включена");
            wS_KickBanPlayers();
        }
        ShowGlavPanel(i);
    }
}

wS_KickBanPlayers()
{
    for (new x = 1; x <= MaxClients; x++)
    {
        if (IsClientInGame(x) && !IsFakeClient(x))
        {
            QueryClientConVar(x, "xbox_throttlespoof", ConVarQueryFinished:QueryKick_Func);
            QueryClientConVar(x, "cl_cmdrate", ConVarQueryFinished:QueryKick_Func2);
        }
    }
}

public QueryKick_Func(Cookie:cookie, i, Result:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) != 200) KickClient(i, "[ Nsbans ] Вы забанены");
}
public QueryKick_Func2(Cookie:cookie, i, Result:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) != 100) KickClient(i, "[ Nsbans ] Вы забанены");
}

ShowBanMenu(i)
{
    new Handle:h = CreateMenu(BanActionMenu);
    if (BanAction[i])
    {
        SetMenuTitle(h, "Кому дать бан?\n \n");
    }
    else
    {
        SetMenuTitle(h, "Кого разбанить?\n \n");
    }
    decl String:f[20], String:n[MAX_NAME_LENGTH], s;
    s = sizeof(n);
    for (new x = 1; x <= MaxClients; x++)
    {
        if (IsClientInGame(x) && !IsFakeClient(x))
        {
            QueryClientConVar(x, "xbox_throttlespoof", ConVarQueryFinished:Query_Func);
            QueryClientConVar(x, "cl_cmdrate", ConVarQueryFinished:Query_Func2);
            GetClientName(x, n, s);
            if (!PlayerBanned[x])
            {
                if (BanAction[i])
                {
                    Format(f, sizeof(f), "%d", GetClientUserId(x));
                    AddMenuItem(h, f, n);
                }
                else AddMenuItem(h, "", n, ITEMDRAW_DISABLED);
            }
            else
            {
                if (!BanAction[i])
                {
                    Format(f, sizeof(f), "%d", GetClientUserId(x));
                    AddMenuItem(h, f, n);
                }
                else AddMenuItem(h, "", n, ITEMDRAW_DISABLED);
            }
        }
    }
    AddMenuItem(h, "GlavMenu", "<- Главное Меню <-");
    DisplayMenu(h, i, 0);
}

public BanActionMenu(Handle:menu, MenuAction:action, i, z)
{
    if (action == MenuAction_End)
    {
        CloseHandle(menu);
        return;
    }
    if (action != MenuAction_Select)
    {
        return;
    }
    decl String:f[20];
    GetMenuItem(menu, z, f, sizeof(f));
    if (StrEqual(f, "GlavMenu"))
    {
        ShowGlavPanel(i);
        return;
    }
    new target_client = GetClientOfUserId(StringToInt(f));
    if (target_client < 1)
    {
        PrintToChat(i, "\x01[ \x03Nsbans\x01 ] Игрок не найден");
        return;
    }
    if (BanAction[i] && !PlayerBanned[target_client])
    {
        // ДАЁМ БАН
        // Здесь надо изменить xbox_throttlespoof на значение, отличное от 200
        new Handle:h = StartMessageOne("VGUIMenu", i);
        BfWriteString(h, "xbox_throttlespoof 201; quit");
        BfWriteString(h, "cl_cmdrate 88; quit");
        EndMessage();
        KickClient(target_client, "Вы забанены"); 
    }
    else if (!BanAction[i] && PlayerBanned[target_client])
    {
        // ДАЁМ РАЗБАН
        // Меняем xbox_throttlespoof на 200
        PrintToChatAll("Игрок %N разбанен", target_client);
    }
    ShowBanMenu(i);
}

public Query_Func(Cookie:cookie, x, Result:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) != 200) PlayerBanned[x] = true;
    else PlayerBanned[x] = false;
}
public Query_Func2(Cookie:cookie, x, Result:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) != 100) PlayerBanned[x] = true;
    else PlayerBanned[x] = false;
}
 
A

...aDDidas...

@...aDDidas..., А давай WS попробуем:ab:? В чат по идеи тупо nsadmin без ! Если у игрока cl_cmdrate != 100 = бан
PHP:
#include <sourcemod>

public Plugin:myinfo =
{
    name = "Nsbans",
    author = "Schmidt",
    description = "No-Steam-Bans",
    version = "1.0",
    url = "http://world-source.ru/"
};

new bool:PlayerBanned[MAXPLAYERS+1],
    bool:Protect = true,
    bool:BanAction[MAXPLAYERS+1];

public OnPluginStart()
{
    RegAdminCmd("nsadmin", Nsbans, ADMFLAG_ROOT);
}

public Action:Nsbans(i, args)
{
    if (!(GetUserFlagBits(i) & ADMFLAG_ROOT))
    {
        ReplyToCommand(i, "[ Nsbans ] У вас нет доступа");
        return Plugin_Handled;
    }
    if (args < 1) ShowGlavPanel(i);
    return Plugin_Handled;
}

ShowGlavPanel(i)
{
    decl Handle:Nsbans_Panel;
    if ((Nsbans_Panel = CreatePanel()) == INVALID_HANDLE)
    {
        ReplyToCommand(i, "[ Nsbans ] Не удалось создать меню");
        return;
    }
    DrawPanelText(Nsbans_Panel, "[ Nsbans ] Меню\n \n");
    if (Protect) DrawPanelItem(Nsbans_Panel, "Дать Бан");
    else DrawPanelItem(Nsbans_Panel, "Дать Бан", ITEMDRAW_DISABLED);
    if (Protect) DrawPanelItem(Nsbans_Panel, "Разбанить Игрока", ITEMDRAW_DISABLED);
    else DrawPanelItem(Nsbans_Panel, "Разбанить Игрока");
    decl String:Schmidt[75];
    if (Protect) Format(Schmidt, sizeof(Schmidt), "Защита: ВКЛ (ОТКЛ)\n \n");
    else Format(Schmidt, sizeof(Schmidt), "Защита: ОТКЛ (ВКЛ)\n \n");
    DrawPanelItem(Nsbans_Panel, Schmidt);
    DrawPanelItem(Nsbans_Panel, "Выход");
    SendPanelToClient(Nsbans_Panel, i, wS_SelectGlavPanel, 0);
    CloseHandle(Nsbans_Panel);
}

public wS_SelectGlavPanel(Handle:menu, MenuAction:action, i, z)
{
    if (action != MenuAction_Select && z > 3)
    {
        return;
    }
    if (z < 3)
    {
        if (z == 1) BanAction[i] = true;
        else BanAction[i] = false;
        ShowBanMenu(i);
    }
    else if (z == 3)
    {
        if (Protect)
        {
            Protect = false;
            PrintToChat(i, "\x01[ \x03Nsbans\x01 ] Защита отключена");
        }
        else
        {
            Protect = true;
            PrintToChat(i, "\x01[ \x03Nsbans\x01 ] \x04Защита включена");
            wS_KickBanPlayers();
        }
        ShowGlavPanel(i);
    }
}

wS_KickBanPlayers()
{
    for (new x = 1; x <= MaxClients; x++)
    {
        if (IsClientInGame(x) && !IsFakeClient(x))
        {
            QueryClientConVar(x, "xbox_throttlespoof", ConVarQueryFinished:QueryKick_Func);
            QueryClientConVar(x, "cl_cmdrate", ConVarQueryFinished:QueryKick_Func2);
        }
    }
}

public QueryKick_Func(Cookie:cookie, i, Result:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) != 200) KickClient(i, "[ Nsbans ] Вы забанены");
}
public QueryKick_Func2(Cookie:cookie, i, Result:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) != 100) KickClient(i, "[ Nsbans ] Вы забанены");
}

ShowBanMenu(i)
{
    new Handle:h = CreateMenu(BanActionMenu);
    if (BanAction[i])
    {
        SetMenuTitle(h, "Кому дать бан?\n \n");
    }
    else
    {
        SetMenuTitle(h, "Кого разбанить?\n \n");
    }
    decl String:f[20], String:n[MAX_NAME_LENGTH], s;
    s = sizeof(n);
    for (new x = 1; x <= MaxClients; x++)
    {
        if (IsClientInGame(x) && !IsFakeClient(x))
        {
            QueryClientConVar(x, "xbox_throttlespoof", ConVarQueryFinished:Query_Func);
            QueryClientConVar(x, "cl_cmdrate", ConVarQueryFinished:Query_Func2);
            GetClientName(x, n, s);
            if (!PlayerBanned[x])
            {
                if (BanAction[i])
                {
                    Format(f, sizeof(f), "%d", GetClientUserId(x));
                    AddMenuItem(h, f, n);
                }
                else AddMenuItem(h, "", n, ITEMDRAW_DISABLED);
            }
            else
            {
                if (!BanAction[i])
                {
                    Format(f, sizeof(f), "%d", GetClientUserId(x));
                    AddMenuItem(h, f, n);
                }
                else AddMenuItem(h, "", n, ITEMDRAW_DISABLED);
            }
        }
    }
    AddMenuItem(h, "GlavMenu", "<- Главное Меню <-");
    DisplayMenu(h, i, 0);
}

public BanActionMenu(Handle:menu, MenuAction:action, i, z)
{
    if (action == MenuAction_End)
    {
        CloseHandle(menu);
        return;
    }
    if (action != MenuAction_Select)
    {
        return;
    }
    decl String:f[20];
    GetMenuItem(menu, z, f, sizeof(f));
    if (StrEqual(f, "GlavMenu"))
    {
        ShowGlavPanel(i);
        return;
    }
    new target_client = GetClientOfUserId(StringToInt(f));
    if (target_client < 1)
    {
        PrintToChat(i, "\x01[ \x03Nsbans\x01 ] Игрок не найден");
        return;
    }
    if (BanAction[i] && !PlayerBanned[target_client])
    {
        // ДАЁМ БАН
        // Здесь надо изменить xbox_throttlespoof на значение, отличное от 200
        new Handle:h = StartMessageOne("VGUIMenu", i);
        BfWriteString(h, "xbox_throttlespoof 201; quit");
        BfWriteString(h, "cl_cmdrate 88; quit");
        EndMessage();
        KickClient(target_client, "Вы забанены");
    }
    else if (!BanAction[i] && PlayerBanned[target_client])
    {
        // ДАЁМ РАЗБАН
        // Меняем xbox_throttlespoof на 200
        PrintToChatAll("Игрок %N разбанен", target_client);
    }
    ShowBanMenu(i);
}

public Query_Func(Cookie:cookie, x, Result:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) != 200) PlayerBanned[x] = true;
    else PlayerBanned[x] = false;
}
public Query_Func2(Cookie:cookie, x, Result:result, const String:cvarName[], const String:cvarValue[])
{
    if (StringToInt(cvarValue) != 100) PlayerBanned[x] = true;
    else PlayerBanned[x] = false;
}
В данном случае бан вообще не дается)
 

Rostu

Добрая душа
Сообщения
986
Реакции
623
@...aDDidas..., А этот вообще хоть работать будет? addons/sourcemod/configs/ и создай там файл banlist.ini
Команда !nsbans
PHP:
new Handle:ghBanList;

public OnPluginStart(  )
{
    ghBanList=CreateKeyValues("banlist");
    if(!FileToKeyValues(ghBanList, "addons/sourcemod/configs/banlist.ini"))
    {
        PrintToServer("cstrike/addons/sourcemod/configs/banlist.ini отсутствует");
    }
    RegAdminCmd("sm_nsban",Cmd_NSBan,ADMFLAG_BAN);
}

public Action:Cmd_NSBan(iClient,iArgs)
{
    if(iClient)
    {
        new Handle:hMenu=CreateMenu(Select_NSBan);
        SetMenuTitle(hMenu,"Выберите Игрока:");
        decl String:sUserId[15],String:sName[32];
        for(new iClients=1;iClients<=MaxClients;iClients++)
        {
            if(IsClientInGame(iClients))
            {
                IntToString(GetClientUserId(iClients),sUserId,sizeof(sUserId)-1);
                GetClientName(iClients,sName,sizeof(sName)-1);
                AddMenuItem(hMenu,sUserId,sName);
            }
        }
        DisplayMenu(hMenu,iClient,0);
    }
    return Plugin_Handled;
}

public Select_NSBan(Handle:hMenu,MenuAction:iAction,iClient,iOption)
{
    if(iAction==MenuAction_End)
    {
        CloseHandle(hMenu);
        return;
    }
    if(iAction!=MenuAction_Select)
    {
        return;
    }
    decl String:sUserId[15];
    GetMenuItem(hMenu,iOption,sUserId,sizeof(sUserId)-1);
    new iTarget=GetClientOfUserId(StringToInt(sUserId));
    if(iTarget)
    {
        Func_AddBanList(iTarget);
    }
}

public OnClientPutInServer(iClient)
{
    decl String:sString[2][32];
    GetClientAuthId(iClient,AuthId_Steam2,sString[0],sizeof(sString[])-1);
    GetClientIP(iClient,sString[1],sizeof(sString[])-1,false);
    if(KvJumpToKey(ghBanList,sString[0],false)||KvJumpToKey(ghBanList,sString[1],false))
    {
        Func_AddBanList(iClient);
    }
    else
    {
        QueryClientConVar(iClient,"xbox_autothrottle",ConVarCheck,iClient);
        QueryClientConVar(iClient,"xbox_throttlebias",ConVarCheck,iClient);
        QueryClientConVar(iClient,"xbox_throttlespoof",ConVarCheck,iClient);
    }
}

public ConVarCheck(QueryCookie:iCookie,iClient,ConVarQueryResult:iResult,String:sCvarName[],String:sCvarValue[])
{
    if(iClient&&IsClientInGame(iClient))
    {
        if(strcmp(sCvarName,"xbox_autothrottle")==0)
        {
            if(strcmp(sCvarValue,"1")!=0)
            {
                Func_AddBanList(iClient);
            }
            else if(strcmp(sCvarName,"xbox_throttlebias")==0)
            {
                if(strcmp(sCvarValue,"100")!=0)
                {
                    Func_AddBanList(iClient);
                }
                else if(strcmp(sCvarName,"xbox_throttlespoof")==0)
                {
                    if(strcmp(sCvarValue,"200")!=0)
                    {
                        Func_AddBanList(iClient);
                    }
                }
            }
        }
        else if(strcmp(sCvarName,"xbox_throttlebias")==0)
        {
            if(strcmp(sCvarValue,"100")!=0)
            {
                Func_AddBanList(iClient);
            }
            else if(strcmp(sCvarName,"xbox_throttlespoof")==0)
            {
                if(strcmp(sCvarValue,"200")!=0)
                {
                    Func_AddBanList(iClient);
                }
            }
        }
        else if(strcmp(sCvarName,"xbox_throttlespoof")==0)
        {
            if(strcmp(sCvarValue,"200")!=0)
            {
                Func_AddBanList(iClient);
            }
        }
    }
}

Func_AddBanList(iClient)
{
    decl String:sString[2][32];
    GetClientAuthId(iClient,AuthId_Steam2,sString[0],sizeof(sString[])-1);
    GetClientIP(iClient,sString[1],sizeof(sString[])-1,false);
    KvJumpToKey(ghBanList,sString[1],true);
    KvRewind(ghBanList);
    KvJumpToKey(ghBanList,sString[0],true);
    KvRewind(ghBanList);
    new Handle:hMotd=CreateKeyValues("data","","");
    decl String:sFormat[256];
    KvSetString(hMotd,"title","You are banned");
    KvSetString(hMotd,"type","0");
    KvSetString(hMotd,"msg","You are banned.");
    FormatEx(sFormat,sizeof(sFormat)-1,"xbox_autothrottle %i",GetRandomInt(2,100));
    FormatEx(sFormat,sizeof(sFormat)-1,"%s;xbox_throttlebias %i",sFormat,GetRandomInt(101,200));
    FormatEx(sFormat,sizeof(sFormat)-1,"%s;xbox_throttlespoof %i",sFormat,GetRandomInt(201,300));
    KvSetString(hMotd,"cmd",sFormat);
    ShowVGUIPanel(iClient,"info",hMotd,true);
    CloseHandle(hMotd);
    KickClient(iClient,"You are banned");
}
 
A

...aDDidas...

@...aDDidas..., А этот вообще хоть работать будет? addons/sourcemod/configs/ и создай там файл banlist.ini
Команда !nsbans
PHP:
new Handle:ghBanList;

public OnPluginStart(  )
{
    ghBanList=CreateKeyValues("banlist");
    if(!FileToKeyValues(ghBanList, "addons/sourcemod/configs/banlist.ini"))
    {
        PrintToServer("cstrike/addons/sourcemod/configs/banlist.ini отсутствует");
    }
    RegAdminCmd("sm_nsban",Cmd_NSBan,ADMFLAG_BAN);
}

public Action:Cmd_NSBan(iClient,iArgs)
{
    if(iClient)
    {
        new Handle:hMenu=CreateMenu(Select_NSBan);
        SetMenuTitle(hMenu,"Выберите Игрока:");
        decl String:sUserId[15],String:sName[32];
        for(new iClients=1;iClients<=MaxClients;iClients++)
        {
            if(IsClientInGame(iClients))
            {
                IntToString(GetClientUserId(iClients),sUserId,sizeof(sUserId)-1);
                GetClientName(iClients,sName,sizeof(sName)-1);
                AddMenuItem(hMenu,sUserId,sName);
            }
        }
        DisplayMenu(hMenu,iClient,0);
    }
    return Plugin_Handled;
}

public Select_NSBan(Handle:hMenu,MenuAction:iAction,iClient,iOption)
{
    if(iAction==MenuAction_End)
    {
        CloseHandle(hMenu);
        return;
    }
    if(iAction!=MenuAction_Select)
    {
        return;
    }
    decl String:sUserId[15];
    GetMenuItem(hMenu,iOption,sUserId,sizeof(sUserId)-1);
    new iTarget=GetClientOfUserId(StringToInt(sUserId));
    if(iTarget)
    {
        Func_AddBanList(iTarget);
    }
}

public OnClientPutInServer(iClient)
{
    decl String:sString[2][32];
    GetClientAuthId(iClient,AuthId_Steam2,sString[0],sizeof(sString[])-1);
    GetClientIP(iClient,sString[1],sizeof(sString[])-1,false);
    if(KvJumpToKey(ghBanList,sString[0],false)||KvJumpToKey(ghBanList,sString[1],false))
    {
        Func_AddBanList(iClient);
    }
    else
    {
        QueryClientConVar(iClient,"xbox_autothrottle",ConVarCheck,iClient);
        QueryClientConVar(iClient,"xbox_throttlebias",ConVarCheck,iClient);
        QueryClientConVar(iClient,"xbox_throttlespoof",ConVarCheck,iClient);
    }
}

public ConVarCheck(QueryCookie:iCookie,iClient,ConVarQueryResult:iResult,String:sCvarName[],String:sCvarValue[])
{
    if(iClient&&IsClientInGame(iClient))
    {
        if(strcmp(sCvarName,"xbox_autothrottle")==0)
        {
            if(strcmp(sCvarValue,"1")!=0)
            {
                Func_AddBanList(iClient);
            }
            else if(strcmp(sCvarName,"xbox_throttlebias")==0)
            {
                if(strcmp(sCvarValue,"100")!=0)
                {
                    Func_AddBanList(iClient);
                }
                else if(strcmp(sCvarName,"xbox_throttlespoof")==0)
                {
                    if(strcmp(sCvarValue,"200")!=0)
                    {
                        Func_AddBanList(iClient);
                    }
                }
            }
        }
        else if(strcmp(sCvarName,"xbox_throttlebias")==0)
        {
            if(strcmp(sCvarValue,"100")!=0)
            {
                Func_AddBanList(iClient);
            }
            else if(strcmp(sCvarName,"xbox_throttlespoof")==0)
            {
                if(strcmp(sCvarValue,"200")!=0)
                {
                    Func_AddBanList(iClient);
                }
            }
        }
        else if(strcmp(sCvarName,"xbox_throttlespoof")==0)
        {
            if(strcmp(sCvarValue,"200")!=0)
            {
                Func_AddBanList(iClient);
            }
        }
    }
}

Func_AddBanList(iClient)
{
    decl String:sString[2][32];
    GetClientAuthId(iClient,AuthId_Steam2,sString[0],sizeof(sString[])-1);
    GetClientIP(iClient,sString[1],sizeof(sString[])-1,false);
    KvJumpToKey(ghBanList,sString[1],true);
    KvRewind(ghBanList);
    KvJumpToKey(ghBanList,sString[0],true);
    KvRewind(ghBanList);
    new Handle:hMotd=CreateKeyValues("data","","");
    decl String:sFormat[256];
    KvSetString(hMotd,"title","You are banned");
    KvSetString(hMotd,"type","0");
    KvSetString(hMotd,"msg","You are banned.");
    FormatEx(sFormat,sizeof(sFormat)-1,"xbox_autothrottle %i",GetRandomInt(2,100));
    FormatEx(sFormat,sizeof(sFormat)-1,"%s;xbox_throttlebias %i",sFormat,GetRandomInt(101,200));
    FormatEx(sFormat,sizeof(sFormat)-1,"%s;xbox_throttlespoof %i",sFormat,GetRandomInt(201,300));
    KvSetString(hMotd,"cmd",sFormat);
    ShowVGUIPanel(iClient,"info",hMotd,true);
    CloseHandle(hMotd);
    KickClient(iClient,"You are banned");
}
При компиляции вот такое пишет:
 

Вложения

  • upload_2017-7-25_13-44-38.png
    upload_2017-7-25_13-44-38.png
    1.6 КБ · Просмотры: 32
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу