Hi
I have this script (credit: @kercig) to create servers, but when I click the create servers button, I get this error:
Error line:
local function ServerUpdate(ServerId,UserId,Psid)
local createnewarr = true
servers = playerData:GetAsync(playerUserId)
--[[ line -]] for i,v in ipairs(servers) do
if v.server == ServerId and v.plr == UserId then
createnewarr = false
end
end
local arr = {server = ServerId,plr = UserId,id = nil}
if Psid then
for i,v in ipairs(servers) do
if v.server == ServerId and v.id == nil then
v.id = Psid
createnewarr = false
end
end
end
if Psid == nil then
for i,v in ipairs(servers) do
if v.server == ServerId and v.id then
createnewarr = false
end
end
end
if createnewarr == true then
table.insert(servers,arr)
end
local success, err = pcall(function()
local playerUserId = "#ServersData[pcall1]Data"
playerData:SetAsync(playerUserId,servers)
end)
if not success then
warn('UFF Hub | A datastore error occured: ' .. err)
elseif success then
warn('UFF Hub | Data successfully loaded!')
end
end
Full script:
local servers = {}
local DataStoreService = game:GetService("DataStoreService")
local playerData = DataStoreService:GetDataStore("#ServersData[pcall1]Save")
local runService = game:GetService("RunService")
local playerUserId = "#ServersData[pcall1]Data"
local data = playerData:GetAsync(playerUserId)
if data then
servers = data
else
servers = {}
end
game:BindToClose(function()
task.wait(10)
end)
local arrayofunions = {}
local TS = game:GetService("TeleportService")
local Players = game:GetService("Players")
local messagingService = game:GetService("MessagingService")
local httpService = game:GetService("HttpService")
local rs = game:GetService("ReplicatedStorage")
local asktoinvite = rs.AskToInvite
local tp = rs.TeleportToServer
local newserver = rs.CreateServer
local PrivateServerId = game.PrivateServerId
local CurServerNumber = 0
local isReserved = PrivateServerId ~= "" and PrivateServerId == 0
local function ServerUpdate(ServerId,UserId,Psid)
local createnewarr = true
servers = playerData:GetAsync(playerUserId)
for i,v in ipairs(servers) do
if v.server == ServerId and v.plr == UserId then
createnewarr = false
end
end
local arr = {server = ServerId,plr = UserId,id = nil}
if Psid then
for i,v in ipairs(servers) do
if v.server == ServerId and v.id == nil then
v.id = Psid
createnewarr = false
end
end
end
if Psid == nil then
for i,v in ipairs(servers) do
if v.server == ServerId and v.id then
createnewarr = false
end
end
end
if createnewarr == true then
table.insert(servers,arr)
end
local success, err = pcall(function()
local playerUserId = "#ServersData[pcall1]Data"
playerData:SetAsync(playerUserId,servers)
end)
if not success then
warn('UFF Hub | A datastore error occured: ' .. err)
elseif success then
warn('UFF Hub | Data successfully loaded!')
end
end
Players.PlayerRemoving:Connect(function(player)
CurServerNumber -= 1
for i,v in ipairs(servers) do
if PrivateServerId == v.id and isReserved then
local messageData = {}
messageData["sender"] = v.id
messageData["message"] = CurServerNumber
local encoded = httpService:JSONEncode(messageData)
messagingService:PublishAsync("#ServersData[pcall1]Data", encoded)
end
end
end)
Players.PlayerAdded:Connect(function(player)
for i,v in ipairs(servers) do
if v.plr == player.UserId and isReserved and v.id == nil then
ServerUpdate(v.server,v.plr,PrivateServerId)
end
end
CurServerNumber += 1
for i,v in ipairs(servers) do
if game.PrivateServerId == v.id and isReserved then
local messageData = {}
messageData["sender"] = v.id
messageData["message"] = CurServerNumber
local encoded = httpService:JSONEncode(messageData)
messagingService:PublishAsync("#ServersData[pcall1]Data", encoded)
end
end
end)
local function addtolist(PrivateServerId,amount,player)
coroutine.wrap(function()
local List = player.PlayerGui:WaitForChild("ScreenGui",10).Frame.List
local StandartFrame = game:GetService("ReplicatedStorage").Frame:Clone()
StandartFrame.Parent = List
local Owner = StandartFrame:FindFirstChild("Owner")
local Players = StandartFrame:FindFirstChild("Players")
local data
for i,v in ipairs(servers) do
if v.id == PrivateServerId then
data = v
end
end
if data then
Players.Text = "Players: "..tostring(amount).." / 50"
Owner.Text = "Owner: ".. Players:GetNameFromUserIdAsync(data.plr)
end
end)()
end
function callbackFunction(serviceData)
local decodedData = httpService:JSONDecode(serviceData.Data)
arrayofunions[decodedData.sender] = decodedData.message
if decodedData.message == 0 then
arrayofunions[decodedData.sender] = nil
end
end
messagingService:SubscribeAsync("#ServersData[pcall1]Data", callbackFunction)
newserver.OnServerEvent:Connect(function(plr)
local bool = false
for i,v in ipairs(servers) do
if PrivateServerId == v.id and v.plr == plr.UserId then
warn("UFF Hub | You have made a server already!")
bool = true
break
end
if v.plr == plr.UserId and v.id ~= PrivateServerId then
TS:SetTeleportGui(rs:WaitForChild("TeleportingGui"))
TS:TeleportToPrivateServer(9619375620,v.server,{plr})
bool = true
end
end
if bool == false then
warn("UFF Hub | Creating server...")
local code = TS:ReserveServer(9619375620)
ServerUpdate(code,plr.UserId)
TS:SetTeleportGui(rs:WaitForChild("TeleportingGui"))
TS:TeleportToPrivateServer(9619375620,code,{plr})
end
end)
coroutine.wrap(function()
while task.wait(10) do
for i,v in ipairs(servers) do
if PrivateServerId == v.id and isReserved then
local messageData = {}
messageData["sender"] = v.id
messageData["message"] = CurServerNumber
local encoded = httpService:JSONEncode(messageData)
messagingService:PublishAsync("#ServersData[pcall1]Data", encoded)
end
end
end
end)()
coroutine.wrap(function()
while task.wait(1) do
for i,plr in ipairs(Players:GetChildren()) do
coroutine.wrap(function()
for i,c in ipairs(plr.PlayerGui:WaitForChild("System",10).Frame.List:GetChildren()) do
if c:IsA("Frame") then
c:Destroy()
end
end
end)()
end
for i,v in ipairs(servers) do
if v.id ~= nil and arrayofunions[v.id] then
for i,j in ipairs(Players:GetChildren()) do
coroutine.wrap(function()
addtolist(v.id,arrayofunions[v.id],j)
end)()
end
end
end
end
end)()
Any help would be appreciated, thanks!