--==================================================== -- ULTIMATE R6 GUI - MODDED LOADER -- Keeps the original GUI and patches: -- • R6 emotes -- • Tool interactions -- • Combat animations -- • Invalid-animation filtering -- • Credits tab -- • Roblox profile copy button --==================================================== local HttpService = game:GetService("HttpService") local SOURCE = "https://rawscripts.net/raw/Universal-Script-Player-GUI-v3-230023" local Success, Source = pcall(function() return game:HttpGet(SOURCE) end) if not Success or not Source or Source == "" then warn("Failed to download the original GUI.") return end --==================================================== -- ADD CREDITS TAB --==================================================== Source = Source:gsub( 'local PlayerTab = CreateTab%("Player"%)\nlocal AnimationTab = CreateTab%("Animations"%)\nlocal GamesTab = CreateTab%("Mini Games"%)\nlocal PlayersTab = CreateTab%("Players"%)', [[local PlayerTab = CreateTab("Player") local AnimationTab = CreateTab("Animations") local GamesTab = CreateTab("Mini Games") local PlayersTab = CreateTab("Players") local CreditsTab = CreateTab("Credits")]] ) -- Four tabs -> five tabs Source = Source:gsub( 'Button%.Size = UDim2%.new%(%s*0%.25, %-4, 1, 0%)', 'Button.Size = UDim2.new(0.2, -4, 1, 0)', 1 ) --==================================================== -- ADD CREDITS PAGE --==================================================== Source = Source:gsub( 'local PlayerPage = CreatePage%(%)[\r\n]+local AnimationPage = CreatePage%(%)[\r\n]+local GamesPage = CreatePage%(%)[\r\n]+local PlayersPage = CreatePage%(%)', [[local PlayerPage = CreatePage() local AnimationPage = CreatePage() local GamesPage = CreatePage() local PlayersPage = CreatePage() local CreditsPage = CreatePage()]] ) --==================================================== -- REPLACE ANIMATION DATABASE --==================================================== local AnimationReplacement = [[ --==================================================== -- MODDED ANIMATIONS -- ONLY EMOTES / TOOLS / COMBAT / INTERACTIONS --==================================================== local Animations = { {"Wave", "128777973", false}, {"Point", "128853357", false}, {"Laugh", "129423131", false}, {"Cheer", "129423030", false}, {"Dance", "182435998", true}, {"Dance 2", "182436842", true}, {"Dance 3", "182436935", true}, {"Dance Variant 1", "182491037", true}, {"Dance Variant 2", "182491065", true}, {"Dance Variant 3", "182491248", true}, {"Dance Variant 4", "182491277", true}, {"Dance Variant 5", "182491368", true}, {"Dance Variant 6", "182491423", true}, {"Tool Idle", "182393478", true}, {"Tool Slash", "129967390", false}, {"Tool Lunge", "129967478", false}, } local function CanLoadAnimation(ID) local Character = LocalPlayer.Character if not Character then return false end local Humanoid = Character:FindFirstChildOfClass("Humanoid") if not Humanoid then return false 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 Track then pcall(function() Track:Stop() Track:Destroy() end) end Animation:Destroy() return Success and Track ~= nil end local function PlayAnimation(Name, ID, Button, Looped) local Character = LocalPlayer.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if not Humanoid then return false end StopCurrentAnimation() 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) Animation:Destroy() if not Success or not Track then return false end CurrentTrack = Track Track.Priority = Enum.AnimationPriority.Action Track.Looped = Looped == true local Played = pcall(function() Track:Play(0.15) end) if not Played then pcall(function() Track:Destroy() end) CurrentTrack = nil return false end Button.Text = "▶ " .. Name if not Track.Looped then Track.Stopped:Connect(function() if CurrentTrack == Track then CurrentTrack = nil end if Button.Parent then Button.Text = Name end end) else task.delay(0.8, function() if Button.Parent then Button.Text = Name end end) end return true end local CategoryLabels = { ["Wave"] = "EMOTES", ["Point"] = "EMOTES", ["Laugh"] = "EMOTES", ["Cheer"] = "EMOTES", ["Dance"] = "EMOTES", ["Dance 2"] = "EMOTES", ["Dance 3"] = "EMOTES", ["Dance Variant 1"] = "EMOTES", ["Dance Variant 2"] = "EMOTES", ["Dance Variant 3"] = "EMOTES", ["Dance Variant 4"] = "EMOTES", ["Dance Variant 5"] = "EMOTES", ["Dance Variant 6"] = "EMOTES", ["Tool Idle"] = "TOOLS", ["Tool Slash"] = "COMBAT / TOOLS", ["Tool Lunge"] = "COMBAT / TOOLS" } local CurrentCategory local function CreateAnimationCategory(Name) local Label = Instance.new("TextLabel") Label.Size = UDim2.new(1, -5, 0, 30) Label.BackgroundTransparency = 1 Label.Text = "── " .. Name .. " ──" Label.TextColor3 = Color3.fromRGB(100, 170, 255) Label.TextSize = 14 Label.Font = Enum.Font.GothamBold Label.ZIndex = 15 Label.Parent = AnimationScroll end for _, Data in ipairs(Animations) do task.spawn(function() local Name = Data[1] local ID = Data[2] local Looped = Data[3] -- Don't create the button if the animation -- cannot currently be loaded. if not CanLoadAnimation(ID) then return end local Category = CategoryLabels[Name] or "INTERACTIONS" if CurrentCategory ~= Category then CurrentCategory = Category CreateAnimationCategory(Category) end local Button = Instance.new("TextButton") Button.Size = UDim2.new(1, -5, 0, 42) Button.BackgroundColor3 = Color3.fromRGB(42, 43, 52) Button.BorderSizePixel = 0 Button.Text = Name Button.TextColor3 = Color3.new(1, 1, 1) Button.TextSize = 13 Button.Font = Enum.Font.GothamBold Button.ZIndex = 15 Button.Parent = AnimationScroll Instance.new( "UICorner", Button ).CornerRadius = UDim.new(0, 8) Button.MouseButton1Click:Connect(function() if not PlayAnimation( Name, ID, Button, Looped ) then Button:Destroy() end end) end) end ]] -- Replace the original animation section -- from the database through the button-generation loop. local AnimationPattern = 'local Animations = {.-\nend\n\nfor _, Data in ipairs%(Animations%) do.-\nend' local BeforeAnimations, AnimationCount = Source:gsub( AnimationPattern, AnimationReplacement, 1 ) if AnimationCount == 1 then Source = BeforeAnimations else warn("Animation section could not be patched.") end --==================================================== -- ADD CREDITS UI --==================================================== local CreditsCode = [[ --==================================================== -- CREDITS --==================================================== local CreditsText = Instance.new("TextLabel") CreditsText.Size = UDim2.new(1, -20, 0, 100) CreditsText.Position = UDim2.fromOffset(10, 25) CreditsText.BackgroundTransparency = 1 CreditsText.Text = "Credits to AmongTheYoutuber making this script" CreditsText.TextColor3 = Color3.new(1, 1, 1) CreditsText.TextSize = 17 CreditsText.TextWrapped = true CreditsText.Font = Enum.Font.GothamBold CreditsText.ZIndex = 10 CreditsText.Parent = CreditsPage local ProfileLink = "https://www.roblox.com/users/8111619827/profile" local CopyProfileButton = CreateButton( CreditsPage, "Copy Profile Link Roblox", 145 ) CopyProfileButton.MouseButton1Click:Connect(function() if setclipboard then local Success = pcall(function() setclipboard(ProfileLink) end) if Success then CopyProfileButton.Text = "✓ LINK COPIED" task.delay(1.5, function() if CopyProfileButton.Parent then CopyProfileButton.Text = "Copy Profile Link Roblox" end end) else CopyProfileButton.Text = "Copy Failed" end else CopyProfileButton.Text = "Clipboard unavailable" task.delay(1.5, function() if CopyProfileButton.Parent then CopyProfileButton.Text = "Copy Profile Link Roblox" end end) end end) ]] Source = Source:gsub( 'RefreshPlayers%(%)[\r\n]+%-%-====================================================[\r\n]+%-%- TAB SYSTEM', 'RefreshPlayers()\n' .. CreditsCode .. '\n--====================================================\n-- TAB SYSTEM', 1 ) --==================================================== -- UPDATE TAB/PAGE TABLES --==================================================== Source = Source:gsub( 'local Pages = {%s*Player = PlayerPage,%s*Animations = AnimationPage,%s*%["Mini Games"%] = GamesPage,%s*Players = PlayersPage%s*}', [[local Pages = { Player = PlayerPage, Animations = AnimationPage, ["Mini Games"] = GamesPage, Players = PlayersPage, Credits = CreditsPage }]] ) Source = Source:gsub( 'local TabsList = {%s*%{PlayerTab, "Player"%},%s*%{AnimationTab, "Animations"%},%s*%{GamesTab, "Mini Games"%},%s*%{PlayersTab, "Players"%}%s*}', [[local TabsList = { {PlayerTab, "Player"}, {AnimationTab, "Animations"}, {GamesTab, "Mini Games"}, {PlayersTab, "Players"}, {CreditsTab, "Credits"} }]] ) --==================================================== -- ADD CREDITS TAB CONNECTION --==================================================== Source = Source:gsub( 'PlayersTab%.MouseButton1Click:Connect%(%s*function%(%)[%s%S]-RefreshPlayers%(%)[%s%S]-end%)', [[PlayersTab.MouseButton1Click:Connect(function() SelectTab(PlayersPage, PlayersTab, "Players") RefreshPlayers() end) CreditsTab.MouseButton1Click:Connect(function() SelectTab(CreditsPage, CreditsTab, "Credits") end)]], 1 ) --==================================================== -- EXECUTE PATCHED ORIGINAL --==================================================== local Execute, CompileError = loadstring(Source) if not Execute then warn("Failed to compile patched GUI:") warn(CompileError) return end local RuntimeSuccess, RuntimeError = pcall(Execute) if not RuntimeSuccess then warn("Patched GUI encountered an error:") warn(RuntimeError) return end print("Ultimate R6 GUI successfully patched.") print("Animations: Emotes / Tools / Combat") print("Credits tab added.")