From 939aad5cb932ad775952550347ff6f79dc02b012 Mon Sep 17 00:00:00 2001 From: Arkshine Date: Wed, 8 Jul 2015 13:59:02 +0200 Subject: [PATCH] Cstrike: cs_set_user_team - Add a param to choose whether TeamInfo message should be sent --- modules/cstrike/cstrike/CstrikeNatives.cpp | 22 ++++++++++++++++------ plugins/include/cstrike.inc | 10 +++++----- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/modules/cstrike/cstrike/CstrikeNatives.cpp b/modules/cstrike/cstrike/CstrikeNatives.cpp index bed06141..e49b88c2 100644 --- a/modules/cstrike/cstrike/CstrikeNatives.cpp +++ b/modules/cstrike/cstrike/CstrikeNatives.cpp @@ -514,7 +514,7 @@ static cell AMX_NATIVE_CALL cs_get_user_team(AMX *amx, cell *params) return get_pdata(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; diff --git a/plugins/include/cstrike.inc b/plugins/include/cstrike.inc index 68e949c3..bd033649 100755 --- a/plugins/include/cstrike.inc +++ b/plugins/include/cstrike.inc @@ -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.