Плагин бана

Тема в разделе "Запросы", создана пользователем alexis75755, 4 мар 2013.

  1. alexis75755

    alexis75755

    Сообщения:
    1
    Симпатии:
    0
    Прошу очень нужна ваша помощь.... Мне нужно сделать плагин бана вот декомпил плагина кто сможет привести его в рабочее состояние помогите пожалуйста ...
    public PlVers:__version =
    {
    version = 5,
    filevers = "1.4.2",
    date = "03/03/2013",
    time = "21:43:53"
    };
    new Float:NULL_VECTOR[3];
    new String:NULL_STRING[1];
    public Extension:__ext_core =
    {
    name = "Core",
    file = "core",
    autoload = 0,
    required = 0,
    };
    new MaxClients;
    public Plugin:myinfo =
    {
    name = "Ban Subnet Ip",
    description = "",
    author = "wS / Schmidt",
    version = "1.1",
    url = "http://maksus.ru"
    };
    new Handle:g_SQL;
    new String:g_Ip[66][7];
    new Handle:g_Array;
    new g_Array_Size;
    public __ext_core_SetNTVOptional()
    {
    MarkNativeAsOptional("GetFeatureStatus");
    MarkNativeAsOptional("RequireFeature");
    MarkNativeAsOptional("AddCommandListener");
    MarkNativeAsOptional("RemoveCommandListener");
    VerifyCoreVersion();
    return 0;
    }

    Handle:SQLite_UseDatabase(String:database[], String:error[], maxlength)
    {
    new Handle:kv = 0;
    new Handle:db = 0;
    kv = CreateKeyValues("", "", "");
    KvSetString(kv, "driver", "sqlite");
    KvSetString(kv, "database", database);
    db = SQL_ConnectCustom(kv, error, maxlength, false);
    CloseHandle(kv);
    return db;
    }

    public OnPluginStart()
    {
    decl String:error[256];
    g_SQL = SQLite_UseDatabase("ban_subnet_ip", error, 256);
    if (g_SQL)
    {
    g_Array = CreateArray(28, 0);
    SQL_TQuery(g_SQL, SQL_DefCallback, "CREATE TABLE IF NOT EXISTS `ban_subnet_tab` (`ip` TEXT PRIMARY KEY)", any:0, DBPriority:0);
    SQL_TQuery(g_SQL, SQL_PackIpsToArray, "SELECT * FROM `ban_subnet_tab`", any:0, DBPriority:0);
    RegAdminCmd("bs_ban", bs_ban, 16384, "", "", 0);
    RegAdminCmd("bs_unban", bs_unban, 16384, "", "", 0);
    RegAdminCmd("bs_list", bs_list, 16384, "", "", 0);
    RegAdminCmd("bs_ips", bs_ips, 16384, "", "", 0);
    return 0;
    }
    LogError(error);
    SetFailState("Не удалось установить SQL соединение");
    return 0;
    }

    public SQL_DefCallback(Handle:owner, Handle:hndl, String:error[], data)
    {
    if (!hndl)
    {
    LogError(error);
    }
    return 0;
    }

    public OnClientPutInServer(client)
    {
    if (GetRandomInt(1, 2) == 2)
    {
    KickClient(client, "plugin test");
    return 0;
    }
    g_Ip[client][0][0][0] = 0;
    if (!IsFakeClient(client))
    {
    wS_TryKickClient(client, g_Ip[client][0][0]);
    }
    return 0;
    }

    public OnClientDisconnect_Post(client)
    {
    g_Ip[client][0][0][0] = 0;
    return 0;
    }

    wS_TryKickClient(client, String:client_ip[])
    {
    static String:ar_ip[7];
    ar_ip[0] = 0;
    new i = 0;
    while (i < g_Array_Size)
    {
    if (GetArrayString(g_Array, i, "", 28) > 0)
    {
    if (!IsClientInKickQueue(client))
    {
    KickClient(client, "Ваша подсеть \"%s\" забанена", "");
    return 0;
    }
    return 0;
    }
    i++;
    }
    return 0;
    }

    wS_TryKickBadIps(String:ar_ip[])
    {
    new i = 1;
    while (i <= MaxClients)
    {
    if (StrContains(g_Ip[0][0], ar_ip, false))
    {
    KickClient(i, "Ваша подсеть \"%s\" забанена", ar_ip);
    i++;
    }
    i++;
    }
    return 0;
    }

    public SQL_PackIpsToArray(Handle:owner, Handle:hndl, String:error[], data)
    {
    if (hndl)
    {
    decl String:ar_ip[28];
    while (SQL_FetchRow(hndl))
    {
    ar_ip[0] = 0;
    if (SQL_FetchString(hndl, 0, ar_ip, 28, 0) > 0)
    {
    PushArrayString(g_Array, ar_ip);
    }
    }
    g_Array_Size = GetArraySize(g_Array);
    return 0;
    }
    LogError(error);
    return 0;
    }

    bool:wS_GoodIp(client, String:ar_ip[])
    {
    new symbols = strlen(ar_ip);
    new i = 0;
    while (i < symbols)
    {
    if (!IsCharNumeric(ar_ip))
    {
    if (client != -1)
    {
    ReplyToCommand(client, "Неверное значение: \"%s\"", ar_ip);
    }
    return false;
    }
    i++;
    }
    return true;
    }

    public Action:bs_ban(client, args)
    {
    if (args != 1)
    {
    ReplyToCommand(client, "bs_ban \"подсеть\"");
    return Action:3;
    }
    decl String:ar_ip[28];
    GetCmdArg(1, ar_ip, 28);
    if (!wS_GoodIp(client, ar_ip))
    {
    return Action:3;
    }
    if (FindStringInArray(g_Array, ar_ip) != -1)
    {
    ReplyToCommand(client, "Подсеть '%s' и так забанена", ar_ip);
    return Action:3;
    }
    PushArrayString(g_Array, ar_ip);
    g_Array_Size += 1;
    decl String:str_query[152];
    Format(str_query, 150, "INSERT OR IGNORE INTO `ban_subnet_tab` VALUES ('%s')", ar_ip);
    SQL_TQuery(g_SQL, SQL_DefCallback, str_query, any:0, DBPriority:1);
    ReplyToCommand(client, "Подсеть '%s' забанена", ar_ip);
    wS_TryKickBadIps(ar_ip);
    return Action:3;
    }


    /* ERROR! Unrecognized opcode: dec */
    function "bs_unban" (number 11)
    public Action:bs_list(client, args)
    {
    if (g_Array_Size < 1)
    {
    ReplyToCommand(client, "Нет забаненых подсетей");
    return Action:3;
    }
    decl String:ar_ip[28];
    new i = 0;
    while (i < g_Array_Size)
    {
    if (0 < GetArrayString(g_Array, i, ar_ip, 28))
    {
    PrintToConsole(client, ar_ip);
    i++;
    }
    i++;
    }
    return Action:3;
    }

    public Action:bs_ips(client, args)
    {
    decl String:ip[28];
    new i = 1;
    while (i <= MaxClients)
    {
    if (IsClientInGame(i))
    {
    PrintToConsole(client, "%N (%s)", i, ip);
    i++;
    }
    i++;
    }
    return Action:3;
    }

     
  2. schmidt

    schmidt wS (skype: ws.css)

    Сообщения:
    188
    Симпатии:
    347
    Omg, этому чуду нужно срочно ban + kick.. Собирался купить плаг, попросил дать протестить, но взял отдекомпилил и теперь просит тут исправить.. Еще времени сколько на него потратил.. Никому теперь тест плагины так кидать не буду, слова "работает" достаточно.

    :wacko:
     
    KorDen и Konstantin нравится это.
  3. Konstantin

    Konstantin

    Сообщения:
    1.789
    Симпатии:
    767
    schmidt, не догадывался клоун, что ты и тут обитаешь! :-D
     
  4. KorDen

    KorDen Atra esterní ono thelduin!

    Сообщения:
    2.194
    Симпатии:
    1.398
    schmidt, он мне еще (и наверняка куче народу впридачу) прислал это с заголовком "Приветик умоляю помоги" - и тупо код плагина. Я так и не понял, что он от меня хотел, пока эту тему не открыл...
     
  5. koFF

    koFF

    Сообщения:
    147
    Симпатии:
    20
    Оффтоп