diff options
| author | oy <Tom_Adams@web.de> | 2011-03-15 11:23:49 +0100 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2011-03-15 11:23:49 +0100 |
| commit | 30d9c9f4d9e46fec403f3fa810898017a18e93b6 (patch) | |
| tree | 722a14c6fb470c65e21a1ec8daab0c1391c03d38 /src/engine/server | |
| parent | 27e5a6af0d09192e1a865332f35bde4a0ac180dd (diff) | |
| download | zcatch-30d9c9f4d9e46fec403f3fa810898017a18e93b6.tar.gz zcatch-30d9c9f4d9e46fec403f3fa810898017a18e93b6.zip | |
made network support clan name and country code for players
Diffstat (limited to 'src/engine/server')
| -rw-r--r-- | src/engine/server/server.cpp | 52 | ||||
| -rw-r--r-- | src/engine/server/server.h | 7 |
2 files changed, 55 insertions, 4 deletions
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp index f385a312..fcc141bb 100644 --- a/src/engine/server/server.cpp +++ b/src/engine/server/server.cpp @@ -192,6 +192,11 @@ int CServer::TrySetClientName(int ClientID, const char *pName) // trim the name str_copy(aTrimmedName, StrLtrim(pName), sizeof(aTrimmedName)); StrRtrim(aTrimmedName); + + // check if new and old name are the same + if(str_comp(m_aClients[ClientID].m_aName, aTrimmedName) == 0) + return 0; + char aBuf[256]; str_format(aBuf, sizeof(aBuf), "'%s' -> '%s'", pName, aTrimmedName); Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "server", aBuf); @@ -239,6 +244,22 @@ void CServer::SetClientName(int ClientID, const char *pName) } } +void CServer::SetClientClan(int ClientID, const char *pClan) +{ + if(ClientID < 0 || ClientID >= MAX_CLIENTS || m_aClients[ClientID].m_State < CClient::STATE_READY || !pClan) + return; + + str_copy(m_aClients[ClientID].m_aClan, pClan, MAX_CLAN_LENGTH); +} + +void CServer::SetClientCountry(int ClientID, int Country) +{ + if(ClientID < 0 || ClientID >= MAX_CLIENTS || m_aClients[ClientID].m_State < CClient::STATE_READY) + return; + + m_aClients[ClientID].m_Country = Country; +} + void CServer::SetClientScore(int ClientID, int Score) { if(ClientID < 0 || ClientID >= MAX_CLIENTS || m_aClients[ClientID].m_State < CClient::STATE_READY) @@ -284,6 +305,7 @@ int CServer::Init() m_aClients[i].m_State = CClient::STATE_EMPTY; m_aClients[i].m_aName[0] = 0; m_aClients[i].m_aClan[0] = 0; + m_aClients[i].m_Country = -1; m_aClients[i].m_Snapshots.Init(); } @@ -332,10 +354,32 @@ const char *CServer::ClientName(int ClientID) { if(ClientID < 0 || ClientID >= MAX_CLIENTS || m_aClients[ClientID].m_State == CServer::CClient::STATE_EMPTY) return "(invalid client)"; - else if(m_aClients[ClientID].m_State < CServer::CClient::STATE_READY) + if(m_aClients[ClientID].m_State == CServer::CClient::STATE_INGAME) + return m_aClients[ClientID].m_aName; + else return "(connecting client)"; - return m_aClients[ClientID].m_aName; -} + +} + +const char *CServer::ClientClan(int ClientID) +{ + if(ClientID < 0 || ClientID >= MAX_CLIENTS || m_aClients[ClientID].m_State == CServer::CClient::STATE_EMPTY) + return ""; + if(m_aClients[ClientID].m_State == CServer::CClient::STATE_INGAME) + return m_aClients[ClientID].m_aClan; + else + return ""; +} + +int CServer::ClientCountry(int ClientID) +{ + if(ClientID < 0 || ClientID >= MAX_CLIENTS || m_aClients[ClientID].m_State == CServer::CClient::STATE_EMPTY) + return -1; + if(m_aClients[ClientID].m_State == CServer::CClient::STATE_INGAME) + return m_aClients[ClientID].m_Country; + else + return -1; +} bool CServer::ClientIngame(int ClientID) { @@ -531,6 +575,7 @@ int CServer::NewClientCallback(int ClientID, void *pUser) pThis->m_aClients[ClientID].m_State = CClient::STATE_AUTH; pThis->m_aClients[ClientID].m_aName[0] = 0; pThis->m_aClients[ClientID].m_aClan[0] = 0; + pThis->m_aClients[ClientID].m_Country = -1; pThis->m_aClients[ClientID].m_Authed = 0; pThis->m_aClients[ClientID].m_AuthTries = 0; pThis->m_aClients[ClientID].Reset(); @@ -557,6 +602,7 @@ int CServer::DelClientCallback(int ClientID, const char *pReason, void *pUser) pThis->m_aClients[ClientID].m_State = CClient::STATE_EMPTY; pThis->m_aClients[ClientID].m_aName[0] = 0; pThis->m_aClients[ClientID].m_aClan[0] = 0; + pThis->m_aClients[ClientID].m_Country = -1; pThis->m_aClients[ClientID].m_Authed = 0; pThis->m_aClients[ClientID].m_AuthTries = 0; pThis->m_aClients[ClientID].m_Snapshots.PurgeAll(); diff --git a/src/engine/server/server.h b/src/engine/server/server.h index 77cfc484..848b485a 100644 --- a/src/engine/server/server.h +++ b/src/engine/server/server.h @@ -87,7 +87,8 @@ public: int m_CurrentInput; char m_aName[MAX_NAME_LENGTH]; - char m_aClan[MAX_CLANNAME_LENGTH]; + char m_aClan[MAX_CLAN_LENGTH]; + int m_Country; int m_Score; int m_Authed; int m_AuthTries; @@ -126,6 +127,8 @@ public: int TrySetClientName(int ClientID, const char *pName); virtual void SetClientName(int ClientID, const char *pName); + virtual void SetClientClan(int ClientID, char const *pClan); + virtual void SetClientCountry(int ClientID, int Country); virtual void SetClientScore(int ClientID, int Score); void Kick(int ClientID, const char *pReason); @@ -140,6 +143,8 @@ public: int GetClientInfo(int ClientID, CClientInfo *pInfo); void GetClientIP(int ClientID, char *pIPString, int Size); const char *ClientName(int ClientID); + const char *ClientClan(int ClientID); + int ClientCountry(int ClientID); bool ClientIngame(int ClientID); int *LatestInput(int ClientID, int *size); |