Cstrike: cs_set_user_team - Add a param to choose whether TeamInfo message should be sent

This commit is contained in:
Arkshine 2015-07-08 13:59:02 +02:00
parent 8be119aa6a
commit 939aad5cb9
2 changed files with 21 additions and 11 deletions

View File

@ -514,7 +514,7 @@ static cell AMX_NATIVE_CALL cs_get_user_team(AMX *amx, cell *params)
return get_pdata<int>(pPlayer, m_iTeam);
}
// native cs_set_user_team(index, any:team, any:model = CS_DONTCHANGE);
// native cs_set_user_team(index, any:team, any:model = CS_DONTCHANGE, bool:send_teaminfo = true);
static cell AMX_NATIVE_CALL cs_set_user_team(AMX *amx, cell *params)
{
GET_OFFSET("CBasePlayer", m_iModelName);
@ -536,6 +536,13 @@ static cell AMX_NATIVE_CALL cs_set_user_team(AMX *amx, cell *params)
Players[index].ResetModel(pPlayer);
bool sendTeamInfo = true;
if (*params / sizeof(cell) >= 4)
{
sendTeamInfo = params[4] != 0;
}
char teaminfo[32];
switch (team)
@ -547,11 +554,14 @@ static cell AMX_NATIVE_CALL cs_set_user_team(AMX *amx, cell *params)
default: sprintf(teaminfo, "TEAM_%i", team);
}
MESSAGE_BEGIN(MSG_ALL, MessageIdTeamInfo);
WRITE_BYTE(index);
WRITE_STRING(teaminfo);
MESSAGE_END();
if (sendTeamInfo)
{
MESSAGE_BEGIN(MSG_ALL, MessageIdTeamInfo);
WRITE_BYTE(index);
WRITE_STRING(teaminfo);
MESSAGE_END();
}
MF_SetPlayerTeamInfo(index, team, team <= TEAM_SPECTATOR ? teaminfo : nullptr);
return 1;

View File

@ -465,17 +465,17 @@ native cs_set_user_plant(index, plant = 1, showbombicon = 1);
* @note For a list of valid team ids see the CsTeams enum, and for a list of
* valid internal model ids see the CsInternalModel enum.
*
* @param index Client index
* @param team Team id
* @param model Internal model id, if CS_DONTCHANGE the game will choose the
* model
* @param index Client index
* @param team Team id
* @param model Internal model id, if CS_DONTCHANGE the game will choose the model
* @param send_teaminfo If true, a TeamInfo message will be sent
*
* @noreturn
* @error If the client index is not within the range of 1 to
* MaxClients, or the client is not connected, an error will be
* thrown.
*/
native cs_set_user_team(index, any:team, any:model = CS_DONTCHANGE);
native cs_set_user_team(index, any:team, any:model = CS_DONTCHANGE, bool:send_teaminfo = true);
/**
* Returns the client's team and optionally the model id.