Pasidalinsiu asmeniniu, kurį dariau sau ir jokių bėdų nekyla. Beto, nereikia jokio "reapi", tie iš interneto ne visada veikia kaip priklauso
Code: Select all
#include <amxmodx> // Cvar pointersnew p_allchat, p_alltalk, p_hidestat, p_teamchat; // Vars to check if message has already been duplicatednew alv_sndr, alv_str2[26], alv_str4[101];new msg[513]; new colchar[3][2] = { "^x03"/*team col*/, "^x04"/*green*/, "^x01"/*white*/ } public plugin_init(){ register_plugin("Admin Prefiksai", "1.1", "saimon.lt"); register_message(get_user_msgid("SayText"), "col_changer"); p_allchat = register_cvar("sv_allchat", "2"); p_hidestat = register_cvar("sv_hidestatus", "0"); p_teamchat = register_cvar("sv_teamchat", "0"); p_alltalk = get_cvar_pointer("sv_alltalk");} public col_changer(msg_id, msg_dest, rcvr){ new str2[26]; get_msg_arg_string(2, str2, 25); if(equal(str2, "#Cstrike_Chat", 13)) { new str3[22]; get_msg_arg_string(3, str3, 21); if(!strlen(str3)) { new str4[101]; get_msg_arg_string( 4, str4, 100 ); new sndr = get_msg_arg_int( 1 ); new bool:is_team_msg = !bool:equal( str2, "#Cstrike_Chat_All", 17 ); new sndr_team = get_user_team( sndr ); new bool:is_sndr_spec = !bool:( 0 < sndr_team < 3 ); new bool:same_as_last = bool:( alv_sndr == sndr && equal( alv_str2, str2 ) && equal( alv_str4, str4) ); if(!same_as_last) { // Duplicate message once new allchat = clamp( get_pcvar_num( p_allchat ), 0, 2 ); if(allchat == 2 || ( allchat == 1 && clamp( get_pcvar_num( p_alltalk ), 0, 1 ) == 1 ) ) { if(!( is_team_msg && ( is_sndr_spec || is_team_msg && get_pcvar_num( p_teamchat ) == 0 ) ) ) { // Don't duplicate if it's a spectator team message new flags[5], team[10]; if(is_user_alive(sndr)) flags = "bch"; else flags = "ach"; if( is_team_msg ) { add( flags[strlen( flags )], 4, "e" ); if( sndr_team == 1 ) team = "TERRORIST"; else team = "CT"; } new players[32], num; get_players( players, num, flags, team ); buildmsg( sndr, is_sndr_spec, is_team_msg, sndr_team, 0, 2, str4 ); // normal colors for( new i=0; i < num; i++ ) { message_begin( MSG_ONE, get_user_msgid( "SayText" ), _, players[i] ); write_byte( sndr ); write_string( msg ); message_end(); } } alv_sndr = sndr; alv_str2 = str2; alv_str4 = str4; if(task_exists(411)) remove_task(411); set_task( 0.1, "task_clear_antiloop_vars", 411 ); } } if( !same_as_last ) buildmsg( sndr, is_sndr_spec, is_team_msg, sndr_team, 0, 2, str4 ); set_msg_arg_string( 2, msg ); set_msg_arg_string( 4, "" ); } } return PLUGIN_CONTINUE;} public buildmsg( sndr, is_sndr_spec, is_team_msg, sndr_team, namecol, msgcol, str4[ ] ){ new sndr_name[33]; get_user_name(sndr, sndr_name, 32); new prefix[126] = "^x01"; if(get_pcvar_num(p_hidestat) == 0) { if( is_sndr_spec ) prefix = "^x01*SPEC* "; else if( !is_user_alive( sndr ) ) prefix = "^x01*DEAD* "; } if(is_user_connected(sndr)) { if(is_user_steam(sndr) && get_user_flags(sndr) & ADMIN_RCON) { new szMsg[64]; format(szMsg, sizeof(szMsg)-1, "^4[ Saimon.lt ] [ STEAM ] "); add(prefix[strlen(prefix)-1], 64, szMsg); } else if(get_user_flags(sndr) & ADMIN_RCON) { new szMsg[64]; format(szMsg, sizeof(szMsg)-1, "^4[ Saimon.lt ] "); add(prefix[strlen(prefix)-1], 64, szMsg); } else if(is_user_steam(sndr) && get_user_flags(sndr) & ADMIN_MAP) { new szMsg[64]; format(szMsg, sizeof(szMsg)-1, "^4[ Prižiūrėtojas ] [ STEAM ] "); add(prefix[strlen(prefix)-1], 64, szMsg); } else if(get_user_flags(sndr) & ADMIN_MAP) { new szMsg[64]; format(szMsg, sizeof(szMsg)-1, "^4[ Prižiūrėtojas ] "); add(prefix[strlen(prefix)-1], 64, szMsg); } else if(is_user_steam(sndr) && get_user_flags(sndr) & ADMIN_IMMUNITY) { new szMsg[64]; format(szMsg, sizeof(szMsg)-1, "^4[ Super Admin ] [ STEAM ] "); add(prefix[strlen(prefix)-1], 64, szMsg); } else if(get_user_flags(sndr) & ADMIN_IMMUNITY) { new szMsg[64]; format(szMsg, sizeof(szMsg)-1, "^4[ Super Admin ] "); add(prefix[strlen(prefix)-1], 64, szMsg); } else if(is_user_steam(sndr) && get_user_flags(sndr) & ADMIN_KICK) { new szMsg[64]; format(szMsg, sizeof(szMsg)-1, "^4[ Admin ] [ STEAM ] "); add(prefix[strlen(prefix)-1], 64, szMsg); } else if(get_user_flags(sndr) & ADMIN_KICK) { new szMsg[64]; format(szMsg, sizeof(szMsg)-1, "^4[ Admin ] "); add(prefix[strlen(prefix)-1], 64, szMsg); } else if(is_user_steam(sndr) && get_user_flags(sndr) & ADMIN_RESERVATION) { new szMsg[64]; format(szMsg, sizeof(szMsg)-1, "^4[ VIP ] [ STEAM ] "); add(prefix[strlen(prefix)-1], 64, szMsg); } else if(get_user_flags(sndr) & ADMIN_RESERVATION) { new szMsg[64]; format(szMsg, sizeof(szMsg)-1, "^4[ VIP ] "); add(prefix[strlen(prefix)-1], 64, szMsg); } } if(is_team_msg) { if( is_sndr_spec ) prefix = "^x01(Spectator) "; else if( sndr_team == 1 ) add( prefix[strlen(prefix)-1], 29, "^x01(Terrorist) " ); else if( sndr_team == 2 ) add( prefix[strlen(prefix)-1], 29, "^x01(Counter-Terrorist) " ); } if(get_user_flags(sndr) & ADMIN_RESERVATION) { format( msg, 512, "%s%s%s : ^4%s", strlen( prefix ) > 1 ? prefix : "", colchar[namecol], sndr_name, str4 ); } else { format( msg, 512, "%s%s%s : ^1%s", strlen( prefix ) > 1 ? prefix : "", colchar[namecol], sndr_name, str4 ); } return PLUGIN_HANDLED;} public task_clear_antiloop_vars(){ alv_sndr = 0; alv_str2 = ""; alv_str4 = ""; return PLUGIN_HANDLED;} stock bool:is_user_steam( id ){ static dp_pointer; if (dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider"))) { server_cmd("dp_clientinfo %d", id); server_exec(); return (get_pcvar_num(dp_pointer) == 2) ? true : false; } return false;}