Create
Return to post

Comparing difference between and

View raw
  • variables
  • {
  • global:
  • 26: cfg_CamDistance
  • 27: cfg_CamRaycastsEyePos
  • 28: cfg_CamHasCrosshairCorrection
  • 29: cfg_CamOverridesGame
  • 30: cfg_CamOverridesEmotes
  • 31: cfg_CamOffset
  • 32: cfg_CamAimDistance
  • 33: cfg_CamBlendSpeed
  • 34: cfg_ScopesDisableCam
  • 35: cfg_StartWithCamActive
  • 114: cfg_CamDistance
  • 115: cfg_CamRaycastsEyePos
  • 116: cfg_CamHasCrosshairCorrection
  • 117: cfg_CamOverridesGame
  • 118: cfg_CamOverridesEmotes
  • 119: cfg_CamOffset
  • 120: cfg_CamAimDistance
  • 121: cfg_CamBlendSpeed
  • 122: cfg_ScopesDisableCam
  • 123: cfg_StartWithCamActive
  • player:
  • 26: plyr_CamDistance
  • 27: plyr_CamRaycastsEyePos
  • 28: plyr_CamHasCrosshairCorrection
  • 29: plyr_CamOverridesGame
  • 30: plyr_CamOverridesEmotes
  • 31: plyr_CamOffset
  • 32: plyr_CamAimDistance
  • 33: plyr_CamActive
  • 34: plyr_CamBlendSpeed
  • 35: plyr_ScopesDisableCam
  • 107: plyr_CamDistance
  • 108: plyr_CamRaycastsEyePos
  • 109: plyr_CamHasCrosshairCorrection
  • 110: plyr_CamOverridesGame
  • 111: plyr_CamOverridesEmotes
  • 112: plyr_CamOffset
  • 113: plyr_CamAimDistance
  • 114: plyr_CamActive
  • 115: plyr_CamBlendSpeed
  • 116: plyr_ScopesDisableCam
  • }
  • subroutines
  • {
  • 8: StartPlayerCam
  • 9: StopPlayerCam
  • 10: StartAllCams
  • 11: StopAllCams
  • 12: ResetPlayerCamSettings
  • 14: RefreshCam
  • 112: StartPlayerCam
  • 113: StopPlayerCam
  • 114: StartAllCams
  • 115: StopAllCams
  • 116: ResetPlayerCamSettings
  • 117: RefreshCam
  • }
  • rule("Configuration")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • "Controls how far behind the player's head camera will be."
  • Global.cfg_CamDistance = Workshop Setting Real(Custom String("3p camera position"), Custom String("Distance from eye position"), 1,
  • 0, 100);
  • 0, 100, 1);
  • "Determines whether the camera will check for surfaces behind the player. Setting this to False can reduce server load, but may result in the camera clipping into terrain."
  • Global.cfg_CamRaycastsEyePos = Workshop Setting Toggle(Custom String("3p camera settings"), Custom String(
  • "Camera raycasts eye position (may increase server load)"), True);
  • "Camera raycasts eye position (may increase server load)"), True, 3);
  • "Controls the offset of the camera from the player's facing direction. X affects the left/right offset, Y controls the up/down offset, and Z controls the forward/back offset. Any X or Y offset can result in misalignment of the player crosshair."
  • Global.cfg_CamOffset = Vector(Workshop Setting Real(Custom String("3p camera position"), Custom String(
  • "X offset (positive = left, negative = right)"), -0.500, -100, 100), Workshop Setting Real(Custom String("3p camera position"),
  • Custom String("Y offset (positive = up, negative = down)"), 0, -100, 100), Workshop Setting Real(Custom String(
  • "3p camera position"), Custom String("Z offset (positive = forward, negative = backward)"), 0, -100, 100));
  • "X offset (positive = left, negative = right)"), -0.500, -100, 100, 2), Workshop Setting Real(Custom String(
  • "3p camera position"), Custom String("Y offset (positive = up, negative = down)"), 0, -100, 100, 3), Workshop Setting Real(
  • Custom String("3p camera position"), Custom String("Z offset (positive = forward, negative = backward)"), 0, -100, 100, 4));
  • "Determines whether or not the camera will attempt to place the crosshair directly over what the hero is aiming at. Setting this to True will increase server load. Aim may also feel somewhat jittery, especially when cfg_CamOffset is large."
  • Global.cfg_CamHasCrosshairCorrection = Workshop Setting Toggle(Custom String("3p camera settings"), Custom String(
  • "Crosshair correction (may cause jitter/increase server load)"), False);
  • "Crosshair correction (may cause jitter/increase server load)"), False, 4);
  • "Determines the distance at which the crosshair will be exactly accurate to the hero's target. If set to 0, the crosshair aiming line will be parallel to the hero aiming line. (If cfg_CamCrosshairCorrection is enabled, this setting is ignored.)"
  • Global.cfg_CamAimDistance = Workshop Setting Real(Custom String("3p camera settings"), Custom String(
  • "Aim convergence distance (overriden by crosshair correction)"), 0, 50, 1000);
  • "Aim convergence distance (overriden by crosshair correction)"), 0, 50, 1000, 1);
  • "Controls the blend speed of the camera."
  • Global.cfg_CamBlendSpeed = Workshop Setting Real(Custom String("3p camera settings"), Custom String("Blend speed"), 75, 0, 1000);
  • Global.cfg_CamBlendSpeed = Workshop Setting Real(Custom String("3p camera settings"), Custom String("Blend speed"), 75, 0, 1000,
  • 2);
  • "Determines whether the camera will override the game's native third person cameras, such as Reinhardt's shield or Hammond's ball form."
  • Global.cfg_CamOverridesGame = Workshop Setting Toggle(Custom String("3p camera settings"), Custom String(
  • "Native 3p override (such as Reinhardt's Shield or Hammond's Ball form)"), True);
  • "Native 3p override (such as Reinhardt's Shield or Hammond's Ball form)"), True, 6);
  • "Determines whether or not the camera will override the third person emoting camera."
  • Global.cfg_CamOverridesEmotes = Workshop Setting Toggle(Custom String("3p camera settings"), Custom String("Emote override"),
  • True);
  • Global.cfg_CamOverridesEmotes = Workshop Setting Toggle(Custom String("3p camera settings"), Custom String("Emote override"), True,
  • 5);
  • "Determines whether scopes such as Ana's, Widow's, or Ashe's disable the camera."
  • Global.cfg_ScopesDisableCam = Workshop Setting Toggle(Custom String("3p camera settings"), Custom String("Scopes disable camera"),
  • True);
  • True, 8);
  • Global.cfg_StartWithCamActive = Workshop Setting Toggle(Custom String("3p camera settings"), Custom String(
  • "Players start with camera on"), True);
  • "Players start with camera on"), True, 7);
  • }
  • }
  • rule("Start cams")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.cfg_StartWithCamActive == True;
  • }
  • actions
  • {
  • Call Subroutine(ResetPlayerCamSettings);
  • Call Subroutine(StartPlayerCam);
  • }
  • }
  • rule("[Subroutine] StartPlayerCam")
  • {
  • event
  • {
  • Subroutine;
  • StartPlayerCam;
  • }
  • actions
  • {
  • "Activates a particular player's camera. Make sure not to call this subroutine from a Global rule."
  • Event Player.plyr_CamActive = True;
  • }
  • }
  • rule("[Subroutine] StopPlayerCam")
  • {
  • event
  • {
  • Subroutine;
  • StopPlayerCam;
  • }
  • actions
  • {
  • "Deactivates a particular player's camera. Make sure not to call this subroutine from a Global rule."
  • Event Player.plyr_CamActive = False;
  • }
  • }
  • rule("[Subroutine] StartAllCams")
  • {
  • event
  • {
  • Subroutine;
  • StartAllCams;
  • }
  • actions
  • {
  • "Activates all players' cameras."
  • All Players(All Teams).plyr_CamActive = True;
  • }
  • }
  • rule("[Subroutine] StopAllCams")
  • {
  • event
  • {
  • Subroutine;
  • StopAllCams;
  • }
  • actions
  • {
  • "Deactivates all players' cameras."
  • All Players(All Teams).plyr_CamActive = False;
  • }
  • }
  • rule("[Subroutine] ResetPlayerCamSettings")
  • {
  • event
  • {
  • Subroutine;
  • ResetPlayerCamSettings;
  • }
  • actions
  • {
  • "Resets a particular player's camera settings back to the defaults listed in Configuration. Make sure not to call this subroutine from a Global rule."
  • Event Player.plyr_CamDistance = Global.cfg_CamDistance;
  • Event Player.plyr_CamRaycastsEyePos = Global.cfg_CamRaycastsEyePos;
  • Event Player.plyr_CamOffset = Global.cfg_CamOffset;
  • Event Player.plyr_CamHasCrosshairCorrection = Global.cfg_CamHasCrosshairCorrection;
  • Event Player.plyr_CamAimDistance = Global.cfg_CamAimDistance;
  • Event Player.plyr_CamBlendSpeed = Global.cfg_CamBlendSpeed;
  • Event Player.plyr_CamOverridesGame = Global.cfg_CamOverridesGame;
  • Event Player.plyr_CamOverridesEmotes = Global.cfg_CamOverridesEmotes;
  • Event Player.plyr_ScopesDisableCam = Global.cfg_ScopesDisableCam;
  • }
  • }
  • rule("[Subroutine] ResetAllCamSettings")
  • {
  • event
  • {
  • Subroutine;
  • Sub0;
  • }
  • actions
  • {
  • "Resets all players' camera settings back to the defaults listed in Configuration."
  • All Players(All Teams).plyr_CamDistance = Global.cfg_CamDistance;
  • All Players(All Teams).plyr_CamRaycastsEyePos = Global.cfg_CamRaycastsEyePos;
  • All Players(All Teams).plyr_CamOffset = Global.cfg_CamOffset;
  • All Players(All Teams).plyr_CamHasCrosshairCorrection = Global.cfg_CamHasCrosshairCorrection;
  • All Players(All Teams).plyr_CamAimDistance = Global.cfg_CamAimDistance;
  • All Players(All Teams).plyr_CamBlendSpeed = Global.cfg_CamBlendSpeed;
  • All Players(All Teams).plyr_CamOverridesGame = Global.cfg_CamOverridesGame;
  • All Players(All Teams).plyr_CamOverridesEmotes = Global.cfg_CamOverridesEmotes;
  • All Players(All Teams).plyr_ScopesDisableCam = Global.cfg_ScopesDisableCam;
  • }
  • }
  • rule("[Subroutine] RefreshCam")
  • {
  • event
  • {
  • Subroutine;
  • RefreshCam;
  • }
  • actions
  • {
  • Skip If(!Event Player.plyr_ScopesDisableCam, 1);
  • "Refreshes a particular player's camera. Call this after changing a player's camera settings. Make sure not to call this subroutine from a Global rule."
  • Stop Camera(Event Player);
  • If(Event Player.plyr_CamActive);
  • If(!Event Player.plyr_CamRaycastsEyePos && !Event Player.plyr_CamHasCrosshairCorrection);
  • Start Camera(Event Player, Eye Position(Event Player) + World Vector Of(Event Player.plyr_CamOffset, Event Player, Rotation)
  • + Facing Direction Of(Event Player) * -1 * Event Player.plyr_CamDistance, Eye Position(Event Player) + (
  • Event Player.plyr_CamAimDistance <= 0 ? World Vector Of(Event Player.plyr_CamOffset, Event Player, Rotation)
  • : Facing Direction Of(Event Player) * Event Player.plyr_CamAimDistance), Event Player.plyr_CamBlendSpeed);
  • Else If(Event Player.plyr_CamRaycastsEyePos && !Event Player.plyr_CamHasCrosshairCorrection);
  • Start Camera(Event Player, Ray Cast Hit Position(Eye Position(Event Player) + World Vector Of(Event Player.plyr_CamOffset,
  • Event Player, Rotation), Eye Position(Event Player) + World Vector Of(Event Player.plyr_CamOffset, Event Player, Rotation)
  • + Facing Direction Of(Event Player) * -1 * Event Player.plyr_CamDistance, Null, All Players(All Teams), True), Eye Position(
  • Event Player) + (Event Player.plyr_CamAimDistance <= 0 ? World Vector Of(Event Player.plyr_CamOffset, Event Player, Rotation)
  • : Facing Direction Of(Event Player) * Event Player.plyr_CamAimDistance), Event Player.plyr_CamBlendSpeed);
  • Else If(!Event Player.plyr_CamRaycastsEyePos && Event Player.plyr_CamHasCrosshairCorrection);
  • Start Camera(Event Player, Eye Position(Event Player) + World Vector Of(Event Player.plyr_CamOffset, Event Player, Rotation)
  • + Facing Direction Of(Event Player) * -1 * Event Player.plyr_CamDistance, Ray Cast Hit Position(Eye Position(Event Player),
  • Eye Position(Event Player) + Facing Direction Of(Event Player) * 300, All Players(Opposite Team Of(Team Of(Event Player))),
  • All Players(Team Of(Event Player)), True), Event Player.plyr_CamBlendSpeed);
  • Else If(Event Player.plyr_CamRaycastsEyePos && Event Player.plyr_CamHasCrosshairCorrection);
  • Start Camera(Event Player, Ray Cast Hit Position(Eye Position(Event Player) + World Vector Of(Event Player.plyr_CamOffset,
  • Event Player, Rotation), Eye Position(Event Player) + World Vector Of(Event Player.plyr_CamOffset, Event Player, Rotation)
  • + Facing Direction Of(Event Player) * -1 * Event Player.plyr_CamDistance, Null, All Players(All Teams), True),
  • Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player) * 300,
  • All Players(Opposite Team Of(Team Of(Event Player))), All Players(Team Of(Event Player)), True),
  • Event Player.plyr_CamBlendSpeed);
  • Else;
  • Small Message(Host Player, Custom String("Camera error - {0}", Event Player));
  • End;
  • End;
  • }
  • }
  • rule("Activate camera")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Deactivate camera")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == False;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Override shields start")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • Event Player.plyr_CamOverridesGame == True;
  • (Array Contains(Array(Hero(Reinhardt), Hero(Brigitte)), Hero Of(Event Player)) || Array Contains(Array(Hero(Reinhardt), Hero(
  • Brigitte)), Hero Being Duplicated(Event Player))) == True;
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Override shields stop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • Event Player.plyr_CamOverridesGame == True;
  • (Array Contains(Array(Hero(Reinhardt), Hero(Brigitte)), Hero Of(Event Player)) || Array Contains(Array(Hero(Reinhardt), Hero(
  • Brigitte)), Hero Being Duplicated(Event Player))) == True;
  • Is Firing Secondary(Event Player) == False;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Override ability 1s start")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • Event Player.plyr_CamOverridesGame == True;
  • (Array Contains(Array(Hero(Mei), Hero(Wrecking Ball)), Hero Of(Event Player)) || Array Contains(Array(Hero(Mei), Hero(
  • Wrecking Ball)), Hero Being Duplicated(Event Player))) == True;
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Override ability 1s stop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • Event Player.plyr_CamOverridesGame == True;
  • (Array Contains(Array(Hero(Mei), Hero(Wrecking Ball)), Hero Of(Event Player)) || Array Contains(Array(Hero(Mei), Hero(
  • Wrecking Ball)), Hero Being Duplicated(Event Player))) == True;
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Override Reaper tp start")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • Event Player.plyr_CamOverridesGame == True;
  • (Array Contains(Array(Hero(Reaper)), Hero Of(Event Player)) || Array Contains(Array(Hero(Reaper)), Hero Being Duplicated(
  • Event Player))) == True;
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Override Reaper tp stop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • Event Player.plyr_CamOverridesGame == True;
  • (Array Contains(Array(Hero(Reaper)), Hero Of(Event Player)) || Array Contains(Array(Hero(Reaper)), Hero Being Duplicated(
  • Event Player))) == True;
  • Is Using Ability 2(Event Player) == False;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Override ults start")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • Event Player.plyr_CamOverridesGame == True;
  • (Array Contains(Array(Hero(Reaper), Hero(Zenyatta)), Hero Of(Event Player)) || Array Contains(Array(Hero(Reaper), Hero(Zenyatta)),
  • Hero Being Duplicated(Event Player))) == True;
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Override ults stop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • Event Player.plyr_CamOverridesGame == True;
  • (Array Contains(Array(Hero(Reaper), Hero(Zenyatta)), Hero Of(Event Player)) || Array Contains(Array(Hero(Reaper), Hero(Zenyatta)),
  • Hero Being Duplicated(Event Player))) == True;
  • Is Using Ultimate(Event Player) == False;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Cancel cam for junk ult start")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • (Array Contains(Array(Hero(Junkrat)), Hero Of(Event Player)) || Array Contains(Array(Hero(Junkrat)), Hero Being Duplicated(
  • Event Player))) == True;
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Stop Camera(Event Player);
  • }
  • }
  • rule("Cancel cam for junk ult stop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • (Array Contains(Array(Hero(Junkrat)), Hero Of(Event Player)) || Array Contains(Array(Hero(Junkrat)), Hero Being Duplicated(
  • Event Player))) == True;
  • Is Using Ultimate(Event Player) == False;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Override emote start")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • Event Player.plyr_CamOverridesEmotes == True;
  • Is Communicating Any Emote(Event Player) == True;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Override emote stop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • Event Player.plyr_CamOverridesEmotes == True;
  • Is Communicating Any Emote(Event Player) == False;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Disable on scope start")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • (Array Contains(Array(Hero(Ana), Hero(Ashe), Hero(Widowmaker)), Hero Of(Event Player)) || Array Contains(Array(Hero(Ashe), Hero(
  • Ana), Hero(Widowmaker)), Hero Being Duplicated(Event Player))) == True;
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.100, Abort When False);
  • Stop Camera(Event Player);
  • While(Is Button Held(Event Player, Secondary Fire) && Ammo(Event Player, 0) > 0);
  • While(Is Button Held(Event Player, Button(Secondary Fire)) && Ammo(Event Player, 0) > 0);
  • Wait(0.016, Ignore Condition);
  • End;
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("Echo cam bugfix")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Event Player.plyr_CamActive == True;
  • Is Duplicating(Event Player) == False;
  • }
  • actions
  • {
  • Call Subroutine(RefreshCam);
  • }
  • }
Join the Workshop.codes Discord