Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

AMXbans gm 1.6

, Опять бредит.
underwoker
сообщение 30.7.2012, 7:47
Сообщение #1
Стаж: 56 лет


Благодарностей:

Поставил на хостинге АМХбанс а он ошибки выдает в консоли.
Где то вроде у вас была темка про это. Там ссылку какую то выложили. Но она уже не работает.
Прошу помощи.
Кстати. Из за этого сервер падает. Заметил уже 2 раза. Как убираю АМХбанс. Так все норм. А падает при смене карты.

Error log
L 07/28/2012 - 05:33:18: Start of error session.
L 07/28/2012 - 05:33:18: Info (map "zm_dust2_2x2") (file "addons/amxmodx/logs/error_20120728.log")
L 07/28/2012 - 05:33:18: Invalid player id 33
L 07/28/2012 - 05:33:18: [AMXX] Displaying debug trace (plugin "amxbans_main.amxx")
L 07/28/2012 - 05:33:18: [AMXX] Run time error 10: native error (native "client_print")
L 07/28/2012 - 05:33:18: [AMXX]    [0] cmd_ban.inl::_select_amxbans_motd (line 733)
L 07/28/2012 - 05:33:18: [AMXX]    [1] color_chat.inl::ColorChat (line 89)
L 07/28/2012 - 05:33:18: [AMXX]    [2] cmd_ban.inl::_select_amxbans_motd (line 732)

Вот исходник:
SMA
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <sqlx>
#include <time>
 
#define AUTHOR "Larte Team"
#define PLUGIN_NAME "AMXBans: Main"
#define VERSION "Gm 1.6"
#define DATE "14:25 26.04.2011"
 
#define PREFIX "!y[!tAMXBans!y]"
 
#define AMXBANS_VERSION "1.6"
 
//#define UNBAN_GAME_DEL // раскомментировать для удаления бана при разбане
#define SET_NAMES_UTF8 // закомментировать, если русские причины банов нормально отображались и в ранних версиях
 
#include "include/amxbans_core.inc"
 
#include "include/amxbans/global_vars.inl"
#include "include/amxbans/color_chat.inl"
#include "include/amxbans/init_functions.inl"
#include "include/amxbans/check_player.inl"
#include "include/amxbans/check_flag.inl"
#include "include/amxbans/menu_stocks.inl"
#include "include/amxbans/menu_ban.inl"
#include "include/amxbans/menu_disconnected.inl"
#include "include/amxbans/menu_history.inl"
#include "include/amxbans/menu_flag.inl"
#include "include/amxbans/cmd_ban.inl"
#include "include/amxbans/cmd_unban.inl"
#include "include/amxbans/web_handshake.inl"
#include "include/amxbans/reason_checker.inl"
 
#pragma dynamic 16384
 
public plugin_init()
{
        register_plugin(PLUGIN_NAME, VERSION, AUTHOR)
        register_cvar("amxbans_version", VERSION, FCVAR_SERVER | FCVAR_EXTDLL | FCVAR_UNLOGGED| FCVAR_SPONLY)
       
        register_dictionary("amxbans.txt")
        register_dictionary("common.txt")
        register_dictionary("time.txt")
       
        register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu")
        register_clcmd("amxbans_custombanreason", "setCustomBanReason", ADMIN_BAN, "- configures custom ban message")
        register_clcmd("amx_banhistorymenu", "cmdBanhistoryMenu", ADMIN_BAN, "- displays banhistorymenu")
        register_clcmd("amx_bandisconnectedmenu", "cmdBanDisconnectedMenu", ADMIN_BAN, "- displays bandisconnectedmenu")
        register_clcmd("amx_flaggingmenu","cmdFlaggingMenu", ADMIN_BAN, "- displays flagging menu")
       
        register_srvcmd("amx_sethighbantimes", "setHighBantimes")
        register_srvcmd("amx_setlowbantimes", "setLowBantimes")
        register_srvcmd("amx_setflagtimes", "setFlagTimes")
       
        register_concmd("amx_reloadreasons", "cmdFetchReasons", ADMIN_CFG)
       
        pcvar_serverip = register_cvar("amxbans_server_address", "")
        pcvar_server_nick = register_cvar("amxbans_servernick", "")
        pcvar_discon_in_banlist = register_cvar("amxbans_discon_players_saved", "10")
        pcvar_complainurl = register_cvar("amxbans_complain_url", "www.yoursite.com")
        pcvar_debug = register_cvar("amxbans_debug", "0")
        pcvar_add_mapname = register_cvar("amxbans_add_mapname_in_servername", "0")
        pcvar_flagged_all = register_cvar("amxbans_flagged_all_server","1")
        pcvar_show_in_hlsw = register_cvar("amxbans_show_in_hlsw", "1")
        pcvar_show_hud_messages = register_cvar("amxbans_show_hud_messages", "1")
        pcvar_higher_ban_time_admin = register_cvar("amxbans_higher_ban_time_admin", "n")
        pcvar_admin_mole_access = register_cvar("amxbans_admin_mole_access", "r")
        pcvar_show_name_evenif_mole = register_cvar("amxbans_show_name_evenif_mole", "1")
        pcvar_custom_statictime = register_cvar("amxbans_custom_statictime", "1440")
        pcvar_show_prebanned = register_cvar("amxbans_show_prebanned", "1")
        pcvar_show_prebanned_num = register_cvar("amxbans_show_prebanned_num", "2")
        pcvar_default_banreason = register_cvar("amxbans_default_ban_reason", "unknown")
        pcvar_offset = register_cvar("amxbans_time_offset", "0")
        pcvar_snapshot = register_cvar("amxbans_snapshot", "1")
        pcvar_bantype = register_cvar("amxbans_bantype", "0")
        pcvar_flag = register_cvar("amxbans_check_flag", "1")
        pcvar_history = register_cvar("amxbans_history_menu", "1")
        pcvar_activity = get_cvar_pointer("amx_show_activity")
        pcvar_hostname = get_cvar_pointer("hostname")
       
        register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<time in mins> <steamID or nickname or #authid or IP> <reason>")
        register_concmd("amx_banip", "cmdBan", ADMIN_BAN, "<time in mins> <steamID or nickname or #authid or IP> <reason>")
        register_concmd("amx_unban", "cmdUnBan", ADMIN_BAN, "<steamID or IP>")
       
        register_srvcmd("amx_list", "cmdLst", ADMIN_RCON, "sends playerinfos to web")
       
        g_coloredMenus = colored_menus()
        g_MyMsgSync = CreateHudSyncObj()
       
        g_banReasons = ArrayCreate(128, 7)
        g_banReasons_Bantime = ArrayCreate(1, 7)
       
        g_disconPLname = ArrayCreate(32, 1)
        g_disconPLauthid = ArrayCreate(35, 1)
        g_disconPLip = ArrayCreate(22, 1)
       
        g_AReplaceInd = ArrayCreate(64, 1)
        g_AReplace = ArrayCreate(64, 1)
        g_ReplaceInd = ArrayCreate(64, 1)
        g_Replace = ArrayCreate(64, 1)
       
        plnum = get_maxplayers()
       
        for(new i = 1; i <= plnum; i++)
        {
                set_user_state(i, PDATA_DISCONNECTED)
        }
 
        new configsDir[64]
        get_configsdir(configsDir, 63)
       
        server_cmd("exec %s/amxbans.cfg", configsDir)
       
        color_chat_init()
        load_replaces()
       
        return PLUGIN_CONTINUE
}
 
