So recently I wanted to tween Beam’s transparency and color, and since you cannot directly tween Number and Color Sequences I had the script to create a new Number and Color3 Values and tween those, while having script create new Number and Color Sequences for Beam’s transparency and color that will change in a while loop till the values finish tweening.
But the thing is that the default value (before tween) of Number and Color3 Values’ values have to be the same as Beam’s transparency and color sequence keypoints’ values once they have to tween. For this, I made the script takes the sequence keypoint values of Beam’s current transparency and color, but the problem is being that ColorSequence is received in Color3.new value, while Color3Value uses Color3.fromRGB instead.
The preferred solution I’m awating of would be a way to transform the given .new value into .fromRGB or maybe somehow get .fromRGB from the ColorSequenceKeypoint’s value or there could be some other method to fix my problem.
Script:
local rs = game.ReplicatedStorage
local lampscontrol = rs.LampsControl
local tw = game:GetService("TweenService")
local function tween(instance,twi,goal)
tw:Create(instance,twi,goal):Play()
end
local function biglampfunc()
local biglamp = lampscontrol.BigLamp1
local enable = biglamp.Enable
local disable = biglamp.Disable
local function enablefunc()
for i,value1 in pairs(game:GetDescendants()) do
if value1:IsA("StringValue") and value1.Name == "InterestValue" and
value1.Value == "BigLamp1" then
for i,value2 in pairs(value1.Parent:GetDescendants()) do
if value2:IsA("StringValue") and value1.Name == "InterestValue" and
value2.Value == "Neon" then
local function do1()
local data = {
length = 3,
color = Color3.new(163,162,165)
}
local values = biglamp.Values
local neon = value2.Parent
local spotlight = neon.LightAttachment.SpotLight
local beam = neon.Beam
local twi = TweenInfo.new(data.length,Enum.EasingStyle.Sine)
local function neontween()
tween(neon,twi,{Color = data.color})
end
local function spotlighttween()
local spotlightdata = {
color = data.color,
range = 60,
brightness = 1,
angle = 90,
}
tween(spotlight,twi,{Color = spotlightdata.color})
tween(spotlight,twi,{Range = spotlightdata.range})
tween(spotlight,twi,{Brightness = spotlightdata.brightness})
tween(spotlight,twi,{Angle = spotlightdata.angle})
end
local function beamtween()
local beamdata = {
transparency = {
time1 = 0,
value1 = .75,
time2 = 1,
value2 = 1,
},
color = {
time1 = 0,
value1 = data.color,
time2 = 1,
value2 = data.color,
},
}
local function createvalue(instance,name,value)
local newvalue = Instance.new(instance)
newvalue.Parent = values
newvalue.Name = name
newvalue.Value = value
return newvalue
end
local numbersequencevalue1 = createvalue("NumberValue","NumberSequence1",
beam.Transparency.Keypoints[1].Value)
local numbersequencevalue2 = createvalue("NumberValue","NumberSequence2",
beam.Transparency.Keypoints[2].Value)
local colorsequencevalue1 = createvalue("Color3Value","ColorSequence1",
beam.Color.Keypoints[1].Value)
local colorsequencevalue2 = createvalue("Color3Value","ColorSequence2",
beam.Color.Keypoints[2].Value)
tween(numbersequencevalue1,twi,{Value = beamdata.transparency.value1})
tween(numbersequencevalue2,twi,{Value = beamdata.transparency.value2})
tween(colorsequencevalue1,twi,{Value = beamdata.color.value1})
tween(colorsequencevalue2,twi,{Value = beamdata.color.value2})
while true do
wait()
beam.Transparency = NumberSequence.new{
NumberSequenceKeypoint.new(beamdata.transparency.time1,
numbersequencevalue1.Value),
NumberSequenceKeypoint.new(beamdata.transparency.time2,
numbersequencevalue2.Value),
}
beam.Color = ColorSequence.new{
ColorSequenceKeypoint.new(beamdata.color.time1,
colorsequencevalue1.Value),
ColorSequenceKeypoint.new(beamdata.color.time2,
colorsequencevalue2.Value),
}
if numbersequencevalue1.Value ==
beamdata.transparency.value1 and
numbersequencevalue2.Value ==
beamdata.transparency.value2 and
colorsequencevalue1.Value ==
beamdata.color.value1 and
colorsequencevalue2.Value ==
beamdata.color.value2 then
numbersequencevalue1:Destroy()
numbersequencevalue2:Destroy()
colorsequencevalue1:Destroy()
colorsequencevalue2:Destroy()
break
end
end
end
neontween()
spotlighttween()
beamtween()
end
do1()
end
end
end
end
end
local function disablefunc()
for i,value1 in pairs(game:GetDescendants()) do
if value1:IsA("StringValue") and value1.Name == "InterestValue" and
value1.Value == "BigLamp1" then
for i,value2 in pairs(value1.Parent:GetDescendants()) do
if value2:IsA("StringValue") and value1.Name == "InterestValue" and
value2.Value == "Neon" then
local function do1()
local data = {
length = 3,
color = Color3.new(17,17,17)
}
local values = biglamp.Values
local neon = value2.Parent
local spotlight = neon.LightAttachment.SpotLight
local beam = neon.Beam
local twi = TweenInfo.new(data.length,Enum.EasingStyle.Sine)
local function neontween()
tween(neon,twi,{Color = data.color})
end
local function spotlighttween()
local spotlightdata = {
color = data.color,
range = 0,
brightness = 0,
angle = 0,
}
tween(spotlight,twi,{Color = spotlightdata.color})
tween(spotlight,twi,{Range = spotlightdata.range})
tween(spotlight,twi,{Brightness = spotlightdata.brightness})
tween(spotlight,twi,{Angle = spotlightdata.angle})
end
local function beamtween()
local beamdata = {
transparency = {
time1 = 0,
value1 = 1,
time2 = 1,
value2 = 1,
},
color = {
time1 = 0,
value1 = data.color,
time2 = 1,
value2 = data.color,
},
}
local function createvalue(instance,name,value)
local newvalue = Instance.new(instance)
newvalue.Parent = values
newvalue.Name = name
newvalue.Value = value
return newvalue
end
local numbersequencevalue1 = createvalue("NumberValue","NumberSequence1",
beam.Transparency.Keypoints[1].Value)
local numbersequencevalue2 = createvalue("NumberValue","NumberSequence2",
beam.Transparency.Keypoints[2].Value)
local colorsequencevalue1 = createvalue("Color3Value","ColorSequence1",
beam.Color.Keypoints[1].Value)
local colorsequencevalue2 = createvalue("Color3Value","ColorSequence2",
beam.Color.Keypoints[2].Value)
tween(numbersequencevalue1,twi,{Value = beamdata.transparency.value1})
tween(numbersequencevalue2,twi,{Value = beamdata.transparency.value2})
tween(colorsequencevalue1,twi,{Value = beamdata.color.value1})
tween(colorsequencevalue2,twi,{Value = beamdata.color.value2})
while true do
wait()
beam.Transparency = NumberSequence.new{
NumberSequenceKeypoint.new(beamdata.transparency.time1,
numbersequencevalue1.Value),
NumberSequenceKeypoint.new(beamdata.transparency.time2,
numbersequencevalue2.Value),
}
beam.Color = ColorSequence.new{
ColorSequenceKeypoint.new(beamdata.color.time1,
colorsequencevalue1.Value),
ColorSequenceKeypoint.new(beamdata.color.time2,
colorsequencevalue2.Value),
}
if numbersequencevalue1.Value ==
beamdata.transparency.value1 and
numbersequencevalue2.Value ==
beamdata.transparency.value2 and
colorsequencevalue1.Value ==
beamdata.color.value1 and
colorsequencevalue2.Value ==
beamdata.color.value2 then
numbersequencevalue1:Destroy()
numbersequencevalue2:Destroy()
colorsequencevalue1:Destroy()
colorsequencevalue2:Destroy()
break
end
end
end
neontween()
spotlighttween()
beamtween()
end
do1()
end
end
end
end
end
enable.Event:Connect(function()
enablefunc()
end)
disable.Event:Connect(function()
disablefunc()
end)
end
biglampfunc()