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

How to pick a player with a leaderboard Script if their ID matches ID's in script?[No Right Answer]

Asked by 9 years ago

I'm using a regular script (Not LocalScript) and I want to have it check if the players ID is mine, then is will change Rank to Owner. I do not know how to check players who enter . I know using LocalPlayer is not working. This includes Data persistence. My problem is on line 17!

cashkey = "cash"
rankkey = "rank"


game.Players.PlayerAdded:connect(function(player)
    stats = Instance.new("IntValue", player)
    stats.Name = "leaderstats"

    cash = Instance.new("IntValue", stats)
    cash.Name = "Cash"
    cash.Value = 0

    rank = Instance.new("StringValue", stats)
    rank.Name = "Rank"
    rank.Value = "Visitor"

    if game.Players.LocalPlayer.userId == 29413559 then
        game.Players.LocalPlayer.leaderstats.Rank.Value = "Owner"
    end

    player:WaitForDataReady()

    cash.Value = player:LoadNumber(cashkey)
    rank.Value = player:LoadString(rankkey)
end)

game.Players.PlayerRemoving:connect(function(player)
    if player.leaderstats.Cash.Value ~= 0 then
        player:SaveNumber(cashkey, player.leaderstats.Cash.Value)
    end     
    if player.leadersats.Rank.Value ~= "Visitor" then   
        player:SaveString(rankkey, player.leaderstats.Rank.Value)
    end
end)


Also I don't want it to JUST check me! I want it to check every player. Would I need to use FindFirstChild() or something? Please explain your fix to me as well. Thank you.

1 answer

Log in to vote
2
Answered by 9 years ago

Since this is a regular script and regular scripts can't use Local Players...

cashkey = "cash"
rankkey = "rank"

game.Players.PlayerAdded:connect(function(player)
    stats = Instance.new("IntValue", player)
    stats.Name = "leaderstats"

    cash = Instance.new("IntValue", stats)
    cash.Name = "Cash"
    cash.Value = 0

    rank = Instance.new("StringValue", stats)
    rank.Name = "Rank"
    rank.Value = "Visitor"

    if player.userId == 29413559 then --Just replace these with "Player"
        player.leaderstats.Rank.Value = "Owner" --Same with this one.
    end

    player:WaitForDataReady()

    cash.Value = player:LoadNumber(cashkey)
    rank.Value = player:LoadString(rankkey)
end)

game.Players.PlayerRemoving:connect(function(player)
    if player.leaderstats.Cash.Value ~= 0 then
        player:SaveNumber(cashkey, player.leaderstats.Cash.Value)
    end     
    if player.leadersats.Rank.Value ~= "Visitor" then   
        player:SaveString(rankkey, player.leaderstats.Rank.Value)
    end
end)



You already have a variable that is the player, why do you need local player? Just use "player" and you'll be done.

Ad

Answer this question