stock create_forwards()
{
        MFHandle[Ban_MotdOpen] = CreateMultiForward("amxbans_ban_motdopen", ET_IGNORE, FP_CELL)
        MFHandle[Player_Flagged] = CreateMultiForward("amxbans_player_flagged", ET_IGNORE, FP_CELL, FP_CELL, FP_STRING)
        MFHandle[Player_UnFlagged] = CreateMultiForward("amxbans_player_unflagged", ET_IGNORE, FP_CELL)
        return PLUGIN_CONTINUE
}
 
public addMenus()
{
        new szKey[128]
       
        if(get_pcvar_num(pcvar_flag))
        {
                format(szKey, 127, "%L", LANG_SERVER, "ADMMENU_FLAGGING")
                AddMenuItem(szKey, "amx_flaggingmenu", ADMIN_BAN, PLUGIN_NAME)
        }
       
        if(get_pcvar_num(pcvar_discon_in_banlist))
        {
                format(szKey, 127, "%L", LANG_SERVER, "ADMMENU_DISCONNECTED")
                AddMenuItem(szKey, "amx_bandisconnectedmenu", ADMIN_BAN, PLUGIN_NAME)
        }
       
        if(get_pcvar_num(pcvar_history))
        {
                format(szKey, 127, "%L", LANG_SERVER, "ADMMENU_HISTORY")
                AddMenuItem(szKey, "amx_banhistorymenu", ADMIN_BAN, PLUGIN_NAME)
        }
 
        return PLUGIN_CONTINUE
}
 
public amxbans_sql_initialized(Handle:sqlTuple, const dbPrefix[])
{
        if(g_SqlX != Empty_Handle)
        {
                if(get_pcvar_num(pcvar_debug) >= 1)
                {
                        log_amx("[AMXBans Notice] DB Info Tuple from amxbans_core initialized twice! Maybee used command amx_realoadadmins.")
                }
                return PLUGIN_CONTINUE
        }
 
        copy(g_dbPrefix, 31, dbPrefix)
       
        get_user_ip(0, playerData[0][playerIp], 21, 1)
 
        g_SqlX = sqlTuple
       
        if(get_pcvar_num(pcvar_debug) >= 1)
        {
                log_amx("[AMXBans] Received DB Info Tuple from amxbans_core: %d | %s", sqlTuple, g_dbPrefix)
        }
       
        if(g_SqlX == Empty_Handle)
        {
                log_amx("[AMXBans Error] DB Info Tuple from amxbans_main is empty! Trying to get a valid one.")
                new host[64], user[64], pass[64], 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)
               
                get_cvar_string("amx_sql_prefix", g_dbPrefix, 31)
        }
       
        create_forwards()
       
        set_task(0.1, "banmod_online")
        set_task(0.25, "load_reasons")
       
        if(!get_pcvar_num(pcvar_offset))
        {
                set_task(0.5, "get_offset")
        }
 
        return set_task(2.0, "addMenus")
}
 
public get_higher_ban_time_admin_flag()
{
        new flags[24]
        get_pcvar_string(pcvar_higher_ban_time_admin, flags, 23)
       
        return read_flags(flags)
}
 
public get_admin_mole_access_flag()
{
        new flags[24]
        get_pcvar_string(pcvar_admin_mole_access, flags, 23)
       
        return read_flags(flags)
}
 
public delayed_kick(id)
{
        id -= 200
       
        if(is_user_disconnected(id))
        {
                return PLUGIN_HANDLED
        }
 
        if(get_pcvar_num(pcvar_debug) >= 1)
        {
                log_amx("[AMXBANS DEBUG] Delayed Kick ID: <%d>", id)
        }
 
        add_user_state(id, PDATA_KICKED)
 
        return server_cmd("kick #%d  %L", get_user_userid(id), id, "KICK_MESSAGE")
}
 
 
stock SQL_Error(Handle:query, const error[], errornum, failstate)
{
        new qstring[1024]
        SQL_GetQueryString(query, qstring, 1023)
       
        if(failstate == TQUERY_CONNECT_FAILED)
        {
                log_amx("%L", LANG_SERVER, "TCONNECTION_FAILED")
        }
        else if (failstate == TQUERY_QUERY_FAILED)
        {
                log_amx("%L", LANG_SERVER, "TQUERY_FAILED")
        }
        log_amx("%L", LANG_SERVER, "TQUERY_MSG", error, errornum)
        log_amx("%L", LANG_SERVER, "TQUERY_STATEMENT", qstring)
 
        return SQL_FreeHandle(query)
}
 
public client_authorized(id)
{
        if(id > 201)
        {
                id -= 201
        }
        else
        {
                get_user_name(id, playerData[id][playerName], 31)
                get_user_authid(id, playerData[id][playerSteamid], 33)
                get_user_ip(id, playerData[id][playerIp], 21, 1)
        }
       
        if(g_SqlX == Empty_Handle)
        {
                return set_task(1.0, "client_authorized", id + 201)
        }
       
        set_user_state(id, PDATA_CONNECTING)
       
        if(is_user_admin(id))
        {
                add_user_state(id, PDATA_ADMIN)
                if(get_user_flags(id) & ADMIN_IMMUNITY)
                {
                        add_user_state(id, PDATA_IMMUNITY)
                }
        }
 
        return set_task(0.25, "check_player", id + 203)
}
 
public client_putinserver(id)
{
        if(id > 202)
        {
                id -= 202
        }
        else
        {
                remove_user_state(id, PDATA_CONNECTING)
               
                if(is_user_hltv(id))
                {
                        add_user_state(id, PDATA_HLTV)
                }
                if(is_user_bot(id))
                {      
                        add_user_state(id, PDATA_BOT)
                }
               
                add_user_state(id, PDATA_CONNECTED)
        }
       
        if(g_SqlX == Empty_Handle)
        {
                return set_task(1.0, "client_putinserver", id + 202)
        }
       
        if(get_user_state(id, PDATA_IMMUNITY))
        {
                return PLUGIN_HANDLED
        }
       
        check_player_post(id)
        disconnect_remove_player(id)
       
        return PLUGIN_CONTINUE
}
 
public client_disconnect(id)
{
        if(!get_user_state(id, PDATA_KICKED) && !get_user_state(id, PDATA_IMMUNITY))
        {
                disconnected_add_player(id)
        }
 
        remove_task(id + 200)
        remove_task(id + 201)
        remove_task(id + 202)
        remove_task(id + 203)
        remove_task(id + 204)
       
        return set_user_state(id, PDATA_DISCONNECTED)
}
 
public client_infochanged(id)
{
        if(!get_user_state(id, PDATA_CONNECTED))
        {
                return PLUGIN_CONTINUE
        }
       
        get_user_info(id, "name", playerData[id][playerName], 31)
       
        return PLUGIN_CONTINUE
}
 
public setHighBantimes()
{
        new arg[32]
        new argc = read_argc() - 1
        g_highbantimesnum = argc
 
        if(argc < 1 || argc > 14)
        {
                log_amx("[AMXBANS] You have more than 14 or less than 1 bantimes set in amx_sethighbantimes")
                log_amx("[AMXBANS] Loading default bantimes")
                return loadDefaultBantimes(1)
        }
 
        new i = 0
        new num[32], flag[32]
        while(i < argc)
        {
                read_argv(i + 1, arg, 31)
                parse(arg, num, 31, flag, 31)
 
                if(equali(flag, "m"))
                {
                        g_HighBanMenuValues[i] = str_to_num(num)
                }
                else if(equali(flag, "h"))
                {
                        g_HighBanMenuValues[i] = (str_to_num(num) * 60)
                }
                else if(equali(flag, "d"))
                {
                        g_HighBanMenuValues[i] = (str_to_num(num) * 1440)
                }
                else if(equali(flag, "w"))
                {
                        g_HighBanMenuValues[i] = (str_to_num(num) * 10080)
                }
                i++
        }
       
        return PLUGIN_HANDLED
}
 
public setLowBantimes()
{
        new arg[32]
        new argc = read_argc() - 1
        g_lowbantimesnum = argc
       
        if(argc < 1 || argc > 14)
        {
                log_amx("[AMXBANS] You have more than 14 or less than 1 bantimes set in amx_setlowbantimes")
                log_amx("[AMXBANS] Loading default bantimes")
                return loadDefaultBantimes(2)
        }
 
        new i = 0
        new num[32], flag[32]
        while(i < argc)
        {
                read_argv(i + 1, arg, 31)
                parse(arg, num, 31, flag, 31)
 
                if(equali(flag, "m"))
                {
                        g_LowBanMenuValues[i] = str_to_num(num)
                }
                else if(equali(flag, "h"))
                {
                        g_LowBanMenuValues[i] = (str_to_num(num) * 60)
                }
                else if(equali(flag, "d"))
                {
                        g_LowBanMenuValues[i] = (str_to_num(num) * 1440)
                }
                else if(equali(flag, "w"))
                {
                        g_LowBanMenuValues[i] = (str_to_num(num) * 10080)
                }
                i++
        }
       
        return PLUGIN_HANDLED
}
 
public plugin_end()
{
        ArrayDestroy(g_banReasons)
        ArrayDestroy(g_banReasons_Bantime)
       
        ArrayDestroy(g_disconPLname)
        ArrayDestroy(g_disconPLauthid)
        ArrayDestroy(g_disconPLip)
       
        ArrayDestroy(g_AReplaceInd)
        ArrayDestroy(g_AReplace)
       
        ArrayDestroy(g_ReplaceInd)
        ArrayDestroy(g_Replace)
       
        return PLUGIN_CONTINUE
}
 
public setFlagTimes()
{
        new arg[32]
        new argc = read_argc() - 1
        g_flagtimesnum = argc
        if(argc < 1 || argc > 14)
        {
                log_amx("[AMXBANS] You have more than 14 or less than 1 flagtimes set in amx_setflagtimes")
                log_amx("[AMXBANS] Loading default flagtimes")
                return loadDefaultBantimes(3)
        }
       
        new i = 0
        new num[32], flag[32]
        while(i < argc)
        {
                read_argv(i + 1, arg, 31)
                parse(arg, num, 31, flag, 31)
 
                if(equali(flag, "m"))
                {
                        g_FlagMenuValues[i] = str_to_num(num)
                }
                else if(equali(flag, "h"))
                {
                        g_FlagMenuValues[i] = (str_to_num(num) * 60)
                }
                else if(equali(flag, "d"))
                {
                        g_FlagMenuValues[i] = (str_to_num(num) * 1440)
                }
                else if(equali(flag, "w"))
                {
                        g_FlagMenuValues[i] = (str_to_num(num) * 10080)
                }
                i++
        }
       
        return PLUGIN_HANDLED
}
 
stock loadDefaultBantimes(num)
{
        if(num == 1 || num == 0)
        {
                server_cmd("amx_sethighbantimes 5 60 240 600 6000 0")
        }
        if(num == 2 || num == 0)
        {
                server_cmd("amx_setlowbantimes 5 30 60 480 600 1440")
        }
        if(num == 3 || num == 0)
        {
                server_cmd("amx_setflagtimes 60 240 600 1440 10080 40320 90720 0")
        }
       
        return PLUGIN_CONTINUE
}
 
stock mysql_escape_string(dest[], len)
{
        replace_all(dest, len, "\\", "\\\\")
        replace_all(dest, len, "\0", "\\0")
        replace_all(dest, len, "\n", "\\n")
        replace_all(dest, len, "\r", "\\r")
        replace_all(dest, len, "\x1a", "\Z")
        replace_all(dest, len, "'", "\'")
        replace_all(dest, len, "^"", "\^"")
       
        return 1
}
 
stock mysql_get_username_safe(id, dest[], len)
{
        copy(dest, len, playerData[id][playerName])
        return mysql_escape_string(dest, len)
}
 
stock mysql_get_servername_safe(dest[], len)
{
        get_pcvar_string(pcvar_hostname, dest, len)
        return mysql_escape_string(dest, len)
}

Файлы inl:
color_chat:

Скрытый текст
#if defined _color_chat_included
#endinput
#endif

#define _color_chat_included

#include <amxmodx>

enum Color
{
YELLOW = 1,
GREEN,
TEAM_COLOR,
GREY,
RED,
BLUE
}

new TeamInfo
new SayText
new mplayers

new TeamName[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}


stock color_chat_init()
{
TeamInfo = get_user_msgid("TeamInfo")
SayText = get_user_msgid("SayText")
mplayers = get_maxplayers()

return PLUGIN_CONTINUE
}

public ColorChat(id, Color:type, const msg[], any:...)
{
new message[192]

switch(type)
{
case YELLOW:
{
message[0] = 0x01
}
case GREEN:
{
message[0] = 0x04
}
default:
{
message[0] = 0x03
}
}

vformat(message[1], 191, msg, 4)
replace_all(message, 191, "!g", "^x04")
replace_all(message, 191, "!t", "^x03")
replace_all(message, 191, "!y", "^x01")

message[191] = '^0'
new team, ColorChange, index, MSG_Type
if(!id)
{
index = FindPlayer()
MSG_Type = MSG_ALL

}
else
{
MSG_Type = MSG_ONE
index = id
}

team = get_user_team(index)

ColorChange = ColorSelection(index, MSG_Type, type)
ShowColorMessage(index, MSG_Type, message)
if(ColorChange)
{
Team_Info(index, MSG_Type, TeamName[team])
}

return PLUGIN_CONTINUE
}

stock ShowColorMessage(id, type, const message[])
{
message_begin(type, SayText, _, id)
write_byte(id)
write_string(message)
message_end()

return PLUGIN_CONTINUE
}

stock Team_Info(id, type, team[])
{
message_begin(type, TeamInfo, _, id)
write_byte(id)
write_string(team)
message_end()

return 1
}

stock ColorSelection(index, type, Color:Type)
{
switch(Type)
{
case RED:
{
return Team_Info(index, type, TeamName[1])
}
case BLUE:
{
return Team_Info(index, type, TeamName[2])
}
case GREY:
{
return Team_Info(index, type, TeamName[0])
}
}

return 0
}

stock FindPlayer()
{
new i = -1
while(i <= mplayers)
{
if(is_user_connected(++i))
{
return i
}
}
return -1
}

cmd_ban.inl:
Скрытый текст
#if defined _cmdban_included
#endinput
#endif

#define _cmdban_included

#include <amxmodx>
#include <sqlx>

