--[[ Ultimate Emote Hub V1 R15 Emote GUI Mobile / Tablet / PC Single-file Lua ]] local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local Player = Players.LocalPlayer local PlayerGui = Player:WaitForChild("PlayerGui") --// R15 CHECK local Character = Player.Character or Player.CharacterAdded:Wait() local Humanoid = Character:WaitForChild("Humanoid") if Humanoid.RigType ~= Enum.HumanoidRigType.R15 then warn("Ultimate Emote Hub: Bu GUI R15 karakterler için tasarlanmıştır.") end --// CLEAN OLD GUI local old = PlayerGui:FindFirstChild("UltimateEmoteHubV1") if old then old:Destroy() end --// SETTINGS local CurrentTheme = Color3.fromRGB(30, 30, 38) local Accent = Color3.fromRGB(0, 170, 255) local CurrentTrack = nil --// EMOTE LIST -- Roblox katalog emote asset ID'lerini buraya ekleyebilirsin. local Emotes = { {Name = "Wave", ID = 507770239}, {Name = "Point", ID = 507770453}, {Name = "Laugh", ID = 507770818}, {Name = "Cheer", ID = 507770677}, {Name = "Dance 1", ID = 507771019}, {Name = "Dance 2", ID = 507776043}, {Name = "Dance 3", ID = 507777268}, {Name = "Salute", ID = 3360689775}, {Name = "Shrug", ID = 3576968026}, {Name = "Tilt", ID = 3360692915}, } --// SCREEN GUI local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "UltimateEmoteHubV1" ScreenGui.ResetOnSpawn = false ScreenGui.IgnoreGuiInset = true ScreenGui.Parent = PlayerGui --// OPEN BUTTON local OpenButton = Instance.new("TextButton") OpenButton.Name = "OpenButton" OpenButton.Size = UDim2.new(0, 55, 0, 55) OpenButton.Position = UDim2.new(0, 20, 0.5, -27) OpenButton.BackgroundColor3 = Accent OpenButton.Text = "🎭" OpenButton.TextSize = 27 OpenButton.Font = Enum.Font.GothamBold OpenButton.TextColor3 = Color3.new(1,1,1) OpenButton.Visible = false OpenButton.Parent = ScreenGui local OpenCorner = Instance.new("UICorner") OpenCorner.CornerRadius = UDim.new(1,0) OpenCorner.Parent = OpenButton --// MAIN FRAME local Main = Instance.new("Frame") Main.Name = "Main" Main.Size = UDim2.new(0, 420, 0, 500) Main.Position = UDim2.new(0.5, -210, 0.5, -250) Main.BackgroundColor3 = CurrentTheme Main.BorderSizePixel = 0 Main.Parent = ScreenGui local MainCorner = Instance.new("UICorner") MainCorner.CornerRadius = UDim.new(0, 16) MainCorner.Parent = Main --// STROKE local Stroke = Instance.new("UIStroke") Stroke.Color = Accent Stroke.Thickness = 2 Stroke.Parent = Main --// TITLE BAR local Top = Instance.new("Frame") Top.Size = UDim2.new(1, 0, 0, 58) Top.BackgroundColor3 = Color3.fromRGB(22,22,29) Top.BorderSizePixel = 0 Top.Parent = Main local TopCorner = Instance.new("UICorner") TopCorner.CornerRadius = UDim.new(0,16) TopCorner.Parent = Top local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, -120, 1, 0) Title.Position = UDim2.new(0, 18, 0, 0) Title.BackgroundTransparency = 1 Title.Text = "🎭 Ultimate Emote Hub" Title.TextColor3 = Color3.new(1,1,1) Title.TextSize = 20 Title.Font = Enum.Font.GothamBold Title.TextXAlignment = Enum.TextXAlignment.Left Title.Parent = Top local Version = Instance.new("TextLabel") Version.Size = UDim2.new(1, -120, 0, 18) Version.Position = UDim2.new(0, 19, 0, 34) Version.BackgroundTransparency = 1 Version.Text = "R15 • V1" Version.TextColor3 = Color3.fromRGB(160,160,170) Version.TextSize = 11 Version.Font = Enum.Font.Gotham Version.TextXAlignment = Enum.TextXAlignment.Left Version.Parent = Top --// CLOSE local Close = Instance.new("TextButton") Close.Size = UDim2.new(0, 42, 0, 42) Close.Position = UDim2.new(1, -50, 0, 8) Close.BackgroundColor3 = Color3.fromRGB(180,55,65) Close.Text = "×" Close.TextSize = 28 Close.TextColor3 = Color3.new(1,1,1) Close.Font = Enum.Font.GothamBold Close.Parent = Top local CloseCorner = Instance.new("UICorner") CloseCorner.CornerRadius = UDim.new(0,10) CloseCorner.Parent = Close --// SEARCH local Search = Instance.new("TextBox") Search.Size = UDim2.new(1, -30, 0, 42) Search.Position = UDim2.new(0, 15, 0, 72) Search.BackgroundColor3 = Color3.fromRGB(42,42,52) Search.PlaceholderText = "🔎 Emote ara..." Search.PlaceholderColor3 = Color3.fromRGB(150,150,160) Search.Text = "" Search.TextColor3 = Color3.new(1,1,1) Search.TextSize = 14 Search.Font = Enum.Font.Gotham Search.ClearTextOnFocus = false Search.Parent = Main local SearchCorner = Instance.new("UICorner") SearchCorner.CornerRadius = UDim.new(0,10) SearchCorner.Parent = Search --// STOP BUTTON local Stop = Instance.new("TextButton") Stop.Size = UDim2.new(1, -30, 0, 40) Stop.Position = UDim2.new(0, 15, 1, -55) Stop.BackgroundColor3 = Color3.fromRGB(180,65,70) Stop.Text = "⏹ Emote Durdur" Stop.TextColor3 = Color3.new(1,1,1) Stop.TextSize = 14 Stop.Font = Enum.Font.GothamBold Stop.Parent = Main local StopCorner = Instance.new("UICorner") StopCorner.CornerRadius = UDim.new(0,10) StopCorner.Parent = Stop --// SCROLL local Scroll = Instance.new("ScrollingFrame") Scroll.Name = "EmoteList" Scroll.Size = UDim2.new(1, -30, 1, -175) Scroll.Position = UDim2.new(0, 15, 0, 125) Scroll.BackgroundTransparency = 1 Scroll.BorderSizePixel = 0 Scroll.ScrollBarThickness = 5 Scroll.CanvasSize = UDim2.new(0,0,0,0) Scroll.Parent = Main local Layout = Instance.new("UIListLayout") Layout.Padding = UDim.new(0,8) Layout.SortOrder = Enum.SortOrder.LayoutOrder Layout.Parent = Scroll local Padding = Instance.new("UIPadding") Padding.PaddingBottom = UDim.new(0,8) Padding.Parent = Scroll --// PLAY EMOTE local function PlayEmote(id) if CurrentTrack then pcall(function() CurrentTrack:Stop() CurrentTrack:Destroy() end) CurrentTrack = nil end Character = Player.Character or Player.CharacterAdded:Wait() Humanoid = Character:FindFirstChildOfClass("Humanoid") if not Humanoid then return end if Humanoid.RigType ~= Enum.HumanoidRigType.R15 then warn("R15 karakter gerekli.") return end local Animator = Humanoid:FindFirstChildOfClass("Animator") if not Animator then Animator = Instance.new("Animator") Animator.Parent = Humanoid end local Animation = Instance.new("Animation") Animation.AnimationId = "rbxassetid://" .. tostring(id) local success, track = pcall(function() return Animator:LoadAnimation(Animation) end) if success and track then CurrentTrack = track CurrentTrack.Looped = true CurrentTrack.Priority = Enum.AnimationPriority.Action CurrentTrack:Play() end end --// CREATE BUTTON local function CreateEmoteButton(emote) local Button = Instance.new("TextButton") Button.Size = UDim2.new(1, -5, 0, 48) Button.BackgroundColor3 = Color3.fromRGB(42,42,52) Button.Text = "🕺 " .. emote.Name Button.TextColor3 = Color3.new(1,1,1) Button.TextSize = 14 Button.Font = Enum.Font.GothamSemibold Button.AutoButtonColor = true Button.Parent = Scroll local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0,10) Corner.Parent = Button Button.MouseButton1Click:Connect(function() PlayEmote(emote.ID) end) -- Touch desteği Button.TouchTap:Connect(function() PlayEmote(emote.ID) end) end --// REFRESH LIST local function RefreshList() for _, child in ipairs(Scroll:GetChildren()) do if child:IsA("TextButton") then child:Destroy() end end local query = string.lower(Search.Text) for _, emote in ipairs(Emotes) do if query == "" or string.find(string.lower(emote.Name), query, 1, true) then CreateEmoteButton(emote) end end task.wait() Scroll.CanvasSize = UDim2.new( 0, 0, 0, Layout.AbsoluteContentSize.Y + 10 ) end RefreshList() Search:GetPropertyChangedSignal("Text"):Connect(RefreshList) --// STOP Stop.MouseButton1Click:Connect(function() if CurrentTrack then pcall(function() CurrentTrack:Stop() CurrentTrack:Destroy() end) CurrentTrack = nil end end) Stop.TouchTap:Connect(function() if CurrentTrack then pcall(function() CurrentTrack:Stop() CurrentTrack:Destroy() end) CurrentTrack = nil end end) --// CLOSE / OPEN Close.MouseButton1Click:Connect(function() Main.Visible = false OpenButton.Visible = true end) Close.TouchTap:Connect(function() Main.Visible = false OpenButton.Visible = true end) OpenButton.MouseButton1Click:Connect(function() Main.Visible = true OpenButton.Visible = false end) OpenButton.TouchTap:Connect(function() Main.Visible = true OpenButton.Visible = false end) --// DRAG SYSTEM local dragging = false local dragStart local startPos Top.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = Main.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UserInputService.InputChanged:Connect(function(input) if dragging and ( input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch ) then local delta = input.Position - dragStart Main.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) --// THEME BUTTON local ThemeButton = Instance.new("TextButton") ThemeButton.Size = UDim2.new(0, 42, 0, 42) ThemeButton.Position = UDim2.new(1, -100, 0, 8) ThemeButton.BackgroundColor3 = Accent ThemeButton.Text = "🎨" ThemeButton.TextSize = 20 ThemeButton.Font = Enum.Font.GothamBold ThemeButton.TextColor3 = Color3.new(1,1,1) ThemeButton.Parent = Top local ThemeCorner = Instance.new("UICorner") ThemeCorner.CornerRadius = UDim.new(0,10) ThemeCorner.Parent = ThemeButton --// THEME MENU local ThemeMenu = Instance.new("Frame") ThemeMenu.Size = UDim2.new(0, 210, 0, 245) ThemeMenu.Position = UDim2.new(1, 8, 0, 60) ThemeMenu.BackgroundColor3 = Color3.fromRGB(28,28,35) ThemeMenu.Visible = false ThemeMenu.ZIndex = 20 ThemeMenu.Parent = Main local ThemeMenuCorner = Instance.new("UICorner") ThemeMenuCorner.CornerRadius = UDim.new(0,12) ThemeMenuCorner.Parent = ThemeMenu local ThemeTitle = Instance.new("TextLabel") ThemeTitle.Size = UDim2.new(1,0,0,40) ThemeTitle.BackgroundTransparency = 1 ThemeTitle.Text = "🎨 Tema" ThemeTitle.TextColor3 = Color3.new(1,1,1) ThemeTitle.TextSize = 16 ThemeTitle.Font = Enum.Font.GothamBold ThemeTitle.ZIndex = 21 ThemeTitle.Parent = ThemeMenu local Themes = { {"🔵", Color3.fromRGB(0,170,255)}, {"🟣", Color3.fromRGB(150,70,255)}, {"🟢", Color3.fromRGB(50,200,100)}, {"🔴", Color3.fromRGB(230,60,70)}, {"🟠", Color3.fromRGB(255,140,40)}, {"🩷", Color3.fromRGB(255,80,170)}, {"🩵", Color3.fromRGB(70,210,220)}, {"⚪", Color3.fromRGB(230,230,230)}, } for i, data in ipairs(Themes) do local Button = Instance.new("TextButton") local row = math.floor((i-1)/4) local col = (i-1)%4 Button.Size = UDim2.new(0,40,0,40) Button.Position = UDim2.new(0,10 + col*48,0,48 + row*48) Button.BackgroundColor3 = data[2] Button.Text = data[1] Button.TextSize = 18 Button.ZIndex = 21 Button.Parent = ThemeMenu local C = Instance.new("UICorner") C.CornerRadius = UDim.new(0,9) C.Parent = Button Button.MouseButton1Click:Connect(function() Accent = data[2] Stroke.Color = Accent ThemeButton.BackgroundColor3 = Accent OpenButton.BackgroundColor3 = Accent ThemeMenu.Visible = false end) end ThemeButton.MouseButton1Click:Connect(function() ThemeMenu.Visible = not ThemeMenu.Visible end) ThemeButton.TouchTap:Connect(function() ThemeMenu.Visible = not ThemeMenu.Visible end) --// RESPAWN SUPPORT Player.CharacterAdded:Connect(function(char) Character = char Humanoid = char:WaitForChild("Humanoid") CurrentTrack = nil end) print("Ultimate Emote Hub V1 loaded successfully.")