PHP Code:
public actionTeamMenu(id, key)
{
switch (key)
{
case 7:
{
g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2);
displayTeamMenu(id, g_menuPosition[id])
}
case 8: displayTeamMenu(id, ++g_menuPosition[id])
case 9: displayTeamMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
new authid[32], authid2[32], name[32], name2[32]
get_user_name(player, name2, 31)
get_user_authid(id, authid, 31)
get_user_authid(player, authid2, 31)
get_user_name(id, name, 31)
static logdata[100]
formatex(logdata, charsmax(logdata), "[ADMIN] %s: transfer %s to %s", name, name2, g_CSTeamNames[g_menuOption[id] % 3])
log_to_file("Admins commands.log", logdata)
ColorChat(0, GREY, "^1[ADMIN]^4 %s^1: transfer^4 %s^1 to^4 %s", name, name2, g_CSTeamNames[g_menuOption[id] % 3])
if (g_cstrike)
{
if (is_user_alive(player))
{
new deaths = cs_get_user_deaths(player)
cs_set_user_deaths(player, deaths)
}
new iTeam = (g_menuOption[id] % 3) + 1;
setUserTeam_cs(player, iTeam,1,1)
if(iTeam != 3) //If it's not spectator then teleport him
{
new iorigin[3]
get_user_origin(player, iorigin)
message_begin(MSG_PVS, SVC_TEMPENTITY, iorigin)
write_byte(TE_TELEPORT);
write_coord(iorigin[0]);
write_coord(iorigin[1]);
write_coord(iorigin[2]);
message_end();
}
cs_reset_user_model(player)
} else {
new limit_setting = get_cvar_num("mp_limitteams")
set_cvar_num("mp_limitteams", 0)
engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2])
engclient_cmd(player, "joinclass", "1")
set_cvar_num("mp_limitteams", limit_setting)
}
displayTeamMenu(id, g_menuPosition[id])
}
}
return PLUGIN_HANDLED
}
stock setUserTeam_cs(index,team,respawn=0,updatescoreboard=1) {
if(is_user_connected(index)) {
if(team >= 0 && team <= 3) {
set_pdata_int(index, 114, team)
if(is_user_alive(index))
{
engclient_cmd(index, "drop", "weapon_c4")
if(team != 2)
{
new defuser = get_pdata_int(index, 193)
if(defuser & (1<<16))
{
defuser -= (1<<16)
set_pdata_int(index, 193, defuser)
}
message_begin(MSG_ONE, get_user_msgid("StatusIcon"), {0,0,0}, index)
write_byte(0)
write_string("defuser")
write_byte(0)
write_byte(255)
write_byte(0)
message_end()
}
else
{
if(team == 3)
{
user_silentkill(index)
return 0;
}
}
}
if(respawn)
{
new health = get_user_health(index)
new armor = get_user_armor(index)
set_pev(index, pev_spawnflags, 3)
dllfunc(DLLFunc_Spawn, index)
set_pev(index, pev_iuser1, 0)
set_pev(index, pev_health, float(health))
set_pev(index, pev_armorvalue, float(armor))
}
if(updatescoreboard) {
message_begin(MSG_ALL, get_user_msgid("TeamInfo"))
write_byte(index)
switch(team) {
case 1: write_string("TERRORIST")
case 2: write_string("CT")
}
message_end()
}
return 1
}
}
return 0
}
I checked if team == 3 which means spectator and then added user_silentkill function . Also i checked team to avoid teleporting the spectator.