about summary refs log tree commit diff
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2011-01-06 13:37:28 +0100
committeroy <Tom_Adams@web.de>2011-01-06 13:37:28 +0100
commit1306b62ce2e7c3494326889788b0fbacd371a709 (patch)
tree1f457e5a8c83397d33c5ed6d8d715705c6cf4c67
parent73010e7d2e501c08bcc10adf26c3c0084e5f6553 (diff)
downloadzcatch-1306b62ce2e7c3494326889788b0fbacd371a709.tar.gz
zcatch-1306b62ce2e7c3494326889788b0fbacd371a709.zip
added command to move all players to a team. Closes #384
-rw-r--r--src/game/client/gameclient.cpp1
-rw-r--r--src/game/server/gamecontext.cpp17
-rw-r--r--src/game/server/gamecontext.h1
3 files changed, 19 insertions, 0 deletions
diff --git a/src/game/client/gameclient.cpp b/src/game/client/gameclient.cpp
index ceae1b5d..be791284 100644
--- a/src/game/client/gameclient.cpp
+++ b/src/game/client/gameclient.cpp
@@ -192,6 +192,7 @@ void CGameClient::OnConsoleInit()
 	Console()->Register("broadcast", "r", CFGFLAG_SERVER, 0, 0, "Broadcast message");
 	Console()->Register("say", "r", CFGFLAG_SERVER, 0, 0, "Say in chat");
 	Console()->Register("set_team", "ii", CFGFLAG_SERVER, 0, 0, "Set team of player to team");
+	Console()->Register("set_team_all", "i", CFGFLAG_SERVER, 0, 0, "Set team of all players to team");
 	Console()->Register("addvote", "r", CFGFLAG_SERVER, 0, 0, "Add a voting option");
 	Console()->Register("vote", "r", CFGFLAG_SERVER, 0, 0, "Force a vote to yes/no");
 
diff --git a/src/game/server/gamecontext.cpp b/src/game/server/gamecontext.cpp
index 4f494f75..906b9801 100644
--- a/src/game/server/gamecontext.cpp
+++ b/src/game/server/gamecontext.cpp
@@ -904,6 +904,22 @@ void CGameContext::ConSetTeam(IConsole::IResult *pResult, void *pUserData)
 	(void)pSelf->m_pController->CheckTeamBalance();
 }
 
+void CGameContext::ConSetTeamAll(IConsole::IResult *pResult, void *pUserData)
+{
+	CGameContext *pSelf = (CGameContext *)pUserData;
+	int Team = clamp(pResult->GetInteger(0), -1, 1);
+	
+	char aBuf[256];
+	str_format(aBuf, sizeof(aBuf), "moved all clients to team %d", Team);
+	pSelf->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server", aBuf);
+	
+	for(int i = 0; i < MAX_CLIENTS; ++i)
+		if(pSelf->m_apPlayers[i])
+			pSelf->m_apPlayers[i]->SetTeam(Team);
+	
+	(void)pSelf->m_pController->CheckTeamBalance();
+}
+
 void CGameContext::ConAddVote(IConsole::IResult *pResult, void *pUserData)
 {
 	CGameContext *pSelf = (CGameContext *)pUserData;
@@ -992,6 +1008,7 @@ void CGameContext::OnConsoleInit()
 	Console()->Register("broadcast", "r", CFGFLAG_SERVER, ConBroadcast, this, "");
 	Console()->Register("say", "r", CFGFLAG_SERVER, ConSay, this, "");
 	Console()->Register("set_team", "ii", CFGFLAG_SERVER, ConSetTeam, this, "");
+	Console()->Register("set_team_all", "i", CFGFLAG_SERVER, ConSetTeamAll, this, "");
 
 	Console()->Register("addvote", "r", CFGFLAG_SERVER, ConAddVote, this, "");
 	Console()->Register("vote", "r", CFGFLAG_SERVER, ConVote, this, "");
diff --git a/src/game/server/gamecontext.h b/src/game/server/gamecontext.h
index f2326af8..55ad520f 100644
--- a/src/game/server/gamecontext.h
+++ b/src/game/server/gamecontext.h
@@ -52,6 +52,7 @@ class CGameContext : public IGameServer
 	static void ConBroadcast(IConsole::IResult *pResult, void *pUserData);
 	static void ConSay(IConsole::IResult *pResult, void *pUserData);
 	static void ConSetTeam(IConsole::IResult *pResult, void *pUserData);
+	static void ConSetTeamAll(IConsole::IResult *pResult, void *pUserData);
 	static void ConAddVote(IConsole::IResult *pResult, void *pUserData);
 	static void ConVote(IConsole::IResult *pResult, void *pUserData);
 	static void ConchainSpecialMotdupdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData);