summaryrefslogtreecommitdiff
path: root/src/game-server/accountconnection.cpp
diff options
context:
space:
mode:
authorGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-09-16 11:10:06 +0000
committerGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-09-16 11:10:06 +0000
commit88e3d219588052a8ab222ab4f6f2b27c9c29c1b2 (patch)
tree6b15bf0fe700d61b3aa451d0810a07a175b06774 /src/game-server/accountconnection.cpp
parentbe461a5ca51e10dad40c87385440f6ddae14fca0 (diff)
downloadmanaserv-88e3d219588052a8ab222ab4f6f2b27c9c29c1b2.tar.gz
manaserv-88e3d219588052a8ab222ab4f6f2b27c9c29c1b2.tar.bz2
manaserv-88e3d219588052a8ab222ab4f6f2b27c9c29c1b2.tar.xz
manaserv-88e3d219588052a8ab222ab4f6f2b27c9c29c1b2.zip
Added global accounting of beings.
Diffstat (limited to 'src/game-server/accountconnection.cpp')
-rw-r--r--src/game-server/accountconnection.cpp46
1 files changed, 45 insertions, 1 deletions
diff --git a/src/game-server/accountconnection.cpp b/src/game-server/accountconnection.cpp
index 9a2084df..4219b33d 100644
--- a/src/game-server/accountconnection.cpp
+++ b/src/game-server/accountconnection.cpp
@@ -21,9 +21,10 @@
* $Id$
*/
+#include "game-server/accountconnection.hpp"
+
#include "configuration.h"
#include "defines.h"
-#include "game-server/accountconnection.hpp"
#include "game-server/character.hpp"
#include "game-server/gamehandler.hpp"
#include "game-server/map.hpp"
@@ -260,6 +261,49 @@ void AccountConnection::banCharacter(Character *ch, int duration)
send(msg);
}
+void AccountConnection::sendStatistics()
+{
+ MessageOut msg(GAMSG_STATISTICS);
+ MapManager::Maps const &maps = MapManager::getMaps();
+ for (MapManager::Maps::const_iterator i = maps.begin(),
+ i_end = maps.end(); i != i_end; ++i)
+ {
+ MapComposite *m = i->second;
+ if (!m->isActive()) continue;
+ msg.writeShort(i->first);
+ int nbThings = 0, nbMonsters = 0;
+ typedef std::vector< Thing * > Things;
+ Things const &things = m->getEverything();
+ std::vector< int > players;
+ for (Things::const_iterator j = things.begin(),
+ j_end = things.end(); j != j_end; ++j)
+ {
+ Thing *t = *j;
+ switch (t->getType())
+ {
+ case OBJECT_CHARACTER:
+ players.push_back
+ (static_cast< Character * >(t)->getDatabaseID());
+ break;
+ case OBJECT_MONSTER:
+ ++nbMonsters;
+ break;
+ default:
+ ++nbThings;
+ }
+ }
+ msg.writeShort(nbThings);
+ msg.writeShort(nbMonsters);
+ msg.writeShort(players.size());
+ for (std::vector< int >::const_iterator j = players.begin(),
+ j_end = players.end(); j != j_end; ++j)
+ {
+ msg.writeLong(*j);
+ }
+ }
+ send(msg);
+}
+
#if 0
void AccountConnection::playerCreateGuild(int id, const std::string &guildName)
{