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

Character data doesn't apply to the character?

Asked by
bluzorro 417 Moderation Voter
4 years ago
Edited 4 years ago

I'm trying to transport data from the main menu to the actual game, but the character doesn't get changed with the data.

Here's how it looks: link

-- Local script
local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()

local TeleportService = game:GetService("TeleportService")
local playerData = TeleportService:GetLocalPlayerTeleportData()
print(playerData)

local decodedData = game:GetService("HttpService"):JSONDecode(playerData)
print(decodedData)

game.ReplicatedStorage.Remotes.GetData:FireServer(decodedData)

player.PlayerData.MagicEnergy.Value = decodedData.magicEnergy
player.PlayerData.Levels.XP.Value = decodedData.xp
player.PlayerData.Levels.Value = decodedData.levels
player.PlayerData.Silver.Value = decodedData.silver
player.PlayerData.HP.Value = decodedData.hp
player.PlayerData.MagicType.MagicLevel.Value = decodedData.magicLevel
player.PlayerData.MagicXP.Value = decodedData.magicXP
player.PlayerData.MagicXPNeeded.Value = decodedData.magicXPN
player.PlayerData.MagicType.Value = decodedData.magicType

player.PlayerData.Hair1.Value = decodedData.hair1
player.PlayerData.Hair1Color.Value = Vector3.new(tonumber(decodedData.hair1Color))
player.PlayerData.Hair1Offset.Value = Vector3.new(tonumber(decodedData.hair1Offset))
player.PlayerData.Hair2.Value = decodedData.hair2
player.PlayerData.Hair2Color.Value = Vector3.new(tonumber(decodedData.hair2Color))
player.PlayerData.Hair2Offset.Value = Vector3.new(tonumber(decodedData.hair2Offset))
player.PlayerData.SkinColor.Value = Color3.fromRGB(tonumber(decodedData.skinColor))
player.PlayerData.Face.Value = decodedData.face
player.PlayerData.Shirt.Value = decodedData.shirt
player.PlayerData.ShirtColor.Value = Color3.fromRGB(tonumber(decodedData.shirtColor))
player.PlayerData.Pants.Value = decodedData.pants
player.PlayerData.PantsColor.Value = Color3.fromRGB(tonumber(decodedData.pantsColor))

char:WaitForChild("Hair").Handle.Mesh.MeshId = decodedData.hair1
char:WaitForChild("Hair").Handle.Mesh.VertexColor = Vector3.new(tonumber(decodedData.hair1Color))
char:WaitForChild("Hair").Handle.Mesh.Offset = Vector3.new(tonumber(decodedData.hair1Offset))
char:WaitForChild("Hair2").Handle.Mesh.MeshId = decodedData.hair2
char:WaitForChild("Hair2").Handle.Mesh.VertexColor = Vector3.new(tonumber(decodedData.hair2Color))
char:WaitForChild("Hair2").Handle.Mesh.Offset = Vector3.new(tonumber(decodedData.hair2Offset))
char:WaitForChild("Body Colors").HeadColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
char:WaitForChild("Body Colors").LeftArmColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
char:WaitForChild("Body Colors").RightArmColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
char:WaitForChild("Body Colors").LeftLegColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
char:WaitForChild("Body Colors").RightLegColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
char:WaitForChild("Body Colors").TorsoColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
char.Head.face.Texture = decodedData.face
char:WaitForChild("Shirt").ShirtTemplate = decodedData.shirt
char:WaitForChild("Shirt").Color3 = Color3.fromRGB(tonumber(decodedData.shirtColor))
char:WaitForChild("Pants").PantsTemplate = decodedData.pants
char:WaitForChild("Pants").Color3 = Color3.fromRGB(tonumber(decodedData.pantsColor))

Server script:

local DSS = game:GetService("DataStoreService")
local playerData = DSS:GetDataStore("PlayerData")

function generateDataKey(player)
    local ret = "user_"..player.UserId
    return ret
end

function generateDataTable(player)
    local dataTable = {
        magicType = player.PlayerData.MagicType.Value,
        magicLevel = player.PlayerData.MagicType.MagicLevel.Value,
        magicXP = player.PlayerData.MagicXP.Value,
        magicXPN = player.PlayerData.MagicXPNeeded.Value,
        magicEnergy = player.PlayerData.MagicEnergy.Value,
        levels = player.PlayerData.Levels.Value,
        xp = player.PlayerData.Levels.XP.Value,
        xpn = player.PlayerData.Levels.XPNeeded.Value,
        silver = player.PlayerData.Silver.Value,
        hp = player.PlayerData.HP.Value,

        hair1 = player.PlayerData.Hair1.Value,
        hair1Color = player.PlayerData.Hair1Color.Value,
        hair1Offset = player.PlayerData.Hair1Offset.Value,
        hair2 = player.PlayerData.Hair2.Value,
        hair2Color = player.PlayerData.Hair2Color.Value,
        hair2Offset = player.PlayerData.Hair2Offset.Value,
        skinColor = player.PlayerData.SkinColor.Value,
        face = player.PlayerData.Face.Value,
        shirt = player.PlayerData.Shirt.Value,
        shirtColor = player.PlayerData.ShirtColor.Value,
        pants = player.PlayerData.Pants.Value,
        pantsColor = player.PlayerData.PantsColor.Value
    }

    return dataTable
end

