Need to put value into Color3Value (Color3.fromRGB), but the received value is Color3.new

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()

Multiply it by 255. Color.new() is calculated by taking Color3.fromRGB() by dividing it by 255, so you can do the opposite to get Color3.fromRGB().

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.