P.S komendy na aktywacje mikrofonu, admin online i inne wywalić
#include <amxmodx> #include <amxmisc> #include <fakemeta> #define PLUGIN "Microphone Restrictions" #define VERSION "1.2" #define AUTHOR "Jon" #define ADMIN_MIC ADMIN_BAN new cvar_enabled; new cvar_max; new cvar_adminonly; new cvar_time; new cvar_delay; new cvar_autocvars; new active_users; new bool:isallowed[33]; new bool:isbanned[33]; new bool:isdelayed[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_cvar("mic_version", VERSION, FCVAR_SERVER); cvar_enabled = register_cvar("mic_enable", "1"); cvar_max = register_cvar("mic_max", "5"); cvar_adminonly = register_cvar("mic_adminonly", "0"); cvar_time = register_cvar("mic_time", "60"); cvar_delay = register_cvar("mic_delay", "120"); cvar_autocvars = register_cvar("mic_autocvars", "1"); register_concmd("mic_banplayer", "plugin_banplayer", ADMIN_MIC, "Bans someone from using their microphone"); register_clcmd("say /mic", "client_mic"); register_clcmd("say_team /mic", "client_mic"); set_task(1.0, "plugin_cvars"); } public plugin_cvars() { if(get_pcvar_num(cvar_autocvars)) { set_cvar_string("sv_voicecodec", "voice_speex"); set_cvar_num("sv_voiceenable", 1); set_cvar_num("sv_voicequality", 5); set_cvar_num("sv_alltalk", 1); } } public plugin_banplayer(id, level, cid) { if(!cmd_access(id, level, cid, 0)) return PLUGIN_HANDLED; new arg[32]; read_argv(1, arg, 32); new player = cmd_target(id, arg, 0); if(!player) return PLUGIN_HANDLED; new adminname[32]; new playername[32]; get_user_name(id, adminname, 31); get_user_name(id, playername, 31); client_print(id, print_chat, "[MIC] %s has banned %s from using microphone", adminname, playername); isbanned[player] = true; isallowed[player] = false; return PLUGIN_HANDLED; } public client_mic(id) { if(!get_pcvar_num(cvar_enabled) || get_pcvar_num(cvar_adminonly)) return PLUGIN_HANDLED; if(isbanned[id]) { client_print(id, print_chat, "[MIC] You are banned from using your microphone"); return PLUGIN_HANDLED; } else if(active_users >= get_pcvar_num(cvar_max)) { client_print(id, print_chat, "[MIC] Maximum amount of players are already using their microphone (%d)", get_pcvar_num(cvar_max)); return PLUGIN_HANDLED; } else if(isdelayed[id]) { client_print(id, print_chat, "[MIC] You have to wait %d seconds before you can use your microphone again", get_pcvar_num(cvar_delay)); return PLUGIN_HANDLED; } else { active_users++; isallowed[id] = true; set_task(float(get_pcvar_num(cvar_time)), "remove_allowed", id); client_print(id, print_chat, "[MIC] You can now use your microphone for %d seconds", get_pcvar_num(cvar_time)); } return PLUGIN_CONTINUE; } public fwd_voice_setclientlistening(receiver, id) { if(!get_pcvar_num(cvar_enabled) || !is_user_connected(receiver) || !is_user_connected(id) || receiver == id) return FMRES_IGNORED; if(get_pcvar_num(cvar_adminonly)) { if(get_user_flags(id) & ADMIN_MIC) return FMRES_IGNORED; else engfunc(EngFunc_SetClientListening, receiver, id, 0); return FMRES_IGNORED; } else { if(!isallowed[id]) { engfunc(EngFunc_SetClientListening, receiver, id, 0); return FMRES_SUPERCEDE; } else return FMRES_IGNORED; } return FMRES_IGNORED; } public remove_allowed(id) { active_users--; isallowed[id] = false; isdelayed[id] = true; client_print(id, print_chat, "[MIC] You are no longer able to use your microphone"); set_task(float(get_pcvar_num(cvar_delay)), "remove_delay", id); } public remove_delay(id) isdelayed[id] = false;