I've made a script for a Fire Response group, where a GUI will fire an event which then a script picks up and then does a certain thing dependant on what the event fired was. It's a bit clunky and can cause eye cancer, which is why I'm asking the SH community to help me make it more efficient, as I've hit a wall at how to do so.
local function createFire(part,size,heat,PColor,SColor)
local fire = Instance.new("Fire",game.Workspace.Events.Fires:FindFirstChild(part))
fire.Size = size
fire.Heat = heat
fire.Color = PColor
fire.SecondaryColor = SColor
print("Generated a fire in "..part)
return "Finished"
end
local function createAccident(part,what)
if what == "Car" then
local thing = game.ServerStorage.Events.CarAccident:Clone()
thing.Parent = part
thing:SetPrimaryPartCFrame(part.CFrame)
print("Generated a CarAccident in "..part.Name)
return "Finished"
elseif what == "Truck" then
local thing = game.ServerStorage.Events.TruckAccident:Clone()
thing.Parent = part
thing:SetPrimaryPartCFrame(part.CFrame)
print("Generated a TruckAccident in "..part.Name)
return "Finished"
end
end
game.Workspace.RemoteEvents.RandomEvent.OnServerEvent:connect(function(msg)
local number = math.random(1,#game.Workspace.Events:GetChildren())
if number == 1 then
createFire("A",5,10,Color3.new(255/255, 0/255, 0/255),Color3.new(250/255, 0/255, 0/255))
elseif number == 2 then
createFire("B",10,15,Color3.new(170/255, 0/255, 127/255),Color3.new(170/255, 0/255, 127/255))
elseif number == 3 then
createFire("C",15,20,Color3.new(85/255, 85/255, 0/255),Color3.new(85/255, 85/255, 0/255))
elseif number == 4 then
createFire("D",20,25,Color3.new(0/255, 85/255, 255/255),Color3.new(0/255, 85/255, 255/255))
elseif number == 5 then
createAccident(game.Workspace.Events.Accidents.A,"Car")
elseif number == 6 then
createAccident(game.Workspace.Events.Accidents.B,"Truck")
end
end)
game.Workspace.RemoteEvents.RestoreGame.OnServerEvent:connect(function(msg)
for i,v in pairs(game.Workspace.Events:GetChildren()) do
if v.ClassName == "Folder" then
for i,x in pairs(v:GetChildren()) do
if x:FindFirstChild("Fire") ~= nil then
repeat x.Fire:Destroy() wait() until x:FindFirstChild("Fire") == nil
end
if x:FindFirstChild("CarAccident") ~= nil then
repeat x.CarAccident:Destroy() wait() until x:FindFirstChild("CarAccident") == nil
end
if x:FindFirstChild("TruckAccident") ~= nil then
repeat x.TruckAccident:Destroy() wait() until x:FindFirstChild("TruckAccident") == nil
end
end
end
end
end)
game.Workspace.RemoteEvents.FireA.OnServerEvent:connect(function(msg)
createFire("A",5,10,Color3.new(255/255, 0/255, 0/255),Color3.new(250/255, 0/255, 0/255))
end)
game.Workspace.RemoteEvents.FireB.OnServerEvent:connect(function(msg)
createFire("B",10,15,Color3.new(170/255, 0/255, 127/255),Color3.new(170/255, 0/255, 127/255))
end)
game.Workspace.RemoteEvents.FireC.OnServerEvent:connect(function(msg)
createFire("C",15,20,Color3.new(85/255, 85/255, 0/255),Color3.new(85/255, 85/255, 0/255))
end)
game.Workspace.RemoteEvents.FireD.OnServerEvent:connect(function(msg)
createFire("D",20,25,Color3.new(0/255, 85/255, 255/255),Color3.new(0/255, 85/255, 255/255))
end)
game.Workspace.RemoteEvents.CarAccident.OnServerEvent:connect(function(msg)
createAccident(game.Workspace.Events.Accidents.A,"Car")
end)
game.Workspace.RemoteEvents.TruckAccident.OnServerEvent:connect(function(msg)
createAccident(game.Workspace.Events.Accidents.B,"Truck")
end)
Like I said, Eye cancer
Thank you!

2 comments
Oh, so when I invoke the event. "remoteEvent:FireServer(1)" for example?
Exactly.