Alright so I'll just oversimplifify this. I made a Leaderboard script and I placed it in ServerScriptService and then I made a Shop GUI but when I'm trying to purchase an item with the currency from my leaderboard, the "money" I have keep going down to -15 or -40 or -65 even if I have like say 99999999999 cash to buy the item, from my shop gui, it keeps going down to a negative number like -15 when purchasing that item.
the error I keep getting is : ServerScriptService.Leaderboard:24: attempt to call field 'UserId' (a number value)
So here's my Leaderboard script:
local dataStoreService = game:GetService("DataStoreService") local dataStore = dataStoreService:GetDataStore("Currency") game.Players.PlayerAdded:Connect(function(player) local leaderboard = Instance.new("Folder",player) leaderboard.Name = "Leaderboard" local cash = Instance.new("IntValue",leaderboard) cash.Name = "Cash" cash.Value = 50 local recieved,failed = pcall(function() data = dataStore:GetAsync("User-"..player.UserId) end) if recieved then cash.Value = data[1] print("Data was received") else print("Data was not received") end while true do wait(30) dataStore:SetAsync("User-"..player.UserId{cash.Value}) end end) game.Players.PlayerRemoving:Connect(function(player) local leaderboard = player.Leaderboard local cash = leaderboard.Cash local saved,failed = pcall(function() dataStore:SetAsync("User-"..player.UserId{cash.Value}) end) if saved then print("Data was saved") else print("Data was not saved") end end)