[AMX] Admin Voice 1.0
Aquí presento un nuevo aporte. Está pensado para ser usado por cualquier persona a la que le sea de utilidad
El [AMX] Admin Voice es un plugin de comunicación dedicado a administradores. Con este plugin, los administradores dentro del server pueden hablar entre ellos mismos por micrófono, sin que los demás jugadores los escuchen. Funciona como el chat de voz especial (Traidores/Detectives) del mod [TTT]
El plugin está porteado para cualquier server con AMX. (Probado en 1.8.2 y 1.8.3)
Créditos a GuskiS, pues es un port del TTT_VOICE y se usa gran parte de su código.
El [AMX] Admin Voice es un plugin de comunicación dedicado a administradores. Con este plugin, los administradores dentro del server pueden hablar entre ellos mismos por micrófono, sin que los demás jugadores los escuchen. Funciona como el chat de voz especial (Traidores/Detectives) del mod [TTT]
El plugin está porteado para cualquier server con AMX. (Probado en 1.8.2 y 1.8.3)
Créditos a GuskiS, pues es un port del TTT_VOICE y se usa gran parte de su código.
Cualquier duda/sugerencia/error será respondido a la brevedad.
Bind
Cita:bind x +specialvoice
Código
Código PHP:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <cstrike>
new bool:g_isAdmin[33];
new g_Team[33];
new g_pMsgTeamInfo;
public plugin_init()
{
register_plugin("[AMX] Admin Voice", "1.0", "GabsHp & GuskiS");
register_forward(FM_Voice_SetClientListening, "Fw_SetClientListening_pre", 0);
register_clcmd("+specialvoice", "set_VoiceOn");
register_clcmd("-specialvoice", "set_VoiceOff");
g_pMsgTeamInfo = get_user_msgid("TeamInfo");
}
public client_putinserver(id)
{
if(get_user_flags(id) & ADMIN_KICK)
{
g_isAdmin[id] = true;
}
else
{
g_isAdmin[id] = false;
}
g_Team[id] = 0;
}
public client_disconnected(id)
{
g_isAdmin[id] = false;
g_Team[id] = 0;
}
public set_VoiceOn(id)
{
if(g_isAdmin[id])
{
client_cmd(id, "+voicerecord");
switch(cs_get_user_team(id))
{
case CS_TEAM_UNASSIGNED: g_Team[id] = 0;
case CS_TEAM_SPECTATOR: g_Team[id] = 1;
case CS_TEAM_CT: g_Team[id] = 2;
case CS_TEAM_T: g_Team[id] = 3;
}
voice_check(id, 0, g_Team[id]);
}
return PLUGIN_HANDLED;
}
public set_VoiceOff(id)
{
if(g_isAdmin[id])
{
client_cmd(id, "-voicerecord");
voice_check(id, 1, g_Team[id]);
}
return PLUGIN_HANDLED;
}
public Fw_SetClientListening_pre(receiver, sender, bool:listen)
{
if(!is_user_connected(receiver) || !is_user_connected(sender) || sender == receiver)
return FMRES_SUPERCEDE;
listen = ((get_speak(sender) == SPEAK_MUTED) ? false : (g_isAdmin[sender] && g_isAdmin[receiver]))
engfunc(EngFunc_SetClientListening, receiver, sender, listen);
return FMRES_SUPERCEDE;
}
public voice_check(id, type, team)
{
new num, i;
static players[32];
get_players(players, num);
for(--num; num >= 0; num--)
{
i = players[num];
if(g_isAdmin[i])
{
message_begin(MSG_ONE_UNRELIABLE, g_pMsgTeamInfo, _, i);
write_byte(id);
if(!type)
{
write_string("SPECTATOR");
}
else
{
switch(g_Team[id])
{
case 0: write_string("SPECTATOR");
case 1: write_string("SPECTATOR");
case 2: write_string("CT");
case 3: write_string("TERRORIST");
}
}
message_end();
}
}
}