Преработка на плъгин за банове

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
EKOLOGA
Извън линия
Потребител
Потребител
Мнения: 89
Регистриран на: 26 Дек 2016, 04:26
Местоположение: plovdiv
Получена благодарност: 6 пъти
Обратна връзка:

Преработка на плъгин за банове

Мнение от EKOLOGA » 26 Дек 2020, 03:45

Здравейте мисълта ми е има ли възможност да се погледне кода на плъгина и да се направи така че да излиза причина за бана да е Costum по или това е цвар която трябва да се добави в самото цфг ? Доло ще сложа кода за всеки случай ако може някой да вдаде ъкал как може да стане, благодаря предварително.

Код за потвърждение: Избери целия код

new AUTHOR[36] =
{
    89, 111, 77, 97, 109, 97, 47, 76, 117, 120, 32, 38, 32, 108, 97, 110, 116, 122, 54, 57, 32, 45, 83, 113, 108, 120, 32, 98, 121, 32, 71, 105, 122, 109, 111, 0
}
new PLUGIN_NAME[8] =
{
    65, 77, 88, 66, 97, 110, 115, 0
}
new VERSION[4] =
{
    53, 46, 48, 0
}
new amxbans_version[9] =
{
    97, 109, 120, 120, 95, 53, 46, 48, 0
}
new g_MyMsgSync;
new g_LowBanMenuValues[12];
new g_HighBanMenuValues[12];
new g_coloredMenus;
new g_banReasons[7][128];
new g_menuPlayers[33][32];
new g_menuPlayersNum[33];
new g_menuPosition[33];
new g_menuOption[33];
new g_menuSettings[33];
new g_bannedPlayer;
new g_lastCustom[33][128];
new g_inCustomReason[33];
new bool:g_player_flagged[33];
new amxbans_cmd_sql;
new amxbans_debug;
new server_nick;
new ban_evenif_disconn;
new complainurl;
new show_prebanned;
new show_prebanned_num;
new max_time_to_show_preban;
new banhistmotd_url;
new show_atacbans;
new show_name_evenif_mole;
new firstBanmenuValue;
new consoleBanMax;
new max_time_gone_to_unban;
new higher_ban_time_admin;
new admin_mole_access;
new show_in_hlsw;
new show_hud_messages;
new add_mapname_in_servername;
new Handle:g_SqlX;
new g_aNum;
new g_ip[32];
new g_port[10];
new ban_motd[4096];
new Float:kick_delay = 10.00/*1092616192*/;
new g_highbantimesnum;
new g_lowbantimesnum;
new g_steamidorusername[50];
new g_ban_reason[256];
new g_ban_type[4];
new bool:g_being_banned[33];
new g_player_nick[50];
new g_unban_player_steamid[50];
new g_unban_admin_nick[100];
new g_admin_steamid[50];
new g_unban_admin_team[10];
new g_search_player_steamid[50];

bool:operator>(Float:,Float:)(Float:oper1, Float:oper2)
{
    return 0 < floatcmp(oper1, oper2);
}


replace_all(String:string[], len, String:what[], String:with[])
{
    new pos = 0;
    new var1 = contain(string, what);
    pos = var1;
    if (var1 == -1)
    {
        return 0;
    }
    new total = 0;
    new with_len = strlen(with);
    new diff = strlen(what) - with_len;
    new total_len = strlen(string);
    new temp_pos = 0;
    while (replace(string[pos], len - pos, what, with))
    {
        pos = with_len + pos;
        total_len -= diff;
        if (pos >= total_len)
        {
            return total;
        }
        else
        {
            temp_pos = contain(string[pos], what);
            if (temp_pos == -1)
            {
                return total;
            }
            else
            {
                pos = temp_pos + pos;
                total++;
            }
            return total;
        }
        return total;
    }
    return total;
}


cmd_access(id, level, cid, num)
{
    !!! Removed Phi
    new has_access = 0;
    new var1;
    if (is_dedicated_server())
    {
        var1 = 0;
    }
    else
    {
        var1 = 1;
    }
    if (var1 == id)
    {
        has_access = 1;
    }
    else
    {
        if (level == 16777216)
        {
            if (is_user_admin(id))
            {
                has_access = 1;
            }
        }
        if (level & get_user_flags(id, 0))
        {
            has_access = 1;
        }
        if (level)
        {
        }
        else
        {
            has_access = 1;
        }
    }
    if (has_access)
    {
        if (num > read_argc())
        {
            new hcmd[32];
            new hinfo[128];
            new hflag = 0;
            get_concmd(cid, hcmd, 31, hflag, hinfo, 127, level, -1);
            console_print(id, "%L:  %s %s", id, "USAGE", hcmd, hinfo);
            return 0;
        }
        return 1;
    }
    console_print(id, "%L", id, "NO_ACC_COM");
    return 0;
}

access(id, level)
{
    if (level == 16777216)
    {
        return is_user_admin(id);
    }
    return level & get_user_flags(id, 0);
}


get_configsdir(String:name[], len)
{
    return get_localinfo("amxx_configsdir", name, len);
}

AddMenuItem(String:MENU_TEXT[], String:MENU_CMD[], MENU_ACCESS, String:MENU_PLUGIN[])
{
    AddMenuItem_call(MENU_TEXT, MENU_CMD, MENU_ACCESS, MENU_PLUGIN, false);
    return 0;
}

AddMenuItem_call(String:MENU_TEXT[], String:MENU_CMD[], MENU_ACCESS, String:MENU_PLUGIN[], bool:ADD_TO_CLIENT_MENU)
{
    new pluginid = is_plugin_loaded("Menus Front-End");
    if (pluginid == -1)
    {
        log_amx("Can't add menu item \"%s\" from plugin \"%s\" to menu set because the Menus Front-End plugin itself is not loaded!", MENU_TEXT, MENU_PLUGIN);
        return 0;
    }
    new filename[64];
    new b[1];
    get_plugin(pluginid, filename, 63, b, 0, b, 0, b, 0, b, 0);
    new status;
    new var1;
    if (ADD_TO_CLIENT_MENU)
    {
        var1[0] = 996;
    }
    else
    {
        var1[0] = 1052;
    }

/ * ERROR! Unable to cast object of type 'Lysis.DSentinel' to type 'Lysis.DReturn'. * /
 function "AddMenuItem_call"
AddMenuItem_call(String:MENU_TEXT[], String:MENU_CMD[], MENU_ACCESS, String:MENU_PLUGIN[], bool:ADD_TO_CLIENT_MENU)

get_time_length(id, unitCnt, type, String:output[], outputLen)
{
    !!! Removed Phi
    if (0 < unitCnt)
    {
        new weekCnt = 0;
        new dayCnt = 0;
        new hourCnt = 0;
        new minuteCnt = 0;
        new secondCnt = 0;
        switch (type)
        {
            case 0:
            {
                secondCnt = unitCnt;
            }
            case 1:
            {
                secondCnt = unitCnt * 60;
            }
            case 2:
            {
                secondCnt = unitCnt * 3600;
            }
            case 3:
            {
                secondCnt = unitCnt * 86400;
            }
            case 4:
            {
                secondCnt = unitCnt * 604800;
            }
            default:
            {
            }
        }
        weekCnt = secondCnt / 604800;
        secondCnt -= weekCnt * 604800;
        dayCnt = secondCnt / 86400;
        secondCnt -= dayCnt * 86400;
        hourCnt = secondCnt / 3600;
        secondCnt -= hourCnt * 3600;
        minuteCnt = secondCnt / 60;
        secondCnt -= minuteCnt * 60;
        new maxElementIdx = -1;
        new timeElement[5][33];
        timeElement[0] = 1612;
        if (0 < weekCnt)
        {
            new var1;
            if (weekCnt == 1)
            {
                var1 = 1656;
            }
            else
            {
                var1 = 1728;
            }
            maxElementIdx++;
            format(timeElement[maxElementIdx], 32, "%i %L", weekCnt, id, var1);
        }
        if (0 < dayCnt)
        {
            new var2;
            if (dayCnt == 1)
            {
                var2 = 1828;
            }
            else
            {
                var2 = 1896;
            }
            maxElementIdx++;
            format(timeElement[maxElementIdx], 32, "%i %L", dayCnt, id, var2);
        }
        if (0 < hourCnt)
        {
            new var3;
            if (hourCnt == 1)
            {
                var3 = 1992;
            }
            else
            {
                var3 = 2064;
            }
            maxElementIdx++;
            format(timeElement[maxElementIdx], 32, "%i %L", hourCnt, id, var3);
        }
        if (0 < minuteCnt)
        {
            new var4;
            if (minuteCnt == 1)
            {
                var4 = 2164;
            }
            else
            {
                var4 = 2244;
            }
            maxElementIdx++;
            format(timeElement[maxElementIdx], 32, "%i %L", minuteCnt, id, var4);
        }
        if (0 < secondCnt)
        {
            new var5;
            if (secondCnt == 1)
            {
                var5 = 2352;
            }
            else
            {
                var5 = 2432;
            }
            maxElementIdx++;
            format(timeElement[maxElementIdx], 32, "%i %L", secondCnt, id, var5);
        }
        switch (maxElementIdx)
        {
            case 0:
            {
                format(output, outputLen, "%s", timeElement[0][timeElement]);
            }
            case 1:
            {
                format(output, outputLen, "%s %L %s", timeElement[0][timeElement], id, "TIME_ELEMENT_AND", 4[timeElement]);
            }
            case 2:
            {
                format(output, outputLen, "%s, %s %L %s", timeElement[0][timeElement], 4[timeElement], id, "TIME_ELEMENT_AND", 8[timeElement]);
            }
            case 3:
            {
                format(output, outputLen, "%s, %s, %s %L %s", timeElement[0][timeElement], 4[timeElement], 8[timeElement], id, "TIME_ELEMENT_AND", 12[timeElement]);
            }
            case 4:
            {
                format(output, outputLen, "%s, %s, %s, %s %L %s", timeElement[0][timeElement], 4[timeElement], 8[timeElement], 12[timeElement], id, "TIME_ELEMENT_AND", 16[timeElement]);
            }
            default:
            {
            }
        }
    }
    return 0;
}

public banmod_online(id)
{
    get_cvar_string("ip", g_ip, 31);
    new ip_port[42];
    new ip_tmp[32];
    get_user_ip(0, ip_port, 41, 0);
    strtok(ip_port, ip_tmp, 31, "", 9, 58, 0);
    if (get_pcvar_num(amxbans_debug) == 1)
    {
        server_print("[AMXBANS DEBUG] The server IP:PORT is: %s:%s", g_ip, g_port);
        log_amx("[AMXBANS DEBUG] The server IP:PORT is: %s:%s", g_ip, g_port);
    }
    new query[512];
    new data[1];
    format(query, 511, "SELECT timestamp,hostname,address,gametype,rcon,amxban_version,amxban_motd,motd_delay FROM `%s` WHERE address = '%s:%s'", "amx_serverinfo", g_ip, g_port);
    data[0] = id;
    SQL_ThreadQuery(g_SqlX, "banmod_online_", query, data, 1);
    return 0;
}

public banmod_online_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    !!! Removed Phi
    new id = data[0];
    new timestamp = get_systime(0);
    new servername[100];
    get_cvar_string("hostname", servername, 99);
    new modname[32];
    get_modname(modname, 31);
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 1);
    }
    else
    {
        replace_all(servername, 99, "\", "");
        replace_all(servername, 99, "'", "?");
        if (!SQL_NumResults(query))
        {
            if (get_pcvar_num(amxbans_debug) == 1)
            {
                server_print("AMXBANS DEBUG] INSERT INTO `%s` VALUES ('', '%i','%s', '%s:%s', '%s', '', '%s', '', '', '0')", "amx_serverinfo", timestamp, servername, g_ip, g_port, modname, amxbans_version);
                log_amx("AMXBANS DEBUG] INSERT INTO `%s` VALUES ('', '%i','%s', '%s:%s', '%s', '', '%s', '', '', '0')", "amx_serverinfo", timestamp, servername, g_ip, g_port, modname, amxbans_version);
            }
            new query[512];
            new data[1];
            format(query, 511, "INSERT INTO `%s` (timestamp, hostname, address, gametype, amxban_version, amxban_menu) VALUES ('%i', '%s', '%s:%s', '%s', '%s', '1')", "amx_serverinfo", timestamp, servername, g_ip, g_port, modname, amxbans_version);
            data[0] = id;
            SQL_ThreadQuery(g_SqlX, "banmod_online_insert", query, data, 1);
        }
        else
        {
            new kick_delay_str[10];
            SQL_ReadResult(query, 7, kick_delay_str, 10);
            if (floatstr(kick_delay_str) > 2.00/*1073741824*/)
            {
                kick_delay = floatstr(kick_delay_str);
            }
            else
            {
                kick_delay = 10.00/*1092616192*/;
            }
            if (get_pcvar_num(amxbans_debug) == 1)
            {
                server_print("AMXBANS DEBUG] UPDATE `%s` SET timestamp='%i',hostname='%s',gametype='%s',amxban_version='%s', amxban_menu='1' WHERE address = '%s:%s'", "amx_serverinfo", timestamp, servername, modname, amxbans_version, g_ip, g_port);
                log_amx("[AMXBANS DEBUG] UPDATE `%s` SET timestamp='%i',hostname='%s',gametype='%s',amxban_version='%s', amxban_menu='1' WHERE address = '%s:%s'", "amx_serverinfo", timestamp, servername, modname, amxbans_version, g_ip, g_port);
            }
            new query[512];
            new data[1];
            format(query, 511, "UPDATE `%s` SET timestamp='%i',hostname='%s',gametype='%s',amxban_version='%s', amxban_menu='1' WHERE address = '%s:%s'", "amx_serverinfo", timestamp, servername, modname, amxbans_version, g_ip, g_port);
            data[0] = id;
            SQL_ThreadQuery(g_SqlX, "banmod_online_update", query, data, 1);
        }
        if (!get_pcvar_num(amxbans_debug) == 10)
        {
            log_amx("[AMXBANS] %L", 0, "SQL_BANMOD_ONLINE", VERSION);
        }
    }
    return 0;
}

public banmod_online_insert(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 2);
    }
    return 0;
}

public banmod_online_update(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 3);
    }
    return 0;
}

public fetchReasons(id)
{
    new query[512];
    new data[1];
    format(query, 511, "SELECT reason FROM %s WHERE address = '%s:%s'", "amx_banreasons", g_ip, g_port);
    data[0] = id;
    SQL_ThreadQuery(g_SqlX, "fetchReasons_", query, data, 1);
    return 0;
}

public fetchReasons_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 5);
    }
    else
    {
        if (!SQL_NumResults(query))
        {
            server_print("[AMXBANS] %L", 0, "NO_REASONS");
            new var1 = g_banReasons;
            format(var1[0][0][var1], 127, "%L", 0, "REASON_1");
            format(g_banReasons[1][0], 127, "%L", 0, "REASON_2");
            format(g_banReasons[2][0], 127, "%L", 0, "REASON_3");
            format(g_banReasons[3][0], 127, "%L", 0, "REASON_4");
            format(g_banReasons[4][0], 127, "%L", 0, "REASON_5");
            format(g_banReasons[5][0], 127, "%L", 0, "REASON_6");
            format(g_banReasons[6][0], 127, "%L", 0, "REASON_7");
            server_print("[AMXBANS] %L", 0, "SQL_LOADED_STATIC_REASONS");
            log_amx("[AMXBANS] %L", 0, "SQL_LOADED_STATIC_REASONS");
            g_aNum = 7;
            return 1;
        }
        g_aNum = 0;
        while (SQL_MoreResults(query))
        {
            SQL_ReadResult(query, 0, g_banReasons[g_aNum][0][0], 127);
            SQL_NextRow(query);
            g_aNum += 1;
        }
        if (g_aNum == 1)
        {
            server_print("[AMXBANS] %L", 0, "SQL_LOADED_REASON");
        }
        server_print("[AMXBANS] %L", 0, "SQL_LOADED_REASONS", g_aNum);
    }
    return 1;
}

public prebanned_check(id)
{
    if (is_user_bot(id))
    {
        return 1;
    }
    new player_steamid[32];
    new player_ip[20];
    get_user_authid(id, player_steamid, 31);
    get_user_ip(id, player_ip, 19, 1);
    new query[4096];
    new data[1];
    format(query, 4096, "SELECT ban_created,admin_nick FROM `%s` WHERE ( player_id='%s' AND ban_type='S' ) OR ( player_ip='%s' AND ban_type='SI' )", "amx_banhistory", player_steamid, player_ip);
    data[0] = id;
    SQL_ThreadQuery(g_SqlX, "prebanned_check_", query, data, 1);
    return 1;
}

public prebanned_check_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    !!! Removed Phi
    new id = data[0];
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 16);
    }
    else
    {
        if (!SQL_NumResults(query))
        {
            return 1;
        }
        new admin_nick[32];
        new current_time_int = 0;
        new ban_count = 0;
        new ban_created = 0;
        new banned_days_ago = 0;
        current_time_int = get_systime(0);
        new preBanTime = get_pcvar_num(max_time_to_show_preban);
        new showAtacbans = get_pcvar_num(show_atacbans);
        while (SQL_MoreResults(query))
        {
            if (banned_days_ago > preBanTime || (containi(admin_nick, "[ATAC]") != -1 && showAtacbans))
            {
                if (get_pcvar_num(amxbans_debug) == 1 && banned_days_ago > preBanTime)
                {
                    log_amx("To OLD ban: %i > %d", banned_days_ago, preBanTime);
                }
                if (get_pcvar_num(amxbans_debug) == 1 && (containi(admin_nick, "[ATAC]") != -1 && showAtacbans))
                {
                    log_amx("Showing atacbans is off, admin: %s", admin_nick);
                }
            }
            else
            {
                ban_count++;
                if (get_pcvar_num(amxbans_debug) == 1)
                {
                    log_amx("PreBan count: %i < %d Total:%i", banned_days_ago, preBanTime, ban_count);
                }
            }
            SQL_NextRow(query);
        }
        if (!get_user_flags(id, 0) & 1 && !is_user_bot(id) && !equal("", player_steamid, 0) && ban_count >= get_pcvar_num(show_prebanned_num))
        {
            server_cmd("amx_chat %L", -1, "PLAYER_BANNED_BEFORE", name, player_steamid, ban_count);
        }
    }
    return 1;
}

public check_player(id)
{
    new player_steamid[32];
    new player_ip[20];
    get_user_authid(id, player_steamid, 31);
    get_user_ip(id, player_ip, 19, 1);
    new query[4096];
    new data[1];
    format(query, 4095, "SELECT bid,ban_created,ban_length,ban_reason,admin_nick,admin_id,admin_ip,player_nick,player_id,player_ip,server_name,server_ip,ban_type FROM `%s` WHERE ( player_id='%s' AND ban_type='S' ) OR ( player_ip='%s' AND ban_type='SI' )", "amx_bans", player_steamid, player_ip);
    data[0] = id;
    SQL_ThreadQuery(g_SqlX, "check_player_", query, data, 1);
    return 1;
}

public check_player_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    !!! Removed Phi
    new id = data[0];
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 17);
    }
    else
    {
        if (!SQL_NumResults(query))
        {
            return 1;
        }
        new ban_length[50];
        new ban_reason[255];
        new admin_nick[100];
        new admin_steamid[50];
        new admin_ip[30];
        new ban_type[4];
        new player_nick[50];
        new player_steamid[50];
        new player_ip[30];
        new server_name[100];
        new server_ip[30];
        new bid = SQL_ReadResult(query, 0);
        new ban_created = SQL_ReadResult(query, 1);
        SQL_ReadResult(query, 2, ban_length, 49);
        SQL_ReadResult(query, 3, ban_reason, 254);
        SQL_ReadResult(query, 4, admin_nick, 99);
        SQL_ReadResult(query, 5, admin_steamid, 49);
        SQL_ReadResult(query, 6, admin_ip, 29);
        SQL_ReadResult(query, 7, player_nick, 49);
        SQL_ReadResult(query, 8, player_steamid, 49);
        SQL_ReadResult(query, 9, player_ip, 29);
        SQL_ReadResult(query, 10, server_name, 99);
        SQL_ReadResult(query, 11, server_ip, 29);
        SQL_ReadResult(query, 12, ban_type, 3);
        if (get_pcvar_num(amxbans_debug) == 1)
        {
            log_amx("\nbid: %d \nwhen: %d \nlenght: %s \nreason: %s \nadmin: %s \nadminsteamID: %s \nPlayername %s \nserver: %s \nserverip: %s \nbantype: %s", bid, ban_created, ban_length, ban_reason, admin_nick, admin_steamid, player_nick, server_name, server_ip, ban_type);
        }
        if (ban_length_int && ban_created && ban_length_int + ban_created > current_time_int)
        {
            if (get_user_flags(id, 0) & 131072 || id)
            {
                show_activity = 1;
            }
            if (show_activity == 2)
            {
                client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_8", admin_nick);
            }
            if (show_activity == 1)
            {
                client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_9");
            }
            if (ban_length_int)
            {
                new cTimeLength[128];
                new iSecondsLeft = ban_length_int + ban_created - current_time_int;
                get_time_length(id, iSecondsLeft, 0, cTimeLength, 127);
                client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_12", cTimeLength);
            }
            else
            {
                client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_10");
            }
            client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_13", player_nick);
            client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_2", ban_reason);
            client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_7", complain_url);
            client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_4", player_steamid);
            client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_5", player_ip);
            client_cmd(id, "echo [AMXBANS] ===============================================");
            if (get_pcvar_num(amxbans_debug) == 1)
            {
                log_amx("[AMXBANS DEBUG] BID:<%d> Player:<%s> <%s> connected and got kicked, because of an active ban", bid, player_nick, player_steamid);
            }
            new id_str[3];
            num_to_str(id, id_str, 3);
            if (get_pcvar_num(amxbans_debug) == 1)
            {
                log_amx("[AMXBANS DEBUG] Delayed Kick-TASK ID1: <%d>  ID2: <%s>", id, id_str);
            }
            new var3 = Heap_4;
            var3[0] = 58580;
            set_task(3.50, "delayed_kick", 0, id_str, 3, var3, 0);
            return 1;
        }
        client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_11");
        new unban_created = get_systime(0);
        replace_all(player_nick, 49, "\", "");
        replace_all(player_nick, 49, "'", "?");
        replace_all(admin_nick, 99, "\", "");
        replace_all(admin_nick, 99, "'", "?");
        replace_all(ban_reason, 254, "\", "");
        replace_all(ban_reason, 254, "'", "?");
        replace_all(server_name, 99, "\", "");
        replace_all(server_name, 99, "'", "?");
        new query[512];
        new data[2];
        format(query, 511, "INSERT INTO `%s` (player_id,player_ip,player_nick,admin_id,admin_nick,admin_ip,ban_type,ban_reason,ban_created,ban_length,server_ip,server_name,unban_created,unban_reason,unban_admin_nick) VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%d','%s','%s','%s','%i','Bantime expired','amxbans')", "amx_banhistory", player_steamid, player_ip, player_nick, admin_steamid, admin_nick, admin_ip, ban_type, ban_reason, ban_created, ban_length, server_ip, server_name, unban_created);
        data[0] = id;
        data[1] = bid;
        SQL_ThreadQuery(g_SqlX, "insert_to_banhistory", query, data, 2);
        if (get_pcvar_num(amxbans_debug) == 1)
        {
            log_amx("[AMXBANS DEBUG] PRUNE BAN: INSERT INTO `%s` (VALUES('%s','%s','%s')", "amx_banhistory", player_steamid, player_nick, ban_length);
        }
    }
    return 1;
}

public insert_to_banhistory(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    new id = data[0];
    new bid = data[1];
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 18);
    }
    else
    {
        new query[512];
        new data[1];
        format(query, 511, "DELETE FROM `%s` WHERE bid='%d'", "amx_bans", bid);
        data[0] = id;
        SQL_ThreadQuery(g_SqlX, "delete_expired_ban", query, data, 1);
        if (get_pcvar_num(amxbans_debug) == 1)
        {
            log_amx("[AMXBANS DEBUG] PRUNE BAN: DELETE FROM `%s` WHERE bid='%d'", "amx_bans", bid);
        }
    }
    return 1;
}

public delete_expired_ban(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 19);
    }
    return 0;
}

