Code: Select all
#include <amxmodx>#include <amxmisc>#include <geoip>#include <colorchat> #define SIZE 32 #define MAX_PLAYERS 32 #define ACCESS ADMIN_RCON enum { CHECK_NO, CHECK_FIRST, CHECK_CHANGE } new pCvar_MaxDigitsnew pCvar_Prefix[SIZE]new pCvar_Statusnew pCvar_Punishnew pcvar_Menu[40]new szMessage[ 194 ]new g_iCheckStatus[ MAX_PLAYERS + 1 ]new ON_OFF new const g_szNameKey[ ] = "name" public plugin_init( ) { register_plugin( "Anti Reklama", "3.0c", "Exolent/->UrOS<-" ) register_cvar("antireklama", "3.0c" , (FCVAR_SERVER|FCVAR_SPONLY)) register_srvcmd("antireklama_prefix", "prefix") register_clcmd( "say", "CmdSay" ) register_clcmd( "say_team", "CmdSay" ) register_clcmd("say /antireklama", "menuItem") register_clcmd("say_team /antireklama", "menuItem") pCvar_Status = register_cvar("antireklama_status", "1", ADMIN_RCON) pCvar_Punish = register_cvar("antireklama_kazna", "0", ADMIN_RCON) pCvar_MaxDigits = register_cvar( "antireklama_maxbrojeva", "12", ADMIN_RCON)} public plugin_precache(){ precache_sound("vox/access.wav") precache_sound("vox/denied.wav")} public prefix(){ remove_task(123) read_argv(1, pCvar_Prefix, SIZE-1)} public CmdSay( id ) { if(get_pcvar_num(pCvar_Status) == 1) { read_args( szMessage, charsmax( szMessage ) ) remove_quotes( szMessage ) new iCount new iMax = get_pcvar_num( pCvar_MaxDigits ) new i = -1 while( szMessage[ ++i ] ) { if( '0' <= szMessage[ i ] <= '9' ) { if( ++iCount >= iMax ) { AntiReklamaMotd( id ) AntiReklamaLog( id, szMessage ) AntiReklamaPunish( id ) return PLUGIN_HANDLED } } } } return PLUGIN_CONTINUE} public client_putinserver( id ) { if(get_pcvar_num(pCvar_Status) == 1) { g_iCheckStatus[ id ] = CHECK_FIRST new szName[ 32 ], text[512] get_user_name( id, szName, charsmax( szName ) ) if( !IsNameValid( szName ) ) { AntiReklamaLog( id, "Reklama je bila u imenu..." ) format(text,511,"%s Anti Reklama", pCvar_Prefix) AntiReklamaMotd( id ) set_user_info( id, g_szNameKey, text) AntiReklamaPunish( id ) } g_iCheckStatus[ id ] = CHECK_CHANGE }} public client_disconnect( id ) g_iCheckStatus[ id ] = CHECK_NO public client_infochanged( id ) { if(get_pcvar_num(pCvar_Status) == 1) { if( g_iCheckStatus[ id ] == CHECK_CHANGE ) { new newname[32],oldname[32], text[512] get_user_info(id, "name", newname,31) get_user_name(id, oldname,31) if( !equal( newname, oldname) && !IsNameValid(newname ) ) { AntiReklamaLog( id, "Reklama je bila u imenu..." ) format(text,511,"%s Anti Reklama", pCvar_Prefix) set_user_info( id, g_szNameKey, text) AntiReklamaPunish( id ) AntiReklamaMotd( id ) } } }} bool:IsNameValid( const szName[ ] ) { new iCount new iMax = get_pcvar_num( pCvar_MaxDigits ) new i = -1 while( szName[ ++i ] ) { if( '0' <= szName[ i ] <= '9' ) { if( ++iCount >= iMax ) { return false } } } return true} public AntiReklamaLog( id, szMessage[] ){ new szName[ 32 ], szAuthID[ 32 ], szUserIP[ 32 ], szCountry[ 32 ] get_user_name( id, szName, 31 ) get_user_authid( id, szAuthID, 31 ) get_user_ip( id, szUserIP, 31, 1 ) geoip_country( szUserIP, szCountry ) static szLogData[ 200 ] formatex( szLogData, sizeof szLogData - 1, "Nick: %s | ID: %s | IP: %s | Zemlja: %s | %s", szName, szAuthID, szUserIP, szCountry, szMessage) log_to_file( "antireklama.log", szLogData ) console_print( id, szLogData ) return PLUGIN_HANDLED} public AntiReklamaPunish(id){ if ( get_pcvar_num(pCvar_Punish) == 2 ) { client_cmd(id, "kill") } else if ( get_pcvar_num(pCvar_Punish) == 3 ) { server_cmd("amx_kick #%d ^"Ako ovo nije bio pokusaj reklamiranja izvinjavamo se.^"",get_user_userid(id)) } else if ( get_pcvar_num(pCvar_Punish) == 4 ) { client_cmd(id, "quit") } else if ( get_pcvar_num(pCvar_Punish) == 5 ) { server_cmd("amx_gag #%d 300 abc ",get_user_userid(id)) } else if ( get_pcvar_num(pCvar_Punish) == 6 ) { server_cmd("amx_ban #%d 5 ^"Ako ovo nije bio pokusaj reklamiranja izvinjavamo se.^"",get_user_userid(id)) } } public AccessDenied(id) client_cmd(id, "spk vox/denied.wav") public menuItem( id ){ if( !(get_user_flags( id ) & ACCESS ) ) { ColorChat(id, TEAM_COLOR,"^4[%s] ^1Nemate pristup ovoj komandi!", pCvar_Prefix) client_cmd(id, "spk vox/access.wav") set_task(0.6, "AccessDenied", id, _, _, "a", 1) return PLUGIN_CONTINUE } new status = (get_pcvar_num(pCvar_Status) == 1) ON_OFF = status formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\rAnti Reklama - Menu") new menu = menu_create( pcvar_Menu, "menuAction" ) formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\d Status Plugina \r[\d%s\r]", (ON_OFF & status) ? "Ukljucen" : "Iskljucen") menu_additem( menu, pcvar_Menu, "0" ) formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\d Vrsta kazne \r[\d%i\r]", get_pcvar_num(pCvar_Punish)) menu_additem( menu, pcvar_Menu, "1" ) menu_display( id, menu ) return PLUGIN_CONTINUE} public menuAction( id, menu, item ) { if( item >= 0 ) { new access, callback, actionString[ 2 ] menu_item_getinfo( menu, item, access, actionString, charsmax( actionString ), _, _, callback ) new action = str_to_num( actionString ) { switch( action ) { case 0: { formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\rAnti Reklama - Menu") new menu = menu_create( pcvar_Menu, "menu1" ) formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\d Ukljuci Plugin") menu_additem( menu, pcvar_Menu, "0" ) formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\d Iskljuci Plugin") menu_additem( menu, pcvar_Menu, "1" ) menu_display( id, menu ) } case 1: { formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\rAnti Reklama - Menu") new menu = menu_create( pcvar_Menu, "menu2" ) formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\d Bez kazne") menu_additem( menu, pcvar_Menu, "0" ) formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\d Kill") menu_additem( menu, pcvar_Menu, "1" ) formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\d Kick") menu_additem( menu, pcvar_Menu, "2" ) formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\d Quit") menu_additem( menu, pcvar_Menu, "3" ) formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\d Gag 5 min") menu_additem( menu, pcvar_Menu, "4" ) formatex( pcvar_Menu, charsmax( pcvar_Menu ), "\d Ban 5 min") menu_additem( menu, pcvar_Menu, "5" ) menu_display( id, menu ) } } } } menu_destroy( menu ) return PLUGIN_HANDLED } public menu1( id, menu, item ) { if( item >= 0 ) { new access, callback, actionString[ 2 ] menu_item_getinfo( menu, item, access, actionString, charsmax( actionString ), _, _, callback ) new action = str_to_num( actionString ) { switch( action ) { case 0: { server_cmd("antireklama_status 1") ColorChat(0, TEAM_COLOR,"^4[%s] ^1Anti Reklama plugin je ukljucen!", pCvar_Prefix) } case 1: { server_cmd("antireklama_status 0") ColorChat(0, TEAM_COLOR,"^4[%s] ^1Anti Reklama plugin je iskljucen!", pCvar_Prefix) } } } } menu_destroy( menu ) set_task(0.1, "menuItem", id, _, _, "a", 1) return PLUGIN_HANDLED } public menu2( id, menu, item ) { if( item >= 0 ) { new access, callback, actionString[ 2 ] menu_item_getinfo( menu, item, access, actionString, charsmax( actionString ), _, _, callback ) new action = str_to_num( actionString ) { switch( action ) { case 0: { server_cmd("antireklama_kazna 1") } case 1: { server_cmd("antireklama_kazna 2") } case 2: { server_cmd("antireklama_kazna 3") } case 3: { server_cmd("antireklama_kazna 4") } case 4: { server_cmd("antireklama_kazna 5") } case 5: { server_cmd("antireklama_kazna 6") } } ColorChat(id, TEAM_COLOR,"^4[%s] ^1Promene su uspesno sacuvane", pCvar_Prefix) } } menu_destroy( menu ) set_task(0.1, "menuItem", id, _, _, "a", 1) return PLUGIN_HANDLED } public AntiReklamaMotd(id) { static motd[1501], len len = format(motd, 1500,"<body bgcolor=#000000><font color=#87cefa><pre>") len += format(motd[len], 1500-len,"<h4 align='center'><font size='6' color='#FF0000'>%s Anti Reklama^n</font>", pCvar_Prefix) len += format(motd[len], 1500-len,"<h4 align='center'><font size='4' color='#FFFFFF'>Zabranjeno Reklamiranje servera!</font>") len += format(motd[len], 1500-len,"<h4 align='center'><font size='4' color='#FFFFFF'>Ako ovo nije bio pokusaj reklamiranja izvinjavamo se.^n^n^n</font>") len += format(motd[len], 1500-len,"<center><h4><font color=^"white^"><B>-----------------------</B> </font></h4></center>") len += format(motd[len], 1500-len,"<h4 align='center'><font size='1' color='#FF0000'><h4>Autor ->UrOS<-</h4></font>") len += format(motd[len], 1500-len,"<h4 align='center'><font size='1' color='#FF0000'><h4>e-mail [email protected]</h4></font>") len += format(motd[len], 1500-len,"<center><h4><font color=^"white^"><B>-----------------------</B> </font></h4></center>") show_motd(id, motd, "Anti Reklama v3.0") }