Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Apex legends ping sys created by: DarkShadow#24346 Credit: Josbird"
  • }
  • modes
  • {
  • Skirmish
  • {
  • enabled maps
  • {
  • Workshop Chamber
  • }
  • }
  • General
  • {
  • Respawn As Random Hero: On
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: IconArray
  • 1: StringsArray
  • 124: _extendedGlobalCollection
  • 125: _arrayBuilder
  • 126: textBudget
  • 127: exitButtonProperties
  • player:
  • 0: Index
  • 1: NumberOfSelections
  • 2: Middle_Of_Effect
  • 3: Effects
  • 4: Effect_Active
  • 5: i
  • 117: _extendedPlayerCollection
  • 118: getProperties
  • 119: buttonModification
  • 120: currActionID
  • 121: destroyButtonID
  • 122: lastMenuButtonID
  • 123: buttons
  • 124: newButton
  • 125: menuOriginalFacing
  • 126: menuFrame
  • 127: isInMenu
  • }
  • subroutines
  • {
  • 0: Enemy
  • 1: TracesOfEnemy
  • 2: GoHere
  • 3: AttackHere
  • 4: DefendHere
  • 5: MonitorHere
  • 118: createMenuButton
  • 119: destroyMenuButton
  • 120: modifyMenuButton
  • 121: getButtonProperties
  • 122: createCursor
  • 123: createBorderCorners
  • 124: createBorderEdges
  • 125: createExitButton
  • 126: doButtonUpdate
  • 127: createClickAreas
  • }
  • rule("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒【Josbird's Cursor Menu】▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Global init")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • disabled Global.textBudget = 128;
  • disabled Create HUD Text(Host Player, Server Load Average, Custom String("Server Load"), Null, Right, -1, Color(Turquoise), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • disabled Global.textBudget -= 1;
  • disabled End;
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.isInMenu), Null, Null, Custom String(
  • "Cursor Menu created by Josbird {0} Code: GETVX", Ability Icon String(Hero(Mercy), Button(Ultimate))), Right, -100,
  • Custom Color(0, 255, 255, 90), Color(White), Color(Turquoise), Visible To and String, Default Visibility);
  • disabled Global.textBudget -= 1;
  • disabled Create HUD Text(Filtered Array(All Players(All Teams), !Current Array Element.isInMenu), Custom String("
{0}
", Custom String(
  • "Press Interact [{0}] to open menu", Input Binding String(Button(Interact)))), Null, Null, Top, 1, Color(Yellow), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • disabled Global.textBudget -= 1;
  • disabled End;
  • Global._extendedGlobalCollection[1] = 5;
  • Global._extendedGlobalCollection[2] = 5;
  • Global._extendedGlobalCollection[3] = Custom String("━");
  • Global._extendedGlobalCollection[4] = Custom String("┃\n");
  • Global.exitButtonProperties = Array(Custom String("exit menu"), Global._extendedGlobalCollection[1] / 2 - 0.150,
  • Global._extendedGlobalCollection[2] / 2 - 0.150, 0.350);
  • }
  • }
  • rule("Create a menu button")
  • {
  • event
  • {
  • Subroutine;
  • createMenuButton;
  • }
  • actions
  • {
  • If(Count Of(Event Player.newButton) != 13);
  • Log To Inspector(Custom String("[CursorMenu.createMenuButton] Error: incorrect number of arguments (got {0}, expected {1})",
  • Event Player.destroyButtonID, 13));
  • Else;
  • Event Player.lastMenuButtonID = Count Of(Event Player.buttons);
  • Event Player._extendedPlayerCollection[2] = 0;
  • While(Event Player._extendedPlayerCollection[2] < Count Of(Event Player.buttons));
  • If(Event Player.buttons[Event Player._extendedPlayerCollection[2]] == Null);
  • Event Player.lastMenuButtonID = Event Player._extendedPlayerCollection[2];
  • Event Player._extendedPlayerCollection[2] = Count Of(Event Player.buttons);
  • End;
  • Event Player._extendedPlayerCollection[2] += 1;
  • End;
  • Event Player.buttons[Event Player.lastMenuButtonID] = Event Player.newButton;
  • End;
  • }
  • }
  • rule("Destroy a menu button")
  • {
  • event
  • {
  • Subroutine;
  • destroyMenuButton;
  • }
  • actions
  • {
  • If(Event Player.destroyButtonID >= Count Of(Event Player.buttons) || !Event Player.buttons[Event Player.destroyButtonID]);
  • Log To Inspector(Custom String("[CursorMenu.destroyMenuButton] Error: tried to destroy an invalid button ID ({0})",
  • Event Player.destroyButtonID));
  • Else;
  • Global._arrayBuilder = Event Player.buttons[Event Player.destroyButtonID];
  • Global._arrayBuilder[15] = True;
  • Event Player.buttons[Event Player.destroyButtonID] = Global._arrayBuilder;
  • End;
  • }
  • }
  • rule("Modify a menu button")
  • {
  • event
  • {
  • Subroutine;
  • modifyMenuButton;
  • }
  • actions
  • {
  • If(Count Of(Event Player.buttonModification) % 2 == 0 || Count Of(Event Player.buttonModification) < 3);
  • Log To Inspector(Custom String("[CursorMenu.modifyMenuButton] Error: incorrect number of arguments ({0})", Count Of(First Of(
  • Event Player.buttonModification))));
  • Else If(First Of(Event Player.buttonModification) >= Count Of(Event Player.buttons) || !Event Player.buttons[First Of(
  • Event Player.buttonModification)]);
  • Log To Inspector(Custom String("[CursorMenu.modifyMenuButton] Error: tried to modify an invalid button ID ({0})", First Of(
  • Event Player.buttonModification)));
  • Else;
  • Event Player._extendedPlayerCollection[2] = 1;
  • While(Event Player._extendedPlayerCollection[2] < Count Of(Event Player.buttonModification));
  • If(
  • Event Player.buttonModification[Event Player._extendedPlayerCollection[2]] < 0 || Event Player.buttonModification[Event Player._extendedPlayerCollection[2]] >= 13);
  • Log To Inspector(Custom String("[CursorMenu.modifyMenuButton] Error: tried to modify an invalid property index ({0})", Count Of(
  • Event Player.buttonModification[Event Player._extendedPlayerCollection[2]])));
  • Else;
  • Global._arrayBuilder = Event Player.buttons[First Of(Event Player.buttonModification)];
  • Global._arrayBuilder[Event Player.buttonModification[Event Player._extendedPlayerCollection[2]]] = Event Player.buttonModification[Event Player._extendedPlayerCollection[2] + 1];
  • Event Player.buttons[First Of(Event Player.buttonModification)] = Global._arrayBuilder;
  • End;
  • Event Player._extendedPlayerCollection[2] += 2;
  • End;
  • End;
  • }
  • }
  • rule("Get properties of a menu button")
  • {
  • event
  • {
  • Subroutine;
  • getButtonProperties;
  • }
  • actions
  • {
  • If(Event Player.getProperties >= Count Of(Event Player.buttons) || !Event Player.buttons[Event Player.getProperties]);
  • Log To Inspector(Custom String("[CursorMenu.getButtonProperties] Error: tried to access an invalid button ID ({0})",
  • Event Player.getProperties));
  • Else;
  • Event Player.getProperties = Array Slice(Event Player.buttons[Event Player.getProperties], 0, 13);
  • End;
  • }
  • }
  • rule("Create menu cursor")
  • {
  • event
  • {
  • Subroutine;
  • createCursor;
  • }
  • actions
  • {
  • Create In-World Text(Filtered Array(Event Player, Total Time Elapsed % 0.032 < 0.016), Custom String("▲"), Update Every Frame(
  • Eye Position(Event Player) + 100 * (Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Event Player)),
  • Horizontal Angle From Direction(Event Player.menuOriginalFacing)) * Cross Product(Facing Direction Of(Event Player),
  • Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(
  • Facing Direction Of(Event Player)) - 90)) + (Angle Difference(Vertical Angle From Direction(Facing Direction Of(Event Player)),
  • Vertical Angle From Direction(Event Player.menuOriginalFacing)) - 0.200) * Direction From Angles(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(
  • Event Player)) - 90) + 3 * Facing Direction Of(Event Player))), 3, Do Not Clip, Visible To Position String and Color, Color(
  • White), Default Visibility);
  • Modify Player Variable(Event Player, menuFrame, Append To Array, Last Text ID);
  • Global.textBudget -= 1;
  • Create In-World Text(Filtered Array(Event Player, Total Time Elapsed % 0.032 >= 0.016), Custom String("▲"), Update Every Frame(
  • Eye Position(Event Player) + 100 * (Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Event Player)),
  • Horizontal Angle From Direction(Event Player.menuOriginalFacing)) * Cross Product(Facing Direction Of(Event Player),
  • Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(
  • Facing Direction Of(Event Player)) - 90)) + (Angle Difference(Vertical Angle From Direction(Facing Direction Of(Event Player)),
  • Vertical Angle From Direction(Event Player.menuOriginalFacing)) - 0.200) * Direction From Angles(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(
  • Event Player)) - 90) + 3 * Facing Direction Of(Event Player))), 3, Do Not Clip, Visible To Position String and Color, Color(
  • White), Default Visibility);
  • Modify Player Variable(Event Player, menuFrame, Append To Array, Last Text ID);
  • Global.textBudget -= 1;
  • }
  • }
  • rule("Create menu border corners")
  • {
  • event
  • {
  • Subroutine;
  • createBorderCorners;
  • }
  • actions
  • {
  • Create In-World Text(Event Player, Custom String("┌"), Update Every Frame(Eye Position(Event Player) + 100 * (
  • Global._extendedGlobalCollection[1] * -1 / 2 * Cross Product(Facing Direction Of(Event Player), Direction From Angles(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(
  • Event Player)) - 90)) + (Global._extendedGlobalCollection[2] / 2 - 0.200) * Direction From Angles(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(
  • Event Player)) - 90) + 3 * Facing Direction Of(Event Player))), 4, Do Not Clip, Visible To and Position, Color(White),
  • Default Visibility);
  • Modify Player Variable(Event Player, menuFrame, Append To Array, Last Text ID);
  • Global.textBudget -= 1;
  • Create In-World Text(Event Player, Custom String("┐"), Update Every Frame(Eye Position(Event Player) + 100 * (
  • Global._extendedGlobalCollection[1] / 2 * Cross Product(Facing Direction Of(Event Player), Direction From Angles(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(
  • Event Player)) - 90)) + (Global._extendedGlobalCollection[2] / 2 - 0.200) * Direction From Angles(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(
  • Event Player)) - 90) + 3 * Facing Direction Of(Event Player))), 4, Do Not Clip, Visible To and Position, Color(White),
  • Default Visibility);
  • Modify Player Variable(Event Player, menuFrame, Append To Array, Last Text ID);
  • Global.textBudget -= 1;
  • Create In-World Text(Event Player, Custom String("└"), Update Every Frame(Eye Position(Event Player) + 100 * (
  • Global._extendedGlobalCollection[1] * -1 / 2 * Cross Product(Facing Direction Of(Event Player), Direction From Angles(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(
  • Event Player)) - 90)) + (Global._extendedGlobalCollection[2] * -1 / 2 - 0.200) * Direction From Angles(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(
  • Event Player)) - 90) + 3 * Facing Direction Of(Event Player))), 4, Do Not Clip, Visible To and Position, Color(White),
  • Default Visibility);
  • Modify Player Variable(Event Player, menuFrame, Append To Array, Last Text ID);
  • Global.textBudget -= 1;
  • Create In-World Text(Event Player, Custom String("┘"), Update Every Frame(Eye Position(Event Player) + 100 * (
  • Global._extendedGlobalCollection[1] / 2 * Cross Product(Facing Direction Of(Event Player), Direction From Angles(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(
  • Event Player)) - 90)) + (Global._extendedGlobalCollection[2] * -1 / 2 - 0.200) * Direction From Angles(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(
  • Event Player)) - 90) + 3 * Facing Direction Of(Event Player))), 4, Do Not Clip, Visible To and Position, Color(White),
  • Default Visibility);
  • Modify Player Variable(Event Player, menuFrame, Append To Array, Last Text ID);
  • Global.textBudget -= 1;
  • }
  • }
  • rule("Create menu border edges")
  • {
  • event
  • {
  • Subroutine;
  • createBorderEdges;
  • }
  • actions
  • {
  • Global._extendedGlobalCollection[8] = Custom String("");
  • Event Player._extendedPlayerCollection[2] = 0;
  • While(Event Player._extendedPlayerCollection[2] < 4.600 * Global._extendedGlobalCollection[1] - 1);
  • Global._extendedGlobalCollection[8] = Custom String("{0}{1}", Global._extendedGlobalCollection[8],
  • Global._extendedGlobalCollection[3]);
  • Event Player._extendedPlayerCollection[2] += 1;
  • End;
  • Create In-World Text(Event Player, Global._extendedGlobalCollection[8], Update Every Frame(Eye Position(Event Player) + 100 * ((
  • Global._extendedGlobalCollection[2] / 2 - 0.200) * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
  • Event Player)), Vertical Angle From Direction(Facing Direction Of(Event Player)) - 90) + 3 * Facing Direction Of(
  • Event Player))), 4, Do Not Clip, Visible To and Position, Color(White), Default Visibility);
  • Modify Player Variable(Event Player, menuFrame, Append To Array, Last Text ID);
  • Global.textBudget -= 1;
  • Global._extendedGlobalCollection[9] = Custom String("");
  • Event Player._extendedPlayerCollection[2] = 0;
  • While(Event Player._extendedPlayerCollection[2] < 4.600 * Global._extendedGlobalCollection[1] - 1);
  • Global._extendedGlobalCollection[9] = Custom String("{0}{1}", Global._extendedGlobalCollection[9],
  • Global._extendedGlobalCollection[3]);
  • Event Player._extendedPlayerCollection[2] += 1;
  • End;
  • Create In-World Text(Event Player, Global._extendedGlobalCollection[9], Update Every Frame(Eye Position(Event Player) + 100 * ((
  • Global._extendedGlobalCollection[2] * -1 / 2 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(Event Player)) - 90)
  • + 3 * Facing Direction Of(Event Player))), 4, Do Not Clip, Visible To and Position, Color(White), Default Visibility);
  • Modify Player Variable(Event Player, menuFrame, Append To Array, Last Text ID);
  • Global.textBudget -= 1;
  • Global._extendedGlobalCollection[10] = Custom String("");
  • Event Player._extendedPlayerCollection[2] = 0.300;
  • While(Event Player._extendedPlayerCollection[2] < Global._extendedGlobalCollection[2]);
  • Global._extendedGlobalCollection[10] = Custom String("{0}{1}", Global._extendedGlobalCollection[10],
  • Global._extendedGlobalCollection[4]);
  • Event Player._extendedPlayerCollection[2] += 0.300;
  • End;
  • Create In-World Text(Event Player, Global._extendedGlobalCollection[10], Update Every Frame(Eye Position(Event Player) + 100 * (
  • Global._extendedGlobalCollection[1] / 2 * Cross Product(Facing Direction Of(Event Player), Direction From Angles(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(
  • Event Player)) - 90)) + (-0.095 * Round To Integer(Global._extendedGlobalCollection[2] / 0.300, Down) - 0.200)
  • * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(
  • Facing Direction Of(Event Player)) - 90) + 3 * Facing Direction Of(Event Player))), 4, Do Not Clip, Visible To and Position,
  • Color(White), Default Visibility);
  • Modify Player Variable(Event Player, menuFrame, Append To Array, Last Text ID);
  • Global.textBudget -= 1;
  • Global._extendedGlobalCollection[11] = Custom String("");
  • Event Player._extendedPlayerCollection[2] = 0.300;
  • While(Event Player._extendedPlayerCollection[2] < Global._extendedGlobalCollection[2]);
  • Global._extendedGlobalCollection[11] = Custom String("{0}{1}", Global._extendedGlobalCollection[11],
  • Global._extendedGlobalCollection[4]);
  • Event Player._extendedPlayerCollection[2] += 0.300;
  • End;
  • Create In-World Text(Event Player, Global._extendedGlobalCollection[11], Update Every Frame(Eye Position(Event Player) + 100 * (
  • Global._extendedGlobalCollection[1] * -1 / 2 * Cross Product(Facing Direction Of(Event Player), Direction From Angles(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(
  • Event Player)) - 90)) + (-0.095 * Round To Integer(Global._extendedGlobalCollection[2] / 0.300, Down) - 0.200)
  • * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(
  • Facing Direction Of(Event Player)) - 90) + 3 * Facing Direction Of(Event Player))), 4, Do Not Clip, Visible To and Position,
  • Color(White), Default Visibility);
  • Modify Player Variable(Event Player, menuFrame, Append To Array, Last Text ID);
  • Global.textBudget -= 1;
  • }
  • }
  • rule("Do button update")
  • {
  • event
  • {
  • Subroutine;
  • doButtonUpdate;
  • }
  • actions
  • {
  • Event Player._extendedPlayerCollection[2] = 0;
  • While(Event Player._extendedPlayerCollection[2] < Count Of(Event Player.buttons));
  • If(Event Player.buttons[Event Player._extendedPlayerCollection[2]]);
  • If(Event Player.buttons[Event Player._extendedPlayerCollection[2]][15]);
  • If(Event Player.buttons[Event Player._extendedPlayerCollection[2]][14]);
  • Destroy In-World Text(Event Player.buttons[Event Player._extendedPlayerCollection[2]][13]);
  • End;
  • Event Player.buttons[Event Player._extendedPlayerCollection[2]] = Null;
  • Else If((
  • !Event Player.buttons[Event Player._extendedPlayerCollection[2]][12] && Event Player.buttons[Event Player._extendedPlayerCollection[2]][14])
  • || !Event Player.isInMenu);
  • Destroy In-World Text(Event Player.buttons[Event Player._extendedPlayerCollection[2]][13]);
  • Global.textBudget += 1;
  • Global._arrayBuilder = Event Player.buttons[Event Player._extendedPlayerCollection[2]];
  • Global._arrayBuilder[14] = False;
  • Event Player.buttons[Event Player._extendedPlayerCollection[2]] = Global._arrayBuilder;
  • Else If(
  • Event Player.buttons[Event Player._extendedPlayerCollection[2]][12] && !Event Player.buttons[Event Player._extendedPlayerCollection[2]][14]);
  • Create In-World Text(Event Player, Event Player.buttons[Evaluate Once(Event Player._extendedPlayerCollection[2])
  • ][10] ? Custom String("
{0}
", First Of(Event Player.buttons[Evaluate Once(Event Player._extendedPlayerCollection[2])]))
  • : First Of(Event Player.buttons[Evaluate Once(Event Player._extendedPlayerCollection[2])]), Update Every Frame(Eye Position(
  • Event Player) + 100 * (Event Player.buttons[Evaluate Once(Event Player._extendedPlayerCollection[2])][4] * Cross Product(
  • Facing Direction Of(Event Player), Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Event Player)),
  • Vertical Angle From Direction(Facing Direction Of(Event Player)) - 90)) + (Event Player.buttons[Evaluate Once(
  • Event Player._extendedPlayerCollection[2])][5] - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Facing Direction Of(Event Player)), Vertical Angle From Direction(Facing Direction Of(Event Player)) - 90)
  • + 3 * Facing Direction Of(Event Player))), Event Player.buttons[Evaluate Once(Event Player._extendedPlayerCollection[2])][3],
  • Do Not Clip, Visible To Position String and Color, Event Player.buttons[Evaluate Once(
  • Event Player._extendedPlayerCollection[2])][11] && Absolute Value(Angle Difference(Horizontal Angle From Direction(
  • Facing Direction Of(Event Player)), Horizontal Angle From Direction(Event Player.menuOriginalFacing))
  • - Event Player.buttons[Evaluate Once(Event Player._extendedPlayerCollection[2])][4]) <= Event Player.buttons[Evaluate Once(
  • Event Player._extendedPlayerCollection[2])][6] / 2 && Absolute Value(Angle Difference(Vertical Angle From Direction(
  • Facing Direction Of(Event Player)), Vertical Angle From Direction(Event Player.menuOriginalFacing))
  • - Event Player.buttons[Evaluate Once(Event Player._extendedPlayerCollection[2])][5]) <= Event Player.buttons[Evaluate Once(
  • Event Player._extendedPlayerCollection[2])][7] / 2 ? Event Player.buttons[Evaluate Once(
  • Event Player._extendedPlayerCollection[2])][9] : Event Player.buttons[Evaluate Once(Event Player._extendedPlayerCollection[2])
  • ][8], Default Visibility);
  • Global._arrayBuilder = Event Player.buttons[Evaluate Once(Event Player._extendedPlayerCollection[2])];
  • Global._arrayBuilder[13] = Last Text ID;
  • Event Player.buttons[Evaluate Once(Event Player._extendedPlayerCollection[2])] = Global._arrayBuilder;
  • Global._arrayBuilder = Event Player.buttons[Evaluate Once(Event Player._extendedPlayerCollection[2])];
  • Global._arrayBuilder[14] = True;
  • Event Player.buttons[Evaluate Once(Event Player._extendedPlayerCollection[2])] = Global._arrayBuilder;
  • Global.textBudget -= 1;
  • End;
  • End;
  • Event Player._extendedPlayerCollection[2] += 1;
  • End;
  • }
  • }
  • rule("Open menu")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • !Is Dummy Bot(Event Player) == True;
  • Event Player.isInMenu == True;
  • }
  • actions
  • {
  • Set Aim Speed(Event Player, 10);
  • Event Player.menuOriginalFacing = Facing Direction Of(Event Player);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • If(Global._extendedGlobalCollection[7]);
  • Disable Hero HUD(Event Player);
  • Disable Game Mode HUD(Event Player);
  • End;
  • Event Player.menuFrame = Empty Array;
  • Call Subroutine(createCursor);
  • disabled Wait(0.016, Ignore Condition);
  • disabled Call Subroutine(createBorderCorners);
  • disabled Call Subroutine(createBorderEdges);
  • disabled Wait(0.016, Ignore Condition);
  • disabled Call Subroutine(createExitButton);
  • disabled Wait(0.016, Ignore Condition);
  • Call Subroutine(doButtonUpdate);
  • If(Global._extendedGlobalCollection[5]);
  • Call Subroutine(createClickAreas);
  • End;
  • }
  • }
  • rule("Close menu")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • !Is Dummy Bot(Event Player) == True;
  • !Event Player.isInMenu == True;
  • }
  • actions
  • {
  • Set Aim Speed(Event Player, 100);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • If(Global._extendedGlobalCollection[7]);
  • Enable Hero HUD(Event Player);
  • Enable Game Mode HUD(Event Player);
  • End;
  • Event Player._extendedPlayerCollection[2] = 0;
  • While(Event Player._extendedPlayerCollection[2] < Count Of(Event Player.menuFrame));
  • Destroy In-World Text(Event Player.menuFrame[Event Player._extendedPlayerCollection[2]]);
  • Global.textBudget += 1;
  • Event Player._extendedPlayerCollection[2] += 1;
  • End;
  • Destroy Icon(First Of(Event Player._extendedPlayerCollection));
  • Call Subroutine(doButtonUpdate);
  • }
  • }
  • rule("Check for button update")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.isInMenu == True;
  • Is True For Any(Event Player.buttons, Current Array Element && (Current Array Element[15] || (
  • !Current Array Element[12] && Current Array Element[14]) || (Current Array Element[12] && !Current Array Element[14])))
  • == True;
  • }
  • actions
  • {
  • Call Subroutine(doButtonUpdate);
  • Wait(0.016, Ignore Condition);
  • }
  • }
  • rule("Cursor bounds")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.isInMenu == True;
  • (Absolute Value(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Event Player)),
  • Horizontal Angle From Direction(Event Player.menuOriginalFacing)))
  • > Global._extendedGlobalCollection[1] / 2 + 0.050 || Absolute Value(Angle Difference(Vertical Angle From Direction(
  • Facing Direction Of(Event Player)), Vertical Angle From Direction(Event Player.menuOriginalFacing)))
  • > Global._extendedGlobalCollection[2] / 2 + 0.050) == True;
  • }
  • actions
  • {
  • Set Facing(Event Player, Direction From Angles(Min(Max(Horizontal Angle From Direction(Event Player.menuOriginalFacing)
  • - Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Event Player)), Horizontal Angle From Direction(
  • Event Player.menuOriginalFacing)), Horizontal Angle From Direction(Event Player.menuOriginalFacing)
  • - Global._extendedGlobalCollection[1] / 2), Horizontal Angle From Direction(Event Player.menuOriginalFacing)
  • + Global._extendedGlobalCollection[1] / 2), Min(Max(Vertical Angle From Direction(Event Player.menuOriginalFacing)
  • - Angle Difference(Vertical Angle From Direction(Facing Direction Of(Event Player)), Vertical Angle From Direction(
  • Event Player.menuOriginalFacing)), Vertical Angle From Direction(Event Player.menuOriginalFacing)
  • - Global._extendedGlobalCollection[2] / 2), Vertical Angle From Direction(Event Player.menuOriginalFacing)
  • + Global._extendedGlobalCollection[2] / 2)), To World);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒a")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Setup global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • disabled Global.IconArray = Array(Icon String(Club), Icon String(Asterisk), Icon String(Flag), Icon String(Arrow: Right), Icon String(Plus),
  • Icon String(Poison 2));
  • Global.StringsArray = Array(Custom String("Enemy"), Custom String("Traces of Enemy "), Custom String("Go Here "), Custom String(
  • "Attack Here "), Custom String("Defend Here "), Custom String("Monitor Here "));
  • Global.IconArray = Array(Icon String(Exclamation Mark), Icon String(Warning), Icon String(Diamond), Icon String(Bolt),
  • Ability Icon String(Hero(Reinhardt), Button(Secondary Fire)), Icon String(Question Mark));
  • }
  • }
  • rule("Setup player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • disabled Create HUD Text(Filtered Array(Event Player, Event Player.isInMenu), Null, Null, Append To Array(All Players(All Teams), 0)[0],
  • Top, 1, Color(Yellow), Color(White), Color(White), Visible To and String, Default Visibility);
  • disabled Create HUD Text(Filtered Array(Event Player, Event Player.isInMenu), Append To Array(Array(Custom String("")), Global.StringsArray)
  • [Magnitude Of(Vector(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Event Player)),
  • Horizontal Angle From Direction(Event Player.menuOriginalFacing)), Angle Difference(Vertical Angle From Direction(
  • Facing Direction Of(Event Player)), Vertical Angle From Direction(Event Player.menuOriginalFacing)), 0))
  • > 0.400 ? 1 + Round To Integer((180 - Arctangent In Degrees(Angle Difference(Vertical Angle From Direction(Facing Direction Of(
  • Event Player)), Vertical Angle From Direction(Event Player.menuOriginalFacing)), Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Horizontal Angle From Direction(
  • Event Player.menuOriginalFacing)))) / (360 / Event Player.NumberOfSelections), Down) : 0], Null, Null, Top, 1, Color(Yellow),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(Event Player, Event Player.isInMenu), Null, Null, Append To Array(Array(Custom String("")),
  • Global.StringsArray)[Magnitude Of(Vector(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Event Player)),
  • Horizontal Angle From Direction(Event Player.menuOriginalFacing)), Angle Difference(Vertical Angle From Direction(
  • Facing Direction Of(Event Player)), Vertical Angle From Direction(Event Player.menuOriginalFacing)), 0))
  • > 0.400 ? 1 + Round To Integer((180 - Arctangent In Degrees(Angle Difference(Vertical Angle From Direction(Facing Direction Of(
  • Event Player)), Vertical Angle From Direction(Event Player.menuOriginalFacing)), Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Horizontal Angle From Direction(
  • Event Player.menuOriginalFacing)))) / (360 / Event Player.NumberOfSelections), Down) : 0], Top, 1, Color(Yellow), Color(White),
  • Color(Yellow), Visible To and String, Default Visibility);
  • }
  • }
  • rule("Create radial menu")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Event Player.Index = 0;
  • Event Player.NumberOfSelections = 6;
  • For Player Variable(Event Player, Index, 0, Event Player.NumberOfSelections, 1);
  • Event Player.newButton = Array(Custom String("{0}", Global.IconArray[Event Player.Index]), Null, Null, 2.500, Sine From Degrees(
  • -90 + 180 * (2 * Event Player.Index + 1) / Event Player.NumberOfSelections), Cosine From Degrees(-90 + 180 * (
  • 2 * Event Player.Index + 1) / Event Player.NumberOfSelections), 0.750, 0.750, Color(Turquoise), Color(Yellow), False, True,
  • True);
  • disabled Event Player.Index += 1;
  • Call Subroutine(createMenuButton);
  • End;
  • Event Player.newButton = Array(Custom String("〇", Event Player.Index), Null, Null, 10, 0, 0, 0, 0, Color(White), Color(White),
  • False, False, True);
  • Call Subroutine(createMenuButton);
  • }
  • }
  • rule("Menu open/select/close logic")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • !Is Dummy Bot(Event Player) == True;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • !Is Communicating Any Emote(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.isInMenu = True;
  • Wait Until(!Is Button Held(Event Player, Button(Interact)), 99999);
  • If(Magnitude Of(Vector(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Event Player)),
  • Horizontal Angle From Direction(Event Player.menuOriginalFacing)), Angle Difference(Vertical Angle From Direction(
  • Facing Direction Of(Event Player)), Vertical Angle From Direction(Event Player.menuOriginalFacing)), 0)) > 0.400);
  • Event Player.currActionID = 1 + Round To Integer((180 - Arctangent In Degrees(Angle Difference(Vertical Angle From Direction(
  • Facing Direction Of(Event Player)), Vertical Angle From Direction(Event Player.menuOriginalFacing)), Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Event Player)), Horizontal Angle From Direction(
  • Event Player.menuOriginalFacing)))) / (360 / Event Player.NumberOfSelections), Down);
  • Wait(0.016, Ignore Condition);
  • Event Player.currActionID = 0;
  • End;
  • Event Player.isInMenu = False;
  • }
  • }
  • rule("Select")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.currActionID != 0;
  • }
  • actions
  • {
  • If(Event Player.currActionID == 1);
  • Call Subroutine(Enemy);
  • Else If(Event Player.currActionID == 2);
  • Call Subroutine(TracesOfEnemy);
  • Else If(Event Player.currActionID == 3);
  • Call Subroutine(GoHere);
  • Else If(Event Player.currActionID == 4);
  • Call Subroutine(AttackHere);
  • Else If(Event Player.currActionID == 5);
  • Call Subroutine(DefendHere);
  • Else If(Event Player.currActionID == 6);
  • Call Subroutine(MonitorHere);
  • End;
  • End;
  • }
  • }
  • rule("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒a")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Enemy-Sub")
  • {
  • event
  • {
  • Subroutine;
  • Enemy;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.Effects[0]);
  • Destroy Icon(Event Player.Effects[1]);
  • Destroy In-World Text(Event Player.Effects[2]);
  • disabled Event Player.Effect_Active = True;
  • Create In-World Text(All Players(Team Of(Event Player)), Custom String("Enemy"), Event Player.Middle_Of_Effect, 1, Do Not Clip,
  • Visible To Position and String, Color(Red), Default Visibility);
  • Event Player.Effects[2] = Last Text ID;
  • Create Icon(All Players(Team Of(Event Player)), Event Player.Middle_Of_Effect, Exclamation Mark, Visible To and Position, Color(
  • Red), True);
  • Event Player.Effects[1] = Last Created Entity;
  • Event Player.Middle_Of_Effect = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 500, All Players(All Teams), Event Player, True);
  • Create Effect(All Players(All Teams), Sphere, Color(Red), Event Player.Middle_Of_Effect, 0.500, Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player.Middle_Of_Effect, 1);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Event Player, 99);
  • disabled Event Player.Effect_Active = False;
  • For Player Variable(Event Player, i, 0, 5, 1);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player.Middle_Of_Effect + Vector(0, 0.300, 0), 3);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Yellow), Event Player, 99);
  • Wait(0.100, Ignore Condition);
  • End;
  • }
  • }
  • rule("TracesOfEnemy-Sub")
  • {
  • event
  • {
  • Subroutine;
  • TracesOfEnemy;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.Effects[0]);
  • Destroy Icon(Event Player.Effects[1]);
  • Destroy In-World Text(Event Player.Effects[2]);
  • disabled Event Player.Effect_Active = True;
  • Create In-World Text(All Players(Team Of(Event Player)), Custom String("Traces of enemy"), Event Player.Middle_Of_Effect, 1,
  • Do Not Clip, Visible To Position and String, Color(Yellow), Default Visibility);
  • Event Player.Effects[2] = Last Text ID;
  • Create Icon(All Players(Team Of(Event Player)), Event Player.Middle_Of_Effect, Warning, Visible To and Position, Color(Yellow),
  • True);
  • Event Player.Effects[1] = Last Created Entity;
  • Event Player.Middle_Of_Effect = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 500, All Players(All Teams), Event Player, True);
  • Create Effect(All Players(All Teams), Sphere, Color(Yellow), Event Player.Middle_Of_Effect, 0.500, Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Event Player.Middle_Of_Effect, 1);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Yellow), Event Player, 99);
  • disabled Event Player.Effect_Active = False;
  • For Player Variable(Event Player, i, 0, 5, 1);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Event Player.Middle_Of_Effect + Vector(0, 0.300, 0), 3);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Yellow), Event Player, 99);
  • Wait(0.100, Ignore Condition);
  • End;
  • }
  • }
  • rule("GoHere-Sub")
  • {
  • event
  • {
  • Subroutine;
  • GoHere;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.Effects[0]);
  • Destroy Icon(Event Player.Effects[1]);
  • Destroy In-World Text(Event Player.Effects[2]);
  • disabled Event Player.Effect_Active = True;
  • Create In-World Text(All Players(Team Of(Event Player)), Custom String("Go here"), Event Player.Middle_Of_Effect, 1, Do Not Clip,
  • Visible To Position and String, Color(Green), Default Visibility);
  • Event Player.Effects[2] = Last Text ID;
  • Create Icon(All Players(Team Of(Event Player)), Event Player.Middle_Of_Effect, Diamond, Visible To and Position, Color(Green),
  • True);
  • Event Player.Effects[1] = Last Created Entity;
  • Event Player.Middle_Of_Effect = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 500, All Players(All Teams), Event Player, True);
  • Create Effect(All Players(All Teams), Sphere, Color(Green), Event Player.Middle_Of_Effect, 0.500, Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Green), Event Player.Middle_Of_Effect, 1);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Yellow), Event Player, 99);
  • disabled Event Player.Effect_Active = False;
  • For Player Variable(Event Player, i, 0, 5, 1);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Green), Event Player.Middle_Of_Effect + Vector(0, 0.300, 0), 3);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Yellow), Event Player, 99);
  • Wait(0.100, Ignore Condition);
  • End;
  • }
  • }
  • rule("AttackHere-Sub")
  • {
  • event
  • {
  • Subroutine;
  • AttackHere;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.Effects[0]);
  • Destroy Icon(Event Player.Effects[1]);
  • Destroy In-World Text(Event Player.Effects[2]);
  • disabled Event Player.Effect_Active = True;
  • Create In-World Text(All Players(Team Of(Event Player)), Custom String("Attack here"), Event Player.Middle_Of_Effect, 1,
  • Do Not Clip, Visible To Position and String, Color(Purple), Default Visibility);
  • Event Player.Effects[2] = Last Text ID;
  • Create Icon(All Players(Team Of(Event Player)), Event Player.Middle_Of_Effect, Bolt, Visible To and Position, Color(Purple), True);
  • Event Player.Effects[1] = Last Created Entity;
  • Event Player.Middle_Of_Effect = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 500, All Players(All Teams), Event Player, True);
  • Create Effect(All Players(All Teams), Sphere, Color(Purple), Event Player.Middle_Of_Effect, 0.500, Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Event Player.Middle_Of_Effect, 1);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Yellow), Event Player, 99);
  • disabled Event Player.Effect_Active = False;
  • For Player Variable(Event Player, i, 0, 5, 1);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Event Player.Middle_Of_Effect + Vector(0, 0.300, 0), 3);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Yellow), Event Player, 99);
  • Wait(0.100, Ignore Condition);
  • End;
  • }
  • }
  • rule("DefendHere-Sub")
  • {
  • event
  • {
  • Subroutine;
  • DefendHere;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.Effects[0]);
  • Destroy Icon(Event Player.Effects[1]);
  • Destroy In-World Text(Event Player.Effects[2]);
  • disabled Event Player.Effect_Active = True;
  • Create In-World Text(All Players(Team Of(Event Player)), Custom String("Defend here"), Event Player.Middle_Of_Effect, 1,
  • Do Not Clip, Visible To Position and String, Color(Blue), Default Visibility);
  • Event Player.Effects[2] = Last Text ID;
  • Create In-World Text(All Players(All Teams), Custom String("{0}", Ability Icon String(Hero(Reinhardt), Button(Secondary Fire))),
  • Event Player.Middle_Of_Effect + Vector(0, 0.500, 0), 1, Do Not Clip, Visible To Position and String, Color(Blue),
  • Default Visibility);
  • Create Icon(All Players(Team Of(Event Player)), Event Player.Middle_Of_Effect, Stop, Visible To and Position, Color(Blue), True);
  • Event Player.Effects[1] = Last Created Entity;
  • Event Player.Middle_Of_Effect = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 500, All Players(All Teams), Event Player, True);
  • Create Effect(All Players(All Teams), Sphere, Color(Blue), Event Player.Middle_Of_Effect, 0.500, Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Blue), Event Player.Middle_Of_Effect, 1);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Yellow), Event Player, 99);
  • disabled Event Player.Effect_Active = False;
  • For Player Variable(Event Player, i, 0, 5, 1);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Blue), Event Player.Middle_Of_Effect + Vector(0, 0.300, 0), 3);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Yellow), Event Player, 99);
  • Wait(0.100, Ignore Condition);
  • End;
  • }
  • }
  • rule("MonitoHere-Sub")
  • {
  • event
  • {
  • Subroutine;
  • MonitorHere;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.Effects[0]);
  • Destroy Icon(Event Player.Effects[1]);
  • Destroy In-World Text(Event Player.Effects[2]);
  • disabled Event Player.Effect_Active = True;
  • Create In-World Text(All Players(Team Of(Event Player)), Custom String("Monitor here"), Event Player.Middle_Of_Effect, 1,
  • Do Not Clip, Visible To Position and String, Color(Orange), Default Visibility);
  • Event Player.Effects[2] = Last Text ID;
  • Create Icon(All Players(Team Of(Event Player)), Event Player.Middle_Of_Effect, Question Mark, Visible To and Position, Color(
  • Orange), True);
  • Event Player.Effects[1] = Last Created Entity;
  • Event Player.Middle_Of_Effect = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 500, All Players(All Teams), Event Player, True);
  • Create Effect(All Players(All Teams), Sphere, Color(Orange), Event Player.Middle_Of_Effect, 0.500, Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Orange), Event Player.Middle_Of_Effect, 1);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Yellow), Event Player, 99);
  • disabled Event Player.Effect_Active = False;
  • For Player Variable(Event Player, i, 0, 5, 1);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Orange), Event Player.Middle_Of_Effect + Vector(0, 0.300, 0), 3);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Yellow), Event Player, 99);
  • Wait(0.100, Ignore Condition);
  • End;
  • }
  • }
Join the Workshop.codes Discord