diff options
| author | oy <Tom_Adams@web.de> | 2011-03-28 23:45:47 +0200 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2011-03-28 23:45:47 +0200 |
| commit | f9288eb5b15d3ed1dba4856e4a70a55f899c00a0 (patch) | |
| tree | ec1c59135aa1b95cbda551b4ff6192d1466bb07b /src | |
| parent | 141089f2573d7be7b70d9a187ba855a0f2c756c4 (diff) | |
| download | zcatch-f9288eb5b15d3ed1dba4856e4a70a55f899c00a0.tar.gz zcatch-f9288eb5b15d3ed1dba4856e4a70a55f899c00a0.zip | |
fixed that spectators go to free view if the followed player joins spectators and prevent that you can follow spectators
Diffstat (limited to 'src')
| -rw-r--r-- | src/game/server/gamecontext.cpp | 2 | ||||
| -rw-r--r-- | src/game/server/player.cpp | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/game/server/gamecontext.cpp b/src/game/server/gamecontext.cpp index d008787a..a50a7ef3 100644 --- a/src/game/server/gamecontext.cpp +++ b/src/game/server/gamecontext.cpp @@ -803,7 +803,7 @@ void CGameContext::OnMessage(int MsgID, CUnpacker *pUnpacker, int ClientID) return; pPlayer->m_LastSetSpectatorMode = Server()->Tick(); - if(pMsg->m_SpectatorID != SPEC_FREEVIEW && !m_apPlayers[pMsg->m_SpectatorID]) + if(pMsg->m_SpectatorID != SPEC_FREEVIEW && (!m_apPlayers[pMsg->m_SpectatorID] || m_apPlayers[pMsg->m_SpectatorID]->GetTeam() == TEAM_SPECTATORS)) SendChatTarget(ClientID, "Invalid spectator id used"); else pPlayer->m_SpectatorID = pMsg->m_SpectatorID; diff --git a/src/game/server/player.cpp b/src/game/server/player.cpp index 6c118a19..6387cc9c 100644 --- a/src/game/server/player.cpp +++ b/src/game/server/player.cpp @@ -229,6 +229,16 @@ void CPlayer::SetTeam(int Team) GameServer()->Console()->Print(IConsole::OUTPUT_LEVEL_DEBUG, "game", aBuf); GameServer()->m_pController->OnPlayerInfoChange(GameServer()->m_apPlayers[m_ClientID]); + + if(Team == TEAM_SPECTATORS) + { + // update spectator modes + for(int i = 0; i < MAX_CLIENTS; ++i) + { + if(GameServer()->m_apPlayers[i] && GameServer()->m_apPlayers[i]->m_SpectatorID == m_ClientID) + GameServer()->m_apPlayers[i]->m_SpectatorID = SPEC_FREEVIEW; + } + } } void CPlayer::TryRespawn() |