void CGameContext::OnClientConnected(int ClientID) { // Check which team the player should be on const int StartTeam = g_Config.m_SvTournamentMode ? TEAM_SPECTATORS : m_pController->GetAutoTeam(ClientID); m_apPlayers[ClientID] = new(ClientID) CPlayer(this, ClientID, StartTeam); //players[client_id].init(client_id); //players[client_id].client_id = client_id; (void)m_pController->CheckTeamBalance(); #ifdef CONF_DEBUG if(g_Config.m_DbgDummies) { if(ClientID >= MAX_CLIENTS-g_Config.m_DbgDummies) return; } #endif // send active vote if(m_VoteCloseTime) SendVoteSet(ClientID); // send motd CNetMsg_Sv_Motd Msg; Msg.m_pMessage = g_Config.m_SvMotd; Server()->SendPackMsg(&Msg, MSGFLAG_VITAL, ClientID); }
void CGameContext::StartVote(const char *pDesc, const char *pCommand, const char *pReason) { // check if a vote is already running if(m_VoteCloseTime) return; // reset votes m_VoteEnforce = VOTE_ENFORCE_UNKNOWN; for(int i = 0; i < MAX_CLIENTS; i++) { if(m_apPlayers[i]) { m_apPlayers[i]->m_Vote = 0; m_apPlayers[i]->m_VotePos = 0; } } // start vote m_VoteCloseTime = time_get() + time_freq()*25; str_copy(m_aVoteDescription, pDesc, sizeof(m_aVoteDescription)); str_copy(m_aVoteCommand, pCommand, sizeof(m_aVoteCommand)); str_copy(m_aVoteReason, pReason, sizeof(m_aVoteReason)); SendVoteSet(-1); m_VoteUpdate = true; }
void CGameContext::EndVote(int Type, bool Force) { m_VoteCloseTime = 0; if(Force) m_VoteCreator = -1; SendVoteSet(Type, -1); }
void CGameContext::OnClientConnected(int ClientID, bool Dummy) { m_apPlayers[ClientID] = new(ClientID) CPlayer(this, ClientID, Dummy); if(Dummy) return; // send active vote if(m_VoteCloseTime) SendVoteSet(VOTE_UNKNOWN, ClientID); // send motd SendMotd(ClientID); // send settings SendSettings(ClientID); }
void CGameContext::EndVote() { m_VoteCloseTime = 0; SendVoteSet(-1); }