public actionBanMenu(id, key)
{
    switch (key)
    {
        case 7:
        {
            if (get_higher_ban_time_admin_flag() & get_user_flags(id, 0))
            {
                g_menuOption[id]++;
                new var6 = g_menuOption[id];
                var6 = var6[0][0];
                new i = 0;
                i = 0;
                while (i < g_highbantimesnum)
                {
                    new var1;
                    if (i == g_menuOption[id][0][0])
                    {
                        new var7 = g_menuSettings[id];
                        var7 = g_HighBanMenuValues[i][0][0];
                        var1 = var7;
                        i++;
                    }
                    else
                    {
                        new var8 = g_menuOption;
                        if (var8[id][0][0] == -1)
                        {
                            new var9 = g_menuSettings[id];
                            var9 = -1;
                            var1 = var9;
                            i++;
                        }
                        var1 = var8;
                        i++;
                    }
                    i++;
                }
            }
            else
            {
                g_menuOption[id]++;
                new var10 = g_menuOption[id];
                var10 = var10[0][0];
                new i = 0;
                i = 0;
                while (i < g_lowbantimesnum)
                {
                    new var2;
                    if (i == g_menuOption[id][0][0])
                    {
                        new var11 = g_menuSettings[id];
                        var11 = g_LowBanMenuValues[i][0][0];
                        var2 = var11;
                        i++;
                    }
                    else
                    {
                        new var12 = g_menuOption;
                        if (var12[id][0][0] == -1)
                        {
                            new var13 = g_menuSettings[id];
                            var13 = -1;
                            var2 = var13;
                            i++;
                        }
                        var2 = var12;
                        i++;
                    }
                    i++;
                }
            }
            displayBanMenu(id, g_menuPosition[id][0][0]);
        }
        case 8:
        {
            new var5 = g_menuPosition[id];
            var5++;
            displayBanMenu(id, var5[0][0]);
        }
        case 9:
        {
            new var4 = g_menuPosition[id];
            var4--;
            displayBanMenu(id, var4[0][0]);
        }
        default:
        {
            g_bannedPlayer = g_menuPlayers[id][0][0][key + g_menuPosition[id][0][0] * 7];
            new var14 = g_menuSettings;
            new var3;
            if (var14[id][0][0] == -1)
            {
                flag_player(id);
                new var15 = g_menuPosition[id];
                var15 = 0;
                displayBanMenu(id, 0);
                var3 = var15;
            }
            else
            {
                displayBanMenuReason(id);
                var3 = var14;
            }
        }
    }

/ * ERROR! Unable to cast object of type 'Lysis.DSentinel' to type 'Lysis.DReturn'. * /
 function "actionBanMenu"
public actionBanMenu(id, key)

displayBanMenu(id, pos)
{
    !!! Removed Phi
    if (0 > pos)
    {
        return 0;
    }
    get_players(g_menuPlayers[id][0][0], g_menuPlayersNum[id], "", "");
    new menuBody[512];
    new b = 0;
    new i = 0;
    new name[32];
    new start = pos * 7;
    if (g_menuPlayersNum[id][0][0] <= start)
    {
        g_menuPosition[id] = 0;
        pos = 0;
        start = 0;
    }
    new len;
    new var1;
    if (g_menuPlayersNum[id][0][0])
    {
        var1 = 1;
    }
    else
    {
        var1 = 0;
    }
    new var2;
    if (g_coloredMenus)
    {
        var2[0] = 60952;
    }
    else
    {
        var2[0] = 61016;
    }
    len = format(menuBody, 511, var2, id, "BAN_MENU", pos + 1, var1 + g_menuPlayersNum[id][0][0] / 7);
    new end = start + 7;
    new keys = 640;
    new flagged[32];
    if (g_menuPlayersNum[id][0][0] < end)
    {
        end = g_menuPlayersNum[id][0][0];
    }
    new a = start;
    while (a < end)
    {
        i = g_menuPlayers[id][0][0][a];
        get_user_name(i, name, 31);
        if (g_player_flagged[i][0][0])
        {
            format(flagged, 31, "%L", id, "FLAGGED");
        }
        else
        {
            format(flagged, 31, "");
        }
        if (is_user_bot(i) || access(i, 1))
        {
            b++;
            if (g_coloredMenus)
            {
                len = format(menuBody[len], 511 - len, "\d%d. %s\w\n", b, name, flagged) + len;
                a++;
            }
            else
            {
                len = format(menuBody[len], 511 - len, "#. %s  %s\n", name, flagged) + len;
                a++;
            }
            a++;
        }
        else
        {
            keys = 1 << b | keys;
            if (is_user_admin(i))
            {
                b++;
                new var4;
                if (g_coloredMenus)
                {
                    var4[0] = 61236;
                }
                else
                {
                    var4[0] = 61312;
                }
                len = format(menuBody[len], 511 - len, var4, b, name, flagged) + len;
                a++;
            }
            b++;
            new var5;
            if (g_coloredMenus)
            {
                var5[0] = 61372;
            }
            else
            {
                var5[0] = 61440;
            }
            len = format(menuBody[len], 511 - len, var5, b, name, flagged) + len;
            a++;
        }
        a++;
    }
    new iBanLength = g_menuSettings[id][0][0];
    new cTimeLength[128];
    if (iBanLength == -1)
    {
        new var6;
        if (g_coloredMenus)
        {
            var6[0] = 61492;
        }
        else
        {
            var6[0] = 61532;
        }
        len = format(menuBody[len], 511 - len, var6, id, "FLAG_PLAYER") + len;
    }
    else
    {
        if (iBanLength)
        {
            get_time_length(id, iBanLength, 1, cTimeLength, 127);
            new var8;
            if (g_coloredMenus)
            {
                var8[0] = 61740;
            }
            else
            {
                var8[0] = 61780;
            }
            len = format(menuBody[len], 511 - len, var8, id, "BAN_FOR_MINUTES", cTimeLength) + len;
        }
        new var7;
        if (g_coloredMenus)
        {
            var7[0] = 61612;
        }
        else
        {
            var7[0] = 61652;
        }
        len = format(menuBody[len], 511 - len, var7, id, "BAN_PERMANENT") + len;
    }
    if (g_menuPlayersNum[id][0][0] != end)
    {
        new var9;
        if (pos)
        {
            var9 = 61960;
        }
        else
        {
            var9 = 61980;
        }
        len = format(menuBody[len], 511 - len, "\n9. %L...\n0. %L", id, "MORE", id, var9) + len;
        keys |= 256;
    }
    else
    {
        new var10;
        if (pos)
        {
            var10 = 62028;
        }
        else
        {
            var10 = 62048;
        }
        len = format(menuBody[len], 511 - len, "\n0. %L", id, var10) + len;
    }
    new var11;
    if (g_coloredMenus)
    {
        var11[0] = 62068;
    }
    else
    {
        var11[0] = 62168;
    }
    len = format(menuBody[len], 1023 - len, var11, VERSION) + len;
    show_menu(id, keys, menuBody, -1, "Ban Menu");
    return 0;
}

public cmdBanMenu(id, level, cid)
{
    if (!cmd_access(id, level, cid, 1))
    {
        return 1;
    }
    g_menuOption[id] = 0;
    g_menuSettings[id] = get_pcvar_num(firstBanmenuValue);
    g_menuPosition[id] = 0;
    displayBanMenu(id, 0);
    return 1;
}

public actionBanMenuReason(id, key)
{
    new var1;
    switch (key)
    {
        case 7:
        {
            g_inCustomReason[id] = 1;
            client_cmd(id, "messagemode amxbans_custombanreason");
            return 1;
        }
        case 8:
        {
            new var3 = g_lastCustom[id];
            banUser(id, var3[0][0]);
            var1 = var3;
        }
        case 9:
        {
            new var2 = g_menuPosition;
            displayBanMenu(id, var2[id][0][0]);
            var1 = var2;
        }
        default:
        {
            new var4 = g_banReasons[key];
            banUser(id, var4[0][0]);
            var1 = var4;
        }
    }
    g_menuPosition[id] = 0;
    displayBanMenu(id, 0);
    return 1;
}

displayBanMenuReason(id)
{
    !!! Removed Phi
    new menuBody[1024];
    new len;
    new var1;
    if (g_coloredMenus)
    {
        var1[0] = 62432;
    }
    else
    {
        var1[0] = 62476;
    }
    len = format(menuBody, 1023, var1, "Reason");
    new i = 0;
    while (i < g_aNum)
    {
        if (strlen(g_banReasons[i][0][0]))
        {
            len = format(menuBody[len], 1023 - len, "%d. %s\n", i + 1, g_banReasons[i][0][0]) + len;
        }
        i++;
    }
    len = format(menuBody[len], 1023 - len, "\n8. Custom\n") + len;
    if (g_lastCustom[id][0][0][0])
    {
        len = format(menuBody[len], 1023 - len, "\n9. %s\n", g_lastCustom[id][0][0]) + len;
    }
    len = format(menuBody[len], 1023 - len, "\n0. %L\n", id, "EXIT") + len;
    new var2;
    if (g_coloredMenus)
    {
        var2[0] = 62688;
    }
    else
    {
        var2[0] = 62780;
    }
    len = format(menuBody[len], 1023 - len, var2, VERSION) + len;
    new keys = 767;
    if (g_lastCustom[id][0][0][0])
    {
        keys |= 256;
    }
    show_menu(id, keys, menuBody, -1, "Ban Reason Menu");
    return 0;
}

public setCustomBanReason(id, level, cid)
{
    if (!cmd_access(id, level, cid, 1))
    {
        return 1;
    }
    new szReason[128];
    read_argv(1, szReason, 127);
    copy(g_lastCustom[id][0][0], 127, szReason);
    new var2 = g_inCustomReason;
    new var1;
    if (var2[id][0][0])
    {
        g_inCustomReason[id] = 0;
        new var3 = g_lastCustom[id];
        banUser(id, var3[0][0]);
        var1 = var3;
    }
    else
    {
        var1 = var2;
    }
    return 1;
}

banUser(id, String:banReason[])
{
    !!! Removed Phi
    if (equal("4294967295", authid2, 0) || equal("HLTV", authid2, 0) || equal("STEAM_ID_LAN", authid2, 0) || equal("VALVE_ID_LAN", authid2, 0) || equal("STEAM_ID_PENDING", authid2, 0) || equal("VALVE_ID_PENDING", authid2, 0))
    {
        new ipa[32];
        get_user_ip(player, ipa, 31, 1);
        console_cmd(id, "amx_banip %d %s %s", g_menuSettings[id], ipa, banReason);
    }
    else
    {
        console_cmd(id, "amx_ban %d %s %s", g_menuSettings[id], authid2, banReason);
    }
    return 0;
}

public actionBanhistoryMenu(id, key)
{
    !!! Removed Phi
    switch (key)
    {
        case 8:
        {
            new var2 = g_menuPosition[id];
            var2++;
            displayBanhistoryMenu(id, var2[0][0]);
        }
        case 9:
        {
            new var1 = g_menuPosition[id];
            var1--;
            displayBanhistoryMenu(id, var1[0][0]);
        }
        default:
        {
            new authid[32];
            new player = g_menuPlayers[id][0][0][key + g_menuPosition[id][0][0] * 8];
            new banhistMOTD_url[256];
            new msg[2048];
            get_user_authid(player, authid, 31);
            get_pcvar_string(banhistmotd_url, banhistMOTD_url, 255);
            format(msg, 2047, banhistMOTD_url, authid);
            show_motd(id, msg, "Banhistory");
            g_menuPosition[id] = 0;
            displayBanhistoryMenu(id, 0);
        }
    }
    return 1;
}

displayBanhistoryMenu(id, pos)
{
    !!! Removed Phi
    if (0 > pos)
    {
        return 0;
    }
    get_players(g_menuPlayers[id][0][0], g_menuPlayersNum[id], "", "");
    new menuBody[512];
    new b = 0;
    new i = 0;
    new name[32];
    new start = pos * 8;
    if (g_menuPlayersNum[id][0][0] <= start)
    {
        g_menuPosition[id] = 0;
        pos = 0;
        start = 0;
    }
    new len;
    new var1;
    if (g_menuPlayersNum[id][0][0])
    {
        var1 = 1;
    }
    else
    {
        var1 = 0;
    }
    new var2;
    if (g_coloredMenus)
    {
        var2[0] = 63428;
    }
    else
    {
        var2[0] = 63492;
    }
    len = format(menuBody, 511, var2, id, "BANHISTORY_MENU", pos + 1, var1 + g_menuPlayersNum[id][0][0] / 8);
    new end = start + 8;
    new keys = 640;
    if (g_menuPlayersNum[id][0][0] < end)
    {
        end = g_menuPlayersNum[id][0][0];
    }
    new a = start;
    while (a < end)
    {
        i = g_menuPlayers[id][0][0][a];
        get_user_name(i, name, 31);
        if (is_user_bot(i))
        {
            b++;
            if (g_coloredMenus)
            {
                len = format(menuBody[len], 511 - len, "\d%d. %s\w\n", b, name) + len;
                a++;
            }
            else
            {
                len = format(menuBody[len], 511 - len, "#. %s\n", name) + len;
                a++;
            }
            a++;
        }
        else
        {
            keys = 1 << b | keys;
            if (is_user_admin(i))
            {
                b++;
                new var3;
                if (g_coloredMenus)
                {
                    var3[0] = 63676;
                }
                else
                {
                    var3[0] = 63732;
                }
                len = format(menuBody[len], 511 - len, var3, b, name) + len;
                a++;
            }
            b++;
            new var4;
            if (g_coloredMenus)
            {
                var4[0] = 63792;
            }
            else
            {
                var4[0] = 63832;
            }
            len = format(menuBody[len], 511 - len, var4, b, name) + len;
            a++;
        }
        a++;
    }
    if (g_menuPlayersNum[id][0][0] != end)
    {
        new var5;
        if (pos)
        {
            var5 = 63968;
        }
        else
        {
            var5 = 63988;
        }
        format(menuBody[len], 511 - len, "\n9. %L...\n0. %L", id, "MORE", id, var5);
        keys |= 256;
    }
    else
    {
        new var6;
        if (pos)
        {
            var6 = 64036;
        }
        else
        {
            var6 = 64056;
        }
        format(menuBody[len], 511 - len, "\n0. %L", id, var6);
    }
    show_menu(id, keys, menuBody, -1, "Banhistory Menu");
    return 0;
}

public cmdBanhistoryMenu(id, level, cid)
{
    if (!cmd_access(id, level, cid, 1))
    {
        return 1;
    }
    g_menuPosition[id] = 0;
    displayBanhistoryMenu(id, 0);
    return 1;
}

flag_player(id)
{
    new player = g_bannedPlayer;
    new name[32];
    get_user_name(player, name, 31);
    if (!g_player_flagged[player][0][0])
    {
        g_player_flagged[player] = 1;
        client_print(id, print_chat, "[AMXBANS] %L", -1, "FLAGG_MESS", name);
    }
    else
    {
        g_player_flagged[player] = 0;
        client_print(id, print_chat, "[AMXBANS] %L", -1, "UN_FLAGG_MESS", name);
    }
    return 1;
}

public cmdBan(id, level, cid)
{
    !!! Removed Phi
    if (!cmd_access(id, level, cid, 3))
    {
        return 1;
    }
    new bool:serverCmd = 0;
    if (!id)
    {
        serverCmd = 1;
    }
    if (!is_str_num(ban_length) || read_argc() < 4)
    {
        client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_BAN_SYNTAX");
        return 1;
    }
    new length1 = strlen(ban_length);
    new length2 = strlen(steamidorusername);
    new length = length2 + length1;
    length += 2;
    new reason[128];
    read_args(reason, 127);
    format(g_ban_reason, 255, "%s", reason[length]);
    replace_all(g_ban_reason, 255, "\", "");
    replace_all(g_ban_reason, 255, "'", "?");
    new iBanLength = str_to_num(ban_length);
    new cTimeLength[128];
    if (0 < iBanLength)
    {
        get_time_length(id, iBanLength, 1, cTimeLength, 127);
    }
    else
    {
        format(cTimeLength, 127, "%L", -1, "TIME_ELEMENT_PERMANENTLY");
    }
    if (!get_higher_ban_time_admin_flag() & get_user_flags(id, 0) && iBanLength)
    {
        client_print(id, print_console, "[AMXBANS] %L", -1, "NOT_BAN_PERMANENT");
        return 1;
    }
    if (!get_higher_ban_time_admin_flag() & get_user_flags(id, 0) && iBanLength > get_pcvar_num(consoleBanMax))
    {
        client_print(id, print_console, "[AMXBANS] %L", -1, "BAN_MAX", get_pcvar_num(consoleBanMax));
        return 1;
    }
    new player = locate_player(id, steamidorusername);
    if (player == -1)
    {
        return 1;
    }
    if (g_being_banned[player][0][0])
    {
        if (get_pcvar_num(amxbans_debug) == 1)
        {
            log_amx("[AMXBANS DEBUG Blocking doubleban(g_being_banned)] Playerid: %d BanLenght: %s Reason: %s", player, ban_length, g_ban_reason);
        }
        return 1;
    }
    g_being_banned[player] = 1;
    if (get_pcvar_num(amxbans_debug) == 1)
    {
        log_amx("[cmdBan function 1]Playerid: %d", player);
    }
    new player_steamid[50];
    new player_ip[30];
    if (player)
    {
        get_user_authid(player, player_steamid, 49);
        get_user_ip(player, player_ip, 29, 1);
    }
    else
    {
        if (contain(steamidorusername, "STEAM_") != -1 && get_pcvar_num(ban_evenif_disconn) == 1)
        {
            format(player_steamid, 49, "%s", steamidorusername);
            format(player_ip, 29, "unknown_%s", player_steamid);
            if (equal(steamidorusername, "", 0))
            {
                if (serverCmd)
                {
                    server_print("[AMXXBANS] SteamID %s is already being banned", g_steamidorusername);
                }
                else
                {
                    console_print(id, "[AMXXBANS] SteamID %s is already being banned", g_steamidorusername);
                }
                if (get_pcvar_num(amxbans_debug) == 1)
                {
                    log_amx("[AMXXBANS DEBUG] SteamID %s is already being banned", g_steamidorusername);
                }
                return 1;
            }
            format(g_steamidorusername, 49, "%s", steamidorusername);
        }
        if (serverCmd)
        {
            server_print("[AMXXBANS] The Player %s was not found", g_steamidorusername);
        }
        else
        {
            console_print(id, "[AMXXBANS] The Player %s was not found", g_steamidorusername);
        }
        if (get_pcvar_num(amxbans_debug) == 1)
        {
            log_amx("[AMXXBANS DEBUG] Player %s could not be found", g_steamidorusername);
        }
        return 1;
    }
    if (equal("4294967295", player_steamid, 0) || equal("HLTV", player_steamid, 0) || equal("STEAM_ID_LAN", player_steamid, 0) || equal("VALVE_ID_LAN", player_steamid, 0) || equal("VALVE_ID_PENDING", player_steamid, 0) || equal("STEAM_ID_PENDING", player_steamid, 0))
    {
        new var6 = g_ban_type;
        var6[0] = 66772;
        player_steamid[0] = 66784;
    }
    new query[1024];
    if (equal("", "S", 0))
    {
        format(query, 1023, "SELECT player_id FROM %s WHERE player_id='%s'", "amx_bans", player_steamid);
        if (get_pcvar_num(amxbans_debug) == 1)
        {
            log_amx("[AMXBANS DEBUG cmdBan] Banned a player by SteamID");
        }
    }
    else
    {
        format(query, 1023, "SELECT player_ip FROM %s WHERE player_ip='%s'", "amx_bans", player_ip);
        if (get_pcvar_num(amxbans_debug) == 1)
        {
            log_amx("[AMXBANS DEBUG cmdBan] Banned a player by IP/steamID");
        }
    }
    new data[3];
    data[0] = id;
    data[1] = player;
    data[2] = iBanLength;
    SQL_ThreadQuery(g_SqlX, "cmd_ban_", query, data, 3);
    return 1;
}

public cmd_ban_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    !!! Removed Phi
    new id = data[0];
    new player = data[1];
    new iBanLength = data[2];
    if (get_pcvar_num(amxbans_debug) == 1)
    {
        log_amx("[cmdBan function 2]Playerid: %d", player);
    }
    new bool:serverCmd = 0;
    if (!id)
    {
        serverCmd = 1;
    }
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 6);
    }
    else
    {
        new player_steamid[50];
        new player_ip[30];
        new player_nick[50];
        if (!SQL_NumResults(query))
        {
            if (player)
            {
                get_user_authid(player, player_steamid, 49);
                get_user_name(player, player_nick, 49);
                get_user_ip(player, player_ip, 29, 1);
                replace_all(player_nick, 49, "\", "");
                replace_all(player_nick, 49, "'", "?");
            }
            else
            {
                if (contain("", "STEAM_") != -1 && get_pcvar_num(ban_evenif_disconn) == 1)
                {
                    format(player_steamid, 49, "%s", g_steamidorusername);
                    format(player_nick, 49, "unknown_%s", player_steamid);
                    format(player_ip, 29, "unknown_%s", player_steamid);
                }
                if (serverCmd)
                {
                    server_print("[AMXXBANS] The Player %s was not found", g_steamidorusername);
                }
                else
                {
                    console_print(id, "[AMXXBANS] The Player %s was not found", g_steamidorusername);
                }
                if (get_pcvar_num(amxbans_debug) == 1)
                {
                    log_amx("[AMXXBANS DEBUG] Player %s could not be found", g_steamidorusername);
                }
                return 1;
            }
            new admin_nick[100];
            new admin_steamid[50];
            new admin_ip[20];
            get_user_name(id, admin_nick, 99);
            get_user_ip(id, admin_ip, 19, 1);
            replace_all(admin_nick, 99, "\", "");
            replace_all(admin_nick, 99, "'", "?");
            if (!serverCmd)
            {
                get_user_authid(id, admin_steamid, 49);
                if (get_pcvar_num(amxbans_debug) == 1)
                {
                    log_amx("[AMXBANS DEBUG cmdBan] Adminsteamid: %s, Servercmd: %s", admin_steamid, serverCmd);
                }
            }
            else
            {
                admin_steamid[0] = 68712;
                new servernick[100];
                get_pcvar_string(server_nick, servernick, 99);
                if (strlen(servernick))
                {
                    admin_nick[0] = servernick;
                }
            }
            if (contain("", "[HLGUARD]") != -1)
            {
                admin_nick[0] = 68756;
            }
            if (contain("", "Max Team Kill Violation") != -1)
            {
                admin_nick[0] = 68892;
            }
            if (get_pcvar_num(amxbans_debug) == 1)
            {
                log_amx("[AMXBANS DEBUG cmdBan] Admin nick: %s, Admin userid: %d", admin_nick, get_user_userid(id));
            }
            new server_name[100];
            get_cvar_string("hostname", server_name, 99);
            new ban_created = get_systime(0);
            if (get_pcvar_num(add_mapname_in_servername) == 1)
            {
                new mapname[32];
                new pre[4];
                new post[4];
                get_mapname(mapname, 31);
                pre[0] = 69180;
                post[0] = 69192;
                add(server_name, 255, pre, 0);
                add(server_name, 255, mapname, 0);
                add(server_name, 255, post, 0);
            }
            if (equal("4294967295", player_steamid, 0) || equal("HLTV", player_steamid, 0) || equal("STEAM_ID_LAN", player_steamid, 0) || equal("VALVE_ID_LAN", player_steamid, 0) || equal("VALVE_ID_PENDING", player_steamid, 0) || equal("STEAM_ID_PENDING", player_steamid, 0))
            {
                new var3 = g_ban_type;
                var3[0] = 69532;
                player_steamid[0] = 69544;
            }
            new query[512];
            format(query, 511, "INSERT INTO `%s` (player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,ban_created,ban_length,server_name,server_ip) VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%i','%s','%s','%s:%s')", "amx_bans", player_steamid, player_ip, player_nick, admin_ip, admin_steamid, admin_nick, g_ban_type, g_ban_reason, ban_created, BanLength, server_name, g_ip, g_port);
            new data[3];
            data[0] = id;
            data[1] = player;
            data[2] = iBanLength;
            SQL_ThreadQuery(g_SqlX, "insert_bandetails", query, data, 3);
        }
        else
        {
            if (serverCmd)
            {
                log_message("[AMXBANS] %L", 0, "ALREADY_BANNED", player_steamid, player_ip);
            }
            else
            {
                client_print(id, print_console, "[AMXBANS] %L", -1, "ALREADY_BANNED", player_steamid, player_ip);
            }
            g_being_banned[0] = 0;
        }
    }
    return 1;
}

public insert_bandetails(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    new id = data[0];
    new player = data[1];
    new iBanLength = data[2];
    if (get_pcvar_num(amxbans_debug) == 1)
    {
        log_amx("[cmdBan function 4]Playerid: %d", player);
    }
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 7);
    }
    else
    {
        new player_steamid[50];
        new player_ip[30];
        get_user_authid(player, player_steamid, 49);
        get_user_ip(player, player_ip, 29, 1);
        if (get_pcvar_num(amxbans_debug) == 1)
        {
            log_amx("[cmdBan function 4]PlayerSteamid: %s,PlayerIp: %s, BanType: %s", player_steamid, player_ip, g_ban_type);
        }
        new query[512];
        if (equal("", "S", 0))
        {
            format(query, 511, "SELECT bid FROM `%s` WHERE player_id='%s' AND player_ip='%s' AND ban_type='%s'", "amx_bans", player_steamid, player_ip, g_ban_type);
        }
        else
        {
            format(query, 511, "SELECT bid FROM `%s` WHERE player_ip='%s' AND ban_type='%s'", "amx_bans", player_ip, g_ban_type);
        }
        new data[3];
        data[0] = id;
        data[1] = player;
        data[2] = iBanLength;
        SQL_ThreadQuery(g_SqlX, "select_bid", query, data, 3);
    }
    return 1;
}

