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

"attempt to index nil with UserId" error with data stores?

Asked by 3 years ago

Hello all, I am in need of support. I have been trying for days to find a solution for this error. Basically, the player variable returns nil, and I am literally unable to find why it's nil. I've scoured the internet for answers but most of them are just specific to the people who made the question... anyways, can someone help me fix this dreadful error?

As always with Data Stores, this is a server script.

01local dss = game:GetService("DataStoreService")
02local WindowsActivated = dss:GetDataStore("WindowsActivated")
03 
04local frame = script.Parent
05--local t = frame.activateText
06local value = script.Parent.Parent.activation.activated
07 
08game.Players.PlayerAdded:Connect(function(plrobj)
09    plr = game.Players:FindFirstChild(plrobj)
10end)
11 
12while true do
13    wait(0.2)
14 
15    local success, errormsg = pcall(function()
View all 28 lines...

Thanks in advance.

0
use plrobj instead of plr, remove plr entirely, or if you do want to use plr then add plrobj.Name in the parenthesis of line 9 greatneil80 2647 — 3y

1 answer

Log in to vote
0
Answered by 3 years ago

There is a problem in line 9 and

If there is more than one player (if you are planning to have 1 player per server then you don't need to), the loop won't loop for the other player. Attempt putting the loop inside of the event

Script for more than one player

01local dss = game:GetService("DataStoreService")
02local WindowsActivated = dss:GetDataStore("WindowsActivated")
03 
04local frame = script.Parent
05--local t = frame.activateText
06local value = script.Parent.Parent.activation.activated
07 
08game.Players.PlayerAdded:Connect(function(plrobj)
09    local plr = plrobj -- Here is the problem. Before you were trying to do findfirstchild and you put an instance instead of a string. You can also just do plr line 8 instead of plrobj
10    while true do
11            wait(0.2)
12 
13         local success, errormsg = pcall(function()
14                 WindowsActivated = WindowsActivated:GetAsync(plr.UserId.."activated")
15         end)
View all 27 lines...

Script for one player per server

01local dss = game:GetService("DataStoreService")
02local WindowsActivated = dss:GetDataStore("WindowsActivated")
03 
04local frame = script.Parent
05--local t = frame.activateText
06local value = script.Parent.Parent.activation.activated
07local plr
08game.Players.PlayerAdded:Connect(function(plrobj)
09    plr = plrobj
10end)
11 
12while true do
13    wait(0.2)
14 
15    local success, errormsg = pcall(function()
View all 28 lines...
0
unfortunately, it didn't work. it still says that the player is nil. in fact, i tried adding a print statement in the PlayerAdded event, and it didn't even run. Is there something blocking it from running? PaleNoobs 37 — 3y
0
my comment just got deleted before i said 'is there any errors?' AProgrammR 398 — 3y
Ad

Answer this question