
Key Required

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()



Nvm, nice gui bro but it doesn't work
@Mathguy What doesn't work? Did you use the keybind system?
@IDoThatBud Some keybinds don't work :(
@Mathguy I don't know why some don't, always been trying to figure it out, especially how people are using other characters abilities as someone completely different!
My friend, the script is good, can you make an update please
I've been using the script for a few days and it's really good. If you could make an update.
I can’t play with lyle and zodiac pls can we play with them?