#include < amxmodx > #include < amxmisc > #include < regex > #define PATTERN "(?:(?:2\s*5\s*[0-5]|2\s*[0-4]\s*[0-9]|1\s*[0-9]\s*[0-9]|[1-9]?\s*[0-9])\s*\.\s*){3}(?:2\s*5\s*[0-5]|2\s*[0-4]\s*[0-9]|1\s*[0-9]\s*[0-9]|[1-9]?\s*[0-9])" // Flaga Admina, zeby mogl reklamowac inne nasze serwery w nicku i say :P [ Standardowo: ADMIN_RESERVATION | czyli flaga "b" ] #define ADMIN_FLAGA ADMIN_RESERVATION new const Powod_Bana[ ][ ] = { "Reklamowanie na Czacie", "Reklamowanie w Nazwie Gracza", "Proba zmiany Nazwy Gracza na Reklame w trakcie gry" }; new gFile[ 128 ], gName[ 32 ]; public plugin_init( ) { register_plugin( "Ad-Block and Ban", "1.0.0", "Misiaczek" ); /* Czat */ register_clcmd( "say", "Czat" ); register_clcmd( "say_team", "Czat" ); /* Logi */ get_localinfo( "amxx_logs", gFile, 127 ); formatex( gFile, 127, "%s/ABB.html", gFile ); } /* Czat */ public Czat( id ) Sprawdz_Uprawnienia( id, 0 ); /* Nick - Przy podlaczaniu do serwera Trzy metody bo nie zawsze jedna wylapie od razu */ public client_connect( id ) Sprawdz_Uprawnienia( id, 1 ); public client_authorized( id ) Sprawdz_Uprawnienia( id, 1 ); public client_putinserver( id ) Sprawdz_Uprawnienia( id, 1 ); /* Nick - Zmiana w trakcie Gry */ public client_infochanged( id ) Sprawdz_Uprawnienia( id, 2 ); /* Funkcje */ // Sprawdz uprawnienia admina i odpal odpowiednia funkcje public Sprawdz_Uprawnienia( id, uOpcja ) { /* Podlaczony */ if( !is_user_connected( id ) ) return PLUGIN_CONTINUE; /* Bot lub HLTV */ if( is_user_bot( id ) || is_user_hltv( id ) ) return PLUGIN_CONTINUE; /* Flaga Admina */ if( get_user_flags( id ) & ADMIN_FLAGA ) return PLUGIN_CONTINUE; /* Odpowiednie Sprawdzanie */ switch( uOpcja ) { case 0: Sprawdz_Czat( id ); case 1: Sprawdz_Nick( id ); case 2: Sprawdz_Nick_Zmiana( id ); } return PLUGIN_CONTINUE; } // Sprawdzanie czatu public Sprawdz_Czat( id ) { new szArgs[ 256 ]; read_args( szArgs, 256 ); get_user_name( id, gName, 31 ); Sprawdz_Reklama( id, szArgs, 0, gName ); } // Sprawdzanie Nicku przy wejsciu na serwer public Sprawdz_Nick( id ) { get_user_name( id, gName, 31 ); Sprawdz_Reklama( id, gName, 1, gName ); } // Sprawdzanie Nicku przy probie zmiany w trakcie gry public Sprawdz_Nick_Zmiana( id ) { get_user_name( id, gName, 31 ); Sprawdz_Reklama( id, gName, 2, gName ); } public Sprawdz_Reklama( id, iText[ ], iTyp, iNazwa[ ] ) { new Regex:gResult, gError[ 2 ], gReturn; gResult = regex_match( iText, PATTERN, gReturn, gError, 1 ); switch( gResult ) { case REGEX_MATCH_FAIL, REGEX_PATTERN_FAIL, REGEX_NO_MATCH: return PLUGIN_CONTINUE; } switch( iTyp ) { case 0: { Banowanie( id, 0 ); Zapisz( id, iNazwa, 0 ); } case 1: { Banowanie( id, 1 ); Zapisz( id, iNazwa, 1 ); } case 2: { Banowanie( id, 2 ); Zapisz( id, iNazwa , 2 ); } } return PLUGIN_HANDLED; } // Banowanie public Banowanie( id, bTyp ) { new uID; uID = get_user_userid( id ); if( get_cvar_num( "amxbans_use_newbancmd" ) ) { server_cmd("amx_ban #%d 0 ^"%s^"", uID, Powod_Bana[ bTyp ] ); } else { server_cmd("amx_ban 0 #%d ^"%s^"", uID, Powod_Bana[ bTyp ] ); } } // Logowanie banów z pluginu do pliku public Zapisz( id, zNazwa[ ], zTyp ) { new szTxt[ 512 ] static szData[ 23 ]; get_time( "%Y.%m.%d - %H:%M:%S", szData , 22 ); if( !file_exists( gFile ) ) { write_file( gFile , ""); write_file( gFile , "