local Players = game:GetService("Players") local player = Players.LocalPlayer local char = player.Character or player.CharacterAdded:Wait() local humanoid = char:WaitForChild("Humanoid") local torso = char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso") ------------------------------------------------ -- CONFIG ------------------------------------------------ local SPEED = 16 local JUMP = 50 ------------------------------------------------ -- STATE ------------------------------------------------ local currentMorph local billboard local imageLabel local sounds = {} local squish = false local walkIndex = 1 ------------------------------------------------ -- INVISIBILIDAD LOCAL ------------------------------------------------ local function setInvisible(state) for _,v in pairs(char:GetDescendants()) do if v:IsA("BasePart") then v.LocalTransparencyModifier = state and 1 or 0 elseif v:IsA("Decal") then v.Transparency = state and 1 or 0 end end end ------------------------------------------------ -- CLEANUP ------------------------------------------------ local function clear() for _,s in pairs(sounds) do s:Destroy() end sounds = {} squish = false end ------------------------------------------------ -- MORPHS DATA ------------------------------------------------ local morphs = { {name="Skin1",idle="rbxassetid://5563198794",walk1="rbxassetid://138441800759661",walk2="rbxassetid://18867835362"}, {name="Skin2",idle="rbxassetid://6025906062",walk1="rbxassetid://6025906062",walk2="rbxassetid://6025906062"}, {name="Skin3",idle="rbxassetid://6025907083",walk1="rbxassetid://6025907083",walk2="rbxassetid://6025907083"}, {name="Skin4",idle="rbxassetid://135443411709600",walk1="rbxassetid://106573493119846",walk2="rbxassetid://96218619096435"}, {name="Skin5",idle="rbxassetid://129030902525740",walk1="rbxassetid://129030902525740",walk2="rbxassetid://129030902525740"}, {name="Skin6",idle="rbxassetid://135320991090453",walk1="rbxassetid://135320991090453",walk2="rbxassetid://135320991090453"} } ------------------------------------------------ -- MORPH APPLY ------------------------------------------------ local function setMorph(m) clear() currentMorph = m if billboard then billboard:Destroy() end humanoid.WalkSpeed = SPEED humanoid.JumpPower = JUMP setInvisible(true) billboard = Instance.new("BillboardGui") billboard.Size = UDim2.new(9,0,9,0) billboard.StudsOffset = Vector3.new(0,1.5,0) billboard.Parent = torso imageLabel = Instance.new("ImageLabel") imageLabel.Size = UDim2.new(1,0,1,0) imageLabel.BackgroundTransparency = 1 imageLabel.Image = m.idle imageLabel.Parent = billboard -- SKIN 3 EFFECT if m.name == "Skin3" then squish = true end -- SKIN 4 SOUND if m.name == "Skin4" then local sound = Instance.new("Sound") sound.SoundId = "rbxassetid://468911141" sound.Volume = 0.75 sound.Looped = true sound.Parent = torso sound:Play() table.insert(sounds, sound) end -- SKIN 6 SOUND (si quieres mantenerlo) if m.name == "Skin6" then local sound = Instance.new("Sound") sound.SoundId = "rbxassetid://138485686268988" sound.Volume = 0.75 sound.Looped = true sound.Parent = torso sound:Play() table.insert(sounds, sound) end end ------------------------------------------------ -- ANIMATION LENTA ------------------------------------------------ task.spawn(function() while true do task.wait(0.25) if currentMorph and imageLabel then if humanoid.MoveDirection.Magnitude > 0 then walkIndex = (walkIndex % 2) + 1 imageLabel.Image = (walkIndex == 1 and currentMorph.walk1 or currentMorph.walk2) else imageLabel.Image = currentMorph.idle walkIndex = 1 end end end end) ------------------------------------------------ -- SKIN 3 SQUISH EFFECT ------------------------------------------------ task.spawn(function() while true do task.wait() if squish and billboard then local t = math.sin(tick() * 10) * 0.05 billboard.Size = UDim2.new(9 + t,0,9 - t,0) end end end) ------------------------------------------------ -- GUI ------------------------------------------------ local gui = Instance.new("ScreenGui") gui.Name = "MORPHS_1.0_CLIENT" gui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0,300,0,220) frame.Position = UDim2.new(0,100,0,100) frame.BackgroundColor3 = Color3.fromRGB(0,0,0) frame.BorderColor3 = Color3.fromRGB(0,255,0) frame.Active = true frame.Draggable = true frame.Parent = gui local title = Instance.new("TextLabel") title.Size = UDim2.new(1,0,0,30) title.Text = "MORPHS 1.0 (CLIENT)" title.TextColor3 = Color3.fromRGB(0,255,0) title.BackgroundTransparency = 1 title.Parent = frame local inv = Instance.new("ScrollingFrame") inv.Size = UDim2.new(0,270,0,120) inv.Position = UDim2.new(0,15,0,90) inv.BackgroundColor3 = Color3.fromRGB(10,10,10) inv.ScrollBarThickness = 6 inv.Parent = frame local grid = Instance.new("UIGridLayout") grid.CellSize = UDim2.new(0,80,0,80) grid.CellPadding = UDim2.new(0,6,0,6) grid.Parent = inv ------------------------------------------------ -- CREATE SLOTS ------------------------------------------------ local function createSlot(m) local b = Instance.new("ImageButton") b.Size = UDim2.new(0,80,0,80) b.Image = m.idle b.BackgroundColor3 = Color3.fromRGB(25,25,25) b.Parent = inv b.MouseButton1Click:Connect(function() setMorph(m) end) end for _,m in pairs(morphs) do createSlot(m) end ------------------------------------------------ -- REMOVE MORPH ------------------------------------------------ local removeBtn = Instance.new("TextButton") removeBtn.Size = UDim2.new(0,270,0,40) removeBtn.Position = UDim2.new(0,15,0,40) removeBtn.Text = "REMOVE MORPH" removeBtn.BackgroundColor3 = Color3.fromRGB(200,0,0) removeBtn.Parent = frame removeBtn.MouseButton1Click:Connect(function() clear() if billboard then billboard:Destroy() billboard = nil end currentMorph = nil setInvisible(false) humanoid.WalkSpeed = 16 humanoid.JumpPower = 50 end)