Надеюсь ничего не напутал.
#include <amxmodx>
#include <amxmisc>
new PLUGIN_AUTHOR[]={"9 rpamm!?"}
new PLUGIN_NAME[]={"Block cheat key"}
new PLUGIN_VERSION[]={"2.0 FIX"}
new authid[32], ip[32], name[32]
new bk_BanTime, bk_msg, bk_punishment
new show_info, show_info_time
new p_Config_Dir[60]
new p_Config_File[60]
new p_Lang_Dir[60]
new p_Lang_File[60]
new p_Log_Dir[60]
new p_Log_File[60]
public plugin_precache()
{
get_localinfo("amx_configdir", p_Config_Dir, charsmax(p_Config_Dir))
format(p_Config_Dir, charsmax(p_Config_Dir), "%s/block_key", p_Config_Dir)
if(!dir_exists(p_Config_Dir))
{
mkdir(p_Config_Dir)
}
format(p_Config_File, charsmax(p_Config_File), "%s/block_key.cfg", p_Config_Dir)
if(!file_exists(p_Config_File))
{
server_print("%s created",p_Config_File)
Create_Config()
}
get_localinfo("amxx_datadir", p_Lang_Dir, charsmax(p_Lang_Dir))
format(p_Lang_Dir, charsmax(p_Lang_Dir), "%s/lang", p_Lang_Dir)
format(p_Lang_File, charsmax(p_Lang_File), "%s/block_key.txt", p_Lang_Dir)
if(!file_exists(p_Lang_File))
{
server_print("%s created",p_Lang_File)
//Create_Lang()
}
get_localinfo("amxx_logs", p_Log_Dir, charsmax(p_Log_Dir))
format(p_Log_Dir, charsmax(p_Log_Dir), "%s/block_key", p_Log_Dir)
if(!dir_exists(p_Log_Dir))
{
mkdir(p_Log_Dir)
}
format(p_Log_File,charsmax(p_Log_File),"%s/block_user.log",p_Log_Dir)
}
public plugin_init( ) // 9-11
{
register_plugin( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR )
server_cmd( "exec %s",p_Config_File )
register_dictionary( "block_key.txt" )
register_clcmd( "BLOKED", "BLOKED" )
register_message( get_user_msgid( "TextMsg" ), "MessageTextMsg" )
show_info = register_cvar( "bk_show_info", "1" )
show_info_time = register_cvar( "bk_show_info_time", "15" )
bk_punishment = register_cvar( "bk_punishment", "1" )
bk_BanTime = register_cvar( "bk_BanTime", "5" )
bk_msg = register_cvar( "bk_msg", "1" )
}
public client_putinserver( pID ) // 28-30
set_task( get_pcvar_float( show_info_time ), "show_hud", pID )
public client_authorized( pID ) // 33-35
{
client_cmd( pID, "bind ^"END^" ^"BLOKED^"" )
client_cmd( pID, "bind ^"HOME^" ^"BLOKED^"" )
client_cmd( pID, "bind ^"PGUP^" ^"BLOKED^"" )
client_cmd( pID, "bind ^"PGDN^" ^"BLOKED^"" )
client_cmd( pID, "bind ^"DEL^" ^"BLOKED^"" )
client_cmd( pID, "bind ^"INS^" ^"BLOKED^"" )
client_cmd( pID, "bind ^"F9^" ^"BLOKED^"" )
client_cmd( pID, "bind ^"F12^" ^"BLOKED^"" )
}
public BLOKED( pID ) // 45-47
{
set_task( 3.0, "client_delicated", pID )
get_user_name( pID, name, 31 )
switch( get_pcvar_num( bk_msg ) )
{
case 0: ChatColor( 0, "%L", -1, "KICK_INFO", name )
case 1:
{
set_hudmessage( 255, 0, 0, -1.0, 0.8, 1, 6.0, 12.0, 0.1, 0.2, 4 )
show_hudmessage( 0, "%L", -1, "KICK_INFO2", name )
}
}
}
public MessageTextMsg( ) // 64-66
{
new szArg2[32]
get_msg_arg_string( 2, szArg2, 31 )
if( !equal( szArg2, "#Game_unknown_command" ) )
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public show_hud( pID ) // 76-78
{
if( get_pcvar_num( show_info ))
{
get_user_name( pID, name, 31 )
set_hudmessage( 150, 150, 150, 0.02, 0.19, 0, 0.0, 7.0, 0.1, 0.2, 4 )
show_hudmessage( pID, "%L", -1, "SHOW_INFO", name )
}
return PLUGIN_CONTINUE
}
public client_delicated( pID ) // 87-89
{
get_user_name( pID, name, 31 )
get_user_ip( pID, ip, 31, 1)
get_user_authid( pID, authid, 31 )
switch ( get_pcvar_num( bk_punishment ) )
{
case 0:
{
server_cmd( "kick #%d ^"%L^"", get_user_userid( pID ), pID, "REASON" )
log_to_file(p_Log_File, "Нарушитель: %s IP <%s> STEAM_ID <%s>", name, ip, authid )
server_exec()
}
case 1:
{
client_cmd( pID, "quit" )
log_to_file(p_Log_File, "Нарушитель: %s IP <%s> STEAM_ID <%s>", name, ip, authid )
}
case 2:
{
server_cmd( "amx_ban %d #%d ^"%L^"", get_pcvar_num(bk_BanTime), get_user_userid( pID ), pID, "REASON_BAN" )
log_to_file(p_Log_File, "Нарушитель: %s IP <%s> STEAM_ID <%s>", name, ip, authid )
}
case 3:
{
server_cmd( "amx_ban #%d %d ^"%L^"", get_user_userid( pID ), get_pcvar_num(bk_BanTime), pID, "REASON_BAN" )
log_to_file(p_Log_File, "Нарушитель: %s IP <%s> STEAM_ID <%s>", name, ip, authid )
}
case 4:
{
server_cmd( "amx_banip #%d %d ^"%L^"", get_user_userid( pID ), get_pcvar_num(bk_BanTime), pID, "REASON_BAN" )
log_to_file(p_Log_File, "Нарушитель: %s IP <%s> STEAM_ID <%s>", name, ip, authid )
}
}
}
public client_disconnect( pID ) // 124-126
if( task_exists( pID, 0 ) )
remove_task( pID, 0 )
stock ChatColor( const id, const input[], any:... ) // 130-132
{
new count = 1, players[32]
static msg[191]
vformat( msg, 190, input, 3 )
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!n", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color
if( id ) players[0] = id; else get_players( players, count, "ch" )
{
for ( new i = 0; i < count; i++ )
{
if ( is_user_connected( players[i] ) )
{
message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, players[i] )
write_byte( players[i] );
write_string( msg );
message_end( );
}
}
}
}
public Create_Config()
{
new config=fopen(p_Config_File,"wt")
fprintf(config,"// ==============================^n")
fprintf(config,"//^n")
fprintf(config,"// Block Key 2.0^n")
fprintf(config,"//^n")
fprintf(config,"//^n")
fprintf(config,"// ------------------------------^n")
fprintf(config,"//^n")
fprintf(config,"// Конфигурационный файл^n")
fprintf(config,"//^n")
fprintf(config,"// ^"Квар^" ^"Значение^"^n")
fprintf(config,"//^n")
fprintf(config,"// ==============================^n")
fprintf(config,"// Включить или отключить показ информации о заблокированных кнопках^n")
fprintf(config,"// Параметр - число^n")
fprintf(config,"// Допустимые значения:^n")
fprintf(config,"//^n")
fprintf(config,"// 0 - выкл^n")
fprintf(config,"// 1 - вкл^n")
fprintf(config,"//^n")
fprintf(config,"// По умолчанию:^n")
fprintf(config,"// bk_show_info ^"1^"^n")
fprintf(config,"bk_show_info ^"1^"^n")
fprintf(config,"// Через какое время выводить информцию о заблокированных кнопках^n")
fprintf(config,"// Параметр - число^n")
fprintf(config,"//^n")
fprintf(config,"// По умолчанию:^n")
fprintf(config,"// bk_show_info_time ^"15.0^"^n")
fprintf(config,"bk_show_info_time ^"15.0^"^n")
fprintf(config,"// На какое время банить за нажатие чит клавиш ?^n")
fprintf(config,"// Параметр - число^n")
fprintf(config,"//^n")
fprintf(config,"// По умолчанию:^n")
fprintf(config,"// bk_BanTime ^"5^"^n")
fprintf(config,"bk_BanTime ^"5^"^n")
fprintf(config,"// Вид наказания при обнаружении нажатии клавиши^n")
fprintf(config,"// Параметр - число^n")
fprintf(config,"// Допустимые значения:^n")
fprintf(config,"//^n")
fprintf(config,"// 0 - Послать команду ^"Kick^"^n")
fprintf(config,"// 1 - Послать команду ^"Quit^"^n")
fprintf(config,"// 2 - Послать команду ^"AmxBans 5^"^n")
fprintf(config,"// 3 - Послать команду ^"AmxBans 6^"^n")
fprintf(config,"// 4 - Послать команду ^"Advanced Bans^"^n")
fprintf(config,"//^n")
fprintf(config,"// По умолчанию:^n")
fprintf(config,"// bk_punishment ^"0^"^n")
fprintf(config,"bk_punishment ^"0^"^n")
fprintf(config,"// Тип сообщений при наказании^n")
fprintf(config,"// Параметр - число^n")
fprintf(config,"// Допустимые значения:^n")
fprintf(config,"//^n")
fprintf(config,"// 0 - Игровой чат^n")
fprintf(config,"// 1 - HUD сообщение^n")
fprintf(config,"//^n")
fprintf(config,"// По умолчанию:^n")
fprintf(config,"// bk_msg ^"0^"^n")
fprintf(config,"bk_msg ^"0^"^n")
fprintf(config,"// ==============================^n")
fprintf(config,"//^n")
fprintf(config,"// 9 rpamm!? © 2010-2011^n")
fprintf(config,"//^n")
fprintf(config,"//^n")
fprintf(config," echo ^"^"^n")
fprintf(config," echo ^" Block_key CFG Loaded...^"^n")
fprintf(config," echo ^"^"^n")
fprintf(config,"//^n")
fprintf(config,"//===============================^n")
fclose(config)
return PLUGIN_HANDLED
}
public Create_Lang()
{
new lang_file=fopen(p_Lang_File,"wt")
fprintf(lang_file,"[ru]^n")
fprintf(lang_file,"SHOW_INFO = Внимание %s!^^n^^nНа сервере установлена защита, на использование чит-клавиш!^^n^^nВо избежание недоразумений, просим вас не юзать клавиши:^^n^^nEND, HOME, DEL, INS, F9, F12^^n^^nВ противном случае, вы будете наказаны!^n")
fprintf(lang_file,"KICK_INFO = !t[!g Server ADMIN !t]!n Игрок !g%s!n был наказан за использование чит клавиш!^n")
fprintf(lang_file,"KICK_INFO2 = Нарушитель %s!^^n Использовал чит клавишу!^n")
fprintf(lang_file,"REASON = Юзать запрещённые клавиши запрещено!!!^n")
fprintf(lang_file,"REASON_BAN = Юзал читерские клавиши ><^n")
fprintf(lang_file,"[en]^n")
fprintf(lang_file,"SHOW_INFO = Внимание %s!^^n^^nНа сервере установлена защита, на использование чит-клавиш!^^n^^nВо избежание недоразумений, просим вас не юзать клавиши:^^n^^nEND, HOME, DEL, INS, F9, F12^^n^^nВ противном случае, вы будете наказаны!^n")
fprintf(lang_file,"KICK_INFO = !t[!g Server ADMIN !t]!n Игрок !g%s!n был наказан за использование чит клавиш!^n")
fprintf(lang_file,"KICK_INFO2 = Нарушитель %s!^^n Использовал чит клавишу!^n")
fprintf(lang_file,"REASON = Юзать запрещённые клавиши запрещено!!!^n")
fprintf(lang_file,"REASON_BAN = Юзал читерские клавиши ><^n")
fclose(lang_file)
return PLUGIN_HANDLED
}