Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

you does the health thing not work and how do i make the leaderstats invisable ?

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)

1 comment

0

what do you want the script to do? Explain!

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.