function onXPChanged(player, XP, level)
if XP.Value>=level.Value * 50 then -- Lv 1 to Lv 2 need 20 XP
XP.Value = 0 -- If you do not want the Xp turn to 0 when lv up , delete this line
level.Value = level.Value + 1
end
end
function onLevelUp(player, XP, level)
print('nothing')
end
function onPlayerRespawned(player)
wait(5)
player.Character.Humanoid.Health = player.Leaderstats.Level * 50
player.Character.Humanoid.MaxHealth = player.Leaderstats.Level * 50
end
function onPlayerEntered(newPlayer)
local stats = Instance.new("IntValue")
stats.Name = "leaderstats"
local kills = Instance.new("IntValue")
kills.Name = "Gold"
kills.Value = 0
local level = Instance.new("IntValue")
level.Name = "Level" -- The Name of LV
level.Value = 1
local xp = Instance.new("IntValue")
xp.Name = "XP" -- The Name of XP
xp.Value = 0
stats.Parent = newPlayer
kills.Parent = stats
level.Parent = stats
xp.Parent = stats
xp.Changed:connect(function() onXPChanged(newPlayer, xp, level) end)
level.Changed:connect(function() onLevelUp(newPlayer, xp, level) end)
---------------------------------------------------------------------------------------------------------------
-- Do not edit past here or you will be risking breaking the script!!!! --
---------------------------------------------------------------------------------------------------------------
-- VERY UGLY HACK
-- Will this leak threads?
-- Is the problem even what I think it is (player arrived before character)?
while true do
if newPlayer.Character ~= nil then break end
wait(5)
end
local humanoid = newPlayer.Character.Humanoid
humanoid.Died:connect(function() onHumanoidDied(humanoid, newPlayer) end )
-- start to listen for new humanoid
newPlayer.Changed:connect(function(property) onPlayerRespawn(property, newPlayer) end )
stats.Parent = newPlayer
end
function Send_DB_Event_Died(victim, killer)
-- killer may be nil
local killername = "unknown"
if killer ~= nil then killername = killer.Name end
print(victim.Name, " was killed by ", killername)
if shared["deaths"] ~= nil then
shared["deaths"](victim, killer)
print("Death event sent.")
end
end
function Send_DB_Event_Kill(killer, victim)
print(killer.Name, " killed ", victim.Name)
if shared["kills"] ~= nil then
shared["kills"](killer, victim)
print("Kill event sent.")
end
end
function onHumanoidDied(humanoid, player)
local stats = player:findFirstChild("leaderstats")
if stats ~= nil then
local deaths = stats:findFirstChild("Deaths")
deaths.Value = deaths.Value + 1
-- do short dance to try and find the killer
local killer = getKillerOfHumanoidIfStillInGame(humanoid)
Send_DB_Event_Died(player, killer)
handleKillCount(humanoid, player)
end
end
function onPlayerRespawn(property, player)
-- need to connect to new humanoid
if property == "Character" and player.Character ~= nil then
local humanoid = player.Character.Humanoid
local p = player
local h = humanoid
humanoid.Died:connect(function() onHumanoidDied(h, p) end )
end
end
function getKillerOfHumanoidIfStillInGame(humanoid)
-- returns the player object that killed this humanoid
-- returns nil if the killer is no longer in the game
-- check for kill tag on humanoid - may be more than one - todo: deal with this
local tag = humanoid:findFirstChild("creator")
-- find player with name on tag
if tag ~= nil then
local killer = tag.Value
if killer.Parent ~= nil then -- killer still in game
return killer
end
end
return nil
end
function handleKillCount(humanoid, player)
local killer = getKillerOfHumanoidIfStillInGame(humanoid)
if killer ~= nil then
local stats = killer:findFirstChild("leaderstats")
if stats ~= nil then
local kills = stats:findFirstChild("Kills")
local xp = stats:findFirstChild("XP")
if killer ~= player then
kills.Value = kills.Value + 1
xp.Value = xp.Value + 3
else
kills.Value = kills.Value - 0
end
Send_DB_Event_Kill(killer, player)
end
end
end
game.Players.ChildAdded:connect(onPlayerEntered)
✓ ANSWER ACCEPTED
you does the health thing not work and how do i make the leaderstats invisable ?
1 answer
✓ Accepted answer
For leaderstats:
game.StarterGui:SetCoreGuiEnabled(0,false)
And for the health thing, I'm guessing you mean the function onPlayerRespawned(player). First off, I don't think you ever actually call the function, and you might want to change the maxhealth first, so the health isn't greater then the maximum health.
This discussion is preserved as it was. New answers, comments, and votes are closed.

1 comment
what do you want the script to do? Explain!