Quick actions

cmd+k|ctrl+k

Navigation

Languages

big floppa cube (floating)

Snippet info

Language

Lua

Visibility

public

Author

dinoturto

Created

2020-10-29T00:53:17Z

Updated

2024-01-06T12:04:10.528327Z

local tool = Instance.new("Tool")
tool.Name = "floppa cube"
tool.RequiresHandle = false
tool.ToolTip = "hold floppa. admire floppa. BE floppa."
tool.GripPos = Vector3.new(0,0,.5)
tool.Parent = owner.Backpack

script.Parent = tool

local chr = script.Parent.Parent.Parent.Character
local hum = chr.Humanoid
local root = chr.HumanoidRootPart

local textures = {}
local equipped = false
local canMorph = true
local isFloppa = false

local block = Instance.new("Part")
block.Name = "Handle"
block.Massless = true
block.Size = Vector3.new(1,1,1)
block.Transparency = 1
block.CanCollide = false
block.Massless = true
block.Parent = tool

local blockWeld = Instance.new("Weld")
blockWeld.Part0 = root
blockWeld.Part1 = block
blockWeld.Enabled = false
blockWeld.Parent = root
local BLC0 = blockWeld.C0
hum:UnequipTools()

for i = 1,6 do
    local tx = Instance.new("Texture")
    if i == 1 then
        tx.Face = "Top"
    elseif i == 2 then
        tx.Face = "Bottom"
    elseif i == 3 then
        tx.Face = "Front"
    elseif i == 4 then
        tx.Face = "Back"
    elseif i == 5 then
        tx.Face = "Left"
    elseif i == 6 then
        tx.Face = "Right"
    end
    tx.Name = "floppaTexture"
    tx.Texture = "http://www.roblox.com/asset/?id=5858524313"
    tx.Parent = block
    table.insert(textures,tx)
end

local song = Instance.new("Sound")
song.Name = "Big Floppa"
song.Parent = block
song.Looped = true
song.Volume = .5
song.SoundId = "rbxassetid://5523793612"
song:Play()

local frames = 20
local currentFrame = 1

local rows = 4
local columns = 5

local currentRow,currentColumn = 0,0
local fps = 60

local size = block.Size

for i,v in pairs(textures) do
    v.StudsPerTileU = columns*size.X
    v.StudsPerTileV = rows*size.Y
end

local currentScreen = 1

coroutine.wrap(function()
    while true do
        for i = 1, frames do
            currentColumn = currentColumn + 1
            if currentColumn > columns then
                currentColumn = 1
                currentRow = currentRow + 1
            end
            if currentFrame > frames then
                currentRow,currentColumn,currentFrame = 1,1,1
                currentScreen = currentScreen + 1
                if currentScreen > 3 then
                    currentScreen = 1
                end
                if currentScreen == 1 then
                    for i,v in pairs(textures) do
                        v.Texture = "http://www.roblox.com/asset/?id=5858524313"
                    end
                elseif currentScreen == 2 then
                    for i,v in pairs(textures) do
                        v.Texture = "http://www.roblox.com/asset/?id=5858532132"
                    end
                elseif currentScreen == 3 then
                    for i,v in pairs(textures) do
                        v.Texture = "http://www.roblox.com/asset/?id=5858535246"
                    end
                end
            end
            for i,v in pairs(textures) do
                v.OffsetStudsU = size.X*(currentColumn-1)
                v.OffsetStudsV = size.Y*(currentRow-1)
            end
            currentFrame = currentFrame+1
            wait(1/fps)
        end
        wait(1/fps)
    end
end)()

tool.Equipped:Connect(function()
    equipped = true
    if isFloppa == false then
        song:Resume()
    end
end)

tool.Unequipped:Connect(function()
    equipped = false
    if isFloppa == false then
        song:Pause()
    end
end)

