From 3757fd002969d1612dc7144c5faa7199d4668b2f Mon Sep 17 00:00:00 2001 From: div0 Date: Sat, 19 Jan 2008 09:45:38 +0000 Subject: [PATCH] Persistent CTF capture time records! git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3183 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/ctf.qc | 16 +++++++++++++--- data/qcsrc/server/defs.qh | 3 +++ data/qcsrc/server/g_world.qc | 7 +++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/data/qcsrc/server/ctf.qc b/data/qcsrc/server/ctf.qc index 828b6aece..1e8edd6c5 100644 --- a/data/qcsrc/server/ctf.qc +++ b/data/qcsrc/server/ctf.qc @@ -227,7 +227,7 @@ void() FlagTouch = local float t; local entity head; local entity player; - local string s, s0; + local string s, s0, h0; if (other.classname != "player") return; if (other.health < 1) // ignore dead players @@ -248,19 +248,28 @@ void() FlagTouch = t = time - other.flagcarried.flagpickuptime; s = ftos_decimals(t, 2); s0 = ftos_decimals(flagcaptimerecord, 2); + h0 = db_get(ServerProgsDB, strcat(GetMapname(), "/captimerecord/netname")); + if(h0 == other.netname) + h0 = "his"; + else + h0 = strcat(h0, "^7's"); if (flagcaptimerecord == 0) { bprint(other.netname, "^7 captured the ", other.flagcarried.netname, " in ", s, " seconds\n"); flagcaptimerecord = t; + db_put(ServerProgsDB, strcat(GetMapname(), "/captimerecord/time"), ftos(t)); + db_put(ServerProgsDB, strcat(GetMapname(), "/captimerecord/netname"), other.netname); } else if (t < flagcaptimerecord) { - bprint(other.netname, "^7 captured the ", other.flagcarried.netname, " in ", s, ", breaking the previous record of ", s0, " seconds\n"); + bprint(other.netname, "^7 captured the ", other.flagcarried.netname, " in ", s, ", breaking ", strcat(h0, " previous record of ", s0, " seconds\n")); flagcaptimerecord = t; + db_put(ServerProgsDB, strcat(GetMapname(), "/captimerecord/time"), ftos(t)); + db_put(ServerProgsDB, strcat(GetMapname(), "/captimerecord/netname"), other.netname); } else { - bprint(other.netname, "^7 captured the ", other.flagcarried.netname, " in ", s, ", failing to break the previous record of ", s0, " seconds\n"); + bprint(other.netname, "^7 captured the ", other.flagcarried.netname, " in ", s, ", failing to break ", strcat(h0, " record of ", s0, " seconds\n")); } LogCTF("capture", other.flagcarried.team, other); @@ -614,6 +623,7 @@ void() ctf_init = e = spawn(); e.think = ctf_delayedinit; e.nextthink = time + 0.1; + flagcaptimerecord = stof(db_get(ServerProgsDB, strcat(GetMapname(), "/captimerecord/time"))); }; void(entity flag) ctf_setstatus2 = diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index b70d509b2..afa6c3987 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -381,3 +381,6 @@ float assault_attacker_team; .float notfree; .float notq3a; float q3acompat_machineshotgunswap; + +// database +float ServerProgsDB; diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index 7f97812b4..5add1776d 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -94,6 +94,8 @@ void worldspawn (void) MapInfo_LoadMapSettings(mapname); #endif + ServerProgsDB = db_load("server.db"); + /* TODO sound pack system // initialize sound pack system @@ -458,6 +460,7 @@ void() GameResetCfg = #endif Ban_SaveBans(); + db_save(ServerProgsDB, "server.db"); }; void() Map_Goto = @@ -626,6 +629,7 @@ string() GetNextMap = float() DoNextMapOverride = { Ban_SaveBans(); + db_save(ServerProgsDB, "server.db"); if(cvar("g_campaign")) { @@ -926,6 +930,9 @@ void() NextLevel = gameover = TRUE; + Ban_SaveBans(); + db_save(ServerProgsDB, "server.db"); + intermission_running = 1; // enforce a wait time before allowing changelevel -- 2.39.2