local Library = loadstring(game:HttpGet('https://raw.githubusercontent.com/violin-suzutsuki/LinoriaLib/refs/heads/main/Library.lua'))() local SaveManager = loadstring(game:HttpGet('https://raw.githubusercontent.com/violin-suzutsuki/LinoriaLib/refs/heads/main/addons/SaveManager.lua'))() local ThemeManager = loadstring(game:HttpGet('https://raw.githubusercontent.com/violin-suzutsuki/LinoriaLib/refs/heads/main/addons/ThemeManager.lua'))() local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local ContextActionService = game:GetService("ContextActionService") local TweenService = game:GetService("TweenService") local TextService = game:GetService("TextService") local Lighting = game:GetService("Lighting") local Teams = game:GetService("Teams") local HttpService = game:GetService("HttpService") local GuiService = game:GetService("GuiService") local TextChatService = game:GetService("TextChatService") local LocalPlayer = Players.LocalPlayer local Camera = workspace.CurrentCamera local cloneref = cloneref or function(inst) return inst end local gethui = gethui or function() return (syn and syn.protect_gui and game:GetService("CoreGui")) or game:GetService("CoreGui") end local getsynasset = getcustomasset or getsynasset or function() return "" end local protect_gui = (syn and syn.protect_gui) or function() end if not getgenv then getgenv = function() return _G end end if getgenv().UE_LOADED then return end if not getgenv().Toggles then getgenv().Toggles = {} end if not getgenv().Options then getgenv().Options = {} end local Toggles = getgenv().Toggles local Options = getgenv().Options local State = { lua = { listen_for_command = {}, }, events = { gradient_option_changed = Instance.new("BindableEvent"), esp_color_changed = Instance.new("BindableEvent"), esp_fill_changed = Instance.new("BindableEvent"), esp_effects_changed = Instance.new("BindableEvent"), esp_effects_color_changed = Instance.new("BindableEvent"), }, characters = {}, customization = { self = { _data = {}, new = function(self, tag) return { create = function(self2, char, val, kind) end, destroy = function(self2, kind) end, update = function(self2, kind) end, } end, change = function(self, char, fn) end, restore = function(self, char) end, get = function(self, char) return nil end, }, }, effects = { self_effects = { new = function(tag) return { create = function(self, char, val, kind) end, destroy = function(self, kind) end, update = function(self, kind) end, } end, }, }, gradients = { healthbar = {}, fill = {}, box = {}, name = {}, weapon = {}, distance = {}, skeleton = {}, }, running = {}, } local BloomEffect = Instance.new("BloomEffect") BloomEffect.Parent = Lighting BloomEffect.Enabled = false local BloomDefaults = { Enabled = BloomEffect.Enabled, Size = BloomEffect.Size, Intensity = BloomEffect.Intensity, Threshold = BloomEffect.Threshold, } local ColorCorrectionEffect = Instance.new("ColorCorrectionEffect") ColorCorrectionEffect.Parent = Lighting ColorCorrectionEffect.Enabled = false local AtmosphereEffect = Instance.new("Atmosphere") local SunRaysEffect = Instance.new("SunRaysEffect") SunRaysEffect.Parent = Lighting SunRaysEffect.Enabled = false local SunRaysDefaults = { Enabled = SunRaysEffect.Enabled, Spread = SunRaysEffect.Spread, Intensity = SunRaysEffect.Intensity, } local function make_proxy(initial_value) local storage = { [1] = initial_value } return { [2] = 1, [3] = storage } end local proxy_outline_color = make_proxy("OutlineColor") local proxy_visibility = make_proxy(false) local proxy_target = make_proxy(nil) local proxy_world_to_viewport = make_proxy(function(pos) return Camera:WorldToViewportPoint(pos) end) local proxy_font_info = make_proxy({ font = Font.fromEnum(Enum.Font.Code), size = 13, }) local proxy_healthbar_color = make_proxy(ColorSequence.new(Color3.new(0, 1, 0))) local proxy_frame_type = make_proxy(nil) -- RenderStepped reference local proxy_esp_enabled = make_proxy(false) local function world_to_viewport_wrapped(position) local screenPos, onScreen = Camera:WorldToViewportPoint(position) return Vector2.new(screenPos.X, screenPos.Y), onScreen end proxy_world_to_viewport[3][proxy_world_to_viewport[2]] = world_to_viewport_wrapped local x = function(R) local T = R[5] local q = R[2] local g = R[4] local l = R[9] local m = R[10] local d = R[0] local Z = R[7] local F = R[8] local A = R[1] local _ = R[3] local n = R[6] return function() local R = _.Modes or { "Always", "Toggle", "Hold" } local v = A:AddContextMenu(T) local J = {} for s, s in R do local R R = v:AddOption(s, function() d.Mode = s R.TextColor3 = A.AccentColor for G, a in J do if (a ~= R) then a.TextColor3 = G == d.Mode and A.AccentColor or A.FontColor end end A:AttemptSave() end) R:GetPropertyChangedSignal("TextColor3"):Connect(function() if (s == d.Mode) then R.TextColor3 = A.AccentColor else R.TextColor3 = A.FontColor end end) J[s] = R end if A.FlagCopying then v:AddOption("Copy Flag", function() pcall(setclipboard, d.Idx) task.wait() A:Notify("Copied flag to clipboard!", 2) v:Hide() end) end for R, v in J do v.TextColor3 = R == d.Mode and A.AccentColor or A.FontColor end local R = function(v) local s = d.Mode s = s ~= "Always" and d.Override and "Override" or s g.Text = string.format("[%s] %s (%s)", d.Value, _.Text, s) g.Visible = true g.TextColor3 = v and A.AccentColor or A.FontColor A.RegistryMap[g].Properties.TextColor3 = v and "AccentColor" or "FontColor" end function d:Update() if not d.NoUI then local _ = A.KeypickerListMode local v = d:GetState() if (_ == "Active" and d.Parent.Type == "Toggle" and (not v or not d.Parent.Value)) then g.Visible = false elseif (_ == "Toggled" and d.Parent.Type == "Toggle" and not d.Parent.Value) then g.Visible = false else R(v) end else g.Visible = false end local R = 0 local _ = 0 for v, v in next, A.KeybindContainer:GetChildren() do if v:IsA("TextLabel") and v.Visible then R = R + 18 if (v.TextBounds.X > _) then _ = v.TextBounds.X end end end A.KeybindFrame.Size = UDim2.new(0, math.max(_ + 10, 210), 0, R + 23) A.KeybindFrame.Visible = A.KeypickerListVisible and (R ~= 0) end function d:OverrideState(R) if (self.Override == R) then return end self.Override = R d.Toggled = false d:Update() end local R, _ = n.IsMouseButtonPressed, n.IsKeyDown local v, s = Enum.UserInputType.MouseButton1, Enum.UserInputType.MouseButton2 local G = Enum.KeyCode function d:GetState() local a = d.Mode if a == "Always" then return true end local H = d.Value if (H == "...") then return true end local Y = nil if (a == "Hold") then if (H == "MB1" or H == "MB2") then Y = H == "MB1" and R(n, v) or H == "MB2" and R(n, s) else Y = _(n, G[H]) end else Y = d.Toggled end if (Y and self.Override) then d:OverrideState(false) end return Y or self.Override end function d:SetValue(R) local _, v = R[1], R[2] q.Text = _ d.Value, d.Mode = _, v for R, _ in J do _.TextColor3 = R == d.Mode and A.AccentColor or A.FontColor end d:Update() end function d:OnClick(R) d.Clicked = R end function d:OnChanged(R) d.Changed = R R(d.Value) end if m.Addons then table.insert(m.Addons, d) end function d:DoClick() if d.Override then d.Override = false d.Toggled = false end if m.Type == "Toggle" and d.SyncToggleState then m:SetValue(not m.Value) end A:SafeCallback(d.Callback, d.Toggled) A:SafeCallback(d.Clicked, d.Toggled) end function d:SetupConnection(R) table.insert(self.Connections, R) A:GiveSignal(R) end function d:Remove() l[F] = nil for R, R in d.Connections do R:Disconnect() end table.clear(d) T:Destroy() g:Destroy() end function d:SetModePickerVisibility(R) Z.Visible = R end function d:GetModePickerVisibility() return Z.Visible end local R = false local g = { [Enum.KeyCode.Escape] = true, [Enum.KeyCode.Backspace] = true } T.InputBegan:Connect(function(T) if not R and T.UserInputType == Enum.UserInputType.MouseButton1 and not A:MouseIsOverOpenedFrame() then R = true q.Text = "" local T local m = "" task.spawn(function() while not T do if m == "..." then m = "" end m = m .. "." q.Text = m wait(0.4) end end) wait(0.2) local m m = n.InputBegan:Connect(function(Z) local _ if Z.UserInputType == Enum.UserInputType.Keyboard then _ = g[Z.KeyCode] and "..." or Z.KeyCode.Name elseif Z.UserInputType == Enum.UserInputType.MouseButton1 then _ = "MB1" elseif Z.UserInputType == Enum.UserInputType.MouseButton2 then _ = "MB2" end T = true R = false q.Text = _ d.Value = _ A:SafeCallback(d.ChangedCallback, Z.KeyCode or Z.UserInputType) A:SafeCallback(d.Changed, Z.KeyCode or Z.UserInputType) A:AttemptSave() m:Disconnect() end) end end) d:SetupConnection(n.InputBegan:Connect(function(T, q) if (not R and not q) then if d.Mode == "Toggle" then local q = d.Value if q == "MB1" or q == "MB2" then if q == "MB1" and T.UserInputType == Enum.UserInputType.MouseButton1 or q == "MB2" and T.UserInputType == Enum.UserInputType.MouseButton2 then d.Toggled = not d.Toggled d:DoClick() end elseif T.UserInputType == Enum.UserInputType.Keyboard then if T.KeyCode.Name == q then d.Toggled = not d.Toggled d:DoClick() end end end d:Update() end end)) d:SetupConnection(n.InputEnded:Connect(function(T) if not R then d:Update() end end)) d:Update() l[F] = d end end local t = function(R) local T = R[4] local q = R[0] local g = R[2] local l = R[5] local m = R[1] local d = R[3] return function() function q:Resize() local R = 0 for Z, Z in next, q.Container:GetChildren() do if (not Z:IsA("UIListLayout")) and Z.Visible then R = R + Z.Size.Y.Offset end end m.Size = UDim2.new(1, 0, 0, 20 + R + 2 + 2) end local R = g.Groupboxes function q:Remove() table.clear(self) m:Destroy() R[d.Name] = nil end q.Container = T setmetatable(q, l) q:AddBlank(3) q:Resize() R[d.Name] = q end end local y = function(R) local T = R[4] local q = R[1] local g = R[3] local l = R[2] local m = R[0] return function(R, d) local Z = l local l, F for A, _ in d do if (T[A] or q[3][q[2]][A]) then continue elseif (m(_) ~= "Instance" or _.ClassName ~= "MeshPart") then continue end local T = g[3][g[2]](_.Position) local q = (T - R).Magnitude if (q < Z) then Z, l = q, _ F = T end end return l, F end end local q = function(R) local T = R[1] local q = R[0] return function() local R = Toggles.bloom_enabled.Value if R then q.Enabled = true q.Size = Options.bloom_size.Value q.Intensity = Options.bloom_intensity.Value q.Threshold = Options.bloom_threshold.Value else for R, g in T do q[R] = g end end end end local z = function(R) local T = R[3] local q = R[0] local g = R[2] local l = R[4] local m = R[1] return function() local R = ColorSequence.new local d = ColorSequenceKeypoint.new local Z = Color3.fromHSV local F = 3 local A, _ = {}, {} local n = 0 local v, J = 0, 0.25 local s, G, a = Options.esp_healthbar_type, Toggles.esp_healthbar_moving, Options.esp_healthbar_speed local H, Y, N = s.Value, G.Value, a.Value local U = T.gradients.healthbar local T = function(i, L, c) local y = {} if (c == "rainbow") then for O = 0, 19 do local t = O / 19 local O = t if L then O = O + n if (O > 1) then O = O - 1 end end y[#y + 1] = d(t, Z(O, 0.5, 1)) end elseif (c == "gradient") then local Z = F - 1 local c = v / J for O = 0, Z do local t = #y + 1 local B = _[t] local f = i[B] if L then local L = _[t - 1] or _[F] f = f:Lerp(i[L], c) end y[t] = d(O / Z, f) end else y = i[1] end return y end local d = function() m[3][m[2]] = R(T(A, Y, H)) for Z, Z in U do Z.Color = m[3][m[2]] end end g.events.gradient_option_changed.Event:Connect(function(Z) table.clear(_) F = Z * 3 for i, L in { [A] = { Options.esp_healthbar_color_start, Options.esp_healthbar_color_middle, Options.esp_healthbar_color_end, }, } do table.clear(i) for c, c in L do for L = 1, Z do table.insert(i, c.Value) end end end for Z = 1, F do table.insert(_, Z) end d() end) s:OnChanged(function(d) H = d g.events.gradient_option_changed:Fire(Options.esp_healthbar_slices.Value) end) G:OnChanged(function(d) Y = d g.events.gradient_option_changed:Fire(Options.esp_healthbar_slices.Value) end) a:OnChanged(function(d) N = d g.events.gradient_option_changed:Fire(Options.esp_healthbar_slices.Value) end) g.events.gradient_option_changed:Fire(Options.esp_healthbar_slices.Value) l.RenderStepped:Connect(function(g) if (not Y or not q[3][q[2]]) then return end g = g * F / 3 * N n = n + g v = v + g if (n > 1) then n = 0 end if (v > J) then v = 0 local g = table.clone(_) if Y then _[1] = g[F] for l = 2, F do _[l] = g[l - 1] end else for g = 1, F do _[g] = g end end end if q[3][q[2]] then local q = R(T(A, N, H)) m[3][m[2]] = q for R, R in U do R.Color = q end end end) end end local J = function(R) local T = R[0] local q = R[1] return function() if T[3][T[2]] then local R = q.Humanoid return R and R.Health > 0 end end end local V = function(R) local T = R[0] return function() T.Enabled = Toggles.color_correction_enabled.Value if not T.Enabled then return end T.TintColor = Options.color_correction_tint.Value T.Saturation = Options.color_correction_saturation.Value T.Contrast = Options.color_correction_contrast.Value T.Brightness = Options.color_correction_brightness.Value end end local B = function(R) local T = R[0] local q = R[1] return function() do local R = T.lua.listen_for_command local T = function(g, l) local m = R[l] or R[l:split(" ")[1]] if m then for R, R in m do local m = l:split(" ") task.spawn(R, g, unpack(m, 2, #m)) end end end game:GetService("TextChatService").MessageReceived:Connect(function(R) local g = R.TextSource if not g then return end local l = q:GetPlayerByUserId(g.UserId) if not l then return end T(l, R.Text) end) end end end local P = function(R) local T = R[13] local q = R[5] local g = R[7] local l = R[3] local m = R[4] local d = R[2] local Z = R[15] local F = R[14] local A = R[9] local _ = R[0] local n = R[10] local v = R[1] local J = R[12] local s = R[6] local G = R[11] local a = R[8] return function(R, H) if not s[3][s[2]] then return end local s = g.Value local g, Y = F.Value, G.Value local F = Z.Value local Z = J(a(H * d.Value) * l.Value) local l if (s > 0) then l = _((H * 360 * s) % 360) else l = _(F) end v[3][v[2]] = v[3][v[2]]:Lerp(R, A.Value) for R, d in m do local m, F = d[1], d[2] local d = l + q * (R - 1) local R = n(a(d), T(d)) local T = Y + Z local q = g m.To = v[3][v[2]] + (R * T) m.From = v[3][v[2]] + (R * T) + (R * q) if F then T, q = T - 1, q + 2 F.To = v[3][v[2]] + (R * T) F.From = v[3][v[2]] + (R * T) + (R * q) end end end end local b = function(R) local T = R[7] local q = R[1] local g = R[10] local l = R[13] local m = R[4] local d = R[8] local Z = R[5] local F = R[2] local A = R[15] local _ = R[9] local n = R[0] local v = R[6] local J = R[12] local s = R[14] local G = R[3] local a = R[11] return function() if not l[3][l[2]][T] then d.Enabled = false return end d.Enabled = true d.Size = a[3][a[2]] if _[3][_[2]] then F.Visible = true F.Text = v((s.CFrame.Position - A:GetPivot().Position).Magnitude) .. "s" F.TextColor3 = g[3][g[2]] F.FontFace, F.TextSize = n[3][n[2]].font, n[3][n[2]].size else F.Visible = false end if J[3][J[2]] then q.Visible = true q.TextColor3 = m[3][m[2]] q.FontFace, q.TextSize = n[3][n[2]].font, n[3][n[2]].size else q.Visible = false end if G[3][G[2]] then Z.Visible = true else Z.Visible = false end end end local M = function(R) local T = R[0] return function() T.Parent = Toggles.atmosphere_enabled.Value and game:GetService("Lighting") or nil if not T.Parent then return end T.Color = Options.atmosphere_color.Value T.Decay = Options.atmosphere_decay.Value T.Glare = Options.atmosphere_glare.Value T.Haze = Options.atmosphere_haze.Value T.Density = Options.atmosphere_density.Value T.Offset = Options.atmosphere_offset.Value end end local K = function(R) local T = R[1] local q = R[8] local g = R[4] local l = R[5] local m = R[10] local d = R[3] local Z = R[7] local F = R[2] local A = R[0] local _ = R[6] local n = R[9] return function() function F:SetValue(R) if Z.MaxLength and #R > Z.MaxLength then R = R:sub(1, Z.MaxLength) end if F.Numeric then if (not tonumber(R)) and R:len() > 0 then R = F.Value end end F.Value = R A.Text = R l:SafeCallback(F.Callback, F.Value) l:SafeCallback(F.Changed, F.Value) end function F:Remove() for R, R in g do R:Destroy() end d[T] = nil n:Destroy() table.clear(F) _:Resize() end if F.Finished then A.FocusLost:Connect(function(R) if not R then return end F:SetValue(A.Text) l:AttemptSave() end) else A:GetPropertyChangedSignal("Text"):Connect(function() F:SetValue(A.Text) l:AttemptSave() end) end local function R() local Z = 2 local v = q.AbsoluteSize.X if not A:IsFocused() or A.TextBounds.X <= v - 2 * Z then A.Position = UDim2.new(0, Z, 0, 0) else local q = A.CursorPosition if q ~= -1 then local J = string.sub(A.Text, 1, q - 1) local q = m:GetTextSize(J, A.TextSize, A.Font, Vector2.new(math.huge, math.huge)).X local m = A.Position.X.Offset + q if m < Z then A.Position = UDim2.fromOffset(Z - q, 0) elseif m > v - Z - 1 then A.Position = UDim2.fromOffset(v - q - Z - 1, 0) end end end end task.spawn(R) A:GetPropertyChangedSignal("Text"):Connect(R) A:GetPropertyChangedSignal("CursorPosition"):Connect(R) A.FocusLost:Connect(R) A.Focused:Connect(R) if l.FlagCopying then local R = l:AddContextMenu(n) R:AddOption("Copy Flag", function() pcall(setclipboard, F.Idx) task.wait() l:Notify("Copied flag to clipboard!", 2) R:Hide() end) end l:AddToRegistry(A, { TextColor3 = "FontColor" }) function F:OnChanged(R) F.Changed = R R(F.Value) end table.insert(g, _:AddBlank(5)) _:Resize() d[T] = F end end local U = function(R) local T = R[1] local q = R[2] local g = R[0] local l = R[3] return function() function T:SetSize(R) g.Size = UDim2.new(1, -4, 0, R) end function T:GetOuter() return g end function T:GetInner() return l end function T:GetSize() return l.AbsoluteSize end local R = {} table.insert(R, q:AddBlank(5)) q:Resize() end end local I = function(R) local T = R[3] local q = R[4] local g = R[8] local l = R[2] local m = R[10] local d = R[0] local Z = R[11] local F = R[1] local A = R[9] local _ = R[7] local n = R[6] local v = R[5] return function() local R = {} local R = false local J = false function q:Toggle() if J then return end R = not R q.Toggled = R l[3][l[2]] = R q:FireEvent("VisibilityChanged", l[3][l[2]]) F.Modal = R if R then _.Visible = true local l = game:GetService("GuiService") task.spawn(function() local F = v.MouseIconEnabled local J = Instance.new("ImageLabel", A) J.Image = "http://www.roblox.com/asset/?id=4292970642" J.BackgroundTransparency = 1 J.ZIndex = 125 local s = Instance.new("ImageLabel", A) s.Image = "http://www.roblox.com/asset/?id=4292970642" s.ImageColor3 = Color3.new() s.BackgroundTransparency = 1 s.ZIndex = 124 J.Size, s.Size = UDim2.fromOffset(17, 17), UDim2.fromOffset(19, 19) J.Rotation, s.Rotation = -45, -45 while R and A.Parent do v.MouseIconEnabled = false local A = v:GetMouseLocation() local G = UDim2.fromOffset(A.X, A.Y - l:GetGuiInset().Y - 1) J.ImageColor3 = q.AccentColor J.Position, s.Position = G, G - UDim2.fromOffset(1, 1) Z:Wait() end v.MouseIconEnabled = F J:Destroy() s:Destroy() end) end for l, l in d do task.spawn(function() if l.Type == "Dropdown" then l:CloseDropdown() elseif l.Type == "KeyPicker" then l:SetModePickerVisibility(false) elseif l.Type == "ColorPicker" then l:Hide() end end) end if R and q.BlockInput then n:BindAction("Freeze", function() return Enum.ContextActionResult.Sink end, false, table.unpack(Enum.PlayerActions:GetEnumItems())) else n:UnbindAction("Freeze") end g.Enabled = R T.Enabled = R m.Enabled = R _.Visible = R end q:GiveSignal(v.InputBegan:Connect(function(R, T) if typeof(q.ToggleKeybind) == "table" and q.ToggleKeybind.Type == "KeyPicker" then if R.UserInputType == Enum.UserInputType.Keyboard and R.KeyCode.Name == q.ToggleKeybind.Value then task.spawn(q.Toggle) end elseif R.KeyCode == Enum.KeyCode.RightControl or (R.KeyCode == Enum.KeyCode.Insert and not T) then task.spawn(q.Toggle) end end)) end end local S = function(R) local T = R[1] local q = R[0] return function() local R = Toggles.sunrays_enabled.Value if R then q.Enabled = true q.Spread = Options.sunrays_spread.Value q.Intensity = Options.sunrays_intensity.Value else for R, g in T do q[R] = g end end end end local G = function(R) local T = R[10] local q = R[9] local g = R[15] local l = R[12] local m = R[20] local d = R[13] local Z = R[5] local F = R[14] local A = R[0] local _ = R[2] local n = R[11] local v = R[19] local J = R[8] local s = R[21] local G = R[18] local a = R[6] local H = R[16] local Y = R[17] local N = R[4] local U = R[3] local i = R[1] local L = R[7] return function() local R, c = Toggles.esp_name.Value, Toggles.esp_distance.Value local y = Toggles.esp_weapon.Value local O, t = Toggles.esp_box.Value, Toggles.esp_fill.Value local B = Toggles.esp_skeleton.Value local f, Q = Toggles.esp_skeleton_outline.Value, Options.esp_skeleton_thickness.Value local z, j = Toggles.esp_healthbar_resize.Value, Options.esp_healthbar_health_lerp.Value local S = Options.esp_bounds_type.Value == "dynamic" local u = Options.esp_bounds_width_scale.Value / 100 local w = Toggles.esp_show_team.Value local x = false local o = function() x = (L[3][L[2]] or R or c or y or O or t or B) end o() do Toggles.esp_healthbar:OnChanged(function(V) L[3][L[2]] = V o() end) Toggles.esp_name:OnChanged(function(V) R = V o() end) Toggles.esp_distance:OnChanged(function(V) c = V o() end) Toggles.esp_weapon:OnChanged(function(V) y = V o() end) Toggles.esp_box:OnChanged(function(V) O = V o() end) Toggles.esp_fill:OnChanged(function(V) t = V o() end) Toggles.esp_skeleton:OnChanged(function(V) B = V o() end) Toggles.esp_show_team:OnChanged(function(o) w = o J.events.esp_color_changed:Fire() J.events.esp_effects_changed:Fire() end) Options.esp_bounds_width_scale:OnChanged(function(o) u = o / 100 end) Options.esp_bounds_type:OnChanged(function(o) S = o == "dynamic" end) Options.esp_skeleton_thickness:OnChanged(function(o) Q = o end) Toggles.esp_skeleton_outline:OnChanged(function(o) f = o end) Toggles.esp_healthbar_resize:OnChanged(function(o) z = o end) Options.esp_healthbar_health_lerp:OnChanged(function(o) j = o end) end local o, V = Z.CFrame.UpVector, Z.CFrame.Position local X = tick do local I = {} local r = function(b, C, M) if (not C or not M) then return end local E, W = C.Value, M.Value C:OnChanged(function(C) E = C end) M:OnChanged(function(C) W = C end) local C = _.gradients[b] table.insert(I, function(b) if E then local M = (b * 360 * W) % 360 for b, b in pairs(C) do b.Rotation = M end end end) end for b in _.gradients do if (b ~= "healthbar") then r(b, Toggles["esp_" .. b .. "_moving"], Options["esp_" .. b .. "_rotation_speed"]) end end local r, r = _.gradients.fill, _.gradients.box local r = pairs Y.RenderStepped:Connect(function() local b = Z.CFrame V, o = b.Position, b.UpVector local Z = X() for X, X in r(I) do X(Z) end end) end local Z = { "RightHand", "LeftLowerArm", "RightLowerArm", "LeftUpperArm", "RightUpperArm", "LowerTorso", "LeftLowerLeg", "LeftUpperLeg", "LeftFoot", "RightFoot", "RightLowerLeg", "RightUpperLeg", "UpperTorso", "LeftHand", "Head", } local X = {} return function(I, r) local b = { connections = {}, gradients = {}, functions = {}, drawings = {}, squares = {}, text = {}, lines = {} } if _.running[I] then return H(I, "attempted to initialize twice") end local H = I.Character local C = H and H:FindFirstChild("Humanoid") local M = H and H:FindFirstChild("HumanoidRootPart") if not I.Parent then return end local E = J.effects.self_effects.new("esp") local W, W = U(0, 2.5, 0), U(0, 3.5, 0) local W = A(5, q[Options.esp_font.Value].size - 2) local e = Vector2.zero.Floor local k, P = pairs, {} local D = function() local p, p = g[3][g[2]](M.Position) if not p then return end local p, h = i, i local K, RT = -i, -i local TT = false for qT, qT in k(P) do local gT, lT = qT.CFrame, qT.Size * 0.5 local qT, mT, dT = lT.X, lT.Y, lT.Z for lT, lT in { gT * a(-qT, -mT, -dT), gT * a(-qT, -mT, dT), gT * a(-qT, mT, -dT), gT * a(-qT, mT, dT), gT * a(qT, -mT, -dT), gT * a(qT, -mT, dT), gT * a(qT, mT, -dT), gT * a(qT, mT, dT), } do local a, qT = g[3][g[2]](lT.Position) if not qT then continue end TT = true local qT, gT = a.X, a.Y p, h = v(p, qT), v(h, gT) K, RT = T(K, qT), T(RT, gT) end end if not TT then return end local v = T(10, K - p) local a = T(10, RT - h) local K = e(A(v, a)) local v = e(A(p + K.X / 2, h)) return K, v, M.Position end local v = function() if S then return D() end local a = M.Position local S = a + o * 2.5 local D, p = g[3][g[2]](S) if not p then return end if ((a - V).Magnitude > 600) then return W, e(D), a end local S = a - o * 3.5 local o, p = g[3][g[2]](S) if not p then return end local S = T(10, n(o.Y - D.Y)) return e(A(S * u, S)), e(D), a end local n, a = C and C.Health or 0, C and C.MaxHealth or 100 local S = function(u) H = u M = u:WaitForChild("HumanoidRootPart", math.huge) C = u:WaitForChild("Humanoid", math.huge) table.insert( b.connections, C:GetPropertyChangedSignal("Health"):Connect(function() n = C.Health end) ) table.insert( b.connections, C:GetPropertyChangedSignal("MaxHealth"):Connect(function() a = C.MaxHealth end) ) n, a = C.Health, C.MaxHealth for o, o in Z do P[o] = u:WaitForChild(o, i) end if (not w and r._is_ally) then return end local i = function() local o = u.Parent if (o ~= d) then task.wait() if (u.Parent ~= nil) then u.Parent = d end end end task.wait() pcall(i) local i = P.Head while (task.wait(1) and i.Parent and i.Transparency > 0.5) do end if ((not w and r._is_ally) or not i.Parent) then return end if (H and Toggles.esp_override_appearance.Value) then J.customization.self:change(H, function() local i = Options.esp_body_disables.Value return Toggles.esp_body_color.Value and Options.esp_body_color_value.Value, 1 - (Options.esp_body_transparency.Value / 100), Toggles.esp_material.Value and Enum.Material[Options.esp_material_value.Value], i["decals"], i["clothing"] end) end for i, i in { "aura", "particle" } do if (H and Toggles["esp_effects_" .. i].Value) then E:create(H, Options["esp_effects_" .. i .. "_value"].Value, i) else E:destroy(i) end end end local i = function(u, o) local e = X[u] local D, p if not e then D, p = {}, 0 while true do local h = (Options[u .. (p + 1)] or Options[u]) if not h then break end p = p + 1 table.insert(D, h) end X[u] = { D, p } else D, p = unpack(e) end local u = {} local X, e = (o and NumberSequenceKeypoint or ColorSequenceKeypoint).new, o and "Transparency" or "Value" for h, K in D do table.insert(u, X((h - 1) / (p - 1), K[e] or 0)) end return (o and NumberSequence or ColorSequence).new(u) end local u = function(o, X) table.insert(_.gradients[o], X) b.gradients[o] = X return X end do for o = 1, 7 do b.squares[o] = l("Square", { Visible = false, Outline = true }, b.drawings) end do for o = 1, 26 do local X = (o > 13) table.insert( b.lines, l( "Line", { Visible = false, ZIndex = not X and 2 or nil, Thickness = Q + (X and 2 or 0), Color = X and Color3.new() or Color3.new(1, 1, 1), }, b.drawings ) ) end do local o = { ColorSequence.new(Options.esp_skeleton_color2.Value, Options.esp_skeleton_color3.Value), ColorSequence.new(Options.esp_skeleton_color1.Value, Options.esp_skeleton_color2.Value), ColorSequence.new(Options.esp_skeleton_color1.Value), } for X = 1, 13 do local e = Instance.new("UIGradient", b.lines[X]._frame) local D = ((X - 1) % 3) + 1 if (X == 13) then e.Color = ColorSequence.new(Options.esp_skeleton_color3.Value) else e.Color = o[D] end end end end local o = q[Options.esp_font.Value] for X = 1, 3 do local e = l( "Text", { Outline = true, Visible = false, Color = Color3.new(1, 1, 1), Middle = true, Center = true, Size = 12 }, b.drawings ) e._frame.FontFace, e.Size = o.font, o.size b.text[X] = e end b.squares[1].Thickness = 3 b.squares[2].ZIndex = 2 b.squares[2].Color = Color3.new(1, 1, 1) b.squares[3].ZIndex = 2 b.squares[3].Color = Color3.new(1, 1, 1) b.squares[4].Color = Color3.new(0, 0, 0) b.squares[3].Filled = true b.squares[4].Filled = true b.squares[3].Color = Color3.new(1, 1, 1) b.squares[5].ZIndex = 2 b.squares[5].Color = Color3.new(1, 1, 1) b.squares[6].Color = Color3.new(0, 0, 0) b.squares[5].Filled = true b.squares[6].Filled = true b.squares[5].Color = Color3.new(1, 1, 1) local l = rawget(r, "ClientFighter") l = l and rawget(l, "EquippedItem") b.text[2].Text = l and l.Name or "none" b.text[1].Text = Options.esp_name_type.Value == "Name" and I.Name or I.DisplayName b.text[1]._frame.RichText = true for l, o in { "esp_name_", "esp_weapon_", "esp_distance_" } do local X = b.text[l]._frame local l = Instance.new("UIGradient", X) X.AnchorPoint, X.AutomaticSize = A(0.5, 0), Enum.AutomaticSize.XY l.Color, l.Rotation = i(o .. "color"), Options[o .. "rotation"].Value u(o:split("_")[2], l) end do local l = u("box", Instance.new("UIGradient", b.squares[2]._frame._stroke)) l.Rotation = Options.esp_box_rotation.Value b.squares[2]._frame._stroke.UIGradient.Color = i("esp_box_color") end b.squares[7].Color = Color3.new(1, 1, 1) b.squares[7].Filled = true end local l = N[Options.esp_font.Value] or A(2, -1) do local o, X = b.squares[1], b.squares[2] local e, D = A(2, 2), A(1, 1) b.functions.box = function(p, h) if O then local O = h - A(p.X / 2, 0) X.Size = p o.Size = p + e X.Position = O o.Position = O - D X.Visible = true o.Visible = true else X.Visible = false o.Visible = false end end end do local O = b.squares[7] local o = u("fill", Instance.new("UIGradient", O._frame)) do o.Color, o.Transparency, o.Rotation = i("esp_fill_color"), i("esp_fill_color", true), Options.esp_fill_rotation.Value O._frame._stroke:Destroy() end local X = A(2, 2) b.functions.fill = function(e, D, p) if t then local t = D - A(e.X / 2 - 1, -1) O.Size = e - X O.Position = t O.Visible = true else O.Visible = false end end table.insert( b.connections, J.events.esp_fill_changed.Event:Connect(function(...) o.Color, o.Transparency, o.Rotation = i("esp_fill_color"), i("esp_fill_color", true), Options.esp_fill_rotation.Value end) ) end do local O = b.text[1] O._frame.AnchorPoint = A(0.5, 1) local t = A(0, 2) b.functions.name = function(o, o) if R then O.Position = o - t O.Visible = true else O.Visible = false end end end do local R = b.text[2] b.functions.weapon = function(O, t) if y then R.Position = t + A(0, O.Y + 1) R.Visible = true else R.Visible = false end end m(R, r) end do local R, m = b.text[3], b.text[2] b.functions.distance = function(y, O, t) if c then R.Position = O + A(0, (m.Visible and (y.Y + R.TextBounds.Y) or y.Y) + 2) R.Visible = true R.Text = "[" .. G((V - t).Magnitude) .. "]" else R.Visible = false end end end do local R = { { "LeftUpperArm", "UpperTorso" }, { "LeftLowerArm", "LeftUpperArm" }, { "LeftLowerArm", "LeftHand" }, { "RightUpperArm", "UpperTorso" }, { "RightLowerArm", "RightUpperArm" }, { "RightHand", "RightLowerArm" }, { "LeftUpperLeg", "LowerTorso" }, { "LeftLowerLeg", "LeftUpperLeg" }, { "LeftFoot", "LeftLowerLeg" }, { "RightUpperLeg", "LowerTorso" }, { "RightLowerLeg", "RightUpperLeg" }, { "RightFoot", "RightLowerLeg" }, { "LowerTorso", "UpperTorso" }, } local m = b.lines local G = m[1] local G = false local c = function() if G then return end G = true for y, y in m do y.Visible = false end end local y = #Z local Z = function() local O = {} local t = 0 for o, V in k(P) do t = t + 1 O[o] = g[3][g[2]](o ~= "UpperTorso" and V.Position or (V.Position + U(0, V.Size.Y / 3, 0))) end if (t ~= y) then return end return O end b.functions.skeleton = function() if not B then return c() end local g = Z() if not g then return c() end G = false for Z, G in R do local R, U = m[Z], m[Z + 13] local m, Z = g[G[1]], g[G[2]] local g = (m - Z).Unit R.From, R.To = m + g, Z - g if f then local G = g * 2 U.From, U.To = m + G, Z - G U.Visible = true else U.Visible = false end R.Visible = true end end end do local R = u("healthbar", Instance.new("UIGradient", b.squares[3]._frame._stroke)) R.Color = s[3][s[2]] R.Rotation = 90 local g, m = b.squares[3], b.squares[4] g._frame.AnchorPoint = A(0, 1) m._frame.AnchorPoint = A(0, 1) local Z, Z = 0, 0 local s = math.lerp local G = Options.esp_healthbar_health_lerp local G, U = A(0, 1), A(0, 2) local c = A(5, 0) local c = A(-1, 2) local y = A(1, -1) local y = A(1, -1) table.insert( b.connections, I.CharacterAdded:Connect(function() Z = 0 end) ) b.functions.healthbar = function(O, t, B) if L[3][L[2]] then t = t - G O = O + U local G = t - A(O.X / 2 + 6, -O.Y + 1) - c if L[3][L[2]] then local U = n / a Z = s(Z, U, j) local s = A(2, T(2, (O.Y - 2) * Z)) g.Size = s g.Position = G R.Offset = A(0, (Z - 1)) if z then m.Size = A(4, s.Y + 2) m.Position = G - y else m.Size = A(4, O.Y) m.Position = G - y end m.Visible = true g.Visible = true else m.Visible, g.Visible = false, false end else m.Visible, g.Visible = false, false end end end local R = false local T = function() if R then return end R = true for g, g in b.drawings do g.Visible = false end end table.insert(b.connections, I.CharacterAdded:Connect(S)) table.insert( b.connections, I.CharacterRemoving:Connect(function(g) if (H == g) then H = nil M = nil C = nil n = 0 b.text[2].Text = "none" table.clear(P) end end) ) local g table.insert( b.connections, J.events.esp_color_changed.Event:Connect(function() for m, Z in { "esp_name_", "esp_weapon_", "esp_distance_" } do local s = b.text[m]._frame.UIGradient s.Color, s.Rotation = i(Z .. "color"), Options[Z .. "rotation"].Value end local m = b.squares[2]._frame._stroke.UIGradient m.Color = i("esp_box_color") m.Rotation = Options.esp_box_rotation.Value b.text[1].Text = I[Options.esp_name_type.Value] local m = q[Options.esp_font.Value] for Z, Z in b.text do Z._frame.FontFace, Z.Size = m.font, _G.A or m.size end do local m = { ColorSequence.new(Options.esp_skeleton_color2.Value, Options.esp_skeleton_color3.Value), ColorSequence.new(Options.esp_skeleton_color1.Value, Options.esp_skeleton_color2.Value), ColorSequence.new(Options.esp_skeleton_color1.Value), } for Z, s in b.lines do local G = (Z > 13) s.Thickness = Q + (G and 2 or 0) if not G then local G = s._frame.UIGradient local s = ((Z - 1) % 3) + 1 if (Z == 13) then G.Color = ColorSequence.new(Options.esp_skeleton_color3.Value) else G.Color = m[s] end end end end local m = function() if ((w or not r._is_ally) and H and Toggles.esp_override_appearance.Value) then J.customization.self:change(H, function() local Z = Options.esp_body_disables.Value return Toggles.esp_body_color.Value and Options.esp_body_color_value.Value, 1 - (Options.esp_body_transparency.Value / 100), Toggles.esp_material.Value and Enum.Material[Options.esp_material_value.Value], Z["decals"], Toggles.esp_material.Value and Options.esp_material_value.Value ~= "ForceField" or Z["clothing"] end) else J.customization.self:restore(H) end end local Z = P.Head if (H and (J.customization.self:get(H) or (Z and Z.Transparency < 0.5))) then m() elseif (H and Z and Toggles.esp_override_appearance.Value) then pcall(task.cancel, g) g = task.spawn(function() while (task.wait(1) and Z.Parent and Z.Transparency > 0.5) do end if Z.Parent then m() end end) end l = N[Options.esp_font.Value] or A(2, -1) W = A(5, q[Options.esp_font.Value].size - 2) if (H and H.Parent) then local q = H.Parent if (not w and r._is_ally) then pcall(F, H, "Parent", workspace) else pcall(F, H, "Parent", d) end end end) ) table.insert( b.connections, J.events.esp_effects_changed.Event:Connect(function() for q, q in { "aura", "particle" } do if (not w and r._is_ally) then E:destroy(q) continue end if (H and Toggles["esp_effects_" .. q].Value) then E:create(H, Options["esp_effects_" .. q .. "_value"].Value, q) else E:destroy(q) end end end) ) table.insert( b.connections, J.events.esp_effects_color_changed.Event:Connect(function() for q, q in { "aura", "particle" } do E:update(q) end end) ) local q, g, l, m, d, d, Z = b.functions.box, b.functions.fill, b.functions.name, b.functions.weapon, b.functions.accuracy, b.functions.distance, b.functions.healthbar local F = b.functions.skeleton table.insert( b.connections, Y.RenderStepped:Connect(function(A) if (not x or not M or (not w and r._is_ally)) then return T() end if (n <= 0) then return T() end local n, J, s = v() if not n then return T() end R = false F() q(n, J) l(n, J) g(n, J, A) m(n, J) d(n, J, s) Z(n, J, A) end) ) if H then task.spawn(S, H) end table.clear(b.functions) _.running[I] = b end end end local A_func = function(R) local T = R[2] local q = R[1] local g = R[0] local l = R[3] return function() if g.Value then local R = l.CFrame q._current.Position = R.Position + T end end end local Y = function(R) local T = R[4] local q = R[0] local g = R[8] local l = R[3] local m = R[9] local d = R[7] local Z = R[2] local F = R[6] local A = R[1] local _ = R[5] return function() local R = A.Tabboxes function l:Remove() d:Destroy() table.clear(l) R[_.Name or ""] = nil end function l:AddTab(R, n) local v = {} local J = q:Create( T[3][T[2]], { BackgroundColor3 = q.MainColor, BorderSizePixel = 1, BorderColor3 = Color3.fromRGB(0, 0, 0), Size = UDim2.new(0.5, 0, 1, 0), ZIndex = 6, Parent = Z, } ) local s = q:Create( T[3][T[2]], { BackgroundColor3 = q.AccentColor, BorderSizePixel = 0, Position = UDim2.new(0, 0, 0, 0), Size = UDim2.new(1, 0, 0, 1), ZIndex = 8, Visible = n or false, Parent = J, } ) q:AddToRegistry(s, { BackgroundColor3 = "AccentColor" }) local G = n and UDim2.new(1, -1, 1, 0) or UDim2.new(1, 0, 1, 0) local n = q:Create( T[3][T[2]], { BackgroundTransparency = 0, BackgroundColor3 = q.MainColor, BorderSizePixel = 1, BorderColor3 = q.OutlineColor, BorderMode = Enum.BorderMode.Inset, Size = G, ZIndex = 7, Parent = J, } ) q:AddToRegistry(J, { BackgroundColor3 = "MainColor" }) q:AddToRegistry(n, { BackgroundColor3 = "MainColor", BorderColor3 = m[3][m[2]] }) local m = q:CreateLabel({ Size = UDim2.new(1, 0, 1, 0), TextSize = 14, Text = R, TextXAlignment = Enum.TextXAlignment.Center, ZIndex = 7, Parent = J, }) local m = q:Create( T[3][T[2]], { BackgroundColor3 = q.BackgroundColor, BorderSizePixel = 0, Position = UDim2.new(0, 0, 1, 0), Size = UDim2.new(1, 0, 0, 1), Visible = false, ZIndex = 9, Parent = J, } ) q:AddToRegistry(m, { BackgroundColor3 = "BackgroundColor" }) local G = q:Create( T[3][T[2]], { BackgroundTransparency = 1, Position = UDim2.new(0, 4, 0, 20), Size = UDim2.new(1, -4, 1, -20), ZIndex = 1, Visible = false, Parent = g, } ) q:Create( "UIListLayout", { FillDirection = Enum.FillDirection.Vertical, SortOrder = Enum.SortOrder.LayoutOrder, Parent = G } ) function v:Show() for T, T in next, l.Tabs do T:Hide() end G.Visible = true m.Visible = true n.Visible = false s.Visible = true J.BackgroundColor3 = q.BackgroundColor q.RegistryMap[J].Properties.BackgroundColor3 = "BackgroundColor" v:Resize() end function v:Hide() G.Visible = false m.Visible = false n.Visible = true s.Visible = false J.BackgroundColor3 = q.MainColor q.RegistryMap[J].Properties.BackgroundColor3 = "MainColor" end function v:Resize() local T = 0 for g, g in next, l.Tabs do T = T + 1 end for g, g in next, Z:GetChildren() do if not g:IsA("UIListLayout") then g.Size = UDim2.new(1 / T, 0, 1, 0) end end if not G.Visible then return end local T = 0 for g, g in next, v.Container:GetChildren() do if (not g:IsA("UIListLayout")) and g.Visible then T = T + g.Size.Y.Offset end end d.Size = UDim2.new(1, 0, 0, 20 + T + 2 + 2) end J.InputBegan:Connect(function(T) if (T.UserInputType == Enum.UserInputType.MouseButton1 and not q:MouseIsOverOpenedFrame()) or T.UserInputType == Enum.UserInputType.Touch then v:Show() v:Resize() end end) v.Container = G l.Tabs[R] = v setmetatable(v, F) v:AddBlank(3) v:Resize() if #Z:GetChildren() == 2 then v:Show() end return v end A.Tabboxes[_.Name or ""] = l end end local r = function(R) local T = R[2] local q = R[1] local g = R[0] return function() local R = cloneref or function(l) return l end local l = R(game:GetService("HttpService")) local R = (syn and syn.request) or (http and http.request) or http_request or (fluxus and fluxus.request) or request local R = getcustomasset or getsynasset do g.Folder = "" g.Library = nil g.BuiltInThemes = { ["Default"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"131313",\n\t\t\t\t"AccentColor":"a2cdff",\n\t\t\t\t"BackgroundColor":"151515",\n\t\t\t\t"OutlineColor":"212121",\n\t\t\t\t"RiskColor":"ff7425",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, ["Tokyo Night"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"191925",\n\t\t\t\t"AccentColor":"6956cb",\n\t\t\t\t"BackgroundColor":"15151e",\n\t\t\t\t"OutlineColor":"272727",\n\t\t\t\t"RiskColor":"fb5f5f",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, ["Nord"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"1c1e20",\n\t\t\t\t"AccentColor":"9effc8",\n\t\t\t\t"BackgroundColor":"1c1e20",\n\t\t\t\t"OutlineColor":"24282d",\n\t\t\t\t"RiskColor":"ff7a00",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, ["Skeet"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"131313",\n\t\t\t\t"AccentColor":"81ff54",\n\t\t\t\t"BackgroundColor":"151515",\n\t\t\t\t"OutlineColor":"2a2a2a",\n\t\t\t\t"RiskColor":"e50000",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, ["Fatality"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"181537",\n\t\t\t\t"AccentColor":"ca0756",\n\t\t\t\t"BackgroundColor":"201c46",\n\t\t\t\t"OutlineColor":"39335a",\n\t\t\t\t"RiskColor":"e50000",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, ["Neverlose"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"0c1014",\n\t\t\t\t"AccentColor":"01a3f1",\n\t\t\t\t"BackgroundColor":"0c0f14",\n\t\t\t\t"OutlineColor":"191919",\n\t\t\t\t"RiskColor":"e50000",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, ["Onetap"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"1e1d22",\n\t\t\t\t"AccentColor":"faa614",\n\t\t\t\t"BackgroundColor":"18181c",\n\t\t\t\t"OutlineColor":"313033",\n\t\t\t\t"RiskColor":"e50000",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, ["Imgui"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"151617",\n\t\t\t\t"AccentColor":"406ba8",\n\t\t\t\t"BackgroundColor":"151617",\n\t\t\t\t"OutlineColor":"242424",\n\t\t\t\t"RiskColor":"e50000",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, ["Iniuria"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"1e1d1e",\n\t\t\t\t"AccentColor":"c41275",\n\t\t\t\t"BackgroundColor":"1e1d1e",\n\t\t\t\t"OutlineColor":"33252b",\n\t\t\t\t"RiskColor":"e50000",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, ["Primordial"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"181818",\n\t\t\t\t"AccentColor":"d7a6b0",\n\t\t\t\t"BackgroundColor":"1f1f1f",\n\t\t\t\t"OutlineColor":"2a2a2a",\n\t\t\t\t"RiskColor":"e50000",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, ["Monolith"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"141115",\n\t\t\t\t"AccentColor":"c707bd",\n\t\t\t\t"BackgroundColor":"171417",\n\t\t\t\t"OutlineColor":"272427",\n\t\t\t\t"RiskColor":"e50000",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, ["V3rmillion"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"202020",\n\t\t\t\t"AccentColor":"cd1818",\n\t\t\t\t"BackgroundColor":"202020",\n\t\t\t\t"OutlineColor":"2a2a2a",\n\t\t\t\t"RiskColor":"e50000",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, ["Dark"] = { 1, l:JSONDecode( '{\n\t\t\t\t"FontColor":"ffffff",\n\t\t\t\t"MainColor":"0a0a0a",\n\t\t\t\t"AccentColor":"5945ff",\n\t\t\t\t"BackgroundColor":"0a0a0a",\n\t\t\t\t"OutlineColor":"171717",\n\t\t\t\t"RiskColor":"e50000",\n\n\t\t\t\t"ItemType":"Unnamed Enhancements",\n\t\t\t\t"SwordColor":"ffffff",\n\t\t\t\t"SwordTransparency":"0",\n\t\t\t\t"SwordReflectance":"0",\n\t\t\t\t"SwordSpeed":"0.15",\n\t\t\t\t"SwordMaterial":"Neon",\n\n\t\t\t\t"Contrast":"0",\n\t\t\t\t"Saturation":"0",\n\t\t\t\t"Brightness":"0",\n\n\n\t\t\t\t"BackColor":"000000",\n\t\t\t\t"BlurSize":"15",\n\t\t\t\t"BackTransparency":"0.7"\n\t\t\t}' ), }, } function g:ApplyTheme(R) if not R then return end local m = self:GetCustomTheme(R) local d = m or self.BuiltInThemes[R] if not d then return end if self.Library.InnerVideoBackground ~= nil then self.Library.InnerVideoBackground.Visible = false end local R = d[2] for d, Z in next, m or R do if d:find("Color") then self.Library[d] = Color3.fromHex(Z) if q[d] then q[d]:SetValueRGB(Color3.fromHex(Z)) end else self.Library[d] = Z if q[d] then q[d]:SetValue(Z) end end end self:ThemeUpdate() end function g:ThemeUpdate() if self.Library.InnerVideoBackground ~= nil then self.Library.InnerVideoBackground.Visible = false end local R = { "Contrast", "Saturation", "Brightness", "BlurSize", "FontColor", "RiskColor", "MainColor", "AccentColor", "BackgroundColor", T[3][T[2]], "SwordColor", "ItemType", "BackTransparency", "BackColor", "SwordTransparency", "SwordReflectance", "SwordMaterial", "SwordSpeed", } for m, m in next, R do if q and q[m] then self.Library[m] = q[m].Value end end self.Library.AccentColorDark = self.Library:GetDarkerColor(self.Library.AccentColor) self.Library:UpdateColorsUsingRegistry() end function g:LoadDefault() local R = "Default" local m = isfile(self.Folder .. "/themes/default.txt") and readfile(self.Folder .. "/themes/default.txt") local d = true if m then if self.BuiltInThemes[m] then R = m elseif self:GetCustomTheme(m) then R = m d = false end elseif self.BuiltInThemes[self.DefaultTheme] then R = self.DefaultTheme end if d then q.ThemeManager_ThemeList:SetValue(R) else self:ApplyTheme(R) end end function g:SaveDefault(R) writefile(self.Folder .. "/themes/default.txt", R) end function g:Delete(R) if not R then return false, "no config file is selected" end local m = self.Folder .. "/themes/" .. R if not isfile(m) then return false, "invalid file" end local R, d = pcall(delfile, m) if not R then return false, "delete file error" end return true end function g:GetCustomTheme(R) if not R then return end local m = self.Folder .. "/themes/" .. R if not isfile(m) then return nil end local R = readfile(m) local m, d = pcall(l.JSONDecode, l, R) if not m then return nil end return d end function g:SaveCustomTheme(R) if not R or R:gsub(" ", "") == "" then return self.Library:Notify("Invalid file name for theme (empty)", 3) end local m = {} local d = { "Contrast", "Saturation", "Brightness", "BlurSize", "FontColor", "RiskColor", "MainColor", "AccentColor", "BackgroundColor", T[3][T[2]], "ItemType", "SwordColor", "BackTransparency", "BackColor", "SwordTransparency", "SwordReflectance", "SwordMaterial", "SwordSpeed", } for T, T in next, d do if q[T] then if not T:find("Color") then m[T] = q[T].Value else m[T] = q[T].Value:ToHex() end end end writefile(self.Folder .. "/themes/" .. R, l:JSONEncode(m)) end function g:ReloadCustomThemes() local R = listfiles(self.Folder .. "/themes") local T = {} for q = 1, #R do local l = R[q] if l:sub(-5) == ".json" then local R = l:find(".json", 1, true) local q = l:sub(R, R) while q ~= "/" and q ~= "\\" and q ~= "" do R = R - 1 q = l:sub(R, R) end if q == "/" or q == "\\" then table.insert(T, l:sub(R + 1)) end end end return T end function g:SetLibrary(R) self.Library = R end function g:BuildFolderTree() local R = {} local T = self.Folder:split("/") for q = 1, #T do R[#R + 1] = table.concat(T, "/", 1, q) end table.insert(R, self.Folder .. "/themes") for T = 1, #R do local q = R[T] if not isfolder(q) then makefolder(q) end end end function g:SetFolder(R) self.Folder = R self:BuildFolderTree() end function g:CreateGroupBox(R) assert(self.Library, "Must set ThemeManager.Library first!") return R:AddLeftTabbox() end function g:ApplyToTab(R) assert(self.Library, "Must set ThemeManager.Library first!") local T = self:CreateGroupBox(R) self:CreateThemeManager(T) end function g:ApplyToGroupbox(R) assert(self.Library, "Must set ThemeManager.Library first!") self:CreateThemeManager(R) end end getgenv().ThemeManager = g end end local o = function(R) local T = R[33] local q = R[22] local g = R[21] local l = R[13] local m = R[30] local d = R[2] local Z = R[20] local F = R[16] local A = R[7] local _ = R[29] local n = R[17] local v = R[28] local J = R[27] local s = R[15] local G = R[6] local a = R[8] local H = R[10] local Y = R[3] local N = R[11] local U = R[19] local i = R[9] local L = R[14] local c = R[25] local y = R[5] local O = R[24] local t = R[0] local B = R[1] local f = R[32] local Q = R[12] local z = R[23] local j = R[4] local S = R[18] local u = R[26] local w = R[31] return function(R, x, o, V, X, I) q(8) I = O[3][O[2]](I) local O, r = f.Value, J.Value local J = F.Value local F = d.Value local d, f local b, C = nil, nil if o then local M, E = O["position on target"], r["position on target"] if (M or E or J["position on target"] or F["position on target"]) then local W, e if X then W, e = V, X else W, e = G[3][G[2]](o.Position) end if e then V, b, X = W, W, e if M then f = B.Position:Lerp(V, y.Value) end if E then d = U.Position:Lerp(V, a.Value) end end end end local M = u[3][u[2]].EquippedItem if (M and M.ViewModel and M.Info.Type == "Gun") then local u, E = not f and O["position on barrel"], not d and r["position on barrel"] if (u or E or J["position on barrel"] or F["position on barrel"]) then local O = M.ViewModel if (O and (#O._muzzle_attachments > 0 or (O._body_model and O._body_model.PrimaryPart))) then local r, W, e = pcall(function() return G[3][G[2]](O:GetMuzzlePosition()) end) q(8) if (r and e) then C = W if u then f = B.Position:Lerp(W, y.Value) end if E then d = U.Position:Lerp(W, a.Value) end end end end if l[3][l[2]] then local q, l = _[3][_[2]], "" local _, O, u = M.Info.MaxAmmo, M.Data.AmmoReserve, M.Data.Ammo if ((_ and _ ~= i) and (O and O ~= i) and (u and u ~= i)) then if q.ammo then I = I .. Z("ammo", u) l = Z("ammo divider", "/") end if q["max ammo"] then I = I .. l .. Z("max ammo", _) l = Z("ammo divider", "/") end if q["reserve"] then I = I .. l .. Z("reserve", O) end if (I ~= "") then I = I .. "\n" end end end end if not d then d = U.Position:Lerp(R, a.Value) end if not f then f = B.Position:Lerp(R, y.Value) end local q = (F["position on target"] and b) or (F["position on barrel"] and C) or R c[3][c[2]] = c[3][c[2]]:Lerp(q, z.Value) s.Position = c[3][c[2]] + m[3][m[2]] s.Text = I local q = Q() L[3][L[2]]((J["position on target"] and b) or (J["position on barrel"] and C) or R, q) B.Position, U.Position = f, d Y.Position, n.Position = f, d if v.Value then local R = (q * 360 * H.Value) % 360 for l, l in N do l.Rotation = R end end if w.Value then local R = (q * 360 * A.Value) % 360 for q, q in T do q.Rotation = R end end if (o and X) then if j.Value then t.Adornee = x t.Enabled = true else t.Adornee = nil t.Enabled = false end if S.Value then g.Visible = true g.To = V or G[3][G[2]](o.Position) g.From = f else g.Visible = false end else g.Visible = false t.Adornee = nil t.Enabled = false end end end local N = function(R) local T = R[10] local q = R[21] local g = R[16] local l = R[6] local m = R[7] local d = R[9] local Z = R[23] local F = R[18] local A = R[2] local _ = R[8] local n = R[19] local v = R[24] local J = R[22] local s = R[5] local G = R[3] local a = R[14] local H = R[0] local Y = R[4] local N = R[13] local U = R[17] local i = R[15] local L = R[1] local c = R[20] local y = R[12] local O = R[11] return function() local R = L:AddContextMenu(a) R:AddOption("Make gradient", function() local t = {} for B, B in J.Addons do if (B.Type == "ColorPicker") then table.insert(t, B) end end if (#t < 3) then R:Hide() return L:Notify("not enough colors for a gradient.", 2) end local B, f = t[1].Value, t[#t].Value for Q = 2, #t - 1 do local z = t[Q] z:SetValueRGB(B:Lerp(f, Q / #t), z.Transparency) end L:Notify("created gradient!", 2) R:Hide() end) R:AddOption("Match color", function() local t = {} for B, B in J.Addons do if (B.Type == "ColorPicker") then table.insert(t, B) end end for J, J in t do J:SetValueRGB(H.Value, J.Transparency) end L:Notify("matched all colors!", 2) R:Hide() end) R:AddOption("Copy color", function() L.ColorClipboard = H L:Notify("Copied color!", 2) R:Hide() end) R:AddOption("Paste color", function() if not L.ColorClipboard then return L:Notify("You have not copied a color!", 2) end H:SetValueRGB(L.ColorClipboard.Value, L.ColorClipboard.Transparency) R:Hide() end) if L.FlagCopying then R:AddOption("Copy Flag", function() pcall(setclipboard, H.Idx) task.wait() L:Notify("Copied flag to clipboard!", 2) R:Hide() end) end L:AddToRegistry(Z, { BackgroundColor3 = "BackgroundColor", BorderColor3 = O[3][O[2]] }) L:AddToRegistry(i, { BackgroundColor3 = "AccentColor" }) L:AddToRegistry(n, { BackgroundColor3 = "BackgroundColor", BorderColor3 = O[3][O[2]] }) L:AddToRegistry(q, { BackgroundColor3 = "MainColor", BorderColor3 = O[3][O[2]] }) L:AddToRegistry(v.Frame, { BackgroundColor3 = "MainColor", BorderColor3 = O[3][O[2]] }) L:AddToRegistry(_, { TextColor3 = "FontColor" }) L:AddToRegistry(l, { TextColor3 = "FontColor" }) local R = {} for q = 0, 1, 0.1 do table.insert(R, ColorSequenceKeypoint.new(q, Color3.fromHSV(q, 1, 1))) end local q = L:Create("UIGradient", { Color = ColorSequence.new(R), Rotation = 90, Parent = N }) l.FocusLost:Connect(function(R) if R then local R, q = pcall(Color3.fromHex, l.Text) if R and typeof(q) == "Color3" then H.Hue, H.Sat, H.Vib = Color3.toHSV(q) end end H:Display() end) _.FocusLost:Connect(function(R) if R then local R, q, Z = _.Text:match("(%d+),%s*(%d+),%s*(%d+)") if R and q and Z then H.Hue, H.Sat, H.Vib = Color3.toHSV(Color3.fromRGB(R, q, Z)) end end H:Display() end) function H:Display() H.Value = Color3.fromHSV(H.Hue, H.Sat, H.Vib) d.BackgroundColor3 = Color3.fromHSV(H.Hue, 1, 1) L:Create( a, { BackgroundColor3 = H.Value, BackgroundTransparency = H.Transparency, BorderColor3 = L:GetDarkerColor(H.Value), } ) if s[3][s[2]] then s[3][s[2]].BackgroundColor3 = H.Value g[3][g[2]].Position = UDim2.new(1 - H.Transparency, 0, 0, 0) end U.Position = UDim2.new(H.Sat, 0, 1 - H.Vib, 0) F.Position = UDim2.new(0, 0, H.Hue, 0) l.Text = "#" .. H.Value:ToHex() _.Text = table.concat( { math.floor(H.Value.R * 255), math.floor(H.Value.G * 255), math.floor(H.Value.B * 255) }, ", " ) L:SafeCallback(H.Callback, H.Value) L:SafeCallback(H.Changed, H.Value) end function H:OnChanged(R) H.Changed = R R(H.Value) end local R = false function H:Show() R = true for q, g in next, L.OpenedFrames do if q.Name == "Color" then q.Visible = false L.OpenedFrames[q] = nil end end A.Visible = true L.OpenedFrames[A] = true end function H:Hide() R = false A.Visible = false L.OpenedFrames[A] = nil end function H:SetValue(q, g) local l = Color3.fromHSV(q[1], q[2], q[3]) H.Transparency = g or 0 H:SetHSVFromRGB(l) H:Display() end function H:Remove() c[y] = nil table.clear(H) end function H:SetValueRGB(q, g) H.Transparency = g or 0 H:SetHSVFromRGB(q) H:Display() end d.InputBegan:Connect(function(q) if q.UserInputType == Enum.UserInputType.MouseButton1 then while T:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do local q = d.AbsolutePosition.X local g = q + d.AbsoluteSize.X local l = math.clamp(m.X, q, g) local Z = d.AbsolutePosition.Y local F = Z + d.AbsoluteSize.Y local d = math.clamp(m.Y, Z, F) H.Sat = (l - q) / (g - q) H.Vib = 1 - ((d - Z) / (F - Z)) H:Display() Y:Wait() end L:AttemptSave() end end) N.InputBegan:Connect(function(q) if q.UserInputType == Enum.UserInputType.MouseButton1 then while T:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do local q = N.AbsolutePosition.Y local g = q + N.AbsoluteSize.Y local l = math.clamp(m.Y, q, g) H.Hue = ((l - q) / (g - q)) H:Display() Y:Wait() end L:AttemptSave() end end) a.InputBegan:Connect(function(q) if q.UserInputType == Enum.UserInputType.MouseButton1 and not L:MouseIsOverOpenedFrame() then if A.Visible then H:Hide() else H:Show() end elseif q.UserInputType == Enum.UserInputType.MouseButton2 and not L:MouseIsOverOpenedFrame() then H:Hide() end end) if s[3][s[2]] then s[3][s[2]].InputBegan:Connect(function(q) if q.UserInputType == Enum.UserInputType.MouseButton1 then while T:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do local T = s[3][s[2]].AbsolutePosition.X local q = T + s[3][s[2]].AbsoluteSize.X local g = math.clamp(m.X, T, q) H.Transparency = 1 - ((g - T) / (q - T)) H:Display() Y:Wait() end L:AttemptSave() end end) end local T = function() if not R then return end local R, q = A.AbsolutePosition, A.AbsoluteSize if (m.X < R.X or m.X > R.X + q.X or m.Y < (R.Y - 20 - 1) or m.Y > R.Y + q.Y) then H:Hide() end end for R, R in { Enum.UserInputType.MouseButton1, Enum.UserInputType.MouseButton2 } do L:BindToInput(R, T) end H:Display() H.DisplayFrame = a c[y] = H G.Addons = G.Addons or {} table.insert(G.Addons, H) if G.ToggleRegion then G.ColorPickerCount = G.ColorPickerCount + 1 if (G.ColorPickerCount > 2) then G.ToggleRegion.Size = G.ToggleRegion.Size - UDim2.new(0, 32, 0, 0) end end end end local D = function(R) local T = R[2] local q = R[0] local g = R[4] local l = R[1] local m = R[3] return function() function l:AddButton(...) local R = typeof(select(1, ...)) == "table" and select(1, ...) or { Text = select(1, ...), Func = select(2, ...) } assert(typeof(R.Func) == "function", "AddButton: `Func` callback is missing.") self.Outer.Size = UDim2.new(0.5, -2, 0, 20) R.Outer, R.Inner, R.Label = g(R) R.Outer.Position = UDim2.new(1, 3, 0, 0) R.Outer.Size = UDim2.new(1, -3, 1, 0) R.Outer.Parent = self.Outer function R:AddTooltip(g) if typeof(g) == "string" then m:AddToolTip(g, self.Outer) end return R end if typeof(R.Tooltip) == "string" then R:AddTooltip(R.Tooltip) end T(R) return R end local R = {} function l:Remove() for T, T in R do T:Destroy() end l.Outer:Destroy() table.clear(l) q:Resize() end if typeof(l.Tooltip) == "string" then l:AddTooltip(l.Tooltip) end table.insert(R, q:AddBlank(5)) q:Resize() end end local u = function(R) local T = R[1] local q = R[3] local g = R[0] local l = R[4] local m = R[5] local d = R[2] return function() function T:SetText(R) l.Text = R if q then local Z = select(2, g:GetTextBounds(R, g.Font, 14, Vector2.new(l.AbsoluteSize.X, math.huge))) l.Size = UDim2.new(1, -4, 0, Z) end d:Resize() end local R = {} function T:Remove() for g, g in R do g:Destroy() end l:Destroy() table.clear(T) d:Resize() end if not q then setmetatable(T, m) end table.insert(R, d:AddBlank(5)) d:Resize() end end local H = function(R) local T = R[2] local q = R[0] local g = R[5] local l = R[1] local m = R[3] local d = R[4] local Z = R[6] return function() function l:Resize() m.Size = UDim2.new(1, 0, 0, q.AbsoluteContentSize.Y) T:Resize() end q:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() l:Resize() end) m:GetPropertyChangedSignal("Visible"):Connect(function() l:Resize() end) function l:Update() local R = false for q, q in next, l.Dependencies do if (q[1].Value == q[2]) then R = true break end end m.Visible = R l:Resize() end function l:SetupDependencies(R) for q, q in next, R do assert(type(q) == "table", "SetupDependencies: Dependency is not of type `table`.") assert(q[1], "SetupDependencies: Dependency is missing element argument.") assert(q[2] ~= nil, "SetupDependencies: Dependency is missing value argument.") end l.Dependencies = R l:Update() end function l:Remove() table.remove(d.DependencyBoxes, table.find(d.DependencyBoxes, l)) table.clear(l) m:Destroy() T:Resize() end l.Container = g setmetatable(l, Z) table.insert(d.DependencyBoxes, l) end end local g = function(R) local T = R[5] local q = R[2] local g = R[6] local l = R[12] local m = R[11] local d = R[8] local Z = R[9] local F = R[10] local A = R[4] local _ = R[7] local n = R[0] local v = R[3] local J = R[1] return function(R, s, G) local a, H = n("Attachment", v), n("Attachment", v) a.WorldPosition, H.WorldPosition = R, R local R = _:Clone() local _ = F.Value R.Width0, R.Width1 = _, _ R.LightEmission = d.Value R.TextureSpeed = A.Value R.TextureLength = m.Value R.Parent = a R.Color = G R.Attachment0 = a R.Attachment1 = H local m = { R } for d = 1, (q.Value - 1) do local q = R:Clone() q.Parent = R.Parent table.insert(m, q) end T:Create(H, g(Z.Value), { WorldPosition = s }):Play() task.delay(l.Value, function() local R for q, q in m do R = T:Create(q, g(J.Value), { Width0 = 0, Width1 = 0 }) R:Play() end R.Completed:Wait() a:Destroy() H:Destroy() end) end end local v = function(R) local T = R[4] local q = R[2] local g = R[3] local l = R[8] local m = R[0] local d = R[5] local Z = R[13] local F = R[10] local A = R[6] local _ = R[7] local n = R[1] local v = R[9] local J = R[14] local s = R[12] local G = R[11] return function() function m:Display() A.BackgroundColor3 = m.Value and g.AccentColor or g.MainColor A.BorderColor3 = m.Value and g.AccentColorDark or g.OutlineColor g.RegistryMap[A].Properties.BackgroundColor3 = m.Value and "AccentColor" or "MainColor" g.RegistryMap[A].Properties.BorderColor3 = m.Value and "AccentColorDark" or s[3][s[2]] end m.UpdateColors = m.Display function m:OnChanged(R) table.insert(m.ChangedFuncs, R) R(m.Value) end function m:SetValue(R) if m.SettingValue then return end m.SettingValue = true R = not not R m.Value = R m:Display() for A, A in next, m.Addons do if A.Type == "KeyPicker" and A.SyncToggleState then A.Toggled = R A:Update() end end g:SafeCallback(m.Callback, R) for A, A in m.ChangedFuncs do g:SafeCallback(A, R) end g:UpdateDependencyBoxes() m.SettingValue = false end function m:SetVisible(R) m.Visible = R T.Visible = m.Visible if Blank then Blank.Visible = m.Visible end d:Resize() end function m:Remove() for R, R in q do R:Destroy() end v[n] = nil J:Destroy() table.clear(m) d:Resize() end _.InputBegan:Connect(function(R) if (R.UserInputType == Enum.UserInputType.MouseButton1 and not g:MouseIsOverOpenedFrame()) or R.UserInputType == Enum.UserInputType.Touch then m:SetValue(not m.Value) g:AttemptSave() end end) if g.FlagCopying then local R = g:AddContextMenu(T, _) R:AddOption("Copy Flag", function() pcall(setclipboard, m.Idx) task.wait() g:Notify("Copied flag to clipboard!", 2) R:Hide() end) end if m.Risky then g:RemoveFromRegistry(l) l.TextColor3 = g.RiskColor g:AddToRegistry(l, { TextColor3 = "RiskColor" }) end m:Display() table.insert(q, d:AddBlank(G.BlankSize or 7)) d:Resize() m.ColorPickerCount = 0 m.ToggleRegion = _ m.TextLabel = l m.Container = F setmetatable(m, Z) v[n] = m g:UpdateDependencyBoxes() end end local l = function(R) local T = R[15] local q = R[5] local g = R[9] local l = R[14] local m = R[13] local d = R[3] local Z = R[16] local F = R[0] local A = R[17] local _ = R[1] local n = R[2] local v = R[8] local J = R[11] local s = R[4] local G = R[6] local a = R[12] local H = R[7] local Y = R[10] return function() function s:UpdateColors() q.BackgroundColor3 = _.AccentColor q.BorderColor3 = _.AccentColorDark end function s:Display() local R = J.Suffix or "" if J.Compact then Y.Text = J.Text .. ": " .. s.Value .. R elseif J.HideMax then Y.Text = string.format("%s", s.Value .. R) else Y.Text = string.format("%s/%s", s.Value .. R, s.Max .. R) end local R = _:MapValue(s.Value, s.Min, s.Max, 0, 1) if d[3][d[2]] then d[3][d[2]]:Cancel() end d[3][d[2]] = A:Create( q, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Size = UDim2.new(R, 0, 1, 0) } ) d[3][d[2]]:Play() F.Visible = not (R == 1 or R == 0) end function s:OnChanged(R) s.Changed = R R(s.Value) end local function R(d) if s.Increment then return math.round(d / s.Increment) * s.Increment elseif s.Rounding == 0 then return math.floor(d) end return tonumber(string.format("%." .. s.Rounding .. "f", d)) end function s:GetValueFromXOffset(d) return R(_:MapValue(d, 0, s.MaxSize, s.Min, s.Max)) end function s:Remove() for R, R in Z do R:Destroy() end n[T] = nil s.HolderFrame:Destroy() table.clear(s) H:Resize() end function s:SetValue(R) local d = tonumber(R) if not d then return end d = math.clamp(d, s.Min, s.Max) s.Value = d s:Display() _:SafeCallback(s.Callback, s.Value) _:SafeCallback(s.Changed, s.Value) end function s:AddSlider(R, d) return G.AddSlider(H, R, d, s) end l.InputBegan:Connect(function(R) if R.UserInputType == Enum.UserInputType.MouseButton1 and not _:MouseIsOverOpenedFrame() then local R = v.X local d = q.Size.X.Offset local F = R - (q.AbsolutePosition.X + d) while a:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do local q = v.X local A = math.clamp(d + (q - R) + F, 0, s.MaxSize) local R = s:GetValueFromXOffset(A) local q = s.Value s.Value = R s:Display() if R ~= q then _:SafeCallback(s.Callback, s.Value) _:SafeCallback(s.Changed, s.Value) end m:Wait() end _:AttemptSave() end end) if _.FlagCopying then local R = _:AddContextMenu(l) R:AddOption("Copy Flag", function() pcall(setclipboard, s.Idx) task.wait() _:Notify("Copied flag to clipboard!", 2) R:Hide() end) end s:Display() if not g then table.insert(Z, H:AddBlank(J.BlankSize or 6)) H:Resize() end n[T] = s end end local j = function(R) local T = R[1] local q = R[10] local g = R[11] local l = R[7] local m = R[6] local d = R[5] local Z = R[2] local F = R[8] local A = R[13] local _ = R[12] local n = R[4] local v = R[0] local J = R[15] local s = R[14] local G = R[9] local a = R[3] return function() local function R() g.Position = UDim2.fromOffset(a.AbsolutePosition.X, a.AbsolutePosition.Y + a.Size.Y.Offset + 1) end local function H(Y) local N = Y or math.clamp(#Z.Values * 20, 0, T * 20) + 1 g.Size = UDim2.fromOffset(a.AbsoluteSize.X + 0.5, N) end R() H() a:GetPropertyChangedSignal("AbsolutePosition"):Connect(R) local R = v:Create( q[3][q[2]], { BackgroundColor3 = v.MainColor, BorderColor3 = v.OutlineColor, BorderMode = Enum.BorderMode.Inset, BorderSizePixel = 0, Size = UDim2.new(1, 0, 1, 0), ZIndex = 21, Parent = g, } ) v:AddToRegistry(R, { BackgroundColor3 = "MainColor", BorderColor3 = A[3][A[2]] }) local Y = v:Create( "ScrollingFrame", { BackgroundTransparency = 1, BorderSizePixel = 0, CanvasSize = UDim2.new(0, 0, 0, 0), Size = UDim2.new(1, 0, 1, 0), ZIndex = 21, Parent = R, TopImage = "rbxasset://textures/ui/Scroll/scroll-middle.png", BottomImage = "rbxasset://textures/ui/Scroll/scroll-middle.png", ScrollBarThickness = 3, ScrollBarImageColor3 = v.AccentColor, } ) v:AddToRegistry(Y, { ScrollBarImageColor3 = "AccentColor" }) v:Create( "UIListLayout", { Padding = UDim.new(0, 0), FillDirection = Enum.FillDirection.Vertical, SortOrder = Enum.SortOrder.LayoutOrder, Parent = Y, } ) function Z:Display() local R = Z.Values local N = "" if d.Multi then for U, U in next, R do if Z.Value[U] then N = N .. U .. ", " end end N = N:sub(1, #N - 2) else N = Z.Value or "" end s.Text = (N == "" and "..." or N) end function Z:GetActiveValues() if d.Multi then local R = {} for s, N in next, Z.Value do table.insert(R, s) end return R else return Z.Value and 1 or 0 end end function Z:BuildDropdownList() local R = Z.Values local s = {} for N, N in next, Y:GetChildren() do if not N:IsA("UIListLayout") then N:Destroy() end end local N = 0 for U, U in next, R do local R = {} N = N + 1 local i = v:Create( q[3][q[2]], { BackgroundColor3 = v.MainColor, BorderColor3 = v.OutlineColor, BorderMode = Enum.BorderMode.Middle, Size = UDim2.new(1, -1, 0, 20), ZIndex = 23, Active = true, Parent = Y, } ) v:AddToRegistry(i, { BackgroundColor3 = "MainColor", BorderColor3 = A[3][A[2]] }) local q = v:CreateLabel({ Active = false, Size = UDim2.new(1, -6, 1, 0), Position = UDim2.new(0, 6, 0, 0), TextSize = 14, Text = U, TextXAlignment = Enum.TextXAlignment.Left, ZIndex = 25, Parent = i, }) v:OnHighlight( i, i, { BorderColor3 = A[3][A[2]], ZIndex = 24 }, { BorderColor3 = A[3][A[2]], ZIndex = 23 } ) local A if d.Multi then A = Z.Value[U] else A = Z.Value == U end function R:UpdateButton() if d.Multi then A = Z.Value[U] else A = Z.Value == U end q.TextColor3 = A and v.AccentColor or v.FontColor v.RegistryMap[q].Properties.TextColor3 = A and "AccentColor" or "FontColor" end q.InputBegan:Connect(function(q) if q.UserInputType == Enum.UserInputType.MouseButton1 or q.UserInputType == Enum.UserInputType.Touch then local q = not A if Z:GetActiveValues() == 1 and not q and not d.AllowNull then else if d.Multi then A = q if A then Z.Value[U] = true else Z.Value[U] = nil end else A = q if A then Z.Value = U else Z.Value = nil end for q, q in next, s do q:UpdateButton() end end R:UpdateButton() Z:Display() v:UpdateDependencyBoxes() v:SafeCallback(Z.Callback, Z.Value) v:SafeCallback(Z.Changed, Z.Value) v:AttemptSave() end end end) R:UpdateButton() s[i] = R end Z:Display() Y.CanvasSize = UDim2.fromOffset(0, (N * 20) + 1) Y.Visible = false Y.Visible = true local R = math.clamp(N * 20, 0, T * 20) + 1 H(R) end function Z:SetValues(R) if R then Z.Values = R end Z:BuildDropdownList() end function Z:OpenDropdown() if v.IsMobile then v.CanDrag = false end g.Visible = true v.OpenedFrames[g] = true J.Rotation = 90 H() end function Z:CloseDropdown() if v.IsMobile then v.CanDrag = true end g.Visible = false v.OpenedFrames[g] = nil J.Rotation = 0 end function Z:OnChanged(R) Z.Changed = R R(Z.Value) end function Z:SetValue(R) if Z.Multi then local T = {} for q, A in next, R do if Z.Illegal or table.find(Z.Values, q) then T[q] = true end end Z.Value = T else if not R then Z.Value = nil elseif Z.Illegal or table.find(Z.Values, R) then Z.Value = R end end Z:BuildDropdownList() v:SafeCallback(Z.Callback, Z.Value) v:SafeCallback(Z.Changed, Z.Value) end function Z:Remove() for R, R in F do R:Destroy() end _[n] = nil a:Destroy() table.clear(Z) end a.InputBegan:Connect(function(R) if (R.UserInputType == Enum.UserInputType.MouseButton1 and not v:MouseIsOverOpenedFrame()) or R.UserInputType == Enum.UserInputType.Touch then if g.Visible then Z:CloseDropdown() else Z:OpenDropdown() end end end) G.InputBegan:Connect(function(R) if R.UserInputType == Enum.UserInputType.MouseButton1 or R.UserInputType == Enum.UserInputType.Touch then local R, T = g.AbsolutePosition, g.AbsoluteSize if m.X < R.X or m.X > R.X + T.X or m.Y < (R.Y - 20 - 1) or m.Y > R.Y + T.Y then Z:CloseDropdown() end end end) if v.FlagCopying then local R = v:AddContextMenu(a) R:AddOption("Copy Flag", function() pcall(setclipboard, Z.Idx) task.wait() v:Notify("Copied flag to clipboard!", 2) R:Hide() end) end Z:BuildDropdownList() Z:Display() local R = {} if typeof(d.Default) == "string" then local T = table.find(Z.Values, d.Default) if T then table.insert(R, T) end elseif typeof(d.Default) == "table" then for T, T in next, d.Default do local q = table.find(Z.Values, T) if q then table.insert(R, q) end end elseif typeof(d.Default) == "number" and Z.Values[d.Default] ~= nil then table.insert(R, d.Default) end if next(R) then for T = 1, #R do local q = R[T] if d.Multi then Z.Value[Z.Values[q]] = true else Z.Value = Z.Values[q] end if not d.Multi then break end end Z:BuildDropdownList() Z:Display() end table.insert(F, l:AddBlank(d.BlankSize or 5)) l:Resize() _[n] = Z end end local R = function(R) local T = R[17] local q = R[10] local g = R[13] local l = R[2] local m = R[6] local d = R[5] local Z = R[1] local F = R[23] local A = R[8] local _ = R[11] local n = R[16] local v = R[22] local J = R[7] local s = R[14] local G = R[9] local a = R[15] local H = R[18] local Y = R[0] local N = R[21] local U = R[20] local i = R[12] local L = R[19] local c = R[3] local y = R[4] return function() _[3][_[2]] = function() local R = H:GetPlayers() for _ = 1, #R do R[_] = R[_].Name end table.sort(R, function(_, H) return _ < H end) return R end N[3][N[2]] = function() local R = n:GetTeams() for _ = 1, #R do R[_] = R[_].Name end table.sort(R, function(_, n) return _ < n end) return R end function Y:SafeCallback(R, ...) if not R then return end if not Y.NotifyOnError then return R(...) end local _, n = pcall(R, ...) if not _ then local R, R = n:find(":%d+: ") if not R then return Y:Notify(n) end return Y:Notify(n:sub(R + 1), 3) end end function Y:AttemptSave() if Y.SaveManager then Y.SaveManager:Save() end end function Y:Create(R, _) local n = R if typeof(R) == "string" then n = Instance.new(R) end for R, H in next, _ do local _, N = pcall(function() n[R] = H end) if not _ then y(N) end end return n end function Y:EnableFlagCopying(R) Y.FlagCopying = R end function Y:ApplyTextStroke(R) R.TextStrokeTransparency = 1 return Y:Create( "UIStroke", { Color = Color3.new(0, 0, 0), Thickness = 1, LineJoinMode = Enum.LineJoinMode.Miter, Parent = R } ) end function Y:CreateLabel(R, _) local n = Y:Create( "TextLabel", { BackgroundTransparency = 1, Font = Y.Font, TextColor3 = Y.FontColor, TextSize = 16, TextStrokeTransparency = 0 } ) Y:ApplyTextStroke(n) Y:AddToRegistry(n, { TextColor3 = "FontColor" }, _) return Y:Create(n, R) end function Y:MakeDraggable(R, _, n) R.Active = true R.InputBegan:Connect(function(H) if H.UserInputType == Enum.UserInputType.MouseButton1 or H.UserInputType == Enum.UserInputType.Touch then if n == true and Y.CantDragForced == true then return end local n = Vector2.new(m.X - R.AbsolutePosition.X, m.Y - R.AbsolutePosition.Y) if n.Y > (_ or 40) then return end while T:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do R.Position = UDim2.new( 0, m.X - n.X + (R.Size.X.Offset * R.AnchorPoint.X), 0, m.Y - n.Y + (R.Size.Y.Offset * R.AnchorPoint.Y) ) G:Wait() end end end) end local R = Instance.new("ScreenGui", gethui()) function Y:MakeDraggableOutline(_, n) _.Active = true _.InputBegan:Connect(function(H) if H.UserInputType == Enum.UserInputType.MouseButton1 then local H = Vector2.new(m.X - _.AbsolutePosition.X, m.Y - _.AbsolutePosition.Y) if H.Y > (n or 40) then return end local n = Y:Create( l[3][l[2]], { Parent = R, AnchorPoint = _.AnchorPoint, BackgroundTransparency = 1, Size = _.Size, Position = _.Position, } ) local N = Y:Create("UIStroke", { Parent = n, Color = Y.AccentColor or Color3.new(0, 0, 0) }) while T:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do n.Position = UDim2.new( 0, m.X - H.X + (_.Size.X.Offset * _.AnchorPoint.X), 0, m.Y - H.Y + (_.Size.Y.Offset * _.AnchorPoint.Y) ) N.Color = Y.AccentColor or Color3.new(0, 0, 0) G:Wait() end _.Position = UDim2.new( 0, m.X - H.X + (_.Size.X.Offset * _.AnchorPoint.X), 0, m.Y - H.Y + (_.Size.Y.Offset * _.AnchorPoint.Y) ) n:Destroy() end end) end function Y:MakeDraggableUsingParent(_, n, H, N) _.Active = true if Y.IsMobile == false then _.InputBegan:Connect(function(_) if _.UserInputType == Enum.UserInputType.MouseButton1 then if N == true and Y.CantDragForced == true then return end local _ = Vector2.new(m.X - n.AbsolutePosition.X, m.Y - n.AbsolutePosition.Y) if _.Y > (H or 40) then return end while T:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do n.Position = UDim2.new( 0, m.X - _.X + (n.Size.X.Offset * n.AnchorPoint.X), 0, m.Y - _.Y + (n.Size.Y.Offset * n.AnchorPoint.Y) ) G:Wait() end end end) else Y:MakeDraggable(n, H, N) end end function Y:MakeResizable(_, n) if Y.IsMobile then return end _.Active = true local G = 25 local H = 0.5 local N = Y:Create( l[3][l[2]], { SizeConstraint = Enum.SizeConstraint.RelativeXX, BackgroundColor3 = Color3.new(0, 0, 0), BackgroundTransparency = 1, BorderSizePixel = 0, Size = UDim2.new(0, 30, 0, 30), Position = UDim2.new(1, -30, 1, -30), Visible = true, ClipsDescendants = true, ZIndex = 1, Parent = _, } ) local y = Y:Create( "ImageButton", { BackgroundColor3 = Y.AccentColor, BackgroundTransparency = 1, BorderSizePixel = 0, Size = UDim2.new(2, 0, 2, 0), Position = UDim2.new(1, -30, 1, -30), ZIndex = 2, Parent = N, } ) local O = Y:Create("UICorner", { CornerRadius = UDim.new(0.5, 0), Parent = y }) Y:AddToRegistry(y, { BackgroundColor3 = "AccentColor" }) N.Size = UDim2.fromOffset(G, G) N.Position = UDim2.new(1, -G, 1, -G) n = n or Y.MinSize local G N.Parent = _ local t, B = nil, Y:Create("UIStroke", { Color = Y.AccentColor or Color3.new(0, 0, 0) }) B.Color = Y.AccentColor or Color3.new(0, 0, 0) local function f(Q) y.Position = UDim2.new() y.Size = UDim2.new(2, 0, 2, 0) y.Parent = N y.BackgroundTransparency = Q O.Parent = y G = nil if t then B.Parent = nil t:Destroy() _.Size = t.Size end end y.MouseButton1Down:Connect(function() if not G then G = Vector2.new( m.X - (_.AbsolutePosition.X + _.AbsoluteSize.X), m.Y - (_.AbsolutePosition.Y + _.AbsoluteSize.Y) ) t = Y:Create( l[3][l[2]], { Parent = R, AnchorPoint = _.AnchorPoint, BackgroundTransparency = 1, Size = _.Size, Position = _.Position, } ) t.Size = _.Size B.Color = Y.AccentColor or Color3.new(0, 0, 0) B.Parent = t y.BackgroundTransparency = 1 y.Size = UDim2.fromOffset(Y.ScreenGui.AbsoluteSize.X, Y.ScreenGui.AbsoluteSize.Y) y.Position = UDim2.new() O.Parent = nil y.Parent = Y.ScreenGui end end) y.MouseMoved:Connect(function() if G then local R = Vector2.new(m.X - G.X, m.Y - G.Y) local G = Vector2.new( math.clamp(R.X - _.AbsolutePosition.X, n.X, math.huge), math.clamp(R.Y - _.AbsolutePosition.Y, n.Y, math.huge) ) t.Size = UDim2.fromOffset(G.X, G.Y) end end) y.MouseEnter:Connect(function() f(H) end) y.MouseLeave:Connect(function() f(1) end) y.MouseButton1Up:Connect(function() f(H) end) end function Y:AddToolTip(R, _) local n, G = Y:GetTextBounds(R, Y.Font, 14) local H = Y:Create( l[3][l[2]], { BackgroundColor3 = Y.MainColor, BorderColor3 = Y.OutlineColor, Size = UDim2.fromOffset(n + 5, G + 4), ZIndex = 100, Parent = Y.ScreenGui, Visible = false, } ) local N = Y:CreateLabel({ Position = UDim2.fromOffset(3, 1), Size = UDim2.fromOffset(n, G), TextSize = 14, Text = R, TextColor3 = Y.FontColor, TextXAlignment = Enum.TextXAlignment.Left, ZIndex = H.ZIndex + 1, Parent = H, }) Y:AddToRegistry(H, { BackgroundColor3 = "MainColor", BorderColor3 = A[3][A[2]] }) Y:AddToRegistry(N, { TextColor3 = "FontColor" }) local R = false _.MouseEnter:Connect(function() if Y:MouseIsOverOpenedFrame() then return end R = true H.Position = UDim2.fromOffset(m.X + 15, m.Y + 12) H.Visible = true while R do U.Heartbeat:Wait() H.Position = UDim2.fromOffset(m.X + 15, m.Y + 12) end end) _.MouseLeave:Connect(function() R = false H.Visible = false end) if i[3][i[2]] then i[3][i[2]]:GetPropertyChangedSignal("Visible"):Connect(function() if i[3][i[2]].Visible == false then R = false H.Visible = false end end) end end function Y:OnHighlight(R, _, n, G, H) local function N() local U = Y.RegistryMap[_] for i, y in next, G do _[i] = Y[y] or y if U and U.Properties[i] then U.Properties[i] = y end end end local function G() if H and not H() then N() return end local H = Y.RegistryMap[_] for U, i in next, n do _[U] = Y[i] or i if H and H.Properties[U] then H.Properties[U] = i end end end R.MouseEnter:Connect(function() G() end) R.MouseMoved:Connect(function() G() end) R.MouseLeave:Connect(function() N() end) end function Y:MouseIsOverOpenedFrame() for R, _ in next, Y.OpenedFrames do local _, n = R.AbsolutePosition, R.AbsoluteSize if m.X >= _.X and m.X <= _.X + n.X and m.Y >= _.Y and m.Y <= _.Y + n.Y then return true end end end function Y:IsMouseOverFrame(R) local _, n = R.AbsolutePosition, R.AbsoluteSize if m.X >= _.X and m.X <= _.X + n.X and m.Y >= _.Y and m.Y <= _.Y + n.Y then return true end end function Y:UpdateDependencyBoxes() for R, R in next, Y.DependencyBoxes do R:Update() end end function Y:MapValue(R, m, _, n, G) return (1 - ((R - m) / (_ - m))) * n + ((R - m) / (_ - m)) * G end function Y:GetTextBounds(R, m, _, n) local G = v:GetTextSize(R, _, m, n or Vector2.new(1920, 1080)) return G.X, G.Y end function Y:GetDarkerColor(R) local m, _, n = Color3.toHSV(R) return Color3.fromHSV(m, _, n / 1.5) end Y.AccentColorDark = Y:GetDarkerColor(Y.AccentColor) function Y:AddToRegistry(R, m, _) local n = #Y.Registry + 1 local v = { Instance = R, Properties = m, Idx = n } table.insert(Y.Registry, v) Y.RegistryMap[R] = v if _ then table.insert(Y.HudRegistry, v) end end function Y:RemoveFromRegistry(R) local m = Y.RegistryMap[R] if m then for _ = #Y.Registry, 1, -1 do if Y.Registry[_] == m then table.remove(Y.Registry, _) end end for _ = #Y.HudRegistry, 1, -1 do if Y.HudRegistry[_] == m then table.remove(Y.HudRegistry, _) end end Y.RegistryMap[R] = nil end end function Y:UpdateColorsUsingRegistry() for R, R in next, Y.Registry do for m, _ in next, R.Properties do if typeof(_) == "string" then R.Instance[m] = Y[_] elseif typeof(_) == "function" then R.Instance[m] = _() end end end end function Y:GiveSignal(R) table.insert(Y.Signals, R) end function Y:Unload() for R = #Y.Signals, 1, -1 do local m = table.remove(Y.Signals, R) m:Disconnect() end if Y.OnUnload then Y.OnUnload() end F:UnbindAction("Freeze") q:Destroy() J:Destroy() g:Destroy() d:Destroy() end function Y:CreateEvent(R) self.Events[R] = Instance.new(a[3][a[2]]) end function Y:FireEvent(R, ...) self.Events[R]:Fire(...) end function Y:OnEvent(R) return self.Events[R].Event end function Y:OnUnload(R) Y.OnUnload = R end local R = {} function Y:BindToInput(q, g) R[q] = R[q] or {} table.insert(R[q], g) end Y:GiveSignal(T.InputBegan:Connect(function(T, ...) if not c[3][c[2]] then return end local q = R[T.KeyCode] or R[T.UserInputType] if q then for R, R in pairs(q) do task.spawn(R, T, ...) end end end)) function Y:AddContextMenu(R, T) local q = { Visible = false } q.Options = {} q.Container = Y:Create( l[3][l[2]], { BorderColor3 = Color3.new(), ZIndex = 14, Active = true, Visible = false, Parent = d } ) q.Inner = Y:Create( l[3][l[2]], { BackgroundColor3 = Y.BackgroundColor, BorderColor3 = Y.OutlineColor, BorderMode = Enum.BorderMode.Inset, Size = UDim2.fromScale(1, 1), ZIndex = 15, Parent = q.Container, } ) Y:Create( "UIListLayout", { Name = "Layout", HorizontalAlignment = Enum.HorizontalAlignment.Left, FillDirection = Enum.FillDirection.Vertical, SortOrder = Enum.SortOrder.LayoutOrder, Parent = q.Inner, } ) Y:Create("UIPadding", { Name = "Padding", PaddingLeft = UDim.new(0, 0), Parent = q.Inner }) local function g() q.Container.Position = UDim2.fromOffset((R.AbsolutePosition.X + R.AbsoluteSize.X) + 4, R.AbsolutePosition.Y + 1) end local function m() local F = 60 for _, _ in next, q.Inner:GetChildren() do if _:IsA("TextLabel") then F = math.max(F, _.TextBounds.X) end end q.Container.Size = UDim2.fromOffset(F + 8, q.Inner.Layout.AbsoluteContentSize.Y + 4) end local F = false (T or R).InputBegan:Connect(function(T) if T.UserInputType == Enum.UserInputType.MouseButton1 and not Y:MouseIsOverOpenedFrame() then return q:Hide() elseif T.UserInputType == Enum.UserInputType.MouseButton2 and not Y:MouseIsOverOpenedFrame() then return q:Show() end end) Y:BindToInput(Enum.UserInputType.MouseButton1, function() if F and not Y:IsMouseOverFrame(q.Container) then q:Hide() end end) Y:BindToInput(Enum.UserInputType.MouseButton2, function() if F and not Y:IsMouseOverFrame(q.Container) and not Y:IsMouseOverFrame(R) then q:Hide() end end) task.spawn(g) task.spawn(m) Y:AddToRegistry(q.Inner, { BackgroundColor3 = "BackgroundColor", BorderColor3 = A[3][A[2]] }) function q:Show() g() m() F = true for R, T in next, Y.OpenedFrames do if R.Name == "Color" then R.Visible = false Y.OpenedFrames[R] = nil end end self.Container.Visible = true Y.OpenedFrames[q.Container] = true end function q:Hide() F = false self.Container.Visible = false task.wait() Y.OpenedFrames[q.Container] = nil end function q:AddOption(R, T) if type(T) ~= "function" then T = function() end end local g = Y:CreateLabel({ Active = false, Size = UDim2.new(1, 0, 0, 15), TextSize = 13, Text = R, ZIndex = 16, Parent = self.Inner, TextXAlignment = Enum.TextXAlignment.Center, }) Y:OnHighlight(g, g, { TextColor3 = "AccentColor" }, { TextColor3 = "FontColor" }) g.InputBegan:Connect(function(R) if R.UserInputType ~= Enum.UserInputType.MouseButton1 then return end T() end) return g end return q end Y:GiveSignal(d.DescendantRemoving:Connect(function(R) if c[3][c[2]] and Y.RegistryMap[R] then Y:RemoveFromRegistry(R) end end)) function Y:SetWatermarkVisibility(R) Y.Watermark.Visible = R end function Y:SetWatermark(R) local T, q = Y:GetTextBounds(R, Y.Font, 14) Y.Watermark.Size = UDim2.new(0, T + 15, 0, (q * 1.5) + 3) Y.WatermarkText.Text = R end local R = { BarPosition = { ["Top"] = UDim2.new(0, -1, 0, 0), ["Left"] = UDim2.new(0, -1, 0, -1), ["Right"] = UDim2.new(1, -2, 0, -1), ["Bottom"] = UDim2.new(0, -1, 1, -2), }, BarSize = { ["Top"] = UDim2.new(1, 3, 0, 2), ["Left"] = UDim2.new(0, 3, 1, 2), ["Right"] = UDim2.new(0, 3, 1, 2), ["Bottom"] = UDim2.new(1, 3, 0, 2), }, } local T = Y.NotificationStyle local q, g = string.char, math.max local m = function() local d = T.OverrideColor if d then return d() end return Y.MainColor, Y.AccentColor, Y.OutlineColor, Y.FontColor end local d do local F = Y:Create( l[3][l[2]], { BorderColor3 = Color3.new(0, 0, 0), Position = UDim2.new(0, 100, 0, 10), ClipsDescendants = true, ZIndex = 100 } ) local _ = Y:Create( l[3][l[2]], { BorderMode = Enum.BorderMode.Inset, Size = UDim2.new(1, 0, 1, 0), ZIndex = 101, Parent = F, Name = "inner" } ) local n = Y:Create( l[3][l[2]], { BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, Position = UDim2.new(0, 1, 0, 1), Size = UDim2.new(1, -2, 1, -2), ZIndex = 102, Parent = _, Name = "inner", } ) local _ = Y:Create("UIGradient", { Rotation = -90, Parent = n }) local _ = Y:CreateLabel({ Position = UDim2.new(0, 4, 0, 0), Size = UDim2.new(1, -4, 1, 0), TextXAlignment = Enum.TextXAlignment.Left, TextSize = 14, ZIndex = 103, Name = "label", Parent = n, }) local _ = Y:Create(l[3][l[2]], { BorderSizePixel = 0, ZIndex = 104, Name = "bar", Parent = F }) d = F end function Y:CreatePopout(F) if type(F.Title) ~= "string" then F.Title = "No title" end if typeof(F.Position) ~= "UDim2" then F.Position = UDim2.fromOffset(175, 50) end local _ = Instance.new("ScreenGui") s(_) _.ZIndexBehavior = Enum.ZIndexBehavior.Global _.Parent = Z _.DisplayOrder = (F.ZIndex or 0) + 19 if F.Center then F.AnchorPoint = Vector2.new(0.5, 0.5) F.Position = UDim2.fromScale(0.5, 0.5) end local Z = {} local n = Y:Create( l[3][l[2]], { AnchorPoint = F.AnchorPoint, BackgroundColor3 = Color3.new(0, 0, 0), BorderSizePixel = 0, Position = F.Position, Size = UDim2.fromOffset(F.Size.X, F.Size.Y), Visible = F.AutoShow, ZIndex = 1, Parent = _, } ) Y:MakeDraggableOutline(n, 25) local _ = Y:Create( l[3][l[2]], { BackgroundColor3 = Y.MainColor, BorderColor3 = Y.OutlineColor, BorderMode = Enum.BorderMode.Inset, Position = UDim2.new(0, 1, 0, 0), Size = UDim2.new(1, -2, 1, -2), ZIndex = 1, Parent = n, } ) Y:AddToRegistry(_, { BackgroundColor3 = "MainColor", BorderColor3 = A[3][A[2]] }) local v = Y:CreateLabel({ Position = UDim2.new(0, 0, 0, 0), Size = UDim2.new(1, 0, 0, 25), Text = F.Title or "", TextXAlignment = Enum.TextXAlignment.Center, ZIndex = 1, Font = Y.Font, Parent = _, }) local v = Y:Create( "TextLabel", { BackgroundTransparency = 1, Font = Y.Font, TextColor3 = Y.AccentColor, TextSize = 16, TextStrokeTransparency = 0, Position = UDim2.new(0, -8, 0, 0), Size = UDim2.new(1, 0, 0, 25), Text = F.Version or "", RichText = true, TextXAlignment = Enum.TextXAlignment.Right, ZIndex = 1, Parent = _, } ) Y:AddToRegistry(v, { TextColor3 = "AccentColor" }) local v = Y:Create( l[3][l[2]], { BackgroundColor3 = Y.BackgroundColor, BorderColor3 = Y.OutlineColor, Position = UDim2.new(0, 8, 0, 25), Size = UDim2.new(1, -16, 1, -33), ZIndex = 1, Parent = _, } ) Y:AddToRegistry(v, { BackgroundColor3 = "BackgroundColor", BorderColor3 = A[3][A[2]] }) local _ = Y:Create( l[3][l[2]], { BackgroundColor3 = Y.BackgroundColor, BorderColor3 = Color3.new(0, 0, 0), BorderMode = Enum.BorderMode.Inset, Position = UDim2.new(0, 0, 0, 0), Size = UDim2.new(1, 0, 1, 0), ZIndex = 1, Parent = v, } ) Y:AddToRegistry(_, { BackgroundColor3 = "BackgroundColor" }) local v = Y:Create( l[3][l[2]], { BackgroundColor3 = Y.BackgroundColor, BorderColor3 = Y.OutlineColor, Position = UDim2.new(0, 8, 0, 8), Size = UDim2.new(1, -16, 1, -16), ZIndex = 2, Visible = true, Parent = _, } ) local _ = Y:Create( l[3][l[2]], { BackgroundTransparency = 1, Parent = v, Size = UDim2.fromScale(1, 1), Position = UDim2.fromOffset( 2, 2 ) } ) Y:Create( "UIListLayout", { Padding = UDim.new(0, 0), FillDirection = Enum.FillDirection.Vertical, SortOrder = Enum.SortOrder.LayoutOrder, HorizontalAlignment = Enum.HorizontalAlignment.Left, Parent = _, } ) Y:AddToRegistry(v, { BackgroundColor3 = "BackgroundColor", BorderColor3 = A[3][A[2]] }) Y:AddToRegistry(_, { BackgroundColor3 = "MainColor", BorderColor3 = A[3][A[2]] }) Z.Holder = n Z.Container = _ function Z:Resize() local l = 0 for A, A in next, _:GetChildren() do if (not A:IsA("UIListLayout")) and A.Visible then l = l + A.AbsoluteSize.Y end end n.Size = UDim2.fromOffset(F.Size.X, 16 + l + (_.AbsolutePosition.Y - n.AbsolutePosition.Y)) end function Z:Toggle() n.Visible = not n.Visible end function Z:GetSize() return _.AbsoluteSize end _:GetPropertyChangedSignal("AbsoluteSize"):Connect(function() task.wait() Z:Resize() end) Z:Resize() setmetatable(Z, L) return Z end local l, Z, F = UDim2.new, ColorSequence.new, ColorSequenceKeypoint.new function Y:Notify(A, _) local n, v = Y:GetTextBounds(A, Y.Font, 14) v = v + 7 local J = T.Transparency local s, G, a, H = m() local m = d:Clone() m.BackgroundColor3 = s m.Name = q(256 - g(1, #A % 256)) m.Size = l(0, 0, 0, v) m.Transparency = J local q = m.inner q.BackgroundColor3 = s q.BorderColor3 = a q.Transparency = J local g = q.inner g.Transparency = J local q = g.UIGradient q.Color = Z({ F(0, Y:GetDarkerColor(s)), F(1, s) }) local q = g.label q.Text = A q.TextColor3 = H local q = m.bar q.BackgroundColor3 = G q.Size = R.BarSize[T.BarSide] or l(0, 3, 1, 2) q.Position = R.BarPosition[T.BarSide] m.Parent = Y.NotificationArea pcall(m.TweenSize, m, UDim2.new(0, n + 8 + 4, 0, v), "Out", "Quad", 0.4, true) task.spawn(function() wait(_ or 5) pcall(m.TweenSize, m, UDim2.new(0, 0, 0, v), "Out", "Quad", 0.4, true) wait(0.4) m:Destroy() end) end function Y:IsVisible() return c[3][c[2]] end Y:CreateEvent("VisibilityChanged") end end local F = function(R) local T = R[0] local q = R[5] local g = R[15] local l = R[17] local m = R[8] local d = R[6] local Z = R[14] local F = R[16] local A = R[4] local _ = R[13] local n = R[10] local v = R[11] local J = R[3] local s = R[7] local G = R[1] local a = R[2] local H = R[9] local Y = R[12] return function(R, N, U) local i, L = n("Line"), n("Line") local n = a(1, H(A.Value)) i.Thickness, L.Thickness = n + 2, n i.Color = Color3.new() local A = Instance.new("UIGradient", L._frame) A.Color = U A.Rotation = 0 local n = Instance.new("UIGradient", i._frame) n.Color = F n.Rotation = 0 n.Transparency, A.Transparency = T[3][T[2]], T[3][T[2]] L.Color = Color3.new(1, 1, 1) L.ZIndex = 2 local T, F = nil, 0 local a, H = J.Value, _.Value local _ = v.Value local v = Y.Value local J = N local Y = s.CFrame.Position T = q.RenderStepped:Connect(function(q) F = F + q if (F > (a + H)) then i:Remove() L:Remove() return T:Disconnect() end if (_ ~= 0) then local T = Z(l(F / _, 1)) J = R:Lerp(N, T) end local T, q = G[3][G[2]](R) if not q then i.Visible, L.Visible = false, false return end local R, q = G[3][G[2]](J) if not q then i.Visible, L.Visible = false, false return end if (F > a) then local q = (F - a) / H local l = {} for Z = 0, 9 do local F = Z / 9 d(l, g(F, q + ((1 - F) / 2))) end l = m(l) A.Transparency = l if v then n.Transparency = l end end if v then local q = (R - T).Unit i.To, i.From = R + q, T - q i.Visible = true else i.Visible = false end L.To, L.From = R, T L.Visible = true end) end end local f = function(R) local T = R[11] local q = R[3] local g = R[15] local l = R[8] local m = R[7] local d = R[5] local Z = R[10] local F = R[12] local A = R[1] local _ = R[13] local n = R[2] local v = R[0] local J = R[14] local s = R[6] local G = R[9] local a = R[4] return function() if q.IsMobile then local R = { ["Left"] = tick(), ["Right"] = tick() } A:GetPropertyChangedSignal("CanvasPosition"):Connect(function() q.CanDrag = false local H = tick() R.Left = H task.wait(0.15) if R.Left == H then q.CanDrag = true end end) d:GetPropertyChangedSignal("CanvasPosition"):Connect(function() q.CanDrag = false local H = tick() R.Right = H task.wait(0.15) if R.Right == H then q.CanDrag = true end end) end for R, R in next, { A, d } do R:WaitForChild("UIListLayout"):GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() R.CanvasSize = UDim2.fromOffset(0, R.UIListLayout.AbsoluteContentSize.Y) end) end function v:Resize() if a[3][a[2]].Visible == true then local R = 10 for H, H in next, g[3][g[2]]:GetChildren() do if (not H:IsA("UIListLayout")) and H.Visible then R = R + H.Size.Y.Offset end end a[3][a[2]].Size = UDim2.new(1, -10, 0, R) R = R + 10 A.Position = UDim2.new(0, 7, 0, 7 + R) A.Size = UDim2.new(0.5, -10, 1, -14 - R) d.Position = UDim2.new(0.5, 5, 0, 7 + R) d.Size = UDim2.new(0.5, -10, 1, -14 - R) else A.Position = UDim2.new(0, 7, 0, 7) A.Size = UDim2.new(0.5, -10, 1, -14) d.Position = UDim2.new(0.5, 5, 0, 7) d.Size = UDim2.new(0.5, -10, 1, -14) end end function v:UpdateWarningBox(R) if typeof(R.Visible) == "boolean" then a[3][a[2]].Visible = R.Visible v:Resize() end if typeof(R.Title) == "string" then J[3][J[2]].Text = R.Title end if typeof(R.Text) == "string" then s[3][s[2]].Text = R.Text local g = select( 2, q:GetTextBounds(R.Text, q.Font, 14, Vector2.new(s[3][s[2]].AbsoluteSize.X, math.huge)) ) s[3][s[2]].Size = UDim2.new(1, -4, 0, g) v:Resize() end end function v:ShowTab() q.ActiveTab = Z for R, R in next, n.Tabs do R:HideTab() end q.RegistryMap[m].Properties.BackgroundColor3 = "BackgroundColor" m.BackgroundColor3 = q.MainColor l.Visible = true G.Color = Color3.fromRGB(0, 0, 0) F.TextColor3 = q.FontColor _.Visible = true v:Resize() end function v:HideTab() m.BackgroundColor3 = q.BackgroundColor q.RegistryMap[m].Properties.BackgroundColor3 = "MainColor" G.Color = Color3.fromRGB(25, 25, 25) F.TextColor3 = q:GetDarkerColor(q.FontColor) _.Visible = false l.Visible = false end function v:SetLayoutOrder(R) m.LayoutOrder = R T:ApplyLayout() end function v:GetSides() return { ["Left"] = A, ["Right"] = d } end function v:AddLeftGroupbox(R) return self:AddGroupbox({ Side = 1, Name = R }) end function v:AddRightGroupbox(R) return self:AddGroupbox({ Side = 2, Name = R }) end function v:AddLeftTabbox(R) return v:AddTabbox({ Name = R, Side = 1 }) end function v:AddRightTabbox(R) return v:AddTabbox({ Name = R, Side = 2 }) end function v:Remove() table.clear(v) l:Destroy() m:Destroy() n.Tabs[Z] = nil end m.InputBegan:Connect(function(R) if R.UserInputType == Enum.UserInputType.MouseButton1 or R.UserInputType == Enum.UserInputType.Touch then v:ShowTab() end end) a[3][a[2]]:GetPropertyChangedSignal("Visible"):Connect(function() v:Resize() end) q.TotalTabs = q.TotalTabs + 1 if q.TotalTabs == 1 then v:ShowTab() end n.Tabs[Z] = v end end local k = function(R) local T = R[0] local q = R[1] local g = R[2] local l = R[3] return function() local R = cloneref or function(m) return m end local m = R(game:GetService("HttpService")) local R, d, Z = isfolder, isfile, listfiles do T.Folder = "" T.Ignore = {} T.Parser = { Toggle = { Save = function(F, A) return { type = "Toggle", idx = F, value = A.Value } end, Load = function(F, A) if g[F] then g[F]:SetValue(A.value) end end, }, Slider = { Save = function(F, A) return { type = "Slider", idx = F, value = tostring(A.Value) } end, Load = function(F, A) if q[F] then q[F]:SetValue(A.value) end end, }, Dropdown = { Save = function(F, A) return { type = "Dropdown", idx = F, value = A.Value, mutli = A.Multi } end, Load = function(F, A) if q[F] then q[F]:SetValue(A.value) end end, }, ColorPicker = { Save = function(F, A) return { type = "ColorPicker", idx = F, value = A.Value:ToHex(), transparency = A.Transparency } end, Load = function(F, A) if q[F] then q[F]:SetValueRGB(Color3.fromHex(A.value), A.transparency) end end, }, KeyPicker = { Save = function(F, A) return { type = "KeyPicker", idx = F, mode = A.Mode, key = A.Value } end, Load = function(F, A) if q[F] then q[F]:SetValue({ A.key, A.mode }) end end, }, Input = { Save = function(F, A) return { type = "Input", idx = F, text = A.Value } end, Load = function(F, A) if q[F] and type(A.text) == "string" then q[F]:SetValue(A.text) end end, }, } function T:BuildFolderTree() local F = { self.Folder, self.Folder .. "/settings", self.Folder .. "/themes", self.Folder .. "/configs" } for A = 1, #F do local _ = F[A] if not R(_) then makefolder(_) end end end function T:CheckFolderTree() if not R(self.Folder) then T:BuildFolderTree() task.wait() end end function T:SetIgnoreIndexes(R) for F, F in next, R do self.Ignore[F] = true end end function T:SetFolder(R) self.Folder = R self:BuildFolderTree() end function T:Save(R) if not R then return false, "no config file is selected" end T:CheckFolderTree() local F = self.Folder .. "/settings/" .. R .. ".json" local R = { objects = {} } for A, _ in next, g do if self.Ignore[A] then continue end table.insert(R.objects, self.Parser[_.Type].Save(A, _)) end for g, A in next, q do if not self.Parser[A.Type] then continue end if self.Ignore[g] then continue end table.insert(R.objects, self.Parser[A.Type].Save(g, A)) end local q, g = pcall(m.JSONEncode, m, R) if not q then return false, "failed to encode data" end writefile(F, g) return true end function T:Load(R) if not R then return false, "no config file is selected" end if (type(R) == "table") then for q, q in next, R.objects do if self.Parser[q.type] then task.spawn(function() self.Parser[q.type].Load(q.idx, q) end) end end return true end T:CheckFolderTree() local q = self.Folder .. "/settings/" .. R .. ".json" if not d(q) then return false, "invalid file" end local R, g = pcall(m.JSONDecode, m, readfile(q)) if not R then return false, "decode error" end for R, R in next, g.objects do if self.Parser[R.type] then task.spawn(function() self.Parser[R.type].Load(R.idx, R) end) end end return true end function T:Delete(R) if not R then return false, "no config file is selected" end local q = self.Folder .. "/settings/" .. R .. ".json" if not d(q) then return false, "invalid file" end local R, g = pcall(delfile, q) if not R then return false, "delete file error" end return true end function T:IgnoreThemeSettings() self:SetIgnoreIndexes({ "ThemeManager_ThemeList", "ThemeManager_CustomThemeList", "ThemeManager_CustomThemeName", "VideoLink", "Brightness", "Contrast", "Saturation", "Brightness", "BlurSize", "FontColor", "RiskColor", "MainColor", "AccentColor", "BackgroundColor", l[3][l[2]], "SwordColor", "ItemType", "BackTransparency", "BackColor", "SwordTransparency", "SwordReflectance", "SwordMaterial", "SwordSpeed", }) end function T:RefreshConfigList() local R = Z(self.Folder .. "/settings") local q = {} for g = 1, #R do local l = R[g] if l:sub(-5) == ".json" then local R = l:find(".json", 1, true) local g = R local m = l:sub(R, R) while m ~= "/" and m ~= "\\" and m ~= "" do R = R - 1 m = l:sub(R, R) end if m == "/" or m == "\\" then table.insert(q, l:sub(R + 1, g - 1)) end end end return q end function T:SetLibrary(R) self.Library = R end function T:LoadAutoloadConfig() T:CheckFolderTree() if d(self.Folder .. "/settings/autoload.txt") then local R = readfile(self.Folder .. "/settings/autoload.txt") local q, g = self:Load(R) if not q then return self.Library:Notify("Failed to load autoload config: " .. g) end if not SILENT then self.Library:Notify(string.format("Auto loaded config %q", R)) end end end end getgenv().SaveManager = T end end local n = function(R) local T = R[0] local q = R[1] local g = R[2] return function(R, l, l, l) local l = T:Clone() for T, T in l:GetDescendants() do if (T.Name == "MainEmitter") then T.Color = q[3][q[2]] end if (T.ClassName == "ParticleEmitter") then T:Emit(5) end end l.Parent = workspace l.Position = R.Position if g[3][g[2]] then l.Anchored = false local T = Instance.new("WeldConstraint", l) T.Part0 = R T.Part1 = l end task.delay(1, l.Destroy, l) end end local SILENT = false local function initialize(Library) if not Library then return end -- Fix: Pre-create the missing tables so lines 5052 and 5068 don't crash if not State.drawings then State.drawings = { silent = {}, aimbot = {}, triggerbot = {}, esp = {} } end local Window = Library:CreateWindow("Unnamed Enhancements") local CombatTab = Window:AddTab("Combat") local VisualsTab = Window:AddTab("Visuals") local WorldTab = Window:AddTab("World") local MiscTab = Window:AddTab("Misc") local SettingsTab = Window:AddTab("Settings") local TargetingGroupbox = CombatTab:AddLeftGroupbox("Targeting") TargetingGroupbox:AddToggle("aimbot_toggle", { Text = "enabled", Default = false }) :AddKeyPicker("aimbot_keybind", { Default = "MB2", Mode = "Hold", Text = "aimbot" }) TargetingGroupbox:AddToggle("targeting_visibleonly", { Text = "visible only", Default = true }) TargetingGroupbox:AddToggle("exploits_no_spread", { Text = "no spread", Default = true }) TargetingGroupbox:AddToggle("exploits_full_auto", { Text = "full auto", Default = false }) TargetingGroupbox:AddToggle("aimbot_fov_outline", { Text = "show fov", Default = false }) :AddColorPicker("aimbot_outline_color1", { Default = Color3.new(1, 1, 1) }) TargetingGroupbox:AddToggle("aimbot_fov_moving", { Text = "fov rotation", Default = false }) TargetingGroupbox:AddSlider("aimbot_fov_rotation_speed", { Text = "rotation speed", Min = 0, Max = 5, Default = 1, Rounding = 2 }) TargetingGroupbox:AddSlider("silent_radius", { Text = "radius", Min = 0, Max = 500, Default = 100, Suffix = "px", Rounding = 0 }) TargetingGroupbox:AddSlider("silent_hitchance", { Text = "hit chance", Min = 0, Max = 100, Default = 100, Suffix = "%", Rounding = 0 }) TargetingGroupbox:AddToggle("silent_visualize", { Text = "visualize", Default = false }) :AddColorPicker("silent_fill_color1", { Default = Color3.new(1, 1, 1) }) :AddColorPicker("silent_fill_color2", { Default = Color3.new(0, 0, 0) }) TargetingGroupbox:AddToggle("silent_manipulation", { Text = "manipulation", Default = false }) TargetingGroupbox:AddToggle("target_highlight_fill", { Text = "target highlight", Default = false }) :AddColorPicker("target_highlight_color", { Default = Color3.new(1, 0, 0), Transparency = 0.5 }) TargetingGroupbox:AddToggle("selected_player_view", { Text = "selected player view", Default = false }) local RagebotGroupbox = CombatTab:AddLeftGroupbox("Ragebot") RagebotGroupbox:AddDropdown("ragebot_priority_targets", { Text = "priority", Values = {"Head", "Body", "Closest"}, Default = "Head" }) RagebotGroupbox:AddSlider("ragebot_void_spam_hide", { Text = "void spam delay", Min = 0, Max = 1, Default = 0.25, Rounding = 2, Suffix = "s" }) RagebotGroupbox:AddToggle("indicator_ragebot", { Text = "ragebot indicator", Default = false }) :AddColorPicker("indicator_ragebot_status_color", { Default = Color3.fromRGB(255, 100, 100) }) :AddColorPicker("indicator_ragebot_text_color", { Default = Color3.fromRGB(255, 255, 255) }) local TriggerGroupbox = CombatTab:AddRightGroupbox("Triggerbot") TriggerGroupbox:AddToggle("triggerbot_enabled", { Text = "enabled", Default = false }) TriggerGroupbox:AddDropdown("triggerbot_scoped", { Text = "mode", Values = {"always", "scoped only"}, Default = "always" }) local AntiAimGroupbox = CombatTab:AddRightGroupbox("Anti Aim") AntiAimGroupbox:AddToggle("anti_aim_enabled", { Text = "enabled", Default = false }) AntiAimGroupbox:AddSlider("anti_aim_custom_yaw", { Text = "yaw angle", Min = -180, Max = 180, Default = 0, Rounding = 0 }) AntiAimGroupbox:AddDropdown("anti_aim_pitch_mode", { Text = "pitch mode", Values = {"none", "look down", "custom", "offset"}, Default = "none" }) local ESPGroupbox = VisualsTab:AddLeftGroupbox("ESP") ESPGroupbox:AddToggle("esp_name", { Text = "name", Default = false }) ESPGroupbox:AddToggle("esp_distance", { Text = "distance", Default = false }) ESPGroupbox:AddToggle("esp_weapon", { Text = "weapon", Default = false }) ESPGroupbox:AddToggle("esp_box", { Text = "box", Default = false }) ESPGroupbox:AddToggle("esp_fill", { Text = "fill", Default = false }) ESPGroupbox:AddToggle("esp_skeleton", { Text = "skeleton", Default = false }) ESPGroupbox:AddToggle("esp_healthbar", { Text = "healthbar", Default = false }) ESPGroupbox:AddToggle("esp_show_team", { Text = "show team", Default = false }) ESPGroupbox:AddToggle("esp_chams", { Text = "chams", Default = false }) ESPGroupbox:AddToggle("esp_skeleton_outline", { Text = "skeleton outline", Default = false }) ESPGroupbox:AddToggle("esp_healthbar_resize", { Text = "healthbar resize", Default = false }) ESPGroupbox:AddToggle("esp_override_appearance", { Text = "override appearance", Default = false }) ESPGroupbox:AddToggle("esp_body_color", { Text = "body color", Default = false }) ESPGroupbox:AddToggle("esp_material", { Text = "material", Default = false }) ESPGroupbox:AddDropdown("esp_bounds_type", { Text = "bounds type", Values = {"dynamic", "static"}, Default = "dynamic" }) ESPGroupbox:AddDropdown("esp_world_font", { Text = "font", Values = {"Code", "Gotham", "GothamBold"}, Default = "Code" }) ESPGroupbox:AddSlider("esp_bounds_width_scale", { Text = "width scale", Min = 0, Max = 200, Default = 100, Suffix = "%", Rounding = 0 }) ESPGroupbox:AddSlider("esp_skeleton_thickness", { Text = "skeleton thickness", Min = 1, Max = 5, Default = 1, Rounding = 0 }) ESPGroupbox:AddSlider("esp_healthbar_health_lerp", { Text = "health lerp", Min = 0, Max = 1, Default = 0.1, Rounding = 2 }) ESPGroupbox:AddSlider("esp_world_object_scale", { Text = "object scale", Min = 0.5, Max = 3, Default = 1, Rounding = 1 }) local CrosshairGroupbox = VisualsTab:AddRightGroupbox("Crosshair") CrosshairGroupbox:AddDropdown("crosshair_settings", { Text = "settings", Values = {"default", "custom"}, Default = "default" }) local IndicatorsGroupbox = VisualsTab:AddRightGroupbox("Indicators") IndicatorsGroupbox:AddSlider("indicator_lerp", { Text = "lerp", Min = 0, Max = 1, Default = 0.1, Rounding = 2 }) local TracerGroupbox = VisualsTab:AddRightGroupbox("Custom Tracers") TracerGroupbox:AddSlider("custom_tracer_lifetime", { Text = "lifetime", Min = 0.1, Max = 5, Default = 1, Rounding = 1 }) local BloomGroupbox = WorldTab:AddLeftGroupbox("Bloom") BloomGroupbox:AddToggle("bloom_enabled", { Text = "enable", Default = false }) BloomGroupbox:AddSlider("bloom_intensity", { Text = "intensity", Min = 0, Max = 3, Default = 0.4, Rounding = 2 }) BloomGroupbox:AddSlider("bloom_size", { Text = "size", Min = 0, Max = 56, Default = 24, Rounding = 0 }) BloomGroupbox:AddSlider("bloom_threshold", { Text = "threshold", Min = 0, Max = 2, Default = 0.95, Rounding = 2 }) local CCGroupbox = WorldTab:AddLeftGroupbox("Color Correction") CCGroupbox:AddToggle("color_correction_enabled", { Text = "enable", Default = false }) :AddColorPicker("color_correction_tint", { Default = Color3.new(1, 1, 1) }) CCGroupbox:AddSlider("color_correction_saturation", { Text = "saturation", Min = -1, Max = 1, Default = 0, Rounding = 2 }) CCGroupbox:AddSlider("color_correction_contrast", { Text = "contrast", Min = -1, Max = 1, Default = 0, Rounding = 2 }) CCGroupbox:AddSlider("color_correction_brightness", { Text = "brightness", Min = -1, Max = 1, Default = 0, Rounding = 2 }) local AtmoGroupbox = WorldTab:AddRightGroupbox("Atmosphere") AtmoGroupbox:AddToggle("atmosphere_enabled", { Text = "enable", Default = false }) AtmoGroupbox:AddSlider("atmosphere_decay", { Text = "decay", Min = 0, Max = 1, Default = 0, Rounding = 2 }) AtmoGroupbox:AddSlider("atmosphere_glare", { Text = "glare", Min = 0, Max = 1, Default = 0, Rounding = 2 }) AtmoGroupbox:AddSlider("atmosphere_haze", { Text = "haze", Min = 0, Max = 10, Default = 0, Rounding = 1 }) AtmoGroupbox:AddSlider("atmosphere_density", { Text = "density", Min = 0, Max = 1, Default = 0.3, Rounding = 2 }) AtmoGroupbox:AddSlider("atmosphere_offset", { Text = "offset", Min = 0, Max = 1, Default = 0, Rounding = 2 }) local SunGroupbox = WorldTab:AddRightGroupbox("Sun Rays") SunGroupbox:AddToggle("sunrays_enabled", { Text = "enable", Default = false }) SunGroupbox:AddSlider("sunrays_spread", { Text = "spread", Min = 0, Max = 1, Default = 0.5, Rounding = 2 }) SunGroupbox:AddSlider("sunrays_intensity", { Text = "intensity", Min = 0, Max = 1, Default = 0.25, Rounding = 2 }) local LightingGroupbox = WorldTab:AddRightGroupbox("Lighting") LightingGroupbox:AddDropdown("lighting_technology", { Text = "technology", Values = {"ShadowMap", "Future", "Legacy"}, Default = "ShadowMap" }) local CameraGroupbox = MiscTab:AddLeftGroupbox("Camera") CameraGroupbox:AddToggle("camera_fov_changer", { Text = "fov changer", Default = false }) CameraGroupbox:AddSlider("camera_aspect_ratio_y", { Text = "ratio y", Min = 0.1, Max = 3, Default = 1, Rounding = 2 }) local AnimGroupbox = MiscTab:AddLeftGroupbox("Animations") AnimGroupbox:AddDropdown("animation_player_value", { Text = "animation", Values = {"default"}, Default = "default" }) local ViewmodelGroupbox = MiscTab:AddLeftGroupbox("Viewmodel") ViewmodelGroupbox:AddToggle("viewmodel_offset", { Text = "offset", Default = false }) ViewmodelGroupbox:AddToggle("viewmodel_chams", { Text = "chams", Default = false }) local ChatGroupbox = MiscTab:AddRightGroupbox("Chat") ChatGroupbox:AddToggle("chat_spam_enabled", { Text = "chat spam", Default = false }) local ArcadeGroupbox = MiscTab:AddRightGroupbox("Arcade") ArcadeGroupbox:AddToggle("arcade_auto_ammo", { Text = "automatically grab drops", Default = false }) local CosmeticsGroupbox = MiscTab:AddRightGroupbox("Cosmetics") CosmeticsGroupbox:AddToggle("cosmetics_changer_show", { Text = "show", Default = false }) local SoundGroupbox = MiscTab:AddRightGroupbox("Sound") SoundGroupbox:AddSlider("shoot_sound_speed", { Text = "speed", Min = 0.1, Max = 5, Default = 1, Suffix = "x", Rounding = 2 }) local SettingsGroupbox = SettingsTab:AddLeftGroupbox("Menu") SettingsGroupbox:AddDropdown("Keybind Menu Mode", { Text = "keybind mode", Values = {"Always", "Toggle", "Hold"}, Default = "Always" }) SaveManager:SetLibrary(Library) SaveManager:SetFolder("unnamed/rivals") SaveManager:IgnoreThemeSettings() SaveManager:BuildConfigSection(SettingsTab) ThemeManager:SetLibrary(Library) ThemeManager:SetFolder("unnamed/themes") ThemeManager:ApplyToTab(SettingsTab) B({ [0] = State, [1] = Players })() local bloom_update = q({ [0] = BloomEffect, [1] = BloomDefaults }) local cc_update = V({ [0] = ColorCorrectionEffect }) local atmo_update = M({ [0] = AtmosphereEffect }) local sun_update = S({ [0] = SunRaysEffect, [1] = SunRaysDefaults }) Toggles.bloom_enabled:OnChanged(bloom_update) Options.bloom_intensity:OnChanged(bloom_update) Options.bloom_size:OnChanged(bloom_update) Options.bloom_threshold:OnChanged(bloom_update) Toggles.color_correction_enabled:OnChanged(cc_update) Options.color_correction_saturation:OnChanged(cc_update) Options.color_correction_contrast:OnChanged(cc_update) Options.color_correction_brightness:OnChanged(cc_update) Options.color_correction_tint:OnChanged(cc_update) Toggles.atmosphere_enabled:OnChanged(atmo_update) Options.atmosphere_decay:OnChanged(atmo_update) Options.atmosphere_glare:OnChanged(atmo_update) Options.atmosphere_haze:OnChanged(atmo_update) Options.atmosphere_density:OnChanged(atmo_update) Options.atmosphere_offset:OnChanged(atmo_update) --options.atmosphere_color:OnChanged(atmo_update) Toggles.sunrays_enabled:OnChanged(sun_update) Options.sunrays_spread:OnChanged(sun_update) Options.sunrays_intensity:OnChanged(sun_update) Options.lighting_technology:OnChanged(function() pcall(function() local tech = Options.lighting_technology.Value if tech == "ShadowMap" then Lighting.Technology = Enum.Technology.ShadowMap elseif tech == "Future" then Lighting.Technology = Enum.Technology.Future elseif tech == "Legacy" then Lighting.Technology = Enum.Technology.Legacy end end) end) local ReplicatedStorage = game:GetService("ReplicatedStorage") local Remotes = ReplicatedStorage:FindFirstChild("Remotes") local RivalsModules = {} local origGetRawMetatable = clonefunction and clonefunction(getrawmetatable) or getrawmetatable local origSetThreadIdentity = clonefunction and clonefunction(setthreadidentity or setidentity or function() end) or function() end local origNewCClosure = newcclosure or function(f) return f end local localFighter = nil local localPlayerData = nil pcall(function() for _, v in pairs(getgc(true)) do if type(v) == "table" and rawget(v, "ClientFighter") and rawget(v, "IsLocalPlayer") then localFighter = v break end end end) State.localFighter = localFighter pcall(function() local viewmodelsModule = ReplicatedStorage:FindFirstChild("ViewModels", true) or ReplicatedStorage:FindFirstChild("Shared", true) if viewmodelsModule then RivalsModules.ViewModels = cloneref(require(viewmodelsModule)) end end) pcall(function() local camModule = ReplicatedStorage:FindFirstChild("CameraController", true) if camModule then RivalsModules.CameraController = require(camModule) end end) if Remotes then State.Remotes = Remotes end local function installMetatableHook() local origMt = origGetRawMetatable(game) if not origMt then return end local origNamecall = origMt.__namecall local origIndex = origMt.__index local origNewIndex = origMt.__newindex local proxyMt = {} proxyMt.__index = origIndex proxyMt.__namecall = origNewCClosure(function(self, ...) local method = getnamecallmethod() local args = {...} if method == "FireServer" and self.Name and Remotes and self:IsDescendantOf(Remotes) then local remoteName = self.Name if remoteName == "ReplicateFromServer" or remoteName == "Shoot" or remoteName == "Fire" then if Toggles.exploits_no_spread and Toggles.exploits_no_spread.Value then pcall(function() for _, arg in args do if type(arg) == "table" then if arg._ProjectileEffect then arg._ProjectileEffect.Spread = Vector3.zero arg._ProjectileEffect.SpreadAngle = 0 end if arg.Spread then arg.Spread = Vector3.zero end if arg.SpreadAngle then arg.SpreadAngle = 0 end end end end) end if Toggles.silent_manipulation and Toggles.silent_manipulation.Value then pcall(function() if State.manipulation.targetPosition then for _, arg in args do if type(arg) == "table" then if arg.Direction then local cam = workspace.CurrentCamera arg.Direction = (State.manipulation.targetPosition - cam.CFrame.Position).Unit end if arg.Origin then arg.Origin = workspace.CurrentCamera.CFrame.Position end end end end end) end end end return origNamecall(self, ...) end) proxyMt.__newindex = origNewCClosure(function(self, key, value) return end) local setRawMt = setrawmetatable or (debug and debug.setmetatable) if setRawMt then setRawMt(game, proxyMt) end end pcall(installMetatableHook) if localFighter and RivalsModules.CameraController then pcall(function() local origEncode = RivalsModules.CameraController.EncodeCameraRotation if origEncode then RivalsModules.CameraController.EncodeCameraRotation = function(self, ...) if Toggles.anti_aim_enabled and Toggles.anti_aim_enabled.Value then local yaw = Options.anti_aim_custom_yaw and Options.anti_aim_custom_yaw.Value or 0 local pitchMode = Options.anti_aim_pitch_mode and Options.anti_aim_pitch_mode.Value or "none" local cam = workspace.CurrentCamera local cf = cam.CFrame cf = cf * CFrame.Angles(0, math.rad(yaw), 0) if pitchMode == "look down" then cf = cf * CFrame.Angles(math.rad(89), 0, 0) elseif pitchMode == "custom" then local pitch = Options.anti_aim_custom_pitch and Options.anti_aim_custom_pitch.Value or 0 cf = cf * CFrame.Angles(math.rad(pitch), 0, 0) end return origEncode(self, cf) end return origEncode(self, ...) end end end) end local silentCircle = Drawing.new("Circle") silentCircle.Visible = false silentCircle.Radius = 100 silentCircle.Color = Color3.new(1, 1, 1) silentCircle.Thickness = 1 silentCircle.Filled = false silentCircle.Transparency = 1 State.drawings.silent.circle = silentCircle local aimbotCircle = Drawing.new("Circle") aimbotCircle.Visible = false aimbotCircle.Radius = 100 aimbotCircle.Color = Color3.new(1, 1, 1) aimbotCircle.Thickness = 1 aimbotCircle.Filled = false aimbotCircle.Transparency = 1 State.drawings.aimbot.circle = aimbotCircle Toggles.silent_visualize:OnChanged(function() silentCircle.Visible = Toggles.silent_visualize.Value and Toggles.aimbot_toggle.Value end) Options.silent_radius:OnChanged(function() silentCircle.Radius = Options.silent_radius.Value end) Options.silent_fill_color1:OnChanged(function() silentCircle.Color = Options.silent_fill_color1.Value end) Toggles.aimbot_fov_outline:OnChanged(function() aimbotCircle.Visible = Toggles.aimbot_fov_outline.Value end) Options.aimbot_outline_color1:OnChanged(function() aimbotCircle.Color = Options.aimbot_outline_color1.Value end) Options.aimbot_fov_rotation_speed:OnChanged(function() end) Toggles.aimbot_toggle:OnChanged(function() if not Toggles.aimbot_toggle.Value then if silentCircle then silentCircle.Visible = false else warn("Warning: silentCircle was not found or failed to load!") end if State and State.manipulation then State.manipulation.targetPosition = nil else -- If manipulation is missing, dynamically create it to prevent crashes if State then State.manipulation = {} State.manipulation.targetPosition = nil end end end end) RunService.RenderStepped:Connect(function() local screenCenter = workspace.CurrentCamera.ViewportSize / 2 silentCircle.Position = screenCenter aimbotCircle.Position = screenCenter if Toggles.aimbot_fov_moving.Value then local speed = Options.aimbot_fov_rotation_speed.Value aimbotCircle.NumSides = 60 end if Toggles.aimbot_toggle.Value and Options.aimbot_keybind:GetState() then local closestPlayer = nil local closestDist = Options.silent_radius.Value local cam = workspace.CurrentCamera for _, player in Players:GetPlayers() do if player == LocalPlayer then continue end local char = player.Character if not char then continue end local root = char:FindFirstChild("HumanoidRootPart") local humanoid = char:FindFirstChild("Humanoid") if not root or not humanoid or humanoid.Health <= 0 then continue end if Toggles.targeting_visibleonly.Value then local ray = workspace:Raycast( cam.CFrame.Position, (root.Position - cam.CFrame.Position).Unit * 1000, State.raycastParams ) if ray and ray.Instance and not ray.Instance:IsDescendantOf(char) then continue end end local screenPos, onScreen = cam:WorldToViewportPoint(root.Position) if not onScreen then continue end local dist = (Vector2.new(screenPos.X, screenPos.Y) - screenCenter).Magnitude if dist < closestDist then closestDist = dist closestPlayer = { player = player, character = char, root = root, screenPos = screenPos } end end if closestPlayer then local hitchance = Options.silent_hitchance.Value if math.random(1, 100) <= hitchance then State.manipulation.targetPosition = closestPlayer.root.Position else State.manipulation.targetPosition = nil end else State.manipulation.targetPosition = nil end else State.manipulation.targetPosition = nil end end) local triggerConn = nil Toggles.triggerbot_enabled:OnChanged(function() if triggerConn then triggerConn:Disconnect(); triggerConn = nil end if not Toggles.triggerbot_enabled.Value then return end triggerConn = RunService.Heartbeat:Connect(function() if not localFighter then return end local equipped = pcall(function() return localFighter.EquippedItem end) and localFighter.EquippedItem if not equipped then return end local scopedMode = Options.triggerbot_scoped.Value if scopedMode == "scoped only" then local isAiming = pcall(function() return localFighter.IsAiming end) and localFighter.IsAiming if not isAiming then return end end local mouseTarget = LocalPlayer:GetMouse().Target if not mouseTarget then return end local model = mouseTarget:FindFirstAncestorOfClass("Model") if not model then return end local humanoid = model:FindFirstChildOfClass("Humanoid") if not humanoid or humanoid.Health <= 0 then return end local player = Players:GetPlayerFromCharacter(model) if not player or player == LocalPlayer then return end pcall(function() if equipped.shoot then equipped:shoot() end end) end) end) Toggles.exploits_full_auto:OnChanged(function() pcall(function() if not localFighter or not localFighter.EquippedItem then return end local weapon = localFighter.EquippedItem if weapon.Info and weapon.Info.Type == "Gun" then if Toggles.exploits_full_auto.Value then weapon.Info.FireMode = "Auto" end end end) end) State.manipulation = State.manipulation or {} State.manipulation.active = false State.manipulation.targetPosition = nil State.raycastParams = RaycastParams.new() State.raycastParams.FilterType = Enum.RaycastFilterType.Exclude State.raycastParams.FilterDescendantsInstances = {LocalPlayer.Character} LocalPlayer.CharacterAdded:Connect(function(char) State.raycastParams.FilterDescendantsInstances = {char} end) Toggles.silent_manipulation:OnChanged(function() State.manipulation.active = Toggles.silent_manipulation.Value end) SaveManager:LoadAutoloadConfig() Library:Toggle() return Library end initialize(Library) getgenv().UE_LOADED = true