Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Why does this particle emitter not change color?

This script changes the color of a particle emitter, but its only changing when I get to the 7th color?

Edit: I tried changing what colors it switches to and found that when I add one color it makes the other colors not work and vise virsa??? How do I fix this??

wait(1)
local colorone = Color3.new(255,255,255)
local colortwo = Color3.new(255,255,255)
function onClick()
    script.Parent.Sound:Play()
    wait(.1)
-- Sound
    if  colorone == Color3.new(255,255,255) and colortwo == Color3.new(255,255,255)
then
    colorone = Color3.new(170,0,0)
    colortwo = Color3.new(170,0,0)  
    game.Workspace.MapContents.Gate.Brick1.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
    game.Workspace.MapContents.Gate.Brick2.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)

        else

		  if colorone == Color3.new(85,255,255) and  colortwo == Color3.new(85,255,255)
            then
    colorone = Color3.new(255,170,255)
    colortwo = Color3.new(255,170,255)
    game.Workspace.MapContents.Gate.Brick1.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
    game.Workspace.MapContents.Gate.Brick2.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)

        else

          if colorone == Color3.new(255,170,255) and  colortwo == Color3.new(255,170,255)
            then
    colorone = Color3.new(85,170,255)
    colortwo = Color3.new(85,170,255)
    game.Workspace.MapContents.Gate.Brick1.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
    game.Workspace.MapContents.Gate.Brick2.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)

		else

          if colorone == Color3.new(85,170,255) and  colortwo == Color3.new(85,170,255)
 			then
    colorone = Color3.new(255,85,255)
    colortwo = Color3.new(255,85,255)
    game.Workspace.MapContents.Gate.Brick1.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
    game.Workspace.MapContents.Gate.Brick2.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)

		else

          if colorone == Color3.new(255,85,255) and  colortwo == Color3.new(255,85,255)
 			then
	colorone = Color3.new(85,85,255)
    colortwo = Color3.new(85,85,255)
    game.Workspace.MapContents.Gate.Brick1.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
    game.Workspace.MapContents.Gate.Brick2.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)

		else

          if colorone == Color3.new(85,85,255) and  colortwo == Color3.new(85,85,255)
 			then
	colorone = Color3.new(255,0,255)
    colortwo = Color3.new(255,0,255)
    game.Workspace.MapContents.Gate.Brick1.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
    game.Workspace.MapContents.Gate.Brick2.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)

		else

          if colorone == Color3.new(255,0,255) and  colortwo == Color3.new(255,0,255)
 			then
	colorone = Color3.new(255,255,255)
    colortwo = Color3.new(255,255,255)
    game.Workspace.MapContents.Gate.Brick1.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
    game.Workspace.MapContents.Gate.Brick2.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)		
   							 end
						end
					end
				end
			end
		end
	end
end
script.Parent.ClickDetector.MouseClick:connect(onClick)


1 answer

You shouldn't put 'local' if you've already defined the color. Otherwise it will create a variable of the same name, but it's only accessible in the 'if' statement you defined it in.

Here's the fixed script:

wait(1)
local colorone = Color3.new(255,255,255)
local colortwo = Color3.new(255,255,255)
function onClick()
    script.Parent.Sound:Play()
    wait(.1)
-- Sound
    if  colorone == Color3.new(255,255,255) and  colortwo == Color3.new(255,255,255)
then
    colorone = Color3.new(170,0,0)
    colortwo = Color3.new(170,0,0)    
    game.Workspace.MapContents.Gate.Brick1.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
    game.Workspace.MapContents.Gate.Brick2.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
        elseif

  colorone == Color3.new(170,0,0) and  colortwo == Color3.new(170,0,0)
            then
    colorone = Color3.new(85,170,255)
    colortwo = Color3.new(85,170,255)
    game.Workspace.MapContents.Gate.Brick1.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
    game.Workspace.MapContents.Gate.Brick2.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
        elseif

          colorone == Color3.new(85,170,255) and  colortwo == Color3.new(85,170,255)
            then
    colorone = Color3.new(0,0,0)
    colortwo = Color3.new(0,0,0)
    game.Workspace.MapContents.Gate.Brick1.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
    game.Workspace.MapContents.Gate.Brick2.ParticleEmitter.Color = ColorSequence.new(colorone, colortwo)
    end
end
script.Parent.ClickDetector.MouseClick:connect(onClick)
wait(.2)

(to copy the script click 'open source' in the right upper corner of the answer)

This discussion is preserved as it was. New answers, comments, and votes are closed.