finish up this crusty code that'll use mapchooser maps in !profile

This commit is contained in:
rtldg 2021-11-28 01:53:14 +00:00
parent 79cd7f1225
commit f8f336d21a

View File

@ -748,15 +748,14 @@ public Action Command_Profile(int client, int args)
Action OpenStatsMenu(int client, int steamid, int style = 0, int item = 0)
{
gI_Style[client] = style;
gI_MenuPos[client] = item;
// no spam please
if(!gB_CanOpenMenu[client])
{
return Plugin_Handled;
}
gI_Style[client] = style;
gI_MenuPos[client] = item;
gB_CanOpenMenu[client] = false;
DataPack data = new DataPack();
@ -767,18 +766,69 @@ Action OpenStatsMenu(int client, int steamid, int style = 0, int item = 0)
{
char sQuery[2048];
FormatEx(sQuery, sizeof(sQuery),
"SELECT ",
// Note the `GROUP BY track>0` for now
"SELECT 0 as blah, map, track FROM %splayertimes WHERE auth = %d AND style = %d GROUP BY map, track>0 " ...
"UNION SELECT 1 as blah, map, track FROM %smapzones WHERE type = 0 GROUP BY map, track>0;",
gS_MySQLPrefix, steamid, style, gS_MySQLPrefix
);
gH_SQL.Query(OpenStatsMenu_Mapchooser_Callback, sQuery, data, DBPrio_Low);
return Plugin_Handled;
return Plugin_Handled;
}
return OpenStatsMenu_Main(client, steamid, style, item, data);
return OpenStatsMenu_Main(steamid, style, data);
}
Action OpenStatsMenu_Main(int client, int steamid, int style, int item, DataPack data)
public void OpenStatsMenu_Mapchooser_Callback(Database db, DBResultSet results, const char[] error, DataPack data)
{
if (results == null)
{
LogError("Timer (statsmenu-mapchooser) SQL query failed. Reason: %s", error);
return;
}
data.Reset();
int client = GetClientFromSerial(data.ReadCell());
if (client == 0)
{
return;
}
StringMap mapchooser_maps = Shavit_GetMapsStringMap();
int maps_and_completions[2][2];
while (results.FetchRow())
{
int blah = results.FetchInt(0);
char map[PLATFORM_MAX_PATH];
results.FetchString(1, map, sizeof(map));
bool x;
if (!mapchooser_maps.GetValue(map, x))
{
continue;
}
int track = results.FetchInt(2);
maps_and_completions[blah][track>0?1:0] += 1;
}
delete mapchooser_maps;
data.ReadCell(); // item
data.WriteCell(maps_and_completions[0][0], true);
data.WriteCell(maps_and_completions[0][1], true);
data.WriteCell(maps_and_completions[1][0], true);
data.WriteCell(maps_and_completions[1][1], true);
OpenStatsMenu_Main(gI_TargetSteamID[client], gI_Style[client], data);
}
Action OpenStatsMenu_Main(int steamid, int style, DataPack data)
{
// big ass query, looking for optimizations TODO
char sQuery[2048];
@ -865,6 +915,14 @@ public void OpenStatsMenuCallback(Database db, DBResultSet results, const char[]
int iBonusTotalMaps = results.FetchInt(7);
int iBonusWRs = results.FetchInt(8);
if (gB_Mapchooser && gCV_UseMapchooser.BoolValue)
{
iClears = data.ReadCell();
iBonusClears = data.ReadCell();
iTotalMaps = data.ReadCell();
iBonusTotalMaps = data.ReadCell();
}
char sPoints[16];
char sRank[16];