-- StudioLite GUI Tool with Model Inserter, Emote Player, Sound Preview, Custom Emote Save/Load, Union Operation, and Animation Support -- Made for Arceus X / StudioLite if game.CoreGui:FindFirstChild("DevToolGui") then game.CoreGui.DevToolGui:Destroy() end local gui = Instance.new("ScreenGui", game.CoreGui) gui.Name = "DevToolGui" gui.ResetOnSpawn = false local frame = Instance.new("Frame", gui) frame.Size = UDim2.new(0, 400, 0, 550) frame.Position = UDim2.new(0.5, -200, 0.5, -260) frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 12) local title = Instance.new("TextLabel", frame) title.Size = UDim2.new(1, 0, 0, 30) title.Text = "StudioLite Dev Tool" title.TextColor3 = Color3.new(1, 1, 1) title.BackgroundTransparency = 1 title.Font = Enum.Font.GothamBold title.TextSize = 18 local closeBtn = Instance.new("TextButton", frame) closeBtn.Size = UDim2.new(0, 30, 0, 30) closeBtn.Position = UDim2.new(1, -35, 0, 0) closeBtn.Text = "X" closeBtn.BackgroundColor3 = Color3.fromRGB(255, 70, 70) closeBtn.TextColor3 = Color3.new(1, 1, 1) closeBtn.Font = Enum.Font.GothamBold closeBtn.TextSize = 18 closeBtn.MouseButton1Click:Connect(function() gui:Destroy() end) -- Saved Emotes (auto-saved in getgenv) getgenv().CustomEmotes = getgenv().CustomEmotes or {} -- Elements for Model Insertion and Sound Preview local modelBox = Instance.new("TextBox", frame) modelBox.PlaceholderText = "Enter Model ID" modelBox.Size = UDim2.new(0.9, 0, 0, 30) modelBox.Position = UDim2.new(0.05, 0, 0, 40) modelBox.BackgroundColor3 = Color3.fromRGB(50, 50, 50) modelBox.TextColor3 = Color3.new(1, 1, 1) local insertBtn = Instance.new("TextButton", frame) insertBtn.Text = "Insert Model" insertBtn.Size = UDim2.new(0.9, 0, 0, 30) insertBtn.Position = UDim2.new(0.05, 0, 0, 80) insertBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 255) insertBtn.TextColor3 = Color3.new(1, 1, 1) local soundBox = Instance.new("TextBox", frame) soundBox.PlaceholderText = "Sound ID" soundBox.Size = UDim2.new(0.65, 0, 0, 25) soundBox.Position = UDim2.new(0.05, 0, 0, 120) soundBox.BackgroundColor3 = Color3.fromRGB(60, 60, 60) soundBox.TextColor3 = Color3.new(1, 1, 1) local soundPlayBtn = Instance.new("TextButton", frame) soundPlayBtn.Text = "Play" soundPlayBtn.Size = UDim2.new(0.25, 0, 0, 25) soundPlayBtn.Position = UDim2.new(0.7, 0, 0, 120) soundPlayBtn.BackgroundColor3 = Color3.fromRGB(0, 255, 127) soundPlayBtn.TextColor3 = Color3.new(1, 1, 1) -- Animation/Emote ID Input for Animation Playing local animationBox = Instance.new("TextBox", frame) animationBox.PlaceholderText = "Enter Animation/Emote ID" animationBox.Size = UDim2.new(0.9, 0, 0, 30) animationBox.Position = UDim2.new(0.05, 0, 0, 160) animationBox.BackgroundColor3 = Color3.fromRGB(50, 50, 50) animationBox.TextColor3 = Color3.new(1, 1, 1) local playAnimBtn = Instance.new("TextButton", frame) playAnimBtn.Text = "Play Animation" playAnimBtn.Size = UDim2.new(0.9, 0, 0, 30) playAnimBtn.Position = UDim2.new(0.05, 0, 0, 200) playAnimBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 255) playAnimBtn.TextColor3 = Color3.new(1, 1, 1) -- Anchor / Unanchor Buttons (Model is anchored by default) local anchorBtn = Instance.new("TextButton", frame) anchorBtn.Text = "Anchor Model" anchorBtn.Size = UDim2.new(0.43, 0, 0, 30) anchorBtn.Position = UDim2.new(0.05, 0, 0, 240) anchorBtn.BackgroundColor3 = Color3.fromRGB(100, 200, 255) anchorBtn.TextColor3 = Color3.new(1, 1, 1) local unanchorBtn = Instance.new("TextButton", frame) unanchorBtn.Text = "Unanchor Model" unanchorBtn.Size = UDim2.new(0.43, 0, 0, 30) unanchorBtn.Position = UDim2.new(0.52, 0, 0, 240) unanchorBtn.BackgroundColor3 = Color3.fromRGB(255, 100, 100) unanchorBtn.TextColor3 = Color3.new(1, 1, 1) -- Function to safely anchor the model anchorBtn.MouseButton1Click:Connect(function() if currentModel then for _, part in ipairs(currentModel:GetDescendants()) do if part:IsA("BasePart") then part.Anchored = true part.CanCollide = false -- Disable collision to prevent unwanted behavior end end end end) -- Function to unanchor the model safely unanchorBtn.MouseButton1Click:Connect(function() if currentModel then for _, part in ipairs(currentModel:GetDescendants()) do if part:IsA("BasePart") then part.Anchored = false part.CanCollide = true -- Re-enable collision when unanchored end end end end) -- Model insertion functionality insertBtn.MouseButton1Click:Connect(function() local id = tonumber(modelBox.Text) if not id then return end local success, model = pcall(function() return game:GetObjects("rbxassetid://"..id)[1] end) if success and model then -- Anchor model by default for _, p in ipairs(model:GetDescendants()) do if p:IsA("BasePart") then p.Anchored = true p.CanCollide = false end end model.Parent = workspace currentModel = model end end) -- Sound preview functionality soundPlayBtn.MouseButton1Click:Connect(function() local id = tonumber(soundBox.Text) if not id then return end local sound = Instance.new("Sound", workspace) sound.SoundId = "rbxassetid://" .. id sound.Volume = 1 sound:Play() game.Debris:AddItem(sound, 10) end) -- Play animation/emote functionality playAnimBtn.MouseButton1Click:Connect(function() local animId = tonumber(animationBox.Text) if not animId then return end local character = game.Players.LocalPlayer.Character if not character then return end local humanoid = character:FindFirstChildOfClass("Humanoid") if not humanoid then return end local anim = Instance.new("Animation") anim.AnimationId = "rbxassetid://" .. animId -- Play the animation local animationTrack = humanoid:LoadAnimation(anim) animationTrack:Play() animationTrack.Stopped:Connect(function() animationTrack:Destroy() -- Clean up after the animation finishes end) end) -- Emote List Scroll Frame local scroll = Instance.new("ScrollingFrame", frame) scroll.Size = UDim2.new(0.9, 0, 0, 160) scroll.Position = UDim2.new(0.05, 0, 0, 280) scroll.CanvasSize = UDim2.new(0, 0, 0, 600) scroll.ScrollBarThickness = 6 scroll.BackgroundColor3 = Color3.fromRGB(40, 40, 40) local layout = Instance.new("UIListLayout", scroll) layout.SortOrder = Enum.SortOrder.LayoutOrder layout.Padding = UDim.new(0, 4) local emotes = { ["Stylish"] = "656118852", ["Levitate"] = "656117878", ["Ninja"] = "656118959", ["Mage"] = "656118629", ["Popstar"] = "656118122", ["Cartoony"] = "742637544", ["Old School"] = "531982821", ["Robot Dance"] = "507777826", ["Zombie Run"] = "616168001", ["Toy Walk"] = "782841498" } -- Function to create an emote button local function createEmoteBtn(name, id) local holder = Instance.new("Frame", scroll) holder.Size = UDim2.new(1, 0, 0, 50) holder.BackgroundTransparency = 1 local thumb = Instance.new("ImageLabel", holder) thumb.Size = UDim2.new(0, 50, 0, 50) thumb.Position = UDim2.new(0, 0, 0, 0) thumb.BackgroundTransparency = 1 thumb.Image = "rbxthumb://type=Asset&id=" .. id .. "&w=150&h=150" local emoteBtn = Instance.new("TextButton", holder) emoteBtn.Text = name emoteBtn.Size = UDim2.new(1, -55, 0, 50) emoteBtn.Position = UDim2.new(0, 55, 0, 0) emoteBtn.BackgroundColor3 = Color3.fromRGB(100, 100, 255) emoteBtn.TextColor3 = Color3.new(1, 1, 1) emoteBtn.Font = Enum.Font.Gotham emoteBtn.TextSize = 18 emoteBtn.MouseButton1Click:Connect(function() modelBox.Text = id insertBtn:MouseButton1Click() -- Trigger model insertion end) end -- Create buttons for predefined emotes for name, id in pairs(emotes) do createEmoteBtn(name, id) end -- Emote Saving local customName = Instance.new("TextBox", frame) customName.PlaceholderText = "Save As Name" customName.Size = UDim2.new(0.4, -5, 0, 25) customName.Position = UDim2.new(0.05, 0, 0, 380) customName.BackgroundColor3 = Color3.fromRGB(60, 60, 60) customName.TextColor3 = Color3.new(1, 1, 1) local saveBtn = Instance.new("TextButton", frame) saveBtn.Text = "Save Emote" saveBtn.Size = UDim2.new(0.5, 0, 0, 25) saveBtn.Position = UDim2.new(0.5, 0, 0, 380) saveBtn.BackgroundColor3 = Color3.fromRGB(100, 100, 255) saveBtn.TextColor3 = Color3.new(1, 1, 1) saveBtn.MouseButton1Click:Connect(function() local name = customName.Text if name == "" then return end local id = tonumber(modelBox.Text) if not id then return end getgenv().CustomEmotes[name] = id createEmoteBtn(name, id) customName.Text = "" -- clear field after saving print("Custom emote saved: " .. name .. " with ID " .. id) end) -- Display previously saved custom emotes on load for name, id in pairs(getgenv().CustomEmotes) do createEmoteBtn(name, id) end