Custom Death System

Then, you can solve like changing respawn time to 10 and adding countdown in gui.

Please read whatt I asked for in the first place -
I need a system not a issue to fix my current system or give me suggestions on how to achieve it.

You could try using Players.CharacterAutoLoads property, this makes it so you have to manually respawn the player.

1 Like

If you could try and work around my code that I have already given where I’ve shown it’s bugging could be really helpful, for a reminder.

https://gyazo.com/248b461367023bff23f5a5e2db79771f

wait()
local Humanoid = script.Parent:FindFirstChild("Humanoid")
if script.Parent:GetAttribute("Species") ~= "Mortal" then
	Humanoid:SetStateEnabled(Enum.HumanoidStateType.Dead, false)
else
	Humanoid:SetStateEnabled(Enum.HumanoidStateType.Dead, true)
end

Humanoid.HealthChanged:Connect(function(val)
	if val <= 2 then
		local Character = script.Parent
		Character.Ragdoll.Activate.Value = true
		
		print("Player has died!")
		local Player = game:GetService("Players"):GetPlayerFromCharacter(Character)

		for _, v in pairs(Player.PlayerGui.Core.Notifications.Otherside:GetChildren()) do
			if v:IsA("TextLabel") then game:GetService("TweenService"):Create(v, TweenInfo.new(.5), {TextTransparency = 0}):Play() end
		end

		wait(2)
		for _, v in pairs(Player.PlayerGui.Core.Notifications.Otherside:GetChildren()) do
			if v:IsA("TextButton") then game:GetService("TweenService"):Create(v, TweenInfo.new(.5), {TextTransparency = 0}):Play() end
		end

		Player.PlayerGui.Core.Notifications.Otherside.Selected.Changed:Connect(function(string)
			if string == "HoldOn" then
				for _, v in pairs(Player.PlayerGui.Core.Notifications.Otherside:GetChildren()) do
					if v:IsA("TextLabel") then game:GetService("TweenService"):Create(v, TweenInfo.new(.5), {TextTransparency = 1}):Play() end
				end

				wait(.9)

				for _, v in pairs(Player.PlayerGui.Core.Notifications.Otherside:GetChildren()) do
					if v:IsA("TextButton") then game:GetService("TweenService"):Create(v, TweenInfo.new(.5), {TextTransparency = 1}):Play() end
				end
				
				return
			elseif string == "MoveOn" then
				for _, v in pairs(Player.PlayerGui.Core.Notifications.Otherside:GetChildren()) do
					if v:IsA("TextLabel") then game:GetService("TweenService"):Create(v, TweenInfo.new(.5), {TextTransparency = 1}):Play() end
				end

				wait(.9)

				for _, v in pairs(Player.PlayerGui.Core.Notifications.Otherside:GetChildren()) do
					if v:IsA("TextButton") then game:GetService("TweenService"):Create(v, TweenInfo.new(.5), {TextTransparency = 1}):Play() end
				end

				Player:LoadCharacter()
			end
		end)
	end
end)

Apologies if you have misunderstood me, although I’m trying to indicate if there’s something wrong with my code then could try and find a solution to my error.

The solution has been already suggested by 2 people above:

Basically the CharacterAutoLoads property determines whether Roblox auto respawns characters for you (reset) or let you manually respawn them. So setting the property to false will allow you to manually respawn the character at any time, and it wouldn’t automatically respawn.

So the character will stay dead on the ground until you call the LoadCharacter function.

Then after you load it with the function, depending on what the player chose, teleport the character where you want it to be.