
KeylessUniversal

--[[
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.")No comments yet for this script.



