mirror of
https://github.com/shavitush/bhoptimer.git
synced 2025-12-07 10:28:26 +00:00
trim out some unnecessary point recalculations
This commit is contained in:
parent
aef89e9bb4
commit
b3b7de37e2
@ -75,7 +75,6 @@ bool gB_HasSQLRANK = false; // whether the sql driver supports RANK()
|
|||||||
bool gB_Stats = false;
|
bool gB_Stats = false;
|
||||||
bool gB_Late = false;
|
bool gB_Late = false;
|
||||||
bool gB_TierQueried = false;
|
bool gB_TierQueried = false;
|
||||||
bool gB_TierRetrieved = false;
|
|
||||||
|
|
||||||
int gI_Tier = 1; // No floating numbers for tiers, sorry.
|
int gI_Tier = 1; // No floating numbers for tiers, sorry.
|
||||||
|
|
||||||
@ -106,7 +105,6 @@ Handle gH_Forwards_OnRankAssigned = null;
|
|||||||
chatstrings_t gS_ChatStrings;
|
chatstrings_t gS_ChatStrings;
|
||||||
int gI_Styles = 0;
|
int gI_Styles = 0;
|
||||||
|
|
||||||
bool gB_InitialRecalcStarted = false;
|
|
||||||
bool gB_WorldRecordsCached = false;
|
bool gB_WorldRecordsCached = false;
|
||||||
bool gB_WRHolderTablesMade = false;
|
bool gB_WRHolderTablesMade = false;
|
||||||
bool gB_WRHoldersRefreshed = false;
|
bool gB_WRHoldersRefreshed = false;
|
||||||
@ -187,7 +185,6 @@ public void OnPluginStart()
|
|||||||
{
|
{
|
||||||
Shavit_OnChatConfigLoaded();
|
Shavit_OnChatConfigLoaded();
|
||||||
Shavit_OnDatabaseLoaded();
|
Shavit_OnDatabaseLoaded();
|
||||||
UpdateAllPoints();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gEV_Type != Engine_TF2)
|
if (gEV_Type != Engine_TF2)
|
||||||
@ -384,6 +381,11 @@ public void OnMapStart()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (gH_Top100Menu == null)
|
||||||
|
{
|
||||||
|
UpdateTop100();
|
||||||
|
}
|
||||||
|
|
||||||
// Default tier.
|
// Default tier.
|
||||||
// I won't repeat the same mistake blacky has done with tier 3 being default..
|
// I won't repeat the same mistake blacky has done with tier 3 being default..
|
||||||
gI_Tier = gCV_DefaultTier.IntValue;
|
gI_Tier = gCV_DefaultTier.IntValue;
|
||||||
@ -424,18 +426,7 @@ public void SQL_FillTierCache_Callback(Database db, DBResultSet results, const c
|
|||||||
Call_Finish();
|
Call_Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
gB_TierRetrieved = true;
|
if (!gA_MapTiers.GetValue(gS_Map, gI_Tier))
|
||||||
|
|
||||||
if (gA_MapTiers.GetValue(gS_Map, gI_Tier))
|
|
||||||
{
|
|
||||||
if (gB_WorldRecordsCached && !gB_InitialRecalcStarted)
|
|
||||||
{
|
|
||||||
gB_InitialRecalcStarted = true;
|
|
||||||
RecalculateCurrentMap();
|
|
||||||
UpdateAllPoints();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
Call_StartForward(gH_Forwards_OnTierAssigned);
|
Call_StartForward(gH_Forwards_OnTierAssigned);
|
||||||
Call_PushString(gS_Map);
|
Call_PushString(gS_Map);
|
||||||
@ -445,15 +436,12 @@ public void SQL_FillTierCache_Callback(Database db, DBResultSet results, const c
|
|||||||
char sQuery[512];
|
char sQuery[512];
|
||||||
FormatEx(sQuery, sizeof(sQuery), "REPLACE INTO %smaptiers (map, tier) VALUES ('%s', %d);", gS_MySQLPrefix, gS_Map, gI_Tier);
|
FormatEx(sQuery, sizeof(sQuery), "REPLACE INTO %smaptiers (map, tier) VALUES ('%s', %d);", gS_MySQLPrefix, gS_Map, gI_Tier);
|
||||||
gH_SQL.Query2(SQL_SetMapTier_Callback, sQuery, 0, DBPrio_High);
|
gH_SQL.Query2(SQL_SetMapTier_Callback, sQuery, 0, DBPrio_High);
|
||||||
UpdateAllPoints();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnMapEnd()
|
public void OnMapEnd()
|
||||||
{
|
{
|
||||||
gB_InitialRecalcStarted = false;
|
|
||||||
gB_TierQueried = false;
|
gB_TierQueried = false;
|
||||||
gB_TierRetrieved = false;
|
|
||||||
gB_WRHoldersRefreshed = false;
|
gB_WRHoldersRefreshed = false;
|
||||||
gB_WRHoldersRefreshedTimer = false;
|
gB_WRHoldersRefreshedTimer = false;
|
||||||
gB_WorldRecordsCached = false;
|
gB_WorldRecordsCached = false;
|
||||||
@ -471,19 +459,12 @@ public void Shavit_OnWRDeleted(int style, int id, int track, int accountid, cons
|
|||||||
FormatRecalculate(true, track, style, sQuery, sizeof(sQuery));
|
FormatRecalculate(true, track, style, sQuery, sizeof(sQuery));
|
||||||
gH_SQL.Query2(SQL_Recalculate_Callback, sQuery, (style << 8) | track, DBPrio_High);
|
gH_SQL.Query2(SQL_Recalculate_Callback, sQuery, (style << 8) | track, DBPrio_High);
|
||||||
|
|
||||||
UpdateAllPoints();
|
UpdateAllPoints(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Shavit_OnWorldRecordsCached()
|
public void Shavit_OnWorldRecordsCached()
|
||||||
{
|
{
|
||||||
gB_WorldRecordsCached = true;
|
gB_WorldRecordsCached = true;
|
||||||
|
|
||||||
if (gB_TierRetrieved && !gB_InitialRecalcStarted)
|
|
||||||
{
|
|
||||||
gB_InitialRecalcStarted = true;
|
|
||||||
RecalculateCurrentMap();
|
|
||||||
UpdateAllPoints();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action Timer_MVPs(Handle timer)
|
public Action Timer_MVPs(Handle timer)
|
||||||
@ -731,23 +712,25 @@ public void SQL_SetMapTier_Callback(Database db, DBResultSet results, const char
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int client;
|
if (data == null)
|
||||||
char map[PLATFORM_MAX_PATH];
|
|
||||||
|
|
||||||
if (data != null)
|
|
||||||
{
|
{
|
||||||
data.Reset();
|
return;
|
||||||
client = data.ReadCell();
|
|
||||||
data.ReadString(map, sizeof(map));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data == null || StrEqual(map, gS_Map))
|
int serial;
|
||||||
|
char map[PLATFORM_MAX_PATH];
|
||||||
|
|
||||||
|
data.Reset();
|
||||||
|
serial = data.ReadCell();
|
||||||
|
data.ReadString(map, sizeof(map));
|
||||||
|
|
||||||
|
if (StrEqual(map, gS_Map))
|
||||||
{
|
{
|
||||||
ReallyRecalculateCurrentMap();
|
ReallyRecalculateCurrentMap();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RecalculateSpecificMap(map, client);
|
RecalculateSpecificMap(map, serial);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete data;
|
delete data;
|
||||||
@ -756,7 +739,6 @@ public void SQL_SetMapTier_Callback(Database db, DBResultSet results, const char
|
|||||||
public Action Command_RecalcMap(int client, int args)
|
public Action Command_RecalcMap(int client, int args)
|
||||||
{
|
{
|
||||||
ReallyRecalculateCurrentMap();
|
ReallyRecalculateCurrentMap();
|
||||||
UpdateAllPoints(true);
|
|
||||||
|
|
||||||
ReplyToCommand(client, "Recalc started.");
|
ReplyToCommand(client, "Recalc started.");
|
||||||
|
|
||||||
@ -908,16 +890,6 @@ public void Trans_OnRecalcSuccess(Database db, any data, int numQueries, DBResul
|
|||||||
ReplyToCommand(client, "- Finished recalculating all points. Recalculating user points, top 100 and user cache.");
|
ReplyToCommand(client, "- Finished recalculating all points. Recalculating user points, top 100 and user cache.");
|
||||||
|
|
||||||
UpdateAllPoints(true);
|
UpdateAllPoints(true);
|
||||||
|
|
||||||
for(int i = 1; i <= MaxClients; i++)
|
|
||||||
{
|
|
||||||
if(IsClientInGame(i) && IsClientAuthorized(i))
|
|
||||||
{
|
|
||||||
UpdatePlayerRank(i, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ReplyToCommand(client, "- Done.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Trans_OnRecalcFail(Database db, any data, int numQueries, const char[] error, int failIndex, any[] queryData)
|
public void Trans_OnRecalcFail(Database db, any data, int numQueries, const char[] error, int failIndex, any[] queryData)
|
||||||
@ -925,7 +897,7 @@ public void Trans_OnRecalcFail(Database db, any data, int numQueries, const char
|
|||||||
LogError("Timer (rankings) error! Recalculation failed. Reason: %s", error);
|
LogError("Timer (rankings) error! Recalculation failed. Reason: %s", error);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RecalculateSpecificMap(const char[] map, int client)
|
void RecalculateSpecificMap(const char[] map, int serial)
|
||||||
{
|
{
|
||||||
Transaction2 trans = new Transaction2();
|
Transaction2 trans = new Transaction2();
|
||||||
char sQuery[1024];
|
char sQuery[1024];
|
||||||
@ -943,7 +915,7 @@ void RecalculateSpecificMap(const char[] map, int client)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gH_SQL.Execute(trans, Trans_OnRecalcSuccess, Trans_OnRecalcFail, client);
|
gH_SQL.Execute(trans, Trans_OnRecalcSuccess, Trans_OnRecalcFail, serial);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReallyRecalculateCurrentMap()
|
void ReallyRecalculateCurrentMap()
|
||||||
@ -974,6 +946,7 @@ void ReallyRecalculateCurrentMap()
|
|||||||
|
|
||||||
public void Trans_OnReallyRecalcSuccess(Database db, any data, int numQueries, DBResultSet[] results, any[] queryData)
|
public void Trans_OnReallyRecalcSuccess(Database db, any data, int numQueries, DBResultSet[] results, any[] queryData)
|
||||||
{
|
{
|
||||||
|
UpdateAllPoints(true, gS_Map);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Trans_OnReallyRecalcFail(Database db, any data, int numQueries, const char[] error, int failIndex, any[] queryData)
|
public void Trans_OnReallyRecalcFail(Database db, any data, int numQueries, const char[] error, int failIndex, any[] queryData)
|
||||||
@ -981,35 +954,16 @@ public void Trans_OnReallyRecalcFail(Database db, any data, int numQueries, cons
|
|||||||
LogError("Timer (rankings) error! ReallyRecalculateCurrentMap failed. Reason: %s", error);
|
LogError("Timer (rankings) error! ReallyRecalculateCurrentMap failed. Reason: %s", error);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RecalculateCurrentMap()
|
|
||||||
{
|
|
||||||
#if defined DEBUG
|
|
||||||
LogError("DEBUG: 5 (RecalculateCurrentMap)");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
char sQuery[1024];
|
|
||||||
|
|
||||||
for(int i = 0; i < gI_Styles; i++)
|
|
||||||
{
|
|
||||||
if (!Shavit_GetStyleSettingBool(i, "unranked") && Shavit_GetStyleSettingFloat(i, "rankingmultiplier") != 0.0)
|
|
||||||
{
|
|
||||||
FormatRecalculate(true, Track_Main, i, sQuery, sizeof(sQuery));
|
|
||||||
gH_SQL.Query2(SQL_Recalculate_Callback, sQuery, (i << 8) | 0, DBPrio_High);
|
|
||||||
FormatRecalculate(true, Track_Bonus, i, sQuery, sizeof(sQuery));
|
|
||||||
gH_SQL.Query2(SQL_Recalculate_Callback, sQuery, (i << 8) | 1, DBPrio_High);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Shavit_OnFinish_Post(int client, int style, float time, int jumps, int strafes, float sync, int rank, int overwrite, int track)
|
public void Shavit_OnFinish_Post(int client, int style, float time, int jumps, int strafes, float sync, int rank, int overwrite, int track)
|
||||||
{
|
{
|
||||||
if (rank != 1)
|
if (Shavit_GetStyleSettingBool(style, "unranked") || Shavit_GetStyleSettingFloat(style, "rankingmultiplier") == 0.0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Shavit_GetStyleSettingBool(style, "unranked") || Shavit_GetStyleSettingFloat(style, "rankingmultiplier") == 0.0)
|
if (rank != 1)
|
||||||
{
|
{
|
||||||
|
UpdatePointsForSinglePlayer(client);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1021,6 +975,7 @@ public void Shavit_OnFinish_Post(int client, int style, float time, int jumps, i
|
|||||||
FormatRecalculate(true, track, style, sQuery, sizeof(sQuery));
|
FormatRecalculate(true, track, style, sQuery, sizeof(sQuery));
|
||||||
|
|
||||||
gH_SQL.Query2(SQL_Recalculate_Callback, sQuery, (style << 8) | track, DBPrio_High);
|
gH_SQL.Query2(SQL_Recalculate_Callback, sQuery, (style << 8) | track, DBPrio_High);
|
||||||
|
UpdateAllPoints(true, gS_Map, track);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SQL_Recalculate_Callback(Database db, DBResultSet results, const char[] error, any data)
|
public void SQL_Recalculate_Callback(Database db, DBResultSet results, const char[] error, any data)
|
||||||
@ -1040,13 +995,35 @@ public void SQL_Recalculate_Callback(Database db, DBResultSet results, const cha
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAllPoints(bool recalcall = false)
|
void UpdatePointsForSinglePlayer(int client)
|
||||||
|
{
|
||||||
|
int auth = GetSteamAccountID(client);
|
||||||
|
|
||||||
|
char sQuery[1024];
|
||||||
|
|
||||||
|
if (gCV_WeightingMultiplier.FloatValue == 1.0)
|
||||||
|
{
|
||||||
|
FormatEx(sQuery, sizeof(sQuery),
|
||||||
|
"UPDATE %susers SET points = (SELECT SUM(points) FROM %splayertimes WHERE auth = %d) WHERE auth = %d;",
|
||||||
|
gS_MySQLPrefix, gS_MySQLPrefix, auth, auth);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FormatEx(sQuery, sizeof(sQuery),
|
||||||
|
"UPDATE %susers SET points = GetWeightedPoints(auth) WHERE auth = %d;",
|
||||||
|
gS_MySQLPrefix, auth);
|
||||||
|
}
|
||||||
|
|
||||||
|
gH_SQL.Query2(SQL_UpdateAllPoints_Callback, sQuery, GetClientSerial(client));
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateAllPoints(bool recalcall=false, char[] map="", int track=-1)
|
||||||
{
|
{
|
||||||
#if defined DEBUG
|
#if defined DEBUG
|
||||||
LogError("DEBUG: 6 (UpdateAllPoints)");
|
LogError("DEBUG: 6 (UpdateAllPoints)");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char sQuery[512];
|
char sQuery[1024];
|
||||||
char sLastLogin[256];
|
char sLastLogin[256];
|
||||||
|
|
||||||
if (!recalcall && gCV_LastLoginRecalculate.IntValue > 0)
|
if (!recalcall && gCV_LastLoginRecalculate.IntValue > 0)
|
||||||
@ -1063,11 +1040,29 @@ void UpdateAllPoints(bool recalcall = false)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
char sMapWhere[512];
|
||||||
|
|
||||||
|
if (map[0])
|
||||||
|
{
|
||||||
|
FormatEx(sMapWhere, sizeof(sMapWhere), "map = '%s'", map);
|
||||||
|
}
|
||||||
|
|
||||||
|
char sTrackWhere[64];
|
||||||
|
|
||||||
|
if (track != -1)
|
||||||
|
{
|
||||||
|
FormatEx(sTrackWhere, sizeof(sTrackWhere), "track = %d", track);
|
||||||
|
}
|
||||||
|
|
||||||
FormatEx(sQuery, sizeof(sQuery),
|
FormatEx(sQuery, sizeof(sQuery),
|
||||||
"UPDATE %susers SET points = GetWeightedPoints(auth) WHERE %s %s auth IN (SELECT DISTINCT auth FROM %splayertimes);",
|
"UPDATE %susers SET points = GetWeightedPoints(auth) WHERE %s %s auth IN (SELECT DISTINCT auth FROM %splayertimes %s %s %s %s);",
|
||||||
gS_MySQLPrefix,
|
gS_MySQLPrefix,
|
||||||
sLastLogin, (sLastLogin[0] != 0) ? "AND" : "",
|
sLastLogin, (sLastLogin[0] != 0) ? "AND" : "",
|
||||||
gS_MySQLPrefix);
|
gS_MySQLPrefix,
|
||||||
|
(sMapWhere[0] || sTrackWhere[0]) ? "WHERE" : "",
|
||||||
|
sMapWhere,
|
||||||
|
(sMapWhere[0] && sTrackWhere[0]) ? "AND" : "",
|
||||||
|
sTrackWhere);
|
||||||
}
|
}
|
||||||
|
|
||||||
gH_SQL.Query2(SQL_UpdateAllPoints_Callback, sQuery);
|
gH_SQL.Query2(SQL_UpdateAllPoints_Callback, sQuery);
|
||||||
@ -1082,14 +1077,19 @@ public void SQL_UpdateAllPoints_Callback(Database db, DBResultSet results, const
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateRankedPlayers();
|
UpdateTop100();
|
||||||
|
|
||||||
|
for (int i = 1; i <= MaxClients; i++)
|
||||||
|
{
|
||||||
|
if (IsClientInGame(i) && IsClientAuthorized(i))
|
||||||
|
{
|
||||||
|
UpdatePlayerRank(i, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdatePlayerRank(int client, bool first)
|
void UpdatePlayerRank(int client, bool first)
|
||||||
{
|
{
|
||||||
gA_Rankings[client].iRank = 0;
|
|
||||||
gA_Rankings[client].fPoints = 0.0;
|
|
||||||
|
|
||||||
int iSteamID = 0;
|
int iSteamID = 0;
|
||||||
|
|
||||||
if((iSteamID = GetSteamAccountID(client)) != 0)
|
if((iSteamID = GetSteamAccountID(client)) != 0)
|
||||||
@ -1145,37 +1145,16 @@ public void SQL_UpdatePlayerRank_Callback(Database db, DBResultSet results, cons
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateRankedPlayers()
|
|
||||||
{
|
|
||||||
char sQuery[512];
|
|
||||||
FormatEx(sQuery, 512, "SELECT COUNT(*) count FROM %susers WHERE points > 0.0;",
|
|
||||||
gS_MySQLPrefix);
|
|
||||||
|
|
||||||
gH_SQL.Query2(SQL_UpdateRankedPlayers_Callback, sQuery, 0, DBPrio_High);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SQL_UpdateRankedPlayers_Callback(Database db, DBResultSet results, const char[] error, any data)
|
|
||||||
{
|
|
||||||
if(results == null)
|
|
||||||
{
|
|
||||||
LogError("Timer (rankings, update ranked players) error! Reason: %s", error);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(results.FetchRow())
|
|
||||||
{
|
|
||||||
gI_RankedPlayers = results.FetchInt(0);
|
|
||||||
|
|
||||||
UpdateTop100();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdateTop100()
|
void UpdateTop100()
|
||||||
{
|
{
|
||||||
char sQuery[512];
|
char sQuery[512];
|
||||||
FormatEx(sQuery, 512, "SELECT auth, name, FORMAT(points, 2) FROM %susers WHERE points > 0.0 ORDER BY points DESC LIMIT 100;", gS_MySQLPrefix);
|
FormatEx(sQuery, sizeof(sQuery),
|
||||||
gH_SQL.Query2(SQL_UpdateTop100_Callback, sQuery, 0, DBPrio_Low);
|
"SELECT * FROM (SELECT COUNT(*) as c, 0 as auth, '' as name, '' as p FROM %susers WHERE points > 0) a \
|
||||||
|
UNION ALL \
|
||||||
|
SELECT * FROM (SELECT -1 as c, auth, name, points FROM %susers WHERE points > 0 ORDER BY points DESC LIMIT 100) b;",
|
||||||
|
gS_MySQLPrefix, gS_MySQLPrefix);
|
||||||
|
|
||||||
|
gH_SQL.Query2(SQL_UpdateTop100_Callback, sQuery, 0, DBPrio_High);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SQL_UpdateTop100_Callback(Database db, DBResultSet results, const char[] error, any data)
|
public void SQL_UpdateTop100_Callback(Database db, DBResultSet results, const char[] error, any data)
|
||||||
@ -1187,33 +1166,31 @@ public void SQL_UpdateTop100_Callback(Database db, DBResultSet results, const ch
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(gH_Top100Menu != null)
|
if (!results.FetchRow())
|
||||||
{
|
{
|
||||||
delete gH_Top100Menu;
|
LogError("Timer (rankings, update top 100 b) error! Reason: failed to fetch first row");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gI_RankedPlayers = results.FetchInt(0);
|
||||||
|
|
||||||
|
delete gH_Top100Menu;
|
||||||
gH_Top100Menu = new Menu(MenuHandler_Top);
|
gH_Top100Menu = new Menu(MenuHandler_Top);
|
||||||
|
|
||||||
int row = 0;
|
int row = 0;
|
||||||
|
|
||||||
while(results.FetchRow())
|
while(results.FetchRow())
|
||||||
{
|
{
|
||||||
if(row > 100)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
char sSteamID[32];
|
char sSteamID[32];
|
||||||
results.FetchString(0, sSteamID, 32);
|
results.FetchString(1, sSteamID, 32);
|
||||||
|
|
||||||
char sName[MAX_NAME_LENGTH];
|
char sName[32+1];
|
||||||
results.FetchString(1, sName, MAX_NAME_LENGTH);
|
results.FetchString(2, sName, sizeof(sName));
|
||||||
|
|
||||||
char sPoints[16];
|
float fPoints = results.FetchFloat(3);
|
||||||
results.FetchString(2, sPoints, 16);
|
|
||||||
|
|
||||||
char sDisplay[96];
|
char sDisplay[96];
|
||||||
FormatEx(sDisplay, 96, "#%d - %s (%s)", (++row), sName, sPoints);
|
FormatEx(sDisplay, 96, "#%d - %s (%.2f)", (++row), sName, fPoints);
|
||||||
gH_Top100Menu.AddItem(sSteamID, sDisplay);
|
gH_Top100Menu.AddItem(sSteamID, sDisplay);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1585,6 +1562,5 @@ public void SQL_DeleteMap_Callback(Database db, DBResultSet results, const char[
|
|||||||
gI_Tier = gCV_DefaultTier.IntValue;
|
gI_Tier = gCV_DefaultTier.IntValue;
|
||||||
|
|
||||||
UpdateAllPoints(true);
|
UpdateAllPoints(true);
|
||||||
UpdateRankedPlayers();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user