I made a volcano and when the person's health is 0, it stops the volcano. So I made a better way by using remote events. But when I do it, you have to click twice, and not once. Is there anything I can do about it? code:

local mar = game:GetService("MarketplaceService")
local userInputService = game:GetService("UserInputService")

game.ReplicatedStorage.onVolcano.OnServerEvent:Connect(function()
	while true do
	local NewPart = Instance.new("Part", workspace)
	NewPart.Name = "lava"
	NewPart.Size = Vector3.new(21,21,21)
	NewPart.Position = workspace.Volcano.Position + Vector3.new(0,50,0)
	NewPart.Velocity = Vector3.new(math.random(-150,-50),math.random(50,150),math.random(-150,150))
	NewPart.BrickColor = BrickColor.Red()
	NewPart.Material = Enum.Material.Neon
	NewPart.Touched:Connect(function(hit)
		if hit.Name == "Terrain" or game.Players:GetPlayerFromCharacter(hit.Parent) or hit.Name == "teleport" or hit.Parent.Name == "mini VIP" or hit.Parent.Name == "LightModel" or hit.Parent.Name == "LightModel2" or hit.Parent.Name == "LightModel3" or hit.Parent.Name == "Light1" or hit.Parent.Name == "Light2" then
		wait(5)
		NewPart:Destroy()
		else
		hit:Destroy()
		NewPart:Destroy()
		end
	end)
	wait(1)
	end
end)

script.Parent.ClickDetector.MouseClick:Connect(function(p)
	if p.MembershipType == Enum.MembershipType.Premium then
		if p.PlayerGui.screen.Frame.Position == UDim2.new(0,0,-1,-35) then
			game.Lighting.Blur.Enabled = true
			p.PlayerGui.screen.Frame:TweenPosition(UDim2.new(0,0,0,38),nil,nil,0.5)
			p.PlayerGui.screen.Frame.Visible = true
			p.Character.Head:WaitForChild("BillboardGui").TextLabel.TextTransparency = 1
			if p.Character.Head.BillboardGui2 then
				p.Character.Head.BillboardGui2.TextLabel.TextTransparency = 1
			end
		else
			p.Character.Head:WaitForChild("BillboardGui").TextLabel.TextTransparency = 0
			if p.Character.Head.BillboardGui2 then
				p.Character.Head.BillboardGui2.TextLabel.TextTransparency = 0
			end
			game.Lighting.Blur.Enabled = false
			p.PlayerGui.screen.Frame:TweenPosition(UDim2.new(0,0,-1,-35),nil,nil,0.5)
			wait(0.5)
			p.PlayerGui.screen.Frame.Visible = false
		end
	else
		mar:PromptPremiumPurchase(p)
	end
end)

I also tried to play it on my phone and it didn't work.

Thanks, b_mni