public select_bid(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    new id = data[0];
    new player = data[1];
    new iBanLength = data[2];
    if (get_pcvar_num(amxbans_debug) == 1)
    {
        log_amx("[cmdBan function 5]Playerid: %d", player);
    }
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 8);
    }
    else
    {
        new bid = 0;
        if (!SQL_NumResults(query))
        {
            bid = 0;
        }
        else
        {
            bid = SQL_ReadResult(query, 0);
        }
        if (get_pcvar_num(amxbans_debug) == 1)
        {
            log_amx("[cmdBan function 5]Bid: %d", bid);
        }
        new query[512];
        format(query, 511, "SELECT amxban_motd FROM `%s` WHERE address = '%s:%s'", "amx_serverinfo", g_ip, g_port);
        new data[4];
        data[0] = id;
        data[1] = player;
        data[2] = bid;
        data[3] = iBanLength;
        SQL_ThreadQuery(g_SqlX, "select_amxbans_motd", query, data, 4);
    }
    return 1;
}

public select_amxbans_motd(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    !!! Removed Phi
    new id = data[0];
    new player = data[1];
    new bid = data[2];
    new iBanLength = data[3];
    if (get_pcvar_num(amxbans_debug) == 1)
    {
        log_amx("[cmdBan function 6]Playerid: %d, Bid: %d", player, bid);
    }
    new bool:serverCmd = 0;
    if (!id)
    {
        serverCmd = 1;
    }
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 9);
    }
    else
    {
        new player_steamid[50];
        new player_ip[30];
        new player_nick[50];
        get_user_authid(player, player_steamid, 49);
        get_user_name(player, player_nick, 49);
        get_user_ip(player, player_ip, 29, 1);
        replace_all(player_nick, 49, "\", "");
        replace_all(player_nick, 49, "'", "?");
        new amxban_motd_url[256];
        if (!SQL_NumResults(query))
        {
            copy(amxban_motd_url, 256, "0");
        }
        else
        {
            SQL_ReadResult(query, 0, amxban_motd_url, 256);
        }
        new admin_team[11];
        new admin_steamid[50];
        new admin_nick[100];
        get_user_team(id, admin_team, 10);
        get_user_authid(id, admin_steamid, 49);
        get_user_name(id, admin_nick, 99);
        replace_all(admin_nick, 99, "\", "");
        replace_all(admin_nick, 99, "'", "?");
        new cTimeLengthPlayer[128];
        new cTimeLengthServer[128];
        if (0 < iBanLength)
        {
            get_time_length(player, iBanLength, 1, cTimeLengthPlayer, 127);
            get_time_length(0, iBanLength, 1, cTimeLengthServer, 127);
        }
        else
        {
            format(cTimeLengthPlayer, 127, "%L", -1, "TIME_ELEMENT_PERMANENTLY");
            format(cTimeLengthServer, 127, "%L", 0, "TIME_ELEMENT_PERMANENTLY");
        }
        if ((get_admin_mole_access_flag() & get_user_flags(id, 0) || id) && get_pcvar_num(show_name_evenif_mole))
        {
            show_activity = 1;
        }
        if (player)
        {
            new complain_url[256];
            get_pcvar_string(complainurl, complain_url, 255);
            client_print(player, print_console, "[AMXBANS] ===============================================");
            if (show_activity == 2)
            {
                client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_6", admin_nick);
                client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_7", complain_url);
                format(ban_motd, 4095, "%L", -1, "MSG_MOTD_2", g_ban_reason, cTimeLengthPlayer, player_steamid, admin_nick);
            }
            else
            {
                client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_1");
                client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_7", complain_url);
                format(ban_motd, 4095, "%L", -1, "MSG_MOTD_1", g_ban_reason, cTimeLengthPlayer, player_steamid);
            }
            client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_2", g_ban_reason);
            client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_3", cTimeLengthPlayer);
            client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_4", player_steamid);
            client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_5", player_ip);
            client_print(player, print_console, "[AMXBANS] ===============================================");
            new msg[4096];
            new bidstr[10];
            num_to_str(bid, bidstr, 9);
            if (get_pcvar_num(amxbans_debug) == 1)
            {
                log_amx("[cmdBan function 6.2]Bidstr: %s URL= %s Kickdelay:%f", bidstr, amxban_motd_url, kick_delay);
            }
            if (equal(amxban_motd_url, "", 0))
            {
                format(msg, 4095, ban_motd);
            }
            else
            {
                format(msg, 4095, amxban_motd_url, bidstr);
            }
            new motdTitle[19];
            motdTitle[0] = 74316;
            add(motdTitle, 255, "5.0", 0);
            show_motd(player, msg, motdTitle);
            new id_str[3];
            num_to_str(player, id_str, 3);
            new var8 = Heap_4;
            var8[0] = 58580;
            set_task(kick_delay, "delayed_kick", 1, id_str, 3, var8, 0);
        }
        else
        {
            if (contain("", "STEAM_") != -1 && get_pcvar_num(ban_evenif_disconn) == 1)
            {
                format(player_steamid, 49, "%s", g_steamidorusername);
                format(player_nick, 49, "unknown_%s", player_steamid);
                format(player_ip, 29, "unknown_%s", player_steamid);
            }
            if (serverCmd)
            {
                server_print("[AMXXBANS] The Player %s was not found", g_steamidorusername);
            }
            else
            {
                console_print(id, "[AMXXBANS] The Player %s was not found", g_steamidorusername);
            }
            if (get_pcvar_num(amxbans_debug) == 1)
            {
                log_amx("[AMXXBANS DEBUG] Player %s could not be found", g_steamidorusername);
            }
            return 1;
        }
        if (equal("", "S", 0))
        {
            if (serverCmd)
            {
                log_message("[AMXBANS] %L", -1, "STEAMID_BANNED_SUCCESS_IP_LOGGED", player_steamid);
            }
            else
            {
                client_print(id, print_console, "[AMXBANS] %L", -1, "STEAMID_BANNED_SUCCESS_IP_LOGGED", player_steamid);
            }
        }
        else
        {
            if (serverCmd)
            {
                log_message("[AMXBANS] %L", -1, "STEAMID_IP_BANNED_SUCCESS");
            }
            client_print(id, print_console, "[AMXBANS] %L", -1, "STEAMID_IP_BANNED_SUCCESS");
        }
        if (serverCmd)
        {
            admin_steamid[0] = 75756;
            admin_team[0] = 75760;
        }
        if (0 < iBanLength)
        {
            log_amx("%L", 0, "BAN_LOG", admin_nick, get_user_userid(id), admin_steamid, admin_team, player_nick, player_steamid, cTimeLengthServer, iBanLength, g_ban_reason);
            if (get_pcvar_num(show_in_hlsw) == 1)
            {
                log_message("\"%s<%d><%s><%s>\" triggered \"amx_chat\" (text \"%L\")", admin_nick, get_user_userid(id), admin_steamid, admin_team, 0, "BAN_CHATLOG", player_nick, player_steamid, cTimeLengthServer, iBanLength, g_ban_reason);
            }
        }
        else
        {
            log_amx("%L", 0, "BAN_LOG_PERM", admin_nick, get_user_userid(id), admin_steamid, admin_team, player_nick, player_steamid, g_ban_reason);
            if (get_pcvar_num(show_in_hlsw) == 1)
            {
                log_message("\"%s<%d><%s><%s>\" triggered \"amx_chat\" (text \"%L\")", admin_nick, get_user_userid(id), admin_steamid, admin_team, 0, "BAN_CHATLOG_PERM", player_nick, player_steamid, g_ban_reason);
            }
        }
        new message[192];
        if (show_activity == 1)
        {
            if (0 < iBanLength)
            {
                new playerCount = 0;
                new idx = 0;
                new players[32];
                get_players(players, playerCount, "", "");
                idx = 0;
                while (idx < playerCount)
                {
                    if (is_user_hltv(players[idx]) || is_user_bot(players[idx]))
                    {
                    }
                    else
                    {
                        get_time_length(players[idx], iBanLength, 1, cTimeLengthPlayer, 127);
                        format(message, 191, "%L", players[idx], "PUBLIC_BAN_ANNOUNCE", player_nick, cTimeLengthPlayer, g_ban_reason);
                        if (get_pcvar_num(show_hud_messages) == 1)
                        {
                            set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.00, 10.00, 0.50, 0.15, -1);
                            ShowSyncHudMsg(players[idx], g_MyMsgSync, "%s", message);
                        }
                        client_print(players[idx], print_chat, "%s", message);
                        client_print(players[idx], print_console, "%s", message);
                    }
                    idx++;
                }
            }
            new playerCount = 0;
            new idx = 0;
            new players[32];
            get_players(players, playerCount, "", "");
            idx = 0;
            while (idx < playerCount)
            {
                if (is_user_hltv(players[idx]) || is_user_bot(players[idx]))
                {
                }
                else
                {
                    get_time_length(players[idx], iBanLength, 1, cTimeLengthPlayer, 127);
                    format(message, 191, "%L", players[idx], "PUBLIC_BAN_ANNOUNCE_PERM", player_nick, g_ban_reason);
                    if (get_pcvar_num(show_hud_messages) == 1)
                    {
                        set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.00, 10.00, 0.50, 0.15, -1);
                        ShowSyncHudMsg(players[idx], g_MyMsgSync, "%s", message);
                    }
                    client_print(players[idx], print_chat, "%s", message);
                    client_print(players[idx], print_console, "%s", message);
                }
                idx++;
            }
        }
        if (show_activity == 2)
        {
            if (0 < iBanLength)
            {
                new playerCount = 0;
                new idx = 0;
                new players[32];
                get_players(players, playerCount, "", "");
                idx = 0;
                while (idx < playerCount)
                {
                    if (is_user_hltv(players[idx]) || is_user_bot(players[idx]))
                    {
                    }
                    else
                    {
                        get_time_length(players[idx], iBanLength, 1, cTimeLengthPlayer, 127);
                        format(message, 191, "%L", players[idx], "PUBLIC_BAN_ANNOUNCE_2", player_nick, cTimeLengthPlayer, g_ban_reason, admin_nick);
                        if (get_pcvar_num(show_hud_messages) == 1)
                        {
                            set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.00, 10.00, 0.50, 0.15, -1);
                            ShowSyncHudMsg(players[idx], g_MyMsgSync, "%s", message);
                        }
                        client_print(players[idx], print_chat, "%s", message);
                        client_print(players[idx], print_console, "%s", message);
                    }
                    idx++;
                }
            }
            new playerCount = 0;
            new idx = 0;
            new players[32];
            get_players(players, playerCount, "", "");
            idx = 0;
            while (idx < playerCount)
            {
                if (is_user_hltv(players[idx]) || is_user_bot(players[idx]))
                {
                }
                else
                {
                    get_time_length(players[idx], iBanLength, 1, cTimeLengthPlayer, 127);
                    format(message, 191, "%L", players[idx], "PUBLIC_BAN_ANNOUNCE_2_PERM", player_nick, g_ban_reason, admin_nick);
                    if (get_pcvar_num(show_hud_messages) == 1)
                    {
                        set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.00, 10.00, 0.50, 0.15, -1);
                        ShowSyncHudMsg(players[idx], g_MyMsgSync, "%s", message);
                    }
                    client_print(players[idx], print_chat, "%s", message);
                    client_print(players[idx], print_console, "%s", message);
                }
                idx++;
            }
        }
        if (get_pcvar_num(amxbans_cmd_sql) == 1)
        {
            new query[512];
            new data[1];
            new command[16];
            command[0] = 76956;
            new stime[32];
            get_time("%Y-%m-%d %H:%M:%S", stime, 31);
            format(query, 511, "INSERT INTO `admincommands` (authid,name,authid2,name2,value,command,reason,stime) values('%s','%s','%s','%s','%i','%s','%s','%s')", admin_steamid, admin_nick, player_steamid, player_nick, iBanLength, command, g_ban_reason, stime);
            data[0] = id;
            SQL_ThreadQuery(g_SqlX, "insert_ban_cmd", query, data, 1);
        }
    }
    return 1;
}

