From 17e685399a54cfaf507af69535c7b66bd2153f41 Mon Sep 17 00:00:00 2001 From: div0 Date: Sun, 22 Feb 2009 12:45:42 +0000 Subject: [PATCH] also write a record marker for CTF (so one can extract record runs from demos) git-svn-id: svn://svn.icculus.org/nexuiz/trunk@5920 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 1 + data/qcsrc/server/ctf.qc | 6 +++--- data/qcsrc/server/miscfunctions.qc | 12 ++++++++++++ data/qcsrc/server/race.qc | 6 ++---- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index b58063bc7..fc6f0bf4d 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -530,6 +530,7 @@ set g_ctf_shield_force 100 "push force of the shield" // fun for server admins set g_ctf_flag_mdl_red "models/ctf/flags.md3" set g_ctf_flag_mdl_blue "models/ctf/flags.md3" +set g_ctf_captimerecord_allow_assisted 0 "if enabled, assisted CTF records (with other players on the server) are recorded too" exec ctfscoring-div0.cfg diff --git a/data/qcsrc/server/ctf.qc b/data/qcsrc/server/ctf.qc index d07eeb36e..515a7f3b2 100644 --- a/data/qcsrc/server/ctf.qc +++ b/data/qcsrc/server/ctf.qc @@ -427,7 +427,7 @@ void FlagTouch() { return; } - if(player_count - currentbots <= 1) // at most one human + if(cvar("g_ctf_captimerecord_allow_assisted") || player_count - currentbots <= 1) // at most one human { t = time - other.flagcarried.flagpickuptime; s = ftos_decimals(t, 2); @@ -444,7 +444,7 @@ void FlagTouch() flagcaptimerecord = t; db_put(ServerProgsDB, strcat(GetMapname(), "/captimerecord/time"), ftos(t)); db_put(ServerProgsDB, strcat(GetMapname(), "/captimerecord/netname"), h1); - GameLogEcho(strcat(":recordset:", ftos(other.playerid), ":", ftos(t))); + write_recordmarker(other, time - t, t); } else if (t < flagcaptimerecord) { @@ -452,7 +452,7 @@ void FlagTouch() flagcaptimerecord = t; db_put(ServerProgsDB, strcat(GetMapname(), "/captimerecord/time"), ftos(t)); db_put(ServerProgsDB, strcat(GetMapname(), "/captimerecord/netname"), h1); - GameLogEcho(strcat(":recordset:", ftos(other.playerid), ":", ftos(t))); + write_recordmarker(other, time - t, t); } else { diff --git a/data/qcsrc/server/miscfunctions.qc b/data/qcsrc/server/miscfunctions.qc index c67c5878a..9bdffdf9e 100644 --- a/data/qcsrc/server/miscfunctions.qc +++ b/data/qcsrc/server/miscfunctions.qc @@ -2004,3 +2004,15 @@ void zcurveparticles_from_tracetoss(float effectno, vector start, vector end, ve end_dz = vlen(vecxy) / vlen(velxy) * vel_z - (end_z - start_z); zcurveparticles(effectno, start, end, end_dz, vlen(vel)); } + +string GetGametype(); // g_world.qc +void write_recordmarker(entity pl, float tstart, float dt) +{ + GameLogEcho(strcat(":recordset:", ftos(pl.playerid), ":", ftos(dt / 10))); + + // also write a marker into demo files for demotc-race-record-extractor to find + stuffcmd(pl, + strcat( + strcat("//", strconv(2, 0, 0, GetGametype()), " RECORD SET ", mmsss(dt * 10)), + " ", ftos(tstart), " ", ftos(dt), "\n")); +} diff --git a/data/qcsrc/server/race.qc b/data/qcsrc/server/race.qc index a78a28e1a..220faf9c8 100644 --- a/data/qcsrc/server/race.qc +++ b/data/qcsrc/server/race.qc @@ -152,8 +152,7 @@ void race_SendTime(entity e, float cp, float t, float tvalid) bprint(e.netname, "^7 set the all-time fastest lap record with ", mmsss(t), "\n"); db_put(ServerProgsDB, strcat(GetMapname(), "/racerecord/time"), ftos(t)); db_put(ServerProgsDB, strcat(GetMapname(), "/racerecord/netname"), e.netname); - GameLogEcho(strcat(":recordset:", ftos(e.playerid), ":", ftos(t / 10))); - stuffcmd(e, strcat("//RACE RECORD SET ", mmsss(t), "\n")); + write_recordmarker(e, time - t/10, t/10); } else if(t < grecordtime) { @@ -163,8 +162,7 @@ void race_SendTime(entity e, float cp, float t, float tvalid) bprint(e.netname, "^7 broke ", grecordholder, "^7's all-time fastest lap record with ", mmsss(t), "\n"); db_put(ServerProgsDB, strcat(GetMapname(), "/racerecord/time"), ftos(t)); db_put(ServerProgsDB, strcat(GetMapname(), "/racerecord/netname"), e.netname); - GameLogEcho(strcat(":recordset:", ftos(e.playerid), ":", ftos(t / 10))); - stuffcmd(e, strcat("//RACE RECORD SET ", mmsss(t), "\n")); + write_recordmarker(e, time - t/10, t/10); } else { -- 2.39.2