Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Basic Leaderstats --
- function onXPChanged(player, XP, level)
- if XP.Value>=level.Value * 10 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
- -- USELESS (Unless used otherwise) --
- function onLevelUp(player, XP, level)
- local m = Instance.new("Hint")
- m.Parent = game.Workspace
- m.Text = player.Name .. " Leveled up!" -- the message display when player lv up
- wait()
- m.Parent = nil
- player.Humanoid.Health = 0
- end
- -------------------------------------
- function onPlayerRespawned(player)
- wait(5)
- player.Character.Humanoid.Health = player.Character.Humanoid.Health + player.leaderstats.Level * 10
- player.Character.Humanoid.MaxHealth = player.Character.Humanoid.MaxHealth + player.leaderstats.Level * 10
- end
- function onPlayerEntered(newPlayer)
- local stats = Instance.new("IntValue")
- stats.Name = "leaderstats"
- local stats2 = Instance.new("IntValue")
- stats2.Name = "Tycoon"
- local cash = Instance.new("IntValue")
- cash.Name = "Coins" --Change "Cash" to change the currency name.
- cash.Value = 0 --Change the 0 to how much you want people to start with
- local kills = Instance.new("IntValue")
- kills.Name = "Kills"
- kills.Value = 0
- local deaths = Instance.new("IntValue")
- deaths.Name = "Deaths"
- deaths.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
- cash.Parent = stats
- stats2.Parent = newPlayer
- stats.Parent = newPlayer
- kills.Parent = stats
- deaths.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)
- 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
- -- Killfeed (Requires GUI) --
- 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
- 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 cash = stats:findFirstChild("Coins")
- local xp = stats:findFirstChild("XP")
- if killer ~= player then
- kills.Value = kills.Value + 1
- cash.Value = cash.Value + 25
- xp.Value = xp.Value + 5
- else
- kills.Value = kills.Value - 0
- end
- Send_DB_Event_Kill(killer, player)
- end
- end
- end
- game.Players.ChildAdded:connect(onPlayerEntered)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement