Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Help With a Leaderboard Please?

Asked by 10 years ago

I need help. Urgently. Please. ~<3~

I recently made a Script that tracks ko/wo, and it's not working. On connect, it gives you one KO and one WO, and then it never registers anything else.

Can you please help? Kudos to you if you help. Thanks.

function onPlayerEntered(newPlayer)


    local stats = Instance.new("IntValue")
    stats.Name = "leaderstats"

    local kills = Instance.new("IntValue")
    kills.Name = "Kills"
    kills.Value = 1

    local deaths = Instance.new("IntValue")
    deaths.Name = "Deaths"
    deaths.Value = 1

    kills.Parent = stats
    deaths.Parent = stats


    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 = "no one"
    if killer ~= nil then killername = killer.Name end
    print("DIED EVENT: ", victim.Name, " KILLED by ", killername)

    if shared["deaths"] ~= nil then 
        shared["deaths"](victim, killer)
        print("SENT DB DEATH EVENT")
    end
end

function Send_DB_Event_Kill(killer, victim)
    print("KILL EVENT. ", killer.Name, " BLOXXED ", victim.Name)
    if shared["kills"] ~= nil then 
        shared["kills"](killer, victim)
        print("SENT DB KILL EVENT")
    end
end



function onHumanoidDied(humanoid, player)
    local stats = player:findFirstChild("leaderstats")
    if stats ~= nil then
        local deaths = stats:findFirstChild("Wipeouts")
        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 -
            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("KOs")
            if killer ~= player then
                kills.Value = kills.Value + 1

            else
                kills.Value = kills.Value - 1

            end
            Send_DB_Event_Kill(killer, player)
        end
    end
end
 -- yeahyeahyeahyeahyeah I am almost done one more line
game.Players.ChildAdded:connect(onPlayerEntered) -- YES VICTORY better make sure it works
0
Realized my problem. I forgot to make lines 1-16 match with other stuff, one was KOs and one was Kills. JustGimmeDaBux 18 — 10y

1 answer

Log in to vote
1
Answered by
Tkdriverx 514 Moderation Voter
10 years ago

This looks pretty much like the default LinkedLeaderboard. So it should already work. But besides that, it looks like you have an (accidental?) - at the end of line 96.

Ad

Answer this question