A couple days ago, seemingly any custom decal morph GUI that worked were broken by an update. They still appear to work client-side, but any other player will not see one's decal, or even see their avatar turn invisible. A fix is possible, as places such as Universal RP had their scripts updated immediately. However, I haven't been able to figure how they did it. Maybe someone can help point it out?
local Player = game.Players.LocalPlayer local Gui = script.Parent.Parent local Image = Gui:FindFirstChild("morph_preview") local Product = game:GetService("MarketplaceService"):GetProductInfo(362437609) local User = Product.Creator.Name repeat wait() until Player.Character repeat wait() until Player.Character:FindFirstChild("Humanoid") function morphPlayer() if not Player.Character.Parent:FindFirstChild(Player.Name .. "'s Morph") and Player.Character:FindFirstChild("Torso") then Morph = Instance.new("Part") Morph.FormFactor = "Symmetric" Morph.Size = Player.Character.Torso.Size Morph.CanCollide = false Morph.Position = Vector3.new(0,100,0) Morph.Transparency = 1 Morph.Name = Player.Name .. "'s Morph" Morph.Parent = game.Workspace Mesh = Instance.new("BlockMesh") Mesh.Parent = Morph Mesh.Scale = Vector3.new(3,3,0.5) Mesh.Name = "morph_mesh" if not Gui:FindFirstChild("credits") then Gui:remove() else if Gui.credits.Text ~= ("Morph GUI made by " .. User) then Gui:remove() end end --Mesh size MeshSizeX = Gui:FindFirstChild("input_x").Text MeshSizeY = Gui:FindFirstChild("input_y").Text NumberX = tonumber(MeshSizeX) NumberY = tonumber(MeshSizeY) if MeshSizeX ~= "Input X" and MeshSizeY ~= "Input Y" then if NumberX > 0 and NumberX <= 10 then Mesh.Scale = Vector3.new(NumberX,Mesh.Scale.Y,0.5) elseif NumberX < 0 then Mesh.Scale = Vector3.new(1,Mesh.Scale.Y,0.5) elseif NumberX > 10 then Mesh.Scale = Vector3.new(10,Mesh.Scale.Y,0.5) end if NumberY > 0 and NumberY <= 10 then Mesh.Scale = Vector3.new(Mesh.Scale.X,NumberY,0.5) elseif NumberY <= 0 then Mesh.Scale = Vector3.new(Mesh.Scale.X,1,0.5) elseif NumberY > 10 then Mesh.Scale = Vector3.new(Mesh.Scale.X,10,0.5) end Mesh.Offset = Vector3.new(0,Mesh.Scale.Y - 3,0) else Mesh.Scale = Vector3.new(3,3,0.5) end Decal1 = Instance.new("Decal") Decal1.Parent = Morph Decal1.Name = "front_image" Decal1.Face = "Front" Decal1.Texture = Image.Image Decal2 = Instance.new("Decal") Decal2.Parent = Morph Decal2.Name = "back_image" Decal2.Face = "Back" Decal2.Texture = Image.Image Weld = Instance.new("Weld") Weld.Parent = Morph Weld.Name = "player_weld" Weld.Part0 = Player.Character.Torso Weld.Part1 = Morph --Hide player's character BodyParts = Player.Character:GetChildren() for i = 1,#BodyParts do if BodyParts[i]:IsA("Part") then BodyParts[i].Transparency = 1 if BodyParts[i].Name == "Head" then BodyParts[i]:FindFirstChild("face").Transparency = 1 if Player.Character:FindFirstChild("PlayerName") then BodyParts[i].Transparency = 1 else BodyParts[i].Transparency = 0.95 end end elseif BodyParts[i]:IsA("Hat") then BodyParts[i]:FindFirstChild("Handle").Transparency = 1 elseif BodyParts[i].Name == "PlayerName" then NameChil = BodyParts[i]:GetChildren() for i = 1,#NameChil do if NameChil[i]:IsA("Model") then NameChil[i]:FindFirstChild("Head").Transparency = 0.95 end end end end else Decal1.Texture = Image.Image Decal2.Texture = Image.Image if not Gui:FindFirstChild("credits") then Gui:remove() else if Gui.credits.Text ~= ("Morph GUI made by " .. User) then Gui:remove() end end --Mesh size MeshSizeX = Gui:FindFirstChild("input_x").Text MeshSizeY = Gui:FindFirstChild("input_y").Text NumberX = tonumber(MeshSizeX) NumberY = tonumber(MeshSizeY) if MeshSizeX ~= "Input X" and MeshSizeY ~= "Input Y" then if NumberX > 0 and NumberX <= 10 then Mesh.Scale = Vector3.new(NumberX,Mesh.Scale.Y,0.5) elseif NumberX < 0 then Mesh.Scale = Vector3.new(1,Mesh.Scale.Y,0.5) elseif NumberX > 10 then Mesh.Scale = Vector3.new(10,Mesh.Scale.Y,0.5) end if NumberY > 0 and NumberY <= 10 then Mesh.Scale = Vector3.new(Mesh.Scale.X,NumberY,0.5) elseif NumberY <= 0 then Mesh.Scale = Vector3.new(Mesh.Scale.X,1,0.5) elseif NumberY > 10 then Mesh.Scale = Vector3.new(Mesh.Scale.X,10,0.5) end Mesh.Offset = Vector3.new(0,Mesh.Scale.Y - 3,0) else Mesh.Scale = Vector3.new(3,3,0.5) end end end function PlayerDied(player) Morph = Player.Character.Parent:FindFirstChild(Player.Name .. "'s Morph") if Morph then Morph:remove() end end Player.Character.Humanoid.Died:connect(PlayerDied) script.Parent.MouseButton1Down:connect(morphPlayer)
As it's in a Gui it won't accept a Decal it has to be an ImageLabel Also You Will have to change your image code to this:
ImageOne = ID ImageTwo = ID ImageThree = ID ImageFour = ID Location Of Image In Gui.ImageLabel.Image = ImageOne
If it's a Decal then you want the code to be like this
ImageOne = ID ImageTwo = ID ImageThree = ID ImageFour = ID Location Of Decal In Part.Decal.Texture = ImageOne
The reason it won't work on a part is because ROBLOX had an update where it says "Decal" Instead of "Image". Thank you for reading.
How to do that? How am I going to make my own custom morph GUI?