Hello,
I am trying to design an inventory system using data store 2. The issue i am having is that my data is not being updated when i buy a weapon from my shop. When a weapon is purchased, the purchased event fires and all the print statements in the connected function print what you would expect them to.
local DataStore2 = require(1936396537)
local SS = game:GetService('ServerStorage')
local SSS = game:GetService('ServerScriptService')
local RS = game:GetService('ReplicatedStorage')
local playableSwords = SS.PlayableSwords
local ItemsModule = require(SS.ItemsModule:WaitForChild('ItemsModule'))
local Items = ItemsModule.ReturnTable()
local updateUIInvEvent = RS.DataStoreEvents.UpdateUIInvEvent
local purchaseEvent = RS.ShopEvents.PurchaseEvent
local poorEvent = RS.ShopEvents.PoorEvent
local ownedEvent = RS.ShopEvents.OwnedEvent
local dataLoadedEvent = RS.DataStoreEvents.DataStoreLoaded
function updateInventory(folder,items,player)
for name,bool in pairs(items) do
local newItem = Instance.new("ObjectValue")
newItem.Name = name
newItem.Parent = folder
end
print('updating ui')
updateUIInvEvent:FireClient(player)
end
DataStore2.Combine("DATA","cash","inventory")
function playerAdded(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = 'leaderstats'
leaderstats.Parent = player
local cashStore = DataStore2("cash",player)
local inventoryStore = DataStore2("inventory",player)
local cash = Instance.new("IntValue")
cash.Name = 'cash'
cash.Value = cashStore:Get(0)
cash.Parent = leaderstats
local inventory = Instance.new('Folder')
inventory.Name = 'Inventory'
inventory.Parent = player
local chosenWep = Instance.new('Folder')
chosenWep.Name = 'ChosenWeapon'
chosenWep.Parent = player
cashStore:OnUpdate(function()
cash.Value = cashStore:Get(0)
end)
local items = inventoryStore:GetTable({
RayCastKatana = true
})
updateInventory(inventory,items,player)
dataLoadedEvent:Fire()
inventoryStore:OnUpdate(function()
print('getting ready to update')
local items = inventoryStore:GetTable({
RayCastKatana = true
})
updateInventory(inventory,items,player)
end)
end
for i,player in ipairs(game.Players:GetPlayers()) do
playerAdded(player)
end
game.Players.PlayerAdded:Connect(playerAdded)
purchaseEvent.OnServerEvent:Connect(function(player,toolName)
local cashStore = DataStore2("cash",player)
local inventoryStore = DataStore2("inventory",player)
print(toolName)
local Item = Items[toolName]
print(Item)
local price = Item.Price
if cashStore:Get(0) >= price then
local inventory = inventoryStore:GetTable({
RayCastKatana = true
})
print(inventory)
if inventory[Item.Name] then
print('You already own this item')
ownedEvent:FireClient(player)
else
print('purchasing Item')
cashStore:Increment(-price)
print(Item.Name)
inventory[Item.Name] = true
inventoryStore:Update()
print(inventory['RayCastKatana'])
print(inventory['AetherBlade'])
end
else
poorEvent:FireClient(player)
end
end)
Except the print statement at line 61. This means that when I append the inventory on line 94, the inventory store does not update, or else it would print the statement on line 61.
How am I supposed to use Data Store 2 to solve my problem?
Thank you for your time.