--[[ Animation Control Center LocalScript Place in: StarterPlayer > StarterPlayerScripts Features: • Disable non-walking animations • Walking/running animations remain enabled • Draggable GUI • Minimize / close • Control / Settings / Appearance / Hotkeys / About tabs • Multiple themes • UI scaling • Custom GUI hotkey • Notifications • Auto-disable non-walking animations on respawn • Stop current non-walking animations ]] local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") --================================================== -- SETTINGS --================================================== local Settings = { NonWalkingAnimationsDisabled = false, Theme = "Dark", UIScale = 1, Keybind = Enum.KeyCode.RightShift, Notifications = true, AutoDisableOnSpawn = false, } --================================================== -- THEMES --================================================== local Themes = { Dark = { Background = Color3.fromRGB(18, 18, 23), Secondary = Color3.fromRGB(25, 25, 32), Card = Color3.fromRGB(31, 31, 40), Accent = Color3.fromRGB(80, 140, 255), Accent2 = Color3.fromRGB(100, 170, 255), Text = Color3.fromRGB(240, 240, 245), SubText = Color3.fromRGB(160, 160, 175), Border = Color3.fromRGB(55, 55, 70), Danger = Color3.fromRGB(230, 75, 75), Success = Color3.fromRGB(70, 200, 120), }, Blue = { Background = Color3.fromRGB(12, 22, 38), Secondary = Color3.fromRGB(18, 32, 52), Card = Color3.fromRGB(25, 43, 68), Accent = Color3.fromRGB(40, 140, 255), Accent2 = Color3.fromRGB(80, 175, 255), Text = Color3.fromRGB(235, 245, 255), SubText = Color3.fromRGB(150, 180, 210), Border = Color3.fromRGB(45, 75, 110), Danger = Color3.fromRGB(235, 80, 80), Success = Color3.fromRGB(70, 210, 130), }, Purple = { Background = Color3.fromRGB(25, 15, 35), Secondary = Color3.fromRGB(37, 22, 52), Card = Color3.fromRGB(48, 29, 66), Accent = Color3.fromRGB(155, 85, 255), Accent2 = Color3.fromRGB(185, 125, 255), Text = Color3.fromRGB(245, 238, 255), SubText = Color3.fromRGB(180, 160, 200), Border = Color3.fromRGB(75, 50, 95), Danger = Color3.fromRGB(235, 80, 100), Success = Color3.fromRGB(75, 210, 135), }, Green = { Background = Color3.fromRGB(12, 28, 22), Secondary = Color3.fromRGB(18, 42, 32), Card = Color3.fromRGB(25, 55, 42), Accent = Color3.fromRGB(50, 200, 120), Accent2 = Color3.fromRGB(90, 230, 155), Text = Color3.fromRGB(235, 255, 245), SubText = Color3.fromRGB(155, 195, 175), Border = Color3.fromRGB(45, 85, 65), Danger = Color3.fromRGB(235, 80, 80), Success = Color3.fromRGB(65, 220, 130), }, } local CurrentTheme = Themes[Settings.Theme] --================================================== -- HELPERS --================================================== local function tween(object, properties, duration) local info = TweenInfo.new( duration or 0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out ) TweenService:Create(object, info, properties):Play() end local function round(object, radius) local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, radius or 8) corner.Parent = object return corner end local function addStroke(object, color, thickness) local s = Instance.new("UIStroke") s.Color = color s.Thickness = thickness or 1 s.Transparency = 0.3 s.Parent = object return s end local function create(className, properties, parent) local object = Instance.new(className) for property, value in pairs(properties or {}) do object[property] = value end object.Parent = parent return object end --================================================== -- CHARACTER HELPERS --================================================== local animationConnection local characterConnection local function getCharacter() return player.Character end local function getHumanoid() local character = getCharacter() if not character then return nil end return character:FindFirstChildOfClass("Humanoid") end local function getAnimator() local humanoid = getHumanoid() if not humanoid then return nil end return humanoid:FindFirstChildOfClass("Animator") end --================================================== -- WALK/RUN DETECTION --================================================== local function animationObjectMatchesTrack(animationObject, track) if not animationObject:IsA("Animation") then return false end if not track.Animation then return false end if animationObject.AnimationId == "" then return false end return animationObject.AnimationId == track.Animation.AnimationId end local function isDefaultMovementAnimation(track) local character = getCharacter() if not character then return false end local animate = character:FindFirstChild("Animate") if not animate then return false end -- Roblox default walking animations local walkFolder = animate:FindFirstChild("walk") if walkFolder then for _, object in ipairs(walkFolder:GetDescendants()) do if animationObjectMatchesTrack(object, track) then return true end end end -- Roblox default running animations local runFolder = animate:FindFirstChild("run") if runFolder then for _, object in ipairs(runFolder:GetDescendants()) do if animationObjectMatchesTrack(object, track) then return true end end end return false end local function isWalkingAnimation(track) local name = string.lower(track.Name or "") -- Common names used by custom animation systems. if string.find(name, "walk", 1, true) then return true end if string.find(name, "run", 1, true) then return true end -- Check Roblox's Animate script. if isDefaultMovementAnimation(track) then return true end return false end --================================================== -- ANIMATION CONTROL --================================================== local function stopNonWalkingAnimations() local animator = getAnimator() if not animator then return end for _, track in ipairs(animator:GetPlayingAnimationTracks()) do if not isWalkingAnimation(track) then pcall(function() track:Stop(0) end) end end end local function disconnectAnimationListener() if animationConnection then animationConnection:Disconnect() animationConnection = nil end end local function connectAnimationListener() disconnectAnimationListener() local animator = getAnimator() if not animator then return end animationConnection = animator.AnimationPlayed:Connect(function(track) if not Settings.NonWalkingAnimationsDisabled then return end if isWalkingAnimation(track) then return end task.defer(function() if Settings.NonWalkingAnimationsDisabled then pcall(function() track:Stop(0) end) end end) end) end local function disableNonWalkingAnimations() Settings.NonWalkingAnimationsDisabled = true stopNonWalkingAnimations() connectAnimationListener() end local function enableAllAnimations() Settings.NonWalkingAnimationsDisabled = false disconnectAnimationListener() end local function toggleNonWalkingAnimations() if Settings.NonWalkingAnimationsDisabled then enableAllAnimations() else disableNonWalkingAnimations() end end --================================================== -- GUI --================================================== local gui = create("ScreenGui", { Name = "AnimationControlCenter", ResetOnSpawn = false, ZIndexBehavior = Enum.ZIndexBehavior.Sibling, }, playerGui) local main = create("Frame", { Name = "Main", Size = UDim2.fromOffset(650, 430), Position = UDim2.new(0.5, -325, 0.5, -215), BackgroundColor3 = CurrentTheme.Background, BorderSizePixel = 0, ClipsDescendants = true, }, gui) round(main, 14) addStroke(main, CurrentTheme.Border, 1) local uiScale = create("UIScale", { Scale = Settings.UIScale, }, main) --================================================== -- TOP BAR --================================================== local topBar = create("Frame", { Name = "TopBar", Size = UDim2.new(1, 0, 0, 58), BackgroundColor3 = CurrentTheme.Secondary, BorderSizePixel = 0, }, main) local title = create("TextLabel", { Size = UDim2.new(0, 350, 0, 25), Position = UDim2.fromOffset(20, 7), BackgroundTransparency = 1, Text = "Animation Control Center", TextColor3 = CurrentTheme.Text, Font = Enum.Font.GothamBold, TextSize = 18, TextXAlignment = Enum.TextXAlignment.Left, }, topBar) local subtitle = create("TextLabel", { Size = UDim2.new(0, 350, 0, 18), Position = UDim2.fromOffset(21, 32), BackgroundTransparency = 1, Text = "Walking animations stay active", TextColor3 = CurrentTheme.SubText, Font = Enum.Font.Gotham, TextSize = 10, TextXAlignment = Enum.TextXAlignment.Left, }, topBar) local minimizeButton = create("TextButton", { Size = UDim2.fromOffset(38, 38), Position = UDim2.new(1, -92, 0, 10), BackgroundColor3 = CurrentTheme.Card, Text = "−", TextColor3 = CurrentTheme.Text, Font = Enum.Font.GothamBold, TextSize = 22, AutoButtonColor = false, }, topBar) round(minimizeButton, 8) local closeButton = create("TextButton", { Size = UDim2.fromOffset(38, 38), Position = UDim2.new(1, -48, 0, 10), BackgroundColor3 = CurrentTheme.Card, Text = "×", TextColor3 = CurrentTheme.Text, Font = Enum.Font.GothamBold, TextSize = 24, AutoButtonColor = false, }, topBar) round(closeButton, 8) --================================================== -- SIDEBAR --================================================== local sidebar = create("Frame", { Name = "Sidebar", Size = UDim2.new(0, 150, 1, -58), Position = UDim2.fromOffset(0, 58), BackgroundColor3 = CurrentTheme.Secondary, BorderSizePixel = 0, }, main) create("UIPadding", { PaddingTop = UDim.new(0, 15), PaddingLeft = UDim.new(0, 10), PaddingRight = UDim.new(0, 10), }, sidebar) create("UIListLayout", { Padding = UDim.new(0, 6), HorizontalAlignment = Enum.HorizontalAlignment.Center, SortOrder = Enum.SortOrder.LayoutOrder, }, sidebar) --================================================== -- CONTENT --================================================== local content = create("Frame", { Name = "Content", Size = UDim2.new(1, -150, 1, -58), Position = UDim2.fromOffset(150, 58), BackgroundColor3 = CurrentTheme.Background, BorderSizePixel = 0, }, main) --================================================== -- NOTIFICATIONS --================================================== local notificationHolder = create("Frame", { Name = "Notifications", Size = UDim2.fromOffset(320, 400), Position = UDim2.new(1, -330, 0, 15), BackgroundTransparency = 1, }, gui) create("UIListLayout", { VerticalAlignment = Enum.VerticalAlignment.Bottom, HorizontalAlignment = Enum.HorizontalAlignment.Right, Padding = UDim.new(0, 8), }, notificationHolder) local function notify(message, color) if not Settings.Notifications then return end local notification = create("Frame", { Size = UDim2.fromOffset(300, 55), BackgroundColor3 = CurrentTheme.Card, BorderSizePixel = 0, }, notificationHolder) round(notification, 10) addStroke(notification, color or CurrentTheme.Accent, 1) create("TextLabel", { Size = UDim2.new(1, -20, 1, 0), Position = UDim2.fromOffset(10, 0), BackgroundTransparency = 1, Text = message, TextColor3 = CurrentTheme.Text, Font = Enum.Font.GothamMedium, TextSize = 13, TextWrapped = true, TextXAlignment = Enum.TextXAlignment.Left, }, notification) notification.Position = UDim2.new(1, 30, 0, 0) tween(notification, { Position = UDim2.new(1, 0, 0, 0) }, 0.25) task.delay(2.5, function() if notification.Parent then tween(notification, { Position = UDim2.new(1, 30, 0, 0) }, 0.25) task.wait(0.3) if notification.Parent then notification:Destroy() end end end) end --================================================== -- TABS --================================================== local tabs = {} local pages = {} local function createTab(name, icon) local button = create("TextButton", { Name = name .. "Tab", Size = UDim2.new(1, 0, 0, 42), BackgroundColor3 = CurrentTheme.Secondary, BackgroundTransparency = 1, Text = icon .. " " .. name, TextColor3 = CurrentTheme.SubText, Font = Enum.Font.GothamMedium, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, AutoButtonColor = false, }, sidebar) round(button, 8) create("UIPadding", { PaddingLeft = UDim.new(0, 14), }, button) local page = create("ScrollingFrame", { Name = name .. "Page", Size = UDim2.new(1, -30, 1, -30), Position = UDim2.fromOffset(15, 15), BackgroundTransparency = 1, BorderSizePixel = 0, ScrollBarThickness = 4, ScrollBarImageColor3 = CurrentTheme.Accent, CanvasSize = UDim2.new(0, 0, 0, 0), AutomaticCanvasSize = Enum.AutomaticSize.Y, Visible = false, }, content) create("UIListLayout", { Padding = UDim.new(0, 12), SortOrder = Enum.SortOrder.LayoutOrder, }, page) tabs[name] = button pages[name] = page return button, page end --================================================== -- UI COMPONENTS --================================================== local function createSectionTitle(parent, text) return create("TextLabel", { Size = UDim2.new(1, 0, 0, 28), BackgroundTransparency = 1, Text = text, TextColor3 = CurrentTheme.Text, Font = Enum.Font.GothamBold, TextSize = 16, TextXAlignment = Enum.TextXAlignment.Left, }, parent) end local function createCard(parent, height) local card = create("Frame", { Size = UDim2.new(1, 0, 0, height or 70), BackgroundColor3 = CurrentTheme.Card, BorderSizePixel = 0, }, parent) round(card, 10) addStroke(card, CurrentTheme.Border, 1) return card end local function createToggle(parent, titleText, description, initial, callback) local card = createCard(parent, 70) create("TextLabel", { Size = UDim2.new(1, -100, 0, 24), Position = UDim2.fromOffset(15, 10), BackgroundTransparency = 1, Text = titleText, TextColor3 = CurrentTheme.Text, Font = Enum.Font.GothamMedium, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, }, card) create("TextLabel", { Size = UDim2.new(1, -100, 0, 25), Position = UDim2.fromOffset(15, 34), BackgroundTransparency = 1, Text = description, TextColor3 = CurrentTheme.SubText, Font = Enum.Font.Gotham, TextSize = 10, TextXAlignment = Enum.TextXAlignment.Left, TextWrapped = true, }, card) local toggle = create("TextButton", { Size = UDim2.fromOffset(52, 28), Position = UDim2.new(1, -67, 0.5, -14), BackgroundColor3 = initial and CurrentTheme.Success or CurrentTheme.Border, Text = "", AutoButtonColor = false, }, card) round(toggle, 14) local knob = create("Frame", { Size = UDim2.fromOffset(22, 22), Position = initial and UDim2.new(1, -25, 0.5, -11) or UDim2.new(0, 3, 0.5, -11), BackgroundColor3 = Color3.fromRGB(255, 255, 255), BorderSizePixel = 0, }, toggle) round(knob, 50) local state = initial local function setState(value) state = value tween(toggle, { BackgroundColor3 = state and CurrentTheme.Success or CurrentTheme.Border }) tween(knob, { Position = state and UDim2.new(1, -25, 0.5, -11) or UDim2.new(0, 3, 0.5, -11) }) if callback then callback(state) end end toggle.MouseButton1Click:Connect(function() setState(not state) end) return card, setState end local function createButton(parent, text, callback, color) local normalColor = color or CurrentTheme.Accent local button = create("TextButton", { Size = UDim2.new(1, 0, 0, 50), BackgroundColor3 = normalColor, Text = text, TextColor3 = Color3.fromRGB(255, 255, 255), Font = Enum.Font.GothamBold, TextSize = 13, AutoButtonColor = false, }, parent) round(button, 9) button.MouseEnter:Connect(function() tween(button, { BackgroundColor3 = CurrentTheme.Accent2 }) end) button.MouseLeave:Connect(function() tween(button, { BackgroundColor3 = normalColor }) end) button.MouseButton1Click:Connect(callback) return button end --================================================== -- CONTROL TAB --================================================== local controlTab, controlPage = createTab("Control", "●") createSectionTitle(controlPage, "Animation Control") local animationCard = createCard(controlPage, 115) local animationTitle = create("TextLabel", { Size = UDim2.new(1, -160, 0, 25), Position = UDim2.fromOffset(15, 12), BackgroundTransparency = 1, Text = "Non-Walking Animation System", TextColor3 = CurrentTheme.Text, Font = Enum.Font.GothamBold, TextSize = 15, TextXAlignment = Enum.TextXAlignment.Left, }, animationCard) local animationStatus = create("TextLabel", { Size = UDim2.new(1, -160, 0, 45), Position = UDim2.fromOffset(15, 42), BackgroundTransparency = 1, Text = "All animations are currently allowed.", TextColor3 = CurrentTheme.SubText, Font = Enum.Font.Gotham, TextSize = 11, TextWrapped = true, TextXAlignment = Enum.TextXAlignment.Left, }, animationCard) local animationToggle = create("TextButton", { Size = UDim2.fromOffset(120, 40), Position = UDim2.new(1, -135, 0.5, -20), BackgroundColor3 = CurrentTheme.Accent, Text = "BLOCK", TextColor3 = Color3.fromRGB(255, 255, 255), Font = Enum.Font.GothamBold, TextSize = 12, AutoButtonColor = false, }, animationCard) round(animationToggle, 8) local function updateAnimationButton() if Settings.NonWalkingAnimationsDisabled then animationToggle.Text = "ALLOW ALL" animationToggle.BackgroundColor3 = CurrentTheme.Success animationStatus.Text = "Non-walking animations are blocked.\nWalking and running animations remain active." animationStatus.TextColor3 = CurrentTheme.Success else animationToggle.Text = "BLOCK" animationToggle.BackgroundColor3 = CurrentTheme.Accent animationStatus.Text = "All animations are currently allowed.\nWalking, jumping, idle, emotes, etc. can play." animationStatus.TextColor3 = CurrentTheme.SubText end end animationToggle.MouseButton1Click:Connect(function() toggleNonWalkingAnimations() updateAnimationButton() if Settings.NonWalkingAnimationsDisabled then notify( "Non-walking animations blocked. Walking remains enabled.", CurrentTheme.Success ) else notify( "All animations are allowed again.", CurrentTheme.Accent ) end end) createButton(controlPage, "Stop Non-Walking Animations Now", function() stopNonWalkingAnimations() notify( "Current non-walking animations stopped.", CurrentTheme.Accent ) end) createToggle( controlPage, "Block Non-Walking Animations", "Blocks idle, jump, fall, climb, swim, emotes and other animations while allowing walking/running.", Settings.NonWalkingAnimationsDisabled, function(state) if state then disableNonWalkingAnimations() else enableAllAnimations() end updateAnimationButton() end ) createSectionTitle(controlPage, "Quick Actions") createButton(controlPage, "Allow All Animations", function() enableAllAnimations() updateAnimationButton() notify( "All animations have been enabled.", CurrentTheme.Success ) end) --================================================== -- SETTINGS TAB --================================================== local settingsTab, settingsPage = createTab("Settings", "⚙") createSectionTitle(settingsPage, "General Settings") createToggle( settingsPage, "Notifications", "Show popup notifications when actions are performed.", Settings.Notifications, function(state) Settings.Notifications = state end ) createToggle( settingsPage, "Block On Respawn", "Automatically block non-walking animations when your character respawns.", Settings.AutoDisableOnSpawn, function(state) Settings.AutoDisableOnSpawn = state end ) local scaleCard = createCard(settingsPage, 75) create("TextLabel", { Size = UDim2.new(0.5, 0, 0, 25), Position = UDim2.fromOffset(15, 10), BackgroundTransparency = 1, Text = "UI Scale", TextColor3 = CurrentTheme.Text, Font = Enum.Font.GothamMedium, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, }, scaleCard) local scaleValue = create("TextLabel", { Size = UDim2.new(0.5, 0, 0, 20), Position = UDim2.fromOffset(15, 35), BackgroundTransparency = 1, Text = "100%", TextColor3 = CurrentTheme.SubText, Font = Enum.Font.Gotham, TextSize = 10, TextXAlignment = Enum.TextXAlignment.Left, }, scaleCard) local scaleMinus = create("TextButton", { Size = UDim2.fromOffset(35, 35), Position = UDim2.new(1, -85, 0.5, -17), BackgroundColor3 = CurrentTheme.Secondary, Text = "−", TextColor3 = CurrentTheme.Text, Font = Enum.Font.GothamBold, TextSize = 18, AutoButtonColor = false, }, scaleCard) round(scaleMinus, 7) local scalePlus = create("TextButton", { Size = UDim2.fromOffset(35, 35), Position = UDim2.new(1, -45, 0.5, -17), BackgroundColor3 = CurrentTheme.Secondary, Text = "+", TextColor3 = CurrentTheme.Text, Font = Enum.Font.GothamBold, TextSize = 18, AutoButtonColor = false, }, scaleCard) round(scalePlus, 7) local function updateScale() uiScale.Scale = Settings.UIScale scaleValue.Text = math.floor(Settings.UIScale * 100) .. "%" end scaleMinus.MouseButton1Click:Connect(function() Settings.UIScale = math.max(0.75, Settings.UIScale - 0.05) updateScale() end) scalePlus.MouseButton1Click:Connect(function() Settings.UIScale = math.min(1.5, Settings.UIScale + 0.05) updateScale() end) --================================================== -- APPEARANCE TAB --================================================== local appearanceTab, appearancePage = createTab("Appearance", "◆") createSectionTitle(appearancePage, "Themes") local themeNames = { "Dark", "Blue", "Purple", "Green", } for _, themeName in ipairs(themeNames) do local theme = Themes[themeName] local button = create("TextButton", { Size = UDim2.new(1, 0, 0, 55), BackgroundColor3 = theme.Card, Text = " " .. themeName, TextColor3 = theme.Text, Font = Enum.Font.GothamBold, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, AutoButtonColor = false, }, appearancePage) round(button, 9) local indicator = create("Frame", { Size = UDim2.fromOffset(7, 35), Position = UDim2.fromOffset(10, 10), BackgroundColor3 = theme.Accent, BorderSizePixel = 0, }, button) round(indicator, 5) button.MouseButton1Click:Connect(function() Settings.Theme = themeName CurrentTheme = Themes[themeName] main.BackgroundColor3 = CurrentTheme.Background content.BackgroundColor3 = CurrentTheme.Background sidebar.BackgroundColor3 = CurrentTheme.Secondary topBar.BackgroundColor3 = CurrentTheme.Secondary title.TextColor3 = CurrentTheme.Text subtitle.TextColor3 = CurrentTheme.SubText updateAnimationButton() notify( "Theme changed to " .. themeName .. ".", CurrentTheme.Accent ) end) end --================================================== -- HOTKEY TAB --================================================== local hotkeyTab, hotkeyPage = createTab("Hotkeys", "⌨") createSectionTitle(hotkeyPage, "Keyboard Shortcuts") local keybindCard = createCard(hotkeyPage, 90) create("TextLabel", { Size = UDim2.new(1, -150, 0, 25), Position = UDim2.fromOffset(15, 12), BackgroundTransparency = 1, Text = "Toggle GUI", TextColor3 = CurrentTheme.Text, Font = Enum.Font.GothamMedium, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, }, keybindCard) create("TextLabel", { Size = UDim2.new(1, -150, 0, 25), Position = UDim2.fromOffset(15, 40), BackgroundTransparency = 1, Text = "Press your chosen key to show/hide the interface.", TextColor3 = CurrentTheme.SubText, Font = Enum.Font.Gotham, TextSize = 10, TextXAlignment = Enum.TextXAlignment.Left, }, keybindCard) local keyButton = create("TextButton", { Size = UDim2.fromOffset(110, 38), Position = UDim2.new(1, -125, 0.5, -19), BackgroundColor3 = CurrentTheme.Accent, Text = Settings.Keybind.Name, TextColor3 = Color3.fromRGB(255, 255, 255), Font = Enum.Font.GothamBold, TextSize = 12, AutoButtonColor = false, }, keybindCard) round(keyButton, 8) local waitingForKey = false keyButton.MouseButton1Click:Connect(function() waitingForKey = true keyButton.Text = "PRESS KEY..." keyButton.BackgroundColor3 = CurrentTheme.Success end) --================================================== -- ABOUT TAB --================================================== local aboutTab, aboutPage = createTab("About", "ⓘ") createSectionTitle(aboutPage, "Animation Control Center") local aboutCard = createCard(aboutPage, 190) create("TextLabel", { Size = UDim2.new(1, -30, 1, -20), Position = UDim2.fromOffset(15, 10), BackgroundTransparency = 1, Text = "Client-side animation controller\n\n" .. "• Walking animations remain active\n" .. "• Running animations remain active\n" .. "• Idle animations can be blocked\n" .. "• Jump animations can be blocked\n" .. "• Fall animations can be blocked\n" .. "• Climb animations can be blocked\n" .. "• Swim animations can be blocked\n" .. "• Emotes and other animation tracks can be blocked\n\n" .. "All changes made by this LocalScript affect your local client.", TextColor3 = CurrentTheme.SubText, Font = Enum.Font.Gotham, TextSize = 12, TextWrapped = true, TextXAlignment = Enum.TextXAlignment.Left, TextYAlignment = Enum.TextYAlignment.Top, }, aboutCard) --================================================== -- TAB SWITCHING --================================================== local function selectTab(tabName) for name, button in pairs(tabs) do if name == tabName then button.BackgroundTransparency = 0 button.BackgroundColor3 = CurrentTheme.Card button.TextColor3 = CurrentTheme.Text else button.BackgroundTransparency = 1 button.BackgroundColor3 = CurrentTheme.Secondary button.TextColor3 = CurrentTheme.SubText end end for name, page in pairs(pages) do page.Visible = name == tabName end end for name, button in pairs(tabs) do button.MouseButton1Click:Connect(function() selectTab(name) end) end selectTab("Control") --================================================== -- DRAGGING --================================================== local dragging = false local dragStart local startPosition topBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPosition = 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 not dragging then return end if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then local delta = input.Position - dragStart main.Position = UDim2.new( startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.Y.Offset + delta.Y ) end end) --================================================== -- MINIMIZE --================================================== local minimized = false local normalSize = UDim2.fromOffset(650, 430) minimizeButton.MouseButton1Click:Connect(function() minimized = not minimized if minimized then minimizeButton.Text = "+" main.Size = UDim2.fromOffset(650, 58) else minimizeButton.Text = "−" main.Size = normalSize end end) --================================================== -- CLOSE --================================================== closeButton.MouseButton1Click:Connect(function() main.Visible = false end) --================================================== -- KEYBOARD INPUT --================================================== UserInputService.InputBegan:Connect(function(input, processed) if processed then return end if waitingForKey then if input.UserInputType == Enum.UserInputType.Keyboard then Settings.Keybind = input.KeyCode keyButton.Text = input.KeyCode.Name keyButton.BackgroundColor3 = CurrentTheme.Accent waitingForKey = false notify( "GUI keybind changed to " .. input.KeyCode.Name .. ".", CurrentTheme.Success ) end return end if input.UserInputType == Enum.UserInputType.Keyboard then if input.KeyCode == Settings.Keybind then main.Visible = not main.Visible end end end) --================================================== -- CHARACTER RESPAWN --================================================== if characterConnection then characterConnection:Disconnect() end characterConnection = player.CharacterAdded:Connect(function() task.wait(0.5) -- The Animator may not exist immediately after spawning. local character = player.Character if character then local humanoid = character:WaitForChild("Humanoid", 5) if humanoid then humanoid:WaitForChild("Animator", 5) end end if Settings.NonWalkingAnimationsDisabled or Settings.AutoDisableOnSpawn then disableNonWalkingAnimations() updateAnimationButton() end end) --================================================== -- INITIALIZE --================================================== updateAnimationButton() updateScale() notify( "Animation Control Center loaded.", CurrentTheme.Success )