Commit 7c512f1e authored by Samual's avatar Samual

Merge remote-tracking branch 'origin/samual/lsmaps_update'

parents 61b0a7b4 beca805c
......@@ -43,7 +43,6 @@ alias cvar_purechanges "qc_cmd_svcmd cvar_purechanges ${* ?}" // Prints
alias info "qc_cmd_svcmd info ${* ?}" // Request for unique server information set up by admin
alias ladder "qc_cmd_svcmd ladder ${* ?}" // Get information about top players if supported
alias lsmaps "qc_cmd_svcmd lsmaps ${* ?}" // List maps which can be used with the current game mode
alias lsnewmaps "qc_cmd_svcmd lsnewmaps ${* ?}" // List maps which have no records or are seemingly unplayed yet
alias printmaplist "qc_cmd_svcmd printmaplist ${* ?}" // Display full server maplist reply
alias rankings "qc_cmd_svcmd rankings ${* ?}" // Print information about rankings
alias records "qc_cmd_svcmd records ${* ?}" // List top 10 records for the current map
......
......@@ -203,7 +203,7 @@ float compressShotOrigin(vector v);
vector decompressShotOrigin(float f);
#ifdef SVQC
string rankings_reply, ladder_reply, lsmaps_reply, lsnewmaps_reply, maplist_reply; // cached replies
string rankings_reply, ladder_reply, lsmaps_reply, maplist_reply; // cached replies
string records_reply[10];
#endif
......
......@@ -360,26 +360,6 @@ void CommonCommand_lsmaps(float request, entity caller)
}
}
void CommonCommand_lsnewmaps(float request, entity caller)
{
switch(request)
{
case CMD_REQUEST_COMMAND:
{
print_to(caller, lsnewmaps_reply);
return; // never fall through to usage
}
default:
case CMD_REQUEST_USAGE:
{
print_to(caller, strcat("\nUsage:^3 ", GetCommandPrefix(caller), " lsnewmaps"));
print_to(caller, " No arguments required.");
return;
}
}
}
void CommonCommand_printmaplist(float request, entity caller)
{
switch(request)
......@@ -693,7 +673,6 @@ void CommonCommand_(float request, entity caller)
COMMON_COMMAND("info", CommonCommand_info(request, caller, arguments), "Request for unique server information set up by admin") \
COMMON_COMMAND("ladder", CommonCommand_ladder(request, caller), "Get information about top players if supported") \
COMMON_COMMAND("lsmaps", CommonCommand_lsmaps(request, caller), "List maps which can be used with the current game mode") \
COMMON_COMMAND("lsnewmaps", CommonCommand_lsnewmaps(request, caller), "List maps which have no records or are seemingly unplayed yet") \
COMMON_COMMAND("printmaplist", CommonCommand_printmaplist(request, caller), "Display full server maplist reply") \
COMMON_COMMAND("rankings", CommonCommand_rankings(request, caller), "Print information about rankings") \
COMMON_COMMAND("records", CommonCommand_records(request, caller), "List top 10 records for the current map") \
......
......@@ -285,3 +285,62 @@ string getladder()
else
return strcat("Top ", ftos(LADDER_SIZE), " ladder rankings:\n", s);
}
string getmaplist()
{
//print("^1================= Executing getmaplist()! =================\n");
string maplist = "", col;
float i, argc;
argc = tokenize_console(autocvar_g_maplist);
for(i = 0; i < argc; ++i)
{
if(MapInfo_CheckMap(argv(i)))
{
if(mod(i, 2)) { col = "^2"; }
else { col = "^3"; }
maplist = sprintf("%s%s%s ", maplist, col, argv(i));
}
}
MapInfo_ClearTemps();
return sprintf(_("^7Maps in list: %s\n"), maplist);
}
string getlsmaps()
{
//print("^1================= Executing getlsmaps()! =================\n");
string lsmaps = "", col;
float i, newmaps;
for(i = 0; i < MapInfo_count; ++i)
{
if((MapInfo_Get_ByID(i)) && !(MapInfo_Map_flags & MapInfo_ForbiddenFlags()))
{
// todo: Check by play count of maps for other game types?
if(
(g_race && !stof(db_get(ServerProgsDB, strcat(MapInfo_Map_bspname, RACE_RECORD, "time"))))
||
(g_cts && !stof(db_get(ServerProgsDB, strcat(MapInfo_Map_bspname, CTS_RECORD, "time"))))
)
{
newmaps = TRUE;
if(mod(i, 2)) { col = "^4*"; }
else { col = "^5*"; }
}
else
{
if(mod(i, 2)) { col = "^2"; }
else { col = "^3"; }
}
lsmaps = sprintf("%s%s%s ", lsmaps, col, MapInfo_Map_bspname);
}
}
MapInfo_ClearTemps();
return sprintf(_("^7Maps available%s: %s\n"), (newmaps ? _(" (New maps have asterisks marked in blue)") : ""), lsmaps);
}
......@@ -14,4 +14,6 @@ float top_scores[LADDER_SIZE];
// allow functions to be used in other code like g_world.qc and race.qc
string getrecords(float page);
string getrankings(void);
string getladder(void);
\ No newline at end of file
string getladder(void);
string getmaplist(void);
string getlsmaps(void);
......@@ -736,7 +736,12 @@ void GameCommand_gametype(float request, float argc)
MapInfo_SwitchGameType(t);
MapInfo_FilterGametype(MapInfo_CurrentGametype(), MapInfo_CurrentFeatures(), MapInfo_RequiredFlags(), MapInfo_ForbiddenFlags(), 0);
if(MapInfo_count > 0)
{
// update lsmaps in case the gametype changed, this way people can easily list maps for it
if(lsmaps_reply != "") { strunzone(lsmaps_reply); }
lsmaps_reply = strzone(getlsmaps());
bprint("Game type successfully switched to ", s, "\n");
}
else
{
bprint("Cannot use this game type: no map for it found\n");
......
......@@ -563,7 +563,7 @@ void WeaponStats_Shutdown();
void spawnfunc_worldspawn (void)
{
float fd, l, i, j, n;
string s, col;
string s;
cvar = cvar_normal;
cvar_string = cvar_string_normal;
......@@ -814,58 +814,15 @@ void spawnfunc_worldspawn (void)
detect_maptype();
// set up information replies for clients and server to use
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))
if not(MapInfo_Map_flags & MapInfo_ForbiddenFlags())
{
if(mod(i, 2))
col = "^2";
else
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"));
lsnewmaps_reply = strzone(strcat(((!g_race && !g_cts) ? "Need to be playing race or CTS for lsnewmaps to work." : lsnewmaps_reply), "\n"));
maplist_reply = "^7Maps in list: ";
n = tokenize_console(autocvar_g_maplist);
for(i = 0, j = 0; i < n; ++i)
{
if(MapInfo_CheckMap(argv(i)))
{
if(mod(j, 2))
col = "^2";
else
col = "^3";
maplist_reply = strcat(maplist_reply, col, argv(i), " ");
++j;
}
}
maplist_reply = strzone(strcat(maplist_reply, "\n"));
MapInfo_ClearTemps();
maplist_reply = strzone(getmaplist());
lsmaps_reply = strzone(getlsmaps());
for(i = 0; i < 10; ++i)
{
s = getrecords(i);
if (s)
records_reply[i] = strzone(s);
}
ladder_reply = strzone(getladder());
rankings_reply = strzone(getrankings());
// begin other init
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment