So, i have made some cutscenes in the now Deprecated cutscene editor, and saved them as Executable Scripts. What is the best way to combine these scripts to make one (to avoid the transition timer), so that they run smoothly?

Cutscene 1

repeat wait () until game.Workspace.CurrentCamera ~= nil


local c = game.Workspace.CurrentCamera

local data = LoadLibrary("RbxUtility").DecodeJSON(script.CutsceneData.Value)

local rs = game:GetService("RunService").RenderStepped

  

function tweenCam(c1,f1,time,fov,roll)

local c0,f0,fv0,r0,frames = c.CoordinateFrame,c.Focus,c.FieldOfView,c:GetRoll(),time/0.015

for i = 1,frames do

c.CameraType = "Scriptable"

c.CoordinateFrame = CFrame.new(c0.p:lerp(c1.p,i/frames),f0.p:lerp(f1.p,i/frames))

c.FieldOfView = (fv0+(fov-fv0)*(i*(1/frames)))

c:SetRoll(r0+(roll-r0)*(i*(1/frames)))

rs:wait()

end

end

  

print("Running")

c.CameraSubject = nil

c.CameraType = "Scriptable"

c.CoordinateFrame = CFrame.new(unpack(data[1].c1))

c.Focus = CFrame.new(unpack(data[1].f1))

c.FieldOfView = data[1].FOV

c:SetRoll(data[1].Roll)

if script:findFirstChild("SkipCutsceneGuiValue") then

local gui = script.SkipCutsceneGui:clone()

gui.Parent = game.Players.LocalPlayer.PlayerGui

gui.Cutscene.Value = script

gui.Main.Debug.Disabled = false

script.SkipCutsceneGuiValue.Value = gui

end

for i = 2,#data do

tweenCam(CFrame.new(unpack(data[i].c1)),CFrame.new(unpack(data[i].f1)),data[i].step,data[i].FOV,data[i].Roll)

end

c.CameraSubject = game.Players.LocalPlayer.Character.Humanoid

c.CameraType = "Custom"

c.FieldOfView = 70

if script:findFirstChild("SkipCutsceneGuiValue") then

if script.SkipCutsceneGuiValue.Value ~= nil then

script.SkipCutsceneGuiValue.Value:Destroy()

end

end

script:Destroy()

Cutscene 2

repeat wait () until game.Workspace.CurrentCamera ~= nil

  

local c = game.Workspace.CurrentCamera

local data = LoadLibrary("RbxUtility").DecodeJSON(script.CutsceneData.Value)

local rs = game:GetService("RunService").RenderStepped

  

function tweenCam(c1,f1,time,fov,roll)

local c0,f0,fv0,r0,frames = c.CoordinateFrame,c.Focus,c.FieldOfView,c:GetRoll(),time/0.015

for i = 1,frames do

c.CameraType = "Scriptable"

c.CoordinateFrame = CFrame.new(c0.p:lerp(c1.p,i/frames),f0.p:lerp(f1.p,i/frames))

c.FieldOfView = (fv0+(fov-fv0)*(i*(1/frames)))

c:SetRoll(r0+(roll-r0)*(i*(1/frames)))

rs:wait()

end

end

  

print("Running")

c.CameraSubject = nil

c.CameraType = "Scriptable"

c.CoordinateFrame = CFrame.new(unpack(data[1].c1))

c.Focus = CFrame.new(unpack(data[1].f1))

c.FieldOfView = data[1].FOV

c:SetRoll(data[1].Roll)

if script:findFirstChild("SkipCutsceneGuiValue") then

local gui = script.SkipCutsceneGui:clone()

gui.Parent = game.Players.LocalPlayer.PlayerGui

gui.Cutscene.Value = script

gui.Main.Debug.Disabled = false

script.SkipCutsceneGuiValue.Value = gui

end

for i = 2,#data do

tweenCam(CFrame.new(unpack(data[i].c1)),CFrame.new(unpack(data[i].f1)),data[i].step,data[i].FOV,data[i].Roll)

end

c.CameraSubject = game.Players.LocalPlayer.Character.Humanoid

c.CameraType = "Custom"

c.FieldOfView = 70

if script:findFirstChild("SkipCutsceneGuiValue") then

if script.SkipCutsceneGuiValue.Value ~= nil then

script.SkipCutsceneGuiValue.Value:Destroy()

end

end

script:Destroy()

The script controlling prettymuch everything else is in screengui,