public insert_ban_cmd(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 12);
    }
    return 1;
}

public cmdUnBan(id, level, cid)
{
    if (!cmd_access(id, level, cid, 3))
    {
        return 1;
    }
    read_args(g_unban_player_steamid, 50);
    trim(g_unban_player_steamid);
    if (contain("", "STEAM_") == -1)
    {
        client_print(id, print_console, "[AMXBANS] %L", -1, "UNABAN_STEAMID_ONLY");
        return 1;
    }
    new query[512];
    new data[1];
    format(query, 511, "SELECT bid,ban_created,ban_length,ban_reason,admin_nick,admin_id,player_nick,player_ip,player_id,ban_type,server_ip,server_name FROM `%s` WHERE player_id='%s'", "amx_bans", g_unban_player_steamid);
    data[0] = id;
    SQL_ThreadQuery(g_SqlX, "cmd_unban_select", query, data, 1);
    return 1;
}

public cmd_unban_select(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    !!! Removed Phi
    new id = data[0];
    new bool:serverCmd = 0;
    if (!id)
    {
        serverCmd = 1;
    }
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 11);
    }
    else
    {
        if (!SQL_NumResults(query))
        {
            client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_NORESULT", g_unban_player_steamid);
            server_print("[AMXBANS] %L", -1, "AMX_FIND_NORESULT", g_unban_player_steamid);
            return 1;
        }
        if (banned_minutes_ago > get_pcvar_num(max_time_gone_to_unban) && !get_higher_ban_time_admin_flag() & get_user_flags(id, 0))
        {
            client_print(id, print_console, "[AMXBANS] %L", -1, "UNBAN_TO_OLD_BAN", banned_ago_str);
            client_print(id, print_console, "[AMXBANS] %L", -1, "UNBAN_TO_OLD_BAN2", banned_ago_str2);
            return 1;
        }
        client_print(id, print_console, " ");
        client_print(id, print_console, "[AMXBANS] =================");
        client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, g_player_nick);
        client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, g_admin_steamid, ban_reason);
        client_print(id, print_console, "[AMXBANS] =================");
        client_print(id, print_console, " ");
        server_print(" ");
        server_print("[AMXBANS] =================");
        server_print("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, g_player_nick);
        server_print("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, g_admin_steamid, ban_reason);
        server_print("[AMXBANS] =================");
        server_print(" ");
        new unban_admin_steamid[32];
        if (!serverCmd)
        {
            get_user_authid(id, unban_admin_steamid, 31);
            get_user_team(id, g_unban_admin_team, 9);
            get_user_name(id, g_unban_admin_nick, 99);
        }
        else
        {
            unban_admin_steamid[0] = 80120;
            new var2 = g_unban_admin_team;
            var2[0] = 80124;
            new servernick[100];
            get_pcvar_string(server_nick, servernick, 99);
            if (strlen(servernick))
            {
                new var3 = g_unban_admin_nick;
                var3[0] = servernick;
            }
            else
            {
                get_cvar_string("hostname", g_unban_admin_nick, 99);
            }
        }
        new unban_created = get_systime(0);
        new query[512];
        format(query, 511, "INSERT INTO `%s` (player_id,player_ip,player_nick,admin_id,admin_nick,ban_type,ban_reason,ban_created,ban_length,server_ip,server_name,unban_created,unban_reason,unban_admin_nick) VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%i','UnBanned in Game','%s %s')", "amx_banhistory", g_unban_player_steamid, player_ip, g_player_nick, g_admin_steamid, admin_nick, ban_type, ban_reason, ban_created, ban_length, server_ip, server_name, unban_created, g_unban_admin_nick, unban_admin_steamid);
        new data[2];
        data[0] = id;
        data[1] = bid;
        SQL_ThreadQuery(g_SqlX, "cmd_unban_insert", query, data, 2);
        if (get_pcvar_num(amxbans_debug) == 1)
        {
            log_amx("[AMXBANS DEBUG] UNBAN IN GAME: INSERT INTO `%s` (VALUES('%s','%s','%s', '%s')", "amx_banhistory", g_unban_player_steamid, g_player_nick, ban_length, g_unban_admin_nick);
        }
    }
    return 1;
}

