void CGameTeams::SetForceCharacterTeam(int ClientID, int Team) { m_TeeFinished[ClientID] = false; if(m_Core.Team(ClientID) != TEAM_FLOCK && m_Core.Team(ClientID) != TEAM_SUPER && m_TeamState[m_Core.Team(ClientID)] != TEAMSTATE_EMPTY) { bool NoOneInOldTeam = true; for(int i = 0; i < MAX_CLIENTS; ++i) if(i != ClientID && m_Core.Team(ClientID) == m_Core.Team(i)) { NoOneInOldTeam = false;//all good exists someone in old team break; } if(NoOneInOldTeam) m_TeamState[m_Core.Team(ClientID)] = TEAMSTATE_EMPTY; } if(Count(m_Core.Team(ClientID)) > 0) m_MembersCount[m_Core.Team(ClientID)]--; m_Core.Team(ClientID, Team); if(m_Core.Team(ClientID) != TEAM_SUPER) m_MembersCount[m_Core.Team(ClientID)]++; if(Team != TEAM_SUPER && m_TeamState[Team] == TEAMSTATE_EMPTY) ChangeTeamState(Team, TEAMSTATE_OPEN); for (int LoopClientID = 0; LoopClientID < MAX_CLIENTS; ++LoopClientID) { if(Character(LoopClientID) && Character(LoopClientID)->GetPlayer()->m_IsUsingDDRaceClient) SendTeamsState(LoopClientID); } }
void CGameTeams::SetForceCharacterTeam(int ClientID, int Team) { int OldTeam = m_Core.Team(ClientID); if (Team != m_Core.Team(ClientID)) ForceLeaveTeam(ClientID); else { m_TeeFinished[ClientID] = false; if (Count(m_Core.Team(ClientID)) > 0) m_MembersCount[m_Core.Team(ClientID)]--; } m_Core.Team(ClientID, Team); if (m_Core.Team(ClientID) != TEAM_SUPER) m_MembersCount[m_Core.Team(ClientID)]++; if (Team != TEAM_SUPER && (m_TeamState[Team] == TEAMSTATE_EMPTY || m_TeamLocked[Team])) { if (!m_TeamLocked[Team]) ChangeTeamState(Team, TEAMSTATE_OPEN); if (GameServer()->Collision()->m_NumSwitchers > 0) { for (int i = 0; i < GameServer()->Collision()->m_NumSwitchers+1; ++i) { GameServer()->Collision()->m_pSwitchers[i].m_Status[Team] = GameServer()->Collision()->m_pSwitchers[i].m_Initial; GameServer()->Collision()->m_pSwitchers[i].m_EndTick[Team] = 0; GameServer()->Collision()->m_pSwitchers[i].m_Type[Team] = TILE_SWITCHOPEN; } } } if (OldTeam != Team) for (int LoopClientID = 0; LoopClientID < MAX_CLIENTS; ++LoopClientID) if (GetPlayer(LoopClientID)) SendTeamsState(LoopClientID); }