Manually editing recordings
Although StacyPilot was not made with this in mind, you can manually edit, or even create recordings. Every recording folder contains one or multiple module scripts. Each script holds the data of an add-on. Every add-on can save multiple scripts. For example, GLights 6 save a single script named GLights6
, but the camera system saves multiple scripts for each of the things it can do.
If you try opening one of the scripts, you'll see that it's filled with lines that look like this:
{Time = 5.237482374384, Data = {"Cue"; "StateCues.Cue1"; true}};
The number with many decimal places is the time when this action occurs after starting the recording (in seconds). It usually has many decimal places because the time is grabbed automatically and is precise. You're free to use less.
Next to data is a table filled with all the data needed for that action.
Below is a list of all values the officially supported products use
Lyrics Controller
The Lyrics Controller saves a single script, named Lyrics
. Each line in this script is the text that will be displayed for selected players. Selected players are not saved.
Each line looks like this:
{Time = 0, Data = {"text to display here"}};
GLights 6
GLights 6 save a single script, named GLights6
. The first piece of data is a string representing the name of the folder of lights and the group, for example StrobesA
. After that there's other parameters.
The pieces of data follow more or less the same style as the GLights API. You can look at the cheatsheet there to get a list of all cues and actions.
Here's a full list of all possible pieces of data (using HeadsA
as an example folder name):
{Time = 0, Data = {"HeadsA"; "On"}};
{Time = 0, Data = {"HeadsA"; "Off"}};
{Time = 0, Data = {"HeadsA"; "FadeOn"}};
{Time = 0, Data = {"HeadsA"; "FadeOff"}};
{Time = 0, Data = {"HeadsA"; "Cue"; "Random"; true}};
{Time = 0, Data = {"HeadsA"; "Cue"; "Random"; false}};
{Time = 0, Data = {"HeadsA"; "Cue"; "State.Cue1"; true}};
{Time = 0, Data = {"HeadsA"; "Cue"; "State.Cue1"; false}};
{Time = 0, Data = {"HeadsA"; "Cue"; "Color.ColorCue1"; true}};
{Time = 0, Data = {"HeadsA"; "Cue"; "Color.ColorCue1"; false}};
{Time = 0, Data = {"HeadsA"; "Cue"; "Position.Tilt"; true}};
{Time = 0, Data = {"HeadsA"; "Cue"; "Position.Tilt"; false}};
{Time = 0, Data = {"HeadsA"; "Action"; "Flash"; false}};
{Time = 0, Data = {"HeadsA"; "Action"; "Cue6"; false}};
{Time = 0, Data = {"HeadsA"; "Action"; "CustomPositions.In"; false}};
{Time = 0, Data = {"HeadsA"; "BeamMode"; "Gobo"}};
{Time = 0, Data = {"HeadsA"; "BeamMode"; "Beam"}};
{Time = 0, Data = {"HeadsA"; "BeamMode"; "NoBeam"}};
{Time = 0, Data = {"HeadsA"; "BeamThickness"; 2}};
{Time = 0, Data = {"HeadsA"; "GoboSpread"; 1.9}};
{Time = 0, Data = {"HeadsA"; "Tilt"; 50}};
{Time = 0, Data = {"HeadsA"; "Pan"; 20}};
{Time = 0, Data = {"HeadsA"; "MotorSpeed"; 0.001}};
{Time = 0, Data = {"HeadsA"; "RotateGobo"; 1; "Odd"}};
{Time = 0, Data = {"HeadsA"; "RotateGobo"; -1; "Even"}};
{Time = 0, Data = {"HeadsA"; "Follow"; "Workspace.GLights.FollowPoints.Follow point 1"}};
{Time = 0, Data = {"HeadsA"; "Follow"; "Workspace.gabys2005.HumanoidRootPart"}};
{Time = 0, Data = {"HeadsA"; "StopFollowing"}};
{Time = 0, Data = {"HeadsA"; "Color"; Color3.fromRGB(0, 255, 149)}};
{Time = 0, Data = {"HeadsA"; "Color"; Color3.fromRGB(255, 0, 4); "Odd"}};
{Time = 0, Data = {"HeadsA"; "Color"; Color3.fromRGB(217, 0, 255); "Even"}};
{Time = 0, Data = {"HeadsA"; "Color"; ColorSequence.new({ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 4)), ColorSequenceKeypoint.new(0.2, Color3.fromRGB(255, 128, 0)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(255, 247, 0)), ColorSequenceKeypoint.new(0.6, Color3.fromRGB(17, 255, 0)), ColorSequenceKeypoint.new(0.8, Color3.fromRGB(0, 234, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(157, 0, 255))})}};
{Time = 0, Data = {"HeadsA"; "SmoothColor"; true}};
{Time = 0, Data = {"HeadsA"; "AnimatedGradients"; true}};
{Time = 0, Data = {"HeadsA"; "SetGlobalCueSetting"; "SecondaryColor"; Color3.fromRGB(0, 255, 106)}};
{Time = 0, Data = {"HeadsA"; "SetGlobalCueSetting"; "GroupRandom"; true}};
{Time = 0, Data = {"HeadsA"; "SetGlobalCueSetting"; "Overshoot"; true}};
{Time = 0, Data = {"HeadsA"; "SetCueSetting"; "State.Cue3"; "Groups"; 3}};
{Time = 0, Data = {"HeadsA"; "LoopCues"; false}};
{Time = 0, Data = {"HeadsA"; "CueSpeed"; 0.25}};
{Time = 0, Data = {"HeadsA"; "FadeSpeed"; 0.33}};
{Time = 0, Data = {"HeadsA"; "Dimness"; 0.5}};
{Time = 0, Data = {"HeadsA"; "Reset"}};
{Time = 0, Data = {"HeadsA"; "HardReset"}};
Camera System V5
Unlike the other official add-ons, the Camera System add-on saves multiple scripts for each recording: BarSize
, BarEnabled
, Blackout
, Blur
, Camera
, Focus
, Fov
, Saturation
, Shake
, Tilt
, Transition
, TransitionSpeed
. Each of them is explained below:
Many of the scripts have a "time" number which is how long it takes for this to happen, it's always 0.1
if you're using the sliders.
BarSize
Saves the size of bars, the first number in Data
is the new size (as a percentage of the screen that one bar takes up), the second is the amount of time the change happens.
{Time = 0, Data = {20; 0}};
{Time = 0, Data = {10; 0.1}};
BarsEnabled
Saves whether or not bars are enabled at this point in time
{Time = 0, Data = {false}};
{Time = 0, Data = {true}};
Blackout
Saves whether or not blackout is enabled at this point in time
{Time = 0, Data = {false}};
{Time = 0, Data = {true}};
Blur
Saves the intensity of the blur effect and how much it takes
{Time = 0, Data = {0; 0}};
{Time = 0, Data = {16; 0.1}};
Camera
Saves camera changes: their type, name and ID. The ID might be different every time the game starts and is only used for coloring the timeline
{Time = 0, Data = {"Static"; "CameraName"; 2}};
{Time = 0, Data = {"Moving"; "MovingCameraName"; 2}};
{Time = 0, Data = {"Drones"; "Virgil"; 1}};
Focus
Saves who the camera is focused on
{Time = 0, Data = {}};
{Time = 0, Data = {"Player"; "gabys2005"}};
{Time = 0, Data = {"Part"; "Workspace.CameraSystem.FocusPoints.Point1"}};
Fov
Saves the field of view and how long it takes to change
{Time = 0, Data = {70; 0}};
{Time = 0, Data = {47; 0.1}};
Saturation
Saves the saturation and how long it takes to change
{Time = 0, Data = {0; 0}};
{Time = 0, Data = {-0.67; 0.1}};
Shake
Saves the shake intensity
{Time = 0, Data = {0}};
{Time = 0, Data = {6.5}};
Tilt
Saves the tilt of the camera and how long it takes to change
{Time = 0, Data = {0; 0}};
{Time = 0, Data = {40; 0.1}};
Transition
Saves the transition type
{Time = 0, Data = {"None"}};
{Time = 0, Data = {"Black"}};
{Time = 0, Data = {"White"}};
TransitionSpeed
Saves the speed of the transition, as a percentage
{Time = 0, Data = {100}};
{Time = 0, Data = {143}};