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 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 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)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)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)-1 && oss.parameters.at(3)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)-1 && oss.parameters.at(1)-1 && oss.parameters.at(0)-1 && oss.parameters.at(0) +#include +#include +#include string Userinfo2Db::getCommand() { @@ -39,6 +41,10 @@ void Userinfo2Db::process(OaStatStruct oss) { bool isBot = false; map 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)];