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 character?

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

The player gets teleported from the menu (starter place) to the actual game (another place in the same universe). The data gets transported, but my character doesn't get modified with the data.

local module = require(script.Parent.DataModule)
local dataStoreService = game:GetService("DataStoreService")
local playerData = dataStoreService:GetDataStore("PlayerData")

game.Players.PlayerAdded:Connect(function(player)
    player.CharacterAdded:Connect(function(char)
        local key = module.generateKey(player)

        local data = Instance.new("Folder")
        data.Name = "PlayerData"
        data.Parent = player

        local magicType = Instance.new("StringValue")
        magicType.Name = "MagicType"
        magicType.Parent = data

        local magicLevel = Instance.new("IntValue")
        magicLevel.Name = "MagicLevel"
        magicLevel.Parent = magicType

        local magicXP = Instance.new("IntValue")
        magicXP.Name = "MagicXP"
        magicXP.Parent = data

        local magicXPN = Instance.new("IntValue")
        magicXPN.Name = "MagicXPNeeded"
        magicXPN.Parent = data
        magicXPN.Value = 20

        local magicEnergy = Instance.new("IntValue")
        magicEnergy.Name = "MagicEnergy"
        magicEnergy.Parent = data
        magicEnergy.Value = 30

        local levels = Instance.new("IntValue")
        levels.Name = "Levels"
        levels.Parent = data
        levels.Value = 1

        local xp = Instance.new("IntValue")
        xp.Name = "XP"
        xp.Parent = levels

        local xpn = Instance.new("IntValue")
        xpn.Name = "XPNeeded"
        xpn.Parent = levels
        xpn.Value = 100

        local silver = Instance.new("IntValue")
        silver.Name = "Silver"
        silver.Parent = data

        local hp = Instance.new("IntValue")
        hp.Parent = data
        hp.Name = "HP"
        hp.Value = char:WaitForChild("Humanoid").MaxHealth

        local hair1 = Instance.new("StringValue")
        hair1.Name = "Hair1"
        hair1.Parent = data

        local hair1Color = Instance.new("Vector3Value")
        hair1Color.Name = "Hair1Color"
        hair1Color.Parent = data

        local hair1Offset = Instance.new("Vector3Value")
        hair1Offset.Name = "Hair1Offset"
        hair1Offset.Parent = data   

        local hair2 = Instance.new("StringValue")
        hair2.Name = "Hair2"
        hair2.Parent = data

        local hair2Color = Instance.new("Vector3Value")
        hair2Color.Name = "Hair2Color"
        hair2Color.Parent = data

        local hair2Offset = Instance.new("Vector3Value")
        hair2Offset.Name = "Hair2Offset"
        hair2Offset.Parent = data   

        local skinColor = Instance.new("Color3Value")
        skinColor.Name = "SkinColor"
        skinColor.Parent = data

        local face = Instance.new("StringValue")
        face.Name = "Face"
        face.Parent = data

        local shirt = Instance.new("StringValue")
        shirt.Name = "Shirt"
        shirt.Parent = data

        local shirtColor = Instance.new("Color3Value")
        shirtColor.Name = "ShirtColor"
        shirtColor.Parent = data

        local pants = Instance.new("StringValue")
        pants.Name = "Pants"
        pants.Parent = data

        local pantsColor = Instance.new("Color3Value")
        pantsColor.Name = "PantsColor"
        pantsColor.Parent = data

        local dataa = module.generateData(player)

        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)

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

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

            magicEnergy.Value = decodedData.magicEnergy
            xp.Value = decodedData.xp
            levels.Value = decodedData.levels
            silver.Value = decodedData.silver
            hp.Value = decodedData.hp
            magicLevel.Value = decodedData.magicLevel
            magicXP.Value = decodedData.magicXP
            magicXPN.Value = decodedData.magicXPN
            magicType.Value = decodedData.magicType

            hair1.Value = decodedData.hair1
            hair1Color.Value = Vector3.new(decodedData.hair1Color)
            hair1Offset.Value = Vector3.new(decodedData.hair1Offset)
            hair2.Value = decodedData.hair2
            hair2Color.Value = Vector3.new(decodedData.hair2Color)
            hair2Offset.Value = Vector3.new(decodedData.hair2Offset)
            skinColor.Value = Color3.fromRGB(decodedData.skinColor)
            face.Value = decodedData.face
            shirt.Value = decodedData.shirt
            shirtColor.Value = Color3.fromRGB(decodedData.shirtColor)
            pants.Value = decodedData.pants
            pantsColor.Value = Color3.fromRGB(decodedData.pantsColor)

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

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

            player:WaitForChild("PlayerGui").LevelName.Level.Text = "Level "..levels.Value  

            if levels.Value == 1 then
                print("Start tutorial")
                game.ReplicatedStorage.Remotes.StartTutorial:FireClient(player)
            end     

            for i, v in pairs(decodedData) do
                print(tostring(i)..": ".. tostring(v))
            end     
        end)
    end)
