No, it's not, learn to go through the code and try to simulate in your mind what it does.
Yours, apart from the verry repeatitive call of is_user_alive(), you're calling it wrong, you need to check if the sender is alive, not the receiver.
Code:
public say_team(id)
{
static name[32], mes[200], players[32], player, alive, num, i, CsTeams:team;
read_args(mes, 199);
remove_quotes(mes);
trim(mes);
get_user_name(id, name, 31);
alive = is_user_alive(id);
team = cs_get_user_team(id);
num = get_playersnum();
get_players(players, num, "c");
for (i = 0; i < num; i++)
{
player = players[i];
/* you could replace is_user_connected(player) with is_user_alive(player) == alive if you don't want dead-alive chat. */
if(is_user_connected(player) && cs_get_user_team(player) == team)
chat(player, "!team[Team] *%s* !g%s !y: !team%s", (alive ? "ALIVE" : "DEAD"), name, mes);
}
return PLUGIN_HANDLED;
}
__________________