I am having a problem with respawning a player when it dies. as sometimes the player spawn outside the map like this picture.
I think this problem started when I use ClonedMap:Destroy() after the game ended thus making the player respawning off the map.
is there any script that I can use to prevent the player from respawning off the map after it dies or when the maps changes?
here is the full code.
local PointsService = game:GetService("PointsService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local ServerStorage = game:GetService("ServerStorage") local MapsFolder = ServerStorage:WaitForChild("Maps") local Status = ReplicatedStorage:WaitForChild("Status") local GameLength = 150 local reward = 50 while true do Status.Value = "waiting for players" repeat wait(1) until game.Players.NumPlayers >= 2 Status.Value = "intermission" wait(10) local plrs = {} for i, player in pairs(game.Players:GetPlayers()) do if player then table.insert(plrs,player) end end wait(2) local AvailableMaps = MapsFolder:GetChildren() local ChosenMap = AvailableMaps[math.random(1,#AvailableMaps)] Status.Value = ChosenMap.Name.." Chosen" local ClonedMap = ChosenMap:Clone() ClonedMap.Parent = workspace local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints") if not SpawnPoints then print ("spawnpoint not founds!") end local AvailableSpawnPoints = SpawnPoints:GetChildren() for i, player in pairs(plrs) do if player then character = player.Character if character then character:FindFirstChild("HumanoidRootPart").CFrame = AvailableSpawnPoints[1].CFrame + Vector3.new(0,20,0) table.remove(AvailableSpawnPoints,1) local Sword = ServerStorage.Sword:Clone() Sword.Parent = player.Backpack local GameTag = Instance.new("BoolValue") GameTag.Name = "GameTag" GameTag.Parent = player.Character else if not player then table.remove(plrs,i) end end end end Status.Value = "Get ready to play" wait(2) for i = GameLength, 0, -1 do for x, player in pairs(plrs) do if player then character = player.Character if not character then table.remove(plrs,x) else if character:FindFirstChild("GameTag") then print(player.Name.." is still in the game!") else table.remove(plrs,x) print(player.Name.." has been removed") end end else table.remove(plrs,x) print(player.Name.." has been removed") end end Status.Value = "There are "..i.." seconds remaining, and "..#plrs.." players left" if #plrs == 1 then Status.Value = "the winner is "..plrs[1].Name plrs[1].leaderstats.Bucks.Value = plrs[1].leaderstats.Bucks.Value + reward break elseif #plrs == 0 then Status.Value = "nobody won" break elseif i == 0 then Status.Value = "Time up" end wait(1) end print("end of game") wait(2) for i, player in pairs(game.Players:GetPlayers()) do character = player.Character if not character then else if character:FindFirstChild("GameTag") then character.GameTag:Destroy() end if player.Backpack:FindFirstChild("Sword") then player.Backpack.Sword:Destroy() end if player.Backpack:FindFirstChild("Sword") then character.Sword:Destroy() end end player:LoadCharacter() end ClonedMap:Destroy() Status.Value = "Game Ended" wait(2) end
Make the script create a spawn pad, Remove the decal, make it transparent, then wait until the player respawns, then destroy the spawn pad. Or make it no collisions