From aa7887ecf4ffed12095b1d48f9e38a3ed7842a85 Mon Sep 17 00:00:00 2001 From: rtldg <55846624+rtldg@users.noreply.github.com> Date: Tue, 28 Dec 2021 18:05:48 +0000 Subject: [PATCH] make some of these admin menus reopen --- .../scripting/shavit-replay-playback.sp | 4 +- addons/sourcemod/scripting/shavit-wr.sp | 57 +++++++++++-------- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/addons/sourcemod/scripting/shavit-replay-playback.sp b/addons/sourcemod/scripting/shavit-replay-playback.sp index c0b6c37a..5fb85f96 100644 --- a/addons/sourcemod/scripting/shavit-replay-playback.sp +++ b/addons/sourcemod/scripting/shavit-replay-playback.sp @@ -2783,7 +2783,7 @@ public int DeleteConfirmation_Callback(Menu menu, MenuAction action, int param1, menu.GetItem(param2, sInfo, 4); int style = StringToInt(sInfo); - if(DeleteReplay(style, gI_MenuTrack[param1], 0, gS_Map)) + if (style != -1 && DeleteReplay(style, gI_MenuTrack[param1], 0, gS_Map)) { char sTrack[32]; GetTrackName(param1, gI_MenuTrack[param1], sTrack, 32); @@ -2797,6 +2797,8 @@ public int DeleteConfirmation_Callback(Menu menu, MenuAction action, int param1, { Shavit_PrintToChat(param1, "%T", "ReplayDeleteFailure", param1, gS_ChatStrings.sStyle, gS_StyleStrings[style].sStyleName, gS_ChatStrings.sText); } + + Command_DeleteReplay(param1, 0); } else if(action == MenuAction_End) diff --git a/addons/sourcemod/scripting/shavit-wr.sp b/addons/sourcemod/scripting/shavit-wr.sp index 26400672..b4e96b87 100644 --- a/addons/sourcemod/scripting/shavit-wr.sp +++ b/addons/sourcemod/scripting/shavit-wr.sp @@ -1402,18 +1402,19 @@ public int DeleteConfirm_Handler(Menu menu, MenuAction action, int param1, int p if(iRecordID == -1) { Shavit_PrintToChat(param1, "%T", "DeletionAborted", param1); + OpenDelete(param1); return 0; } char sQuery[512]; FormatEx(sQuery, sizeof(sQuery), - "SELECT u.auth, u.name, p.map, p.time, p.sync, p.perfs, p.jumps, p.strafes, p.id, p.date, "... + "SELECT u.auth, u.name, p.map, p.time, p.sync, p.perfs, p.jumps, p.strafes, p.id, p.date, p.style, p.track, "... "(SELECT id FROM %splayertimes WHERE style = %d AND track = %d AND map = p.map ORDER BY time, date ASC LIMIT 1) "... "FROM %susers u LEFT JOIN %splayertimes p ON u.auth = p.auth WHERE p.id = %d;", gS_MySQLPrefix, gA_WRCache[param1].iLastStyle, gA_WRCache[param1].iLastTrack, gS_MySQLPrefix, gS_MySQLPrefix, iRecordID); - gH_SQL.Query(GetRecordDetails_Callback, sQuery, GetClientSerial(param1), DBPrio_High); + gH_SQL.Query(GetRecordDetails_Callback, sQuery, GetSteamAccountID(param1), DBPrio_High); } else if(action == MenuAction_End) @@ -1428,18 +1429,20 @@ public void GetRecordDetails_Callback(Database db, DBResultSet results, const ch { if(results == null) { + for (int i = 1; i <= MaxClients; i++) + { + if (IsValidClient(i) && GetSteamAccountID(i) == data) + { + OpenDelete(i); + break; + } + } + LogError("Timer (WR GetRecordDetails) SQL query failed. Reason: %s", error); return; } - int client = GetClientFromSerial(data); - - if(client == 0) - { - return; - } - if(results.FetchRow()) { int iSteamID = results.FetchInt(0); @@ -1458,14 +1461,13 @@ public void GetRecordDetails_Callback(Database db, DBResultSet results, const ch int iStrafes = results.FetchInt(7); int iRecordID = results.FetchInt(8); int iTimestamp = results.FetchInt(9); - int iWRRecordID = results.FetchInt(10); - - int iStyle = gA_WRCache[client].iLastStyle; - int iTrack = gA_WRCache[client].iLastTrack; + int iStyle = results.FetchInt(10); + int iTrack = results.FetchInt(11); + int iWRRecordID = results.FetchInt(12); // that's a big datapack ya yeet DataPack hPack = new DataPack(); - hPack.WriteCell(GetClientSerial(client)); + hPack.WriteCell(data); hPack.WriteCell(iSteamID); hPack.WriteString(sName); hPack.WriteString(sMap); @@ -1494,7 +1496,7 @@ public void DeleteConfirm_Callback(Database db, DBResultSet results, const char[ { hPack.Reset(); - int iSerial = hPack.ReadCell(); + int admin_steamid = hPack.ReadCell(); int iSteamID = hPack.ReadCell(); char sName[MAX_NAME_LENGTH]; @@ -1517,6 +1519,15 @@ public void DeleteConfirm_Callback(Database db, DBResultSet results, const char[ bool bWRDeleted = view_as(hPack.ReadCell()); delete hPack; + for (int i = 1; i <= MaxClients; i++) + { + if (IsValidClient(i) && GetSteamAccountID(i) == admin_steamid) + { + DeleteSubmenu(i); + break; + } + } + if(results == null) { LogError("Timer (WR DeleteConfirm) SQL query failed. Reason: %s", error); @@ -1540,8 +1551,6 @@ public void DeleteConfirm_Callback(Database db, DBResultSet results, const char[ } } - int client = GetClientFromSerial(iSerial); - char sTrack[32]; GetTrackName(LANG_SERVER, iTrack, sTrack, 32); @@ -1549,15 +1558,17 @@ public void DeleteConfirm_Callback(Database db, DBResultSet results, const char[ FormatTime(sDate, 32, "%Y-%m-%d %H:%M:%S", iTimestamp); // above the client == 0 so log doesn't get lost if admin disconnects between deleting record and query execution - Shavit_LogMessage("%L - deleted record. Runner: %s ([U:1:%d]) | Map: %s | Style: %s | Track: %s | Time: %.2f (%s) | Strafes: %d (%.1f%%) | Jumps: %d (%.1f%%) | Run date: %s | Record ID: %d", - client, sName, iSteamID, sMap, gS_StyleStrings[iStyle].sStyleName, sTrack, fTime, (bWRDeleted)? "WR":"not WR", iStrafes, fSync, iJumps, fPerfectJumps, sDate, iRecordID); + Shavit_LogMessage("Admin [U:1:%d] - deleted record. Runner: %s ([U:1:%d]) | Map: %s | Style: %s | Track: %s | Time: %.2f (%s) | Strafes: %d (%.1f%%) | Jumps: %d (%.1f%%) | Run date: %s | Record ID: %d", + admin_steamid, sName, iSteamID, sMap, gS_StyleStrings[iStyle].sStyleName, sTrack, fTime, (bWRDeleted)? "WR":"not WR", iStrafes, fSync, iJumps, fPerfectJumps, sDate, iRecordID); - if(client == 0) + for (int i = 1; i <= MaxClients; i++) { - return; + if (IsValidClient(i) && GetSteamAccountID(i) == admin_steamid) + { + Shavit_PrintToChat(i, "%T", "DeletedRecord", i); + break; + } } - - Shavit_PrintToChat(client, "%T", "DeletedRecord", client); } public void DeleteAll_Callback(Database db, DBResultSet results, const char[] error, DataPack hPack)