The problem with this is that this function uses Server.GetNumPlayers(), which is not const-correct because it uses a cCriticalSection member of Server.

In order to fix hat I propose to declare this cCriticalSection object and maybe even the others as mutable.

So i.e.: 
mutable cCriticalSection m_CSPlayerCount; // In Server.h

After changing them we can refactor GetNumPlayers() and maybe some other functions to be const-correct (and by that we can use const cServer references and so forth).

Mutexes are actually one of the only good uses of the keyword mutable :)

What do you think about that?