You can write your topic however you want, but you need to answer these questions:
- What do you want to achieve? Keep it simple and clear!
I want my datastore to work.
- What is the issue? Include screenshots / videos if possible!
It only saves some data and gives me the error: DataStore request was added to queue. If request queue fills, further requests will be dropped. Try sending fewer requests.Key = ___________
- What solutions have you tried so far? Did you look for solutions on the Developer Hub?
I read many articles about datastores and this error. I tried their solutions but with no progress.
After that, you should include more details if you have any. Try to make your topic as descriptive as possible, so that it’s easier for people to help you!
This is my code:
Server:
local datastore = game:GetService("DataStoreService"):GetDataStore("PlayerInvenDatastore1")
local materialsdef = {}
local meleedef = {}
local rangeddef = {}
local magicdef = {}
local questsdef = {}
local headdef = {}
local middledef = {}
local lowdef = {}
local moneydef = 0
for i=1, 150 do
materialsdef["Slot"..tostring(i).."Name"] = ""
materialsdef["Slot"..tostring(i).."Amount"] = 0
questsdef["Slot"..tostring(i)] = ""
questsdef["Slot"..tostring(i).."Identifier"] = 0
questsdef["Slot"..tostring(i).."Rewards"] = ""
end
for i=1, 10 do
meleedef["Slot"..tostring(i)] = ""
rangeddef["Slot"..tostring(i)] = ""
magicdef["Slot"..tostring(i)] = ""
end
magicdef["Mana"] = 50
for i=1, 3 do
headdef["Slot"..tostring(i)] = ""
middledef["Slot"..tostring(i)] = ""
lowdef["Slot"..tostring(i)] = ""
end
local defaulttable = {}
defaulttable["Materials"] = materialsdef
defaulttable["Melee"] = meleedef
defaulttable["Ranged"] = rangeddef
defaulttable["Magic"] = magicdef
defaulttable["Quests"] = questsdef
defaulttable["Head"] = headdef
defaulttable["Middle"] = middledef
defaulttable["Low"] = lowdef
defaulttable["Money"] = moneydef
game.ReplicatedStorage.SaveInvenData.OnServerEvent:Connect(function(player, materials, melee, ranged, magic, quests, head, middle, low, money)
local id = game.PrivateServerId..player.UserId
local singletable = {}
singletable["Materials"] = materials
singletable["Melee"] = melee
singletable["Ranged"] = ranged
singletable["Magic"] = magic
singletable["Quests"] = quests
singletable["Head"] = head
singletable["Middle"] = middle
singletable["Low"] = low
singletable["Money"] = money
datastore:SetAsync(id, singletable)
end)
game.ReplicatedStorage.GetInvenData.OnServerEvent:Connect(function(player: Player, ...: any)
local tabletoget = datastore:GetAsync(game.PrivateServerId..player.UserId)
if tabletoget then
print("Retrived data")
game.ReplicatedStorage.GetInvenData:FireClient(player, tabletoget)
else
print("Making new data")
game.ReplicatedStorage.GetInvenData:FireClient(player, defaulttable)
end
end)
Client:
local plr = game.Players.LocalPlayer
local plrInven = Instance.new("Folder")
plrInven.Parent = plr
plrInven.Name = "PlayerInven"
--Material Slots
local materialinven = Instance.new("Folder", plrInven)
materialinven.Name = "Materials"
local numberofslots = 150
local materialdataslots = {}
for i=1, numberofslots do
local current = Instance.new("StringValue", materialinven)
current.Name = "Slot"..tostring(i)
identifier = Instance.new("NumberValue", currentslot)
identifier.Name = "Slot"..tostring(i)
materialdataslots["Slot"..tostring(i)] = current
local amount = Instance.new("IntValue", current)
amount.Name = "Amount"
end
--Melee Slots
local meleeinven = Instance.new("Folder", plrInven)
meleeinven.Name = "Melee"
local numberofslots = 10
local meleedataslots = {}
for i=1, numberofslots do
local current = Instance.new("StringValue", meleeinven)
current.Name = "Slot"..tostring(i)
identifier = Instance.new("NumberValue", currentslot)
identifier.Name = "Slot"..tostring(i)
meleedataslots["Slot"..tostring(i)] = current
end
--Head Armor Slots
local hArmorInven = Instance.new("Folder", plrInven)
hArmorInven.Name = "HeadArmor"
local numberofslots = 3
local harmordataslots = {}
for i=1, numberofslots do
local current = Instance.new("StringValue", hArmorInven)
current.Name = "Slot"..tostring(i)
identifier = Instance.new("NumberValue", currentslot)
identifier.Name = "Slot"..tostring(i)
harmordataslots["Slot"..tostring(i)] = current
end
--Middle Armor Slots
local mArmorInven = Instance.new("Folder", plrInven)
mArmorInven.Name = "MiddleArmor"
local numberofslots = 3
local marmordataslots = {}
for i=1, numberofslots do
local current = Instance.new("StringValue", mArmorInven)
current.Name = "Slot"..tostring(i)
identifier = Instance.new("NumberValue", currentslot)
identifier.Name = "Slot"..tostring(i)
marmordataslots["Slot"..tostring(i)] = current
end
--Legs Armor Slots
local lArmorInven = Instance.new("Folder", plrInven)
lArmorInven.Name = "LegArmor"
local numberofslots = 3
local larmordataslots = {}
for i=1, numberofslots do
local current = Instance.new("StringValue", lArmorInven)
current.Name = "Slot"..tostring(i)
identifier = Instance.new("NumberValue", currentslot)
identifier.Name = "Slot"..tostring(i)
larmordataslots["Slot"..tostring(i)] = current
end
--Ranged Slots
local rangedinven = Instance.new("Folder", plrInven)
rangedinven.Name = "Ranged"
local numberofslots = 10
local rangeddataslots = {}
for i=1, numberofslots do
local current = Instance.new("StringValue", rangedinven)
current.Name = "Slot"..tostring(i)
identifier = Instance.new("NumberValue", currentslot)
identifier.Name = "Slot"..tostring(i)
rangeddataslots["Slot"..tostring(i)] = current
end
arrows = Instance.new("StringValue", rangedinven)
arrows.Name = "Arrows"
amount = Instance.new("IntValue", arrows)
amount.Name = "Amount"
rangeddataslots["Arrows"] = arrows
--Magic Slots
local magicinven = Instance.new("Folder", plrInven)
magicinven.Name = "Magic"
local numberofslots = 10
local magicdataslots = {}
for i=1, numberofslots do
local current = Instance.new("StringValue", magicinven)
current.Name = "Slot"..tostring(i)
identifier = Instance.new("NumberValue", currentslot)
identifier.Name = "Slot"..tostring(i)
magicdataslots["Slot"..tostring(i)] = current
end
Mana = Instance.new("StringValue", magicinven)
Mana.Name = "Mana"
amount = Instance.new("IntValue", Mana)
amount.Name = "Amount"
magicdataslots["Mana"] = Mana
--Quest Slots
local completedquests = Instance.new("Folder", plrInven)
completedquests.Name = "Quests"
local questslots = {}
local numberofslots = 150
for i=1, numberofslots do
currentslot = Instance.new("StringValue", completedquests)
currentslot.Name = "Slot"..tostring(i)
rewards = Instance.new("StringValue", currentslot)
rewards.Name = "Rewards"
identifier = Instance.new("NumberValue", currentslot)
identifier.Name = "Slot"..tostring(i)
questslots["Slot"..tostring(i)] = currentslot
end
local plrstats = Instance.new("Folder", plrInven)
plrstats.Name = "Stats"
local temperature = Instance.new("NumberValue", plrstats)
temperature.Name = "Temperature"
local stealth = Instance.new("NumberValue", plrstats)
stealth.Name = "Stealth"
local money = Instance.new("IntValue")
money.Name = "Money"
money.Parent = plrstats
function GetDataForAll()
local materialdata = {}
local meleedata = {}
local rangeddata = {}
local magicdata = {}
local questdata = {}
local headarmordata = {}
local middlearmordata = {}
local legarmordata = {}
for i=1, 150 do
local currentslot = materialdataslots["Slot"..tostring(i)]
materialdata["Slot"..tostring(i).."Name"] = currentslot.Value
materialdata["Slot"..tostring(i).."Amount"] = currentslot.Amount.Value
end
for i=1, 10 do
local data = meleedataslots["Slot"..tostring(i)].Value
meleedata["Slot"..tostring(i)] = data
end --get melee
for i=1, 10 do
local data = rangeddataslots["Slot"..tostring(i)].Value
rangeddata["Slot"..tostring(i)] = data
end --get ranged
for i=1, 10 do
local data = magicdataslots["Slot"..tostring(i)].Value
magicdata["Slot"..tostring(i)] = data
end
magicdata["Mana"] = magicdataslots["Mana"].Amount.Value --get magic
for i=1, 150 do
local data = questslots["Slot"..tostring(i)].Value
questdata["Slot"..tostring(i)] = data
questdata["Slot"..tostring(i).."Identifier"] = questslots["Slot"..tostring(i)]:FindFirstChild("Slot"..tostring(i)).Value
questdata["Slot"..tostring(i).."Rewards"] = questslots["Slot"..tostring(i)].Rewards.Value
end --get quests
for i=1, 3 do
local data = harmordataslots["Slot"..tostring(i)].Value
headarmordata["Slot"..tostring(i)] = data
end --get helmets
for i=1, 3 do
local data = marmordataslots["Slot"..tostring(i)].Value
middlearmordata["Slot"..tostring(i)] = data
end --get middle armor
for i=1, 3 do
local data = larmordataslots["Slot"..tostring(i)].Value
legarmordata["Slot"..tostring(i)] = data
end --
return materialdata, meleedata, rangeddata, magicdata, questdata, headarmordata, middlearmordata, legarmordata, money.Value
end
function ApplySavedData()
event = game.ReplicatedStorage.GetInvenData
event:FireServer()
event.OnClientEvent:Once(function(tabletoget)
print("Appying")
local materialsfrom = tabletoget["Materials"]
local meleefrom = tabletoget["Melee"]
local rangedfrom = tabletoget["Ranged"]
local magicfrom = tabletoget["Magic"]
local questsfrom = tabletoget["Quests"]
local headfrom = tabletoget["Head"]
local middlefrom = tabletoget["Middle"]
local lowfrom = tabletoget["Low"]
local moneyfrom = tabletoget["Money"]
money.Value = moneyfrom
Mana.Amount.Value = tabletoget["Magic"]["Mana"]
for i=1, 150 do
local materialslot = materialdataslots["Slot"..tostring(i)]
materialslot.Value = materialsfrom["Slot"..tostring(i).."Name"]
materialslot.Amount.Value = materialsfrom["Slot"..tostring(i).."Amount"]
local questslot = questslots["Slot"..tostring(i)]
questslot.Value = questsfrom["Slot"..tostring(i)]
questslot:FindFirstChild("Slot"..tostring(i)).Value = questsfrom["Slot"..tostring(i).."Identifier"]
questslot:WaitForChild("Rewards").Value = questsfrom["Slot"..tostring(i).."Rewards"]
end
for i=1, 10 do
local meleeslot = meleedataslots["Slot"..tostring(i)]
meleeslot.Value = meleefrom["Slot"..tostring(i)]
local rangedslot = rangeddataslots["Slot"..tostring(i)]
rangedslot.Value = rangedfrom["Slot"..tostring(i)]
local magicslot = magicdataslots["Slot"..tostring(i)]
magicslot.Value = rangedfrom["Slot"..tostring(i)]
end
for i=1, 3 do
local headarmorslot = harmordataslots["Slot"..tostring(i)]
headarmorslot.Value = headfrom["Slot"..tostring(i)]
local middle = marmordataslots["Slot"..tostring(i)]
headarmorslot.Value = middlefrom["Slot"..tostring(i)]
local legarmorslot = larmordataslots["Slot"..tostring(i)]
legarmorslot.Value = lowfrom["Slot"..tostring(i)]
end
end)
end
ApplySavedData()
money:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
Mana:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
arrows:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
for i=1, 150 do
local currentmaterialslot = materialdataslots["Slot"..tostring(i)]
local currentmaterialslotamount = currentmaterialslot.Amount
local currentquestslot = questslots["Slot"..tostring(i)]
local currentquestidentifier = currentquestslot:WaitForChild("Slot"..tostring(i))
local currentquestrewards = currentquestslot.Rewards
currentquestslot:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
currentquestidentifier:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
currentquestrewards:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
currentmaterialslot:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
currentmaterialslotamount:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
end
for i=1, 10 do
local currentmeleeslot = meleedataslots["Slot"..tostring(i)]
local currentrangedslot = rangeddataslots["Slot"..tostring(i)]
local currentmagicslot = magicdataslots["Slot"..tostring(i)]
currentmagicslot:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
currentrangedslot:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
currentmeleeslot:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
end
for i=1, 3 do
local currentheadarmorslot = harmordataslots["Slot"..tostring(i)]
local currentmiddlearmorslot = marmordataslots["Slot"..tostring(i)]
local currentlegarmorslots = larmordataslots["Slot"..tostring(i)]
currentheadarmorslot:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
currentlegarmorslots:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
currentmiddlearmorslot:GetPropertyChangedSignal("Value"):Connect(function()
game.ReplicatedStorage.SaveInvenData:FireServer(GetDataForAll())
end)
end
Hoping Someone can tell me what’s wrong!