function inputData(player, data)
    local char = player.Character or player.CharacterAdded:Wait()
    player.PlayerData.MagicType.Value = data.magicType
    player.PlayerData.MagicType.MagicLevel.Value = data.magicLevel
    player.PlayerData.MagicXP.Value = data.magicXP
    player.PlayerData.MagicXPNeeded.Value = data.magicXPN
    player.PlayerData.MagicEnergy.Value = data.magicEnergy
    player.PlayerData.Levels.Value = data.levels
    player.PlayerData.Levels.XP.Value = data.xp
    player.PlayerData.Levels.XPNeeded.Value = data.xpn
    player.PlayerData.Silver.Value = data.silver
    player.PlayerData.HP.Value = data.hp

    player.PlayerData.Hair1.Value = data.hair1
    player.PlayerData.Hair1Color.Value = Vector3.new(tonumber(data.hair1Color))
    player.PlayerData.Hair1Offset.Value = Vector3.new(tonumber(data.hair1Offset))
    player.PlayerData.Hair2.Value = data.hair2
    player.PlayerData.Hair2Color.Value = Vector3.new(tonumber(data.hair2Color))
    player.PlayerData.Hair2Offset.Value = Vector3.new(tonumber(data.hair2Offset))
    player.PlayerData.SkinColor.Value = Color3.fromRGB(tonumber(data.skinColor))
    player.PlayerData.Face.Value = data.face
    player.PlayerData.Shirt.Value = data.shirt
    player.PlayerData.ShirtColor.Value = Color3.fromRGB(tonumber(data.shirtColor))
    player.PlayerData.Pants.Value = data.pants
    player.PlayerData.PantsColor.Value = Color3.fromRGB(tonumber(data.pantsColor))

    char:WaitForChild("Hair").Handle.Mesh.MeshId = data.hair1
    char:WaitForChild("Hair").Handle.Mesh.VertexColor = Vector3.new(tonumber(data.hair1Color))
    char:WaitForChild("Hair").Handle.Mesh.Offset = Vector3.new(tonumber(data.hair1Offset))
    char:WaitForChild("Hair2").Handle.Mesh.MeshId = data.hair2
    char:WaitForChild("Hair2").Handle.Mesh.VertexColor = Vector3.new(tonumber(data.hair2Color))
    char:WaitForChild("Hair2").Handle.Mesh.Offset = Vector3.new(tonumber(data.hair2Offset))
    char:WaitForChild("Body Colors").HeadColor3 = Color3.fromRGB(tonumber(data.skinColor))
    char:WaitForChild("Body Colors").LeftArmColor3 = Color3.fromRGB(tonumber(data.skinColor))
    char:WaitForChild("Body Colors").RightArmColor3 = Color3.fromRGB(tonumber(data.skinColor))
    char:WaitForChild("Body Colors").LeftLegColor3 = Color3.fromRGB(tonumber(data.skinColor))
    char:WaitForChild("Body Colors").RightLegColor3 = Color3.fromRGB(tonumber(data.skinColor))
    char:WaitForChild("Body Colors").TorsoColor3 = Color3.fromRGB(tonumber(data.skinColor))
    char.Head.face.Texture = data.face
    char:WaitForChild("Shirt").ShirtTemplate = data.shirt
    char:WaitForChild("Shirt").Color3 = Color3.fromRGB(tonumber(data.shirtColor))
    char:WaitForChild("Pants").PantsTemplate = data.pants
    char:WaitForChild("Pants").Color3 = Color3.fromRGB(tonumber(data.pantsColor))
end

function loadData(player)
    local key = generateDataKey(player)
    local data = playerData:GetAsync(key)
    inputData(player, data)
end

game.Players.PlayerAdded:Connect(function(player)
    player.CharacterAdded:Connect(function(char)    
        spawn(function()
            wait(1)
            for i, v in pairs(char:GetChildren()) do
                if v:IsA("Accessory") then
                    v:Destroy()
                end
            end

            for i, v in pairs(game.ServerStorage:GetChildren()) do
                if v:IsA("Accessory") then
                    v:Clone().Parent = char
                end
            end
        end)        

        game.ReplicatedStorage.Remotes.GetData.OnServerEvent:Connect(function(player, decodedData)
            print(decodedData)

            local success = pcall(function()
                return playerData:GetAsync(key)
            end)

            if success then
                print("Data exists")
                inputData(player, decodedData)  
            else
                print("No data found")
            end 

            char:WaitForChild("Hair").Handle.Mesh.MeshId = decodedData.hair1
            char:WaitForChild("Hair").Handle.Mesh.VertexColor = Vector3.new(tonumber(decodedData.hair1Color))
            char:WaitForChild("Hair").Handle.Mesh.Offset = Vector3.new(tonumber(decodedData.hair1Offset))
            char:WaitForChild("Hair2").Handle.Mesh.MeshId = decodedData.hair2
            char:WaitForChild("Hair2").Handle.Mesh.VertexColor = Vector3.new(tonumber(decodedData.hair2Color))
            char:WaitForChild("Hair2").Handle.Mesh.Offset = Vector3.new(tonumber(decodedData.hair2Offset))
            char:WaitForChild("Body Colors").HeadColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
            char:WaitForChild("Body Colors").LeftArmColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
            char:WaitForChild("Body Colors").RightArmColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
            char:WaitForChild("Body Colors").LeftLegColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
            char:WaitForChild("Body Colors").RightLegColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
            char:WaitForChild("Body Colors").TorsoColor3 = Color3.fromRGB(tonumber(decodedData.skinColor))
            char.Head.face.Texture = decodedData.face
            char:WaitForChild("Shirt").ShirtTemplate = decodedData.shirt
            char:WaitForChild("Shirt").Color3 = Color3.fromRGB(tonumber(decodedData.shirtColor))
            char:WaitForChild("Pants").PantsTemplate = decodedData.pants
            char:WaitForChild("Pants").Color3 = Color3.fromRGB(tonumber(decodedData.pantsColor))            
        end)
    end)
end)

Answer this question