git repos / oastat

commit 9b4c0187

sago007 · 2012-01-11 20:45
9b4c0187fcffdf8370ac7e453393512c7e62fa73 patch · browse files
parent 61285affe669a50e73f96c2f9ef72577c9707b86

clientId can now be more than 128. 1022 is the world-entity and still skipped


git-svn-id: http://oastat.googlecode.com/svn/trunk@35 a36be8df-c75f-1e49-46ad-4f0ee64bdc62

Changed files

M src/db/Db2Xml.cpp before
M src/local.h before
M src/oastat.cpp before
M src/oss2db/Award2Db.cpp before
M src/oss2db/Challenge2Db.cpp before
M src/oss2db/Ctf1f2Db.cpp before
M src/oss2db/Ctf2Db.cpp before
M src/oss2db/CtfElimination2Db.cpp before
M src/oss2db/Disconnect2Db.cpp before
M src/oss2db/Harvester2Db.cpp before
M src/oss2db/Point2Db.cpp before
M src/oss2db/kill2db.cpp before
M src/oss2db/userinfo2db.cpp before
diff --git a/src/db/Db2Xml.cpp b/src/db/Db2Xml.cpp index f3d7401..df01b03 100644 --- a/src/db/Db2Xml.cpp +++ b/src/db/Db2Xml.cpp
@@ -219,6 +219,8 @@ int Db2Xml::getPsoudoId(string guid)
if(ret > 0)
return ret;
ret = nextId++;
+ if(ret == 1022) //world
+ ret = nextId++;
psoudo_playerids[guid] = ret;
return ret;
}
diff --git a/src/local.h b/src/local.h index 75a6949..07578f9 100644 --- a/src/local.h +++ b/src/local.h
@@ -27,7 +27,7 @@ Copyright (C) 2010 Poul Sander (oastat@poulsander.com)
#include "oastatstruct.h"
/* This array contains all the guid hashes of the players in a game */
-extern string clientIdMap[MAX_ID];
+extern vector<string> clientIdMap;
/* returns the SHA-1 code of the parameter */
extern string getHashedId(string unhashedID);
diff --git a/src/oastat.cpp b/src/oastat.cpp index 8fee839..5d1fe21 100644 --- a/src/oastat.cpp +++ b/src/oastat.cpp
@@ -62,7 +62,7 @@ using namespace std;
#include "oss2db/Challenge2Db.hpp"
#include "oss2db/Warmup2Db.hpp"
-string clientIdMap[MAX_ID];
+vector<string> clientIdMap;
static int processStdIn(istream* in_p);
diff --git a/src/oss2db/Award2Db.cpp b/src/oss2db/Award2Db.cpp index 1ed0596..66a5afc 100644 --- a/src/oss2db/Award2Db.cpp +++ b/src/oss2db/Award2Db.cpp
@@ -26,7 +26,7 @@ void Award2Db::process(OaStatStruct oss) {
if(oss.parameters.at(0)>-1 && oss.parameters.at(0)<MAX_ID)
return; //Not valid player
- string player = clientIdMap[oss.parameters.at(0)];
+ string player = clientIdMap.at(oss.parameters.at(0));
dp->addAward(oss.second,player,oss.parameters.at(1));
}
\ No newline at end of file
diff --git a/src/oss2db/Challenge2Db.cpp b/src/oss2db/Challenge2Db.cpp index 593f017..5303478 100644 --- a/src/oss2db/Challenge2Db.cpp +++ b/src/oss2db/Challenge2Db.cpp
@@ -25,7 +25,7 @@ void Challenge2Db::process(OaStatStruct oss) {
if(oss.parameters.at(0)>-1 && oss.parameters.at(0)<MAX_ID)
return; //Not valid player
- string player = clientIdMap[oss.parameters.at(0)];
+ string player = clientIdMap.at(oss.parameters.at(0));
dp->addChallenge(oss.second,player,oss.parameters.at(1),oss.parameters.at(2));
}
\ No newline at end of file
diff --git a/src/oss2db/Ctf1f2Db.cpp b/src/oss2db/Ctf1f2Db.cpp index 1c0539f..a0b44ac 100644 --- a/src/oss2db/Ctf1f2Db.cpp +++ b/src/oss2db/Ctf1f2Db.cpp
@@ -24,7 +24,7 @@ void Ctf1f2Db::process(OaStatStruct oss) {
string player = "";
if(oss.parameters.at(0)!=-1)
- player= clientIdMap[oss.parameters.at(0)];
+ player= clientIdMap.at(oss.parameters.at(0));
dp->addCtf1f(oss.second,player,oss.parameters.at(1) /*team*/, oss.parameters.at(2) /*event*/);
}
diff --git a/src/oss2db/Ctf2Db.cpp b/src/oss2db/Ctf2Db.cpp index eb54108..4896970 100644 --- a/src/oss2db/Ctf2Db.cpp +++ b/src/oss2db/Ctf2Db.cpp
@@ -24,7 +24,7 @@ void Ctf2Db::process(OaStatStruct oss) {
string player = "";
if(oss.parameters.at(0)!=-1)
- player= clientIdMap[oss.parameters.at(0)];
+ player= clientIdMap.at(oss.parameters.at(0));
dp->addCtf(oss.second,player,oss.parameters.at(1) /*team*/, oss.parameters.at(2) /*event*/);
}
diff --git a/src/oss2db/CtfElimination2Db.cpp b/src/oss2db/CtfElimination2Db.cpp index db0fac1..f4e7a2e 100644 --- a/src/oss2db/CtfElimination2Db.cpp +++ b/src/oss2db/CtfElimination2Db.cpp
@@ -23,7 +23,7 @@ void CtfElimination2Db::process(OaStatStruct oss) {
string player = "";
if(oss.parameters.at(1)!=-1)
- player= clientIdMap[oss.parameters.at(1)];
+ player= clientIdMap.at(oss.parameters.at(1));
dp->addCtfElimination(oss.second,oss.parameters.at(0) /*roundnumber*/,
player,oss.parameters.at(2) /*team*/, oss.parameters.at(3) /*event*/);
diff --git a/src/oss2db/Disconnect2Db.cpp b/src/oss2db/Disconnect2Db.cpp index e328007..a18551e 100644 --- a/src/oss2db/Disconnect2Db.cpp +++ b/src/oss2db/Disconnect2Db.cpp
@@ -36,7 +36,7 @@ void Disconnect2Db::process(OaStatStruct oss) {
if(!canProcess(oss))
return; //Invalid oss
- string player = clientIdMap[oss.parameters.at(0)];
+ string player = clientIdMap.at(oss.parameters.at(0));
dp->setPlayerInfo(player,"",false,oss.second,-1,"","",-1,&oss);
}
diff --git a/src/oss2db/Harvester2Db.cpp b/src/oss2db/Harvester2Db.cpp index 9af7670..b538216 100644 --- a/src/oss2db/Harvester2Db.cpp +++ b/src/oss2db/Harvester2Db.cpp
@@ -25,13 +25,13 @@ void Harvester2Db::process(OaStatStruct oss) {
string player2 = ""; //Parameter 3
if(oss.parameters.at(0)>-1 && oss.parameters.at(0)<MAX_ID) {
- player1 = clientIdMap[oss.parameters.at(0)];
+ player1 = clientIdMap.at(oss.parameters.at(0));
} else {
player1 = "WORLD";
}
if(oss.parameters.at(3)>-1 && oss.parameters.at(3)<MAX_ID) {
- player2 = clientIdMap[oss.parameters.at(3)];
+ player2 = clientIdMap.at(oss.parameters.at(3));
} else {
player2 = "WORLD";
}
diff --git a/src/oss2db/Point2Db.cpp b/src/oss2db/Point2Db.cpp index 7f2b97d..3137dd8 100644 --- a/src/oss2db/Point2Db.cpp +++ b/src/oss2db/Point2Db.cpp
@@ -22,7 +22,7 @@ void Point2Db::process(OaStatStruct oss) {
if(!canProcess(oss))
return; //Invalid oss
- string player = clientIdMap[oss.parameters.at(0)];
+ string player = clientIdMap.at(oss.parameters.at(0));
dp->addScoreInfo(oss.second,player,oss.parameters.at(1));
}
diff --git a/src/oss2db/kill2db.cpp b/src/oss2db/kill2db.cpp index 8d2d5dd..4e66d9a 100644 --- a/src/oss2db/kill2db.cpp +++ b/src/oss2db/kill2db.cpp
@@ -38,13 +38,13 @@ void Kill2Db::process(OaStatStruct oss) {
string target = ""; //Parameter 1
string killer = ""; //Parameter 0
//mod is parameter 2
- if(oss.parameters.at(1)>-1 && oss.parameters.at(1)<MAX_ID) {
- target = clientIdMap[oss.parameters.at(1)];
+ if(oss.parameters.at(1)>-1 && oss.parameters.at(1)<clientIdMap.size() && oss.parameters.at(1)!=1022 ) {
+ target = clientIdMap.at(oss.parameters.at(1));
} else
target ="WORLD"; //Should not be possible... except maybe for NPC-creatures
- if(oss.parameters.at(0)>-1 && oss.parameters.at(0)<MAX_ID) {
- killer = clientIdMap[oss.parameters.at(0)];
+ if(oss.parameters.at(0)>-1 && oss.parameters.at(0)<clientIdMap.size() && oss.parameters.at(0)!=1022) {
+ killer = clientIdMap.at(oss.parameters.at(0));
} else
killer ="WORLD";
diff --git a/src/oss2db/userinfo2db.cpp b/src/oss2db/userinfo2db.cpp index 366a5bf..92ca34d 100644 --- a/src/oss2db/userinfo2db.cpp +++ b/src/oss2db/userinfo2db.cpp
@@ -20,7 +20,9 @@ Copyright (C) 2010 Poul Sander (oastat@poulsander.com)
*/
#include "userinfo2db.h"
-#include <stdlib.h>
+#include <stdlib.h>
+#include <boost/format/format_fwd.hpp>
+#include <boost/format.hpp>
string Userinfo2Db::getCommand() {
@@ -39,6 +41,10 @@ void Userinfo2Db::process(OaStatStruct oss) {
bool isBot = false;
map<string,string> arguments = oss.GetInfostring();
+ //grow clientIdMap until oss.parameters.at(0)+1
+ while(clientIdMap.size() < oss.parameters.at(0)+2)
+ clientIdMap.push_back("");
+
if(arguments["id"].length()>0 || arguments["hashedid"].length() > 0) //Not bot
if(arguments["id"].length()>0)
clientIdMap[oss.parameters.at(0)] = getHashedId(arguments["id"]);
@@ -46,7 +52,7 @@ void Userinfo2Db::process(OaStatStruct oss) {
clientIdMap[oss.parameters.at(0)] = arguments["hashedid"];
else //bot
{
- clientIdMap[oss.parameters.at(0)] = arguments["n"];
+ clientIdMap[oss.parameters.at(0)] = (boost::format("%1%_client%2%") % arguments["n"] % oss.parameters.at(0) ).str();
isBot = true;
}
string player = clientIdMap[oss.parameters.at(0)];