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

Why wont this Leaderboard script work?

Alright I have a problem, I want to make a script, but I'm bad. So, heres the problem I have this script which is an XP Simulator http://www.roblox[DOT]com/Cash-Kills-Deaths-XP-Level-Leaderboard-item?id=86108002, and I want to combine it with this script http://www.roblox.com/Shop-Gui-item?id=206324278, this script is the shop gui in which, inside the XP Simulator, it has a leaderboard, and in the shop gui item, it has also a leaderboard which is it shows only "Gold" as the "IntValue", and if I combine it with the XP Simulator for it to show "Kills, Death, Level, XP, Gold", I can't, because I really haven't figure out how to do it, and thats what I'am aiming for, and I need your help. Sorry if this is confusing.

Thank You,

alan3401

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

function onLevelUp(player, XP, level)
	local m = Instance.new("Hint")
	m.Parent = game.Workspace
	m.Text = player.Name .. " has leveled up!" -- the message display when player lv up
	wait(3)
	m.Parent = nil
   player.Humanoid.Health = 0
end


function onPlayerRespawned(player)
	wait(2)

	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 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

    local gold = Instance.new("IntValue")
    gold.Name = "Gold"
    gold.Parent = script.Parent.Parent.Parent.leaderstats
    gold.Value = 50
	
	local type = "Gold"

    bot = script.Parent.Parent.Parent.Character
    human = bot.Humanoid

    cash = 1

end
   
	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)


---------------------------------------------------------------------------------------------------------------
-- 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(2)
	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 onDied()
	local killer = human:findFirstChild("creator")
	if killer~=nil then
		local money = killer.Value.leaderstats:findFirstChild(type)
		if money~= nil then
			money.Value = money.Value + cash
		end
	end
script.Parent.Parent.Parent:findFirstChild("leaderstats").Gold.Value = script.Parent.Parent.Parent:findFirstChild("leaderstats").Gold.Value + 0
end

bot.Humanoid.Died:connect(onDied)
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)

2 comments

0

Please tell us what's wrong. No one has time to read ALL of this.

0

This is a free model.

1 answer

✓ Accepted answer

Please do not post code that is not yours.

You giving us two scripts and saying that you have no idea how to code but you want them combined is one, just rude. And two, considered non constructive.

This is not a request site.

This discussion is preserved as it was. New answers, comments, and votes are closed.