the best Posted June 9, 2009 Report Share Posted June 9, 2009 Lbadien visiem es gribetu uzzinat kura vieta ieks admin_gag.sma var nomainit admina flag nu piemaram ja vinam tas flag ir uzlikts uz n tad es gribetu nomainit uz a lai vinu varetu izmantot tikai tie admini kuram ir full acc iedosu ari kodu un man vajag lai jus paradat to rindu krua var nomainit a to nevar atrast tur visapr ppc /* Admin Gag Command About: This plugin allows you to gag players from using say_team,say or voicecomm. It also echos admin acctions based on amx_show_activity. The plugin can also block gagged clients from changing their nick. Admins with immunity will not be executed on, unless their executing on themself Usage: amx_gag <nick/userid> <flags (a/b/c)> <time in seconds> // lets you control what you want to gag amx_gag <nick/userid> <time in seconds> // Will automaticly add the abc flag. amx_gag <nick/userid> // Will add abc flags, and 600 secounds gag. amx_gag <nick/userid> <flags> amx_ungag <nick/userid> // Will remove all "gags" Modules required: Engine FAQ) Q) Can i mute voicecomm? A) Yes, that should be on by defualt. But you can make sure "#define VoiceCommMute 1" Q) Is there any way i can disable the engine module and still run the plugin? A) yes, "#define VoiceCommMute 0". Plugin forum thread: http://www.amxmodx.org/forums/viewtopic.php?t=463 Credits: Ops in #AMXmod @ Quakenet for alot of help ( + AssKicker & CheesyPeteza ) This plugin is heavly based on the work of tcquest78 in his gag plugin http://djeyl.net/forum/index.php?showtopic=4962 Code for Namechange block code was taken from Olo`s one_name plugin. Changelog: 1.8.3 ( 23.02.2005 ) - Fixed: Voicecomm not being muted via callfunc interface ( Like Admin Aimmenu ) 1.8.2 ( 22.09.2004 ) - Fixed: Default gag reason not being shown. 1.8.1 ( 21.09.2004 ) - Fixed: Players voicecomm not being reset properbly with sv_alltalk 1 1.8.0 ( 10.09.2004 ) - Added: func_AddGag() to allow third party plugins to gag a client( Like my admin Aimmenu) - Added: func_RemoveGag() to remove a gag via a third party plugin 1.7.5 ( 06.07.2004 ) - Changed: #define MaxPlayers to be 32 instead of 33 (Should save a few byte of mem ) 1.7.4 ( 06.07.2004 ) - Changed: Once amx_gag/amx_ungag is used admins will no longer see "command not found" in console anymore ( Thx to Downtown1) - Added: #define for MaxPlayers 1.7.3 ( 06.07.2004 ) - Fixed: Fixed possible issue with steamids being to long (Would just be text cut on in logs/text) 1.7.2 ( 03.07.2004 ) - Fixed: Spelling Errors ( Thx to Mr. Satan ) 1.7.1 ( 20.06.2004 ) - Added: Plugin now logs the gag reason 1.7.0 ( 20.06.2004 ) - Changed: Plugin has gotten a rewrite/cleanup - Changed: Plugin is now properbly format - Added: Ability to play a to gagged clients when their trying to talk ( Idea by Girthesniper ) - Added: Ability to show the reason for the gag. - Fixed: Error where the command line would not read out more then 3 bytes of eatch var. 1.6.2 ( 28.05.2004 ) - Hack: UnGagPlayer echoing that unconnected clients had been ungagged when time ran out 1.6.1 ( 25.05.2004 ) - Changed: task is now registered with the same id as player index - Added: a define to change the default gag time 1.6.0 - Changed: Name change blocking enabled by default. - Added: Plugin now logs amx_ungag actions - Added: amx_ungag now echos target nick even if #userid was used - Added: amx_gag <nick/userid> <seconds or minuts> ( amx_gag EKS 120 / amx_gag EKS 2m ) 1.5.0 - Added: Ability to block namechange on clients that are gagged ( Disabled by default, just change #define BlockNameChange ) 1.4.3 - No update to the plugin, just added comments to help new admins. 1.4.2 - Fixed oversight that would allow none admins to use the plugin 1.4.1 ( 01.03.2004 ) - Now user log_amx style loggin - Now use AMXX engine to mute/unmute voicecomm 1.4.0 ( 01.03.2004 ) - Now only umutes voicecomm if player was muted by this plugin - Now echos what what the admin has muted. - To mute voicecomm you either need D2Tools or vexd. You can change what module to use in the define section.( look for: VoiceCommMute ) - You can set #define VoiceCommMute to 0, and you dont need any extra modules anymore. But loose the ability to mute voicecomm. 1.3.1 ( 17.02.2004 ) - Fixed muting voicecomm not working ( Info needed extracted from this plugin: http://djeyl.net/forum/index.php?showtopic=16533 | Proerrenrg ) 1.3.0 ( 17.02.2004 ) - Now print nick and authid when a player disconnects - Now only one place in the code that can ungag a player ( ungag ) - Added admin log - Fixed not gag flags not working - Changed plugin file name to: admin_gag.XXX - Minor code cleanup. More comments, Code cleaner & UnGagPlayer should be "faster" 1.2.1 ( 06.02.2004 ) - Fixed support for #userid again - Now use console_print to echo when player is not gagged ( in amx_ungag ) 1.2 - Now supports muting voicecomm ( the flag c ) - REQUIRES Vexd module, use 1.1 if you dont want to run this module 1.1 - Now supports amx_gag <nick> <time> ( Adds ab as flag if no other flag is entered.) - Now supports amx_gag <nick/auth> - Fixed echoing with amx_show_activity 1 not showing the secounds 1.0 (Changes are from the orginal plugin to this one) - Now echos admin acctions based on amx_show_activity - Now echos when a player is ungagged by admin - Now echos when a player is ungagged becuse the "time" has run out. - Now echos when a gagged player disconnects - Admins with immunity flag can do actions on themself. - If you try to ungag a player thats not gagged, you get a "error" message - Changed the "your gagged" message so its simpler to spot in Steam. - Somehow the compiled file is smaller then with the orignal */ #define VoiceCommMute 1 // 0 = Disabled ( no extra module required ) | 1 = Voicecomm muteing enabled. ( requires engine module) #define BlockNameChange 1 // 0 = Disabled | 1 = Block namechange on gagged clients #define LogAdminActions 1 // 0 = Disabled | 1 = Admin actions will be logged #define DefaultGagTime 1200.0 // The std gag time if no other time was entered. ( this is 20 min ), Remember the value MUST contain a .0 #define PlaySound 1 // 0 = Disabled | 1 = Play a sound to gagged clients when their trying to talk #define GagReason 1 // 0 = Disabled | 1 = Gagged clients can see why there where gagged when they try to talk #define MaxPlayers 32 #define AllowOtherPlugin2Interface 1 #include <amxmodx> #include <amxmisc> #include <engine> new g_GagPlayers[MaxPlayers+1] // Used to check if a player is gagged #if GagReason == 1 new gs_GagReason[MaxPlayers+1][48] #endif public plugin_init() { register_plugin("Admin Gag","1.8.3","Baross") register_clcmd("say","block_gagged") register_clcmd("say_team","block_gagged") register_concmd("amx_gag","CMD_GagPlayer",ADMIN_KICK,"<nick or #userid> <a|b|c> <time>") register_concmd("amx_ungag","CMD_UnGagPlayer",ADMIN_KICK,"<nick or #userid>") } public block_gagged(id){ // This function is what check the say / team_say messages & block them if the client is blocked. if(!g_GagPlayers[id]) return PLUGIN_CONTINUE // Is true if the client is NOT blocked. new cmd[5] read_argv(0,cmd,4) if ( cmd[3] == '_' ) { if (g_GagPlayers[id] & 2){ #if GagReason == 1 client_print(id,print_chat,"* You are Gagged For The Following Reason: %s",gs_GagReason[id]) #else client_print(id,print_chat,"* You Have Been Gagged") #endif #if PlaySound == 1 client_cmd(id,"spk barney/youtalkmuch") #endif return PLUGIN_HANDLED } } else if (g_GagPlayers[id] & 1) { #if GagReason == 1 client_print(id,print_chat,"* You Are Gagged For The Following Reason: %s",gs_GagReason[id]) #else client_print(id,print_chat,"* You Have Been Gagged") #endif #if PlaySound == 1 client_cmd(id,"spk barney/youtalkmuch") #endif return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public CMD_GagPlayer(id,level,cid) { if(!cmd_access (id,level,cid,1)) return PLUGIN_HANDLED new arg[32],VictimID read_argv(1,arg,31) // Arg contains Targets nick or Userid VictimID = cmd_target(id,arg,8) // This code here tryes to find out the player index. Either from a nick or #userid if ((get_user_flags(VictimID) & ADMIN_IMMUNITY) && VictimID != id || !cmd_access (id,level,cid,2) ) { return PLUGIN_HANDLED; } // This code is kind of "long", its job is to. Stop actions against admins with immunity, Stop actions action if the user lacks access, or is a bot/hltv new s_Flags[4],VictimName[32],AdminName[32],flags,ShowFlags[32],CountFlags,s_GagTime[8],Float:f_GagTime read_argv(2,arg,31) if (!arg[0]) // This means amx_gag <nick / userid> and no other flag or time was used. { f_GagTime = DefaultGagTime format(s_Flags,7,"abc") } else { if(contain(arg,"m")!=-1 && contain(arg,"!")==-1) // This means the time was entered in minuts and not seconds { copyc(s_GagTime,7,arg, 'm') f_GagTime = floatstr(s_GagTime) * 60 } else if(isdigit(arg[0])&& contain(arg,"!")==-1) // The value was entered in seconds { format(s_GagTime,7,arg) f_GagTime = floatstr(s_GagTime) } read_argv(3,arg,8) if (!arg[0]) // No flag has been entered format(s_Flags,7,"abc") else if(contain(arg,"!")==-1) // This means that arg did NOT contain the ! symbot format(s_Flags,7,arg) else if(contain(arg,"!")!=-1) // This means that arg did DOES contain the ! symbot format(s_Flags,7,"abc") if (f_GagTime == 0.0) { read_argv(2,arg,8) if(contain(arg,"!")!=-1) format(s_Flags,3,"abc") // Flag was entered. else format(s_Flags,3,arg) // Flag was entered. f_GagTime = DefaultGagTime } #if GagReason == 1 new GagReasonFound=1 for(new i=2;i<=4;i++) { read_argv(i,arg,31) if(contain(arg,"!")!=-1) { read_args(arg,31) new tmp[32] copyc(tmp,32,arg,33) copy(gs_GagReason[VictimID],47,arg[strlen(tmp)+1]) GagReasonFound = 1 } } if(GagReasonFound == 0) // If no reason was entered, add the std reason. format(gs_GagReason[VictimID],47,"You Were Gagged For Not Following The Rules") #endif } flags = read_flags(s_Flags) // Converts the string flags ( a,b or c ) into a int g_GagPlayers[VictimID] = flags #if VoiceCommMute == 1 if(flags & 4) // This code checks if the c flag was used ( reprisented by the number 4 ), If pressent it mutes his voicecomm. set_speak(VictimID, SPEAK_MUTED) #endif new TaskParm[1] // For some reason set_task requires a array. So i make a array :) TaskParm[0] = VictimID set_task( f_GagTime,"task_UnGagPlayer",VictimID,TaskParm,1) CountFlags = 0 if (flags & 1) { format(ShowFlags,31,"say") CountFlags++ } if (flags & 2) { if(CountFlags) format(ShowFlags,31,"%s / say_team",ShowFlags) if(!CountFlags) format(ShowFlags,31,"say_team") } #if VoiceCommMute != 0 if(flags & 4) { if(CountFlags) format(ShowFlags,31,"%s / voicecomm",ShowFlags) if(!CountFlags) format(ShowFlags,31,"voicecomm") } #endif get_user_name(id,AdminName,31) get_user_name(VictimID,VictimName,31) switch(get_cvar_num("amx_show_activity")) { #if GagReason == 1 case 2: client_print(0,print_chat,"ADMIN %s: Has Gagged %s From Speaking For %0.0f Minutes, For: %s ( %s )",AdminName,VictimName,(f_GagTime / 60),gs_GagReason[VictimID],ShowFlags) // debug added case 1: client_print(0,print_chat,"ADMIN: Has Gagged %s From Speaking For %0.0f Minutes, For: %s ( %s )",VictimName,(f_GagTime / 60),gs_GagReason[VictimID],ShowFlags) #else case 2: client_print(0,print_chat,"ADMIN %s: Has Gagged %s From Speaking For %0.0f Minutes ( %s )",AdminName,VictimName,(f_GagTime / 60),ShowFlags) // debug added case 1: client_print(0,print_chat,"ADMIN: Has Gagged %s From Speaking For %0.0f Minutes ( %s )",VictimName,(f_GagTime / 60),ShowFlags) #endif } #if LogAdminActions == 1 new parm[5] /*0 = Victim id | 1 = Admin id | 2 = Used to control if its a gag or Ungag | 3 = The gag flags | 4 = Length of the gag */ parm[0] = VictimID parm[1] = id parm[2] = 0 parm[3] = flags parm[4] = floatround(Float:f_GagTime) LogAdminAction(parm) #endif return PLUGIN_HANDLED } public CMD_UnGagPlayer(id,level,cid) /// Removed gagged player ( done via console command ) { new arg[32],VictimID read_argv(1,arg,31) // Arg contains Targets nick VictimID = cmd_target(id,arg,8) // This code here tryes to find out the player index. Either from a nick or #userid if ((get_user_flags(VictimID) & ADMIN_IMMUNITY) && VictimID != id || !cmd_access (id,level,cid,2) ) { return PLUGIN_HANDLED; } // This code is kind of "long", its job is to. Stop actions against admins with immunity, Stop actions action if the user lacks access, or is a bot/hltv new AdminName[32],VictimName[32] get_user_name(id,AdminName,31) // Gets Admin name get_user_name(VictimID,VictimName,31) if(!g_GagPlayers[VictimID]) // Checks if player has gagged flag { console_print(id,"%s Is Not Gagged & Cannot Be Ungagged.",arg) return PLUGIN_HANDLED } switch(get_cvar_num("amx_show_activity")) { case 2: client_print(0,print_chat,"ADMIN %s: Has Ungagged %s",AdminName,VictimName) case 1: client_print(0,print_chat,"ADMIN: Has Ungagged %s",VictimName) } #if LogAdminActions == 1 new parm[3] /*0 = Victim id | 1 = Admin id | 2 = Used to control if its a gag or Ungag | 3 = The gag flags | 4 = Length of the gag */ parm[0] = VictimID parm[1] = id parm[2] = 1 LogAdminAction(parm) #endif remove_task(VictimID) // Removes the set_task set to ungag the player UnGagPlayer(VictimID) // This is the function that does the actual removal of the gag info return PLUGIN_HANDLED } public client_disconnect(id) { if(g_GagPlayers[id]) // Checks if disconnected player is gagged, and removes flags from his id. { new Nick[32],Authid[35] get_user_name(id,Nick,31) get_user_authid(id,Authid,34) client_print(0,print_chat,"[AMX] Gagged Player Has Disconnected ( %s <%s> )",Nick,Authid) remove_task(id) // Removes the set_task set to ungag the player UnGagPlayer(id) // This is the function that does the actual removal of the gag info } } #if BlockNameChange == 1 public client_infochanged(id) { if(g_GagPlayers[id]) { new newname[32], oldname[32] get_user_info(id, "name", newname,31) get_user_name(id,oldname,31) if (!equal(oldname,newname)) { client_print(id,print_chat,"* Gagged Clients Cannot Change Their Name") set_user_info(id,"name",oldname) } } } #endif public task_UnGagPlayer(TaskParm[]) // This function is called when the task expires { new VictimName[32] get_user_name(TaskParm[0],VictimName,31) client_print(0,print_chat,"ADMIN: %s Is No Longer Gagged",VictimName) UnGagPlayer(TaskParm[0]) } #if LogAdminActions == 1 stock LogAdminAction(parm[]) // This code is what logs the admin actions. { new VictimName[32],AdminName[32],AdminAuth[35],VictimAuth[35] get_user_name(parm[1],AdminName,31) get_user_name(parm[0],VictimName,31) get_user_authid(parm[1],AdminAuth,34) get_user_authid(parm[0],VictimAuth,34) #if GagReason == 1 if(parm[2] == 0) log_amx("Gag: ^"%s<%s>^" Has Gagged %s <%s> for %d ( %d ) Reason: %s",AdminName,AdminAuth,VictimName,VictimAuth,parm[4],parm[3],gs_GagReason[parm[0]]) #else if(parm[2] == 0) log_amx("Gag: ^"%s<%s>^" Has Gagged %s <%s> for %d ( %d )",AdminName,AdminAuth,VictimName,VictimAuth,parm[4],parm[3]) #endif if(parm[2] == 1) log_amx("UnGag: ^"%s<%s>^" Has Ungagged %s<%s>",AdminName,AdminAuth,VictimName,VictimAuth) } #endif stock UnGagPlayer(id) // This code is what removes the gag. { #if VoiceCommMute == 1 if(g_GagPlayers[id] & 4) // Unmutes the player if he had voicecomm muted. { if(get_cvar_num("sv_alltalk") == 1) set_speak(id, SPEAK_ALL) else set_speak(id, SPEAK_NORMAL) } #endif g_GagPlayers[id] = 0 #if GagReason == 1 setc(gs_GagReason[id],31,0) #endif } #if AllowOtherPlugin2Interface == 1 public func_AddGag(id) { g_GagPlayers[id] = 7 new TaskParm[1] // For some reason set_task requires a array. So i make a array :) TaskParm[0] = id #if VoiceCommMute == 1 set_speak(id, SPEAK_MUTED) #endif set_task( DefaultGagTime,"task_UnGagPlayer",id,TaskParm,1) } public func_RemoveGag(id) { remove_task(id) // Removes the set_task set to ungag the player UnGagPlayer(id) } #endif Link to comment Share on other sites More sharing options...
KpC Posted June 9, 2009 Report Share Posted June 9, 2009 Tu visu kodu izlasiji? Vai tikai uzmeti aci un ieliki lai tavā vietā meklē? Izlasi un ganjav sapratīsi. Link to comment Share on other sites More sharing options...
*jancis38* Posted June 9, 2009 Report Share Posted June 9, 2009 Tev ir jārediģē šīs vietas: register_concmd("amx_gag","CMD_GagPlayer",ADMIN_KICK,"<nick or #userid> <a|b|c> <time>") register_concmd("amx_ungag","CMD_UnGagPlayer",ADMIN_KICK,"<nick or #userid>") Link to comment Share on other sites More sharing options...
the best Posted June 10, 2009 Author Report Share Posted June 10, 2009 nu ja es nomainu ADMIN_KICK piemeram uz m tad vins darbosies tiem adminiem kam ir m komanda dota vai kaa ? Link to comment Share on other sites More sharing options...
dimka62 Posted June 10, 2009 Report Share Posted June 10, 2009 ADMIN_KICK vietā tu nedrīksti likt m burtu tu vari likt piem. ADMIN_BAN un gag būs uz d burta. Link to comment Share on other sites More sharing options...
tankeris Posted June 10, 2009 Report Share Posted June 10, 2009 (edited) m burts ir ADMIN_LEVEL_A a burts ir ADMIN_IMMUNITY Edited June 10, 2009 by tankeris Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now