diff --git a/src/Makefile b/src/Makefile index 3076cc8..98aee54 100644 --- a/src/Makefile +++ b/src/Makefile @@ -8,6 +8,8 @@ BASE_CFLAGS=-c -g -O0 O_FILES=build/oastat.o build/oastatstruct.o build/kill2db.o build/init2db.o build/shutdown2db.o build/userinfo2db.o build/disconnect2db.o build/award2db.o build/ctf2db.o build/point2db.o build/ctf1f2db.o build/elimination2db.o build/ctfelim2db.o build/harvester2db.o build/challenge2db.o build/warmup2db.o +H_FILES=local.h oastatstruct.h oss2db/struct2db.h + ifeq ($(USESTDOUT),1) O_FILES+= build/db2stdout.o BASE_CFLAGS+= -DUSESTDOUT=1 @@ -51,48 +53,48 @@ build/db2dbixx.o: db/Db2DbiXX.cpp db/Db2DbiXX.hpp db/database.hpp g++ $(BASE_CFLAGS) db/Db2DbiXX.cpp -o build/db2dbixx.o endif -build/oastatstruct.o: oastatstruct.cpp oastatstruct.h +build/oastatstruct.o: oastatstruct.cpp oastatstruct.h $(H_FILES) g++ $(BASE_CFLAGS) oastatstruct.cpp -o build/oastatstruct.o -build/kill2db.o: oss2db/kill2db.cpp oss2db/kill2db.h +build/kill2db.o: oss2db/kill2db.cpp oss2db/kill2db.h $(H_FILES) g++ $(BASE_CFLAGS) oss2db/kill2db.cpp -o build/kill2db.o -build/init2db.o: oss2db/init2db.cpp oss2db/init2db.h +build/init2db.o: oss2db/init2db.cpp oss2db/init2db.h $(H_FILES) g++ $(BASE_CFLAGS) oss2db/init2db.cpp -o build/init2db.o -build/shutdown2db.o: oss2db/shutdown2db.cpp oss2db/shutdown2db.h +build/shutdown2db.o: oss2db/shutdown2db.cpp oss2db/shutdown2db.h $(H_FILES) g++ $(BASE_CFLAGS) oss2db/shutdown2db.cpp -o build/shutdown2db.o -build/userinfo2db.o: oss2db/userinfo2db.cpp oss2db/userinfo2db.h +build/userinfo2db.o: oss2db/userinfo2db.cpp oss2db/userinfo2db.h $(H_FILES) g++ $(BASE_CFLAGS) oss2db/userinfo2db.cpp -o build/userinfo2db.o -build/disconnect2db.o: oss2db/Disconnect2Db.cpp oss2db/Disconnect2Db.h +build/disconnect2db.o: oss2db/Disconnect2Db.cpp oss2db/Disconnect2Db.h $(H_FILES) g++ $(BASE_CFLAGS) oss2db/Disconnect2Db.cpp -o build/disconnect2db.o -build/award2db.o: oss2db/Award2Db.cpp oss2db/Award2Db.h +build/award2db.o: oss2db/Award2Db.cpp oss2db/Award2Db.h $(H_FILES) g++ $(BASE_CFLAGS) oss2db/Award2Db.cpp -o build/award2db.o -build/ctf2db.o: oss2db/Ctf2Db.cpp +build/ctf2db.o: oss2db/Ctf2Db.cpp $(H_FILES) g++ $(BASE_CFLAGS) oss2db/Ctf2Db.cpp -o build/ctf2db.o -build/ctf1f2db.o: oss2db/Ctf1f2Db.cpp +build/ctf1f2db.o: oss2db/Ctf1f2Db.cpp $(H_FILES) g++ $(BASE_CFLAGS) oss2db/Ctf1f2Db.cpp -o build/ctf1f2db.o -build/elimination2db.o: oss2db/Elimination2Db.cpp +build/elimination2db.o: oss2db/Elimination2Db.cpp $(H_FILES) g++ $(BASE_CFLAGS) oss2db/Elimination2Db.cpp -o build/elimination2db.o -build/ctfelim2db.o: oss2db/CtfElimination2Db.cpp +build/ctfelim2db.o: oss2db/CtfElimination2Db.cpp $(H_FILES) g++ $(BASE_CFLAGS) oss2db/CtfElimination2Db.cpp -o build/ctfelim2db.o -build/point2db.o: oss2db/Point2Db.cpp oss2db/Point2Db.hpp +build/point2db.o: oss2db/Point2Db.cpp oss2db/Point2Db.hpp $(H_FILES) g++ $(BASE_CFLAGS) oss2db/Point2Db.cpp -o build/point2db.o -build/harvester2db.o: oss2db/Harvester2Db.cpp oss2db/Harvester2Db.hpp +build/harvester2db.o: oss2db/Harvester2Db.cpp oss2db/Harvester2Db.hpp $(H_FILES) g++ $(BASE_CFLAGS) oss2db/Harvester2Db.cpp -o build/harvester2db.o -build/challenge2db.o: oss2db/Challenge2Db.cpp oss2db/Challenge2Db.hpp +build/challenge2db.o: oss2db/Challenge2Db.cpp oss2db/Challenge2Db.hpp $(H_FILES) g++ $(BASE_CFLAGS) oss2db/Challenge2Db.cpp -o build/challenge2db.o -build/warmup2db.o: oss2db/Warmup2Db.cpp oss2db/Warmup2Db.hpp +build/warmup2db.o: oss2db/Warmup2Db.cpp oss2db/Warmup2Db.hpp $(H_FILES) g++ $(BASE_CFLAGS) oss2db/Warmup2Db.cpp -o build/warmup2db.o diff --git a/src/db/Db2DbiXX.cpp b/src/db/Db2DbiXX.cpp index b28964a..874e0da 100644 --- a/src/db/Db2DbiXX.cpp +++ b/src/db/Db2DbiXX.cpp @@ -28,7 +28,7 @@ #define CTF1F "INSERT INTO oastat_team_events(gamenumber,second,team,player,gametype,eventtype) VALUES (?,?,?,COALESCE((SELECT playerid FROM oastat_players WHERE guid = ?),0),'1fctf',?)" #define ELIMINATION "INSERT INTO oastat_team_events(gamenumber,second,team,eventtype,generic1,gametype) VALUES (?,?,?,?,?,'elimination')" #define CTF_ELIM "INSERT INTO oastat_team_events(gamenumber,second,team,player,eventtype,generic1,gametype) VALUES (?,?,?,COALESCE((SELECT playerid FROM oastat_players WHERE guid = ?),0),?,?,'ctfelim')" -#define HARVESTER "INSERT INTO oastat_team_events(gamenumber,second,team,player,player2,eventtype,amount,gametype) VALUES (?,?,?,NVL((SELECT playerid FROM oastat_players WHERE guid = ?),0),COALESCE((SELECT playerid FROM oastat_players WHERE guid = ?),0),?,?,'harvester')" +#define HARVESTER "INSERT INTO oastat_team_events(gamenumber,second,team,player,player2,eventtype,amount,gametype) VALUES (?,?,?,COALESCE((SELECT playerid FROM oastat_players WHERE guid = ?),0),COALESCE((SELECT playerid FROM oastat_players WHERE guid = ?),0),?,?,'harvester')" #define CHALLENGES "INSERT INTO oastat_challenges(gamenumber,player,challenge,amount) VALUES (?,COALESCE((SELECT playerid FROM oastat_players WHERE guid = ?),0),?,?)" #define SELECT_USERVARS2SAVE "SELECT thekey FROM oastat_config_uservars2save" @@ -101,7 +101,7 @@ Db2DbiXX::Db2DbiXX() { sql->connect(); ReadConfigFromDb(); commitlock = new transaction(*sql); - debug = true; + debug = false; } Db2DbiXX::Db2DbiXX(string dbargs) @@ -123,7 +123,7 @@ Db2DbiXX::Db2DbiXX(string dbargs) sql->connect(); ReadConfigFromDb(); commitlock = new transaction(*sql); - debug = true; + debug = false; //sql(dbargs); } @@ -144,11 +144,17 @@ void Db2DbiXX::startGame(int gametype, string mapname, string basegame, string s sql->reconnect(); Rollback(); //in case there was some garbage that could be comitted (like warmup or an unfinished game) SetOk(true); + if(oss->restOfLine.find("\\isWarmup\\1") != string::npos) + { + SetOk(false); + cout << "Warmup: " << servername << ", " << oss->getTimeStamp() << endl; + return; + } if(IsDuplicate(servername,oss->getDateTime())) { SetOk(false); cout << "Duplicate:" << servername << ", " << oss->getTimeStamp() << endl; return; - } + } if(last_value) { *sql << S_STARTGAME_LASTVALUE,gametype,mapname,basegame,servername,oss->getDateTime(),exec(); gamenumber = getLastGameNumber(); @@ -166,6 +172,8 @@ void Db2DbiXX::startGame(int gametype, string mapname, string basegame, string s void Db2DbiXX::addGameCvar(string cvar, string value) { if(!isok) return; + if(cvars2save.find(cvar) == cvars2save.end()) + return; //not to be saved *sql << S_ADDCVAR,gamenumber,cvar,value,0,exec(); DebugMessage("addCvar"); } diff --git a/src/oastat.cpp b/src/oastat.cpp index 7f67845..5b33058 100644 --- a/src/oastat.cpp +++ b/src/oastat.cpp @@ -154,6 +154,8 @@ int main (int argc, const char* argv[]) static int processStdIn(istream* in_p) { bool done = true; + OaStatStruct *startstruct; + startstruct = NULL; do { string line = ""; @@ -165,6 +167,10 @@ static int processStdIn(istream* in_p) { oss.clear(); oss.parseLine(line); osslist.push_back(oss); + if(oss.command=="InitGame") + startstruct = &osslist.back(); + if(oss.command=="Warmup" && startstruct) + startstruct->restOfLine. += "\\isWarmup\\1"; //Workaround to stop warmup if(oss.command=="ShutdownGame") { while(!osslist.empty()) @@ -191,6 +197,7 @@ static int processStdIn(istream* in_p) { } //cout << "returned" << endl; } + startstruct = NULL; } } } catch (exception &e2) {