Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Data Store multiple player loading problem?

Asked by 5 years ago
Edited 5 years ago

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
0
Try providing part of the code so we can see. Are you sure you're using PlayerAdded to handle joining players? xPolarium 1388 — 5y
0
Yeah joshmatt2244 28 — 5y
0
Why is lines 21 and 57 wrapped in brackets? Brackets are redundant in your case, they should only be used in math. also, the parent argument to instance.new is deprecated, assign the parent in another line . User#19524 175 — 5y

Answer this question