I'm working on a player search system which involves a datastore to store the usernames of each player.
This is my datastore script [server-side]:
local datastore = game:GetService("DataStoreService"):GetDataStore("rP")
print("Got datastore!")
local serverstorage = game:GetService("ServerStorage")
print("Got serverstorage!")
game.Players.PlayerAdded:connect(function(plyr)
local rp = Instance.new("IntValue")
rp.Parent = serverstorage
rp.Name = "rP-"..plyr.Name
print("rp made!")
local key = "plyr"..plyr.userId
print("Key generated!")
local username = Instance.new("StringValue")
username.Parent = serverstorage
username.Name = plyr.Name
username.Value = plyr.Name
print("Username has been created and inserted into serverstorage.")
local userid = Instance.new("IntValue")
userid.Parent = serverstorage
userid.Name = plyr.Name.."-id"
userid.Value = plyr.userId
print("userid acquired!")
local savedvalue = datastore:GetAsync(key)
print("Savedvalue loaded")
if savedvalue then
savedvalue[1] = rp.Value
savedvalue[2] = username.Value
savedvalue[3] = userid.Value
print("Savedvalue table generated")
else
datastore:SetAsync(key, {rp.Value, username.Value,userid.Value})
print("Items saved")
end
end)
And my search script [client-side; local script]:
local frame = script.Parent.Parent
print("Got frame")
local inputbox = frame:WaitForChild("TextBox")
print("Got textbox")
local value = inputbox:WaitForChild("Value")
local holder = frame.Parent
print("Got admin")
local display = holder:WaitForChild("display")
print("Got display")
local imagelabel = display:WaitForChild("ImageLabel")
print("Got imagelabel")
local serverstorage = game:GetService("ServerStorage")
print("Got serverstorage")
local userimg = 'http://www.roblox.com/Thumbs/Avatar.ashx?format=png&x=100&y=100&username='
print("Got userimg")
local rptext = display:WaitForChild("rptext")
print("Got rptext")
local username = frame:WaitForChild("username")
print("Got username")
script.Parent.MouseButton1Click:connect(function()
username.Value = value.Value
print("1")
wait()
imagelabel.Image = userimg..username.Value
print("2")
wait()
local rpvalue = serverstorage:findFirstChild("rP-"..value.Value)
print("3")
if rpvalue then
print("rpvalue exists")
rptext.Text = "rP | "..rpvalue.Value
else
print("rpvalue does not exist; assuming user has no profile.")
rptext.Text = "This user has not created a profile."
end
end)
When I enter the game and I search my name, it returns "This user has not created a profile."
This entire system works in edit mode, but not in-game. Could someone please explain to me my problem?
Sorry for the messy scripts!
EDIT:
By the way, my rpvalue DOES exist. I checked with a script.
local serverstorage = game:GetService("ServerStorage")
local rpvalue = serverstorage:findFirstChild("rP-Vexture")
if rpvalue then
print("rpvalue exists")
else
print("rpvalue is nil")
end
It returns "rpvalue exists"
So I'm not quite sure what the problem is here. Can localscripts not access serverstorage? Is this the problem?
