Can't set/remove face object!

Yikes! Can you try deselecting all the faces, and try the script again with the default face?

N̶o̶ ̶m̶a̶t̶t̶e̶r̶ ̶w̶h̶a̶t̶ ̶I̶ ̶d̶o̶,̶ ̶I̶ ̶c̶a̶n̶’̶t̶ ̶s̶e̶t̶ ̶m̶y̶ ̶f̶a̶c̶e̶ ̶t̶o̶ ̶a̶n̶y̶t̶h̶i̶n̶g̶ ̶u̶n̶l̶e̶s̶s̶ ̶I̶ ̶s̶e̶t̶ ̶i̶t̶ ̶t̶o̶ ̶a̶ ̶c̶o̶s̶t̶u̶m̶e̶!̶ ̶T̶h̶i̶s̶ ̶i̶n̶c̶l̶u̶d̶e̶s̶ ̶r̶e̶m̶o̶v̶i̶n̶g̶/̶s̶e̶t̶t̶i̶n̶g̶

I retract that statement, I’ve set my face back to default!

That’s good news! Does it work now?

I would also like to state that this is still active, I’ve set my face back to default and it seems to still be doing this glitch.

Well, that’s what I can do now. You should try reporting this bug to Roblox.

I think this is a problem with the avatars, as I’ve stated before this works perfectly fine with a StarterCharacter dummy! There is no way I can fix this, this is a bug on Roblox’s end!

Normal Avatar::
image

StarterCharacter Dummy:
image

1 Like
local CustomFaces = {
	["CoIeRB"] = "rbxassetid://362505168",
	["ItsPlasmaRBLX"] = "rbxassetid://362505168",
}


game.Players.PlayerAdded:Connect(function(Player)
	local Texture = CustomFaces[Player.Name]
	if Texture then
		Player.CharacterAdded:Connect(function(Character)
			local Head = Character:WaitForChild("Head")
			local Face = Head:WaitForChild("face")
			if Face then
				local NewFace = Face:Clone()
				NewFace.Texture = Texture
				NewFace:GetPropertyChangedSignal("Texture"):Connect(function()
					NewFace.Texture = Texture
				end)
				Face:Destroy()
				NewFace.Parent = Head
			end
		end)
	end
end)

Same result, I’ve tried almost every method. I cannot change/remove the face. This is an error on Roblox’s end.

Same result, the bug also occurs in the app…

Alright, so I’m trying to report it to Roblox, yet I don’t have access to #bug-reports, #bug-reports:studio-bugs any way to report the bug in the correct category.

Properties are the exact same, Texture == rbxassetid://2222767231

The face also shows up like:

I have also posted a video of the bug!

Test 1: Spawning in as my Roblox character
Test 2: Spawning in as a StarterCharacter

It could be happening because you’re connecting CharacterAdded() after checking for custom face ownership, creating something like a race condition;

See if this works

local Players = game:GetService("Players")

local FaceOwnership = {
    ["ItsPlasmaRBLX"] = "rbxassetid://362505168";
    ["CoIeRB"] = "rbxassetid://362505168";
}

local function GetCustomFace(Player : Player)
    for UserName,TextureId in pairs(FaceOwnership) do
        if UserName == Player.Name then
            return TextureId
        end
    end
    return nil
end

Players.PlayerAdded:Connect(function(Player)
    Player.CharacterAdded:Connect(function(Character)
        local CustomFaceTex = GetCustomFace(Player)
        if CustomFaceTex ~= nil then
            local Head = Character:WaitForChild("Head")
            local Face = Character:FindFirstChildOfClass("Decal")
            if Face ~= nil then
                Face.Texture = CustomFaceTex
            end
        end
    end)
end)

Seems to turn out as the same result

Roblox thinks it should return this:

for this:

Try this:

local CustomFaceTable_ = {
    ["ItsPlasmaRBLX"] = "rbxassetid://362505168",
    ["CoIeRB"] = "rbxassetid://362505168"
}
function checkCustomFaceFunction(player)
    local Return = {false,0}
    for Name,ID in pairs(CustomFaceTable_) do
	    print(Name,ID)
		if player.Name == Name or player.UserId == ID then
		    warn("True")
		    Return = {true, ID}
	    end
    end
	if Return[1] == false and Return[2] == 0 then
	    warn("False")
    end
    return Return
end
Players.PlayerAdded:Connect(function(player)
    local canUseFace, faceTextureID = table.unpack(checkCustomFaceFunction(player))
	if canUseFace then
    	warn("Player can use custom face feature! | Continue!")
		player.CharacterAdded:Connect(function(character)
		    warn("Character Added.")
	    	character.Head.face.Texture = faceTextureID
    	end)
	end
end)
1 Like

fixed. works for me

local Players = game:GetService("Players")

local FaceOwnership = {
	["ItsPlasmaRBLX"] = "rbxassetid://362505168";
	["CoIeRB"] = "rbxassetid://362505168";
}

local function GetCustomFace(Player : Player)
	for UserName,TextureId in pairs(FaceOwnership) do
		if UserName == Player.Name then
			return TextureId
		end
	end
	return nil
end

Players.PlayerAdded:Connect(function(Player)
	Player.CharacterAdded:Connect(function(Character)
		Player.CharacterAppearanceLoaded:Wait()
		local CustomFaceTex = GetCustomFace(Player)
		print(CustomFaceTex)
		if CustomFaceTex ~= nil then
			local Head = Character:WaitForChild("Head")
			local Face = Head:WaitForChild("face")
			print(Head,Face)
			if Face ~= nil then
				print("Applying custom face")
				Face.Texture = CustomFaceTex
			end
		end
	end)
end)
1 Like

Seems to give the same result!

Thank you, the script seems to work! : D

I appreciate everyone who contributed to this thread! :blue_heart: