When multiple people load at the same time, it will take a value and duplicate it into one player's inventory. Let's say two people join, the intvalue will be created two times in a player's inventory. A player that is joining, ofcourse. And the other player that was joining does not get that intvalue. It just gives it to the other player that was joining at the same time. Does anyone know a fix for this bug? line 19-20
function loadplayerinventory(player) repeat wait() until player.Character print"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" playerfolder = Instance.new("Folder", game:GetService("ReplicatedStorage")) playerfolder.Name = (player.UserId.."_folder") local playerinventory = Instance.new("Folder", game.Workspace) playerinventory.Name = (player.UserId.."_playerinventory") local inventoryowner = Instance.new("StringValue", playerinventory) inventoryowner.Name = (player.Name.."_"..player.UserId) inventoryowner.Value = player.Name local playerinventorystock = Instance.new("Folder", playerfolder) playerinventorystock.Name = ("playerinventorystock") local inventory = DSS:GetAsync(player.UserId.."_playerinventory") local inventorystock = DSS:GetAsync(player.UserId.."_playerinventorystock") local inventoryobjpos = DSS:GetAsync(player.UserId.."_playerinventoryobjpos") local inventoryobjangle = DSS:GetAsync(player.UserId.."_playerinventoryobjangle") local ObjNotAdded = Instance.new("Folder", game:GetService("ReplicatedStorage")[player.UserId.."_folder"]) ObjNotAdded.Name = ("notaddedtoinv") local cash = DSS:GetAsync(player.UserId.."_cash") local cashvalue = Instance.new("IntValue", playerfolder) cashvalue.Name = ("Money") print(cashvalue.Parent.Name) local newslot = _G.AssignSlot(player) local oldslot = DSS:GetAsync(player.UserId.."_playerslot") if oldslot then distance = newslot.PrimaryPart.Position-game.Workspace.Slots[oldslot].PrimaryPart.Position else distance = Vector3.new(0,0,0) end local loadedposes = {} local loadedangles = {} if inventory then print("Calculating "..player.Name.."'s items and their positions.") for i,v in pairs(inventory) do local obj = game:GetService("ReplicatedStorage").Objects:WaitForChild(v) if obj then ------------------------------------------------------------------------------------------------------------------- local posx = inventoryobjpos[#loadedposes+1] table.insert(loadedposes, posx) local posy = inventoryobjpos[#loadedposes+1] table.insert(loadedposes, posx) local posz = inventoryobjpos[#loadedposes+1] table.insert(loadedposes, posx) ------------------------------------------------------------------------------------------------------------------- local angley = inventoryobjangle[#loadedangles+1] table.insert(loadedangles, angley) ------------------------------------------------------------------------------------------------------------------- local objclone = obj:Clone() objclone.Parent = playerinventory objclone:SetPrimaryPartCFrame(CFrame.new(posx+distance.x,posy+distance.y,posz+distance.z) * CFrame.Angles(0, math.rad(angley), 0)) end end print(player.Name.."'s items have been loaded!") else print"Player has no inventory!" end if inventorystock then for i,v in pairs(inventorystock) do local obj = game:GetService("ReplicatedStorage").Objects:WaitForChild(v) if obj then local objclone = obj:Clone() objclone.Parent = playerfolder["playerinventorystock"] end end end cashvalue.Value = (cash) print"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" end