public cmdMenuBan(id)
{
new pid, bantime, bantype[3], banip[22], banname[32], bansteamid[34], banreason[128]

pid = banData[id][banPlayer]
bantime = banData[id][banTime]
copy(bantype, 2, banData[id][banType])
copy(banip, 21, banData[id][banIp])
copy(banname, 31, banData[id][banName])
copy(bansteamid, 33, banData[id][banSteamid])
copy(banreason, 127, banData[id][banReason])

if(get_user_state(pid, PDATA_BEING_BANNED))
{
return ColorChat(id, RED, "%s %L", PREFIX, id, "BLOCKING_DOUBLEBAN", banname)
}

add_user_state(pid, PDATA_BEING_BANNED)

if(!get_ban_type(bantype, 127, bansteamid, banip))
{
log_amx("[AMXBans ERROR cmdMenuBan] Steamid / IP Invalid! Bantype: <%s> | Authid: <%s> | IP: <%s>", bantype, bansteamid, banip)
return remove_user_state(pid, PDATA_BEING_BANNED)
}

if(get_pcvar_num(pcvar_debug) >= 2)
{
log_amx("[AMXBans cmdMenuBan %d] %d | %s | %s | %s | %s (%d min)", id, pid, banname, bansteamid, banip, banreason, bantime)
}

new pquery[512]

if(equal(bantype, "S"))
{
formatex(pquery, 511, "SELECT `player_id` FROM `%s%s` WHERE `player_id` = '%s' AND `ban_type` = 'S' AND `expired` = '0';", g_dbPrefix, TBL_BANS, bansteamid)
if(get_pcvar_num(pcvar_debug) >= 2)
{
log_amx("[AMXBans cmdMenuBan] Banned a player by SteamID")
}
}
else
{
formatex(pquery, 511, "SELECT `player_ip` FROM `%s%s` WHERE `player_ip` = '%s' AND `ban_type` = 'SI' AND `expired` = '0';", g_dbPrefix, TBL_BANS, banip)
if(get_pcvar_num(pcvar_debug) >= 2)
{
log_amx("[AMXBans cmdMenuBan] Banned a player by IP")
}
}

new data[256]
format_ban_data(data, id, pid, bantime, bantype, banip, banname, bansteamid, banreason)

return SQL_ThreadQuery(g_SqlX, "_cmdMenuBan", pquery, data, 255)
}

public _cmdMenuBan(failstate, Handle:query, const error[], errornum, const data[], size, Float:queuetime)
{
new id, pid, bantime, nums[3], bantype[3], banip[22], banname[32], bansteamid[34], banreason[128]
parse_ban_data(data, nums, bantype, banip, banname, bansteamid, banreason)

id = nums[0]
pid = nums[1]
bantime = nums[2]

if(failstate)
{
remove_user_state(pid, PDATA_BEING_BANNED)
return SQL_Error(query, error, errornum, failstate)
}

if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans cmdMenuBan function 2] Playerid: %d", pid)
}

if(SQL_NumResults(query))
{
SQL_FreeHandle(query)
ColorChat(id, RED, "%s %L", PREFIX, id, "ALREADY_BANNED")
return remove_user_state(pid, PDATA_BEING_BANNED)
}

new admin_nick[64]
mysql_get_username_safe(id, admin_nick, 63)

new player_nick[64]
copy(player_nick, 63, banname)
mysql_escape_string(player_nick, 63)

new server_name[256]
mysql_get_servername_safe(server_name, 255)

if(get_pcvar_num(pcvar_add_mapname))
{
new mapname[32]
get_mapname(mapname, 31)
format(server_name, 255, "%s (%s)", server_name, mapname)
}

new pquery[1024], len

#if defined SET_NAMES_UTF8

len = format(pquery, 1023, "SET NAMES UTF8; INSERT INTO `%s%s` (`player_id`, `player_ip`, `player_nick`, `admin_ip`, `admin_id`, `admin_nick`, `ban_type`, `ban_reason`, `cs_ban_reason`, `ban_created`, `ban_length`, `server_name`, `server_ip`, `expired`) ", g_dbPrefix, TBL_BANS)
len += format(pquery[len], 1023 - len, "VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', UNIX_TIMESTAMP(NOW()), '%d', '%s', '%s:%s', '0');", bansteamid, banip, player_nick, playerData[id][playerIp], playerData[id][playerSteamid], admin_nick, bantype, banreason, "See banlist", bantime, server_name, g_ip, g_port)

#else

len = format(pquery, 1023, "INSERT INTO `%s%s` (`player_id`, `player_ip`, `player_nick`, `admin_ip`, `admin_id`, `admin_nick`, `ban_type`, `ban_reason`, `cs_ban_reason`, `ban_created`, `ban_length`, `server_name`, `server_ip`, `expired`) ", g_dbPrefix, TBL_BANS)
len += format(pquery[len], 1023 - len, "VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', UNIX_TIMESTAMP(NOW()), '%d', '%s', '%s:%s', '0');", bansteamid, banip, player_nick, playerData[id][playerIp], playerData[id][playerSteamid], admin_nick, bantype, banreason, banreason, bantime, server_name, g_ip, g_port)

#endif

return SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, size)
}

public cmdBan(id, level, cid)
{
if(!cmd_access(id, level, cid, 3))
{
return PLUGIN_HANDLED
}

new pid, bantime, bantype[3], ban_length[10], banip[22], banname[32], bansteamid[34], ind[52], banreason[128], temp2[182], temp[192]

read_args(temp, 191)
strbreak(temp, ban_length, 9, temp2, 181)
strbreak(temp2, ind, 51, banreason, 127)
trim(ban_length)
trim(ind)
trim(banreason)
remove_quotes(banreason)

pid = locate_player(id, bantype, ind)

if(pid == -2)
{
return PLUGIN_HANDLED
}

if(!is_str_num(ban_length) || read_argc() < 3 || pid == -1)
{
return client_print(id, print_console, "[AMXBans] %L", LANG_PLAYER, "AMX_BAN_SYNTAX")
}

bantime = abs(str_to_num(ban_length))

if(get_user_state(pid, PDATA_BEING_BANNED))
{
return client_print(id, print_console, "[AMXBans] %L", id, "BLOCKING_DOUBLEBAN")
}

if(!(get_user_flags(id) & get_higher_ban_time_admin_flag()) && bantime == 0)
{
return client_print(id, print_console, "[AMXBans] %L", LANG_PLAYER, "NOT_BAN_PERMANENT")
}

add_user_state(pid, PDATA_BEING_BANNED)

if(!strlen(banreason))
{
get_pcvar_string(pcvar_default_banreason, banreason, 127)
}

new cTimeLength[128]
if(bantime > 0)
{
get_time_length(id, bantime, timeunit_minutes, cTimeLength, 127)
}
else
{
format(cTimeLength, 127, "%L", LANG_PLAYER, "TIME_ELEMENT_PERMANENTLY")
}

if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans cmdBan function 1] Playerid: %d", pid)
}

if(pid)
{
copy(bansteamid, 33, playerData[pid][playerSteamid])
copy(banname, 31, playerData[pid][playerName])
copy(banip, 21, playerData[pid][playerIp])
}
else
{
console_print(id, "[AMXBans] %L", LANG_PLAYER, "PLAYER_NOT_FOUND", ind)

if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans] Player %s could not be found", ind)
}

return remove_user_state(id, PDATA_BEING_BANNED)
}

if(!get_ban_type(bantype, 127, bansteamid, banip))
{
log_amx("[AMXBans ERROR cmdBan] Steamid / IP Invalid! Bantype: <%s> | Authid: <%s> | IP: <%s>", banreason, bansteamid, banip)
return remove_user_state(id, PDATA_BEING_BANNED)
}

new pquery[256]

if(equal(banreason, "S"))
{
formatex(pquery, 255, "SELECT `player_id` FROM `%s%s` WHERE `player_id` = '%s' AND `ban_type` = 'S' AND `expired` = '0';", g_dbPrefix, TBL_BANS, bansteamid)

if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans cmdBan] Banned a player by SteamID: %s", bansteamid)
}
}
else
{
formatex(pquery, 255, "SELECT `player_ip` FROM `%s%s` WHERE `player_ip` = '%s' AND `ban_type` = 'SI' AND `expired` = '0';", g_dbPrefix, TBL_BANS, banip)

if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans cmdBan] Banned a player by IP: %s", banip)
}
}

new data[256]
format_ban_data(data, id, pid, bantime, bantype, banip, banname, bansteamid, banreason)

return SQL_ThreadQuery(g_SqlX, "cmd_ban_", pquery, data, 256)
}

