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 properties once button is pressed locally?

Hey ya'll!

I've created a sort of 'button' system. When a humanoid connects with a part, a different part has it's properties changed and a sound plays.

This works as expected, except when the button is pressed all players hear the sound/have the variable changed.

Here is my script atm:

local played = false

	script.Parent.Touched:Connect(function(h)	    
		if played == false then
	        script.Parent.SuccessSound:Play()
	        played = true
	        wait(2)
	        played = false
	    end
	end)

script.Parent.Touched:Connect(function(h)
    local hum = h.Parent:FindFirstChild("Humanoid")
    if hum then
        script.Parent.Parent.ButtonPlatform.Transparency = 0

script.Parent.Touched:Connect(function(h)
    local hum = h.Parent:FindFirstChild("Humanoid")
    if hum then
        script.Parent.Parent.ButtonPlatform.CanCollide = true
	
	
	
end end) end end)

All of this script works completely fine and reliably but I'm still struggling to figure out how to make sure that only the person who hits the button sees and hears the changes.

Thanks!

1 answer

✓ Accepted answer

In order to change the properties of a part for a single person, you can use a remote event to change the property from a local script. Insert a remote event into ReplicatedStorage and name it "PropertyChange". Once this is done we can start working on the script. Your ServerScript is mostly set up how it needs to be but we can copy and paste the parts that change the properties to a notepad or somewhere else accessible so you can copy it. Your new script should look like this:

local played = false

script.Parent.Touched:Connect(function(h)
    local hum = h.Parent:FindFirstChild("Humanoid")
    if hum then
        game.ReplicatedStorage.PropertyChange:FireClient(game.Players[h.Parent.Name])

--I also took away two of the touched events, as you can just change both properties and play the sound in the same one.

	end
end)

Now in order for that script to work successfully we need a LocalScript in the StarterPlayerScripts folder (also move your audio here). The contents of this script will read as follows:

game.ReplicatedStorage.PropertyChange.OnClientEvent:Connect(function()
	game.Players.LocalPlayer.PlayerScripts.--[[reference your audio]]:Play()
	--[[reference the part you're changing]].Transparency = 0
	--[[reference the part you're changing]].CanCollide = true
end)

This should work but I don't have access to studio currently so comment any errors if they should arise. Hope I helped you out.

1 comment

0

That worked perfectly!! TYSM!

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