I used collection service to make it so when obstacles are touched, it damages the player, but when i use a script to load it in the game as one of the maps, the collection service script stops working and they dont damage the player, this is the script i use to load in randomised maps
local LobbyMinutes = 0
local LobbySeconds = 1
local GameMinutes = 4
local GameSeconds = 30
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local coinEvent = game:GetService("ServerStorage"):FindFirstChild("CoinEvent")
local multEvent = game:GetService("ServerStorage"):FindFirstChild("MultEvent")
local deletecoinsevent = game:GetService("ServerStorage"):FindFirstChild("DeleteCoinsEvent")
local deletemultsevent = game:GetService("ServerStorage"):FindFirstChild("DeleteMultEvent")
local TimerValues = ReplicatedStorage:WaitForChild("TimerValues")
local gameTimer = TimerValues.GameTimer
local lobbyTimer = TimerValues.LobbyTimer
local finishline = script.Parent -- Change this
local placements = {}
local enableevent = ReplicatedStorage.Remotes.PEnableEvent
local disableevent = ReplicatedStorage.Remotes.PDisableEvent
local placeevent = game.ReplicatedStorage.Remotes.PlacementEvent
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local FadeInfo = TweenInfo.new(1.3,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false,0)
function teleportPlayers(RP,SpawnPart)
if RP ~= nil then
if SpawnPart ~= nil then
RP.CFrame = SpawnPart.CFrame
end
end
end
game.ReplicatedStorage:FindFirstChild("Remotes"):FindFirstChild("GetPoints").OnServerEvent:Connect(function(Player,Point)
local PlayerPoint = Player:FindFirstChild("Points")
if PlayerPoint ~= nil then
PlayerPoint.Value = Point
end
end)
while true do
lobbyTimer.Minutes.Value = LobbyMinutes
lobbyTimer.Seconds.Value = LobbySeconds
repeat wait(1)
if lobbyTimer.Seconds.Value > 0 then
lobbyTimer.Seconds.Value -= 1
else
if lobbyTimer.Minutes.Value > 0 then
lobbyTimer.Minutes.Value -= 1
lobbyTimer.Seconds.Value = 59
end
end
until lobbyTimer.Minutes.Value == 0 and lobbyTimer.Seconds.Value == 0
local MapstoCoins = {
["SnowMap1"] = "CoinSpawnSnow",
["DesertMap1"] = "CoinSpawnDesert",
["BeachMap1"] = "CoinSpawnBeach"
}
local MapstoLobby = {
["SnowMap1"] = "SnowLobby",
["DesertMap1"] = "DesertLobby",
["BeachMap1"] = "BeachLobby"
}
local MapstoMult = {
["DesertMap1"] = "MultSpawnDesert",
["SnowMap1"] = "MultSpawnSnow",
["BeachMap1"] = "MultSpawnBeach"
}
local mapHolder = game:GetService("ServerStorage").MapHolder
local coinsHolder = game:GetService("ServerStorage").CoinsHolder
local lobbyHolder = game:GetService("ServerStorage").LobbyHolder
local multHolder = game:GetService("ServerStorage").MultHolder
local Children = mapHolder:GetChildren()
local CoinChildren = coinsHolder:GetChildren()
local LobChildren = lobbyHolder:GetChildren()
local MultChildren = multHolder:GetChildren()
local Index = math.random(1,#Children)
local randomInt = Children[Index]
local finalMap = mapHolder:FindFirstChild(randomInt.Name):Clone()
for _,coinmaps in pairs(CoinChildren) do
if coinmaps.Name == MapstoCoins[randomInt.Name] then
local finalcoinMap = coinmaps:Clone()
for _,lobmaps in pairs(LobChildren) do
if lobmaps.Name == MapstoLobby[randomInt.Name] then
local finalobby = lobmaps:Clone()
for _,multmap in pairs(MultChildren) do
if multmap.Name == MapstoMult[randomInt.Name] then
local finalmultMap = multmap:Clone()
finalcoinMap.Parent = workspace.ChosenCoinMap
finalmultMap.Parent = workspace.ChosenMultMap
finalobby.Parent = workspace
coinEvent:Fire(coinmaps)
multEvent:Fire(multmap)
print("coineventfired")
finalMap.Parent = workspace
for _, LocalPlayer in pairs(game:GetService("Players"):GetChildren()) do
if LocalPlayer.Character then
if LocalPlayer:FindFirstChild('PlayerGui') and LocalPlayer.Character:FindFirstChild('HumanoidRootPart') then
local GUI = Instance.new("ScreenGui")
GUI.Name = "Fade"
GUI.Parent = LocalPlayer.PlayerGui
GUI.ResetOnSpawn = false
GUI.IgnoreGuiInset = true
GUI.Enabled = true
local NewValue = Instance.new("BoolValue")
NewValue.Name = "Ingame"
NewValue.Parent = LocalPlayer.Character
NewValue.Value = false
local Frame = Instance.new("Frame")
Frame.Parent = GUI
Frame.BackgroundTransparency = 1
Frame.BackgroundColor3 = Color3.fromRGB(0,0,0)
Frame.Visible = true
Frame.Size = UDim2.new(1,0,1,0)
Frame.Position = UDim2.new(0,0,0,0)
-- goes to riderhandler
enableevent:FireClient(LocalPlayer)
local TweenIn = TweenService:Create(Frame,FadeInfo,{BackgroundTransparency = 0})
TweenIn:Play()
TweenIn.Completed:Connect(function()
teleportPlayers(LocalPlayer.Character.HumanoidRootPart,finalMap:FindFirstChild('SpawnPart'))
wait(2)
local TweenOut = TweenService:Create(Frame,FadeInfo,{BackgroundTransparency = 1})
TweenOut:Play()
TweenOut.Completed:Connect(function()
GUI:Destroy()
end)
end)
end
end
end
wait(1.6 + 2)
gameTimer.Minutes.Value = GameMinutes
gameTimer.Seconds.Value = GameSeconds
repeat wait(1)
if gameTimer.Seconds.Value > 0 then
gameTimer.Seconds.Value -= 1
else
if gameTimer.Minutes.Value > 0 then
gameTimer.Minutes.Value -= 1
gameTimer.Seconds.Value = 59
end
end
until gameTimer.Minutes.Value == 0 and gameTimer.Seconds.Value == 0
for _, LocalPlayer in pairs(game:GetService("Players"):GetChildren()) do
if LocalPlayer.Character then
if LocalPlayer:FindFirstChild('PlayerGui') and LocalPlayer.Character:FindFirstChild('Ingame') then
local GUI = Instance.new("ScreenGui")
GUI.Name = "Fade"
GUI.Parent = LocalPlayer.PlayerGui
GUI.ResetOnSpawn = false
GUI.IgnoreGuiInset = true
GUI.Enabled = true
local Frame = Instance.new("Frame")
Frame.Parent = GUI
Frame.BackgroundTransparency = 1
Frame.BackgroundColor3 = Color3.fromRGB(0,0,0)
Frame.Visible = true
Frame.Size = UDim2.new(1,0,1,0)
Frame.Position = UDim2.new(0,0,0,0)
local TweenIn = TweenService:Create(Frame,FadeInfo,{BackgroundTransparency = 0})
TweenIn:Play()
TweenIn.Completed:Connect(function()
LocalPlayer:LoadCharacter()
teleportPlayers(LocalPlayer.Character.HumanoidRootPart,game.Workspace.GameEndSpawn)
wait(2)
local TweenOut = TweenService:Create(Frame,FadeInfo,{BackgroundTransparency = 1})
TweenOut:Play()
TweenOut.Completed:Connect(function()
GUI:Destroy()
end)
end)
end
end
end
game.ReplicatedStorage:FindFirstChild("Remotes"):FindFirstChild("GetPoints"):FireAllClients()
task.wait(2.5)
local placements = {}
for i,plr in pairs(game.Players:GetPlayers()) do
table.insert(placements,{['Player'] = plr,['Points'] = plr.Points.Value})
end
table.sort(placements,function(a,b)
return a.Points > b.Points
end)
placeevent:FireAllClients({placements[1],placements[2],placements[3],placements[4],placements[5],placements[6],placements[7],placements[8],placements[9],placements[10],placements[11],placements[12],placements[13],placements[14],placements[15],placements[16],placements[17],placements[18],placements[19],placements[20]})
for _,GetPl in pairs(Players:GetPlayers()) do
--goes to riderhandler
disableevent:FireClient(GetPl)
GetPl.Points.Value = 0
GetPl.PointMultiply.Value = 0
end
wait(1.6)
deletecoinsevent:Fire()
deletemultsevent:Fire()
finalMap:Destroy()
finalcoinMap:Destroy()
finalobby:Destroy()
finalmultMap:Destroy()
wait(3)
end
end
end
end
end
end
end
the maps are all models with folders inside for each of its parts, one of the folders in where the obstacles are
does anyone know why its happening?



