local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local DataStore = DataStoreService:GetDataStore("AvatarData")
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Data = {
Face = 0;
Shirt = 0;
Pant = 0;
Hat = 0;
Torso = {5, 105, 174};
Arms = {245, 206, 44};
Head = {245, 206, 44};
Legs = {165, 190, 69}
}
local function color3ToDictionary(color3Object)
local color3Dictionary = {
R = color3Object.R,
G = color3Object.G,
B = color3Object.B,
}
return color3Dictionary
end
local playersavetable = {};
local function loadStarterData(Player)
local CharData = Instance.new("Folder")
CharData.Name = "AvatarConf"
CharData.Parent = Player
for statname, statvalue in pairs(Data) do
if type(statvalue) == 'number' then
local intvalue = Instance.new("IntValue")
intvalue.Name = statname
intvalue.Value = statvalue
intvalue.Parent = CharData
else
local colorvalue = Instance.new("Color3Value")
colorvalue.Name = statname
colorvalue.Value = Color3.fromRGB(statvalue[1],statvalue[2],statvalue[3])
colorvalue.Parent = CharData
end
end
end
local function loadData(player)
local Data
local s, e = pcall(function()
Data = DataStore:GetAsync('UserId'..player.UserId)
end)
if s then
print (player.Name.."Data loaded")
else
print(player.Name.."Data failed to load")
end
if Data then
for statname, statvalue in pairs(Data) do
if type(statvalue) == "number" then
player.AvatarConf[statname].Value = statvalue
else
player.AvatarConf[statname].Value = Color3.new(statvalue.R,statvalue.G,statvalue.B)
end
end
print(player.Name.."Data has been loaded")
else
print(player.Name.."No data found! generating..")
end
end
local function saveData(player)
--if RunService:IsStudio() then return end
local Data = {}
for _, stat in ipairs(player.AvatarConf:GetChildren()) do
if stat:IsA("Color3Value") then
Data[stat.Name] = color3ToDictionary(stat.Value)
else
Data[stat.Name] = stat.Value
end
end
local s, e = pcall(function()
DataStore:SetAsync('UserId'..player.UserId, Data)
end)
if s then
print(player.Name.."Data has been saved")
else
warn (player.Name.."Data failed to save"..e)
end
end
ReplicatedStorage.SaveEvent.OnServerEvent:Connect(function(player)
saveData(player)
end)
---------------------------------------------------------------------------------------------------------------
--Hats
ReplicatedStorage.Hats.None.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 0
end)
ReplicatedStorage.Hats.Shaggy.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 20573078
end)
ReplicatedStorage.Hats.SantaHat.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 1098277
end)
ReplicatedStorage.Hats.Sombrero.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 1028804
end)
ReplicatedStorage.Hats.Teapot.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 1045408
end)
ReplicatedStorage.Hats.WitchHat.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 1165248
end)
ReplicatedStorage.Hats.Visor.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 2646473721
end)
ReplicatedStorage.Hats.BChat.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 1080951
end)
ReplicatedStorage.Hats.DominoCap.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 1031429
end)
ReplicatedStorage.Hats.GoldenCrown.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 1081300
end)
ReplicatedStorage.Hats.PoliceCap.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 1028793
end)
ReplicatedStorage.Hats.RedBaseballCap.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 1028606
end)
ReplicatedStorage.Hats.RobloxSanta.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Hat.Value = 19398728
end)
--Faces
ReplicatedStorage.Faces.catface.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Face.Value = 15432080
end)
ReplicatedStorage.Faces.BracketFace.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Face.Value = 15470193
end)
ReplicatedStorage.Faces.CheckIt.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Face.Value = 7074786
end)
ReplicatedStorage.Faces.Chill.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Face.Value = 7074764
end)
ReplicatedStorage.Faces.DashFace.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Face.Value = 15471035
end)
ReplicatedStorage.Faces.Dface.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Face.Value = 14812981
end)
ReplicatedStorage.Faces.Freckles.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Face.Value = 12145366
end)
ReplicatedStorage.Faces.GoodIntent.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Face.Value = 7317793
end)
ReplicatedStorage.Faces.Pface.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Face.Value = 14861743
end)
ReplicatedStorage.Faces.Silly.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Face.Value = 7699174
end)
--Legs
ReplicatedStorage.LegColors.Black.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Legs.Value = Color3.fromRGB(20, 37, 50)
end)
ReplicatedStorage.LegColors.Yellow.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Legs.Value = Color3.fromRGB(245, 206, 44)
end)
ReplicatedStorage.LegColors.Blue.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Legs.Value = Color3.fromRGB(5, 105, 174)
end)
ReplicatedStorage.LegColors.Green.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Legs.Value = Color3.fromRGB(165, 190, 69)
end)
ReplicatedStorage.LegColors.Red.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Legs.Value = Color3.fromRGB(197, 35, 21)
end)
ReplicatedStorage.LegColors.Peach.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Legs.Value = Color3.fromRGB(235, 185, 147)
end)
--Torso
ReplicatedStorage.TorsoColors.Black.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Torso.Value = Color3.fromRGB(20, 37, 50)
end)
ReplicatedStorage.TorsoColors.Yellow.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Torso.Value = Color3.fromRGB(245, 206, 44)
end)
ReplicatedStorage.TorsoColors.Blue.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Torso.Value = Color3.fromRGB(5, 105, 174)
end)
ReplicatedStorage.TorsoColors.Green.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Torso.Value = Color3.fromRGB(165, 190, 69)
end)
ReplicatedStorage.TorsoColors.Red.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Torso.Value = Color3.fromRGB(197, 35, 21)
end)
ReplicatedStorage.TorsoColors.Peach.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Torso.Value = Color3.fromRGB(235, 185, 147)
end)
--Arms
ReplicatedStorage.ArmColors.Black.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Arms.Value = Color3.fromRGB(20, 37, 50)
end)
ReplicatedStorage.ArmColors.Yellow.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Arms.Value = Color3.fromRGB(245, 206, 44)
end)
ReplicatedStorage.ArmColors.Blue.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Arms.Value = Color3.fromRGB(5, 105, 174)
end)
ReplicatedStorage.ArmColors.Green.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Arms.Value = Color3.fromRGB(165, 190, 69)
end)
ReplicatedStorage.ArmColors.Red.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Arms.Value = Color3.fromRGB(197, 35, 21)
end)
ReplicatedStorage.ArmColors.Peach.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Arms.Value = Color3.fromRGB(235, 185, 147)
end)
--Head
ReplicatedStorage.HeadColors.Black.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Head.Value = Color3.fromRGB(20, 37, 50)
end)
ReplicatedStorage.HeadColors.Yellow.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Head.Value = Color3.fromRGB(245, 206, 44)
end)
ReplicatedStorage.HeadColors.Blue.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Head.Value = Color3.fromRGB(5, 105, 174)
end)
ReplicatedStorage.HeadColors.Green.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Head.Value = Color3.fromRGB(165, 190, 69)
end)
ReplicatedStorage.HeadColors.Red.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Head.Value = Color3.fromRGB(197, 35, 21)
end)
ReplicatedStorage.HeadColors.Peach.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Head.Value = Color3.fromRGB(235, 185, 147)
end)
--Shirts
ReplicatedStorage.Shirts.None.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 0
end)
ReplicatedStorage.Shirts.Bloxcon.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 130220741
end)
ReplicatedStorage.Shirts.BattleShirt.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 1804771
end)
ReplicatedStorage.Shirts.BlueMarble.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 1821650
end)
ReplicatedStorage.Shirts.DogeShirt.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 1506494533
end)
ReplicatedStorage.Shirts.FREE.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 323171733
end)
ReplicatedStorage.Shirts.Guest.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 120325469
end)
ReplicatedStorage.Shirts.Spartan.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 1806215
end)
ReplicatedStorage.Shirts.HeavenlyArmor.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 1818507
end)
ReplicatedStorage.Shirts.Purple.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 1867443
end)
ReplicatedStorage.Shirts.WhiteTuxedo.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 2219153
end)
ReplicatedStorage.Shirts.NukeTheWhales.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 1514826269
end)
ReplicatedStorage.Shirts.Lua.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Shirt.Value = 14014339
end)
--Pants
ReplicatedStorage.Pant.None.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Pant.Value = 0
end)
ReplicatedStorage.Pant.BoneArmor.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Pant.Value = 130619129
end)
ReplicatedStorage.Pant.DarkArmor.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Pant.Value = 348591269
end)
ReplicatedStorage.Pant.DogePants.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Pant.Value = 276137445
end)
ReplicatedStorage.Pant.GreyRobe.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Pant.Value = 182688161
end)
ReplicatedStorage.Pant.RedRobe.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Pant.Value = 206488197
end)
ReplicatedStorage.Pant.Jeans.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Pant.Value = 880648184
end)
ReplicatedStorage.Pant.ToxicPants.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Pant.Value = 1819273
end)
ReplicatedStorage.Pant.WanWood.OnServerEvent:Connect(function(player)
game.Players[player.Name].AvatarConf.Pant.Value = 22751528
end)
----------------------------------------------------------------------------------------------------------
Players.PlayerAdded:Connect(function(player)
playersavetable[player] = tick()
loadStarterData(player)
loadData(player)
end)
Players.PlayerRemoving:Connect(function(player)
saveData(player)
end)
It is from the DataStore, it may seem like a long script but the most of it is just for RemoteEvents