So, I'm making a shop and it needs to check if the item you currently have is equipped to show "Equipped" or "Equip", so I simply put a BoolValue inside of each StringValue(the item) to see if it's equipped; and for the most part it works, it saves, it says one is true and the other is false, but when I load into the game they're both true. Please help!
My code:
local DatastoreService = game:GetService("DataStoreService") local Datastore = DatastoreService:GetDataStore("TrainingSimulatorDataTest16") local mps = game:GetService("MarketplaceService") local id = 11893526
game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local codesFolder = Instance.new("Folder")
codesFolder.Name = "CodesFolder"
codesFolder.Parent = player
local miscStats = Instance.new("Folder")
miscStats.Name = "MiscStats"
miscStats.Parent = player
local fistPowersFolder = Instance.new("Folder")
fistPowersFolder.Name = "FistPowers"
fistPowersFolder.Parent = player
local folder = Instance.new("Folder")
folder.Name = player.Name
folder.Parent = game.ServerStorage:WaitForChild("RemoteData")
local debounce = Instance.new("BoolValue")
debounce.Name = "Debounce"
debounce.Parent = folder
local coins = Instance.new("NumberValue")
coins.Name = "Coins"
coins.Parent = leaderstats
local fistPower = Instance.new("NumberValue")
fistPower.Name = "FistPower"
fistPower.Parent = miscStats
local diamonds = Instance.new("NumberValue")
diamonds.Name = "Diamonds"
diamonds.Parent = leaderstats
local rank = Instance.new("StringValue")
rank.Name = "Rank"
rank.Parent = leaderstats
local rankMultiplier = Instance.new("NumberValue")
rankMultiplier.Name = "RankMultiplier"
rankMultiplier.Parent = rank
local strength = Instance.new("NumberValue")
strength.Name = "Strength"
strength.Parent = miscStats
local dnaAmount = Instance.new("NumberValue")
dnaAmount.Name = "Dna"
dnaAmount.Parent = miscStats
local coinData,strengthData,dnaData,rankData,rankMultiplierData,diamondData,fistPowerData,codeData,fistPowersData,isEquippedFistPowerData
local success,errorMsg = pcall(function()
coinData = Datastore:GetAsync("coinData-"..player.UserId)
strengthData = Datastore:GetAsync("strengthData-"..player.UserId)
dnaData = Datastore:GetAsync("dnaData-"..player.UserId)
rankData = Datastore:GetAsync("rankData-"..player.UserId)
rankMultiplierData = Datastore:GetAsync("rankMultiplierData-"..player.UserId)
diamondData = Datastore:GetAsync("diamondData-"..player.UserId)
fistPowerData = Datastore:GetAsync("fistPowerData-"..player.UserId)
codeData = Datastore:GetAsync("codeData-"..player.UserId)
fistPowersData = Datastore:GetAsync("fistPowersData-"..player.UserId)
isEquippedFistPowerData = Datastore:GetAsync("isEquippedFistPowerData-"..player.UserId)
end)
if success then
if strengthData then
strength.Value = strengthData
coins.Value = coinData
dnaAmount.Value = dnaData
rank.Value = rankData
rankMultiplier.Value = rankMultiplierData
diamonds.Value = diamondData
fistPower.Value = fistPowerData
else
fistPower.Value = 1
dnaAmount.Value = 50
rank.Value = "Noob"
local firstFistPower = Instance.new("StringValue")
firstFistPower.Name = "FistPower1"
firstFistPower.Parent = player.FistPowers
local isEquipped = Instance.new("BoolValue")
isEquipped.Name = "IsEquipped"
isEquipped.Parent = firstFistPower
isEquipped.Value = true
end
if codeData then
for x = 1,#codeData do
local newCode = Instance.new("StringValue")
newCode.Name = "Code"..x
newCode.Parent = player.CodesFolder
end
end
if fistPowersData then
for x = 1,#fistPowersData do
local newFistPower = Instance.new("StringValue")
newFistPower.Name = "FistPower"..x
newFistPower.Parent = player.FistPowers
local isEquipped = Instance.new("BoolValue")
isEquipped.Name = "IsEquipped"
isEquipped.Value = isEquippedFistPowerData
isEquipped.Parent = newFistPower
wait()
end
end
end
if mps:UserOwnsGamePassAsync(player.UserId,id) or player:GetRankInGroup(6305352) >= 255 then
dnaAmount.Value = math.huge
end
end)
game.ReplicatedStorage.RemoteEvents.MiscEvents.CodeEvent.OnServerEvent:Connect(function(player,code,amount,folder,currency)
local newCode = Instance.new("StringValue")
newCode.Name = code
newCode.Parent = player.CodesFolder
player[folder][currency].Value = player[folder][currency].Value + amount
end)
game.Players.PlayerRemoving:Connect(function(player)
local usedCodes = {}
local isEquippedFistPowers = {}
local fistPowers = {}
for _,code in pairs(player.CodesFolder:GetChildren()) do
table.insert(usedCodes,code.Name)
wait()
end
for _,fistPower in pairs(player.FistPowers:GetChildren()) do
table.insert(fistPowers,fistPower.Name)
table.insert(isEquippedFistPowers,fistPower.IsEquipped.Value)
wait()
end
local success,errorMsg = pcall(function()
Datastore:SetAsync("coinData-"..player.UserId,player.leaderstats.Coins.Value)
Datastore:SetAsync("strengthData-"..player.UserId,player.MiscStats.Strength.Value)
Datastore:SetAsync("dnaData-"..player.UserId,player.MiscStats.Dna.Value)
Datastore:SetAsync("rankData-"..player.UserId,player.leaderstats.Rank.Value)
Datastore:SetAsync("rankMultiplierData-"..player.UserId,player.leaderstats.Rank.RankMultiplier.Value)
Datastore:SetAsync("diamondData-"..player.UserId,player.leaderstats.Diamonds.Value)
Datastore:SetAsync("fistPowerData-"..player.UserId,player.MiscStats.FistPower.Value)
Datastore:SetAsync("codeData-"..player.UserId,usedCodes)
Datastore:SetAsync("fistPowersData-"..player.UserId,fistPowers)
Datastore:SetAsync("isEquippedFistPowerData-"..player.UserId,isEquippedFistPowers)
end)
end)
game:BindToClose(function()
for _,player in pairs(game.Players:GetPlayers()) do
local usedCodes = {}
local isEquippedFistPowers = {}
local fistPowers = {}
for _,code in pairs(player.CodesFolder:GetChildren()) do
table.insert(usedCodes,code.Name)
wait()
end
for _,fistPower in pairs(player.FistPowers:GetChildren()) do
table.insert(fistPowers,fistPower.Name)
table.insert(isEquippedFistPowers,fistPower.IsEquipped.Value)
wait()
end
local success,errorMsg = pcall(function()
Datastore:SetAsync("coinData-"..player.UserId,player.leaderstats.Coins.Value)
Datastore:SetAsync("strengthData-"..player.UserId,player.MiscStats.Strength.Value)
Datastore:SetAsync("dnaData-"..player.UserId,player.MiscStats.Dna.Value)
Datastore:SetAsync("rankData-"..player.UserId,player.leaderstats.Rank.Value)
Datastore:SetAsync("rankMultiplierData-"..player.UserId,player.leaderstats.Rank.RankMultiplier.Value)
Datastore:SetAsync("diamondData-"..player.UserId,player.leaderstats.Diamonds.Value)
Datastore:SetAsync("fistPowerData-"..player.UserId,player.MiscStats.FistPower.Value)
Datastore:SetAsync("codeData-"..player.UserId,usedCodes)
Datastore:SetAsync("fistPowersData-"..player.UserId,fistPowers)
Datastore:SetAsync("isEquippedFistPowerData-"..player.UserId,isEquippedFistPowers)
end)
local data
data = Datastore:GetAsync("isEquippedFistPowerData-"..player.UserId)
for _,stuff in pairs(data) do
print(stuff)
end
end
end)

1 comment
It works! Thank you very much for the help, I would've never gotten it(and yes I understand what's going on and how x is the number position in the table). And I'll use a second DataStore very soon!