Ok so I made this level up script, but every time when a person enters the game they would explode. After they explode everything would be fine, but I was just wondering if someone could help me fix it. I'll put the script at the bottom.

scoreKey = "PlayerScore"
levelKey = "PlayerLevel"

function onPlayerEntered(newPlayer)
	if newPlayer.Name ~= "Player1" then
	newPlayer:WaitForDataReady()
	end

	local stats = Instance.new("IntValue")
	stats.Name = "supercool"

	local xp = Instance.new("IntValue")
	xp.Name = "XP"

	local level = Instance.new("IntValue")
	level.Name = "Lvl"

	xp.Parent = stats
	level.Parent = stats
	stats.Parent = newPlayer	
	
	xp.Changed:connect(function() onXPChanged(newPlayer, xp, level) end)
	level.Changed:connect(function() onlevelChanged(newPlayer, xp, level) end)	
	newPlayer.Changed:connect(function (property) end)

local ok, ret = pcall(function() return newPlayer:LoadNumber(scoreKey) end)
	if ok then
		if ret ~= 0 then
			xp.Value = ret
		else
			print("Nothing to load/score was 0")
		end
	else
		print("Error:", ret)
	end
	
	local ok2, ret1 = pcall(function() return newPlayer:LoadNumber(levelKey) end)
	if ok2 then
		if ret1 ~= 0 then
			level.Value = ret1
		else
			print("Nothing to load/score was 0")
			level.Value = 1
		end
	else
		print("Error:", ret1)
	end
	wait(2)

	if newPlayer.Character~=nil then
	newPlayer.Character.Humanoid.MaxHealth = level.Value * 25 + 100
	newPlayer.Character.Humanoid.Health = 0
	else
	wait()
	end
end


function onXPChanged(player, XP, level)
	if player.Character~=nil then
	if XP.Value>=level.Value * 125  then
		XP.Value = (XP.Value - (level.Value * 125))
		level.Value = level.Value + 1
		else
		wait()
	end
	end
end

function onlevelChanged(player, XP, level)
	if player.Character~=nil then
		for i = 1,5 do
			local fireworks = Instance.new("Part")
			fireworks.Shape = 0
			fireworks.formFactor = "Symmetric"
			fireworks.Size = Vector3.new(1,1,1)
			fireworks.BrickColor = BrickColor.new(Color3.new(10, 1, 10))
			fireworks.CFrame = player.Character.Head.CFrame + Vector3.new(0,2,0)
			fireworks.Parent = game.Workspace
			game:GetService("Debris"):AddItem(fireworks, 2)
			fireworks.Velocity = Vector3.new(math.random(-30,30),math.random(-30,30),math.random(-30,30))
		end
	end
	if player.Character ~= nil then
	player.Character.Humanoid.MaxHealth = level.Value * 25 + 100
	player.Character.Humanoid.Health = level.Value * 25 + 100
	end
	local m = Instance.new("Hint")
	m.Parent = game.Workspace
	m.Text = player.Name .. " has leveled up!"
	wait(2)
	m.Parent = nil	
end

local respawnTime = .5
 
local Players = Game:GetService("Players")
Players.CharacterAutoLoads = false
 
Players.PlayerAdded:connect(function(Player)
	Player.CharacterAdded:connect(function(Character)
		-- find the humanoid, and detect when it dies
		local Humanoid = Character:FindFirstChild("Humanoid")
		if Humanoid then
			Humanoid.Died:connect(function()
				-- delay, then respawn the character
				wait(respawnTime)		
				Player:LoadCharacter()
				Player.Character.Humanoid.MaxHealth = Player.supercool.Lvl.Value * 25 + 100
				Player.Character.Humanoid.Health = Player.supercool.Lvl.Value * 25 + 100
				end)
						
			end
	end)
	Player:LoadCharacter()
end)


game.Players.ChildAdded:connect(onPlayerEntered)