Skip to content

Commit

Permalink
finish up this crusty code that'll use mapchooser maps in !profile
Browse files Browse the repository at this point in the history
  • Loading branch information
rtldg committed Nov 28, 2021
1 parent 79cd7f1 commit f8f336d
Showing 1 changed file with 65 additions and 7 deletions.
72 changes: 65 additions & 7 deletions addons/sourcemod/scripting/shavit-stats.sp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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(steamid, style, 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;
}

return OpenStatsMenu_Main(client, steamid, style, item, data);
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 client, int steamid, int style, int item, DataPack data)
Action OpenStatsMenu_Main(int steamid, int style, DataPack data)
{
// big ass query, looking for optimizations TODO
char sQuery[2048];
Expand Down Expand Up @@ -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];

Expand Down

0 comments on commit f8f336d

Please sign in to comment.