public cmd_ban_(failstate, Handle:query, const error[], errornum, const data[], size, Float:queuetime)
{
new id, pid, bantime, nums[3], bantype[3], banip[22], banname[32], bansteamid[34], banreason[128]
parse_ban_data(data, nums, bantype, banip, banname, bansteamid, banreason)

id = nums[0]
pid = nums[1]
bantime = nums[2]

if(failstate)
{
remove_user_state(pid, PDATA_BEING_BANNED)
return SQL_Error(query, error, errornum, failstate)
}

if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans cmd_ban_ function 2] Playerid: %d", pid)
}

if(!SQL_NumResults(query))
{
SQL_FreeHandle(query)

new admin_nick[100]
if(id == 0) get_user_name(id, playerData[id][playerName], 31)
mysql_get_username_safe(id, admin_nick, 99)

if(id > 0)
{
if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans cmdBan] Adminsteamid: %s, Servercmd: %s", playerData[id][playerSteamid], (id == 0) ? "Yes" : "No")
}
}
else
{
copy(playerData[id][playerSteamid], 33, "STEAM_ID_SERVER")

new servernick[100]
get_pcvar_string(pcvar_server_nick, servernick, 99)
if(strlen(servernick))
{
copy(admin_nick, 99, servernick)
}

check_reason(banreason, 127, admin_nick, 99)
}

if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans cmdBan] Admin nick: %s, Admin userid: %d", admin_nick, get_user_userid(id))
}

new server_name[200]
mysql_get_servername_safe(server_name, 199)

if(get_pcvar_num(pcvar_add_mapname))
{
new mapname[32]
get_mapname(mapname, 31)
format(server_name, 199, "%s (%s)", server_name, mapname)
}

new player_nick[64]
copy(player_nick, 63, banname)

mysql_escape_string(player_nick, 99)
mysql_escape_string(admin_nick, 99)

new pquery[1024], len

#if defined SET_NAMES_UTF8

len = format(pquery, 1023, "SET NAMES UTF8; INSERT INTO `%s%s` (`player_id`, `player_ip`, `player_nick`, `admin_ip`, `admin_id`, `admin_nick`, `ban_type`, `ban_reason`, `cs_ban_reason`, `ban_created`, `ban_length`, `server_name`, `server_ip`, `expired`) ", g_dbPrefix, TBL_BANS)
len += format(pquery[len], 1023 - len, "VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', UNIX_TIMESTAMP(NOW()), '%d', '%s', '%s:%s', '0');", bansteamid, banip, player_nick, playerData[id][playerIp], playerData[id][playerSteamid], admin_nick, bantype, banreason, "See banlist", bantime, server_name, g_ip, g_port)

#else

len = format(pquery, 1023, "INSERT INTO `%s%s` (`player_id`, `player_ip`, `player_nick`, `admin_ip`, `admin_id`, `admin_nick`, `ban_type`, `ban_reason`, `cs_ban_reason`, `ban_created`, `ban_length`, `server_name`, `server_ip`, `expired`) ", g_dbPrefix, TBL_BANS)
len += format(pquery[len], 1023 - len, "VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', UNIX_TIMESTAMP(NOW()), '%d', '%s', '%s:%s', '0');", bansteamid, banip, player_nick, playerData[id][playerIp], playerData[id][playerSteamid], admin_nick, bantype, banreason, banreason, bantime, server_name, g_ip, g_port)

#endif

new tdata[256]
format_ban_data(tdata, id, pid, bantime, bantype, banip, banname, bansteamid, banreason)

SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, tdata, 255)
}
else
{
if(id == 0)
{
log_amx("[AMXBans] %L", LANG_SERVER, "ALREADY_BANNED", bansteamid, banip)
}
else
{
client_print(id, print_console, "[AMXBans] %L", LANG_PLAYER, "ALREADY_BANNED", bansteamid, banip)
remove_user_state(pid, PDATA_BEING_BANNED)
}
}

return PLUGIN_HANDLED
}

public insert_bandetails(failstate, Handle:query, const error[], errornum, const data[], size, Float:queuetime)
{
new pid, nums[3], banip[22], bansteamid[34], banreason[128]
parse_ban_data(data, nums, _, banip, _, bansteamid, banreason)

pid = nums[1]

if(failstate)
{
return SQL_Error(query, error, errornum, failstate)
}

if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans cmdBan function 5] Playerid: %d", pid)
}

#if defined SET_NAMES_UTF8

SQL_FreeHandle(query)

new pquery[1024]
formatex(pquery, 1023, "SELECT (@bid := (SELECT MAX(`bid`) FROM `%s%s` WHERE (`player_ip` = '%s' AND `ban_type` = 'SI') OR (`player_id` = '%s' AND `ban_type` = 'S'))) AS `bid`; UPDATE `%s%s` SET `cs_ban_reason` = '%s' WHERE `bid` = @bid;", g_dbPrefix, TBL_BANS, banip, bansteamid, g_dbPrefix, TBL_BANS, banreason)

return SQL_ThreadQuery(g_SqlX, "KocTblJIu_KocTblJIb4uku", pquery, data, size)
}

public KocTblJIu_KocTblJIb4uku(failstate, Handle:query, const error[], errornum, const data[], size, Float:queuetime)
{
new id, pid, nums[3]
parse_ban_data(data, nums)

id = nums[0]
pid = nums[1]

if(failstate)
{
delayed_kick(pid + 200)
return SQL_Error(query, error, errornum, failstate)
}

if(!SQL_NumResults(query))
{
return SQL_FreeHandle(query)
}

new bid = SQL_ReadResult(query, 0)

#else

new id = nums[0]
new bid = SQL_GetInsertId(query)

#endif

SQL_FreeHandle(query)

new motd[3]
motd[0] = id
motd[1] = pid
motd[2] = bid

if(get_pcvar_num(pcvar_snapshot))
{
screen_user(id, pid)
return set_task(1.5, "select_amxbans_motd", 117811, motd, 3)
}

return select_amxbans_motd(motd)
}

public select_amxbans_motd(const data[])
{
if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans cmdBan function 5] Bid: %d", data[2])
}

new pquery[1024]

#if defined SET_NAMES_UTF8

format(pquery, 1023, "SELECT `si`.`amxban_motd`, `ba`.`player_nick`, `ba`.`player_id`, `ba`.`player_ip`, \
`ba`.`admin_nick`, `ba`.`admin_id`, `ba`.`ban_type`, `ba`.`cs_ban_reason`, `ba`.`ban_length` FROM `%s%s` AS `si`,`%s%s` AS `ba` \
WHERE `ba`.`bid` = '%d' AND `si`.`address` = '%s:%s';", g_dbPrefix, TBL_SERVERINFO, g_dbPrefix, TBL_BANS, data[2], g_ip, g_port)

#else

format(pquery, 1023, "SELECT `si`.`amxban_motd`, `ba`.`player_nick`, `ba`.`player_id`, `ba`.`player_ip`, \
`ba`.`admin_nick`, `ba`.`admin_id`, `ba`.`ban_type`, `ba`.`ban_reason`, `ba`.`ban_length` FROM `%s%s` AS `si`,`%s%s` AS `ba` \
WHERE `ba`.`bid` = '%d' AND `si`.`address` = '%s:%s';", g_dbPrefix, TBL_SERVERINFO, g_dbPrefix, TBL_BANS, data[2], g_ip, g_port)

#endif

return SQL_ThreadQuery(g_SqlX, "_select_amxbans_motd", pquery, data, 3)
}