public cmd_unban_insert(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    new id = data[0];
    new bid = data[1];
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 12);
    }
    else
    {
        new query[512];
        new data[1];
        format(query, 511, "DELETE FROM `%s` WHERE bid=%d", "amx_bans", bid);
        data[0] = id;
        SQL_ThreadQuery(g_SqlX, "cmd_unban_delete_and_print", query, data, 1);
        if (get_pcvar_num(amxbans_debug) == 1)
        {
            log_amx("[AMXBANS DEBUG] UNBAN IN GAME: DELETE FROM `%s` WHERE bid=%d", "amx_bans", bid);
        }
    }
    return 1;
}

public cmd_unban_delete_and_print(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    !!! Removed Phi
    new id = data[0];
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 13);
    }
    else
    {
        log_amx("%L", 0, "UNBAN_LOG", g_unban_admin_nick, get_user_userid(id), g_admin_steamid, g_unban_admin_team, g_player_nick, g_unban_player_steamid);
        if (get_pcvar_num(show_in_hlsw) == 1)
        {
            log_message("\"%s<%d><%s><%s>\" triggered \"amx_chat\" (text \"%L\")", g_unban_admin_nick, get_user_userid(id), g_admin_steamid, g_unban_admin_team, 0, "UNBAN_CHATLOG", g_player_nick, g_unban_player_steamid);
        }
        if ((get_admin_mole_access_flag() & get_user_flags(id, 0) || id) && get_pcvar_num(show_name_evenif_mole))
        {
            show_activity = 1;
        }
        if (show_activity == 1)
        {
            client_print(0, print_chat, "%L", -1, "PUBLIC_UNBAN_ANNOUNCE", g_player_nick);
        }
        if (show_activity == 2)
        {
            client_print(0, print_chat, "%L", -1, "PUBLIC_UNBAN_ANNOUNCE_2", g_player_nick, g_unban_admin_nick);
        }
        client_print(id, print_console, " ");
        client_print(id, print_console, "[AMXBANS] =================");
        client_print(id, print_console, "%L", -1, "PUBLIC_UNBAN_ANNOUNCE", g_player_nick);
        client_print(id, print_console, "[AMXBANS] =================");
        client_print(id, print_console, " ");
        server_print(" ");
        server_print("[AMXBANS] =================");
        server_print("[AMXBANS] %L", 0, "PUBLIC_UNBAN_ANNOUNCE", g_player_nick);
        server_print("[AMXBANS] =================");
        server_print(" ");
    }
    return 1;
}

public amx_find(id, level, cid)
{
    if (!cmd_access(id, level, cid, 3))
    {
        return 1;
    }
    read_args(g_search_player_steamid, 50);
    trim(g_search_player_steamid);
    new query[512];
    new data[2];
    format(query, 511, "SELECT bid,ban_created,ban_length,ban_reason,admin_nick,admin_id,player_nick FROM `%s` WHERE player_id='%s'", "amx_bans", g_search_player_steamid);
    data[0] = id;
    SQL_ThreadQuery(g_SqlX, "amx_find_", query, data, 1);
    return 1;
}

