summaryrefslogtreecommitdiff
path: root/sourcemod/scripting/gokz-racing/race_menu.sp
diff options
context:
space:
mode:
authoraura <nw@moneybot.cc>2026-02-17 23:42:09 +0100
committeraura <nw@moneybot.cc>2026-02-17 23:42:09 +0100
commit5e2eb7d67ae933b7566f1944d0bb7744da03d586 (patch)
tree054acff1113270a9cd07933df760f3768c1b6853 /sourcemod/scripting/gokz-racing/race_menu.sp
parent341db13a008dc12bb22ceb50452d93d01476308c (diff)
move source stuff to its own folder
Diffstat (limited to 'sourcemod/scripting/gokz-racing/race_menu.sp')
-rw-r--r--sourcemod/scripting/gokz-racing/race_menu.sp464
1 files changed, 0 insertions, 464 deletions
diff --git a/sourcemod/scripting/gokz-racing/race_menu.sp b/sourcemod/scripting/gokz-racing/race_menu.sp
deleted file mode 100644
index 0518a2a..0000000
--- a/sourcemod/scripting/gokz-racing/race_menu.sp
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
- A menu for hosting big races.
-*/
-
-
-
-#define ITEM_INFO_START "st"
-#define ITEM_INFO_ABORT "ab"
-#define ITEM_INFO_INVITE "iv"
-#define ITEM_INFO_MODE "md"
-#define ITEM_INFO_COURSE "co"
-#define ITEM_INFO_TELEPORT "tp"
-
-static int raceMenuMode[MAXPLAYERS + 1];
-static int raceMenuCourse[MAXPLAYERS + 1];
-static int raceMenuCheckpointLimit[MAXPLAYERS + 1];
-static int raceMenuCheckpointCooldown[MAXPLAYERS + 1];
-
-
-
-// =====[ PICK MODE ]=====
-
-void DisplayRaceMenu(int client, bool reset = true)
-{
- if (InRace(client) && (!IsRaceHost(client) || GetRaceInfo(GetRaceID(client), RaceInfo_Type) != RaceType_Normal))
- {
- GOKZ_PrintToChat(client, true, "%t", "You Are Already Part Of A Race");
- GOKZ_PlayErrorSound(client);
- return;
- }
-
- if (reset)
- {
- raceMenuMode[client] = GOKZ_GetCoreOption(client, Option_Mode);
- raceMenuCourse[client] = 0;
- }
-
- Menu menu = new Menu(MenuHandler_Race);
- menu.SetTitle("%T", "Race Menu - Title", client);
- RaceMenuAddItems(client, menu);
- menu.Display(client, MENU_TIME_FOREVER);
-}
-
-public int MenuHandler_Race(Menu menu, MenuAction action, int param1, int param2)
-{
- if (action == MenuAction_Select)
- {
- char info[16];
- menu.GetItem(param2, info, sizeof(info));
-
- if (StrEqual(info, ITEM_INFO_START, false))
- {
- if (!StartHostedRace(param1))
- {
- DisplayRaceMenu(param1, false);
- }
- }
- else if (StrEqual(info, ITEM_INFO_ABORT, false))
- {
- AbortHostedRace(param1);
- DisplayRaceMenu(param1, false);
- }
- else if (StrEqual(info, ITEM_INFO_INVITE, false))
- {
- if (!InRace(param1))
- {
- HostRace(param1, RaceType_Normal, raceMenuCourse[param1], raceMenuMode[param1], raceMenuCheckpointLimit[param1], raceMenuCheckpointCooldown[param1]);
- }
-
- SendRequestAll(param1);
- GOKZ_PrintToChat(param1, true, "%t", "You Invited Everyone");
- DisplayRaceMenu(param1, false);
- }
- else if (StrEqual(info, ITEM_INFO_MODE, false))
- {
- DisplayRaceModeMenu(param1);
- }
- else if (StrEqual(info, ITEM_INFO_COURSE, false))
- {
- int course = raceMenuCourse[param1];
- do
- {
- course++;
- if (!GOKZ_IsValidCourse(course))
- {
- course = 0;
- }
- } while (!GOKZ_GetCourseRegistered(course) && course != raceMenuCourse[param1]);
- raceMenuCourse[param1] = course;
- DisplayRaceMenu(param1, false);
- }
- else if (StrEqual(info, ITEM_INFO_TELEPORT, false))
- {
- DisplayRaceCheckpointMenu(param1);
- }
- }
- else if (action == MenuAction_End)
- {
- delete menu;
- }
- return 0;
-}
-
-void RaceMenuAddItems(int client, Menu menu)
-{
- char display[32];
-
- menu.RemoveAllItems();
-
- bool pending = GetRaceInfo(GetRaceID(client), RaceInfo_Status) == RaceStatus_Pending;
- FormatEx(display, sizeof(display), "%T", "Race Menu - Start Race", client);
- menu.AddItem(ITEM_INFO_START, display, (InRace(client) && pending) ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED);
-
- FormatEx(display, sizeof(display), "%T", "Race Menu - Invite Everyone", client);
- menu.AddItem(ITEM_INFO_INVITE, display, (!InRace(client) || pending) ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED);
-
- FormatEx(display, sizeof(display), "%T\n \n%T", "Race Menu - Abort Race", client, "Race Menu - Rules", client);
- menu.AddItem(ITEM_INFO_ABORT, display, InRace(client) ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED);
-
- FormatEx(display, sizeof(display), "%s", gC_ModeNames[raceMenuMode[client]]);
- menu.AddItem(ITEM_INFO_MODE, display, InRace(client) ? ITEMDRAW_DISABLED : ITEMDRAW_DEFAULT);
-
- if (raceMenuCourse[client] == 0)
- {
- FormatEx(display, sizeof(display), "%T", "Race Rules - Main Course", client);
- }
- else
- {
- FormatEx(display, sizeof(display), "%T %d", "Race Rules - Bonus Course", client, raceMenuCourse[client]);
- }
- menu.AddItem(ITEM_INFO_COURSE, display, InRace(client) ? ITEMDRAW_DISABLED : ITEMDRAW_DEFAULT);
-
- FormatEx(display, sizeof(display), "%s", GetRaceRuleSummary(client, raceMenuCheckpointLimit[client], raceMenuCheckpointCooldown[client]));
- menu.AddItem(ITEM_INFO_TELEPORT, display, InRace(client) ? ITEMDRAW_DISABLED : ITEMDRAW_DEFAULT);
-}
-
-
-
-// =====[ MODE MENU ]=====
-
-static void DisplayRaceModeMenu(int client)
-{
- Menu menu = new Menu(MenuHandler_RaceMode);
- menu.ExitButton = false;
- menu.ExitBackButton = true;
- menu.SetTitle("%T", "Mode Rule Menu - Title", client);
- GOKZ_MenuAddModeItems(client, menu, true);
- menu.Display(client, MENU_TIME_FOREVER);
-}
-
-public int MenuHandler_RaceMode(Menu menu, MenuAction action, int param1, int param2)
-{
- if (action == MenuAction_Select)
- {
- raceMenuMode[param1] = param2;
- DisplayRaceMenu(param1, false);
- }
- else if (action == MenuAction_Cancel)
- {
- DisplayRaceMenu(param1, false);
- }
- else if (action == MenuAction_End)
- {
- delete menu;
- }
- return 0;
-}
-
-
-
-// =====[ CHECKPOINT MENU ]=====
-
-static void DisplayRaceCheckpointMenu(int client)
-{
- Menu menu = new Menu(MenuHandler_RaceCheckpoint);
- menu.ExitButton = false;
- menu.ExitBackButton = true;
- menu.SetTitle("%T", "Checkpoint Rule Menu - Title", client);
- RaceCheckpointMenuAddItems(client, menu);
- menu.Display(client, MENU_TIME_FOREVER);
-}
-
-public int MenuHandler_RaceCheckpoint(Menu menu, MenuAction action, int param1, int param2)
-{
- if (action == MenuAction_Select)
- {
- switch (param2)
- {
- case CheckpointRule_None:
- {
- raceMenuCheckpointLimit[param1] = 0;
- raceMenuCheckpointCooldown[param1] = 0;
- DisplayRaceMenu(param1, false);
- }
- case CheckpointRule_Limit:
- {
- DisplayCheckpointLimitMenu(param1);
- }
- case CheckpointRule_Cooldown:
- {
- DisplayCheckpointCooldownMenu(param1);
- }
- case CheckpointRule_Unlimited:
- {
- raceMenuCheckpointLimit[param1] = -1;
- raceMenuCheckpointCooldown[param1] = 0;
- DisplayRaceMenu(param1, false);
- }
- }
- }
- else if (action == MenuAction_Cancel)
- {
- DisplayRaceMenu(param1, false);
- }
- else if (action == MenuAction_End)
- {
- delete menu;
- }
- return 0;
-}
-
-void RaceCheckpointMenuAddItems(int client, Menu menu)
-{
- char display[32];
-
- menu.RemoveAllItems();
-
- FormatEx(display, sizeof(display), "%T", "Checkpoint Rule - None", client);
- menu.AddItem("", display);
-
- if (raceMenuCheckpointLimit[client] == -1)
- {
- FormatEx(display, sizeof(display), "%T", "Checkpoint Rule - No Checkpoint Limit", client);
- }
- else
- {
- FormatEx(display, sizeof(display), "%T", "Checkpoint Rule - Checkpoint Limit", client, raceMenuCheckpointLimit[client]);
- }
- menu.AddItem("", display);
-
- if (raceMenuCheckpointCooldown[client] == 0)
- {
- FormatEx(display, sizeof(display), "%T", "Checkpoint Rule - No Checkpoint Cooldown", client);
- }
- else
- {
- FormatEx(display, sizeof(display), "%T", "Checkpoint Rule - Checkpoint Cooldown", client, raceMenuCheckpointCooldown[client]);
- }
- menu.AddItem("", display);
-
- FormatEx(display, sizeof(display), "%T", "Checkpoint Rule - Unlimited", client);
- menu.AddItem("", display);
-}
-
-
-
-// =====[ CP LIMIT MENU ]=====
-
-static void DisplayCheckpointLimitMenu(int client)
-{
- char display[32];
-
- Menu menu = new Menu(MenuHandler_RaceCheckpointLimit);
- menu.ExitButton = false;
- menu.ExitBackButton = true;
-
- if (raceMenuCheckpointLimit[client] == -1)
- {
- menu.SetTitle("%T", "Checkpoint Limit Menu - Title Unlimited", client);
- }
- else
- {
- menu.SetTitle("%T", "Checkpoint Limit Menu - Title Limited", client, raceMenuCheckpointLimit[client]);
- }
-
- FormatEx(display, sizeof(display), "%T", "Checkpoint Limit Menu - Add One", client);
- menu.AddItem("+1", display);
-
- FormatEx(display, sizeof(display), "%T", "Checkpoint Limit Menu - Add Five", client);
- menu.AddItem("+5", display);
-
- FormatEx(display, sizeof(display), "%T", "Checkpoint Limit Menu - Remove One", client);
- menu.AddItem("-1", display);
-
- FormatEx(display, sizeof(display), "%T", "Checkpoint Limit Menu - Remove Five", client);
- menu.AddItem("-5", display);
-
- FormatEx(display, sizeof(display), "%T", "Checkpoint Limit Menu - Unlimited", client);
- menu.AddItem("Unlimited", display);
-
- menu.Display(client, MENU_TIME_FOREVER);
-}
-
-public int MenuHandler_RaceCheckpointLimit(Menu menu, MenuAction action, int param1, int param2)
-{
- if (action == MenuAction_Select)
- {
- char item[32];
- menu.GetItem(param2, item, sizeof(item));
- if (StrEqual(item, "+1"))
- {
- if (raceMenuCheckpointLimit[param1] == -1)
- {
- raceMenuCheckpointLimit[param1]++;
- }
- raceMenuCheckpointLimit[param1]++;
- }
- if (StrEqual(item, "+5"))
- {
- if (raceMenuCheckpointLimit[param1] == -1)
- {
- raceMenuCheckpointLimit[param1]++;
- }
- raceMenuCheckpointLimit[param1] += 5;
- }
- if (StrEqual(item, "-1"))
- {
- raceMenuCheckpointLimit[param1]--;
- }
- if (StrEqual(item, "-5"))
- {
- raceMenuCheckpointLimit[param1] -= 5;
- }
- if (StrEqual(item, "Unlimited"))
- {
- raceMenuCheckpointLimit[param1] = -1;
- DisplayRaceCheckpointMenu(param1);
- return 0;
- }
-
- raceMenuCheckpointLimit[param1] = raceMenuCheckpointLimit[param1] < 0 ? 0 : raceMenuCheckpointLimit[param1];
- DisplayCheckpointLimitMenu(param1);
- }
- else if (action == MenuAction_Cancel)
- {
- DisplayRaceCheckpointMenu(param1);
- }
- else if (action == MenuAction_End)
- {
- delete menu;
- }
- return 0;
-}
-
-
-
-// =====[ CP COOLDOWN MENU ]=====
-
-static void DisplayCheckpointCooldownMenu(int client)
-{
- char display[32];
-
- Menu menu = new Menu(MenuHandler_RaceCPCooldown);
- menu.ExitButton = false;
- menu.ExitBackButton = true;
-
- if (raceMenuCheckpointCooldown[client] == -1)
- {
- menu.SetTitle("%T", "Checkpoint Cooldown Menu - Title None", client);
- }
- else
- {
- menu.SetTitle("%T", "Checkpoint Cooldown Menu - Title Limited", client, raceMenuCheckpointCooldown[client]);
- }
-
- FormatEx(display, sizeof(display), "%T", "Checkpoint Cooldown Menu - Add One Second", client);
- menu.AddItem("+1", display);
-
- FormatEx(display, sizeof(display), "%T", "Checkpoint Cooldown Menu - Add Five Seconds", client);
- menu.AddItem("+5", display);
-
- FormatEx(display, sizeof(display), "%T", "Checkpoint Cooldown Menu - Remove One Second", client);
- menu.AddItem("-1", display);
-
- FormatEx(display, sizeof(display), "%T", "Checkpoint Cooldown Menu - Remove Five Seconds", client);
- menu.AddItem("-5", display);
-
- FormatEx(display, sizeof(display), "%T", "Checkpoint Cooldown Menu - None", client);
- menu.AddItem("None", display);
-
- menu.Display(client, MENU_TIME_FOREVER);
-}
-
-public int MenuHandler_RaceCPCooldown(Menu menu, MenuAction action, int param1, int param2)
-{
- if (action == MenuAction_Select)
- {
- char item[32];
- menu.GetItem(param2, item, sizeof(item));
- if (StrEqual(item, "+1"))
- {
- if (raceMenuCheckpointCooldown[param1] == -1)
- {
- raceMenuCheckpointCooldown[param1]++;
- }
- raceMenuCheckpointCooldown[param1]++;
- }
- if (StrEqual(item, "+5"))
- {
- if (raceMenuCheckpointCooldown[param1] == -1)
- {
- raceMenuCheckpointCooldown[param1]++;
- }
- raceMenuCheckpointCooldown[param1] += 5;
- }
- if (StrEqual(item, "-1"))
- {
- raceMenuCheckpointCooldown[param1]--;
- }
- if (StrEqual(item, "-5"))
- {
- raceMenuCheckpointCooldown[param1] -= 5;
- }
- if (StrEqual(item, "None"))
- {
- raceMenuCheckpointCooldown[param1] = 0;
- DisplayRaceCheckpointMenu(param1);
- return 0;
- }
-
- raceMenuCheckpointCooldown[param1] = raceMenuCheckpointCooldown[param1] < 0 ? 0 : raceMenuCheckpointCooldown[param1];
- DisplayCheckpointCooldownMenu(param1);
- }
- else if (action == MenuAction_Cancel)
- {
- DisplayRaceCheckpointMenu(param1);
- }
- else if (action == MenuAction_End)
- {
- delete menu;
- }
- return 0;
-}
-
-
-
-// =====[ PRIVATE ]=====
-
-char[] GetRaceRuleSummary(int client, int checkpointLimit, int checkpointCooldown)
-{
- char rulesString[64];
- if (checkpointLimit == -1 && checkpointCooldown == 0)
- {
- FormatEx(rulesString, sizeof(rulesString), "%T", "Rule Summary - Unlimited", client);
- }
- else if (checkpointLimit > 0 && checkpointCooldown == 0)
- {
- FormatEx(rulesString, sizeof(rulesString), "%T", "Rule Summary - Limited Checkpoints", client, checkpointLimit);
- }
- else if (checkpointLimit == -1 && checkpointCooldown > 0)
- {
- FormatEx(rulesString, sizeof(rulesString), "%T", "Rule Summary - Limited Cooldown", client, checkpointCooldown);
- }
- else if (checkpointLimit > 0 && checkpointCooldown > 0)
- {
- FormatEx(rulesString, sizeof(rulesString), "%T", "Rule Summary - Limited Everything", client, checkpointLimit, checkpointCooldown);
- }
- else if (checkpointLimit == 0)
- {
- FormatEx(rulesString, sizeof(rulesString), "%T", "Rule Summary - No Checkpoints", client);
- }
-
- return rulesString;
-} \ No newline at end of file