Server Creation System Help

I have some errors regarding a global datastore not functioning correctly. I will attach the code I am using to call said value and to set it. HTTP and Roblox Studio API are all good.

Setting code:

local CreatedServer = TeleportService:ReserveServer(game.PlaceId)
local Dict = {
		ServerName = group,
		PlayerName = plr.Name,
		RoleName = RoleName,
		GroupID = groupID,
	}

	serverData[CreatedServer] = Dict

Original setup:

local DataStoreService = game:GetService("DataStoreService")
local HttpService = game:GetService("HttpService")

local serverDataStore = DataStoreService:GetDataStore("jreiogehrughwrjghew3kjghe")

local serverData = {} 
local success, getServerData = pcall(function()
	return serverDataStore:GetAsync("Main")
end)

if success then
	serverData = getServerData
end

local function VerifyServers()
	for code,data in pairs(serverData) do
		--
	end
end

print(serverData)
if serverData then
	for i,v in pairs(serverData) do
		print(i, v["ServerName"])
	end
end

It calls nill. I have it screenshot. It’s kinda hard to read.

Help would be appreciated

I’m guessing this is Line 57 in your script, where it says the error is happening.
That long random string of characters in the error message is the index trying to be found in a table (it’s the server key returned from ReserveServer), but it’s saying the table is nil, so you’re trying to access an index of nil which isn’t allowed.

That makes me guess that your serverData variable is not defined on that line where you’re using it. Are you sure it was declared (i.e. local serverData = ...) somewhere before that line in the script?

1 Like

Yeah it was declared earlier in the script

I did some tweaking and now I get an error at line 64. My new code is attached. It also wont transfer a table via a function and remote event.

local TeleportService = game:GetService("TeleportService")
local AssetService = game:GetService("AssetService")
local RpS = game:GetService("ReplicatedStorage")
local DataStoreService = game:GetService("DataStoreService")
local HttpService = game:GetService("HttpService")

local serverDataStore = DataStoreService:GetDataStore("jreiogehrughwrjghew3kjghe")


local success, getServerData = pcall(function()
	return serverDataStore:GetAsync("Main")
end)
local serverData = {}

if success then
	table.insert(serverData, getServerData)
end

local function VerifyServers()
	for code,data in pairs(serverData) do
		--
	end
end



local function BuildList(player, info)
	if info then
		RpS.Events:FindFirstChild("RefreshEvent"):FireClient(player, info)
	elseif not info then
		RpS.Events:FindFirstChild("RefreshEvent"):FireClient(player)
	end
	
end

RpS.Events:FindFirstChild("RefreshEvent").OnServerEvent:Connect(function(player)
	BuildList(player)
end)



RpS.Events.CreateServer.OnServerEvent:Connect(function(plr,args,group)
	local CreatedServer = TeleportService:ReserveServer(game.PlaceId)
	local groupID
	local RoleName
	if group == "Royal Barbados Police Force" then
		groupID.Value = 8526274
		RoleName.Value = "Student Constable"
	end
	local Dict = {
		ServerName = group,
		PlayerName = plr.Name,
		RoleName = RoleName,
		GroupID = groupID,
	}
	print(CreatedServer)
	table.insert(serverData,CreatedServer)
	local serverInfo = serverData[CreatedServer]
	
	for i,v in ipairs(Dict) do
		table.insert(serverData[CreatedServer], Dict[i])
	end
	
	print(#serverData[CreatedServer])
	for i,v in ipairs(serverInfo) do
		print(serverInfo[i])
	end
	BuildList(plr, serverInfo)

	local success, err = pcall(function()
		serverDataStore:UpdateAsync("Main", function() return serverData end)
	end)

	if success then
		print("uploaded successfully")
	end

	if err then
		warn(err)
	end
end)

RpS.Events:FindFirstChild("TeleportEvent").OnServerEvent:Connect(function(player, targetID)
	TeleportService:TeleportToPrivateServer(game.PlaceId, targetID, {player})
end)

RpS.Events:FindFirstChild("EndServerEvent").OnServerEvent:Connect(function(player, targetID)

	serverData[targetID] = nil

	local success, err = pcall(function()
		serverDataStore:UpdateAsync("Main", function() return serverData end)
	end)

	if success then
		print("uploaded successfully")
	end

	if err then
		warn(err)
	end

	BuildList()

end)