public amx_find_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    !!! Removed Phi
    new id = data[0];
    new bool:serverCmd = 0;
    if (!id)
    {
        serverCmd = 1;
    }
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 14);
    }
    else
    {
        new bid[20];
        new ban_created[50];
        new ban_length[50];
        new ban_reason[255];
        new admin_nick[100];
        new admin_steamid[50];
        new player_nick[100];
        new remaining[128];
        new ban_created_int = 0;
        new ban_length_int = 0;
        new current_time_int = 0;
        new ban_left = 0;
        if (!SQL_NumResults(query))
        {
            if (serverCmd)
            {
                log_message("[AMXBANS] %L", -1, "AMX_FIND_NORESULT", g_search_player_steamid);
            }
            else
            {
                console_print(id, "[AMXBANS] %L", -1, "AMX_FIND_NORESULT", g_search_player_steamid);
            }
            return 1;
        }
        if (serverCmd)
        {
            log_message("[AMXBANS] %L", -1, "AMX_FIND_RESULT_1", g_search_player_steamid);
            while (SQL_MoreResults(query))
            {
                if (ban_length_int && ban_created_int)
                {
                    format(remaining, 127, "%L", -1, "MSG_10");
                }
                else
                {
                    ban_left = ban_length_int + ban_created_int - current_time_int;
                    if (0 >= ban_left)
                    {
                        format(remaining, 127, "%L", -1, "AMX_FIND_RESULT_5");
                    }
                    get_time_length(id, ban_left, 0, remaining, 127);
                }
                if (serverCmd)
                {
                    log_message(" ");
                    log_message("[AMXBANS] =================");
                    log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, player_nick);
                    log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
                    log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_4", ban_length, remaining);
                    log_message("[AMXBANS] =================");
                    log_message(" ");
                }
                else
                {
                    client_print(id, print_console, " ");
                    client_print(id, print_console, "[AMXBANS] =================");
                    client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, player_nick);
                    client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
                    client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_4", ban_length, remaining);
                    client_print(id, print_console, "[AMXBANS] =================");
                    client_print(id, print_console, " ");
                }
                SQL_NextRow(query);
            }
        }
        else
        {
            client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_1", g_search_player_steamid);
            while (SQL_MoreResults(query))
            {
                if (ban_length_int && ban_created_int)
                {
                    format(remaining, 127, "%L", -1, "MSG_10");
                }
                else
                {
                    ban_left = ban_length_int + ban_created_int - current_time_int;
                    if (0 >= ban_left)
                    {
                        format(remaining, 127, "%L", -1, "AMX_FIND_RESULT_5");
                    }
                    get_time_length(id, ban_left, 0, remaining, 127);
                }
                if (serverCmd)
                {
                    log_message(" ");
                    log_message("[AMXBANS] =================");
                    log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, player_nick);
                    log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
                    log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_4", ban_length, remaining);
                    log_message("[AMXBANS] =================");
                    log_message(" ");
                }
                else
                {
                    client_print(id, print_console, " ");
                    client_print(id, print_console, "[AMXBANS] =================");
                    client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, player_nick);
                    client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
                    client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_4", ban_length, remaining);
                    client_print(id, print_console, "[AMXBANS] =================");
                    client_print(id, print_console, " ");
                }
                SQL_NextRow(query);
            }
        }
        while (SQL_MoreResults(query))
        {
            if (ban_length_int && ban_created_int)
            {
                format(remaining, 127, "%L", -1, "MSG_10");
            }
            else
            {
                ban_left = ban_length_int + ban_created_int - current_time_int;
                if (0 >= ban_left)
                {
                    format(remaining, 127, "%L", -1, "AMX_FIND_RESULT_5");
                }
                get_time_length(id, ban_left, 0, remaining, 127);
            }
            if (serverCmd)
            {
                log_message(" ");
                log_message("[AMXBANS] =================");
                log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, player_nick);
                log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
                log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_4", ban_length, remaining);
                log_message("[AMXBANS] =================");
                log_message(" ");
            }
            else
            {
                client_print(id, print_console, " ");
                client_print(id, print_console, "[AMXBANS] =================");
                client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, player_nick);
                client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
                client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_4", ban_length, remaining);
                client_print(id, print_console, "[AMXBANS] =================");
                client_print(id, print_console, " ");
            }
            SQL_NextRow(query);
        }
    }
    return 1;
}

public amx_findex(id, level, cid)
{
    !!! Removed Phi
    if (!cmd_access(id, level, cid, 3))
    {
        return 1;
    }
    new steamidorusername[50];
    new player_steamid[50];
    read_args(steamidorusername, 50);
    trim(steamidorusername);
    new player = find_player("c", steamidorusername);
    if (!player)
    {
        player = find_player("bl", steamidorusername);
    }
    if (player)
    {
        if (get_user_flags(player, 0) & 1)
        {
            client_print(id, print_console, "[AMXX] %L", -1, "HAS_IMMUNITY");
            return 1;
        }
        if (is_user_bot(player))
        {
            client_print(id, print_console, "[AMXX] %L", -1, "IS_BOT");
            return 1;
        }
        if (is_user_hltv(player))
        {
            client_print(id, print_console, "[AMXX] %L", -1, "IS_HLTV");
            return 1;
        }
        get_user_authid(player, player_steamid, 50);
    }
    else
    {
        format(player_steamid, 50, "%s", steamidorusername);
    }
    new query[512];
    new data[2];
    format(query, 511, "SELECT bhid,ban_created,ban_length,ban_reason,admin_nick,admin_id,player_nick FROM `%s` WHERE player_id='%s' ORDER BY ban_created DESC LIMIT 0,10", "amx_banhistory", player_steamid);
    data[0] = id;
    data[1] = player;
    SQL_ThreadQuery(g_SqlX, "amx_findex_", query, data, 2);
    return 0;
}

public amx_findex_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
    !!! Removed Phi
    new id = data[0];
    new player = data[1];
    new bool:serverCmd = 0;
    if (!id)
    {
        serverCmd = 1;
    }
    if (failstate)
    {
        new szQuery[256];
        MySqlX_ThreadError(szQuery, error, errnum, failstate, 15);
    }
    else
    {
        new player_steamid[50];
        get_user_authid(player, player_steamid, 50);
        new bid[20];
        new ban_created[50];
        new ban_length[50];
        new ban_reason[255];
        new admin_nick[100];
        new admin_steamid[50];
        new player_nick[100];
        new remaining[128];
        new ban_created_int = 0;
        new ban_length_int = 0;
        new current_time_int = 0;
        new ban_left = 0;
        if (!SQL_NumResults(query))
        {
            if (serverCmd)
            {
                log_message("[AMXBANS] %L", -1, "AMX_FIND_NORESULT", player_steamid);
            }
            else
            {
                client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_NORESULT", player_steamid);
            }
            return 1;
        }
        if (serverCmd)
        {
            log_message("[AMXBANS] %L", -1, "AMX_FIND_RESULT_1", player_steamid);
            while (SQL_MoreResults(query))
            {
                if (ban_length_int && ban_created_int)
                {
                    remaining[0] = 87620;
                }
                else
                {
                    ban_left = ban_length_int + ban_created_int - current_time_int;
                    if (0 >= ban_left)
                    {
                        format(remaining, 127, "none", ban_left);
                    }
                    get_time_length(id, ban_left, 0, remaining, 127);
                }
                if (serverCmd)
                {
                    log_message(" ");
                    log_message("[AMXBANS] =================");
                    log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, player_nick);
                    log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
                    log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_4", ban_length, remaining);
                    log_message("[AMXBANS] =================");
                    log_message(" ");
                }
                else
                {
                    client_print(id, print_console, " ");
                    client_print(id, print_console, "[AMXBANS] =================");
                    client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, player_nick);
                    client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
                    client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_4", ban_length, remaining);
                    client_print(id, print_console, "[AMXBANS] =================");
                    client_print(id, print_console, " ");
                }
                SQL_NextRow(query);
            }
        }
        else
        {
            client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_1", player_steamid);
            while (SQL_MoreResults(query))
            {
                if (ban_length_int && ban_created_int)
                {
                    remaining[0] = 87620;
                }
                else
                {
                    ban_left = ban_length_int + ban_created_int - current_time_int;
                    if (0 >= ban_left)
                    {
                        format(remaining, 127, "none", ban_left);
                    }
                    get_time_length(id, ban_left, 0, remaining, 127);
                }
                if (serverCmd)
                {
                    log_message(" ");
                    log_message("[AMXBANS] =================");
                    log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, player_nick);
                    log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
                    log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_4", ban_length, remaining);
                    log_message("[AMXBANS] =================");
                    log_message(" ");
                }
                else
                {
                    client_print(id, print_console, " ");
                    client_print(id, print_console, "[AMXBANS] =================");
                    client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, player_nick);
                    client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
                    client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_4", ban_length, remaining);
                    client_print(id, print_console, "[AMXBANS] =================");
                    client_print(id, print_console, " ");
                }
                SQL_NextRow(query);
            }
        }
        while (SQL_MoreResults(query))
        {
            if (ban_length_int && ban_created_int)
            {
                remaining[0] = 87620;
            }
            else
            {
                ban_left = ban_length_int + ban_created_int - current_time_int;
                if (0 >= ban_left)
                {
                    format(remaining, 127, "none", ban_left);
                }
                get_time_length(id, ban_left, 0, remaining, 127);
            }
            if (serverCmd)
            {
                log_message(" ");
                log_message("[AMXBANS] =================");
                log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, player_nick);
                log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
                log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_4", ban_length, remaining);
                log_message("[AMXBANS] =================");
                log_message(" ");
            }
            else
            {
                client_print(id, print_console, " ");
                client_print(id, print_console, "[AMXBANS] =================");
                client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, player_nick);
                client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
                client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_4", ban_length, remaining);
                client_print(id, print_console, "[AMXBANS] =================");
                client_print(id, print_console, " ");
            }
            SQL_NextRow(query);
        }
    }
    return 1;
}

public plugin_init()
{
    new var1 = Heap_4;
    var1[0] = 89028;
    register_concmd("amx_reloadreasons", "reasonReload", 128, var1);
    register_clcmd("amx_banmenu", "cmdBanMenu", 8, "- displays ban menu");
    register_clcmd("amxbans_custombanreason", "setCustomBanReason", 8, "- configures custom ban message");
    register_clcmd("amx_banhistorymenu", "cmdBanhistoryMenu", 8, "- displays banhistorymenu");
    register_menucmd(register_menuid("Ban Menu", 0), 1023, "actionBanMenu");
    register_menucmd(register_menuid("Ban Reason Menu", 0), 1023, "actionBanMenuReason");
    register_menucmd(register_menuid("Banhistory Menu", 0), 1023, "actionBanhistoryMenu");
    g_coloredMenus = colored_menus();
    g_MyMsgSync = CreateHudSyncObj(0);
    register_plugin("AMXBans", "5.0", AUTHOR);
    register_cvar("amxbans_version", VERSION, 332, 0.00);
    amxbans_cmd_sql = register_cvar("amxbans_cmd_sql", "0", 0, 0.00);
    amxbans_debug = register_cvar("amxbans_debug", "0", 0, 0.00);
    server_nick = register_cvar("amxbans_servernick", "", 0, 0.00);
    ban_evenif_disconn = register_cvar("amxbans_ban_evenif_disconnected", "0", 0, 0.00);
    complainurl = register_cvar("amxbans_complain_url", "www.yoursite.com", 0, 0.00);
    show_prebanned = register_cvar("amxbans_show_prebanned", "1", 0, 0.00);
    show_prebanned_num = register_cvar("amxbans_show_prebanned_num", "2", 0, 0.00);
    max_time_to_show_preban = register_cvar("amxbans_max_time_to_show_preban", "9999", 0, 0.00);
    banhistmotd_url = register_cvar("amxbans_banhistmotd_url", "http://pathToYour/findex.php?steamid=%s", 0, 0.00);
    show_atacbans = register_cvar("amxbans_show_prebans_from_atac", "1", 0, 0.00);
    show_name_evenif_mole = register_cvar("amxbans_show_name_evenif_mole", "1", 0, 0.00);
    firstBanmenuValue = register_cvar("amxbans_first_banmenu_value", "5", 0, 0.00);
    consoleBanMax = register_cvar("amxbans_consolebanmax", "1440", 0, 0.00);
    max_time_gone_to_unban = register_cvar("amxbans_max_time_gone_to_unban", "1440", 0, 0.00);
    higher_ban_time_admin = register_cvar("amxbans_higher_ban_time_admin", "n", 0, 0.00);
    admin_mole_access = register_cvar("amxbans_admin_mole_access", "r", 0, 0.00);
    show_in_hlsw = register_cvar("amxbans_show_in_hlsw", "1", 0, 0.00);
    show_hud_messages = register_cvar("amxbans_show_hud_messages", "1", 0, 0.00);
    add_mapname_in_servername = register_cvar("amxbans_add_mapname_in_servername", "0", 0, 0.00);
    register_dictionary("amxbans.txt");
    register_dictionary("common.txt");
    register_dictionary("time.txt");
    register_concmd("amx_ban", "cmdBan", 8, "<time in mins> <steamID or nickname or #authid or IP> <reason>");
    register_srvcmd("amx_ban", "cmdBan", -1, "<time in min> <steamID or nickname or #authid or IP> <reason>");
    register_concmd("amx_banip", "cmdBan", 8, "<time in mins> <steamID or nickname or #authid or IP> <reason>");
    register_srvcmd("amx_banip", "cmdBan", -1, "<time in mins> <steamID or nickname or #authid or IP> <reason>");
    register_concmd("amx_unban", "cmdUnBan", 8, "<steamID>");
    register_srvcmd("amx_unban", "cmdUnBan", -1, "<steamID>");
    register_concmd("amx_find", "amx_find", 8, "<steamID>");
    register_srvcmd("amx_find", "amx_find", -1, "<steamID>");
    register_concmd("amx_findex", "amx_findex", 8, "<steamID>");
    register_srvcmd("amx_findex", "amx_findex", -1, "<steamID>");
    register_srvcmd("amx_list", "cmdLst", -1, "Displays playerinfo");
    new var2 = Heap_4;
    var2[0] = 94936;
    register_srvcmd("amx_sethighbantimes", "setHighBantimes", -1, var2);
    new var3 = Heap_4;
    var3[0] = 94936;
    register_srvcmd("amx_setlowbantimes", "setLowBantimes", -1, var3);
    new configsDir[64];
    get_configsdir(configsDir, 63);
    new configfile[128];
    format(configfile, 127, "%s/amxbans.cfg", configsDir);
    server_cmd("exec %s/sql.cfg", configsDir);
    if (file_exists(configfile))
    {
        server_cmd("exec %s", configfile);
    }
    else
    {
        loadDefaultBantimes(0);
        server_print("[AMXBANS] Could not find amxbans.cfg, loading default bantimes");
        log_amx("[AMXBANS] Could not find amxbans.cfg, loading default bantimes");
        log_amx("[AMXBANS] You should put amxbans.cfg in addons/amxmodx/configs/");
    }
    new var4 = Heap_4;
    var4[0] = 58580;
    new var5 = Heap_4;
    var5[0] = 96028;
    set_task(0.50, "sql_init", 0, var5, 0, var4, 0);
    new var6 = Heap_4;
    var6[0] = 58580;
    new var7 = Heap_4;
    var7[0] = 96028;
    set_task(5.00, "addBanhistMenu", 0, var7, 0, var6, 0);
    return 0;
}

