
KeylessUniversal

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



bro just went on vacban downloaded a file and uploaded it to scriptblox