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,
