Ive made a character customization where u can switch between numbers like 1-4 and so on which change ur Hair,Skin,Shirt,Pants all the others have no problem switching but the “Skin” just wont switch from 0. I also get no errors in output or anything VIDEO: https://gyazo.com/135db796489c105de4e5e3304f64b56b
Script:
local IS = game:GetService("InsertService")
local CharacterEvent = game.ReplicatedStorage:WaitForChild("CharacterEvent")
local AccessoryFolder = game.ServerStorage:WaitForChild("AccessoryFolder")
local AccessoryDatastore = game:GetService("DataStoreService"):GetDataStore("AccessoryDatastore")
game.Players.PlayerAdded:Connect(function(plr)
local AccessorySaves = Instance.new("Folder", plr)
AccessorySaves.Name = "AccessorySaves"
local Shirt = Instance.new("NumberValue", AccessorySaves)
Shirt.Name = "Shirt"
Shirt.Value = 0
local Pants = Instance.new("NumberValue", AccessorySaves)
Pants.Name = "Pants"
Pants.Value = 0
local Skin = Instance.new("NumberValue", AccessorySaves)
Skin.Name = "Skin"
Skin.Value = 0
local Hair = Instance.new("NumberValue", AccessorySaves)
Hair.Name = "Hair"
Hair.Value = 0
local Key = plr.UserId
local Data = AccessoryDatastore:GetAsync(Key)
local success, errormessage = pcall(function()
if Data then
Shirt.Value = Data[1]
Pants.Value = Data[2]
Skin.Value = Data[3]
Hair.Value = Data[4]
end
end)
while not success do
task.wait(3)
if Data then
Shirt.Value = Data[1]
Pants.Value = Data[2]
Skin.Value = Data[3]
Hair.Value = Data[4]
end
end
end)
game.Players.PlayerRemoving:Connect(function(plr)
local success, errormessage = pcall(function()
local Key = plr.UserId
local DataTable = {}
for i,v in pairs(plr.AccessorySaves:GetChildren()) do
table.insert(DataTable, v.Value)
end
AccessoryDatastore:SetAsync(Key, DataTable)
end)
while not success do
task.wait(3)
local Key = plr.UserId
local DataTable = {}
for i,v in pairs(plr.AccessorySaves:GetChildren()) do
table.insert(DataTable, v.Value)
end
AccessoryDatastore:SetAsync(Key, DataTable)
end
end)
CharacterEvent.OnServerEvent:Connect(function(plr, eventype, Arg1, Arg2, Arg3)
local Character = plr.Character
if eventype == "Customization" then
local ChangeName = Arg1
local ChangeType = Arg2
local SelectedNumber = Arg3
for i,v in pairs(AccessoryFolder:GetChildren()) do
if v.Name == ChangeName then
for i2,v2 in pairs(v:GetChildren()) do
if ChangeType == "+" and v2.Name == tostring(SelectedNumber + 1) then
if Character:FindFirstChild(ChangeName) and ChangeName ~= "Hair" then
Character[ChangeName]:Destroy()
local Asset = IS:LoadAsset(v2.Value)
Asset[ChangeName].Parent = Character
elseif ChangeName == "Skin" then
if Character:FindFirstChild("BodyColors") then
Character.BodyColors:Destroy()
end
elseif ChangeName == "Hair" then
for i,v in pairs(Character:GetChildren()) do
if v:IsA("Accessory") and v.AccessoryType == Enum.AccessoryType.Hair then
v:Destroy()
end
end
local Hair = v2:Clone()
Hair.Name = "Hair"
Hair.Parent = Character
end
local BodyColors = v2:Clone()
BodyColors.Name = "BodyColors"
BodyColors.Parent = Character
CharacterEvent:FireClient(plr, "Customization", "+", ChangeName)
plr.AccessorySaves[ChangeName].Value = SelectedNumber + 1
elseif ChangeType == "-" and v2.Name == tostring(SelectedNumber - 1) then
if Character:FindFirstChild(ChangeName) and ChangeName ~= "Hair" then
Character[ChangeName]:Destroy()
local Asset = IS:LoadAsset(v2.Value)
Asset[ChangeName].Parent = Character
elseif ChangeName == "Skin" then
if Character:FindFirstChild("BodyColors") then
Character.BodyColors:Destroy()
end
local BodyColors = v2:Clone()
BodyColors.Name = "BodyColors"
BodyColors.Parent = Character
elseif ChangeName == "Hair" then
for i,v in pairs(Character:GetChildren()) do
if v:IsA("Accessory") and v.AccessoryType == Enum.AccessoryType.Hair then
v:Destroy()
end
end
end
local Hair = v2:Clone()
Hair.Name = "Hair"
Hair.Parent = Character
CharacterEvent:FireClient(plr, "Customization", "-", ChangeName)
plr.AccessorySaves[ChangeName].Value = SelectedNumber - 1
end
end
end
end
elseif eventype == "LoadSave" then
for i,v in pairs(AccessoryFolder:GetChildren()) do
for i2,v2 in pairs(plr.AccessorySaves:GetChildren()) do
if v2.Name == v.Name then
local SavedItem = v[v2.Value]
if v2.Name == "Shirt" or v2.Name == "Pants" then
Character[v2.Name]:Destroy()
local Asset = IS:LoadAsset(SavedItem.Value)
Asset[v2.Name].Parent = Character
elseif v2.Name == "Skin" then
if Character:FindFirstChild("BodyColors") then
Character.BodyColors:Destroy()
end
local BodyColors = SavedItem:Clone()
BodyColors.Parent = Character
elseif v2.Name == "Hair" then
for i3,v3 in pairs(Character:GetChildren()) do
if v3:IsA("Accessory") and v3.AccessoryType == Enum.AccessoryType.Hair then
v3:Destroy()
end
end
local Hair = SavedItem:Clone()
Hair.Name = "Hair"
Hair.Parent = Character
end
end
end
end
end
end)
