The issue might be because you’re not connecting the Died signal to the player’s new character’s Humanoid. When a player’s character is added, await for their new humanoid to be added, then when they die remove a life.
local hum = plr.Character:WaitForChild("Humanoid")
local leaderstats = plr:FindFirstChild("leaderstats")
local stat = leaderstats:FindFirstChild("lives") -- you might have to change that
stat.Value = stat.Value -1
:connect is deprecated. You should use it in favor of :Connect and you should indent your code properly.
Also you might want to make sure the character already exists and to call your CharacterAdded function on the already existing character if that is the case.
Also @Deezylolz you would put this in StarterPlayerScripts or ReplicatedFirst likely. Since your game is 1 player, and if you’re not worried about players cheating, then you can just do everything on the client. However if you don’t want player’s cheating then I suggest using some Scripts on the server.