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

[SOLVED] Can I do an if statement to see if a player's name is in a table?

Asked by 6 years ago
Edited 6 years ago

So I'm trying to make a script that gives people with a tester rank a 2x exp boost in my game. Is there any way I can do this? I tried doing it like it is in the following, but it doesn't work, I tested changing the 10x exp one to a name other than mine, and it just gave me 1x exp.

01local testers = {"FoxOwO","S_naZY","jurassicsonic","Knineteen19"}
02 
03game.Players.PlayerAdded:connect(function(player)
04    player.CharacterAdded:connect(function()
05        local multi = script:WaitForChild("XP Multiplier")
06        local multiplier = multi:Clone()
07        if player.Name == "Knineteen19" then
08            multiplier.Value = 10
09        elseif player.Name == testers[1] or player.Name == testers[2] or player.Name == testers[3] then
10            multiplier.Value = 2
11        else
12            multiplier.Value = 1
13        end
14        multiplier.Parent = game.Workspace:WaitForChild(player.Name).Humanoid
15    end)
16end)
0
print "table(testers)" possibly? danglt 185 — 6y

2 answers

Log in to vote
1
Answered by 6 years ago
Edited 6 years ago

you can use a generic for loop which literates over a table. You'd use the value to get the object.

01--example
02 
03local testers = {"FoxOwO","S_naZY","jurassicsonic","Knineteen19"}
04 
05game.Players.PlayerAdded:Connect(function(player)
06    player.CharacterAdded:Connect(function(char)
07        for i,v in pairs(testers) do -- v is the value and i is the index
08            if v == player.Name then
09                -- do stuff
10                break
11            end
12        end
13    end)
14end)

you can also use a numeric for loop,

01local testers = {"FoxOwO","S_naZY","jurassicsonic","Knineteen19"}
02 
03game.Players.PlayerAdded:Connect(function(player)
04    player.CharacterAdded:Connect(function(char)
05        for i = 1,#testers do
06            local index = testers[i]
07 
08            if index == player.Name then
09                --do stuff
10                break
11            end
12        end
13    end)
14end)
0
Oh okay, that answers my question in my comment on the other answer, thanks it worked nicely! Knineteen19 307 — 6y
0
I know I should accept this, but at the same time I don't want to ruin your perfect 666 reputation xD. Knineteen19 307 — 6y
0
tbh User#23365 30 — 6y
Ad
Log in to vote
0
Answered by
oftenz 367 Moderation Voter
6 years ago

You are using an if statement incorrectly.

01local testers = {"FoxOwO","S_naZY","jurassicsonic","Knineteen19"}
02        if player.Name == "Knineteen19" then
03            multiplier.Value = 10
04    end
05        if player.Name == testers[1] or player.Name == testers[2] or player.Name == testers[3] then
06            multiplier.Value = 2
07        else
08            multiplier.Value = 1
09        end
10        multiplier.Parent = game.Workspace:WaitForChild(player.Name).Humanoid

You could also use a for loop.

0
Sorry about indentation, wrote this on chrome. oftenz 367 — 6y
0
Okay I'm confused about what's wrong with the if statement, but I'll try messing around with a for loop. Knineteen19 307 — 6y
0
Mk so I'm trying to use a for i,v in pairs sort of thing, but real quick, what would I use to to gather all of the values in the table? Knineteen19 307 — 6y
0
I'm not sure how to put it. You can't use or with 2 totally different arguments. oftenz 367 — 6y

Answer this question