diff --git a/src/oastat.cpp b/src/oastat.cpp index 93ac716..3a9bb67 100644 --- a/src/oastat.cpp +++ b/src/oastat.cpp @@ -99,6 +99,7 @@ int main (int argc, const char* argv[]) { string dbargs = ""; string filename = ""; + string backend = "DbiXX"; ///////////// dbargs = "mysql dbname oastat username poul"; filename = "/home/poul/.openarena/elimination/games.log"; @@ -113,8 +114,13 @@ int main (int argc, const char* argv[]) i++; filename = string(argv[i]); } + if(string(argv[i]) == "-backend" && onemore) { + i++; + backend = string(argv[i]); + } } try{ + db = NULL; #if USESTDOUT cout << "INFO: oastat " << VERSION << " ready to process data" << endl; db = new DB2stdout(); @@ -129,13 +135,21 @@ int main (int argc, const char* argv[]) #endif*/ #if USEDBIXX - cout << "Using DBI" << endl; - if(dbargs.length()<1) - db = new Db2DbiXX(); - else - db = new Db2DbiXX(dbargs); + if(backend == "DbiXX") { + cout << "Using DBI" << endl; + if(dbargs.length()<1) + db = new Db2DbiXX(); + else + db = new Db2DbiXX(dbargs); + } #endif + if(!db) { + string error("Failed to find backend: "); + error += backend; + throw error.c_str(); + } + addCommands(); if(filename.length()>0) { diff --git a/src/oss2db/userinfo2db.cpp b/src/oss2db/userinfo2db.cpp index cd09172..366a5bf 100644 --- a/src/oss2db/userinfo2db.cpp +++ b/src/oss2db/userinfo2db.cpp @@ -36,13 +36,20 @@ bool Userinfo2Db::canProcess(OaStatStruct oss) { void Userinfo2Db::process(OaStatStruct oss) { if(!canProcess(oss)) return; //Invalid oss + bool isBot = false; map arguments = oss.GetInfostring(); - if(arguments["id"].length()>0) //Not bot - clientIdMap[oss.parameters.at(0)] = getHashedId(arguments["id"]); + if(arguments["id"].length()>0 || arguments["hashedid"].length() > 0) //Not bot + if(arguments["id"].length()>0) + clientIdMap[oss.parameters.at(0)] = getHashedId(arguments["id"]); + else + clientIdMap[oss.parameters.at(0)] = arguments["hashedid"]; else //bot + { clientIdMap[oss.parameters.at(0)] = arguments["n"]; + isBot = true; + } string player = clientIdMap[oss.parameters.at(0)]; - dp->setPlayerInfo(player,arguments["n"],arguments["id"]=="",oss.second,atoi(arguments["t"].c_str()), arguments["model"],arguments["hmodel"],-1,&oss); + dp->setPlayerInfo(player,arguments["n"],isBot,oss.second,atoi(arguments["t"].c_str()), arguments["model"],arguments["hmodel"],-1,&oss); }