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

Lines after datastore loads not running?

Asked by 6 years ago

This code loads in all the accessory the player own, but after all the dataStore is loaded, the player isn't spawning in with the avatar I set in the data store, no errors appear.

I also tested by removing the dataStore stuff, and it worked, but I don't know why it doesn't when I add the dataStore stuff.

--HeroThePianist

local ds = game:GetService("DataStoreService"):GetDataStore(".AccessoriesTest.")
game.Players.PlayerAdded:connect(function(plr)  
    local key = "id-"..plr.userId   

    -- DATASTORE STUFF --
    ownedStuff = ds:GetAsync(key) or {
            {category="SkinColor",color="Pastel brown"},
            {category="Hats",ownedHats={}},
            {category="Hair",ownedHair={{name="Charming Brown Hair",meshid="rbxassetid://74878559",textureid="rbxassetid://75976712",imageid="",equipped=true},{name="Normal Hair",meshid="rbxassetid://15730710",textureid="rbxassetid://20642711",imageid="",equipped=false}}},
            {category="Faces",ownedFaces={{name="Smile",id="rbxasset://textures/face.png",equipped=true}}},
            {category="Shirts",ownedShirts={{name="Motorcyle Shirt",textureid="rbxassetid://144076357",imageid="",equipped=true}}},
            {category="T-Shirts",ownedTShirts={}},
            {category="Pants",ownedPants={{name="Dark Green Jeans",textureid="rbxassetid://144076759",imageid="",equipped=true}}},
            {category="Packages",ownedPackages={}}
    }
    plr.CanLoadCharacterAppearance = false
    plr.CharacterAdded:connect(function(char)
        local head = char:WaitForChild("Head")      

        for _,stuff in pairs(ownedStuff) do
            if stuff.category == "SkinColor" then           
                local bodyColors = Instance.new("BodyColors",char)
                bodyColors.RightArmColor = BrickColor.new(stuff.color)
                bodyColors.LeftArmColor = BrickColor.new(stuff.color)
                bodyColors.RightLegColor = BrickColor.new(stuff.color)
                bodyColors.LeftLegColor = BrickColor.new(stuff.color)
                bodyColors.TorsoColor = BrickColor.new(stuff.color)
                bodyColors.HeadColor = BrickColor.new(stuff.color)
            elseif stuff.category == "Hats" then
                for _,hats in pairs(stuff.ownedHats) do
                    if hats.equipped then
--                      local newHat = Instance.new("Accessory",char)
--                      newHat.Name = hats.name
--                      local mesh = Instance.new("SpecialMesh",newHat)
--                      mesh.MeshId = ""
                    end
                end
            elseif stuff.category == "Hair" then
                for _,hair in pairs(stuff.ownedHair) do
                    if hair.equipped then
                        local newHair = Instance.new("Accessory",char)
                        newHair.Name = hair.name
                        local handle = Instance.new("Part",newHair)
                        handle.Name = "Handle"
                        local attachment = Instance.new("Attachment",handle)
                        attachment.Position = Vector3.new(0, 0.175, 0.05)
                        local mesh = Instance.new("SpecialMesh",handle)
                        mesh.MeshId = hair.meshid
                        mesh.TextureId = hair.textureid
                        local weld = Instance.new("Weld",handle)
                        weld.Part0 = handle
                        weld.Part1 = head
                    end
                end
            elseif stuff.category == "Faces" then
                for _,faces in pairs(stuff.ownedFaces) do
                    if faces.equipped then
                        if head:FindFirstChild("face") then
                            head.face.Texture = faces.id
                            print("Changed "..plr.Name.."'s face to "..faces.name)
                        end
                    end
                end
            elseif stuff.category == "Shirts" then
                for _,shirts in pairs(stuff.ownedShirts) do
                    if shirts.equipped then
                        local newShirt = Instance.new("Shirt",char)
                        newShirt.Name = shirts.name
                        newShirt.ShirtTemplate = shirts.textureid
                    end
                end
            elseif stuff.category == "Pants" then
                for _,pants in pairs(stuff.ownedPants) do
                    if pants.equipped then
                        local newPants = Instance.new("Pants",char)
                        newPants.Name = pants.name
                        newPants.PantsTemplate = pants.textureid
                    end
                end
            end
        end
    end)    
    ds:SetAsync(key,ownedStuff)
    for i,v in pairs(ownedStuff) do
        if v.category == "Hair" then
            for _,hair in pairs(v.ownedHair) do
                print(hair.name)
            end
        end
    end
end)
game.Players.PlayerRemoving:connect(function(plr)
    local key = "id-"..plr.userId
    print(ownedStuff)
    ds:SetAsync(key,ownedStuff)
end)



0
I recommend putting datastore stuff in a pcall. Also, make sure you are NOT testing this in studio. hiimgoodpack 2009 — 6y
0
I did put it in pcalls, and I tested in Server mode, no luck. xHeroooo 32 — 6y
0
Test it in the actual gameplay RockerCaleb1234 282 — 6y
0
@Hero I recommend that you give a small portion of where you believe the core problem is rooted at. movsb 242 — 6y
0
Update: So I have to reset the character in order to get dressed like in what I put in the ownedStuff table. This script loads in the players accessories that they own and were wearing when they previously played xHeroooo 32 — 6y

Answer this question