Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- game:GetService("StarterGui"):SetCore("SendNotification",{
- Title = "Tips!",
- Text = "Wait 1 - 15 seconds to show gui if it don't show try execute again",
- Duration = 0})
- if game:GetService("CoreGui"):FindFirstChild("Emotes") then
- game:GetService("CoreGui"):FindFirstChild("Emotes"):Destroy()
- end
- local ContextActionService = game:GetService("ContextActionService")
- local HttpService = game:GetService("HttpService")
- local GuiService = game:GetService("GuiService")
- local CoreGui = game:GetService("CoreGui")
- local Open = Instance.new("TextButton")
- UICorner = Instance.new("UICorner")
- local MarketplaceService = game:GetService("MarketplaceService")
- local Players = game:GetService("Players")
- local StarterGui = game:GetService("StarterGui")
- local UserInputService = game:GetService("UserInputService")
- local Emotes = {}
- local LoadedEmotes = {}
- local function AddEmote(name: string, id: IntValue, price: IntValue?)
- LoadedEmotes[id] = false
- task.spawn(function()
- if not (name and id) then
- return
- end
- local success, date = pcall(function()
- local info = MarketplaceService:GetProductInfo(id)
- local updated = info.Updated
- return DateTime.fromIsoDate(updated):ToUniversalTime()
- end)
- if not success then
- task.wait(10)
- AddEmote(name, id, price)
- return
- end
- local unix = os.time({
- year = date.Year,
- month = date.Month,
- day = date.Day,
- hour = date.Hour,
- min = date.Minute,
- sec = date.Second
- })
- LoadedEmotes[id] = true
- table.insert(Emotes, {
- ["name"] = name,
- ["id"] = id,
- ["icon"] = "rbxthumb://type=Asset&id=".. id .."&w=150&h=150",
- ["price"] = price or 0,
- ["lastupdated"] = unix,
- ["sort"] = {}
- })
- end)
- end
- local CurrentSort = "recentfirst"
- local FavoriteOff = "rbxassetid://10651060677"
- local FavoriteOn = "rbxassetid://10651061109"
- local FavoritedEmotes = {}
- local ScreenGui = Instance.new("ScreenGui")
- ScreenGui.Name = "Emotes"
- ScreenGui.DisplayOrder = 2
- ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
- ScreenGui.Enabled = true
- local BackFrame = Instance.new("Frame")
- BackFrame.Size = UDim2.new(0.9, 0, 0.5, 0)
- BackFrame.AnchorPoint = Vector2.new(0.5, 0.5)
- BackFrame.Position = UDim2.new(0.5, 0, 0.5, 0)
- BackFrame.SizeConstraint = Enum.SizeConstraint.RelativeYY
- BackFrame.BackgroundTransparency = 1
- BackFrame.BorderSizePixel = 0
- BackFrame.Parent = ScreenGui
- Open.Name = "Open"
- Open.Parent = ScreenGui
- Open.Draggable = true
- Open.Size = UDim2.new(0.05,0,0.114,0)
- Open.Position = UDim2.new(0.05, 0, 0.25, 0)
- Open.Text = "Close"
- Open.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
- Open.TextColor3 = Color3.fromRGB(255, 255, 255)
- Open.TextScaled = true
- Open.TextSize = 20
- Open.Visible = true
- Open.BackgroundTransparency = .5
- Open.MouseButton1Up:Connect(function()
- if Open.Text == "Open" then
- Open.Text = "Close"
- BackFrame.Visible = true
- else
- if Open.Text == "Close" then
- Open.Text = "Open"
- BackFrame.Visible = false
- end
- end
- end)
- UICorner.Name = "UICorner"
- UICorner.Parent = Open
- UICorner.CornerRadius = UDim.new(1, 0)
- local EmoteName = Instance.new("TextLabel")
- EmoteName.Name = "EmoteName"
- EmoteName.TextScaled = true
- EmoteName.AnchorPoint = Vector2.new(0.5, 0.5)
- EmoteName.Position = UDim2.new(-0.1, 0, 0.5, 0)
- EmoteName.Size = UDim2.new(0.2, 0, 0.2, 0)
- EmoteName.SizeConstraint = Enum.SizeConstraint.RelativeYY
- EmoteName.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
- EmoteName.TextColor3 = Color3.new(1, 1, 1)
- EmoteName.BorderSizePixel = 0
- EmoteName.Parent = BackFrame
- local Corner = Instance.new("UICorner")
- Corner.Parent = EmoteName
- local Loading = Instance.new("TextLabel", BackFrame)
- Loading.AnchorPoint = Vector2.new(0.5, 0.5)
- Loading.Text = "Loading..."
- Loading.TextColor3 = Color3.new(1, 1, 1)
- Loading.BackgroundColor3 = Color3.new(0, 0, 0)
- Loading.TextScaled = true
- Loading.BackgroundTransparency = 0.5
- Loading.Size = UDim2.fromScale(0.2, 0.1)
- Loading.Position = UDim2.fromScale(0.5, 0.2)
- Corner:Clone().Parent = Loading
- local Frame = Instance.new("ScrollingFrame")
- Frame.Size = UDim2.new(1, 0, 1, 0)
- Frame.CanvasSize = UDim2.new(0, 0, 0, 0)
- Frame.AutomaticCanvasSize = Enum.AutomaticSize.Y
- Frame.ScrollingDirection = Enum.ScrollingDirection.Y
- Frame.AnchorPoint = Vector2.new(0.5, 0.5)
- Frame.Position = UDim2.new(0.5, 0, 0.5, 0)
- Frame.BackgroundTransparency = 1
- Frame.ScrollBarThickness = 5
- Frame.BorderSizePixel = 0
- Frame.MouseLeave:Connect(function()
- EmoteName.Text = "Select an Emote"
- end)
- Frame.Parent = BackFrame
- local Grid = Instance.new("UIGridLayout")
- Grid.CellSize = UDim2.new(0.105, 0, 0, 0)
- Grid.CellPadding = UDim2.new(0.006, 0, 0.006, 0)
- Grid.SortOrder = Enum.SortOrder.LayoutOrder
- Grid.Parent = Frame
- local SortFrame = Instance.new("Frame")
- SortFrame.Visible = false
- SortFrame.BorderSizePixel = 0
- SortFrame.Position = UDim2.new(1, 5, -0.125, 0)
- SortFrame.Size = UDim2.new(0.2, 0, 0, 0)
- SortFrame.AutomaticSize = Enum.AutomaticSize.Y
- SortFrame.BackgroundTransparency = 1
- Corner:Clone().Parent = SortFrame
- SortFrame.Parent = BackFrame
- local SortList = Instance.new("UIListLayout")
- SortList.Padding = UDim.new(0.02, 0)
- SortList.HorizontalAlignment = Enum.HorizontalAlignment.Center
- SortList.VerticalAlignment = Enum.VerticalAlignment.Top
- SortList.SortOrder = Enum.SortOrder.LayoutOrder
- SortList.Parent = SortFrame
- local function SortEmotes()
- for i,Emote in pairs(Emotes) do
- local EmoteButton = Frame:FindFirstChild(Emote.id)
- if not EmoteButton then
- continue
- end
- local IsFavorited = table.find(FavoritedEmotes, Emote.id)
- EmoteButton.LayoutOrder = Emote.sort[CurrentSort] + ((IsFavorited and 0) or #Emotes)
- EmoteButton.number.Text = Emote.sort[CurrentSort]
- end
- end
- local function createsort(order, text, sort)
- local CreatedSort = Instance.new("TextButton")
- CreatedSort.SizeConstraint = Enum.SizeConstraint.RelativeXX
- CreatedSort.Size = UDim2.new(1, 0, 0.2, 0)
- CreatedSort.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
- CreatedSort.LayoutOrder = order
- CreatedSort.TextColor3 = Color3.new(1, 1, 1)
- CreatedSort.Text = text
- CreatedSort.TextScaled = true
- CreatedSort.BorderSizePixel = 0
- Corner:Clone().Parent = CreatedSort
- CreatedSort.Parent = SortFrame
- CreatedSort.MouseButton1Click:Connect(function()
- SortFrame.Visible = false
- Open.Text = "Open"
- CurrentSort = sort
- SortEmotes()
- end)
- return CreatedSort
- end
- createsort(1, "Recently Updated First", "recentfirst")
- createsort(2, "Recently Updated Last", "recentlast")
- createsort(3, "Alphabetically First", "alphabeticfirst")
- createsort(4, "Alphabetically Last", "alphabeticlast")
- createsort(5, "Highest Price", "highestprice")
- createsort(6, "Lowest Price", "lowestprice")
- local SortButton = Instance.new("TextButton")
- SortButton.BorderSizePixel = 0
- SortButton.AnchorPoint = Vector2.new(0.5, 0.5)
- SortButton.Position = UDim2.new(0.925, -5, -0.075, 0)
- SortButton.Size = UDim2.new(0.15, 0, 0.1, 0)
- SortButton.TextScaled = true
- SortButton.TextColor3 = Color3.new(1, 1, 1)
- SortButton.BackgroundColor3 = Color3.new(0, 0, 0)
- SortButton.BackgroundTransparency = 0.3
- SortButton.Text = "Sort"
- SortButton.MouseButton1Click:Connect(function()
- SortFrame.Visible = not SortFrame.Visible
- Open.Text = "Open"
- end)
- Corner:Clone().Parent = SortButton
- SortButton.Parent = BackFrame
- local CloseButton = Instance.new("TextButton")
- CloseButton.BorderSizePixel = 0
- CloseButton.AnchorPoint = Vector2.new(0.5, 0.5)
- CloseButton.Position = UDim2.new(0.075, 0, -0.075, 0)
- CloseButton.Size = UDim2.new(0.15, 0, 0.1, 0)
- CloseButton.TextScaled = true
- CloseButton.TextColor3 = Color3.new(1, 1, 1)
- CloseButton.BackgroundColor3 = Color3.new(0.5, 0, 0)
- CloseButton.BackgroundTransparency = 0.3
- CloseButton.Text = "Kill Gui"
- CloseButton.MouseButton1Click:Connect(function()
- ScreenGui:Destroy()
- end)
- Corner:Clone().Parent = CloseButton
- CloseButton.Parent = BackFrame
- local SearchBar = Instance.new("TextBox")
- SearchBar.BorderSizePixel = 0
- SearchBar.AnchorPoint = Vector2.new(0.5, 0.5)
- SearchBar.Position = UDim2.new(0.5, 0, -0.075, 0)
- SearchBar.Size = UDim2.new(0.55, 0, 0.1, 0)
- SearchBar.TextScaled = true
- SearchBar.PlaceholderText = "Search"
- SearchBar.TextColor3 = Color3.new(1, 1, 1)
- SearchBar.BackgroundColor3 = Color3.new(0, 0, 0)
- SearchBar.BackgroundTransparency = 0.3
- SearchBar:GetPropertyChangedSignal("Text"):Connect(function()
- local text = SearchBar.Text:lower()
- local buttons = Frame:GetChildren()
- if text ~= text:sub(1,50) then
- SearchBar.Text = SearchBar.Text:sub(1,50)
- text = SearchBar.Text:lower()
- end
- if text ~= "" then
- for i,button in pairs(buttons) do
- if button:IsA("GuiButton") then
- local name = button:GetAttribute("name"):lower()
- if name:match(text) then
- button.Visible = true
- else
- button.Visible = false
- end
- end
- end
- else
- for i,button in pairs(buttons) do
- if button:IsA("GuiButton") then
- button.Visible = true
- end
- end
- end
- end)
- Corner:Clone().Parent = SearchBar
- SearchBar.Parent = BackFrame
- local function openemotes(name, state, input)
- if state == Enum.UserInputState.Begin then
- BackFrame.Visible = not BackFrame.Visible
- Open.Text = "Open"
- end
- end
- ContextActionService:BindCoreActionAtPriority(
- "Emote Menu",
- openemotes,
- true,
- 2001,
- Enum.KeyCode.Comma
- )
- local inputconnect
- ScreenGui:GetPropertyChangedSignal("Enabled"):Connect(function()
- if BackFrame.Visible == false then
- EmoteName.Text = "Select an Emote"
- SearchBar.Text = ""
- SortFrame.Visible = false
- GuiService:SetEmotesMenuOpen(false)
- inputconnect = UserInputService.InputBegan:Connect(function(input, processed)
- if not processed then
- if input.UserInputType == Enum.UserInputType.MouseButton1 then
- BackFrame.Visible = false
- Open.Text = "Open"
- end
- end
- end)
- else
- inputconnect:Disconnect()
- end
- end)
- GuiService.EmotesMenuOpenChanged:Connect(function(isopen)
- if isopen then
- BackFrame.Visible = false
- Open.Text = "Open"
- end
- end)
- GuiService.MenuOpened:Connect(function()
- BackFrame.Visible = false
- Open.Text = "Open"
- end)
- if not game:IsLoaded() then
- game.Loaded:Wait()
- end
- --thanks inf yield
- local SynV3 = syn and DrawingImmediate
- if (not is_sirhurt_closure) and (not SynV3) and (syn and syn.protect_gui) then
- syn.protect_gui(ScreenGui)
- ScreenGui.Parent = CoreGui
- elseif get_hidden_gui or gethui then
- local hiddenUI = get_hidden_gui or gethui
- ScreenGui.Parent = hiddenUI()
- else
- ScreenGui.Parent = CoreGui
- end
- local function SendNotification(title, text)
- if syn and syn.toast_notification then
- syn.toast_notification({
- Type = ToastType.Error,
- Title = title,
- Content = text
- })
- else
- StarterGui:SetCore("SendNotification", {
- Title = title,
- Text = text
- })
- end
- end
- local LocalPlayer = Players.LocalPlayer
- local function PlayEmote(name: string, id: IntValue)
- BackFrame.Visible = false
- Open.Text = "Open"
- SearchBar.Text = ""
- local Humanoid = LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
- local Description = Humanoid and Humanoid:FindFirstChildOfClass("HumanoidDescription")
- if not Description then
- return
- end
- if LocalPlayer.Character.Humanoid.RigType ~= Enum.HumanoidRigType.R6 then
- local succ, err = pcall(function()
- Humanoid:PlayEmoteAndGetAnimTrackById(id)
- end)
- if not succ then
- Description:AddEmote(name, id)
- Humanoid:PlayEmoteAndGetAnimTrackById(id)
- end
- else
- SendNotification(
- "r6? lol",
- "you gotta be r15 dude"
- )
- end
- end
- local function WaitForChildOfClass(parent, class)
- local child = parent:FindFirstChildOfClass(class)
- while not child or child.ClassName ~= class do
- child = parent.ChildAdded:Wait()
- end
- return child
- end
- local Cursor = ""
- while true do
- local function Request()
- local success, Response = pcall(function()
- return game:HttpGetAsync("https://catalog.roblox.com/v1/search/items/details?Category=12&Subcategory=39&SortType=1&SortAggregation=&limit=30&IncludeNotForSale=true&cursor=".. Cursor)
- end)
- if not success then
- task.wait(10)
- return Request()
- end
- return Response
- end
- local Response = Request()
- local Body = HttpService:JSONDecode(Response)
- for i,v in pairs(Body.data) do
- AddEmote(v.name, v.id, v.price)
- end
- if Body.nextPageCursor ~= nil then
- Cursor = Body.nextPageCursor
- else
- break
- end
- end
- --unreleased emotes
- AddEmote("Arm Wave", 5915773155)
- AddEmote("Head Banging", 5915779725)
- AddEmote("Face Calisthenics", 9830731012)
- --wait for emotes to finish loading
- local function EmotesLoaded()
- for i, loaded in pairs(LoadedEmotes) do
- if not loaded then
- return false
- end
- end
- return true
- end
- while not EmotesLoaded() do
- task.wait()
- end
- Loading:Destroy()
- --sorting options setup
- table.sort(Emotes, function(a, b)
- return a.lastupdated > b.lastupdated
- end)
- for i,v in pairs(Emotes) do
- v.sort.recentfirst = i
- end
- table.sort(Emotes, function(a, b)
- return a.lastupdated < b.lastupdated
- end)
- for i,v in pairs(Emotes) do
- v.sort.recentlast = i
- end
- table.sort(Emotes, function(a, b)
- return a.name:lower() < b.name:lower()
- end)
- for i,v in pairs(Emotes) do
- v.sort.alphabeticfirst = i
- end
- table.sort(Emotes, function(a, b)
- return a.name:lower() > b.name:lower()
- end)
- for i,v in pairs(Emotes) do
- v.sort.alphabeticlast = i
- end
- table.sort(Emotes, function(a, b)
- return a.price < b.price
- end)
- for i,v in pairs(Emotes) do
- v.sort.lowestprice = i
- end
- table.sort(Emotes, function(a, b)
- return a.price > b.price
- end)
- for i,v in pairs(Emotes) do
- v.sort.highestprice = i
- end
- if isfile("FavoritedEmotes.txt") then
- if not pcall(function()
- FavoritedEmotes = HttpService:JSONDecode(readfile("FavoritedEmotes.txt"))
- end) then
- FavoritedEmotes = {}
- end
- else
- writefile("FavoritedEmotes.txt", HttpService:JSONEncode(FavoritedEmotes))
- end
- local UpdatedFavorites = {}
- for i,name in pairs(FavoritedEmotes) do
- if typeof(name) == "string" then
- for i,emote in pairs(Emotes) do
- if emote.name == name then
- table.insert(UpdatedFavorites, emote.id)
- break
- end
- end
- end
- end
- if #UpdatedFavorites ~= 0 then
- FavoritedEmotes = UpdatedFavorites
- writefile("FavoritedEmotes.txt", HttpService:JSONEncode(FavoritedEmotes))
- end
- local function CharacterAdded(Character)
- for i,v in pairs(Frame:GetChildren()) do
- if not v:IsA("UIGridLayout") then
- v:Destroy()
- end
- end
- local Humanoid = WaitForChildOfClass(Character, "Humanoid")
- local Description = Humanoid:WaitForChild("HumanoidDescription", 5) or Instance.new("HumanoidDescription", Humanoid)
- local random = Instance.new("TextButton")
- local Ratio = Instance.new("UIAspectRatioConstraint")
- Ratio.AspectType = Enum.AspectType.ScaleWithParentSize
- Ratio.Parent = random
- random.LayoutOrder = 0
- random.TextColor3 = Color3.new(1, 1, 1)
- random.BorderSizePixel = 0
- random.BackgroundTransparency = 0.5
- random.BackgroundColor3 = Color3.new(0, 0, 0)
- random.TextScaled = true
- random.Text = "Random"
- random:SetAttribute("name", "")
- Corner:Clone().Parent = random
- random.MouseButton1Click:Connect(function()
- local randomemote = Emotes[math.random(1, #Emotes)]
- PlayEmote(randomemote.name, randomemote.id)
- end)
- random.MouseEnter:Connect(function()
- EmoteName.Text = "Random"
- end)
- random.Parent = Frame
- for i,Emote in pairs(Emotes) do
- Description:AddEmote(Emote.name, Emote.id)
- local EmoteButton = Instance.new("ImageButton")
- local IsFavorited = table.find(FavoritedEmotes, Emote.id)
- EmoteButton.LayoutOrder = Emote.sort[CurrentSort] + ((IsFavorited and 0) or #Emotes)
- EmoteButton.Name = Emote.id
- EmoteButton:SetAttribute("name", Emote.name)
- Corner:Clone().Parent = EmoteButton
- EmoteButton.Image = Emote.icon
- EmoteButton.BackgroundTransparency = 0.5
- EmoteButton.BackgroundColor3 = Color3.new(0, 0, 0)
- EmoteButton.BorderSizePixel = 0
- Ratio:Clone().Parent = EmoteButton
- local EmoteNumber = Instance.new("TextLabel")
- EmoteNumber.Name = "number"
- EmoteNumber.TextScaled = true
- EmoteNumber.BackgroundTransparency = 1
- EmoteNumber.TextColor3 = Color3.new(1, 1, 1)
- EmoteNumber.BorderSizePixel = 0
- EmoteNumber.AnchorPoint = Vector2.new(0.5, 0.5)
- EmoteNumber.Size = UDim2.new(0.2, 0, 0.2, 0)
- EmoteNumber.Position = UDim2.new(0.1, 0, 0.9, 0)
- EmoteNumber.Text = Emote.sort[CurrentSort]
- EmoteNumber.TextXAlignment = Enum.TextXAlignment.Center
- EmoteNumber.TextYAlignment = Enum.TextYAlignment.Center
- local UIStroke = Instance.new("UIStroke")
- UIStroke.Transparency = 0.5
- UIStroke.Parent = EmoteNumber
- EmoteNumber.Parent = EmoteButton
- EmoteButton.Parent = Frame
- EmoteButton.MouseButton1Click:Connect(function()
- PlayEmote(Emote.name, Emote.id)
- end)
- EmoteButton.MouseEnter:Connect(function()
- EmoteName.Text = Emote.name
- end)
- local Favorite = Instance.new("ImageButton")
- Favorite.Name = "favorite"
- if table.find(FavoritedEmotes, Emote.id) then
- Favorite.Image = FavoriteOn
- else
- Favorite.Image = FavoriteOff
- end
- Favorite.AnchorPoint = Vector2.new(0.5, 0.5)
- Favorite.Size = UDim2.new(0.2, 0, 0.2, 0)
- Favorite.Position = UDim2.new(0.9, 0, 0.9, 0)
- Favorite.BorderSizePixel = 0
- Favorite.BackgroundTransparency = 1
- Favorite.Parent = EmoteButton
- Favorite.MouseButton1Click:Connect(function()
- local index = table.find(FavoritedEmotes, Emote.id)
- if index then
- table.remove(FavoritedEmotes, index)
- Favorite.Image = FavoriteOff
- EmoteButton.LayoutOrder = Emote.sort[CurrentSort] + #Emotes
- else
- table.insert(FavoritedEmotes, Emote.id)
- Favorite.Image = FavoriteOn
- EmoteButton.LayoutOrder = Emote.sort[CurrentSort]
- end
- writefile("FavoritedEmotes.txt", HttpService:JSONEncode(FavoritedEmotes))
- end)
- end
- for i=1,9 do
- local EmoteButton = Instance.new("Frame")
- EmoteButton.LayoutOrder = 2147483647
- EmoteButton.Name = "filler"
- EmoteButton.BackgroundTransparency = 1
- EmoteButton.BorderSizePixel = 0
- Ratio:Clone().Parent = EmoteButton
- EmoteButton.Visible = true
- EmoteButton.Parent = Frame
- EmoteButton.MouseEnter:Connect(function()
- EmoteName.Text = "Select an Emote"
- end)
- end
- end
- if LocalPlayer.Character then
- CharacterAdded(LocalPlayer.Character)
- end
- LocalPlayer.CharacterAdded:Connect(CharacterAdded)
- wait(1)
- game.CoreGui.Emotes.Enabled = true
- game.Players.LocalPlayer.PlayerGui.ContextActionGui:Destroy()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement