local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local CHARS_PATH = ReplicatedStorage:WaitForChild("Characters") local CHOSEN_VALUE_NAME = "CharacterCHOSENVALUE" local CAMERA_REMOTES_PATH = {"Remotes", "Camera"} local DISABLED_PREFIX = "__off_" local UI_TOGGLE_KEY = Enum.KeyCode.RightControl local MOUSE_UNLOCK_KEY = Enum.KeyCode.M local HOLD_INTERVAL = 0.12 local RAPID_INTERVAL = 0.03 local AttackKeybinds = {} local AttackModes = {} local HeldKeys = {} local FireTimers = {} local SidebarEntries = {} local CameraToggles = {} local CapturingKeybindFor, CapturingKeybindBtn = nil, nil local MouseUnlocked, Minimized = false, false local SelectedCharacter = nil local ActiveTab = "Abilities" local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local function make(class, props, parent) local obj = Instance.new(class) for k, v in pairs(props) do obj[k] = v end if parent then obj.Parent = parent end return obj end local function corner(r, p) make("UICorner", {CornerRadius=UDim.new(0,r)}, p) end local function pad(t, l, r, b, p) make("UIPadding", {PaddingTop=UDim.new(0,t),PaddingLeft=UDim.new(0,l),PaddingRight=UDim.new(0,r),PaddingBottom=UDim.new(0,b or 0)}, p) end local function stroke(th, col, p) make("UIStroke", {Thickness=th,Color=col,ApplyStrokeMode=Enum.ApplyStrokeMode.Border}, p) end local C = { BG = Color3.fromRGB(8, 8, 8), PANEL = Color3.fromRGB(13, 13, 13), ROW = Color3.fromRGB(20, 20, 20), BAR = Color3.fromRGB(11, 11, 11), BTN = Color3.fromRGB(30, 30, 30), BORDER = Color3.fromRGB(40, 40, 40), BORDLO = Color3.fromRGB(28, 28, 28), WHITE = Color3.fromRGB(220, 220, 220), DIM = Color3.fromRGB(90, 90, 90), MID = Color3.fromRGB(140, 140, 140), SEARCH = Color3.fromRGB(15, 15, 15), SEL_BG = Color3.fromRGB(26, 26, 26), SEL_TXT = Color3.fromRGB(200, 200, 200), TAB_ACT = Color3.fromRGB(26, 26, 26), ON = Color3.fromRGB(200, 200, 200), OFF = Color3.fromRGB(30, 30, 30), PENDING = Color3.fromRGB(50, 44, 18), } local MODES = {"Click", "Hold", "Rapid"} local MODE_CFG = { Click = {bg=Color3.fromRGB(22,22,22), tc=Color3.fromRGB(75,75,75), br=Color3.fromRGB(35,35,35)}, Hold = {bg=Color3.fromRGB(35,35,35), tc=Color3.fromRGB(160,160,160), br=Color3.fromRGB(55,55,55)}, Rapid = {bg=Color3.fromRGB(210,210,210), tc=Color3.fromRGB(15,15,15), br=Color3.fromRGB(180,180,180)}, } local ScreenGui = make("ScreenGui", { Name="AbilityManagerUI", ResetOnSpawn=false, IgnoreGuiInset=true, DisplayOrder=15 }, PlayerGui) local ModalButton = make("TextButton", { Size=UDim2.new(0,0,0,0), BackgroundTransparency=1, Modal=false, Text="", ZIndex=1 }, ScreenGui) local CaptureOverlay = make("TextButton", { Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, Text="", ZIndex=4, Visible=false }, ScreenGui) local MainFrame = make("Frame", { Name="MainFrame", Size=UDim2.new(0,500,0,420), Position=UDim2.new(0.5,-250,0.5,-210), BackgroundColor3=C.BG, BorderSizePixel=0, ClipsDescendants=true }, ScreenGui) corner(8, MainFrame) stroke(1, C.BORDER, MainFrame) local TitleBar = make("Frame", { Size=UDim2.new(1,0,0,32), BackgroundColor3=C.BAR, BorderSizePixel=0, Active=true }, MainFrame) corner(8, TitleBar) make("Frame", { Size=UDim2.new(1,0,0.5,0), Position=UDim2.new(0,0,0.5,0), BackgroundColor3=C.BAR, BorderSizePixel=0 }, TitleBar) make("Frame", { Size=UDim2.new(1,0,0,1), Position=UDim2.new(0,0,1,-1), BackgroundColor3=C.BORDER, BorderSizePixel=0 }, TitleBar) make("TextLabel", { Size=UDim2.new(0,160,1,0), Position=UDim2.new(0,10,0,0), BackgroundTransparency=1, Text="Ability Manager", TextColor3=C.WHITE, TextXAlignment=Enum.TextXAlignment.Left, Font=Enum.Font.GothamBold, TextSize=12 }, TitleBar) local function titleBtn(xOff, w, label) local b = make("TextButton", { Size=UDim2.new(0,w,0,20), Position=UDim2.new(1,xOff,0.5,-10), BackgroundColor3=C.BTN, BorderSizePixel=0, Text=label, TextColor3=C.MID, Font=Enum.Font.GothamBold, TextSize=11, ZIndex=5 }, TitleBar) corner(4, b) stroke(1, C.BORDER, b) return b end local CloseBtn = titleBtn(-26, 20, "X") local MinimizeBtn = titleBtn(-52, 20, "-") local MouseBtn = titleBtn(-122, 64, "Unlock [M]") MouseBtn.TextSize = 10 local function SetMouseUnlock(state) MouseUnlocked = state ModalButton.Modal = state MouseBtn.Text = state and "Lock [M]" or "Unlock [M]" MouseBtn.TextColor3 = state and C.WHITE or C.MID MouseBtn.BackgroundColor3 = state and Color3.fromRGB(38,38,38) or C.BTN end MouseBtn.MouseButton1Click:Connect(function() SetMouseUnlock(not MouseUnlocked) end) local TabBar = make("Frame", { Size=UDim2.new(1,0,0,28), Position=UDim2.new(0,0,0,32), BackgroundColor3=C.PANEL, BorderSizePixel=0 }, MainFrame) make("Frame", { Size=UDim2.new(1,0,0,1), Position=UDim2.new(0,0,1,-1), BackgroundColor3=C.BORDER, BorderSizePixel=0 }, TabBar) local function makeTab(label, xPos, w) local t = make("TextButton", { Size=UDim2.new(0,w,0,22), Position=UDim2.new(0,xPos,0.5,-11), BackgroundColor3=C.BTN, BorderSizePixel=0, Text=label, TextColor3=C.DIM, Font=Enum.Font.GothamBold, TextSize=10, ZIndex=3 }, TabBar) corner(4, t) stroke(1, C.BORDLO, t) return t end local TabAbilities = makeTab("Abilities", 6, 72) local TabSettings = makeTab("Settings", 84, 62) local Body = make("Frame", { Size=UDim2.new(1,0,1,-60), Position=UDim2.new(0,0,0,60), BackgroundTransparency=1, BorderSizePixel=0 }, MainFrame) local AbilitiesPanel = make("Frame", { Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, BorderSizePixel=0 }, Body) make("Frame", { Size=UDim2.new(0,1,1,0), Position=UDim2.new(0,148,0,0), BackgroundColor3=C.BORDER, BorderSizePixel=0 }, AbilitiesPanel) local SidebarBg = make("Frame", { Size=UDim2.new(0,148,1,0), BackgroundColor3=C.PANEL, BorderSizePixel=0 }, AbilitiesPanel) local SidebarHeader = make("Frame", { Size=UDim2.new(1,0,0,72), BackgroundColor3=C.BAR, BorderSizePixel=0 }, SidebarBg) make("Frame", { Size=UDim2.new(1,0,0,1), Position=UDim2.new(0,0,1,-1), BackgroundColor3=C.BORDER, BorderSizePixel=0 }, SidebarHeader) make("TextLabel", { Size=UDim2.new(1,0,0,20), Position=UDim2.new(0,0,0,4), BackgroundTransparency=1, Text="CHARACTERS", TextColor3=C.DIM, TextXAlignment=Enum.TextXAlignment.Center, Font=Enum.Font.GothamBold, TextSize=9 }, SidebarHeader) local StatusLabel = make("TextLabel", { Size=UDim2.new(1,-8,0,18), Position=UDim2.new(0,4,0,24), BackgroundColor3=C.SEARCH, BorderSizePixel=0, Text="Active: None", TextColor3=C.DIM, Font=Enum.Font.Gotham, TextSize=10 }, SidebarHeader) corner(4, StatusLabel) stroke(1, C.BORDLO, StatusLabel) local SearchBox = make("TextBox", { Size=UDim2.new(1,-8,0,20), Position=UDim2.new(0,4,0,46), BackgroundColor3=C.SEARCH, BorderSizePixel=0, Text="", PlaceholderText="Search...", TextColor3=C.WHITE, PlaceholderColor3=C.DIM, Font=Enum.Font.Gotham, TextSize=11, ClearTextOnFocus=false, ZIndex=5 }, SidebarHeader) corner(4, SearchBox) stroke(1, C.BORDLO, SearchBox) local SidebarScroll = make("ScrollingFrame", { Size=UDim2.new(1,0,1,-72), Position=UDim2.new(0,0,0,72), BackgroundTransparency=1, BorderSizePixel=0, ScrollBarThickness=2, ScrollBarImageColor3=C.BORDER, CanvasSize=UDim2.new(0,0,0,0), AutomaticCanvasSize=Enum.AutomaticSize.Y }, SidebarBg) make("UIListLayout", {Padding=UDim.new(0,2), SortOrder=Enum.SortOrder.LayoutOrder}, SidebarScroll) pad(4,4,4,0, SidebarScroll) local MainPanel = make("Frame", { Size=UDim2.new(1,-149,1,0), Position=UDim2.new(0,149,0,0), BackgroundTransparency=1, BorderSizePixel=0 }, AbilitiesPanel) local PanelHeader = make("Frame", { Size=UDim2.new(1,0,0,32), BackgroundColor3=C.BAR, BorderSizePixel=0 }, MainPanel) make("Frame", { Size=UDim2.new(1,0,0,1), Position=UDim2.new(0,0,1,-1), BackgroundColor3=C.BORDER, BorderSizePixel=0 }, PanelHeader) local PanelHeaderLabel = make("TextLabel", { Size=UDim2.new(1,-116,1,0), Position=UDim2.new(0,10,0,0), BackgroundTransparency=1, Text="Select a character", TextColor3=C.DIM, TextXAlignment=Enum.TextXAlignment.Left, Font=Enum.Font.GothamBold, TextSize=11 }, PanelHeader) local SelectBtn = make("TextButton", { Size=UDim2.new(0,100,0,22), Position=UDim2.new(1,-106,0.5,-11), BackgroundColor3=C.BTN, BorderSizePixel=0, Text="Use Character", TextColor3=C.MID, Font=Enum.Font.GothamBold, TextSize=10, ZIndex=5, Visible=false }, PanelHeader) corner(4, SelectBtn) stroke(1, C.BORDER, SelectBtn) local ColHeader = make("Frame", { Size=UDim2.new(1,0,0,20), Position=UDim2.new(0,0,0,32), BackgroundColor3=C.PANEL, BorderSizePixel=0 }, MainPanel) make("Frame", { Size=UDim2.new(1,0,0,1), Position=UDim2.new(0,0,1,-1), BackgroundColor3=C.BORDLO, BorderSizePixel=0 }, ColHeader) for _, cfg in ipairs({ {text="ABILITY", pos=UDim2.new(0,10,0,0), size=UDim2.new(1,-198,1,0), align=Enum.TextXAlignment.Left}, {text="MODE", pos=UDim2.new(1,-190,0,0), size=UDim2.new(0,50,1,0), align=Enum.TextXAlignment.Center}, {text="FIRE", pos=UDim2.new(1,-134,0,0), size=UDim2.new(0,44,1,0), align=Enum.TextXAlignment.Center}, {text="KEYBIND", pos=UDim2.new(1,-82,0,0), size=UDim2.new(0,76,1,0), align=Enum.TextXAlignment.Center}, }) do make("TextLabel", { Size=cfg.size, Position=cfg.pos, BackgroundTransparency=1, Text=cfg.text, TextColor3=C.DIM, TextXAlignment=cfg.align, Font=Enum.Font.GothamBold, TextSize=9 }, ColHeader) end local AttackScroll = make("ScrollingFrame", { Size=UDim2.new(1,0,1,-70), Position=UDim2.new(0,0,0,52), BackgroundTransparency=1, BorderSizePixel=0, ScrollBarThickness=2, ScrollBarImageColor3=C.BORDER, CanvasSize=UDim2.new(0,0,0,0), AutomaticCanvasSize=Enum.AutomaticSize.Y }, MainPanel) make("UIListLayout", {Padding=UDim.new(0,2), SortOrder=Enum.SortOrder.LayoutOrder}, AttackScroll) pad(4,6,6,0, AttackScroll) local AbilityHint = make("Frame", { Size=UDim2.new(1,-149,0,18), Position=UDim2.new(0,149,1,-18), BackgroundColor3=C.BAR, BorderSizePixel=0, ZIndex=2 }, AbilitiesPanel) make("Frame", { Size=UDim2.new(1,0,0,1), BackgroundColor3=C.BORDLO, BorderSizePixel=0, ZIndex=2 }, AbilityHint) make("TextLabel", { Size=UDim2.new(1,-8,1,0), Position=UDim2.new(0,8,0,0), BackgroundTransparency=1, Text="Left-click keybind to set | Right-click to clear | Mode cycles: Click > Hold > Rapid", TextColor3=C.DIM, TextXAlignment=Enum.TextXAlignment.Left, Font=Enum.Font.Gotham, TextSize=9, ZIndex=3 }, AbilityHint) local SettingsPanel = make("Frame", { Size=UDim2.new(1,0,1,0), BackgroundTransparency=1, BorderSizePixel=0, Visible=false }, Body) local SettingsHeader = make("Frame", { Size=UDim2.new(1,0,0,52), BackgroundColor3=C.BAR, BorderSizePixel=0 }, SettingsPanel) make("Frame", { Size=UDim2.new(1,0,0,1), Position=UDim2.new(0,0,1,-1), BackgroundColor3=C.BORDER, BorderSizePixel=0 }, SettingsHeader) make("TextLabel", { Size=UDim2.new(1,-200,0,20), Position=UDim2.new(0,12,0,6), BackgroundTransparency=1, Text="Camera Shake Remotes", TextColor3=C.WHITE, TextXAlignment=Enum.TextXAlignment.Left, Font=Enum.Font.GothamBold, TextSize=12 }, SettingsHeader) make("TextLabel", { Size=UDim2.new(1,-200,0,14), Position=UDim2.new(0,12,0,28), BackgroundTransparency=1, Text="Mark changes then Apply — reset yourself after for it to take effect.", TextColor3=C.DIM, TextXAlignment=Enum.TextXAlignment.Left, Font=Enum.Font.Gotham, TextSize=9 }, SettingsHeader) local AllOnBtn = make("TextButton", { Size=UDim2.new(0,46,0,20), Position=UDim2.new(1,-196,0.5,-10), BackgroundColor3=C.BTN, BorderSizePixel=0, Text="All On", TextColor3=C.MID, Font=Enum.Font.GothamBold, TextSize=10, ZIndex=5 }, SettingsHeader) corner(4, AllOnBtn) stroke(1, C.BORDER, AllOnBtn) local AllOffBtn = make("TextButton", { Size=UDim2.new(0,46,0,20), Position=UDim2.new(1,-144,0.5,-10), BackgroundColor3=C.BTN, BorderSizePixel=0, Text="All Off", TextColor3=C.MID, Font=Enum.Font.GothamBold, TextSize=10, ZIndex=5 }, SettingsHeader) corner(4, AllOffBtn) stroke(1, C.BORDER, AllOffBtn) local ApplyChangesBtn = make("TextButton", { Size=UDim2.new(0,84,0,20), Position=UDim2.new(1,-88,0.5,-10), BackgroundColor3=Color3.fromRGB(38,34,16), BorderSizePixel=0, Text="Apply Changes", TextColor3=Color3.fromRGB(200,180,80), Font=Enum.Font.GothamBold, TextSize=10, ZIndex=5 }, SettingsHeader) corner(4, ApplyChangesBtn) stroke(1, Color3.fromRGB(80,70,30), ApplyChangesBtn) local SettingsColHeader = make("Frame", { Size=UDim2.new(1,0,0,20), Position=UDim2.new(0,0,0,52), BackgroundColor3=C.PANEL, BorderSizePixel=0 }, SettingsPanel) make("Frame", { Size=UDim2.new(1,0,0,1), Position=UDim2.new(0,0,1,-1), BackgroundColor3=C.BORDLO, BorderSizePixel=0 }, SettingsColHeader) make("TextLabel", { Size=UDim2.new(1,-80,1,0), Position=UDim2.new(0,12,0,0), BackgroundTransparency=1, Text="REMOTE NAME", TextColor3=C.DIM, TextXAlignment=Enum.TextXAlignment.Left, Font=Enum.Font.GothamBold, TextSize=9 }, SettingsColHeader) make("TextLabel", { Size=UDim2.new(0,70,1,0), Position=UDim2.new(1,-76,0,0), BackgroundTransparency=1, Text="STATE", TextColor3=C.DIM, TextXAlignment=Enum.TextXAlignment.Center, Font=Enum.Font.GothamBold, TextSize=9 }, SettingsColHeader) local SettingsScroll = make("ScrollingFrame", { Size=UDim2.new(1,0,1,-72), Position=UDim2.new(0,0,0,72), BackgroundTransparency=1, BorderSizePixel=0, ScrollBarThickness=2, ScrollBarImageColor3=C.BORDER, CanvasSize=UDim2.new(0,0,0,0), AutomaticCanvasSize=Enum.AutomaticSize.Y }, SettingsPanel) make("UIListLayout", {Padding=UDim.new(0,2), SortOrder=Enum.SortOrder.LayoutOrder}, SettingsScroll) pad(4,6,6,0, SettingsScroll) local function SetTab(name) ActiveTab = name AbilitiesPanel.Visible = name == "Abilities" SettingsPanel.Visible = name == "Settings" TabAbilities.BackgroundColor3 = name == "Abilities" and C.TAB_ACT or C.BTN TabAbilities.TextColor3 = name == "Abilities" and C.WHITE or C.DIM TabSettings.BackgroundColor3 = name == "Settings" and C.TAB_ACT or C.BTN TabSettings.TextColor3 = name == "Settings" and C.WHITE or C.DIM end TabAbilities.MouseButton1Click:Connect(function() SetTab("Abilities") end) TabSettings.MouseButton1Click:Connect(function() SetTab("Settings") end) SetTab("Abilities") local function GetCameraFolder() local node = ReplicatedStorage for _, part in ipairs(CAMERA_REMOTES_PATH) do node = node:FindFirstChild(part) if not node then return nil end end return node end local function IsDisabled(remote) return remote.Name:sub(1, #DISABLED_PREFIX) == DISABLED_PREFIX end local function UpdateToggleVisual(entry) local desired = entry.pending ~= nil and entry.pending or entry.enabled local isPending = entry.pending ~= nil and (entry.pending ~= entry.enabled) local s = entry.btn:FindFirstChildWhichIsA("UIStroke") if desired then entry.btn.BackgroundColor3 = isPending and C.PENDING or Color3.fromRGB(34,34,34) entry.btn.TextColor3 = isPending and Color3.fromRGB(200,180,80) or C.WHITE entry.btn.Text = isPending and "Enable →" or "Enabled" if s then s.Color = isPending and Color3.fromRGB(90,80,30) or Color3.fromRGB(60,60,60) end else entry.btn.BackgroundColor3 = isPending and Color3.fromRGB(40,18,18) or C.OFF entry.btn.TextColor3 = isPending and Color3.fromRGB(200,100,100) or C.DIM entry.btn.Text = isPending and "Disable →" or "Disabled" if s then s.Color = isPending and Color3.fromRGB(80,35,35) or C.BORDLO end end entry.nameLabel.TextColor3 = desired and C.WHITE or C.DIM end local function MarkPending(entry, wantEnabled) if wantEnabled ~= entry.enabled then entry.pending = wantEnabled else entry.pending = nil end UpdateToggleVisual(entry) end local function ApplySettings() local anyChange = false for _, entry in ipairs(CameraToggles) do if entry.pending ~= nil then anyChange = true if entry.pending then entry.remote.Name = entry.original else entry.remote.Name = DISABLED_PREFIX .. entry.original end entry.enabled = entry.pending entry.pending = nil UpdateToggleVisual(entry) end end if anyChange then local char = LocalPlayer.Character local chosen = char and char:FindFirstChild(CHOSEN_VALUE_NAME) if chosen and tostring(chosen.Value) ~= "" then task.wait(0.1) LocalPlayer:LoadCharacter() end end end local function BuildSettings() for _, c in pairs(SettingsScroll:GetChildren()) do if c:IsA("GuiObject") then c:Destroy() end end CameraToggles = {} local folder = GetCameraFolder() if not folder then make("TextLabel", { Size=UDim2.new(1,0,0,40), BackgroundTransparency=1, Text="Could not find ReplicatedStorage/" .. table.concat(CAMERA_REMOTES_PATH, "/"), TextColor3=C.DIM, Font=Enum.Font.Gotham, TextSize=11 }, SettingsScroll) return end local remotes = {} for _, obj in pairs(folder:GetChildren()) do if obj:IsA("RemoteEvent") or obj:IsA("RemoteFunction") then table.insert(remotes, obj) end end table.sort(remotes, function(a, b) local na = IsDisabled(a) and a.Name:sub(#DISABLED_PREFIX+1) or a.Name local nb = IsDisabled(b) and b.Name:sub(#DISABLED_PREFIX+1) or b.Name return na:lower() < nb:lower() end) if #remotes == 0 then make("TextLabel", { Size=UDim2.new(1,0,0,40), BackgroundTransparency=1, Text="No RemoteEvents found in that folder.", TextColor3=C.DIM, Font=Enum.Font.Gotham, TextSize=11 }, SettingsScroll) return end for _, remote in ipairs(remotes) do local originalName = IsDisabled(remote) and remote.Name:sub(#DISABLED_PREFIX+1) or remote.Name local isEnabled = not IsDisabled(remote) local Row = make("Frame", { Size=UDim2.new(1,0,0,32), BackgroundColor3=C.ROW, BorderSizePixel=0 }, SettingsScroll) corner(5, Row) stroke(1, C.BORDLO, Row) local nameLabel = make("TextLabel", { Size=UDim2.new(1,-90,1,0), Position=UDim2.new(0,10,0,0), BackgroundTransparency=1, Text=originalName, TextColor3=isEnabled and C.WHITE or C.DIM, TextXAlignment=Enum.TextXAlignment.Left, Font=Enum.Font.Gotham, TextSize=12 }, Row) local toggleBtn = make("TextButton", { Size=UDim2.new(0,72,0,22), Position=UDim2.new(1,-78,0.5,-11), BackgroundColor3=isEnabled and Color3.fromRGB(34,34,34) or C.OFF, Text=isEnabled and "Enabled" or "Disabled", TextColor3=isEnabled and C.WHITE or C.DIM, Font=Enum.Font.GothamBold, TextSize=10, BorderSizePixel=0, ZIndex=5 }, Row) corner(4, toggleBtn) stroke(1, isEnabled and Color3.fromRGB(60,60,60) or C.BORDLO, toggleBtn) local entry = { remote=remote, original=originalName, enabled=isEnabled, pending=nil, btn=toggleBtn, nameLabel=nameLabel } table.insert(CameraToggles, entry) toggleBtn.MouseButton1Click:Connect(function() if entry.pending ~= nil then MarkPending(entry, entry.enabled) else MarkPending(entry, not entry.enabled) end end) end end ApplyChangesBtn.MouseButton1Click:Connect(ApplySettings) AllOnBtn.MouseButton1Click:Connect(function() for _, entry in ipairs(CameraToggles) do MarkPending(entry, true) end end) AllOffBtn.MouseButton1Click:Connect(function() for _, entry in ipairs(CameraToggles) do MarkPending(entry, false) end end) TabSettings.MouseButton1Click:Connect(function() SetTab("Settings") BuildSettings() end) local function CancelCapture() if not CapturingKeybindFor then return end CapturingKeybindBtn.Text = AttackKeybinds[CapturingKeybindFor] or "None" CapturingKeybindBtn.TextColor3 = C.DIM CapturingKeybindBtn.BackgroundColor3 = C.SEARCH CapturingKeybindFor, CapturingKeybindBtn = nil, nil CaptureOverlay.Visible = false end CaptureOverlay.MouseButton1Click:Connect(CancelCapture) local function CanFire(remote) local char = LocalPlayer.Character local chosen = char and char:FindFirstChild(CHOSEN_VALUE_NAME) return chosen and chosen.Value == remote.Parent.Parent.Name end local function FireRemote(remote) if CanFire(remote) then pcall(function() remote:FireServer() end) end end local function SelectCharacter(name) local folder = ReplicatedStorage:FindFirstChild("SelectACharacter") if not folder then return end local remote = folder:FindFirstChild("ChangeChar") if remote and remote:IsA("RemoteEvent") then pcall(function() remote:FireServer(name) end) end end SelectBtn.MouseButton1Click:Connect(function() if SelectedCharacter then SelectCharacter(SelectedCharacter.Name) end end) local function LoadAttacks(charFolder) for _, c in pairs(AttackScroll:GetChildren()) do if c:IsA("GuiObject") then c:Destroy() end end SelectedCharacter = charFolder PanelHeaderLabel.Text = charFolder.Name PanelHeaderLabel.TextColor3 = C.WHITE SelectBtn.Visible = true local Remotes = charFolder:FindFirstChild("Remotes") if not Remotes then make("TextLabel", { Size=UDim2.new(1,0,0,30), BackgroundTransparency=1, Text="No Remotes folder found.", TextColor3=C.DIM, Font=Enum.Font.Gotham, TextSize=12 }, AttackScroll) return end for _, remote in pairs(Remotes:GetChildren()) do if not remote:IsA("RemoteEvent") then continue end if not AttackModes[remote] then AttackModes[remote] = "Click" end local Row = make("Frame", { Name=remote.Name, Size=UDim2.new(1,0,0,32), BackgroundColor3=C.ROW, BorderSizePixel=0 }, AttackScroll) corner(5, Row) stroke(1, C.BORDLO, Row) make("TextLabel", { Size=UDim2.new(1,-198,1,0), Position=UDim2.new(0,10,0,0), BackgroundTransparency=1, Text=remote.Name, TextColor3=C.WHITE, TextXAlignment=Enum.TextXAlignment.Left, Font=Enum.Font.Gotham, TextSize=12 }, Row) local cfg = MODE_CFG[AttackModes[remote]] local ModeBtn = make("TextButton", { Size=UDim2.new(0,50,0,22), Position=UDim2.new(1,-190,0.5,-11), BackgroundColor3=cfg.bg, Text=AttackModes[remote], TextColor3=cfg.tc, Font=Enum.Font.GothamBold, TextSize=10, BorderSizePixel=0, ZIndex=5 }, Row) corner(4, ModeBtn) stroke(1, cfg.br, ModeBtn) local FireBtn = make("TextButton", { Size=UDim2.new(0,42,0,22), Position=UDim2.new(1,-134,0.5,-11), BackgroundColor3=C.BTN, Text="Fire", TextColor3=C.MID, Font=Enum.Font.GothamBold, TextSize=11, BorderSizePixel=0, ZIndex=5 }, Row) corner(4, FireBtn) stroke(1, C.BORDER, FireBtn) local KeybindBtn = make("TextButton", { Size=UDim2.new(0,76,0,22), Position=UDim2.new(1,-84,0.5,-11), BackgroundColor3=C.SEARCH, Text=AttackKeybinds[remote] or "None", TextColor3=C.DIM, Font=Enum.Font.Gotham, TextSize=10, BorderSizePixel=0, ZIndex=5 }, Row) corner(4, KeybindBtn) stroke(1, C.BORDLO, KeybindBtn) ModeBtn.MouseButton1Click:Connect(function() local idx = table.find(MODES, AttackModes[remote]) or 1 AttackModes[remote] = MODES[(idx % #MODES) + 1] local ncfg = MODE_CFG[AttackModes[remote]] ModeBtn.Text = AttackModes[remote] ModeBtn.BackgroundColor3 = ncfg.bg ModeBtn.TextColor3 = ncfg.tc local s = ModeBtn:FindFirstChildWhichIsA("UIStroke") if s then s.Color = ncfg.br end end) FireBtn.MouseButton1Click:Connect(function() FireRemote(remote) end) FireBtn.MouseEnter:Connect(function() FireBtn.TextColor3 = C.WHITE end) FireBtn.MouseLeave:Connect(function() FireBtn.TextColor3 = C.MID end) KeybindBtn.MouseButton1Click:Connect(function() if CapturingKeybindFor ~= nil then CancelCapture() return end CapturingKeybindFor = remote CapturingKeybindBtn = KeybindBtn KeybindBtn.Text = "press key..." KeybindBtn.TextColor3 = C.WHITE KeybindBtn.BackgroundColor3 = Color3.fromRGB(25,25,18) CaptureOverlay.Visible = true end) KeybindBtn.MouseButton2Click:Connect(function() AttackKeybinds[remote] = nil KeybindBtn.Text = "None" KeybindBtn.TextColor3 = C.DIM KeybindBtn.BackgroundColor3 = C.SEARCH if CapturingKeybindFor == remote then CancelCapture() end end) end end local function ApplySearch(query) query = query:lower() for _, entry in ipairs(SidebarEntries) do entry.btn.Visible = query == "" or entry.folder.Name:lower():find(query,1,true) ~= nil end end local function BuildSidebar() for _, c in pairs(SidebarScroll:GetChildren()) do if c:IsA("GuiObject") then c:Destroy() end end SidebarEntries = {} local folders = {} for _, f in pairs(CHARS_PATH:GetChildren()) do if f:FindFirstChild("Remotes") then table.insert(folders, f) end end table.sort(folders, function(a,b) return a.Name:lower() < b.Name:lower() end) for _, charFolder in ipairs(folders) do local CharBtn = make("TextButton", { Size=UDim2.new(1,0,0,28), BackgroundColor3=C.PANEL, Text=charFolder.Name, TextColor3=C.DIM, Font=Enum.Font.Gotham, TextSize=11, BorderSizePixel=0, ZIndex=5 }, SidebarScroll) corner(5, CharBtn) stroke(1, C.BORDLO, CharBtn) table.insert(SidebarEntries, {folder=charFolder, btn=CharBtn}) CharBtn.MouseButton1Click:Connect(function() for _, entry in ipairs(SidebarEntries) do entry.btn.BackgroundColor3 = C.PANEL entry.btn.TextColor3 = C.DIM end CharBtn.BackgroundColor3 = C.SEL_BG CharBtn.TextColor3 = C.SEL_TXT LoadAttacks(charFolder) end) end ApplySearch(SearchBox.Text) end SearchBox:GetPropertyChangedSignal("Text"):Connect(function() ApplySearch(SearchBox.Text) end) RunService.Heartbeat:Connect(function() local char = LocalPlayer.Character local chosen = char and char:FindFirstChild(CHOSEN_VALUE_NAME) StatusLabel.Text = chosen and ("> " .. tostring(chosen.Value)) or "> None" StatusLabel.TextColor3 = chosen and C.WHITE or C.DIM local now = tick() for remote, key in pairs(AttackKeybinds) do if not HeldKeys[key] then continue end local mode = AttackModes[remote] or "Click" local interval = mode == "Rapid" and RAPID_INTERVAL or mode == "Hold" and HOLD_INTERVAL or nil if interval then local last = FireTimers[remote] or 0 if now - last >= interval then FireTimers[remote] = now FireRemote(remote) end end end end) CloseBtn.MouseButton1Click:Connect(function() CancelCapture() MainFrame.Visible = false end) MinimizeBtn.MouseButton1Click:Connect(function() Minimized = not Minimized Body.Visible = not Minimized TabBar.Visible = not Minimized MainFrame.Size = Minimized and UDim2.new(0,500,0,32) or UDim2.new(0,500,0,420) end) UserInputService.InputBegan:Connect(function(input, processed) if input.KeyCode == UI_TOGGLE_KEY then MainFrame.Visible = not MainFrame.Visible return end if input.KeyCode == MOUSE_UNLOCK_KEY and not processed then SetMouseUnlock(not MouseUnlocked) return end if CapturingKeybindFor ~= nil then if input.KeyCode == Enum.KeyCode.Escape then CancelCapture() elseif input.UserInputType == Enum.UserInputType.Keyboard then local keyName = input.KeyCode.Name AttackKeybinds[CapturingKeybindFor] = keyName CapturingKeybindBtn.Text = keyName CapturingKeybindBtn.TextColor3 = C.MID CapturingKeybindBtn.BackgroundColor3 = C.SEARCH CapturingKeybindFor, CapturingKeybindBtn = nil, nil CaptureOverlay.Visible = false end return end if not processed then local keyName = input.KeyCode.Name HeldKeys[keyName] = true for remote, key in pairs(AttackKeybinds) do if key == keyName and (AttackModes[remote] or "Click") == "Click" then FireRemote(remote) end end end end) UserInputService.InputEnded:Connect(function(input) HeldKeys[input.KeyCode.Name] = nil end) local isDragging, dragStart, startPos = false, nil, nil TitleBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then isDragging = true dragStart = input.Position startPos = MainFrame.Position end end) TitleBar.InputChanged:Connect(function(input) if isDragging and input.UserInputType == Enum.UserInputType.MouseMovement then local d = input.Position - dragStart MainFrame.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y ) end end) TitleBar.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then isDragging = false end end) BuildSidebar()