I have checked the studio access to API services. There are 2 places in my universe.
Starter place module (both modules are required btw)
local DataStoreService = game:GetService("DataStoreService")
local dataStore = DataStoreService:GetDataStore("PlayerData")
local module = {}
function module.generateKey(player)
local key = "player-"..player.UserId
return key
end
function module.makeTable(player)
local data = {
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 data
end
function module.saveData(player)
local key = module.generateKey(player)
local data = module.makeTable(player)
dataStore:SetAsync(key, data)
end
function module.loadData(player, data)
local key = module.generateKey(player)
local success, err = pcall(function()
return dataStore:GetAsync(key)
end)
if success then
print("Data successfully found")
module.inputData(player, data)
else
print("Data wasn't found")
warn(err)
end
end
function module.inputData(player, data)
local char = player.Character or player.CharacterAdded:Wait()
player.PlayerData.MagicEnergy.Value = data.magicEnergy
player.PlayerData.Levels.XP.Value = data.xp
player.PlayerData.Levels.Value = data.levels
player.PlayerData.Silver.Value = data.silver
player.PlayerData.HP.Value = data.hp
player.PlayerData.MagicType.MagicLevel.Value = data.magicLevel
player.PlayerData.MagicXP.Value = data.magicXP
player.PlayerData.MagicXPNeeded.Value = data.magicXPN
player.PlayerData.MagicType.Value = data.magicType
player.PlayerData.Hair1.Value = data.hair1
player.PlayerData.Hair1Color.Value = data.hair1Color
player.PlayerData.Hair1Offset.Value = data.hair1Offset
player.PlayerData.Hair2.Value = data.hair2
player.PlayerData.Hair2Color.Value = data.hair2Color
player.PlayerData.Hair2Offset.Value = data.hair2Offset
player.PlayerData.SkinColor.Value = data.skinColor
player.PlayerData.Face.Value = data.face
player.PlayerData.Shirt.Value = data.shirt
player.PlayerData.ShirtColor.Value = data.shirtColor
player.PlayerData.Pants.Value = data.pants
player.PlayerData.PantsColor.Value = data.pantsColor
end
------------------------------------------------------------------
game.Players.PlayerAdded:Connect(function(player)
local key = module.generateKey(player)
local char = player.Character or player.CharacterAdded:Wait()
-- values are instanced
module.loadData(player)
game.ReplicatedStorage.Remotes.TransportDataToPlace.OnServerInvoke = function(player) -- gets invoked when player presses a load game button
local dataa = module.makeTable(player)
local key = module.generateKey(player)
local msg1 = "Teleporting to First Sea..."
local msgError = "No data exists."
local teleport = game.ServerStorage.Teleport
if player.PlayerData.Levels.Value < 120 then
teleport.Parent = player:WaitForChild("PlayerGui")
teleport.Frame.Visible = true
spawn(function()
for i, v in pairs(dataa) do
print(tostring(i)..": ".. tostring(v)) --https://gyazo.com/df0b3384eba16be963db51a70cfb0560
end
end)
for i = 1, #msg1 do
teleport.Frame.TextLabel.Text = string.sub(msg1, 1, i)
wait()
end
wait(1)
game:GetService("TeleportService"):Teleport(4398454020, player, dataa)
end
end
end)
game.Players.PlayerRemoving:Connect(module.saveData)
return module
Second place module:
local DataStoreService = game:GetService("DataStoreService")
local dataStore = DataStoreService:GetDataStore("PlayerData")
local module = {}
function module.generateKey(player)
local key = "player-"..player.UserId
return key
end
function module.makeTable(player)
local data = {
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 data
end
function module.saveData(player)
local key = module.generateKey(player)
local data = module.makeTable(player)
dataStore:SetAsync(key, data)
end
function module.loadData(player, data)
local key = module.generateKey(player)
local success, err = pcall(function()
return dataStore:GetAsync(key)
end)
if success then
print("Data successfully found")
module.inputData(player, data)
else
print("Data wasn't found")
warn(err)
end
end
function module.inputData(player, data)
local char = player.Character or player.CharacterAdded:Wait()
player.PlayerData.MagicEnergy.Value = data.magicEnergy
player.PlayerData.Levels.XP.Value = data.xp
player.PlayerData.Levels.Value = data.levels
player.PlayerData.Silver.Value = data.silver
player.PlayerData.HP.Value = data.hp
player.PlayerData.MagicType.MagicLevel.Value = data.magicLevel
player.PlayerData.MagicXP.Value = data.magicXP
player.PlayerData.MagicXPNeeded.Value = data.magicXPN
player.PlayerData.MagicType.Value = data.magicType
player.PlayerData.Hair1.Value = data.hair1
player.PlayerData.Hair1Color.Value = data.hair1Color
player.PlayerData.Hair1Offset.Value = data.hair1Offset
player.PlayerData.Hair2.Value = data.hair2
player.PlayerData.Hair2Color.Value = data.hair2Color
player.PlayerData.Hair2Offset.Value = data.hair2Offset
player.PlayerData.SkinColor.Value = data.skinColor
player.PlayerData.Face.Value = data.face
player.PlayerData.Shirt.Value = data.shirt
player.PlayerData.ShirtColor.Value = data.shirtColor
player.PlayerData.Pants.Value = data.pants
player.PlayerData.PantsColor.Value = data.pantsColor
char:WaitForChild("Hair").Handle.Mesh.MeshId = data.hair1
char:WaitForChild("Hair").Handle.Mesh.VertexColor = data.hair1Color
char:WaitForChild("Hair").Handle.Mesh.Offset = data.hair1Offset
char:WaitForChild("Hair2").Handle.Mesh.MeshId = data.hair2
char:WaitForChild("Hair2").Handle.Mesh.VertexColor = data.hair2Color
char:WaitForChild("Hair2").Handle.Mesh.Offset = data.hair2Offset
char:WaitForChild("Body Colors").HeadColor3 = data.skinColor
char:WaitForChild("Body Colors").LeftArmColor3 = data.skinColor
char:WaitForChild("Body Colors").RightArmColor3 = data.skinColor
char:WaitForChild("Body Colors").LeftLegColor3 = data.skinColor
char:WaitForChild("Body Colors").RightLegColor3 = data.skinColor
char:WaitForChild("Body Colors").TorsoColor3 = data.skinColor
char.Head.face.Texture = data.face
char:WaitForChild("Shirt").ShirtTemplate = data.shirt
char:WaitForChild("Shirt").Color3 = data.shirtColor
char:WaitForChild("Pants").PantsTemplate = data.pants
char:WaitForChild("Pants").Color3 = data.pantsColor
end
--------------------------------------------------------------
game.Players.PlayerAdded:Connect(function(player)
local char = player.Character or player.CharacterAdded:Wait()
local key = module.generateKey(player)
-- values are instanced
end)
game.Players.PlayerRemoving:Connect(module.saveData)
return module
Second place script to get char data:
local module = require(script.Parent.DataModule)
game.ReplicatedStorage.Remotes.GetData.OnServerEvent:Connect(function(player, decodedData) -- gets fired when player joins the server
local char = player.Character or player.CharacterAdded:Wait()
local key = module.generateKey(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)
module.loadData(player, decodedData)
if player:WaitForChild("PlayerData").Levels.Value == 1 then
print("Start tutorial")
game.ReplicatedStorage.Remotes.StartTutorial:FireClient(player)
end
end)
When the player gets teleported after creating a new file: image1
When the player presses the load game button: image2
