-- SERVICES local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local UserInputService = game:GetService("UserInputService") local StarterGui = game:GetService("StarterGui") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer -- ANIMATION VARIABLES local animationsFolder = ReplicatedStorage:WaitForChild("Characters"):WaitForChild("Survivor"):WaitForChild("Civilian"):WaitForChild("Animations") local ClientAnimationsLOL = LocalPlayer:WaitForChild("PlayerScripts"):WaitForChild("ClientAnimations") -- DELETE EXISTING ANIMATIONS local deletedCount = 0 for _, item in ipairs(animationsFolder:GetChildren()) do if item:IsA("Animation") then item:Destroy() deletedCount += 1 end end if deletedCount > 0 then StarterGui:SetCore("SendNotification", { Title = "Animations Deleted", Text = "We have deleted " .. deletedCount .. " animation(s)", Duration = 5 }) end print("Deleted " .. deletedCount .. " Animation object(s) from Civilian.Animations") ClientAnimationsLOL.Enabled = false task.wait() ClientAnimationsLOL.Enabled = true -- HUMANOID VARIABLES local character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") -- STOP ALL CURRENT ANIMATIONS for _, track in pairs(humanoid:GetPlayingAnimationTracks()) do track:Stop() end -- WALK/SPRINT BASE SPEED local BASE_WALK_SPEED = 10 local BASE_SPRINT_SPEED = 26 local blendTime = 0.2 -- ANIMATION DATA local animationSets = { Pursuer = { Zombie_1 = {Idle="108966832512824", Walk="140725165625502", Sprint="74766909298004", Special="133089990054529"}, Default = {Idle="80974060339218", Walk="80948338059832", Sprint="86509870627165", Special="87593869628310"}, Derp = {Idle="116882648985413", Walk="116619914860672", Sprint="99710523608673", Special="127615305496836"}, MISO = {Idle="110261771932085", Walk="77767207227090", Sprint="84579013254629", Special="121553057496251"}, IQuot = {Idle="129538723059546", Walk="111262064101049", Sprint="133764223100629", Special="139854803244662"}, Bling_Pursuer = {Idle="90352838780824", Walk="137664000771043", Sprint="118293298340723", Special="87593869628310"}, Zombie_2 = {Idle="112741812425793", Walk="89072100139011", Sprint="83943871443312", Special="130969844291143"}, Seesaws = {Idle="105229530451214", Walk="87100633181273", Sprint="76006312248383", Special="115832056782174"}, Classic = {Idle="98065949472006", Walk="86090280531902", Sprint="80622745059905", Special="130969844291143"}, The_Stalker = {Idle="140579314892039", Walk="131123864457422", Sprint="113129644775079", Special="134576092674459"}, Phantasm = {Idle="80974060339218", Walk="80948338059832", Sprint="86509870627165", Special="87593869628310"}, Zombie = {Idle="80974060339218", Walk="80948338059832", Sprint="86509870627165", Special="87593869628310"}, Maze_Guy = {Idle="98065949472006", Walk="86090280531902", Sprint="80622745059905", Special="130969844291143"}, Avoider = {Idle="80974060339218", Walk="80948338059832", Sprint="86509870627165", Special="87593869628310"}, Clawsguy = {Idle="138700567973746", Walk="96333561042064", Sprint="96136930930416", Special="115832056782174"}, MeQuot = {Idle="123989154628992", Walk="115493664585359", Sprint="130682734432079", Special="139854803244662"}, Default = {Idle="80974060339218", Walk="80948338059832", Sprint="86509870627165", Special="87593869628310"}, Yourself_Pursuer = {Idle="80974060339218", Walk="80948338059832", Sprint="86509870627165", Special="87593869628310"}, }, Artful = { April = {Idle="77254373412973", Walk="75235038249209", Sprint="134095033246365", Special="118342888066359"}, June = {Idle="100624453990417", Walk="95483386342031", Sprint="124249399326202", Special="118342888066359"}, Innovationful = {Idle="75829922277414", Walk="102669115888825", Sprint="131888686736060", Special="130969844291143"}, Kind_Gal = {Idle="94558501077182", Walk="136960484622651", Sprint="89260818951530", Special="111012730078117"}, Devesto = {Idle="75370292739676", Walk="70580402939971", Sprint="91726581626277", Special="118342888066359"}, Default = {Idle="94473571249263", Walk="102572617659889", Sprint="100948610539178", Special="118342888066359"}, Orchestraful = {Idle="96089657207073", Walk="86166363798441", Sprint="84734698021418", Special="102942152690202"}, Evil_Guy = {Idle="94558501077182", Walk="136960484622651", Sprint="89260818951530", Special="111012730078117"}, Noliful = {Idle="94473571249263", Walk="102572617659889", Sprint="100948610539178", Special="118342888066359"}, SoRetro = {Idle="75829922277414", Walk="102669115888825", Sprint="131888686736060", Special="130969844291143"}, }, Harken = { June = {Idle="108635771097763", Walk="96728802843969", Sprint="83245306542616", Special="78891328741658"}, July = {Idle="104774777136783", Sprint="126965782930774", Walk="127150434440645", Special="100130178279600"}, Default = {Idle="104774777136783", Walk="135226521217628", Sprint="119463021776325", Special="100130178279600"}, }, MROB = { Default = {Idle="128876353799791", Walk="84523208605356", Sprint="134893121838000", Special="87593869628310"}, }, Killdroid = { June = {Idle="101177922467439", Walk="88002166671026", Sprint="109392573918323", Special="126477594063454"}, MLGdroid = {Idle="104698935553828", Walk="134273680881474", Sprint="87612866184239", Special="104679472375564"}, Futuristic = {Idle="104698935553828", Walk="134273680881474", Sprint="87612866184239", Special="104679472375564"}, }, Badware = { April = {Idle="120210800379571", Walk="79573923702453", Sprint="120893352730955", Special="87704069305565"}, Default = {Idle="136507569552573", Walk="83428305423587", Sprint="120893352730955", Special="87704069305565"}, }, Other = { April_Civilian = {Idle="74309548749074", Walk="93557290676516", Sprint="79488319304371"}, Civilian = {Idle="100930402371608", Walk="84388941697203", Sprint="137375023685630", Special="0"}, None = {Idle="0", Walk="0", Sprint="0", Special="0"}, Ghost = {Idle="110395159339100", Walk="133938914809228", Sprint="124260679864309", Special="0"}, June_Civilian = {Idle="74309548749074", Walk="138161225743614", Sprint="79488319304371", Special="0"}, }, } local tabShortNames = { Pursuer = "PR", Badware = "BW", Harken = "H", MROB = "MR", Killdroid = "KD", Artful = "A", Other = "?" } local activeSetName, activeCategory = nil, nil local characterData = {} -- LOAD ANIMATION SET local function loadAnimationSet(character, category, setName) if not character or not category or not setName then return end local set = animationSets[category][setName] if not set then return end local humanoid = character:FindFirstChildOfClass("Humanoid") if not humanoid then return end local animator = humanoid:FindFirstChildOfClass("Animator") or Instance.new("Animator", humanoid) characterData[character] = characterData[character] or {} local data = characterData[character] if data.connection then data.connection:Disconnect() end for _, track in pairs(data.movementTracks or {}) do if track and track.IsPlaying then track:Stop(blendTime) end end -- CREATE TRACKS local function loadAnim(animId, priority) if animId and animId ~= "none" and animId ~= "0" then local anim = Instance.new("Animation") anim.AnimationId = "rbxassetid://" .. animId local track = animator:LoadAnimation(anim) if priority then track.Priority = priority end return track end end data.movementTracks = { Idle = loadAnim(set.Idle, Enum.AnimationPriority.Core), Walk = loadAnim(set.Walk, Enum.AnimationPriority.Movement), Sprint = loadAnim(set.Sprint, Enum.AnimationPriority.Movement) } data.currentMovementTrack = nil if data.movementTracks.Idle then data.movementTracks.Idle:Play(blendTime) data.currentMovementTrack = data.movementTracks.Idle end -- CONNECT TO HUMANOID.RUNNING FOR REAL SPEED data.connection = humanoid.Running:Connect(function(speed) local moving = speed > 0.1 local newTrack if moving and speed >= 22.5 then newTrack = data.movementTracks.Sprint elseif moving then newTrack = data.movementTracks.Walk else newTrack = data.movementTracks.Idle end -- SWITCH TRACKS if newTrack ~= data.currentMovementTrack then if data.currentMovementTrack and data.currentMovementTrack.IsPlaying then data.currentMovementTrack:Stop(blendTime) end if newTrack then newTrack:Play(blendTime) end data.currentMovementTrack = newTrack end -- ADJUST SPEED if data.currentMovementTrack == data.movementTracks.Walk then local mult = math.clamp(speed / 10, 0.5, 2) data.currentMovementTrack:AdjustSpeed(mult) elseif data.currentMovementTrack == data.movementTracks.Sprint then local mult = math.clamp(speed / 24, 0.8, 2.5) data.currentMovementTrack:AdjustSpeed(mult) else data.currentMovementTrack:AdjustSpeed(1) end end) end -- BLOCK CORE ANIMATIONS local function blockCoreAnimations(character) if not character then return end local animFolder = character:FindFirstChild("Animations") if not animFolder then return end local blockList = {"Idle", "Walk", "Sprint", "Jump", "Sit", "PassiveAnimation"} for _, name in ipairs(blockList) do local anim = animFolder:FindFirstChild(name) if anim then local dummy = Instance.new("Animation") dummy.Name = anim.Name dummy.AnimationId = "" dummy.Parent = animFolder anim:Destroy() end end end -- HANDLE CHARACTER ADDED LocalPlayer.CharacterAdded:Connect(function(char) char:WaitForChild("HumanoidRootPart", 5) task.wait(0.5) blockCoreAnimations(char) if activeSetName and activeCategory then loadAnimationSet(char, activeCategory, activeSetName) end end) if LocalPlayer.Character then task.delay(1, function() blockCoreAnimations(LocalPlayer.Character) if activeSetName and activeCategory then loadAnimationSet(LocalPlayer.Character, activeCategory, activeSetName) end end) end -- GUI SETUP local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local screenGui = Instance.new("ScreenGui") screenGui.Name = "AnimationMenuGui" screenGui.ResetOnSpawn = false screenGui.Parent = PlayerGui local toggleButton = Instance.new("TextButton") toggleButton.Size = UDim2.new(0, 60, 0, 40) toggleButton.Position = UDim2.new(1, -70, 0.5, -20) toggleButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50) toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255) toggleButton.Font = Enum.Font.GothamBold toggleButton.Text = "Menu" toggleButton.TextScaled = true toggleButton.Active = true toggleButton.Draggable = true toggleButton.Parent = screenGui Instance.new("UICorner", toggleButton).CornerRadius = UDim.new(0, 10) local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 320, 0, 400) mainFrame.Position = UDim2.new(1, -340, 0, 20) mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Draggable = true mainFrame.Visible = false mainFrame.Parent = screenGui Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0, 14) local titleLabel = Instance.new("TextLabel") titleLabel.Size = UDim2.new(1, 0, 0, 40) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "Animation Menu" titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255) titleLabel.Font = Enum.Font.GothamBold titleLabel.TextScaled = true titleLabel.Parent = mainFrame local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 36, 0, 36) closeBtn.Position = UDim2.new(1, 5, 0, -18) closeBtn.AnchorPoint = Vector2.new(0, 0) closeBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50) closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255) closeBtn.Text = "X" closeBtn.Font = Enum.Font.GothamBold closeBtn.TextScaled = true closeBtn.Parent = mainFrame Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0, 6) -- TAB BAR & SCROLLFRAME local tabBar = Instance.new("Frame") tabBar.Size = UDim2.new(1, -20, 0, 30) tabBar.Position = UDim2.new(0, 10, 0, 50) tabBar.BackgroundTransparency = 1 tabBar.Parent = mainFrame local tabList = Instance.new("UIListLayout") tabList.FillDirection = Enum.FillDirection.Horizontal tabList.Padding = UDim.new(0, 4) tabList.Parent = tabBar local scrollFrame = Instance.new("ScrollingFrame") scrollFrame.Size = UDim2.new(1, -20, 1, -90) scrollFrame.Position = UDim2.new(0, 10, 0, 90) scrollFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25) scrollFrame.BorderSizePixel = 0 scrollFrame.ScrollBarThickness = 6 scrollFrame.Parent = mainFrame local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(0, 6) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = scrollFrame local function clearChildren(parent) for _, c in ipairs(parent:GetChildren()) do if c:IsA("GuiObject") then c:Destroy() end end end local function showCategory(category) clearChildren(scrollFrame) for setName in pairs(animationSets[category]) do local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -10, 0, 38) btn.BackgroundColor3 = Color3.fromRGB(50, 50, 50) btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Font = Enum.Font.GothamBold btn.Text = setName btn.TextScaled = true btn.AutoButtonColor = true btn.BorderSizePixel = 0 btn.Parent = scrollFrame Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 10) btn.MouseButton1Click:Connect(function() activeSetName, activeCategory = setName, category loadAnimationSet(LocalPlayer.Character, category, setName) end) end uiListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() scrollFrame.CanvasSize = UDim2.new(0, 0, 0, uiListLayout.AbsoluteContentSize.Y + 10) end) end -- CREATE CATEGORY TABS for category in pairs(animationSets) do local tabBtn = Instance.new("TextButton") tabBtn.Size = UDim2.new(0, 40, 1, 0) tabBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 50) tabBtn.TextColor3 = Color3.fromRGB(255, 255, 255) tabBtn.Font = Enum.Font.GothamBold tabBtn.Text = tabShortNames[category] or category:sub(1,2) tabBtn.TextScaled = true tabBtn.AutoButtonColor = true tabBtn.BorderSizePixel = 0 tabBtn.Parent = tabBar Instance.new("UICorner", tabBtn).CornerRadius = UDim.new(0, 6) tabBtn.MouseButton1Click:Connect(function() showCategory(category) end) end local firstCategory = next(animationSets) if firstCategory then showCategory(firstCategory) activeCategory = firstCategory end -- GUI TOGGLES toggleButton.MouseButton1Click:Connect(function() mainFrame.Visible = not mainFrame.Visible end) closeBtn.MouseButton1Click:Connect(function() mainFrame.Visible = false end) UserInputService.InputBegan:Connect(function(input, gp) if gp then return end if input.KeyCode == Enum.KeyCode.M then mainFrame.Visible = not mainFrame.Visible end end)