tool.Activated:Connect(function()
    if isFloppa == false then
        local ra = chr:FindFirstChild("Right Arm") or chr:FindFirstChild("RightHand")
        ra:FindFirstChild("RightGrip").Enabled = false
    end
    if canMorph == true and equipped == true then
        canMorph = false
        block.Parent = chr
        blockWeld.Enabled = true
        block.Name = 'floppa'
        blockWeld.C0 = BLC0 * CFrame.new(1.5,.5,-1.5)
        for i,v in pairs(chr:GetDescendants()) do
            if (v.ClassName == "Part" or v:IsA("MeshPart") and v.Name ~= "HumanoidRootPart" and v.Name ~= "floppa") or ((v.ClassName == "Decal" or v.ClassName == "Texture") and v.Name ~= "floppaTexture") then
                local transparencyTween
                local floppaTween
                local floppaWeldTween1
                local floppaWeldTween2
                local soundTween
                
                if isFloppa == false then
                    transparencyTween = game:GetService("TweenService"):Create(v,TweenInfo.new(3),{Transparency = 1})
                    floppaTween = game:GetService("TweenService"):Create(block,TweenInfo.new(3),{Size = Vector3.new(5,5,5),Transparency = 0})
                    floppaWeldTween1 = game:GetService("TweenService"):Create(blockWeld,TweenInfo.new(3),{C0 = BLC0 * CFrame.new(1.5,2.5,0)})
                    floppaWeldTween2 = game:GetService("TweenService"):Create(blockWeld,TweenInfo.new(3),{C0 = BLC0 * CFrame.new(0,1.5,0)})
                    soundTween = game:GetService("TweenService"):Create(song,TweenInfo.new(3),{Volume = .75})
                elseif isFloppa == true then
                    transparencyTween = game:GetService("TweenService"):Create(v,TweenInfo.new(3),{Transparency = 0})
                    floppaTween = game:GetService("TweenService"):Create(block,TweenInfo.new(3),{Size = Vector3.new(1,1,1),Transparency = 0})
                    floppaWeldTween1 = game:GetService("TweenService"):Create(blockWeld,TweenInfo.new(3),{C0 = BLC0 * CFrame.new(0,3.5,-1.5)})
                    floppaWeldTween2 = game:GetService("TweenService"):Create(blockWeld,TweenInfo.new(3),{C0 = BLC0 * CFrame.new(1.5,-1.5,0)})
                    soundTween = game:GetService("TweenService"):Create(song,TweenInfo.new(3),{Volume = .5})
                end
                
                transparencyTween:Play()
                floppaTween:Play()
                floppaWeldTween1:Play()
                soundTween:Play()
                
                task.spawn(function()
                    task.wait(3)
                    transparencyTween:Cancel()
                    floppaTween:Cancel()
                    floppaWeldTween1:Cancel()
                    floppaWeldTween2:Play()
                    task.wait(3)
                    floppaWeldTween2:Cancel()
                end)
            end
        end
        task.wait(6)
        if isFloppa == false then
            isFloppa = true
        elseif isFloppa == true then
            isFloppa = false
            blockWeld.Enabled = false
            block.Parent = tool
            block.Name = 'Handle'
            local ra = chr:FindFirstChild("Right Arm") or chr:FindFirstChild("RightHand")
            ra:FindFirstChild("RightGrip").Enabled = true
        end
        canMorph = true
    end
end)

local t = tick()

game:GetService("RunService").Heartbeat:Connect(function(delta)
    t = t + delta*30
    if script.Parent.Parent.Parent == workspace then
        chr = script.Parent.Parent
        hum = chr.Humanoid
        root = chr.HumanoidRootPart
        blockWeld.Part0 = root
        blockWeld.Parent = root
    end
    size = block.Size
    for i,v in pairs(textures) do
        v.StudsPerTileU = columns*size.X
        v.StudsPerTileV = rows*size.Y
    end
    if isFloppa == true then
        blockWeld.C0 = blockWeld.C0:Lerp(BLC0 * CFrame.new(0,1.5 + math.sin(t/5)/2,0) * CFrame.Angles(math.sin(t/150)*10,math.cos(t/150)*10,-math.cos(t/150)*10),.3)
    end
end)
INFO