From 45e0065e477c93bfe5351b5bb5428d52a165f47c Mon Sep 17 00:00:00 2001 From: fruitiex Date: Sat, 13 Feb 2010 14:31:34 +0000 Subject: [PATCH] Merge branch 'fruitiex/nexrun' git-svn-id: svn://svn.icculus.org/nexuiz/trunk@8642 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 1 + data/qcsrc/common/gamecommand.qc | 5 +++++ data/qcsrc/common/util.qh | 3 ++- data/qcsrc/server/clientcommands.qc | 6 +++++- data/qcsrc/server/g_world.qc | 14 +++++++++++++- data/qcsrc/server/gamecommand.qc | 7 ++++--- data/qcsrc/server/miscfunctions.qc | 12 ++++++------ 7 files changed, 36 insertions(+), 12 deletions(-) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index 0a5985527..95344e0aa 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -1057,6 +1057,7 @@ alias vdokickban "vdo kickban $*" alias vdoend "vdo endmatch" alias lsmaps "cmd lsmaps" // lists all maps on server (for vmap, suggestmap, vnextmap) +alias lsnewmaps "cmd lsnewmaps" // lists all maps on server that do not yet have a record set (race/cts) bind F1 vyes bind F2 vno diff --git a/data/qcsrc/common/gamecommand.qc b/data/qcsrc/common/gamecommand.qc index e0e0cccba..be2f5e78c 100644 --- a/data/qcsrc/common/gamecommand.qc +++ b/data/qcsrc/common/gamecommand.qc @@ -199,6 +199,7 @@ float GameCommand_Generic(string command) print(" maplist cleanup\n"); print(" maplist maplist\n"); print(" maplist lsmaps\n"); + print(" maplist lsnewmaps\n"); print(" addtolist variable addedvalue\n"); print(" records\n"); print(" rankings (map argument optional)\n"); @@ -260,6 +261,10 @@ float GameCommand_Generic(string command) print(lsmaps_reply); return TRUE; } + else if(argv(1) == "lsnewmaps") { + print(lsnewmaps_reply); + return TRUE; + } } else if(argc >= 3 && argv(0) == "red") { diff --git a/data/qcsrc/common/util.qh b/data/qcsrc/common/util.qh index c9acd69a0..5ee9b1ace 100644 --- a/data/qcsrc/common/util.qh +++ b/data/qcsrc/common/util.qh @@ -174,7 +174,8 @@ void check_unacceptable_compiler_bugs(); float compressShotOrigin(vector v); vector decompressShotOrigin(float f); -string records_reply, rankings_reply, lsmaps_reply, maplist_reply; // cached replies +string rankings_reply, lsmaps_reply, lsnewmaps_reply, maplist_reply; // cached replies +string records_reply[10]; float RandomSelection_totalweight; float RandomSelection_best_priority; diff --git a/data/qcsrc/server/clientcommands.qc b/data/qcsrc/server/clientcommands.qc index 46c912f2e..d4c1eaa6c 100644 --- a/data/qcsrc/server/clientcommands.qc +++ b/data/qcsrc/server/clientcommands.qc @@ -123,6 +123,7 @@ float cmd_floodcheck() void SV_ParseClientCommand(string s) { string cmd; float tokens; + float i; entity e; tokens = tokenize_console(s); @@ -308,8 +309,11 @@ void SV_ParseClientCommand(string s) { sprint(self, maplist_reply); } else if(cmd == "lsmaps") { sprint(self, lsmaps_reply); + } else if(cmd == "lsnewmaps") { + sprint(self, lsnewmaps_reply); } else if(cmd == "records") { - sprint(self, records_reply); + for(i = 0; i < 10; ++i) + sprint(self, records_reply[i]); } else if(cmd == "rankings") { sprint(self, rankings_reply); } else if(cmd == "voice") { diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index 1b79380f7..ad9341e2d 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -638,6 +638,7 @@ void spawnfunc_worldspawn (void) detect_maptype(); lsmaps_reply = "^7Maps available: "; + lsnewmaps_reply = "^7Maps without a record set: "; for(i = 0, j = 0; i < MapInfo_count; ++i) { if(MapInfo_Get_ByID(i)) @@ -649,9 +650,16 @@ void spawnfunc_worldspawn (void) col = "^3"; ++j; lsmaps_reply = strcat(lsmaps_reply, col, MapInfo_Map_bspname, " "); + if(g_race && !stof(db_get(ServerProgsDB, strcat(MapInfo_Map_bspname, RACE_RECORD, "time")))) + lsnewmaps_reply = strcat(lsnewmaps_reply, col, MapInfo_Map_bspname, " "); + else if(g_cts && !stof(db_get(ServerProgsDB, strcat(MapInfo_Map_bspname, CTS_RECORD, "time")))) + lsnewmaps_reply = strcat(lsnewmaps_reply, col, MapInfo_Map_bspname, " "); } } lsmaps_reply = strzone(strcat(lsmaps_reply, "\n")); + if (!g_race && !g_cts) + lsnewmaps_reply = "Need to be playing race or CTS for lsnewmaps to work."; + lsnewmaps_reply = strzone(strcat(lsnewmaps_reply, "\n")); maplist_reply = "^7Maps in list: "; n = tokenize_console(cvar_string("g_maplist")); @@ -670,7 +678,11 @@ void spawnfunc_worldspawn (void) maplist_reply = strzone(strcat(maplist_reply, "\n")); MapInfo_ClearTemps(); - records_reply = strzone(getrecords()); + for(i = 0; i < 10; ++i) + { + records_reply[i] = strzone(getrecords(i)); + } + rankings_reply = strzone(getrankings()); ClientInit_Spawn(); diff --git a/data/qcsrc/server/gamecommand.qc b/data/qcsrc/server/gamecommand.qc index cf2ae4034..e3dd079b7 100644 --- a/data/qcsrc/server/gamecommand.qc +++ b/data/qcsrc/server/gamecommand.qc @@ -920,9 +920,10 @@ void GameCommand(string command) } if (argv(0) == "records") { - strunzone(records_reply); - records_reply = strzone(getrecords()); - print(records_reply); + //strunzone(records_reply); + //records_reply = strzone(getrecords()); // these should be cached at worldspawn, right? + for (i = 0; i < 10; ++i) + print(records_reply[i]); return; } if (argv(0) == "rankings") diff --git a/data/qcsrc/server/miscfunctions.qc b/data/qcsrc/server/miscfunctions.qc index c4d772ebe..b15371287 100644 --- a/data/qcsrc/server/miscfunctions.qc +++ b/data/qcsrc/server/miscfunctions.qc @@ -2113,7 +2113,7 @@ void print_to(entity e, string s) print(s, "\n"); } -string getrecords() +string getrecords(float page) // 50 records per page { float rec; string h; @@ -2127,7 +2127,7 @@ string getrecords() if (g_ctf) { - for (i = 0; i < MapInfo_count; ++i) + for (i = page * 200; i < MapInfo_count && i < page * 200 + 200; ++i) { if (MapInfo_Get_ByID(i)) { @@ -2143,7 +2143,7 @@ string getrecords() if (g_race) { - for (i = 0; i < MapInfo_count; ++i) + for (i = page * 200; i < MapInfo_count && i < page * 200 + 200; ++i) { if (MapInfo_Get_ByID(i)) { @@ -2159,7 +2159,7 @@ string getrecords() if (g_cts) { - for (i = 0; i < MapInfo_count; ++i) + for (i = page * 200; i < MapInfo_count && i < page * 200 + 200; ++i) { if (MapInfo_Get_ByID(i)) { @@ -2175,10 +2175,10 @@ string getrecords() MapInfo_ClearTemps(); - if (s == "") + if (s == "" && page == 0) return "No records are available on this server.\n"; else - return strcat("Records on this server:\n", s); + return s; } string getrankings() -- 2.39.2