Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "> Scoreboard by Caldoran (v8.2) > Interact + Space (Default: F + Space) to toggle scoreboard on/off as a player > Modify FOV + Disable Camera Blending (Default: Z + B) to toggle scoreboard on/off as Spectator (must be Host) > Check Workshop Settings page for easy configuration > Go to the Rule named Text Configuration to edit text displays"
  • Description: "▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ ▩▩▩▩ Scoreboard v8.30 ▩▩▩▩ ▩▩ workshop.codes/scoreboard ▩▩ ▩▩ Configure in Workshop Settings ▩▩ ▩▩Change text in Text Configuration ▩▩ ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩"
  • }
  • lobby
  • {
  • Map Rotation: After A Game
  • Max Spectators: 12
  • Pause Game On Player Disconnect: Yes
  • Return To Lobby: After A Game
  • }
  • modes
  • {
  • Assault
  • Control
  • {
  • Score To Win: 3
  • }
  • Escort
  • Hybrid
  • General
  • {
  • Competitive Rules: On
  • Kill Cam: Off
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • }
  • workshop
  • {
  • Enable Log Generator: On
  • }
  • }
  • variables
  • {
  • global:
  • 0: EnablePlayerToggle
  • 1: DisplayTeamNames
  • 2: DisplayPlayerTogglePrompt
  • 3: DisplayTitleMessage
  • 4: DisplayScoreboardLegend
  • 5: DisplayHeroSwaps
  • 6: DisplayTeamTotals
  • 7: DisplayPlayerNames
  • 8: DisplayOnFire
  • 9: TimeToDisplayNotices
  • 10: hudHideScoreboard
  • 11: redKills
  • 12: redDamage
  • 13: redHealing
  • 14: blueKills
  • 15: blueDamage
  • 16: blueHealing
  • 17: EnableDebugMode
  • 18: welcomePrompt
  • 19: togglePrompt
  • 20: gameIsInSetup
  • 21: gameNoticeArray
  • 22: tLegendTitle
  • 23: tLegendText
  • 24: tPlayerTogglePrompt
  • 25: tGameTitle
  • 26: gameNoticeTimerArray
  • 101: Logs_EnableLogTracker
  • 102: Logs_OutputFormat
  • 103: Logs_CurrentObjectiveIndex
  • 104: Logs_CurrentControlScoringTeam
  • 105: Logs_TrackKills
  • 106: Logs_TrackHeroSwaps
  • 107: Logs_TrackObjectiveCapture
  • 108: Logs_TrackAbilities
  • 109: Logs_TrackUltimates
  • 110: Logs_TrackOffensiveAssists
  • 111: Logs_TrackDefensiveAssists
  • 112: Logs_TrackDamage
  • 113: Logs_TrackHealing
  • 114: Logs_TrackDvaDemechs
  • 115: Logs_TrackEchoDuplicates
  • 116: Logs_TrackRoundStartEnd
  • 117: Logs_TrackMatchStartEnd
  • 118: Logs_EnablePlayerSummary
  • 119: Logs_PlayerSummaryCount
  • player:
  • 0: playerName
  • 1: eliminations
  • 2: currentHero
  • 3: finalBlows
  • 4: deaths
  • 5: damageDealt
  • 6: damageTaken
  • 7: healingDone
  • 8: healingTaken
  • 9: hudTextNormal
  • 10: hudTextSetup
  • 11: displayScoreboard
  • 101: Logs_LastHero
  • 102: Logs_OffensiveAssists
  • 103: Logs_DefensiveAssists
  • 104: Logs_HeroesPlayedArray
  • 105: Logs_CurrentHeroIterator
  • 106: Logs_CurrentHeroIterated
  • }
  • rule("Parameter Configuration")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.EnablePlayerToggle = Workshop Setting Toggle(Custom String("Player Options"), Custom String(
  • "Allow players to toggle the scoreboard on/off"), True, 0);
  • Global.DisplayScoreboardLegend = Workshop Setting Toggle(Custom String("Text Display Options"), Custom String(
  • "Display Scoreboard Legend"), True, 0);
  • Global.DisplayTitleMessage = Workshop Setting Toggle(Custom String("Text Display Options"), Custom String("Display Title Message"),
  • True, 0);
  • Global.DisplayPlayerTogglePrompt = Workshop Setting Toggle(Custom String("Text Display Options"), Custom String(
  • "Display Player Toggle Prompt"), True, 0);
  • Global.DisplayPlayerNames = Workshop Setting Toggle(Custom String("Scoreboard Display Options"), Custom String(
  • "Display Player Names"), True, 0);
  • Global.DisplayOnFire = Workshop Setting Toggle(Custom String("Scoreboard Display Options"), Custom String(
  • "Display Player on Fire Status"), True, 0);
  • Global.DisplayTeamNames = Workshop Setting Toggle(Custom String("Scoreboard Display Options"), Custom String("Display Team Names"),
  • True, 0);
  • Global.DisplayTeamTotals = Workshop Setting Toggle(Custom String("Scoreboard Display Options"), Custom String(
  • "Display Team Stat Totals"), True, 0);
  • Global.DisplayHeroSwaps = Workshop Setting Toggle(Custom String("Extra Display Options"), Custom String("Display Hero Swaps"),
  • True, 0);
  • Global.TimeToDisplayNotices = Workshop Setting Integer(Custom String("Extra Display Options"), Custom String(
  • "Time to Display Hero Swaps (Seconds)"), 3, 1, 10, 0);
  • Global.EnableDebugMode = Workshop Setting Toggle(Custom String("Debug Options"), Custom String("Enable Debug Mode"), False, 0);
  • Global.gameNoticeArray = Empty Array;
  • Global.gameNoticeTimerArray = Empty Array;
  • If(Global.EnableDebugMode != True);
  • Disable Inspector Recording;
  • End;
  • }
  • }
  • rule("Text Configuration")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.tLegendTitle = Custom String("Scoreboard");
  • Global.tLegendText = Custom String("K / A / D / DMG / DMG (T) / HP / HP (T)");
  • Global.tGameTitle = Custom String("Tournament X");
  • Global.tPlayerTogglePrompt = Custom String("Press Interact + Jump to toggle the Scoreboard on and off");
  • }
  • }
  • rule("Player Setup")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Event Player.currentHero = Null;
  • }
  • }
  • rule("Create Title and Scoreboard Prompt")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • }
  • actions
  • {
  • If(Global.DisplayTitleMessage == True);
  • Create HUD Text(All Players(All Teams), Null, Null, Global.tGameTitle, Top, 1, Color(White), Color(White), Color(Yellow), None,
  • Visible Always);
  • Global.welcomePrompt = Last Text ID;
  • End;
  • If(Global.EnablePlayerToggle == True && Global.DisplayPlayerTogglePrompt == True);
  • Create HUD Text(All Players(All Teams), Null, Null, Global.tPlayerTogglePrompt, Top, 2, Color(White), Color(White), Color(White),
  • None, Visible Never);
  • Global.togglePrompt = Last Text ID;
  • End;
  • Wait(Match Time, Ignore Condition);
  • Destroy HUD Text(Global.welcomePrompt);
  • Destroy HUD Text(Global.togglePrompt);
  • }
  • }
  • rule("Create Scoreboard Legend")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • If(Global.DisplayScoreboardLegend == True);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.displayScoreboard == True), Null, Global.tLegendTitle,
  • Null, Left, 0, Color(White), Color(Yellow), Color(Yellow), Visible To, Visible Always);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.displayScoreboard == True), Null, Global.tLegendText,
  • Null, Left, 0.500, Color(Blue), Color(White), Color(White), Visible To, Visible Always);
  • End;
  • }
  • }
  • rule("Create Team Names and Team Totals")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • If(Global.DisplayTeamNames == True);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.displayScoreboard == True), Team 1, Null, Null, Left,
  • 1, Color(Blue), Color(White), Color(White), Visible To, Visible Always);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.displayScoreboard == True), Team 2, Null, Null, Left,
  • 8, Color(Red), Color(White), Color(White), Visible To, Visible Always);
  • If(Global.DisplayTeamTotals == True);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.displayScoreboard == True), Null, Custom String(
  • "Total: {0} / {1} / {2}", Custom String("{0} Kills", Global.blueKills), Custom String("{0} Damage", Round To Integer(
  • Global.blueDamage, To Nearest)), Custom String("{0} Healing", Round To Integer(Global.blueHealing, To Nearest))), Null, Left,
  • 1.500, Color(White), Color(White), Color(White), Visible To and String, Visible Always);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.displayScoreboard == True), Null, Custom String(
  • "Total: {0} / {1} / {2}", Custom String("{0} Kills", Global.redKills), Custom String("{0} Damage", Round To Integer(
  • Global.redDamage, To Nearest)), Custom String("{0} Healing", Round To Integer(Global.redHealing, To Nearest))), Null, Left,
  • 8.500, Color(White), Color(White), Color(White), Visible To and String, Visible Always);
  • End;
  • End;
  • }
  • }
  • rule("Create Player Scoreboard")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • If(Global.DisplayPlayerNames == True);
  • Event Player.playerName = Event Player;
  • Else;
  • Event Player.playerName = Empty Array;
  • End;
  • If(Global.EnablePlayerToggle == True);
  • Create HUD Text(Filtered Array(All Players(All Teams),
  • Global.gameIsInSetup == True && Current Array Element.displayScoreboard == True), Custom String(" "),
  • Event Player.playerName, Custom String("{0} / {1} / {2}", Custom String("{0} / {1} / {2}", Event Player.finalBlows,
  • Event Player.eliminations - Event Player.finalBlows, Event Player.deaths), Custom String("{0} / {1}", Round To Integer(
  • Event Player.damageDealt, To Nearest), Round To Integer(Event Player.damageTaken, Up)), Custom String("{0} / {1}",
  • Round To Integer(Event Player.healingDone, To Nearest), Round To Integer(Event Player.healingTaken, To Nearest))), Left,
  • Slot Of(Event Player) + (Team Of(Event Player) == Team 1 ? 2 : 9), Team Of(Event Player) == Team 1 ? Color(Blue) : Color(Red),
  • Color(Yellow), Color(White), Visible To and String, Visible Never);
  • Event Player.hudTextSetup = Last Text ID;
  • End;
  • Create HUD Text(Filtered Array(All Players(All Teams),
  • Global.gameIsInSetup == False && Current Array Element.displayScoreboard == True), Hero Icon String(Hero Of(Event Player)),
  • Event Player.playerName, Custom String("{0} / {1} / {2}", Custom String("{0} / {1} / {2}", Event Player.finalBlows,
  • Event Player.eliminations - Event Player.finalBlows, Event Player.deaths), Custom String("{0} / {1}", Round To Integer(
  • Event Player.damageDealt, To Nearest), Round To Integer(Event Player.damageTaken, Up)), Custom String("{0} / {1}",
  • Round To Integer(Event Player.healingDone, To Nearest), Round To Integer(Event Player.healingTaken, To Nearest))), Left,
  • Slot Of(Event Player) + (Team Of(Event Player) == Team 1 ? 2 : 9), Team Of(Event Player) == Team 1 ? Color(Blue) : Color(Red),
  • Color(Yellow), Color(White), Visible To and String, Visible Always);
  • Event Player.hudTextNormal = Last Text ID;
  • }
  • }
  • rule("Player Toggle Scoreboard")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Global.EnablePlayerToggle == True;
  • }
  • actions
  • {
  • Event Player.displayScoreboard = Event Player.displayScoreboard ? False : True;
  • Small Message(Event Player, Custom String("Scoreboard {0}", Event Player.displayScoreboard ? Custom String("On") : Custom String(
  • "Off")));
  • Play Effect(Event Player, Ring Explosion Sound, Color(White), Event Player, 100);
  • Wait Until(!Is Button Held(Event Player, Button(Interact)), 99999);
  • }
  • }
  • rule("Host Spectator Toggle Scoreboard")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Team Of(Host Player) == All Teams;
  • Is Button Held(Host Player, Button(Ultimate)) == True;
  • Is Button Held(Host Player, Button(Jump)) == True;
  • }
  • actions
  • {
  • If(Global.hudHideScoreboard == Null);
  • Small Message(All Players(All Teams), Custom String("Host Toggled Scoreboard Off"));
  • Create HUD Text(Host Player, Null, Null, Custom String(
  • " \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"),
  • Left, 0, Color(White), Color(White), Color(White), Visible To and String, Visible Always);
  • Global.hudHideScoreboard = Last Text ID;
  • Else;
  • Small Message(All Players(All Teams), Custom String("Host Toggled Scoreboard On"));
  • Destroy HUD Text(Global.hudHideScoreboard);
  • Global.hudHideScoreboard = Null;
  • End;
  • Wait Until(Is Button Held(Host Player, Button(Ultimate)), 99999);
  • }
  • }
  • rule("Auto Toggle Scoreboard (Hide Heroes)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • Global.EnablePlayerToggle == True;
  • }
  • actions
  • {
  • Global.gameIsInSetup = True;
  • Wait(15 + Match Time, Ignore Condition);
  • Global.gameIsInSetup = False;
  • }
  • }
  • rule("Add Final Blows")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Event Player.finalBlows += 1;
  • If(Team Of(Event Player) == Team 1);
  • Global.blueKills += 1;
  • Else;
  • Global.redKills += 1;
  • End;
  • }
  • }
  • rule("Add Eliminations")
  • {
  • event
  • {
  • Player Earned Elimination;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Event Player.eliminations += 1;
  • }
  • }
  • rule("Add Deaths")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Event Player.deaths += 1;
  • }
  • }
  • rule("Add Damage Dealt / Damage Received")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Attacker != Victim;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Attacker.damageDealt += Event Damage;
  • Victim.damageTaken += Event Damage;
  • If(Team Of(Event Player) == Team 1);
  • Global.blueDamage += Event Damage;
  • Else;
  • Global.redDamage += Event Damage;
  • End;
  • }
  • }
  • rule("Add Healing Dealt and Healing Received")
  • {
  • event
  • {
  • Player Dealt Healing;
  • All;
  • All;
  • }
  • conditions
  • {
  • Healer != Healee;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Healer.healingDone += Event Healing;
  • Healee.healingTaken += Event Healing;
  • If(Team Of(Event Player) == Team 1);
  • Global.blueHealing += Event Healing;
  • Else;
  • Global.redHealing += Event Healing;
  • End;
  • }
  • }
  • rule("On Fire Notice (On)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Portrait On Fire(Event Player) == True;
  • Global.DisplayPlayerNames == True;
  • Global.DisplayOnFire == True;
  • }
  • actions
  • {
  • Event Player.playerName = Custom String("{0} {1}", Event Player, Icon String(Fire));
  • }
  • }
  • rule("On Fire Notice (Off)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Portrait On Fire(Event Player) == False;
  • Global.DisplayPlayerNames == True;
  • Global.DisplayOnFire == True;
  • }
  • actions
  • {
  • Event Player.playerName = Event Player;
  • }
  • }
  • rule("Create Hero Swap Notice")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.DisplayHeroSwaps == True;
  • Hero Of(Event Player) != Event Player.currentHero;
  • Array Contains(All Heroes, Hero Of(Event Player)) == True;
  • }
  • actions
  • {
  • If(Event Player.currentHero != Null);
  • If(Team Of(Event Player) == Team 1);
  • Create HUD Text(Null, Null, Null, String("{0} {1}", Event Player, String("{0} {1} {2}", Hero Icon String(Event Player.currentHero),
  • Icon String(Recycle), Hero Icon String(Hero Of(Event Player)))), Top, 10, Color(White), Color(White), Color(Blue), None,
  • Visible Always);
  • Else;
  • Create HUD Text(Null, Null, Null, String("{0} {1}", Event Player, String("{0} {1} {2}", Hero Icon String(Event Player.currentHero),
  • Icon String(Recycle), Hero Icon String(Hero Of(Event Player)))), Top, 10, Color(White), Color(White), Color(Red), None,
  • Visible Always);
  • End;
  • Modify Global Variable(gameNoticeArray, Append To Array, Last Text ID);
  • Modify Global Variable(gameNoticeTimerArray, Append To Array, Round To Integer(Total Time Elapsed, Up)
  • + Global.TimeToDisplayNotices);
  • End;
  • Wait(0.016, Ignore Condition);
  • Event Player.currentHero = Hero Of(Event Player);
  • }
  • }
  • rule("Clear Game Notices")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Array Contains(Global.gameNoticeTimerArray, Round To Integer(Total Time Elapsed, Up)) == True;
  • }
  • actions
  • {
  • While(Count Of(Filtered Array(Global.gameNoticeTimerArray, Round To Integer(Total Time Elapsed, Up) == Current Array Element))
  • == True);
  • Destroy HUD Text(Global.gameNoticeArray[0]);
  • Modify Global Variable(gameNoticeArray, Remove From Array By Index, 0);
  • Modify Global Variable(gameNoticeTimerArray, Remove From Array By Index, 0);
  • End;
  • }
  • }
  • rule("Debug Messages")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • If(Global.EnableDebugMode == True);
  • Create HUD Text(All Players(All Teams), Server Load, Custom String("Server Load"), Null, Left, 999, Color(White), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Server Load Average, Custom String("Server Load Average"), Null, Left, 999, Color(White),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Server Load Peak, Custom String("Server Load Peak"), Null, Left, 999, Color(White), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • End;
  • }
  • }
  • rule("Debug Hero Swap Test")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.EnableDebugMode == True;
  • }
  • actions
  • {
  • Start Forcing Player To Be Hero(Attacker, Random Value In Array(All Heroes));
  • }
  • }
  • rule("Settings: Log Options")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Logs_EnableLogTracker = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Enable Log Generator"),
  • False, 0);
  • Global.Logs_OutputFormat = Workshop Setting Combo(Custom String("Log Generator"), Custom String("Output Format"), 0, Array(
  • Custom String("CSV")), 1);
  • Global.Logs_TrackKills = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Kills and Deaths"), True, 2);
  • Global.Logs_TrackOffensiveAssists = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Offensive Assists"),
  • True, 3);
  • Global.Logs_TrackDefensiveAssists = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Defensive Assists"),
  • True, 4);
  • Global.Logs_TrackHeroSwaps = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Hero Swaps"), True, 5);
  • Global.Logs_TrackUltimates = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Ultimates"), True, 6);
  • Global.Logs_TrackAbilities = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Abilities*"), True, 7);
  • Global.Logs_TrackDamage = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Damage*"), True, 8);
  • Global.Logs_TrackHealing = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Healing*"), True, 9);
  • Global.Logs_TrackDvaDemechs = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("D.Va Demechs & Remechs"),
  • True, 10);
  • Global.Logs_TrackEchoDuplicates = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Echo Duplicates"), True,
  • 11);
  • Global.Logs_TrackMatchStartEnd = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Match Start & End"), True,
  • 12);
  • Global.Logs_TrackRoundStartEnd = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Round Start & End"), True,
  • 13);
  • Global.Logs_TrackObjectiveCapture = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Objective Captures"),
  • True, 14);
  • Global.Logs_EnablePlayerSummary = Workshop Setting Toggle(Custom String("Log Generator"), Custom String(
  • "End-of-Match Player Summary"), True, 15);
  • }
  • }
  • rule("Init: Match")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • If(!Global.EnableDebugMode && !Global.Logs_EnableLogTracker);
  • Disable Inspector Recording;
  • End;
  • }
  • }
  • rule("Init: Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Event Player.Logs_HeroesPlayedArray = Empty Array;
  • }
  • }
  • rule("Logs: Match Start")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Match Round == 1;
  • }
  • actions
  • {
  • If(Global.Logs_TrackMatchStartEnd);
  • Log To Inspector(Custom String(",match_start,{0},{1}", Custom String("{0},{1},{2}", Total Time Elapsed, Current Map,
  • Current Game Mode), Custom String("{0},{1}", Team 1, Team 2)));
  • End;
  • }
  • }
  • rule("Logs: Round Start")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Is In Setup == True;
  • }
  • actions
  • {
  • Global.Logs_CurrentControlScoringTeam = All Teams;
  • Global.Logs_CurrentObjectiveIndex = Objective Index;
  • If(Global.Logs_TrackRoundStartEnd == True);
  • Log To Inspector(Custom String(",round_start,{0},{1}", Custom String("{0},{1}", Total Time Elapsed, Match Round), Custom String(
  • "{0},{1},{2}", Team Score(Team 1), Team Score(Team 2), Objective Index)));
  • Wait Until(Is Game In Progress, 99999);
  • Log To Inspector(Custom String(",setup_complete,{0}", Custom String("{0},{1}", Total Time Elapsed, Match Round)));
  • End;
  • }
  • }
  • rule("Logs: Objective Captured (Non-Control)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackObjectiveCapture == True;
  • Is Game In Progress == True;
  • Current Game Mode != Game Mode(Control);
  • Is Objective Complete(Global.Logs_CurrentObjectiveIndex) == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",objective_captured,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String(
  • "{0},{1}", Is Team On Offense(Team 1) ? Team 1 : Team 2, Objective Index), Custom String("{0},{1}")));
  • Global.Logs_CurrentObjectiveIndex = Objective Index;
  • }
  • }
  • rule("Logs: Objective Captured (Control)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackObjectiveCapture == True;
  • Is Game In Progress == True;
  • Current Game Mode == Game Mode(Control);
  • Control Mode Scoring Team != Global.Logs_CurrentControlScoringTeam;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",objective_captured,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String(
  • "{0},{1}", Control Mode Scoring Team, Objective Index), Custom String("{0},{1}", Control Mode Scoring Percentage(Team 1),
  • Control Mode Scoring Percentage(Team 2))));
  • Global.Logs_CurrentControlScoringTeam = Control Mode Scoring Team;
  • }
  • }
  • rule("Logs: Round Complete")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackRoundStartEnd == True;
  • Is Between Rounds == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",round_end,{0},{1},{2}", Custom String("{0},{1}", Total Time Elapsed, Match Round), Custom String(
  • "{0},{1}", Team Score(Team 1), Team Score(Team 2)), Custom String("{0},{1},{2}", Objective Index,
  • Control Mode Scoring Percentage(Team 1), Control Mode Scoring Percentage(Team 2))));
  • }
  • }
  • rule("Logs: Match Complete")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Is Match Complete == True;
  • }
  • actions
  • {
  • Wait Until(!Global.Logs_EnablePlayerSummary || Global.Logs_PlayerSummaryCount == Count Of(All Players(All Teams)), 99999);
  • If(Global.Logs_TrackMatchStartEnd);
  • Log To Inspector(Custom String(",match_end,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String("{0}", Team Score(
  • Team 1)), Custom String("{0}", Team Score(Team 2))));
  • End;
  • }
  • }
  • rule("Logs: End-of-Match Player Summary")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_EnablePlayerSummary == True;
  • Is Match Complete == True;
  • }
  • actions
  • {
  • For Player Variable(Event Player, Logs_CurrentHeroIterator, 0, Count Of(Event Player.Logs_HeroesPlayedArray), 1);
  • Event Player.Logs_CurrentHeroIterated = Event Player.Logs_HeroesPlayedArray[Event Player.Logs_CurrentHeroIterator];
  • Log To Inspector(Custom String(",player_stat,{0},{1},{2}", Total Time Elapsed, Custom String("{0},{1},{2}", Team Of(Event Player),
  • Event Player, Event Player.Logs_CurrentHeroIterated), Custom String("{0},{1}", Custom String("{0},{1},{2}", Custom String(
  • "{0},{1},{2}", Custom String("{0},{1},{2}", Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Eliminations), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Final Blows), Player Hero Stat(
  • Event Player, Event Player.Logs_CurrentHeroIterated, Deaths)), Custom String("{0},{1},{2}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, All Damage Dealt), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Barrier Damage Dealt), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Hero Damage Dealt)),
  • Custom String("{0},{1},{2}", Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Healing Dealt),
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Healing Received), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Self Healing))), Custom String("{0},{1},{2}", Custom String("{0},{1}", Player Hero Stat(
  • Event Player, Event Player.Logs_CurrentHeroIterated, Damage Taken), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Damage Blocked)), Custom String("{0},{1}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Defensive Assists), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Offensive Assists)), Custom String("{0},{1}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Ultimates Earned), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Ultimates Used))), Custom String("{0},{1}", Custom String("{0},{1},{2}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Multikill Best), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Multikills), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Solo Kills)), Custom String("{0},{1},{2}",
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Objective Kills), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Environmental Kills), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Environmental Deaths)))), Custom String("{0},{1}", Custom String("{0},{1},{2}",
  • Custom String("{0},{1}", Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Critical Hits),
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Critical Hit Accuracy)), Custom String("{0},{1},{2}",
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Scoped Accuracy), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Scoped Critical Hit Accuracy), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Scoped Critical Hit Kills)), Custom String("{0},{1},{2}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Shots Fired), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Shots Hit), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Shots Missed))), Custom String("{0}",
  • Custom String("{0},{1},{2}", Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Scoped Shots),
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Scoped Hits), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Weapon Accuracy)))))));
  • End;
  • Global.Logs_PlayerSummaryCount += 1;
  • }
  • }
  • rule("Logs: Kills")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackKills == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",kill,{0},{1}", Total Time Elapsed, Custom String("{0},{1},{2}", Custom String("{0},{1},{2}",
  • Team Of(Attacker), Attacker, Hero Of(Attacker)), Custom String("{0},{1},{2}", Team Of(Victim), Victim, Hero Of(Victim)),
  • Custom String("{0},{1},{2}", Custom String("{0},{1}", Event Ability, Event Damage), Event Was Critical Hit,
  • Event Was Environment))));
  • }
  • }
  • rule("Logs: Hero Swap")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackHeroSwaps == True;
  • Hero Of(Event Player) != Event Player.Logs_LastHero;
  • Is Match Complete == False;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",hero_swap,{0},{1},{2}", Total Time Elapsed, Custom String("{0},{1}", Team Of(Event Player),
  • Event Player), Custom String("{0},{1}", Hero Of(Event Player), Event Player.Logs_LastHero)));
  • If(!Array Contains(Event Player.Logs_HeroesPlayedArray, Hero Of(Event Player)) && Array Contains(All Heroes, Hero Of(
  • Event Player)));
  • Modify Player Variable(Event Player, Logs_HeroesPlayedArray, Append To Array, Hero Of(Event Player));
  • End;
  • Event Player.Logs_LastHero = Hero Of(Event Player);
  • }
  • }
  • rule("Logs: Damage")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackDamage == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",damage,{0},{1}", Total Time Elapsed, Custom String("{0},{1},{2}", Custom String("{0},{1},{2}",
  • Team Of(Attacker), Attacker, Hero Of(Attacker)), Custom String("{0},{1},{2}", Team Of(Victim), Victim, Hero Of(Victim)),
  • Custom String("{0},{1},{2}", Custom String("{0},{1}", Event Ability, Event Damage), Event Was Critical Hit,
  • Event Was Environment))));
  • }
  • }
  • rule("Logs: Healing")
  • {
  • event
  • {
  • Player Received Healing;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackHealing == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",healing,{0},{1}", Total Time Elapsed, Custom String("{0},{1},{2}", Custom String("{0},{1},{2}",
  • Team Of(Healer), Healer, Hero Of(Healer)), Custom String("{0},{1},{2}", Team Of(Healee), Healee, Hero Of(Healee)),
  • Custom String("{0},{1},{2}", Event Ability, Event Healing, Event Was Health Pack))));
  • }
  • }
  • rule("Logs: Offensive Assists")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackOffensiveAssists == True;
  • Event Player.Logs_OffensiveAssists < Player Stat(Event Player, Offensive Assists);
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",offensive_assist,{0},{1}", Custom String("{0}", Total Time Elapsed), Custom String("{0},{1},{2}",
  • Team Of(Event Player), Event Player, Hero Of(Event Player))));
  • Event Player.Logs_OffensiveAssists += 1;
  • Loop If Condition Is True;
  • }
  • }
  • rule("Logs: Defensive Assists")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackDefensiveAssists == True;
  • Event Player.Logs_DefensiveAssists < Player Stat(Event Player, Defensive Assists);
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",defensive_assist,{0},{1}", Custom String("{0}", Total Time Elapsed), Custom String("{0},{1},{2}",
  • Team Of(Event Player), Event Player, Hero Of(Event Player))));
  • Event Player.Logs_DefensiveAssists += 1;
  • Loop If Condition Is True;
  • }
  • }
  • rule("Logs: Ability 1 Used")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackAbilities == True;
  • Is Using Ability 1(Event Player) == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",ability_1_used,{0},{1}", Custom String("{0}", Total Time Elapsed), Custom String("{0},{1},{2}",
  • Team Of(Event Player), Event Player, Hero Of(Event Player))));
  • }
  • }
  • rule("Logs: Ability 2 Used")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackAbilities == True;
  • Is Using Ability 2(Event Player) == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",ability_2_used,{0},{1}", Custom String("{0}", Total Time Elapsed), Custom String("{0},{1},{2}",
  • Team Of(Event Player), Event Player, Hero Of(Event Player))));
  • }
  • }
  • rule("Logs: Ultimate Charged")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackUltimates == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",ultimate_charged,{0},{1}", Custom String("{0}", Total Time Elapsed), Custom String("{0},{1},{2}",
  • Team Of(Event Player), Event Player, Hero Of(Event Player))));
  • }
  • }
  • rule("Logs: Ultimate Used")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackUltimates == True;
  • Is Using Ultimate(Event Player) == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • If(Global.Logs_TrackDvaDemechs && Hero Of(Event Player) == Hero(D.Va));
  • Wait(1.740, Ignore Condition);
  • If(!Is In Alternate Form(Event Player));
  • Log To Inspector(Custom String(",dva_remech,{0},{1}", Custom String("{0}", Total Time Elapsed), Custom String("{0},{1},{2}",
  • Team Of(Event Player), Event Player, Hero Of(Event Player))));
  • Else;
  • Log To Inspector(Custom String(",ultimate_used,{0},{1}", Custom String("{0}", Total Time Elapsed), Custom String("{0},{1},{2}",
  • Team Of(Event Player), Event Player, Hero Of(Event Player))));
  • End;
  • Else;
  • Log To Inspector(Custom String(",ultimate_used,{0},{1}", Custom String("{0}", Total Time Elapsed), Custom String("{0},{1},{2}",
  • Team Of(Event Player), Event Player, Hero Of(Event Player))));
  • End;
  • }
  • }
  • rule("Logs: Echo Duplicate")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackEchoDuplicates == True;
  • Is Duplicating(Event Player) == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",echo_duplicate_start,{0},{1},{2}", Total Time Elapsed, Custom String("{0},{1},{2}", Team Of(
  • Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(Event Player))));
  • Wait Until(!Is Duplicating(Event Player), 99999);
  • Log To Inspector(Custom String(",echo_duplicate_end,{0},{1}", Total Time Elapsed, Custom String("{0},{1},{2}", Team Of(
  • Event Player), Event Player, Hero Of(Event Player))));
  • }
  • }
  • rule("Logs: D.Va Demech")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackDvaDemechs == True;
  • Is In Alternate Form(Event Player) == False;
  • Health(Event Player) == 0.020;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",dva_demech,{0},{1}", Total Time Elapsed, Custom String("{0},{1},{2}", Custom String("{0},{1},{2}",
  • Team Of(Attacker), Attacker, Hero Of(Attacker)), Custom String("{0},{1},{2}", Team Of(Victim), Victim, Hero Of(Victim)),
  • Custom String("{0},{1},{2}", Custom String("{0},{1}", Event Ability, Event Damage), Event Was Critical Hit,
  • Event Was Environment))));
  • }
  • }
Join the Workshop.codes Discord