Русское сообщество по скриптингу

где момент бана?

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

где момент бана?

Сообщение jban1990 » 12 май 2020, 21:17

Всем ку!
где в amxbans_main момент бана? подскажите пожалуйста
Код: Выделить всё
#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_NAMEVERSIONAUTHOR)
    
register_cvar("amxbans_version"VERSIONFCVAR_SERVER FCVAR_EXTDLL FCVAR_UNLOGGEDFCVAR_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(1287)
    
g_banReasons_Bantime ArrayCreate(17)
    
    
g_disconPLname ArrayCreate(321)
    
g_disconPLauthid ArrayCreate(351)
    
g_disconPLip ArrayCreate(221)
    
    
g_AReplaceInd ArrayCreate(641)
    
g_AReplace ArrayCreate(641)
    
g_ReplaceInd ArrayCreate(641)
    
g_Replace ArrayCreate(641)
    
    
plnum get_maxplayers()
    
    for(new 
1<= plnumi++)
    {
        
set_user_state(iPDATA_DISCONNECTED)
    }

    new 
configsDir[64]
    
get_configsdir(configsDir63)
    
    
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_IGNOREFP_CELL)
    
MFHandle[Player_Flagged] = CreateMultiForward("amxbans_player_flagged"ET_IGNOREFP_CELLFP_CELLFP_STRING)
    
MFHandle[Player_UnFlagged] = CreateMultiForward("amxbans_player_unflagged"ET_IGNOREFP_CELL)
    return 
PLUGIN_CONTINUE
}

