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)