end)

Client:

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

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

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

What can I do in order to make the character change? How it looks like: link

EDIT: This is what it prints: link EDIT2:

local module = require(script.Parent.DataModule)
local dataStoreService = game:GetService("DataStoreService")
local playerData = dataStoreService:GetDataStore("PlayerData")

game.Players.PlayerAdded:Connect(function(player)
    local char = workspace.Character
    local key = module.generateKey(player)

    local data = Instance.new("Folder")
    data.Name = "PlayerData"
    data.Parent = player    

    local magicType = Instance.new("StringValue")
    magicType.Name = "MagicType"
    magicType.Parent = data

    local magicLevel = Instance.new("IntValue")
    magicLevel.Name = "MagicLevel"
    magicLevel.Parent = magicType

    local magicXP = Instance.new("IntValue")
    magicXP.Name = "MagicXP"
    magicXP.Parent = data

    local magicXPN = Instance.new("IntValue")
    magicXPN.Name = "MagicXPNeeded"
    magicXPN.Value = 20
    magicXPN.Parent = data

    local magicEnergy = Instance.new("IntValue")
    magicEnergy.Name = "MagicEnergy"
    magicEnergy.Value = 30
    magicEnergy.Parent = data

    local levels = Instance.new("IntValue")
    levels.Name = "Levels"
    levels.Value = 1
    levels.Parent = data

    local xp = Instance.new("IntValue")
    xp.Name = "XP"
    xp.Parent = levels

    local xpn = Instance.new("IntValue")
    xpn.Name = "XPNeeded"
    xpn.Value = 100
    xpn.Parent = levels

    local silver = Instance.new("IntValue")
    silver.Name = "Silver"
    silver.Parent = data

    local hp = Instance.new("IntValue")
    hp.Name = "HP"
    hp.Value = 100
    hp.Parent = data

    local hair1 = Instance.new("StringValue")
    hair1.Name = "Hair1"
    hair1.Parent = data

    local hair1Color = Instance.new("Vector3Value")
    hair1Color.Name = "Hair1Color"
    hair1Color.Parent = data

    local hair1Offset = Instance.new("Vector3Value")
    hair1Offset.Name = "Hair1Offset"
    hair1Offset.Parent = data   

    local hair2 = Instance.new("StringValue")
    hair2.Name = "Hair2"
    hair2.Parent = data

    local hair2Color = Instance.new("Vector3Value")
    hair2Color.Name = "Hair2Color"
    hair2Color.Parent = data

    local hair2Offset = Instance.new("Vector3Value")
    hair2Offset.Name = "Hair2Offset"
    hair2Offset.Parent = data   

    local skinColor = Instance.new("Color3Value")
    skinColor.Name = "SkinColor"
    skinColor.Parent = data

    local face = Instance.new("StringValue")
    face.Name = "Face"
    face.Parent = data

    local shirt = Instance.new("StringValue")
    shirt.Name = "Shirt"
    shirt.Parent = data

    local shirtColor = Instance.new("Color3Value")
    shirtColor.Name = "ShirtColor"
    shirtColor.Parent = data

    local pants = Instance.new("StringValue")
    pants.Name = "Pants"
    pants.Parent = data

    local pantsColor = Instance.new("Color3Value")
    pantsColor.Name = "PantsColor"
    pantsColor.Parent = data

    local dataa = module.generateData(player)

    game.ReplicatedStorage.Remotes.Teleport.OnServerEvent:Connect(function(player)
        local userid = player.UserId

        game:GetService("TeleportService"):Teleport(4398454020, player, dataa)
    end)
end)
0
WaitForChild instead maybe use getchild aj44000 2 — 4y
0
that has nothing to do with the problem. bluzorro 417 — 4y
0
Where do you send or even teleport the player? No traces of teleporting in the first script? ankurbohra 681 — 4y
0
@ankurbohra04 the player is teleported to that game; ill include the script bluzorro 417 — 4y
0
there were way more lines of code in the last script, but it didn't fit in the characters limit for the question. bluzorro 417 — 4y

Answer this question