I’m trying to improve this code, mainly by shorting it. It’s a raining script, I know many other developers like to use particles when creating rain for their games, however for me since I’m pretty new to scripting I thought I’d take the step further and create a harder script for learning purposes.
local RunService = game:GetService("RunService")
local RainSpawned = 0
local RainEnd = 300
local RainSound = game.Workspace.Rain
local Thunder = 0
local ThunderSound = game.Workspace.Thunder
local ThunderSound2 = game.Workspace.Thunder2
while true do
RainSound:Play()
for i = 1, RainEnd do
local RandomNumber = math.random(1, 40)
local RandomNumber2 = math.random(1, 60)
local RandomNumber3 = math.random(1, 40)
RainSpawned = RainSpawned + 1
wait()
local Rain = Instance.new("Part")
local RainMesh = Instance.new("SpecialMesh")
local Weld = Instance.new("WeldConstraint")
Rain.Size = Vector3.new(0.05, 1, 0.05)
Rain.Color = Color3.fromRGB(180, 210, 228)
Rain.Anchored = false
Rain.CanCollide = false
Rain.Position = Vector3.new(RandomNumber, RandomNumber2, RandomNumber3)
Rain.Parent = workspace.Droplets
Weld.Parent = Rain
RainMesh.MeshId = "rbxassetid://5171497068"
RainMesh.Scale = Vector3.new(0.008, 0.028, 0.008)
RainMesh.Parent = Rain
if (math.random(1, 300)) == 10 then
local Thunder = Instance.new("Part")
local ThunderMesh = Instance.new("SpecialMesh")
local Weld = Instance.new("WeldConstraint")
local Light = Instance.new("PointLight")
Thunder.Size = Vector3.new(1, 1, 1)
Thunder.Color = Color3.fromRGB(255, 255, 0)
Thunder.Anchored = true
Thunder.CanCollide = false
Thunder.Position = Vector3.new(RandomNumber, 36, RandomNumber3)
Thunder.Name = "Thunder"
Thunder.Parent = workspace
Weld.Parent = Thunder
ThunderMesh.MeshId = "rbxassetid://5173801263"
ThunderMesh.Scale = Vector3.new(1, 0.8, 1)
ThunderMesh.Parent = Thunder
Light.Brightness = 5.54
Light.Color = Color3.fromRGB(255, 213, 3)
Light.Range = 27
Light.Parent = Thunder
wait(0.1)
Thunder:Destroy()
if (math.random(1, 2)) == 1 then
ThunderSound:Play()
elseif (math.random(1, 2)) == 2 then
ThunderSound2:Play()
end
end
end
RainSound:Stop()
wait(math.random(1, 100))
end