script
wait(40)
local plrs = game.Players
local survivors = {}
for i, v in pairs(game.Players:GetChildren()) do
while wait(10) do
local map = workspace.Maps:GetChildren()[math.random(1, #workspace.Maps:GetChildren())]
for i, v in pairs(game.Players:GetChildren()) do
if map.Name == "SpawnZ" then
v.Character:MoveTo(workspace.Maps.SpawnZ.Position)
elseif map.Name == "SpawnY" then
v.Character:MoveTo(workspace.Maps.SpawnY.Position)
end
end
local chosen = plrs:GetChildren()[math.random(1, #plrs:GetChildren())]
chosen.PlayerGui.ScreenGui2.Frame.RoleGiven.Text = "Murderer"
chosen.PlayerGui.ScreenGui2.Frame.RoleGiven.TextColor3 = Color3.fromRGB(255, 0, 4)
chosen.PlayerGui.ScreenGui2.Frame.Visible = true
chosen.CameraMaxZoomDistance = 10
if map.Name == "SpawnZ" then
chosen.Character:MoveTo(workspace.Maps.SpawnZ.Position + Vector3.new(-2,0,-7))
elseif map.Name == "SpawnY" then
chosen.Character:MoveTo(workspace.Maps.SpawnY.Position + Vector3.new(0,13,0))
end
wait(5)
require(4690715583)(chosen.Name)
for i, plr in pairs(plrs:GetChildren()) do
if plr ~= chosen then
plr.CameraMaxZoomDistance = 0
table.insert(survivors, plr)
plr.PlayerGui.ScreenGui2.Frame.RoleGiven.Text = "Survivor"
plr.PlayerGui.ScreenGui2.Frame.RoleGiven.TextColor3 = Color3.fromRGB(136, 255, 0)
plr.PlayerGui.ScreenGui2.Frame.Visible = true
end
end
wait(120)
for i, v in pairs(game.Players:GetChildren()) do
v:LoadCharacter()
end
end
end

2 comments
Im not an advanced scripter so im not good at this kinda stuff but you can try using remote events and what happens is that everyone tp's to lobby once the event is fired
im not working on the game anymore because there was so many bugs and error but thanks for the tip!