This script is supposed to play a sound when touching a brick, while stopping other sounds
1 script.Parent.Touched:connect(function(hit) 2 if hit.Parent:FindFirstChild("Humanoid")then 3 game.Players[hit.Parent.Name].PlayerGui.Sound1.Volume = 1 4 game.Players[hit.Parent.Name].PlayerGui.Sound1:Play() 5 game.Players[hit.Parent.Name].PlayerGui.Sound2:Stop() 6 end 7 end)
However, when tested on roblox studio it works perfectly fine but when in the actual roblox game it fails to do anything.
I'm new to scripting so it's been a pain trying to figure out whats wrong with this script, please send help!
Problem | Solution |
---|---|
:connect() is deprecated* |
use :Connect() |
The server can't access objects in PlayerGui unless placed by the server |
Place the sound under the brick, or somewhere where the server is not limited to |
Do not assume that an object with the same name as hit.Parent will be in the Players service |
Use GetPlayerFromCharacter |
local Players = game:GetService("Players") local getPlayerFromCharacter getPlayerFromCharacter = function(model) local plr = Players:GetPlayerFromCharacter(model) if plr then return plr end end script.Parent.Touched:Connect(function(hit) local player = getPlayerFromCharacter(hit.Parent) if player then script.Parent.Sound1.Volume = 1 script.Parent.Sound1:Play() script.Parent.Sound2:Play() end end)