public _select_amxbans_motd(failstate, Handle:query, const error[], errornum, const data[], size, Float:queuetime)
{
if(failstate)
{
delayed_kick(data[1] + 200)
return SQL_Error(query, error, errornum, failstate)
}

new id = data[0]
new player = data[1]
new bid = data[2]

if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans cmdBan function 6] Playerid: %d, Bid: %d", player, bid)
}

new amxban_motd_url[256]
new admin_steamid[35], admin_nick[100], pl_steamid[35], pl_nick[100], pl_ip[22]
new ban_type[32], ban_reason[128], iBanLength

if(!SQL_NumResults(query))
{
SQL_FreeHandle(query)
amxban_motd_url[0] = '^0'
log_amx("[AMXBans cmdBan function 6.1] select_motd without result: %d, Bid: %d", player, bid)

return set_task(kick_delay, "delayed_kick", player + 200)
}
else
{
SQL_ReadResult(query, 0, amxban_motd_url, 256)
SQL_ReadResult(query, 1, pl_nick, 99)
SQL_ReadResult(query, 2, pl_steamid, 34)
SQL_ReadResult(query, 3, pl_ip, 21)
SQL_ReadResult(query, 4, admin_nick, 99)
SQL_ReadResult(query, 5, admin_steamid, 34)
SQL_ReadResult(query, 6, ban_type, 31)
SQL_ReadResult(query, 7, ban_reason, 127)
iBanLength = SQL_ReadResult(query, 8)
SQL_FreeHandle(query)
}

new admin_team[11]

get_user_team(id, admin_team, 10)

new cTimeLengthPlayer[128]
new cTimeLengthServer[128]

if(iBanLength > 0)
{
get_time_length(player, iBanLength, timeunit_minutes, cTimeLengthPlayer, 127)
get_time_length(0, iBanLength, timeunit_minutes, cTimeLengthServer, 127)
}
else
{
format(cTimeLengthPlayer, 127, "%L", player, "TIME_ELEMENT_PERMANENTLY")
format(cTimeLengthServer, 127, "%L", LANG_SERVER, "TIME_ELEMENT_PERMANENTLY")
}

new show_activity = get_cvar_num("amx_show_activity")

if((get_user_flags(id) & get_admin_mole_access_flag() || id == 0) && (get_pcvar_num(pcvar_show_name_evenif_mole) == 0))
{
show_activity = 1
}

if(player)
{
new complain_url[256]
get_pcvar_string(pcvar_complainurl, complain_url, 255)

client_print(player, print_console, "[AMXBans] ===============================================")

new ban_motd[1400]
switch(show_activity)
{
case 1:
{
client_print(player, print_console, "[AMXBans] %L", player, "MSG_1")
client_print(player, print_console, "[AMXBans] %L", player, "MSG_7", complain_url)
format(ban_motd, 1399, "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid)
}
case 2:
{
client_print(player, print_console, "[AMXBans] %L", player, "MSG_6", admin_nick)
client_print(player, print_console, "[AMXBans] %L", player, "MSG_7", complain_url)
format(ban_motd, 1399, "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick)
}
case 3:
{
if(get_user_state(player, PDATA_ADMIN))
{
client_print(player, print_console, "[AMXBans] %L", player, "MSG_6", admin_nick)
client_print(player, print_console, "[AMXBans] %L", player, "MSG_7", complain_url)
format(ban_motd, 1399, "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick)
}
else
{
client_print(player, print_console, "[AMXBans] %L", player, "MSG_1")
client_print(player, print_console, "[AMXBans] %L", player, "MSG_7", complain_url)
format(ban_motd, 1399, "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid)
}
}
case 4:
{
if(get_user_state(player, PDATA_ADMIN))
{
client_print(player, print_console, "[AMXBans] %L", player, "MSG_6", admin_nick)
client_print(player, print_console, "[AMXBans] %L", player, "MSG_7", complain_url)
format(ban_motd, 1399, "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick)
}
}
case 5:
{
if(get_user_state(player, PDATA_ADMIN))
{
client_print(player, print_console, "[AMXBans] %L", player, "MSG_1")
client_print(player, print_console, "[AMXBans] %L", player, "MSG_7", complain_url)
format(ban_motd, 1399, "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid)
}
}
}

client_print(player, print_console, "[AMXBans] %L", player, "MSG_2", ban_reason)
client_print(player, print_console, "[AMXBans] %L", player, "MSG_3", cTimeLengthPlayer)
client_print(player, print_console, "[AMXBans] %L", player, "MSG_4", pl_steamid)
client_print(player, print_console, "[AMXBans] %L", player, "MSG_5", pl_ip)
client_print(player, print_console, "[AMXBans] ===============================================")

new msg[1400]

if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans cmdBan function 6.2] Bid: %d URL= %s Kickdelay:%f", bid, amxban_motd_url, kick_delay)
}

if(contain(amxban_motd_url, "sid=%s&adm=%d&lang=%s") != -1)
{
new bidstr[10],lang[5]
formatex(bidstr, 9, "B%d", bid)
get_user_info(player, "lang", lang, 9)

if(equal(lang, ""))
{
get_cvar_string("amx_language", lang, 9)
}

format(msg, 1399, amxban_motd_url, bidstr, (show_activity == 2) ? 1 : 0, lang)
if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans cmdBan function 6.3] Motd: %s", msg)
}
}
else
{
formatex(msg, 1399, ban_motd)
}

if(!is_user_disconnected(player))
{
if(get_user_state(player, PDATA_CONNECTED))
{
new ret
ExecuteForward(MFHandle[Ban_MotdOpen], ret, player)

show_motd(player, msg, "AMXBans Gm 1.5.2")
set_pev(player, pev_flags, pev(player, pev_flags) | FL_FROZEN)
}

set_task(kick_delay, "delayed_kick", player + 200)
}
}
else
{
console_print(id, "[AMXBans] %L", LANG_PLAYER, "PLAYER_NOT_FOUND", g_ident)

if(get_pcvar_num(pcvar_debug) >= 1)
{
log_amx("[AMXBans] Player %s could not be found", g_ident)
}
return PLUGIN_HANDLED

}

if(equal(ban_type, "S"))
{
if(id == 0)
{
log_message("[AMXBans] %L", LANG_SERVER,"STEAMID_BANNED_SUCCESS_IP_LOGGED", pl_steamid)
}
else
{
client_print(id, print_console, "[AMXBans] %L", id, "STEAMID_BANNED_SUCCESS_IP_LOGGED", pl_steamid)
}
}
else
{
if(id == 0)
{
log_message("[AMXBans] %L", LANG_SERVER, "STEAMID_IP_BANNED_SUCCESS")
}
else
{
client_print(id, print_console, "[AMXBans] %L", id," STEAMID_IP_BANNED_SUCCESS")
}
}

if(id == 0)
{
admin_steamid[0] = '^0'
admin_team[0] = '^0'
}

if(iBanLength > 0)
{
log_amx("%L", LANG_SERVER, "BAN_LOG",admin_nick, get_user_userid(id), admin_steamid, admin_team, \
pl_nick, pl_steamid, cTimeLengthServer, iBanLength, ban_reason)

if(get_pcvar_num(pcvar_show_in_hlsw))
{
log_message("^"%s<%d><%s><%s>^" triggered ^"amx_chat^" (text ^"%L^")", admin_nick, get_user_userid(id), admin_steamid, admin_team, \
LANG_SERVER, "BAN_CHATLOG", pl_nick, pl_steamid, cTimeLengthServer, iBanLength, ban_reason)
}
}
else
{
log_amx("%L", LANG_SERVER, "BAN_LOG_PERM", admin_nick, get_user_userid(id), admin_steamid, admin_team, pl_nick, pl_steamid, ban_reason)

if(get_pcvar_num(pcvar_show_in_hlsw))
{
log_message("^"%s<%d><%s><%s>^" triggered ^"amx_chat^" (text ^"%L^")", admin_nick, get_user_userid(id), admin_steamid, admin_team, \
LANG_SERVER, "BAN_CHATLOG_PERM", pl_nick, pl_steamid, ban_reason)
}
}

new message[191]

switch(show_activity)
{
case 1:
{
for(new i = 1; i <= plnum; i++)
{
if(get_user_state(i, PDATA_HLTV) || get_user_state(i, PDATA_BOT) || !get_user_state(i, PDATA_CONNECTED)) continue

get_time_length(i, iBanLength, timeunit_minutes, cTimeLengthPlayer, 127)

if(iBanLength > 0)
{
format(message, 190, "%L", i, "PUBLIC_BAN_ANNOUNCE", pl_nick, cTimeLengthPlayer, ban_reason)
}
else
{
format(message, 190, "%L", i, "PUBLIC_BAN_ANNOUNCE_PERM", pl_nick, ban_reason)
}

if(get_pcvar_num(pcvar_show_hud_messages) == 1)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 10.0 , 0.5, 0.15, -1)
ShowSyncHudMsg(i, g_MyMsgSync, message)
}
ColorChat(i, RED, "%s %s", PREFIX, message)
client_print(i, print_console, message)
}
}
case 2:
{
for(new i = 1; i <= plnum; i++)
{
if(get_user_state(i, PDATA_HLTV) || get_user_state(i, PDATA_BOT) || !get_user_state(i, PDATA_CONNECTED)) continue

get_time_length(i, iBanLength, timeunit_minutes, cTimeLengthPlayer, 127)

if(iBanLength > 0)
{
format(message, 190, "%L", i, "PUBLIC_BAN_ANNOUNCE_2", pl_nick, cTimeLengthPlayer, ban_reason, admin_nick)
}
else
{
format(message, 190, "%L", i, "PUBLIC_BAN_ANNOUNCE_2_PERM", pl_nick, ban_reason, admin_nick)
}

if(get_pcvar_num(pcvar_show_hud_messages) == 1)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 10.0 , 0.5, 0.15, -1)
ShowSyncHudMsg(i, g_MyMsgSync, message)
}

ColorChat(i, RED, "%s %s", PREFIX, message)
client_print(i, print_console, "%s", message)
}
}
case 3:
{
if(is_user_admin(id))
{
for(new i = 1; i <= plnum; i++)
{
if(get_user_state(i, PDATA_HLTV) || get_user_state(i, PDATA_BOT) || !get_user_state(i, PDATA_CONNECTED)) continue

get_time_length(i, iBanLength, timeunit_minutes, cTimeLengthPlayer, 127)

if(iBanLength > 0)
{
format(message,190, "%L", i, "PUBLIC_BAN_ANNOUNCE_2", pl_nick, cTimeLengthPlayer, ban_reason, admin_nick)
}
else
{
format(message,190, "%L", i, "PUBLIC_BAN_ANNOUNCE_2_PERM", pl_nick, ban_reason, admin_nick)
}

if(get_pcvar_num(pcvar_show_hud_messages) == 1)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 10.0 , 0.5, 0.15, -1)
ShowSyncHudMsg(i, g_MyMsgSync, message)
}

ColorChat(i, RED, "%s %s", PREFIX, message)
client_print(i, print_console, "%s", message)
}
}
else
{
for(new i = 1; i <= plnum; i++)
{
if(get_user_state(i, PDATA_HLTV) || get_user_state(i, PDATA_BOT) || !get_user_state(i, PDATA_CONNECTED)) continue

get_time_length(i, iBanLength, timeunit_minutes, cTimeLengthPlayer, 127)

if(iBanLength > 0)
{
format(message, 190, "%L", i, "PUBLIC_BAN_ANNOUNCE", pl_nick, cTimeLengthPlayer, ban_reason)
}
else
{
format(message, 190, "%L", i, "PUBLIC_BAN_ANNOUNCE_PERM", pl_nick, ban_reason)
}

if(get_pcvar_num(pcvar_show_hud_messages) == 1)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 10.0 , 0.5, 0.15, -1)
ShowSyncHudMsg(i, g_MyMsgSync, message)
}

