From 9386e17d19a91d8f3b251f8b96ea5ee13d6cc60b Mon Sep 17 00:00:00 2001 From: div0 Date: Thu, 11 Dec 2008 13:07:35 +0000 Subject: [PATCH] new command: "records", listing all records on this server git-svn-id: svn://svn.icculus.org/nexuiz/trunk@5188 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 2 ++ data/qcsrc/server/clientcommands.qc | 2 ++ data/qcsrc/server/g_world.qc | 8 ----- data/qcsrc/server/gamecommand.qc | 5 +++ data/qcsrc/server/miscfunctions.qc | 53 +++++++++++++++++++++++++++++ 5 files changed, 62 insertions(+), 8 deletions(-) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index a29d968db..ea1cad68b 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -1230,3 +1230,5 @@ sbar_miniscoreboard_size 0 // this mode is broken in current csqc set g_ban_sync_uri "" // sync using this ban list provider (empty string to disable) set g_ban_sync_interval 5 // sync every 5 minutes set g_ban_sync_trusted_servers "" // request ban lists from these nexuiz servers (do not include your own server there, or unbanning may fail) + +alias records "cmd records" diff --git a/data/qcsrc/server/clientcommands.qc b/data/qcsrc/server/clientcommands.qc index c1babd90e..b42ee1c79 100644 --- a/data/qcsrc/server/clientcommands.qc +++ b/data/qcsrc/server/clientcommands.qc @@ -449,6 +449,8 @@ void SV_ParseClientCommand(string s) { } else print("Usage: sv_cheats 1; restart; cmd trailparticles effectname shotorigin\n"); + } else if(argv(0) == "records") { + printrecords(self); } else { //if(ctf_clientcommand()) // return; diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index efa886617..e0ffaf915 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -1415,14 +1415,6 @@ float WinningCondition_LMS() return WINNING_NO; } -void print_to(entity e, string s) -{ - if(e) - sprint(e, strcat(s, "\n")); - else - print(s, "\n"); -} - void ShuffleMaplist() { string result; diff --git a/data/qcsrc/server/gamecommand.qc b/data/qcsrc/server/gamecommand.qc index 18aa645ee..34de8373d 100644 --- a/data/qcsrc/server/gamecommand.qc +++ b/data/qcsrc/server/gamecommand.qc @@ -679,6 +679,11 @@ void GameCommand(string command) print(etos(client), "\n"); return; } + if (argv(0) == "records") + { + printrecords(world); + return; + } print("Invalid command. For a list of supported commands, try sv_cmd help.\n"); } diff --git a/data/qcsrc/server/miscfunctions.qc b/data/qcsrc/server/miscfunctions.qc index 569368dfd..27e6120f2 100644 --- a/data/qcsrc/server/miscfunctions.qc +++ b/data/qcsrc/server/miscfunctions.qc @@ -1679,3 +1679,56 @@ void URI_Get_Callback(float id, float status, string data) break; } } + +void print_to(entity e, string s) +{ + if(e) + sprint(e, strcat(s, "\n")); + else + print(s, "\n"); +} + +void printrecords(entity to) +{ + float rec; + string h; + float r; + float i; + + rec = 0; + + if(g_ctf) + { + for(i = 0; i < MapInfo_count; ++i) + { + if(MapInfo_Get_ByID(i)) + { + r = stof(db_get(ServerProgsDB, strcat(MapInfo_Map_bspname, "/captimerecord/time"))); + if(r == 0) + continue; + h = db_get(ServerProgsDB, strcat(MapInfo_Map_bspname, "/captimerecord/netname")); + print_to(to, strcat(strpad(32, MapInfo_Map_bspname), " ", strpad(-6, ftos_decimals(r, 2)), " ", h)); + ++rec; + } + } + } + + if(g_race) + { + for(i = 0; i < MapInfo_count; ++i) + { + if(MapInfo_Get_ByID(i)) + { + r = stof(db_get(ServerProgsDB, strcat(MapInfo_Map_bspname, "/racerecord/time"))); + if(r == 0) + continue; + h = db_get(ServerProgsDB, strcat(MapInfo_Map_bspname, "/racerecord/netname")); + print_to(to, strcat(strpad(32, MapInfo_Map_bspname), " ", strpad(-8, mmsss(r)), " ", h)); + ++rec; + } + } + } + + if(!rec) + print_to(to, "No records are available on this server."); +} -- 2.39.2