public addBanhistMenu()
{
    AddMenuItem("Banhistory Menu", "amx_banhistorymenu", 8, "AMXBans");
    return 0;
}

public sql_init()
{
    new host[64];
    new user[64];
    new pass[64];
    new db[64];
    get_cvar_string("amx_sql_host", host, 63);
    get_cvar_string("amx_sql_user", user, 63);
    get_cvar_string("amx_sql_pass", pass, 63);
    get_cvar_string("amx_sql_db", db, 63);
    g_SqlX = SQL_MakeDbTuple(host, user, pass, db);
    new var1 = Heap_4;
    var1[0] = 58580;
    new var2 = Heap_4;
    var2[0] = 96028;
    set_task(1.00, "banmod_online", 0, var2, 0, var1, 0);
    new var3 = Heap_4;
    var3[0] = 58580;
    new var4 = Heap_4;
    var4[0] = 96028;
    set_task(1.00, "fetchReasons", 0, var4, 0, var3, 0);
    return 0;
}

public reasonReload(id, level, cid)
{
    if (!cmd_access(id, level, cid, 1))
    {
        return 1;
    }
    fetchReasons(id);
    if (id)
    {
        if (g_aNum == 1)
        {
            console_print(id, "[AMXBANS] %L", 0, "SQL_LOADED_REASON");
        }
        console_print(id, "[AMXBANS] %L", 0, "SQL_LOADED_REASONS", g_aNum);
    }
    return 1;
}

public client_connect(id)
{
    !!! Removed Phi
    if ((id > 0 || id < 32) && is_user_connected(id))
    {
        g_lastCustom[id][0][0][0] = 0;
        g_inCustomReason[id] = 0;
        g_player_flagged[id] = 0;
        g_being_banned[id] = 0;
    }
    return 0;
}

public client_disconnect(id)
{
    g_lastCustom[id][0][0][0] = 0;
    g_inCustomReason[id] = 0;
    g_player_flagged[id] = 0;
    g_being_banned[id] = 0;
    return 0;
}

public client_authorized(id)
{
    if (get_pcvar_num(show_prebanned) == 1)
    {
        new var1 = Heap_4;
        var1[0] = 58580;
        new var2 = Heap_4;
        var2[0] = 96028;
        set_task(1.00, "prebanned_check", id, var2, 0, var1, 0);
    }
    new var3 = Heap_4;
    var3[0] = 58580;
    new var4 = Heap_4;
    var4[0] = 96028;
    set_task(1.10, "check_player", id, var4, 0, var3, 0);
    return 0;
}

public delayed_kick(String:id_str[])
{
    new player_id = str_to_num(id_str);
    new userid = get_user_userid(player_id);
    new kick_message[128];
    format(kick_message, 127, "%L", -1, "KICK_MESSAGE");
    if (get_pcvar_num(amxbans_debug) == 1)
    {
        log_amx("[AMXBANS DEBUG] Delayed Kick ID: <%s>", id_str);
    }
    server_cmd("kick #%d  %s", userid, kick_message);
    return 0;
}

public cmdLst(id, level, cid)
{
    new players[32];
    new inum = 0;
    new authid[32];
    new name[32];
    new ip[50];
    get_players(players, inum, "", "");
    console_print(id, "playerinfo");
    new a = 0;
    while (a < inum)
    {
        get_user_ip(players[a], ip, 49, 1);
        get_user_authid(players[a], authid, 31);
        get_user_name(players[a], name, 31);
        console_print(id, "#WM#%s#WMW#%s#WMW#%s#WMW#", name, authid, ip);
        a++;
    }
    return 1;
}

public get_higher_ban_time_admin_flag()
{
    new flags[24];
    get_pcvar_string(higher_ban_time_admin, flags, 23);
    return read_flags(flags);
}

public get_admin_mole_access_flag()
{
    new flags[24];
    get_pcvar_string(admin_mole_access, flags, 23);
    return read_flags(flags);
}

public locate_player(id, String:identifier[])
{
    !!! Removed Phi
    new var2 = g_ban_type;
    var2[0] = 97356;
    new player = find_player("c", identifier);
    if (!player)
    {
        player = find_player("bl", identifier);
    }
    if (!player)
    {
        player = find_player("d", identifier);
        if (player)
        {
            new var3 = g_ban_type;
            var3[0] = 97392;
        }
    }
    if (!player && identifier[0] == 35 && identifier[1])
    {
        player = find_player("k", str_to_num(identifier[1]));
    }
    if (player)
    {
        if (get_user_flags(player, 0) & 1)
        {
            new name[32];
            get_user_name(player, name, 31);
            if (id)
            {
                console_print(id, "[AMXBANS] Client \"%s\" has immunity", name);
            }
            else
            {
                server_print("[AMXBANS] Client \"%s\" has immunity", name);
            }
            return -1;
        }
        if (is_user_bot(player))
        {
            new name[32];
            get_user_name(player, name, 31);
            if (id)
            {
                console_print(id, "[AMXBANS] Client \"%s\" is a bot", name);
            }
            else
            {
                server_print("[AMXBANS] Client \"%s\" is a bot", name);
            }
            return -1;
        }
    }
    return player;
}

public setHighBantimes()
{
    !!! Removed Phi
    if (argc < 1 || argc > 12)
    {
        log_amx("[AMXBANS] You have more than 12 or less than 1 bantimes set in amx_sethighbantimes");
        log_amx("[AMXBANS] Loading default bantimes");
        loadDefaultBantimes(1);
        return 1;
    }
    new i = 0;
    new num[32];
    new flag[32];
    while (i < argc)
    {
        read_argv(i + 1, arg, 31);
        parse(arg, num, 31, flag, 31);
        if (equali(flag, "m", 0))
        {
            g_HighBanMenuValues[i] = str_to_num(num);
        }
        else
        {
            if (equali(flag, "h", 0))
            {
                g_HighBanMenuValues[i] = str_to_num(num) * 60;
            }
            if (equali(flag, "d", 0))
            {
                g_HighBanMenuValues[i] = str_to_num(num) * 1440;
            }
            if (equali(flag, "w", 0))
            {
                g_HighBanMenuValues[i] = str_to_num(num) * 10080;
            }
        }
        i++;
    }
    return 1;
}

public setLowBantimes()
{
    !!! Removed Phi
    if (argc < 1 || argc > 12)
    {
        log_amx("[AMXBANS] You have more than 12 or less than 1 bantimes set in amx_setlowbantimes");
        log_amx("[AMXBANS] Loading default bantimes");
        loadDefaultBantimes(2);
        return 1;
    }
    new i = 0;
    new num[32];
    new flag[32];
    while (i < argc)
    {
        read_argv(i + 1, arg, 31);
        parse(arg, num, 31, flag, 31);
        if (equali(flag, "m", 0))
        {
            g_LowBanMenuValues[i] = str_to_num(num);
        }
        else
        {
            if (equali(flag, "h", 0))
            {
                g_LowBanMenuValues[i] = str_to_num(num) * 60;
            }
            if (equali(flag, "d", 0))
            {
                g_LowBanMenuValues[i] = str_to_num(num) * 1440;
            }
            if (equali(flag, "w", 0))
            {
                g_LowBanMenuValues[i] = str_to_num(num) * 10080;
            }
        }
        i++;
    }
    return 1;
}

loadDefaultBantimes(num)
{
    !!! Removed Phi
    if (num == 1 || num)
    {
        server_cmd("amx_sethighbantimes 5 60 240 600 6000 0 -1");
    }
    if (num == 2 || num)
    {
        server_cmd("amx_setlowbantimes 5 30 60 480 600 1440 -1");
    }
    return 0;
}

MySqlX_ThreadError(String:szQuery[], String:error[], errnum, failstate, id)
{
    if (failstate == -2)
    {
        log_amx("%L", 0, "TCONNECTION_FAILED");
    }
    else
    {
        if (failstate == -1)
        {
            log_amx("%L", 0, "TQUERY_FAILED");
        }
    }
    log_amx("%L", 0, "TQUERY_ERROR", id);
    log_amx("%L", 0, "TQUERY_MSG", error, errnum);
    log_amx("%L", 0, "TQUERY_STATEMENT", szQuery);
    return 0;
}

public plugin_end()
{
    SQL_FreeHandle(g_SqlX);
    return 0;
}

Изображение
Изображение

IP: 93.123.16.44:27015

FPS: 10000 (TEN-THOUSAND!)
SITE: www.CS-PARADISE.EU

CS-PARADISE.EU е верига игрални сървъри ориентирана към зрялата аудитория на неостаряващата класика Counter-Strike 1.6

» Уникалена cheat system - НИКАКВИ ХАКЕРИ
» 10000 FPS (ДЕСЕТ ХИЛЯДИ!) - НИКАКЪВ ЛАГ
» Гигабитова свързаност - НАЙ-НИСКИЯТ ПИНГ
» Професионална поддръжка - НАЙ-ЯКИТЕ НАСТРОЙКИ
» Непрестанно обновяване - НАЙ-НОВИТЕ МОДОВЕ

С нас ще преоткриеш CS 1.6 в безкомпромисни сървъри, където честната игра е гарантирана от уникалната ни защита!

ВНИМАНИЕ:
ПРИ НАС СТРЕЛЯТ ДОСТА СИЛНИ ИГРАЧИ!
ДОРИ СРЕД МОМИЧЕТАТА ИМА БРУТАЛНИ
----------------------
Изображение

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Преработка на плъгин за банове

Мнение от atmax » 26 Дек 2020, 10:13

Защо не прикачиш някой читав Бан плъгин, вместо да прикачваш половината код от декомпилиран плъгин, за който даже не се знае има ли вратичка или няма?
Rest in peace my friend I always will remember you! 🖤👊

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Преработка на плъгин за банове

Мнение от OciXCrom » 26 Дек 2020, 14:20

Без да дадеш .sma файла абсолютно нищо не може да се направи.

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 42 госта