I’m getting this error on line 55 and I’m not sure how to fix it, some help would be appreciated.
The Error: Players.King09838.PlayerScripts.RainScript:55: attempt to index nil with ‘Touched’
Script:
local Rain = require(script.Rain)
local SoundService = game:GetService("SoundService")
Rain:SetSoundId(script.SoundIdInside.Value)
Rain:SetColor(Color3.fromRGB(script.Color.Value.x, script.Color.Value.y, script.Color.Value.z))
Rain:SetDirection(script.Direction.Value)
Rain:SetTransparency(script.Transparency.Value)
Rain:SetSpeedRatio(script.SpeedRatio.Value)
Rain:SetIntensityRatio(script.IntensityRatio.Value)
Rain:SetLightInfluence(script.LightInfluence.Value)
Rain:SetLightEmission(script.LightEmission.Value)
Rain:SetVolume(script.Volume.Value)
Rain:SetSoundId(script.SoundId.Value)
Rain:SetStraightTexture(script.StraightTexture.Value)
Rain:SetTopDownTexture(script.TopDownTexture.Value)
Rain:SetSplashTexture(script.SplashTexture.Value)
local threshold = script.TransparencyThreshold.Value
if script.TransparencyConstraint.Value and script.CanCollideConstraint.Value then
Rain:SetCollisionMode(
Rain.CollisionMode.Function,
function(p)
return p.Transparency <= threshold and p.CanCollide
end
)
elseif script.TransparencyConstraint.Value then
Rain:SetCollisionMode(
Rain.CollisionMode.Function,
function(p)
return p.Transparency <= threshold
end
)
elseif script.CanCollideConstraint.Value then
Rain:SetCollisionMode(
Rain.CollisionMode.Function,
function(p)
return p.CanCollide
end
)
end
local SoundPart = game.Workspace:FindFirstChild("SoundPart")
local isTouching = false
local seconds = 900
local raintime = 515
while wait(seconds)do
Rain:Enable()
SoundPart.Touched:Connect(function(hit)
if hit.Parent and hit.Parent:FindFirstChild("Humanoid") then
if Rain:Enabled() then
-- Player touched the SoundPart while the rain is enabled
isTouching = true
SoundService:PlayLocalSound(script.SoundIdInside.Value)
end
end
end)
wait(raintime)
Rain:Disable()
SoundPart.TouchEnded:Connect(function(hit)
if hit.Parent and hit.Parent:FindFirstChildOfClass("Humanoid") then
if Rain:Disable() then
-- Player touched the SoundPart while the rain is enabled
isTouching = false
SoundService:StopLocalSound(script.SoundIdInside.Value)
end
end
end)
end