From 53396b9630f98b186f7c521d207967aa4fbfaa33 Mon Sep 17 00:00:00 2001 From: div0 Date: Wed, 5 Apr 2006 16:01:23 +0000 Subject: [PATCH] Added logging support for rune match; logging is now called "event log". git-svn-id: svn://svn.icculus.org/nexuiz/trunk@1225 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- Docs/{spamlog.txt => eventlog.txt} | 30 ++++++++++++----- data/default.cfg | 12 +++---- data/qcsrc/server/gamec/cl_client.c | 4 +-- data/qcsrc/server/gamec/cl_player.c | 2 +- data/qcsrc/server/gamec/ctf.c | 2 +- data/qcsrc/server/gamec/domination.c | 2 +- data/qcsrc/server/gamec/g_damage.c | 43 ++++++++++++------------- data/qcsrc/server/gamec/g_world.c | 17 ++++++---- data/qcsrc/server/gamec/miscfunctions.c | 20 ++++++------ data/qcsrc/server/gamec/teamplay.c | 2 +- 10 files changed, 76 insertions(+), 58 deletions(-) rename Docs/{spamlog.txt => eventlog.txt} (67%) diff --git a/Docs/spamlog.txt b/Docs/eventlog.txt similarity index 67% rename from Docs/spamlog.txt rename to Docs/eventlog.txt index 5ba0cd4b8..de4225a63 100644 --- a/Docs/spamlog.txt +++ b/Docs/eventlog.txt @@ -1,19 +1,19 @@ cvars: ______________ - sv_logspam master switch (default: 0) - sv_logspam_files print frags, scores and captures for separate files each match (default: 0) - sv_logspam_console print frags, scores and captures to serverconsole during the match (default: 1) - sv_logscores_bots choose whether bot are included in stats or not (default: 0) + sv_eventlog master switch (default: 0) + sv_eventlog_files print frags, scores and captures for separate files each match (default: 0) + sv_eventlog_console print frags, scores and captures to serverconsole during the match (default: 1) + sv_logscores_bots choose whether bot are included in stats or not (default: 0) - sv_logspam_files_counter number of matches logged until now - sv_logspam_files_nameprefix file name prefix to be used (default: nexuiz) - sv_logspam_files_namesuffix file name extension to be used (default: .log) + sv_eventlog_files_counter number of matches logged until now + sv_eventlog_files_nameprefix file name prefix to be used (default: nexuiz) + sv_eventlog_files_namesuffix file name extension to be used (default: .log) log format: ______________ - :gamestart:_ + :gamestart:_: :join:: :part: :team:: @@ -44,6 +44,8 @@ team colors: itemstring: + or + | where flags can contain: F = player carries the flag @@ -61,6 +63,18 @@ itemstring: 128 = Rocket Launcher 4096 = Laser + runes/curses are stored as a bit mask with the following values: + 1 = Strength + 2 = Defense + 4 = Regeneration + 8 = Speed + 16 = Vampire + 8192 = Weakness + 16384 = Vulnerability + 32768 = Venom + 65536 = Slow + 131072 = Empathy + death type: either a weapon ID (see above), or one of: 10000 = fallen to death diff --git a/data/default.cfg b/data/default.cfg index e4dd8168a..fd0faebbc 100644 --- a/data/default.cfg +++ b/data/default.cfg @@ -635,11 +635,11 @@ set sv_logscores_filename "scores.log" // filename set sv_logscores_bots 0 // exclude bots by default // spam (frag/capture) log -set sv_logspam 0 // the master switch for efficiency reasons -set sv_logspam_console 1 -set sv_logspam_files 0 -seta sv_logspam_files_counter 0 -set sv_logspam_files_nameprefix "nexuiz" -set sv_logspam_files_namesuffix ".log" +set sv_eventlog 0 // the master switch for efficiency reasons +set sv_eventlog_console 1 +set sv_eventlog_files 0 +seta sv_eventlog_files_counter 0 +set sv_eventlog_files_nameprefix "nexuiz" +set sv_eventlog_files_namesuffix ".log" set nextmap "" // override the maplist when switching to the next map diff --git a/data/qcsrc/server/gamec/cl_client.c b/data/qcsrc/server/gamec/cl_client.c index 465bd6c25..ee7f5c22d 100644 --- a/data/qcsrc/server/gamec/cl_client.c +++ b/data/qcsrc/server/gamec/cl_client.c @@ -532,7 +532,7 @@ void ClientConnect (void) } self.playerid = (playerid_last = playerid_last + 1); - if(cvar("sv_logspam")) + if(cvar("sv_eventlog")) { string s; GameLogEcho(strcat(":join:", ftos(self.playerid), ":", self.netname), TRUE); @@ -617,7 +617,7 @@ void(entity e) DropFlag; .entity teambubbleentity; void ClientDisconnect (void) { - if(cvar("sv_logspam")) + if(cvar("sv_eventlog")) GameLogEcho(strcat(":part:", ftos(self.playerid)), FALSE); bprint ("^4",self.netname); bprint ("^4 disconnected\n"); diff --git a/data/qcsrc/server/gamec/cl_player.c b/data/qcsrc/server/gamec/cl_player.c index f9d9dbb08..730d4dba0 100644 --- a/data/qcsrc/server/gamec/cl_player.c +++ b/data/qcsrc/server/gamec/cl_player.c @@ -307,13 +307,13 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht if (self.health < 1) { - DropAllRunes(self); self.deaths += 1; // throw a weapon SpawnThrownWeapon (self.origin + (self.mins + self.maxs) * 0.5, self.weapon); // print an obituary message Obituary (attacker, self, deathtype); + DropAllRunes(self); // make the corpse upright (not tilted) self.angles_x = 0; self.angles_z = 0; diff --git a/data/qcsrc/server/gamec/ctf.c b/data/qcsrc/server/gamec/ctf.c index aff5b55ba..d3ddf034f 100644 --- a/data/qcsrc/server/gamec/ctf.c +++ b/data/qcsrc/server/gamec/ctf.c @@ -46,7 +46,7 @@ void() place_flag = void LogCTF(string mode, float flagteam, entity actor) { string s; - if(!cvar("sv_logspam")) + if(!cvar("sv_eventlog")) return; s = strcat(":ctf:", mode); s = strcat(s, ":", ftos(flagteam)); diff --git a/data/qcsrc/server/gamec/domination.c b/data/qcsrc/server/gamec/domination.c index c18635f28..9ff1b2988 100644 --- a/data/qcsrc/server/gamec/domination.c +++ b/data/qcsrc/server/gamec/domination.c @@ -19,7 +19,7 @@ Note: The only teams who can use dom control points are identified by dom_team e void LogDom(string mode, float team_before, entity actor) { string s; - if(!cvar("sv_logspam")) + if(!cvar("sv_eventlog")) return; s = strcat(":dom:", mode); s = strcat(s, ":", ftos(team_before)); diff --git a/data/qcsrc/server/gamec/g_damage.c b/data/qcsrc/server/gamec/g_damage.c index 9fb6adbb3..86713ec8a 100644 --- a/data/qcsrc/server/gamec/g_damage.c +++ b/data/qcsrc/server/gamec/g_damage.c @@ -27,40 +27,39 @@ void GiveFrags (entity attacker, entity targ, float f) attacker.frags = attacker.frags + f; } +string AppendItemcodes(string s, entity player) +{ + float w; + w = player.weapon; + if(w == 0) + w = player.switchweapon; + s = strcat(s, ftos(weapon_translateindextoflag(w))); + if(time < player.strength_finished) + s = strcat(s, "S"); + if(time < player.invincible_finished) + s = strcat(s, "I"); + if(player.flagcarried != world) + s = strcat(s, "F"); + if(player.runes) + s = strcat(s, "|", ftos(player.runes)); + return s; +} + void LogDeath(string mode, float deathtype, entity killer, entity killed) { string s; - float w; - if(!cvar("sv_logspam")) + if(!cvar("sv_eventlog")) return; s = strcat(":kill:", mode); s = strcat(s, ":", ftos(killer.playerid)); s = strcat(s, ":", ftos(killed.playerid)); s = strcat(s, ":type=", ftos(deathtype)); s = strcat(s, ":items="); - w = killer.weapon; - if(w == 0) - w = killer.switchweapon; - s = strcat(s, ftos(weapon_translateindextoflag(w))); - if(time < killer.strength_finished) - s = strcat(s, "S"); - if(time < killer.invincible_finished) - s = strcat(s, "I"); - if(killer.flagcarried != world) - s = strcat(s, "F"); + s = AppendItemcodes(s, killer); if(killed != killer) { s = strcat(s, ":victimitems="); - w = killed.weapon; - if(w == 0) - w = killed.switchweapon; - s = strcat(s, ftos(weapon_translateindextoflag(w))); - if(time < killed.strength_finished) - s = strcat(s, "S"); - if(time < killed.invincible_finished) - s = strcat(s, "I"); - if(killed.flagcarried != world) - s = strcat(s, "F"); + s = AppendItemcodes(s, killed); } GameLogEcho(s, FALSE); } diff --git a/data/qcsrc/server/gamec/g_world.c b/data/qcsrc/server/gamec/g_world.c index e181544e1..5ce033ceb 100644 --- a/data/qcsrc/server/gamec/g_world.c +++ b/data/qcsrc/server/gamec/g_world.c @@ -278,8 +278,13 @@ void worldspawn (void) } GameLogInit(); // prepare everything - if(cvar("sv_logspam")) - GameLogEcho(strcat(":gamestart:", GetMapname()), FALSE); + if(cvar("sv_eventlog")) + { + local string matchid; + matchid = strcat(cvar_string("sv_eventlog_files_counter"), "."); + matchid = strcat(matchid, ftos(random())); + GameLogEcho(strcat(":gamestart:", GetMapname(), ":", matchid), FALSE); + } cvar_set("nextmap", ""); } @@ -603,7 +608,7 @@ void() DumpStats = s = strcat(s, GetMapname(), ":", ftos(rint(time))); - if(cvar("sv_logscores_console") || cvar("sv_logspam")) + if(cvar("sv_logscores_console") || cvar("sv_eventlog")) GameLogEcho(s, FALSE); if(cvar("sv_logscores_file")) { @@ -623,7 +628,7 @@ void() DumpStats = if(cvar("sv_logscores_file")) fputs(file, strcat(s, other.netname, "\n")); - if(cvar("sv_logspam")) + if(cvar("sv_eventlog")) GameLogEcho(strcat(s, ftos(other.playerid), ":", other.netname), TRUE); else if(cvar("sv_logscores_console")) GameLogEcho(strcat(s, other.netname), TRUE); @@ -631,7 +636,7 @@ void() DumpStats = other = other.chain; } - if(cvar("sv_logscores_console") || cvar("sv_logspam")) + if(cvar("sv_logscores_console") || cvar("sv_eventlog")) GameLogEcho(":end", FALSE); if(cvar("sv_logscores_file")) { @@ -664,7 +669,7 @@ void() NextLevel = DumpStats(); - if(cvar("sv_logspam")) + if(cvar("sv_eventlog")) GameLogEcho(":gameover", FALSE); GameLogClose(); diff --git a/data/qcsrc/server/gamec/miscfunctions.c b/data/qcsrc/server/gamec/miscfunctions.c index 5cdae2480..8fd6be8af 100644 --- a/data/qcsrc/server/gamec/miscfunctions.c +++ b/data/qcsrc/server/gamec/miscfunctions.c @@ -30,36 +30,36 @@ void(string s, float check_dangerous) GameLogEcho = string fn; float matches; - if(cvar("sv_logspam_console")) - { - ServerConsoleEcho(s, check_dangerous); - } - if(cvar("sv_logspam_files")) + if(cvar("sv_eventlog_files")) { if(!logfile_open) { logfile_open = TRUE; - matches = cvar("sv_logspam_files_counter") + 1; - cvar_set("sv_logspam_files_counter", ftos(matches)); + matches = cvar("sv_eventlog_files_counter") + 1; + cvar_set("sv_eventlog_files_counter", ftos(matches)); fn = ftos(matches); if(strlen(fn) < 8) fn = strcat(substring("00000000", 0, 8 - strlen(fn)), fn); - fn = strcat(cvar_string("sv_logspam_files_nameprefix"), fn, cvar_string("sv_logspam_files_namesuffix")); + fn = strcat(cvar_string("sv_eventlog_files_nameprefix"), fn, cvar_string("sv_eventlog_files_namesuffix")); logfile = fopen(fn, FILE_APPEND); dprint(strcat("\n\n\n\n**********\nlogfile id: ", ftos(logfile), "\n\n\n")); } if(logfile >= 0) fputs(logfile, strcat(s, "\n")); } + if(cvar("sv_eventlog_console")) + { + ServerConsoleEcho(s, check_dangerous); + } } -void(string s, float check_dangerous) GameLogInit = +void() GameLogInit = { logfile_open = 0; // will be opened later } -void(string s, float check_dangerous) GameLogClose = +void() GameLogClose = { if(logfile_open && logfile >= 0) { diff --git a/data/qcsrc/server/gamec/teamplay.c b/data/qcsrc/server/gamec/teamplay.c index 3456c30f2..23dc997ce 100644 --- a/data/qcsrc/server/gamec/teamplay.c +++ b/data/qcsrc/server/gamec/teamplay.c @@ -70,7 +70,7 @@ void tdm_init(); void(entity pl) LogTeamchange = { string str; - if(!cvar("sv_logspam")) + if(!cvar("sv_eventlog")) return; if(pl.playerid < 1) return; -- 2.39.2