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

How to change part.Color once a value changes?

game.Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(char)
		workspace:WaitForChild(player.Name)
		local clone = game.ReplicatedStorage.Cursor:Clone()
		clone.Parent = workspace[player.Name].Head
		clone.Position = workspace[player.Name].Head.Position
		local weld = Instance.new("Weld")
		weld.Parent = clone
		weld.Part0 = clone
		weld.Part1 = workspace[player.Name].Head
		weld.C0 = CFrame.new(0,-3,0)
		while true do
			wait(math.min)
			if reputation == 100 then
				clone.Color = Color3.fromRGB(0,255,0)
			elseif reputation < 75 and reputation > 25 then
				clone.Color = Color3.fromRGB(255,255,0)
			elseif reputation < 25 then
				clone.Color = Color3.fromRGB(255,0,0)
			end
		end
	end)
end)

Basically the script clone a part from Replicated Storage and puts it inside the Head of the player and welds it, after that, it checks if the reputaion of the player is lower then certain numbers, but it won't change the color if the value changes later on in the game.

3 answers

✓ Accepted answer

If value is an instance, you can use :GetPropertyChangedSignal(), it will call a function every time your desired property gets changed, here is example of using it:

local value = Instance.new("NumberValue")

value:GetPropertyChangedSignal("Value"):Connect(function()
	print("Value has changed!")
end)

Inside of the brackets, you must put property of the value instance and every time it changes, it should print Value has changed.

You can use GetPropertyChangedSignal

--parent a numbervalue called reputation in the local player

game.Players.PlayerAdded:Connect(function(player)
	local reputation = Instance.new("NumberValue",player)
end)

reputation:GetPropertyChangedSignal("Value"):Connect(function()
	wait()
	            if reputation == 100 then
	                clone.Color = Color3.fromRGB(0,255,0)            
		    elseif reputation < 75 and reputation > 25 then
	                clone.Color = Color3.fromRGB(255,255,0)
	            elseif reputation < 25 then
	                clone.Color = Color3.fromRGB(255,0,0)
	            end

end)

When the VALUE gets changed, everything inside the GPCS function will fire.

local value = Instance.new("IntValue")
 
value:GetPropertyChangedSignal("Value"):Connect(function()
print("The value has been changed")
end)

This will detect when the value is changed, so you can do:

local value = Instance.new("IntValue")
local brick = Instance.new("Part")


value:GetPropertyChangedSignal("Value"):Connect(function()
brick.Color = BrickColor3.new(math.Random)
end)

This should work, please mark as solved if this helped!

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