Player GUI v3
Key RequiredUniversal

Player GUI v3

Universal ScriptAmongTheYoutuberAmongTheYoutuber 1.1K views 3.4K executesUpdated Sep 26, 2026
Unrated
00
Lua Script•523 lines (10834 chars)
--====================================================
-- 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.")

Features & Information

it has player abilities, mini games, and forgot

Community Comments (3)

hitshitsSep 27, 2026

ai slop *

Replying to @hits
AmongTheYoutuberAmongTheYoutuberSep 27, 2026

Shut the * up * i don't know how to code ok?

AmongTheYoutuberAmongTheYoutuberSep 27, 2026

i love spaghetti pasta with cream

More Scripts for Universal Scripts