public 
addMenus() 
{
    new 
szKey[128]
    
    if(
get_pcvar_num(pcvar_flag))
    {
        
format(szKey127"%L"LANG_SERVER"ADMMENU_FLAGGING")
        
AddMenuItem(szKey"amx_flaggingmenu"ADMIN_BANPLUGIN_NAME)
    }
    
    if(
get_pcvar_num(pcvar_discon_in_banlist))
    {
        
format(szKey127"%L"LANG_SERVER"ADMMENU_DISCONNECTED")
        
AddMenuItem(szKey"amx_bandisconnectedmenu"ADMIN_BANPLUGIN_NAME)
    }
    
    if(
get_pcvar_num(pcvar_history))
    {
        
format(szKey127"%L"LANG_SERVER"ADMMENU_HISTORY")
        
AddMenuItem(szKey"amx_banhistorymenu"ADMIN_BANPLUGIN_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_dbPrefix31dbPrefix)
    
    
get_user_ip(0playerData[0][playerIp], 211)

    
g_SqlX sqlTuple
    
    
if(get_pcvar_num(pcvar_debug) >= 1)
    {
        
log_amx("[AMXBans] Received DB Info Tuple from amxbans_core: %d | %s"sqlTupleg_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"host63)
        
get_cvar_string("amx_sql_user"user63)
        
get_cvar_string("amx_sql_pass"pass63)
        
get_cvar_string("amx_sql_db"db63)
        
        
g_SqlX SQL_MakeDbTuple(hostuserpassdb)
        
        
get_cvar_string("amx_sql_prefix"g_dbPrefix31)
    }
    
    
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_adminflags23)
    
    return 
read_flags(flags)
}

public 
get_admin_mole_access_flag() 
{
    new 
flags[24]
    
get_pcvar_string(pcvar_admin_mole_accessflags23)
    
    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(idPDATA_KICKED)

    return 
server_cmd("kick #%d  %L"get_user_userid(id), id"KICK_MESSAGE")
}


stock SQL_Error(Handle:query, const error[], errornumfailstate)
{
    new 
qstring[1024]
    
SQL_GetQueryString(queryqstring1023)
    
    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"errorerrornum)
    
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(idplayerData[id][playerName], 31)
        
get_user_authid(idplayerData[id][playerSteamid], 33)
        
get_user_ip(idplayerData[id][playerIp], 211)
    }
    
    if(
g_SqlX == Empty_Handle
    {
        return 
set_task(1.0"client_authorized"id 201)
    }
    
    
set_user_state(idPDATA_CONNECTING)
    
    if(
is_user_admin(id))
    {
        
add_user_state(idPDATA_ADMIN)
        if(
get_user_flags(id) & ADMIN_IMMUNITY)
        {
            
add_user_state(idPDATA_IMMUNITY)
        }
    }

    return 
set_task(0.25"check_player"id 203)
}

public 
client_putinserver(id
{
    if(
id 202)
    {
        
id -= 202
    
}
    else
    {
        
remove_user_state(idPDATA_CONNECTING)
        
        if(
is_user_hltv(id))
        {
            
add_user_state(idPDATA_HLTV)
        }
        if(
is_user_bot(id)) 
        {    
            
add_user_state(idPDATA_BOT)
        }
        
        
add_user_state(idPDATA_CONNECTED)
    }
    
    if(
g_SqlX == Empty_Handle
    {
        return 
set_task(1.0"client_putinserver"id 202)
    }
    
    if(
get_user_state(idPDATA_IMMUNITY))
    {
        return 
PLUGIN_HANDLED
    
}
    
    
check_player_post(id)
    
disconnect_remove_player(id)
    
    return 
PLUGIN_CONTINUE
}

public 
client_disconnect(id
{
    if(!
get_user_state(idPDATA_KICKED) && !get_user_state(idPDATA_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(idPDATA_DISCONNECTED)
}

public 
client_infochanged(id)
{
    if(!
get_user_state(idPDATA_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 || 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 
0
    
new num[32], flag[32]
    while(
argc)    
    {
        
read_argv(1arg31)
        
parse(argnum31flag31)

        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 || 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 
0
    
new num[32], flag[32]
    while(
argc
    {
        
read_argv(1arg31)
        
parse(argnum31flag31)

        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 || 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 
0
    
new num[32], flag[32]
    while(
argc
    {
        
read_argv(1arg31)
        
parse(argnum31flag31)

        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 == || num == 0)
    {
        
server_cmd("amx_sethighbantimes 5 60 240 600 6000 0")
    }
    if(
num == || num == 0)
    {
        
server_cmd("amx_setlowbantimes 5 30 60 480 600 1440")
    }
    if(
num == || 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(destlen"\\""\\\\")
    
replace_all(destlen"\0""\\0")
    
replace_all(destlen"\n""\\n")
    
replace_all(destlen"\r""\\r")
    
replace_all(destlen"\x1a""\Z")
    
replace_all(destlen"'""\'")
    
replace_all(destlen"^"", "\^"")
    
    return 
1
}

stock mysql_get_username_safe(iddest[], len
{
    
copy(destlenplayerData[id][playerName])
    return 
mysql_escape_string(destlen)
}

stock mysql_get_servername_safe(dest[], len
{
    
get_pcvar_string(pcvar_hostnamedestlen)
    return 
mysql_escape_string(destlen)
Аватара пользователя
jban1990
 
Сообщения: 46
Зарегистрирован: 30 мар 2020, 17:06
Забанен
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: где момент бана?

Сообщение RevCrew » 13 май 2020, 00:40

Код: Выделить всё
#include "include/amxbans/cmd_ban.inl" 
здесь вроде
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

Re: где момент бана?

Сообщение jban1990 » 13 май 2020, 01:35

RevCrew писал(а):
Код: Выделить всё
#include "include/amxbans/cmd_ban.inl"  
здесь вроде

а в нём?
Код: Выделить всё
#if defined _cmdban_included
    #endinput
#endif

#define _cmdban_included

#include <amxmodx>
#include <sqlx>

public cmdMenuBan(id
{
    new 
pidbantimebantype[3], banip[22], banname[32], bansteamid[34], banreason[128]
    
    
pid banData[id][banPlayer]
    
bantime banData[id][banTime]
    
copy(bantype2banData[id][banType])
    
copy(banip21banData[id][banIp])
    
copy(banname31banData[id][banName])
    
copy(bansteamid33banData[id][banSteamid])
    
copy(banreason127banData[id][banReason])
    
    if(
get_user_state(pidPDATA_BEING_BANNED)) 
    {
        return 
ColorChat(idRED"%s %L"PREFIXid"BLOCKING_DOUBLEBAN"banname)
    }
    
    
add_user_state(pidPDATA_BEING_BANNED)
    
    if(!
get_ban_type(bantype127bansteamidbanip)) 
    {
        
log_amx("[AMXBans ERROR cmdMenuBan] Steamid / IP Invalid! Bantype: <%s> | Authid: <%s> | IP: <%s>"bantypebansteamidbanip)
        return 
remove_user_state(pidPDATA_BEING_BANNED)
    }
    
    if(
get_pcvar_num(pcvar_debug) >= 2
    {
        
log_amx("[AMXBans cmdMenuBan %d] %d | %s | %s | %s | %s (%d min)"idpidbannamebansteamidbanipbanreasonbantime)
    }
    
    new 
pquery[512]
    
    if(
equal(bantype"S")) 
    {
        
formatex(pquery511"SELECT `player_id` FROM `%s%s` WHERE `player_id` = '%s' AND `ban_type` = 'S' AND `expired` = '0';"g_dbPrefixTBL_BANSbansteamid)
        if(
get_pcvar_num(pcvar_debug) >= 2)
        {
            
log_amx("[AMXBans cmdMenuBan] Banned a player by SteamID")
        }
    } 
    else 
    {
        
formatex(pquery511"SELECT `player_ip` FROM `%s%s` WHERE `player_ip` = '%s' AND `ban_type` = 'SI' AND `expired` = '0';"g_dbPrefixTBL_BANSbanip)
        if(
get_pcvar_num(pcvar_debug) >= 2)
        {
            
log_amx("[AMXBans cmdMenuBan] Banned a player by IP")
        }
    }
    
    new 
data[256]
    
format_ban_data(dataidpidbantimebantypebanipbannamebansteamidbanreason)
    
    return 
SQL_ThreadQuery(g_SqlX"_cmdMenuBan"pquerydata255)
}

public 
plugin_precache () 
{
        
precache_sound(start_sounds[0])
        
precache_sound(start_sounds[1])
        
precache_sound(start_sounds[2])
    
precache_sound(start_sounds[3])
}

public 
_cmdMenuBan(failstateHandle:query, const error[], errornum, const data[], sizeFloat:queuetime)
{
    new 
idpidbantimenums[3], bantype[3], banip[22], banname[32], bansteamid[34], banreason[128]
    
parse_ban_data(datanumsbantypebanipbannamebansteamidbanreason)
    
    
id nums[0]
    
pid nums[1]
    
bantime nums[2]

    if(
failstate)
    {
        
remove_user_state(pidPDATA_BEING_BANNED)
        return 
SQL_Error(queryerrorerrornumfailstate)
    }
    
    if(
get_pcvar_num(pcvar_debug) >= 1)
    {
        
log_amx("[AMXBans cmdMenuBan function 2] Playerid: %d"pid)
    }
    
    if(
SQL_NumResults(query)) 
    {
        
SQL_FreeHandle(query)
        
ColorChat(idRED"%s %L"PREFIXid"ALREADY_BANNED")
        return 
remove_user_state(pidPDATA_BEING_BANNED)
    }
    
    new 
admin_nick[64]
    
mysql_get_username_safe(idadmin_nick63)
    
    new 
player_nick[64]
    
copy(player_nick63banname)
    
mysql_escape_string(player_nick63)
    
    new 
server_name[256]
    
mysql_get_servername_safe(server_name255)
    
    if(
get_pcvar_num(pcvar_add_mapname)) 
    {
        new 
mapname[32]
        
get_mapname(mapname31)
        
format(server_name255"%s (%s)"server_namemapname)
    }
    
    new 
pquery[1024], len
    
#if defined SET_NAMES_UTF8

    
len format(pquery1023"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_dbPrefixTBL_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');"bansteamidbanipplayer_nickplayerData[id][playerIp], playerData[id][playerSteamid], admin_nickbantypebanreason"See banlist"bantimeserver_nameg_ipg_port)
    
#else

    
len format(pquery1023"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_dbPrefixTBL_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');"bansteamidbanipplayer_nickplayerData[id][playerIp], playerData[id][playerSteamid], admin_nickbantypebanreasonbanreasonbantimeserver_nameg_ipg_port)

#endif

    
return SQL_ThreadQuery(g_SqlX"insert_bandetails"pquerydatasize)
}

public 
cmdBan(idlevelcid)
{
    if(!
cmd_access(idlevelcid3))
    {
        return 
PLUGIN_HANDLED
    
}
    
    new 
pidbantimebantype[3], ban_length[10], banip[22], banname[32], bansteamid[34], ind[52], banreason[128], temp2[182], temp[192]
    
    
read_args(temp191)
    
strbreak(tempban_length9temp2181)
    
strbreak(temp2ind51banreason127)
    
trim(ban_length)
    
trim(ind)
    
trim(banreason)
    
remove_quotes(banreason)
    
    
pid locate_player(idbantypeind)
    
    if(
pid == -2)
    {
        return 
PLUGIN_HANDLED
    
}
    
    if(!
is_str_num(ban_length) || read_argc() < || pid == -1)
    {
        return 
client_print(idprint_console"[AMXBans] %L"LANG_PLAYER"AMX_BAN_SYNTAX")
    }
    
    
bantime abs(str_to_num(ban_length))

    if(
get_user_state(pidPDATA_BEING_BANNED)) 
    {
        return 
client_print(idprint_console"[AMXBans] %L"id"BLOCKING_DOUBLEBAN")
    }
    
    if(!(
get_user_flags(id) & get_higher_ban_time_admin_flag()) && bantime == 0)
    {
        return 
client_print(idprint_console"[AMXBans] %L"LANG_PLAYER"NOT_BAN_PERMANENT")
    }
    
    
add_user_state(pidPDATA_BEING_BANNED)
    
    if(!
strlen(banreason)) 
    {
        
get_pcvar_string(pcvar_default_banreasonbanreason127)
    }
    
    new 
cTimeLength[128]
    if(
bantime 0)
    {
        
get_time_length(idbantimetimeunit_minutescTimeLength127)
    }
    else
    {
        
format(cTimeLength127"%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(bansteamid33playerData[pid][playerSteamid])
        
copy(banname31playerData[pid][playerName])
        
copy(banip21playerData[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(idPDATA_BEING_BANNED)
    }

    if(!
get_ban_type(bantype127bansteamidbanip)) 
    {
        
log_amx("[AMXBans ERROR cmdBan] Steamid / IP Invalid! Bantype: <%s> | Authid: <%s> | IP: <%s>"banreasonbansteamidbanip)
        return 
remove_user_state(idPDATA_BEING_BANNED)
    }
    
    new 
pquery[256]
    
    if(
equal(banreason"S"))
    {
        
formatex(pquery255"SELECT `player_id` FROM `%s%s` WHERE `player_id` = '%s' AND `ban_type` = 'S' AND `expired` = '0';"g_dbPrefixTBL_BANSbansteamid)
        
        if(
get_pcvar_num(pcvar_debug) >= 1)
        {
            
log_amx("[AMXBans cmdBan] Banned a player by SteamID: %s"bansteamid)
        }
    }
    else
    {
        
formatex(pquery255"SELECT `player_ip` FROM `%s%s` WHERE `player_ip` = '%s' AND `ban_type` = 'SI' AND `expired` = '0';"g_dbPrefixTBL_BANSbanip)
        
        if(
get_pcvar_num(pcvar_debug) >= 1)
        {
            
log_amx("[AMXBans cmdBan] Banned a player by IP: %s"banip)
        }
    }
    
    new 
data[256]
    
format_ban_data(dataidpidbantimebantypebanipbannamebansteamidbanreason)
    
    return 
SQL_ThreadQuery(g_SqlX"cmd_ban_"pquerydata256)
}

public 
cmd_ban_(failstateHandle:query, const error[], errornum, const data[], sizeFloat:queuetime)
{
    new 
idpidbantimenums[3], bantype[3], banip[22], banname[32], bansteamid[34], banreason[128]
    
parse_ban_data(datanumsbantypebanipbannamebansteamidbanreason)

    
id nums[0]
    
pid nums[1]
    
bantime nums[2]
    
    if(
failstate)
    {
        
remove_user_state(pidPDATA_BEING_BANNED)
        return 
SQL_Error(queryerrorerrornumfailstate)
    }
    
    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 == 0get_user_name(idplayerData[id][playerName], 31)
        
mysql_get_username_safe(idadmin_nick99)
        
        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_nickservernick99)
            if(
strlen(servernick))
            {
                
copy(admin_nick99servernick)
            }
            
            
check_reason(banreason127admin_nick99)
        }
        
        if(
get_pcvar_num(pcvar_debug) >= 1)
        {
            
log_amx("[AMXBans cmdBan] Admin nick: %s, Admin userid: %d"admin_nickget_user_userid(id))
        }
        
        new 
server_name[200]
        
mysql_get_servername_safe(server_name199)
        
        if(
get_pcvar_num(pcvar_add_mapname)) 
        {
            new 
mapname[32]
            
get_mapname(mapname31)
            
format(server_name199"%s (%s)"server_namemapname)
        }
        
        new 
player_nick[64]
        
copy(player_nick63banname)
        
        
mysql_escape_string(player_nick99)
        
mysql_escape_string(admin_nick99)
        
        new 
pquery[1024], len
        
#if defined SET_NAMES_UTF8        
        
        
len format(pquery1023"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_dbPrefixTBL_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');"bansteamidbanipplayer_nickplayerData[id][playerIp], playerData[id][playerSteamid], admin_nickbantypebanreason"See banlist"bantimeserver_nameg_ipg_port)
        
#else

        
len format(pquery1023"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_dbPrefixTBL_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');"bansteamidbanipplayer_nickplayerData[id][playerIp], playerData[id][playerSteamid], admin_nickbantypebanreasonbanreasonbantimeserver_nameg_ipg_port)

#endif
            
        
new tdata[256]
        
format_ban_data(tdataidpidbantimebantypebanipbannamebansteamidbanreason)
        
        
SQL_ThreadQuery(g_SqlX"insert_bandetails"pquerytdata255)
    }
    else
    {
        if(
id == 0)
        {
            
log_amx("[AMXBans] %L"LANG_SERVER"ALREADY_BANNED"bansteamidbanip)
        }
        else
        {
            
client_print(idprint_console"[AMXBans] %L"LANG_PLAYER"ALREADY_BANNED"bansteamidbanip)
            
remove_user_state(pidPDATA_BEING_BANNED)
        }
    }
    
    return 
PLUGIN_HANDLED
}

public 
insert_bandetails(failstateHandle:query, const error[], errornum, const data[], sizeFloat:queuetime)
{
    new 
pidnums[3], banip[22], bansteamid[34], banreason[128]
    
parse_ban_data(datanums_banip_bansteamidbanreason)

    
pid nums[1]
    
    if(
failstate)
    {
        return 
SQL_Error(queryerrorerrornumfailstate)
    }
    
    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(pquery1023"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_dbPrefixTBL_BANSbanipbansteamidg_dbPrefixTBL_BANSbanreason)

    return 
SQL_ThreadQuery(g_SqlX"KocTblJIu_KocTblJIb4uku"pquerydatasize)
}
    
public 
KocTblJIu_KocTblJIb4uku(failstateHandle:query, const error[], errornum, const data[], sizeFloat:queuetime)
{
    new 
idpidnums[3]
    
parse_ban_data(datanums)
    
    
id nums[0]
    
pid nums[1]
    
    if(
failstate)
    {
        
delayed_kick(pid 200)
        return 
SQL_Error(queryerrorerrornumfailstate)
    }
    
    if(!
SQL_NumResults(query))
    {
        return 
SQL_FreeHandle(query)
    }
    
    new 
bid SQL_ReadResult(query0)
    
#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(idpid)
        return 
set_task(1.5"select_amxbans_motd"117811motd3)
    }

    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(pquery1023"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_dbPrefixTBL_SERVERINFOg_dbPrefixTBL_BANSdata[2], g_ipg_port)
        
#else

    
format(pquery1023"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_dbPrefixTBL_SERVERINFOg_dbPrefixTBL_BANSdata[2], g_ipg_port)

#endif
    
    
return SQL_ThreadQuery(g_SqlX"_select_amxbans_motd"pquerydata3)
}

public 
_select_amxbans_motd(failstateHandle:query, const error[], errornum, const data[], sizeFloat:queuetime)
{
    if(
failstate)
    {
        
delayed_kick(data[1] + 200)
        return 
SQL_Error(queryerrorerrornumfailstate)
    }
    
    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"playerbid)
    }
    
    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"playerbid)

        return 
set_task(kick_delay"delayed_kick"player 200)
    } 
    else 
    {
        
SQL_ReadResult(query0amxban_motd_url256)
        
SQL_ReadResult(query1pl_nick99)
        
SQL_ReadResult(query2pl_steamid34)
        
SQL_ReadResult(query3pl_ip21)
        
SQL_ReadResult(query4admin_nick99)
        
SQL_ReadResult(query5admin_steamid34)
        
SQL_ReadResult(query6ban_type31)
        
SQL_ReadResult(query7ban_reason127)
        
iBanLength SQL_ReadResult(query8)
        
SQL_FreeHandle(query)
    }
    
    new 
admin_team[11]
    
    
get_user_team(idadmin_team10)
    
    new 
cTimeLengthPlayer[128]
    new 
cTimeLengthServer[128]
        
    if(
iBanLength 0
    {
        
get_time_length(playeriBanLengthtimeunit_minutescTimeLengthPlayer127)
        
get_time_length(0iBanLengthtimeunit_minutescTimeLengthServer127)
    } 
    else 
    {
        
format(cTimeLengthPlayer127"%L"player"TIME_ELEMENT_PERMANENTLY")
        
format(cTimeLengthServer127"%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_complainurlcomplain_url255)
            
        
client_print(playerprint_console"[AMXBans] ===============================================")
        
        new 
ban_motd[1400]
        switch(
show_activity)
        {
            case 
1:
            {
                
client_print(playerprint_console"[AMXBans] %L"player"MSG_1")
                
client_print(playerprint_console"[AMXBans] %L"player"MSG_7"complain_url)
                
format(ban_motd1399"%L"player"MSG_MOTD_1"ban_reasoncTimeLengthPlayerpl_steamid)
            }
            case 
2:
            {
                
client_print(playerprint_console"[AMXBans] %L"player"MSG_6"admin_nick)
                
client_print(playerprint_console"[AMXBans] %L"player"MSG_7"complain_url)
                
format(ban_motd1399"%L"player"MSG_MOTD_2"ban_reasoncTimeLengthPlayerpl_steamidadmin_nick)
            }
            case 
3:
            {
                if(
get_user_state(playerPDATA_ADMIN))
                {
                    
client_print(playerprint_console"[AMXBans] %L"player"MSG_6"admin_nick)
                    
client_print(playerprint_console"[AMXBans] %L"player"MSG_7"complain_url)
                    
format(ban_motd1399"%L"player"MSG_MOTD_2"ban_reasoncTimeLengthPlayerpl_steamidadmin_nick)
                }
                else
                {
                    
client_print(playerprint_console"[AMXBans] %L"player"MSG_1")
                    
client_print(playerprint_console"[AMXBans] %L"player"MSG_7"complain_url)
                    
format(ban_motd1399"%L"player"MSG_MOTD_1"ban_reasoncTimeLengthPlayerpl_steamid)
                }
            }
            case 
4:
            {
                if(
get_user_state(playerPDATA_ADMIN))
                {
                    
client_print(playerprint_console"[AMXBans] %L"player"MSG_6"admin_nick)
                    
client_print(playerprint_console"[AMXBans] %L"player"MSG_7"complain_url)
                    
format(ban_motd1399"%L"player"MSG_MOTD_2"ban_reasoncTimeLengthPlayerpl_steamidadmin_nick)
                }
            }
            case 
5:
            {
                if(
get_user_state(playerPDATA_ADMIN))
                {
                    
client_print(playerprint_console"[AMXBans] %L"player"MSG_1")
                    
client_print(playerprint_console"[AMXBans] %L"player"MSG_7"complain_url)
                    
format(ban_motd1399"%L"player"MSG_MOTD_1"ban_reasoncTimeLengthPlayerpl_steamid)
                }
            }
        }
        
        
client_print(playerprint_console"[AMXBans] %L"player"MSG_2"ban_reason)
        
client_print(playerprint_console"[AMXBans] %L"player"MSG_3"cTimeLengthPlayer)
        
client_print(playerprint_console"[AMXBans] %L"player"MSG_4"pl_steamid)
        
client_print(playerprint_console"[AMXBans] %L"player"MSG_5"pl_ip)
        
client_print(playerprint_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"bidamxban_motd_urlkick_delay)
        }

        if(
contain(amxban_motd_url"sid=%s&adm=%d&lang=%s") != -1
        {
            new 
bidstr[10],lang[5
            
formatex(bidstr9"B%d"bid)
            
get_user_info(player"lang"lang9)
            
            if(
equal(lang""))
            {
                
get_cvar_string("amx_language"lang9)
            }
            
            
format(msg1399amxban_motd_urlbidstr, (show_activity == 2) ? 0lang)
            if(
get_pcvar_num(pcvar_debug) >= 1)
            {
                
log_amx("[AMXBans cmdBan function 6.3] Motd: %s"msg)
            }
        } 
        else 
        {
            
formatex(msg1399ban_motd)
        }
        
        if(!
is_user_disconnected(player)) 
        {
            if(
get_user_state(playerPDATA_CONNECTED))
            {
                new 
ret
                ExecuteForward
(MFHandle[Ban_MotdOpen], retplayer)
            
                
show_motd(playermsg"AMXBans Gm 1.5.2")
                
set_pev(playerpev_flagspev(playerpev_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(idprint_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(idprint_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_nickget_user_userid(id), admin_steamidadmin_team, \
            
pl_nickpl_steamidcTimeLengthServeriBanLengthban_reason)

        if(
get_pcvar_num(pcvar_show_in_hlsw)) 
        {
            
log_message("^"%s<%d><%s><%s>^" triggered ^"amx_chat^" (text ^"%L^")"admin_nickget_user_userid(id), admin_steamidadmin_team, \
                
LANG_SERVER"BAN_CHATLOG"pl_nickpl_steamidcTimeLengthServeriBanLengthban_reason)
        }
    } 
    else 
    {
        
log_amx("%L"LANG_SERVER"BAN_LOG_PERM"admin_nickget_user_userid(id), admin_steamidadmin_teampl_nickpl_steamidban_reason)

        if(
get_pcvar_num(pcvar_show_in_hlsw)) 
        {
            
log_message("^"%s<%d><%s><%s>^" triggered ^"amx_chat^" (text ^"%L^")"admin_nickget_user_userid(id), admin_steamidadmin_team, \
                
LANG_SERVER"BAN_CHATLOG_PERM"pl_nickpl_steamidban_reason)
        }
    }
    
    new 
message[191]
    
    switch(
show_activity)
    {
        case 
1:
        {
            for(new 
1<= plnumi++) 
            {
                if(
get_user_state(iPDATA_HLTV) || get_user_state(iPDATA_BOT) || !get_user_state(iPDATA_CONNECTED)) continue
                
                
get_time_length(iiBanLengthtimeunit_minutescTimeLengthPlayer127)
                
                if(
iBanLength 0)
                {
                    
format(message190"%L"i"PUBLIC_BAN_ANNOUNCE"pl_nickcTimeLengthPlayerban_reason)
                }
                else
                {
                    
format(message190"%L"i"PUBLIC_BAN_ANNOUNCE_PERM"pl_nickban_reason)
                }
                
                if(
get_pcvar_num(pcvar_show_hud_messages) == 1
                {
                    
set_hudmessage(025500.050.3006.010.0 0.50.15, -1)
                    
ShowSyncHudMsg(ig_MyMsgSyncmessage)
                    
client_cmd 0"spk %s"start_sounds[random_num(0,3)] );
                }
                
ColorChat(iRED"%s %s"PREFIXmessage)
                
client_print(iprint_consolemessage)
            }
        }
        case 
2:
        {
            for(new 
1<= plnumi++) 
            {
                if(
get_user_state(iPDATA_HLTV) || get_user_state(iPDATA_BOT) || !get_user_state(iPDATA_CONNECTED)) continue
                
                
get_time_length(iiBanLengthtimeunit_minutescTimeLengthPlayer127)
                
                if(
iBanLength 0)
                {
                    
format(message190"%L"i"PUBLIC_BAN_ANNOUNCE_2"pl_nickcTimeLengthPlayerban_reasonadmin_nick)
                }
                else
                {
                    
format(message190"%L"i"PUBLIC_BAN_ANNOUNCE_2_PERM"pl_nickban_reasonadmin_nick)
                }
                
                if(
get_pcvar_num(pcvar_show_hud_messages) == 1
                {
                    
set_hudmessage(025500.050.3006.010.0 0.50.15, -1)
                    
ShowSyncHudMsg(ig_MyMsgSyncmessage)
                    
client_cmd 0"spk %s"start_sounds[random_num(0,3)] );
                }

                
ColorChat(iRED"%s %s"PREFIXmessage)
                
client_print(iprint_console"%s"message)
            }
        }
        case 
3:
        {
            if(
is_user_admin(id))
            {
                for(new 
1<= plnumi++) 
                {
                    if(
get_user_state(iPDATA_HLTV) || get_user_state(iPDATA_BOT) || !get_user_state(iPDATA_CONNECTED)) continue
                    
                    
get_time_length(iiBanLengthtimeunit_minutescTimeLengthPlayer127)
                    
                    if(
iBanLength 0)
                    {
                        
format(message,190"%L"i"PUBLIC_BAN_ANNOUNCE_2"pl_nickcTimeLengthPlayerban_reasonadmin_nick)
                    }
                    else
                    {
                        
format(message,190"%L"i"PUBLIC_BAN_ANNOUNCE_2_PERM"pl_nickban_reasonadmin_nick)
                    }
                    
                    if(
get_pcvar_num(pcvar_show_hud_messages) == 1
                    {
                        
set_hudmessage(025500.050.3006.010.0 0.50.15, -1)
                        
ShowSyncHudMsg(ig_MyMsgSyncmessage)
                        
client_cmd 0"spk %s"start_sounds[random_num(0,3)] );
                    }

                    
ColorChat(iRED"%s %s"PREFIXmessage)
                    
client_print(iprint_console"%s"message)
                }
            }
            else
            {
                for(new 
1<= plnumi++) 
                {
                    if(
get_user_state(iPDATA_HLTV) || get_user_state(iPDATA_BOT) || !get_user_state(iPDATA_CONNECTED)) continue
                    
                    
get_time_length(iiBanLengthtimeunit_minutescTimeLengthPlayer127)
                    
                    if(
iBanLength 0)
                    {
                        
format(message190"%L"i"PUBLIC_BAN_ANNOUNCE"pl_nickcTimeLengthPlayerban_reason)
                    }
                    else
                    {
                        
format(message190"%L"i"PUBLIC_BAN_ANNOUNCE_PERM"pl_nickban_reason)
                    }
                    
                    if(
get_pcvar_num(pcvar_show_hud_messages) == 1
                    {
                        
set_hudmessage(025500.050.3006.010.0 0.50.15, -1)
                        
ShowSyncHudMsg(ig_MyMsgSyncmessage)
                        
client_cmd 0"spk %s"start_sounds[random_num(0,3)] );
                    }

                    
ColorChat(iRED"%s %s"PREFIXmessage)
                    
client_print(iprint_console"%s"message)
                }
            }
        }
        case 
4:
        {
            if(
is_user_admin(id))
            {
                for(new 
1<= plnumi++) 
                {
                    if(
get_user_state(iPDATA_HLTV) || get_user_state(iPDATA_BOT) || !get_user_state(iPDATA_CONNECTED)) continue
                    
get_time_length(iiBanLengthtimeunit_minutescTimeLengthPlayer127)
                    
                    if(
iBanLength 0)
                    {
                        
format(message190"%L"i"PUBLIC_BAN_ANNOUNCE_2"pl_nickcTimeLengthPlayerban_reasonadmin_nick)
                    }
                    else
                    {
                        
format(message190"%L"i"PUBLIC_BAN_ANNOUNCE_2_PERM"pl_nickban_reasonadmin_nick)
                    }
                    if(
get_pcvar_num(pcvar_show_hud_messages) == 1
                    {
                        
set_hudmessage(025500.050.3006.010.0 0.50.15, -1)
                        
ShowSyncHudMsg(ig_MyMsgSyncmessage)
                        
client_cmd 0"spk %s"start_sounds[random_num(0,3)] );
                    }

                    
ColorChat(iRED"%s %s"PREFIXmessage)
                    
client_print(iprint_console"%s"message)
                }
            }
        }
        case 
5:
        {
            if(
is_user_admin(id))
            {
                for(new 
1<= plnumi++) 
                {
                    if(
get_user_state(iPDATA_HLTV) || get_user_state(iPDATA_BOT) || !get_user_state(iPDATA_CONNECTED)) continue
                    
                    
get_time_length(iiBanLengthtimeunit_minutescTimeLengthPlayer127)
                    
                    if(
iBanLength 0)
                    {
                        
format(message190"%L"i"PUBLIC_BAN_ANNOUNCE"pl_nickcTimeLengthPlayerban_reason)
                    }
                    else
                    {
                        
format(message190"%L"i"PUBLIC_BAN_ANNOUNCE_PERM"pl_nickban_reason)
                    }
                    
                    if(
get_pcvar_num(pcvar_show_hud_messages) == 1
                    {
                        
set_hudmessage(025500.050.3006.010.0 0.50.15, -1)
                        
ShowSyncHudMsg(ig_MyMsgSyncmessage)
                        
client_cmd 0"spk %s"start_sounds[random_num(0,3)] );
                    }

                    
ColorChat(iRED"%s %s"PREFIXmessage)
                    
client_print(iprint_console"%s"message)
                }
            }
        }
    }
    
    return 
PLUGIN_HANDLED
}

public 
locate_player(idoutput[], const identifier[]) 
{
    new 
player find_player("c"identifier)

    if(!
player
    {
        
player find_player("bl"identifier)
    }
    else
    {
        
copy(output2"S")
    }
    
    if(!
player
    {
        
player find_player("d"identifier)
        if(
player)
        {
            
copy(output2"SI")
        }
    }

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

    if(
player
    {
        if(
get_user_state(playerPDATA_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(idpid)
{
    if(
is_user_disconnected(pid))
    {
        return 
PLUGIN_CONTINUE
    
}
    
    new 
timestamp[32]
    
get_time("%d.%m.%Y - %H:%M:%S"timestamp31
    
ColorChat(pidRED"%s Screenshot taken on player ^x03%s^x01 (^x04%s^x01) ^x03%s^x01 by admin ^x04%s"PREFIXplayerData[pid][playerName], playerData[pid][playerIp], timestampplayerData[id][playerName])
    
set_hudmessage(2552550, -1.00.0100.0215.00.00.0, -1)
    
show_hudmessage(pid"Player: %s (%s) Time: %s Admin: %s"playerData[pid][playerName], playerData[pid][playerIp], timestampplayerData[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(inputsid4spid4stime9bantype2banip21banname31bansteamid33banreason127)
    
    
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[], idpidbantime, const bantype[], const banip[], const banname[], const bansteamid[], const banreason[])
{
    return 
formatex(output255"^"%d^" ^"%d^" ^"%d^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^""idpidbantimebantypebanipbannamebansteamidbanreason)

пытаюсь вставить звук в момент бана но не знаю куда именно, это
Код: Выделить всё
emit_sound(entCHAN_VOICEban_soundVOL_NORMATTN_NORM0PITCH_NORM
Аватара пользователя
jban1990
 
Сообщения: 46
Зарегистрирован: 30 мар 2020, 17:06
Забанен
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: где момент бана?

Сообщение RevCrew » 13 май 2020, 12:45

Там нужно 2 раза вроде вставлять перед
Код: Выделить всё


#if defined SET_NAMES_UTF8 
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13