How can I make the player reset everytime there is a new map?

I want to make it so that everytime the map/round ends, I want the player to respawn character. Any help? Thank you!

local MapsFolder = game.ReplicatedStorage.Maps
local Maps = MapsFolder:GetChildren()
local RoundTime = script.RoundTime
local IntermermissionTime = script.IntermissionTime

while true do

	local ChosenMap = Maps[math.random(1,#Maps)]
	local MapClone = ChosenMap:Clone()

	wait(IntermermissionTime.Value)

	MapClone.Parent = game.Workspace
	MapClone:MakeJoints()

	wait(RoundTime.Value)

	MapClone:Destroy()
end
1 Like

Player:LoadCharacter() will respawn the character every time without killing it which would trigger the humanoid.Died Event

1 Like

I tried implemnting it. It somewhat works but it is buggy, I’m not entirely sure where I should put it. I want the character to reset once the next map is chosen.

local MapsFolder = game.ReplicatedStorage.Maps
local Maps = MapsFolder:GetChildren()
local RoundTime = script.RoundTime
local IntermermissionTime = script.IntermissionTime

game.Players.PlayerAdded:Connect(function(player)

while true do

	local ChosenMap = Maps[math.random(1,#Maps)]
	local MapClone = ChosenMap:Clone()

	wait(IntermermissionTime.Value)

	MapClone.Parent = game.Workspace
	MapClone:MakeJoints()

	wait(RoundTime.Value)

	MapClone:Destroy()
	
	player:LoadCharacter()
	
 end
end)
1 Like

Maybe writing player:LoadCharacter() before the MapClone:Destroy().
Another thing that is missing in your code: wait is a deprecated function, better use task.wait(), it is also more optimized.

1 Like

Try this code:

local MapsFolder = game.ReplicatedStorage.Maps
local Maps = MapsFolder:GetChildren()
local RoundTime = script.RoundTime
local IntermermissionTime = script.IntermissionTime

game.Players.PlayerAdded:Connect(function(player)

	while true do
	
		local ChosenMap = Maps[math.random(1,#Maps)]
		local MapClone = ChosenMap:Clone()
	
		task.wait(IntermermissionTime.Value)
	
		MapClone.Parent = game.Workspace
		MapClone:MakeJoints()
	    player:LoadCharacter()
	
		task.wait(RoundTime.Value)
	
		MapClone:Destroy()
		
		
	 end
end)

[/quote]

1 Like

For those wondering, I fixed it:

local MapsFolder = game.ReplicatedStorage.Maps
local Maps = MapsFolder:GetChildren()
local RoundTime = script.RoundTime
local IntermermissionTime = script.IntermissionTime
local Players = game:GetService("Players")

	while true do

		local ChosenMap = Maps[math.random(1,#Maps)]
		local MapClone = ChosenMap:Clone()

		task.wait(IntermermissionTime.Value)

		MapClone.Parent = game.Workspace
		MapClone:MakeJoints()
		
	for _, player in Players:GetPlayers() do
		task.spawn(player.LoadCharacter, player)
	end

	task.wait(RoundTime.Value)
	MapClone:Destroy()


	end

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.