Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

prevent humanoid spawning off the map?

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














2 comments

0

Maybe You can have the players respawn in a remote area then CFraming thier root parts into your desired location may work.

0

Set the CFrame of the HumanoidRootPart to a part at your spawn map.

1 answer

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

This discussion is preserved as it was. New answers, comments, and votes are closed.