Return to post
- 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;
- }
- }