Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Cutscene editor Executable scripts [?]

Asked by 5 years ago

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,

Answer this question