ColorChat(i, RED, "%s %s", PREFIX, message)
client_print(i, print_console, "%s", message)
}
}
}
case 4:
{
if(is_user_admin(id))
{
for(new i = 1; i <= plnum; i++)
{
if(get_user_state(i, PDATA_HLTV) || get_user_state(i, PDATA_BOT) || !get_user_state(i, PDATA_CONNECTED)) continue
get_time_length(i, iBanLength, timeunit_minutes, cTimeLengthPlayer, 127)

if(iBanLength > 0)
{
format(message, 190, "%L", i, "PUBLIC_BAN_ANNOUNCE_2", pl_nick, cTimeLengthPlayer, ban_reason, admin_nick)
}
else
{
format(message, 190, "%L", i, "PUBLIC_BAN_ANNOUNCE_2_PERM", pl_nick, ban_reason, admin_nick)
}
if(get_pcvar_num(pcvar_show_hud_messages) == 1)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 10.0 , 0.5, 0.15, -1)
ShowSyncHudMsg(i, g_MyMsgSync, message)
}

ColorChat(i, RED, "%s %s", PREFIX, message)
client_print(i, print_console, "%s", message)
}
}
}
case 5:
{
if(is_user_admin(id))
{
for(new i = 1; i <= plnum; i++)
{
if(get_user_state(i, PDATA_HLTV) || get_user_state(i, PDATA_BOT) || !get_user_state(i, PDATA_CONNECTED)) continue

get_time_length(i, iBanLength, timeunit_minutes, cTimeLengthPlayer, 127)

if(iBanLength > 0)
{
format(message, 190, "%L", i, "PUBLIC_BAN_ANNOUNCE", pl_nick, cTimeLengthPlayer, ban_reason)
}
else
{
format(message, 190, "%L", i, "PUBLIC_BAN_ANNOUNCE_PERM", pl_nick, ban_reason)
}

if(get_pcvar_num(pcvar_show_hud_messages) == 1)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 10.0 , 0.5, 0.15, -1)
ShowSyncHudMsg(i, g_MyMsgSync, message)
}

ColorChat(i, RED, "%s %s", PREFIX, message)
client_print(i, print_console, "%s", message)
}
}
}
}

return PLUGIN_HANDLED
}

public locate_player(id, output[], const identifier[])
{
new player = find_player("c", identifier)

if(!player)
{
player = find_player("bl", identifier)
}
else
{
copy(output, 2, "S")
}

if(!player)
{
player = find_player("d", identifier)
if(player)
{
copy(output, 2, "SI")
}
}

if(!player && identifier[0]=='#' && identifier[1])
{
player = find_player("k", str_to_num(identifier[1]))
}

if(player)
{
if(get_user_state(player, PDATA_IMMUNITY))
{
if(id == 0)
{
server_print("[AMXBans] Client has immunity")
}
else
{
console_print(id, "[AMXBans] Client has immunity")
}
return -2
}
}
else
{
player = -1
}

return player
}

public screen_user(id, pid)
{
if(is_user_disconnected(pid))
{
return PLUGIN_CONTINUE
}

new timestamp[32]
get_time("%d.%m.%Y - %H:%M:%S", timestamp, 31)
ColorChat(pid, RED, "%s Screenshot taken on player ^x03%s^x01 (^x04%s^x01) ^x03%s^x01 by admin ^x04%s", PREFIX, playerData[pid][playerName], playerData[pid][playerIp], timestamp, playerData[id][playerName])
set_hudmessage(255, 255, 0, -1.0, 0.01, 0, 0.02, 15.0, 0.0, 0.0, -1)
show_hudmessage(pid, "Player: %s (%s) Time: %s Admin: %s", playerData[pid][playerName], playerData[pid][playerIp], timestamp, playerData[id][playerName])

return set_task(1.0, "get_snapshot", pid + 118911)
}

