Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Most Custom Decal Morph GUIs broken now. Fix?

Asked by 5 years ago

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)
0
ProcessReceipt is server-side only, and don't use :remove use :Destroy User#19524 175 — 5y

2 answers

Log in to vote
0
Answered by 5 years ago
Edited 5 years ago

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.

0
The problem isn't with the GUI itself, but with its function. It's supposed to turn the player's avatar invisible and display a decal on their character based on the ID they put in. The player that does this will still see it working on their end, but no one else will see the change. MrWarioman64 0 — 5y
0
...Meanwhile the decal and invisibility should display for all players. MrWarioman64 0 — 5y
Ad
Log in to vote
0
Answered by 4 years ago

How to do that? How am I going to make my own custom morph GUI?

Answer this question