diff --git a/RaceTimer_2026/scripting/unloze_racetimer_2026.sp b/RaceTimer_2026/scripting/unloze_racetimer_2026.sp index 179f427..eea7b51 100755 --- a/RaceTimer_2026/scripting/unloze_racetimer_2026.sp +++ b/RaceTimer_2026/scripting/unloze_racetimer_2026.sp @@ -1008,7 +1008,7 @@ public void FinishedRaceZone(int client) MapStageCategoryCvars entry; g_hMapStageCategoryCvars.GetArray(i, entry); if (!StrEqual(entry.map, g_cMapname) || entry.stage != player_stage[client]) - { + { continue; } categoryNumber++; @@ -1389,7 +1389,7 @@ public void OpenStageMenu(int client, const char[] mapName) menu.SetTitle("[UNLOZE Racetimer] Stages on: %s", mapName); menu.ExitBackButton = true; - int currentStage = -1; + ArrayList stages = new ArrayList(); for (int i = 0; i < g_hMapStageCategoryCvars.Length; i++) { MapStageCategoryCvars entry; @@ -1398,16 +1398,24 @@ public void OpenStageMenu(int client, const char[] mapName) { continue; } - if (entry.stage != currentStage) + if (stages.FindValue(entry.stage) != -1) { - currentStage = entry.stage; - char info[16]; - IntToString(currentStage, info, sizeof(info)); - char display[32]; - Format(display, sizeof(display), "Stage %i", currentStage); - menu.AddItem(info, display); + continue; } + stages.Push(entry.stage); } + stages.Sort(Sort_Ascending, Sort_Integer); + + for (int i = 0; i < stages.Length; i++) + { + int stage = stages.Get(i); + char info[16]; + IntToString(stage, info, sizeof(info)); + char display[32]; + Format(display, sizeof(display), "Stage %i", stage); + menu.AddItem(info, display); + } + delete stages; if (menu.ItemCount == 0) {