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;


Dodatki SourceMod



Temat jest zamknięty