public get_snapshot(id)
{
id -= 118911
return client_cmd(id, "snapshot")
}

stock parse_ban_data(const input[], nums[] = "", bantype[] = "", banip[] = "", banname[] = "", bansteamid[] = "", banreason[] = "")
{
new sid[5], spid[5], stime[10]
parse(input, sid, 4, spid, 4, stime, 9, bantype, 2, banip, 21, banname, 31, bansteamid, 33, banreason, 127)

nums[0] = str_to_num(sid)
nums[1] = str_to_num(spid)
nums[2] = str_to_num(stime)

return 1
}

stock format_ban_data(output[], id, pid, bantime, const bantype[], const banip[], const banname[], const bansteamid[], const banreason[])
{
return formatex(output, 255, "^"%d^" ^"%d^" ^"%d^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", id, pid, bantime, bantype, banip, banname, bansteamid, banreason)
}

Помогите исправить пожалуйста.

Отредактировал: underwoker, - 30.7.2012, 7:49
Перейти в начало страницы     
  
Статус пользователя kasIIep
сообщение 30.7.2012, 8:29
Сообщение #2
Стаж: 17 лет

Сообщений: 333
Благодарностей: 88
Полезность: 209

Меценат Меценат

Совсем не давно ставил тоже 1.6, 2 недели проработал и начал сервер падать с точно такой ошибкой, убирал все плагины не стандартные все равно падал, поиск по гуглу тоже ни чего не дал ни где нет внятного ответа. поставил 1.5.1 3 недели работает без ошибок вроде.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
underwoker
сообщение 30.7.2012, 8:37
Сообщение #3
Стаж: 56 лет


Благодарностей:

К сожалению на хостинге только gm 1.6
Перейти в начало страницы     
   + Цитировать сообщение
Статус пользователя Kirby Magicman
сообщение 30.7.2012, 8:51
Сообщение #4


Стаж: 15 лет

Сообщений: 1083
Благодарностей: 398
Полезность: 617

Попробуй это
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
underwoker
сообщение 30.7.2012, 10:16
Сообщение #5
Стаж: 56 лет


Благодарностей:

Цитата(Junglesport @ 30.7.2012, 8:51) *
Попробуй это

При компиляции варнинг.
// D:\═єцэюх\╤ъЁшяЄшэу\scripting\include/amxbans/color_chat.inl(89) : warning 21
7: loose indentation
Перейти в начало страницы     
   +
Статус пользователя Kirby Magicman
сообщение 30.7.2012, 10:55
Сообщение #6


Стаж: 15 лет

Сообщений: 1083
Благодарностей: 398
Полезность: 617

Плагины скачанны с gm-community? Или хостер свои вставил?

Отредактировал: Junglesport, - 30.7.2012, 10:56
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
underwoker
сообщение 30.7.2012, 11:56
Сообщение #7
Стаж: 56 лет


Благодарностей:

old.thegm.ru Оттуда качаю.

Хостер ставил не свои. Хостер поставил АМХбанс скачав его с офф сайта.
Перейти в начало страницы     
   + Цитировать сообщение
Статус пользователя pxl
сообщение 30.7.2012, 13:31
Сообщение #8


Стаж: 13 лет

Сообщений: 8
Благодарностей: 0
Полезность: 0

Хостинг какой?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
underwoker
сообщение 30.7.2012, 17:07
Сообщение #9
Стаж: 56 лет


Благодарностей:

www.game-host.ws
Перейти в начало страницы     
   + Цитировать сообщение
underwoker
сообщение 31.7.2012, 15:05
Сообщение #10
Стаж: 56 лет


Благодарностей:

Upupup
Перейти в начало страницы     
   + Цитировать сообщение
underwoker
сообщение 2.8.2012, 21:02
Сообщение #11
Стаж: 56 лет


Благодарностей:

Мб у кого нибудь есть АМхбанс 1.6 с которым у них сервер не падает. Прошу скинуть. :)
Перейти в начало страницы     
   + Цитировать сообщение
Статус пользователя crysis55
сообщение 10.8.2012, 14:36
Сообщение #12
Стаж: 13 лет

Сообщений: 10
Благодарностей: 2
Полезность: 0

У меня стоит данный AmxBans ,логи забились ошибками,ошибка в самом плагине,вреда от этих логов-0.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Kirby Magicman
сообщение 10.8.2012, 15:30
Сообщение #13


Стаж: 15 лет

Сообщений: 1083
Благодарностей: 398
Полезность: 617

Цитата(crysis55 @ 10.8.2012, 15:36) *
У меня стоит данный AmxBans ,логи забились ошибками,ошибка в самом плагине,вреда от этих логов-0.

Почему же у меня amxbans работает успешно и без ошибок?
В 90% случаев банс падает из-за коннекта к бд. Вывод: ставьте банс на ту же тачку что и сервер.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
underwoker
сообщение 10.8.2012, 23:51
Сообщение #14
Стаж: 56 лет


Благодарностей:

Цитата(Junglesport @ 10.8.2012, 16:30) *
Почему же у меня amxbans работает успешно и без ошибок?
В 90% случаев банс падает из-за коннекта к бд. Вывод: ставьте банс на ту же тачку что и сервер.

Ясно. Заметил что когда поставил чтение админов из файла падения прекратились. У вас как?
Перейти в начало страницы     
   +
Статус пользователя Kirby Magicman
сообщение 11.8.2012, 0:56
Сообщение #15


Стаж: 15 лет

Сообщений: 1083
Благодарностей: 398
Полезность: 617

Цитата(underwoker @ 11.8.2012, 0:51) *
Ясно. Заметил что когда поставил чтение админов из файла падения прекратились. У вас как?

У меня все подгружается с бд так как сервер на той же тачке что и мускул.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя HoHoL
сообщение 11.8.2012, 2:36
Сообщение #16


Иконка группы

Стаж: 14 лет

Сообщений: 962
Благодарностей: 918
Полезность: 1174

Меценат Меценат

А чего вы удивляетесь ?) AMXBans всегда из себя представлял дырявую систему , так как с каждым его обновлением появлялась необходимость в исправлениях своими же руками , так как обновить сборку с фиксами создателям трудно .

Если вы хотите , что б он работал отлично - ставте всё на 1 тачке , собственно как сказал Junglesport.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
underwoker
сообщение 11.8.2012, 3:21
Сообщение #17
Стаж: 56 лет


Благодарностей:

Цитата(^Yur4IK @ 11.8.2012, 2:36) *
А чего вы удивляетесь ?) AMXBans всегда из себя представлял дырявую систему , так как с каждым его обновлением появлялась необходимость в исправлениях своими же руками , так как обновить сборку с фиксами создателям трудно .

Если вы хотите , что б он работал отлично - ставте всё на 1 тачке , собственно как сказал Junglesport.

Понятно. Спасибо.
Перейти в начало страницы     
   +
Статус пользователя fiero
сообщение 11.8.2012, 8:11
Сообщение #18
Стаж: 14 лет

Сообщений: 89
Благодарностей: 2
Полезность: 23

У меня проблемка, часто не могут зайти админы,их кикает из за якобы не введённого пароля,но все админы прописаны в амх банс и пароли они тоже прописывают .Исправляет такую ситуацию только заново введённый пароль и перезагрузка админов. Поскажите,как исправить это?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: