Multiple Spawns

Script (ServerScriptService)

Create a Folder in Workspace called Spawns

Insert Spawn Objects into Spawns folder

Rename Spawn Objects to Spawn1, Spawn2, ...

Insert a Bool Value under each Spawn Object, rename it to Free, select Value box

local function onPlayerJoin(player)

for _, spwn in pairs(game.Workspace.Spawns:GetChildren()) do

if spwn.Free.Value then

player.RespawnLocation = spwn

spwn.Free.Value = false

local spawnTag = Instance.new('StringValue')

spawnTag.Name = 'SpawnTag'

spawnTag.Value = spwn.Name

spawnTag.Parent = player

break

end

end

end


local function onPlayerExit(player)

local spawnTag = player.SpawnTag.Value

print(spawnTag)

local spwn = game.Workspace.Spawns[spawnTag]

spwn.Free.Value = true

end


game.Players.PlayerAdded:Connect(onPlayerJoin)

game.Players.PlayerRemoving:Connect(onPlayerExit)

Script (ServerScriptService) with Back to Spawn

local function onPlayerJoin(player)

for _, spwn in pairs(game.Workspace.Spawns:GetChildren()) do

if spwn.Free.Value then

player.RespawnLocation = spwn

spwn.Free.Value = false

local spawnTag = Instance.new('StringValue')

spawnTag.Name = 'SpawnTag'

spawnTag.Value = spwn.Name

spawnTag.Parent = player

local spawnLoc = Instance.new('Vector3Value')

spawnLoc.Name = 'SpawnLocation'

spawnLoc.Value = spwn.Position

spawnLoc.Parent = player

break

end

end

end


local function onPlayerExit(player)

local spawnTag = player.SpawnTag.Value

print(spawnTag)

local spwn = game.Workspace.Spawns[spawnTag]

spwn.Free.Value = true

end


game.Players.PlayerAdded:Connect(onPlayerJoin)

game.Players.PlayerRemoving:Connect(onPlayerExit)

LocalScript for TextButton

local button = script.Parent


button.MouseButton1Click:Connect(function()

local player = game.Players.LocalPlayer

local spawnLocation = player:FindFirstChild('SpawnLocation')

player.Character.HumanoidRootPart.CFrame = CFrame.new(spawnLocation.Value + Vector3.new(0,3,0))

end)

TextButton on Screen


Explorer Menu Layout