0% found this document useful (0 votes)
6 views107 pages

Message 11

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views107 pages

Message 11

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 107

repeat

wait()
until game:IsLoaded()

local library
do
local folder = "specter"

local services = setmetatable({}, {


__index = function(_, service)
if service == "InputService" then
return game:GetService("UserInputService")
end

return game:GetService(service)
end
})

local utility = {}

function utility.randomstring(length)
local str = ""
local chars = string.split("abcdefghijklmnopqrstuvwxyz1234567890", "")

for i = 1, length do
local i = math.random(1, #chars)

if not tonumber(chars[i]) then


local uppercase = math.random(1, 2) == 2 and true or false
str = str .. (uppercase and chars[i]:upper() or chars[i])
else
str = str .. chars[i]
end
end

return str
end

function utility.create(class, properties)


local obj = Instance.new(class)

local forced = {
AutoButtonColor = false
}

for prop, v in next, properties do


obj[prop] = v
end

for prop, v in next, forced do


pcall(function()
obj[prop] = v
end)
end

obj.Name = utility.randomstring(16)

return obj
end
function utility.dragify(object, speed)
local start, objectPosition, dragging

speed = speed or 0

object.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
start = input.Position
objectPosition = object.Position
end
end)

object.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
end
end)

services.InputService.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement and dragging
then
utility.tween(object, { speed }, { Position =
UDim2.new(objectPosition.X.Scale, objectPosition.X.Offset + (input.Position -
start).X, objectPosition.Y.Scale, objectPosition.Y.Offset + (input.Position -
start).Y) })
end
end)
end

function utility.getrgb(color)
local r = math.floor(color.r * 255)
local g = math.floor(color.g * 255)
local b = math.floor(color.b * 255)

return r, g, b
end

function utility.getcenter(sizeX, sizeY)


return UDim2.new(0.5, -(sizeX / 2), 0.5, -(sizeY / 2))
end

function utility.table(tbl)
tbl = tbl or {}

local newtbl = {}

for i, v in next, tbl do


if type(i) == "string" then
newtbl[i:lower()] = v
end
end

return setmetatable({}, {
__newindex = function(_, k, v)
rawset(newtbl, k:lower(), v)
end,
__index = function(_, k)
return newtbl[k:lower()]
end
})
end

function utility.tween(obj, info, properties, callback)


local anim = services.TweenService:Create(obj, TweenInfo.new(unpack(info)),
properties)
anim:Play()

if callback then
anim.Completed:Connect(callback)
end

return anim
end

function utility.makevisible(obj, bool)


if bool == false then
local tween

if not obj.ClassName:find("UI") then


if obj.ClassName:find("Text") then
tween = utility.tween(obj, { 0.2 }, { BackgroundTransparency =
obj.BackgroundTransparency + 1, TextTransparency = obj.TextTransparency + 1,
TextStrokeTransparency = obj.TextStrokeTransparency + 1 })
elseif obj.ClassName:find("Image") then
tween = utility.tween(obj, { 0.2 }, { BackgroundTransparency =
obj.BackgroundTransparency + 1, ImageTransparency = obj.ImageTransparency + 1 })
elseif obj.ClassName:find("Scrolling") then
tween = utility.tween(obj, { 0.2 }, { BackgroundTransparency =
obj.BackgroundTransparency + 1, ScrollBarImageTransparency =
obj.ScrollBarImageTransparency + 1 })
else
tween = utility.tween(obj, { 0.2 }, { BackgroundTransparency =
obj.BackgroundTransparency + 1 })
end
end

tween.Completed:Connect(function()
obj.Visible = false
end)

for _, descendant in next, obj:GetDescendants() do


if not descendant.ClassName:find("UI") then
if descendant.ClassName:find("Text") then
utility.tween(descendant, { 0.2 }, { BackgroundTransparency
= descendant.BackgroundTransparency + 1, TextTransparency =
descendant.TextTransparency + 1, TextStrokeTransparency =
descendant.TextStrokeTransparency + 1 })
elseif descendant.ClassName:find("Image") then
utility.tween(descendant, { 0.2 }, { BackgroundTransparency
= descendant.BackgroundTransparency + 1, ImageTransparency =
descendant.ImageTransparency + 1 })
elseif descendant.ClassName:find("Scrolling") then
utility.tween(descendant, { 0.2 }, { BackgroundTransparency
= descendant.BackgroundTransparency + 1, ScrollBarImageTransparency =
descendant.ScrollBarImageTransparency + 1 })
else
utility.tween(descendant, { 0.2 }, { BackgroundTransparency
= descendant.BackgroundTransparency + 1 })
end
end
end

return tween
elseif bool == true then
local tween

if not obj.ClassName:find("UI") then


obj.Visible = true

if obj.ClassName:find("Text") then
tween = utility.tween(obj, { 0.2 }, { BackgroundTransparency =
obj.BackgroundTransparency - 1, TextTransparency = obj.TextTransparency - 1,
TextStrokeTransparency = obj.TextStrokeTransparency - 1 })
elseif obj.ClassName:find("Image") then
tween = utility.tween(obj, { 0.2 }, { BackgroundTransparency =
obj.BackgroundTransparency - 1, ImageTransparency = obj.ImageTransparency - 1 })
elseif obj.ClassName:find("Scrolling") then
tween = utility.tween(obj, { 0.2 }, { BackgroundTransparency =
obj.BackgroundTransparency - 1, ScrollBarImageTransparency =
obj.ScrollBarImageTransparency - 1 })
else
tween = utility.tween(obj, { 0.2 }, { BackgroundTransparency =
obj.BackgroundTransparency - 1 })
end
end

for _, descendant in next, obj:GetDescendants() do


if not descendant.ClassName:find("UI") then
if descendant.ClassName:find("Text") then
utility.tween(descendant, { 0.2 }, { BackgroundTransparency
= descendant.BackgroundTransparency - 1, TextTransparency =
descendant.TextTransparency - 1, TextStrokeTransparency =
descendant.TextStrokeTransparency - 1 })
elseif descendant.ClassName:find("Image") then
utility.tween(descendant, { 0.2 }, { BackgroundTransparency
= descendant.BackgroundTransparency - 1, ImageTransparency =
descendant.ImageTransparency - 1 })
elseif descendant.ClassName:find("Scrolling") then
utility.tween(descendant, { 0.2 }, { BackgroundTransparency
= descendant.BackgroundTransparency - 1, ScrollBarImageTransparency =
descendant.ScrollBarImageTransparency - 1 })
else
utility.tween(descendant, { 0.2 }, { BackgroundTransparency
= descendant.BackgroundTransparency - 1 })
end
end
end

return tween
end
end

function utility.updatescrolling(scrolling, list)


return
list:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
scrolling.CanvasSize = UDim2.new(0, 0, 0, list.AbsoluteContentSize.Y)
end)
end

function utility.changecolor(color, amount)


local r, g, b = utility.getrgb(color)
r = math.clamp(r + amount, 0, 255)
g = math.clamp(g + amount, 0, 255)
b = math.clamp(b + amount, 0, 255)

return Color3.fromRGB(r, g, b)
end

function utility.gradient(colors)
local colortbl = {}

for i, color in next, colors do


table.insert(colortbl, ColorSequenceKeypoint.new((i - 1) / (#colors -
1), color))
end

return ColorSequence.new(colortbl)
end

library = utility.table {
flags = {},
toggled = true,
accent = Color3.fromRGB(162, 109, 184),
outline = { Color3.fromRGB(121, 66, 254), Color3.fromRGB(223, 57, 137) },
keybind = Enum.KeyCode.RightShift
}

local accentobjects = { gradient = {}, bg = {}, text = {} }

function library:ChangeAccent(accent)
library.accent = accent

for obj, color in next, accentobjects.gradient do


obj.Color = color(accent)
end

for _, obj in next, accentobjects.bg do


obj.BackgroundColor3 = accent
end

for _, obj in next, accentobjects.text do


obj.TextColor3 = accent
end
end

local outlineobjs = {}

function library:ChangeOutline(colors)
for _, obj in next, outlineobjs do
obj.Color = utility.gradient(colors)
end
end
local gui = utility.create("ScreenGui", {})

local flags = {}

function library:SaveConfig(name, universal)


local configtbl = {}
local placeid = universal and "universal" or game.PlaceId

for flag, _ in next, flags do


local value = library.flags[flag]
if typeof(value) == "EnumItem" then
configtbl[flag] = tostring(value)
elseif typeof(value) == "Color3" then
configtbl[flag] = { math.floor(value.R * 255), math.floor(value.G *
255), math.floor(value.B * 255) }
else
configtbl[flag] = value
end
end

local config = services.HttpService:JSONEncode(configtbl)


local folderpath = string.format("%s//%s", folder, placeid)

if not isfolder(folderpath) then


makefolder(folderpath)
end

local filepath = string.format("%s//%s.json", folderpath, name)


writefile(filepath, config)
end

function library:DeleteConfig(name, universal)


local placeid = universal and "universal" or game.PlaceId

local folderpath = string.format("%s//%s", folder, placeid)

if isfolder(folderpath) then
local folderpath = string.format("%s//%s", folder, placeid)
local filepath = string.format("%s//%s.json", folderpath, name)

delfile(filepath)
end
end

function library:LoadConfig(name)
local placeidfolder = string.format("%s//%s", folder, game.PlaceId)
local placeidfile = string.format("%s//%s.json", placeidfolder, name)

local filepath
do
if isfolder(placeidfolder) and isfile(placeidfile) then
filepath = placeidfile
else
filepath = string.format("%s//universal//%s.json", folder, name)
end
end

local file = readfile(filepath)


local config = services.HttpService:JSONDecode(file)
for flag, v in next, config do
local func = flags[flag]
func(v)
end
end

function library:ListConfigs(universal)
local configs = {}
local placeidfolder = string.format("%s//%s", folder, game.PlaceId)
local universalfolder = folder .. "//universal"

for _, config in next, (isfolder(placeidfolder) and


listfiles(placeidfolder) or {}) do
local name = config:gsub(placeidfolder .. "\\", ""):gsub(".json", "")
table.insert(configs, name)
end

if universal and isfolder(universalfolder) then


for _, config in next, (isfolder(placeidfolder) and
listfiles(placeidfolder) or {}) do
configs[config:gsub(universalfolder .. "\\", "")] =
readfile(config)
end
end
return configs
end

function library:Watermark(options)
local text = table.concat(options, " <font color=\"#D2D2D2\">|</font> ")

local watermarksize = services.TextService:GetTextSize(text:gsub("<font


color=\"#D2D2D2\">", ""):gsub("</font>", ""), 14, Enum.Font.Code, Vector2.new(1000,
1000)).X + 16

local watermark = utility.create("TextLabel", {


ZIndex = 2,
Size = UDim2.new(0, watermarksize, 0, 20),
BorderColor3 = Color3.fromRGB(50, 50, 50),
Position = UDim2.new(0, 10, 0, 10),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(30, 30, 30),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 14,
RichText = true,
TextColor3 = library.accent,
Text = text,
Font = Enum.Font.Code,
Parent = gui
})

table.insert(accentobjects.text, watermark)

utility.create("UIPadding", {
PaddingBottom = UDim.new(0, 2),
Parent = watermark
})
local outline = utility.create("Frame", {
Size = UDim2.new(1, 2, 1, 4),
BorderColor3 = Color3.fromRGB(45, 45, 45),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = watermark
})

utility.create("Frame", {
ZIndex = 0,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(45, 45, 45),
Parent = outline
})

local outlinegradient = utility.create("UIGradient", {


Rotation = 45,
Color = utility.gradient(library.outline),
Parent = outline
})

table.insert(outlineobjs, outlinegradient)

local watermarktypes = utility.table()

function watermarktypes:Update(options)
local text = table.concat(options, " <font color=\"#D2D2D2\">|</font>
")
local watermarksize = services.TextService:GetTextSize(text:gsub("<font
color=\"#D2D2D2\">", ""):gsub("</font>", ""), 14, Enum.Font.Code, Vector2.new(1000,
1000)).X + 16

watermark.Size = UDim2.new(0, watermarksize, 0, 20)


watermark.Text = text
end

local toggling = false


local toggled = true

function watermarktypes:Toggle()
if not toggling then
toggling = true

toggled = not toggled


local tween = utility.makevisible(watermark, toggled)
tween.Completed:Wait()

toggling = false
end
end

return watermarktypes
end

function library:New(options)
options = utility.table(options)
local name = options.name
local accent = options.accent or library.accent
local outlinecolor = options.outline or { accent,
utility.changecolor(accent, -100) }
local sizeX = options.sizeX or 550
local sizeY = options.sizeY or 350

library.accent = accent
library.outline = outlinecolor

local holder = utility.create("Frame", {


Size = UDim2.new(0, sizeX, 0, 24),
BackgroundTransparency = 1,
Position = utility.getcenter(sizeX, sizeY),
Parent = gui
})

local toggling = false

function library:Toggle()
if not toggling then
toggling = true

library.toggled = not library.toggled


local tween = utility.makevisible(holder, library.toggled)
tween.Completed:Wait()

toggling = false
end
end

utility.dragify(holder)

local title = utility.create("TextLabel", {


ZIndex = 5,
Size = UDim2.new(0, 0, 1, -2),
BorderColor3 = Color3.fromRGB(50, 50, 50),
BackgroundTransparency = 1,
Position = UDim2.new(0, 12, 0, 0),
BackgroundColor3 = Color3.fromRGB(30, 30, 30),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 14,
TextColor3 = library.accent,
Text = name,
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = holder
})

table.insert(accentobjects.text, title)

local main = utility.create("Frame", {


ZIndex = 2,
Size = UDim2.new(1, 0, 0, sizeY),
BorderColor3 = Color3.fromRGB(27, 42, 53),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(30, 30, 30),
Parent = holder
})

local outline = utility.create("Frame", {


Size = UDim2.new(1, 2, 1, 2),
BorderColor3 = Color3.fromRGB(45, 45, 45),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = main
})

local outlinegradient = utility.create("UIGradient", {


Rotation = 45,
Color = utility.gradient(library.outline),
Parent = outline
})

table.insert(outlineobjs, outlinegradient)

local border = utility.create("Frame", {


ZIndex = 0,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(45, 45, 45),
Parent = outline
})

local tabs = utility.create("Frame", {


ZIndex = 4,
Size = UDim2.new(1, -16, 1, -30),
BorderColor3 = Color3.fromRGB(50, 50, 50),
Position = UDim2.new(0, 8, 0, 22),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = main
})

utility.create("UIGradient", {
Rotation = 90,
Color = ColorSequence.new(Color3.fromRGB(25, 25, 25),
Color3.fromRGB(20, 20, 20)),
Parent = tabs
})

utility.create("Frame", {
ZIndex = 3,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(20, 20, 20),
Parent = tabs
})

local tabtoggles = utility.create("Frame", {


Size = UDim2.new(0, 395, 0, 22),
BackgroundTransparency = 1,
Position = UDim2.new(0, 6, 0, 6),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = tabs
})

utility.create("UIListLayout", {
FillDirection = Enum.FillDirection.Horizontal,
SortOrder = Enum.SortOrder.LayoutOrder,
Padding = UDim.new(0, 4),
Parent = tabtoggles
})

local tabframes = utility.create("Frame", {


ZIndex = 5,
Size = UDim2.new(1, -12, 1, -35),
BorderColor3 = Color3.fromRGB(50, 50, 50),
Position = UDim2.new(0, 6, 0, 29),
BackgroundColor3 = Color3.fromRGB(30, 30, 30),
Parent = tabs
})

local tabholder = utility.create("Frame", {


Size = UDim2.new(1, -16, 1, -16),
BackgroundTransparency = 1,
Position = UDim2.new(0, 8, 0, 8),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = tabframes
})

local windowtypes = utility.table()

local pagetoggles = {}

local switchingtabs = false

local firsttab
local currenttab

function windowtypes:Page(options)
options = utility.table(options)
local name = options.name

local first = #tabtoggles:GetChildren() == 1

local togglesizeX = math.clamp(services.TextService:GetTextSize(name,


14, Enum.Font.Code, Vector2.new(1000, 1000)).X, 25, math.huge)

local tabtoggle = utility.create("TextButton", {


Size = UDim2.new(0, togglesizeX + 18, 1, 0),
BackgroundTransparency = 1,
FontSize = Enum.FontSize.Size14,
TextSize = 14,
Parent = tabtoggles
})

local antiborder = utility.create("Frame", {


ZIndex = 6,
Visible = first,
Size = UDim2.new(1, 0, 0, 1),
Position = UDim2.new(0, 0, 1, 0),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(30, 30, 30),
Parent = tabtoggle
})

local selectedglow = utility.create("Frame", {


ZIndex = 6,
Size = UDim2.new(1, 0, 0, 1),
Visible = first,
BorderColor3 = Color3.fromRGB(50, 50, 50),
BorderSizePixel = 0,
BackgroundColor3 = library.accent,
Parent = tabtoggle
})

table.insert(accentobjects.bg, selectedglow)

utility.create("Frame", {
ZIndex = 7,
Size = UDim2.new(1, 0, 0, 1),
Position = UDim2.new(0, 0, 1, 0),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(30, 30, 30),
Parent = selectedglow
})

local titleholder = utility.create("Frame", {


ZIndex = 6,
Size = UDim2.new(1, 0, 1, first and -1 or -4),
BorderColor3 = Color3.fromRGB(50, 50, 50),
Position = UDim2.new(0, 0, 0, first and 1 or 4),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = tabtoggle
})

local title = utility.create("TextLabel", {


ZIndex = 7,
Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = 1,
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 14,
TextColor3 = first and library.accent or Color3.fromRGB(110, 110,
110),
Text = name,
Font = Enum.Font.Code,
Parent = titleholder
})

if first then
table.insert(accentobjects.text, title)
end

local tabglowgradient = utility.create("UIGradient", {


Rotation = 90,
Color = first and utility.gradient
{ utility.changecolor(library.accent, -30), Color3.fromRGB(30, 30, 30) } or
utility.gradient { Color3.fromRGB(22, 22, 22), Color3.fromRGB(22, 22, 22) },
Offset = Vector2.new(0, -0.55),
Parent = titleholder
})

if first then
accentobjects.gradient[tabglowgradient] = function(color)
return utility.gradient { utility.changecolor(color, -30),
Color3.fromRGB(30, 30, 30) }
end
end

local tabtoggleborder = utility.create("Frame", {


ZIndex = 5,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(50, 50, 50),
Parent = title
})

pagetoggles[tabtoggle] = {}
pagetoggles[tabtoggle] = function()
utility.tween(antiborder, { 0.2 }, { BackgroundTransparency = 1 },
function()
antiborder.Visible = false
end)

utility.tween(selectedglow, { 0.2 }, { BackgroundTransparency =


1 }, function()
selectedglow.Visible = false
end)

utility.tween(titleholder, { 0.2 }, { Size = UDim2.new(1, 0, 1, -


4), Position = UDim2.new(0, 0, 0, 4) })

utility.tween(title, { 0.2 }, { TextColor3 = Color3.fromRGB(110,


110, 110) })
if table.find(accentobjects.text, title) then
table.remove(accentobjects.text, table.find(accentobjects.text,
title))
end

tabglowgradient.Color = utility.gradient { Color3.fromRGB(22, 22,


22), Color3.fromRGB(22, 22, 22) }

if accentobjects.gradient[tabglowgradient] then
accentobjects.gradient[tabglowgradient] = function() end
end
end

local tab = utility.create("Frame", {


Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = first and 1 or 2,
Visible = first,
Parent = tabholder
})

if first then
currenttab = tab
firsttab = tab
end

tab.DescendantAdded:Connect(function(descendant)
if tab ~= currenttab then
task.wait()
if not descendant.ClassName:find("UI") then
if descendant.ClassName:find("Text") then
descendant.TextTransparency =
descendant.TextTransparency + 1
descendant.TextStrokeTransparency =
descendant.TextStrokeTransparency + 1
end

if descendant.ClassName:find("Scrolling") then
descendant.ScrollBarImageTransparency =
descendant.ScrollBarImageTransparency + 1
end

descendant.BackgroundTransparency =
descendant.BackgroundTransparency + 1
end
end
end)

local column1 = utility.create("ScrollingFrame", {


Size = UDim2.new(0.5, -5, 1, 0),
BackgroundTransparency = 1,
Active = true,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
AutomaticCanvasSize = Enum.AutomaticSize.Y,
CanvasSize = UDim2.new(0, 0, 0, 123),
ScrollBarImageColor3 = Color3.fromRGB(0, 0, 0),
ScrollBarThickness = 0,
Parent = tab
})

local column1list = utility.create("UIListLayout", {


SortOrder = Enum.SortOrder.LayoutOrder,
Padding = UDim.new(0, 10),
Parent = column1
})

utility.updatescrolling(column1, column1list)

local column2 = utility.create("ScrollingFrame", {


Size = UDim2.new(0.5, -5, 1, 0),
BackgroundTransparency = 1,
Position = UDim2.new(0.5, 7, 0, 0),
Active = true,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
AutomaticCanvasSize = Enum.AutomaticSize.Y,
CanvasSize = UDim2.new(0, 0, 0, 0),
ScrollBarImageColor3 = Color3.fromRGB(0, 0, 0),
ScrollBarThickness = 0,
Parent = tab
})

local column2list = utility.create("UIListLayout", {


SortOrder = Enum.SortOrder.LayoutOrder,
Padding = UDim.new(0, 10),
Parent = column2
})

utility.updatescrolling(column2, column2list)

local function opentab()


if not switchingtabs then
switchingtabs = true

currenttab = tab

for toggle, close in next, pagetoggles do


if toggle ~= tabtoggle then
close()
end
end

for _, obj in next, tabholder:GetChildren() do


if obj ~= tab and obj.BackgroundTransparency <= 1 then
utility.makevisible(obj, false)
end
end

antiborder.Visible = true
utility.tween(antiborder, { 0.2 }, { BackgroundTransparency = 0
})

selectedglow.Visible = true
utility.tween(selectedglow, { 0.2 }, { BackgroundTransparency =
0 })

utility.tween(titleholder, { 0.2 }, { Size = UDim2.new(1, 0, 1,


-1), Position = UDim2.new(0, 0, 0, 1) })

utility.tween(title, { 0.2 }, { TextColor3 = library.accent })

table.insert(accentobjects.text, title)

tabglowgradient.Color = utility.gradient
{ utility.changecolor(library.accent, -30), Color3.fromRGB(30, 30, 30) }

accentobjects.gradient[tabglowgradient] = function(color)
return utility.gradient { utility.changecolor(color, -30),
Color3.fromRGB(30, 30, 30) }
end

tab.Visible = true
if tab.BackgroundTransparency > 1 then
task.wait(0.2)

local tween = utility.makevisible(tab, true)


tween.Completed:Wait()
end

switchingtabs = false
end
end
tabtoggle.MouseButton1Click:Connect(opentab)

local pagetypes = utility.table()

function pagetypes:Section(options)
options = utility.table(options)
local name = options.name
local side = options.side or "left"
local max = options.max or math.huge
local column = (side:lower() == "left" and column1) or
(side:lower() == "right" and column2)

local sectionholder = utility.create("Frame", {


Size = UDim2.new(1, -1, 0, 28),
BackgroundTransparency = 1,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = column
})

local section = utility.create("Frame", {


ZIndex = 6,
Size = UDim2.new(1, -2, 1, -2),
BorderColor3 = Color3.fromRGB(50, 50, 50),
Position = UDim2.new(0, 1, 0, 1),
BackgroundColor3 = Color3.fromRGB(22, 22, 22),
Parent = sectionholder
})

local title = utility.create("TextLabel", {


ZIndex = 8,
Size = UDim2.new(0, 0, 0, 14),
BorderColor3 = Color3.fromRGB(50, 50, 50),
BackgroundTransparency = 1,
Position = UDim2.new(0, 6, 0, 3),
BackgroundColor3 = Color3.fromRGB(30, 30, 30),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 14,
TextColor3 = library.accent,
Text = name,
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = section
})

table.insert(accentobjects.text, title)

local glow = utility.create("Frame", {


ZIndex = 8,
Size = UDim2.new(1, 0, 0, 1),
BorderColor3 = Color3.fromRGB(50, 50, 50),
BorderSizePixel = 0,
BackgroundColor3 = library.accent,
Parent = section
})

table.insert(accentobjects.bg, glow)

utility.create("Frame", {
ZIndex = 9,
Size = UDim2.new(1, 0, 0, 1),
Position = UDim2.new(0, 0, 1, 0),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(30, 30, 30),
Parent = glow
})

local fade = utility.create("Frame", {


ZIndex = 7,
Size = UDim2.new(1, 0, 0, 20),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = glow
})

local fadegradient = utility.create("UIGradient", {


Rotation = 90,
Color = utility.gradient { utility.changecolor(library.accent,
-30), Color3.fromRGB(22, 22, 22) },
Offset = Vector2.new(0, -0.55),
Parent = fade
})

accentobjects.gradient[fadegradient] = function(color)
return utility.gradient { utility.changecolor(color, -30),
Color3.fromRGB(22, 22, 22) }
end

local sectioncontent = utility.create("ScrollingFrame", {


ZIndex = 7,
Size = UDim2.new(1, -7, 1, -26),
BorderColor3 = Color3.fromRGB(27, 42, 53),
BackgroundTransparency = 1,
Position = UDim2.new(0, 6, 0, 20),
Active = true,
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
CanvasSize = UDim2.new(0, 0, 0, 1),
ScrollBarThickness = 2,
Parent = section
})

local sectionlist = utility.create("UIListLayout", {


SortOrder = Enum.SortOrder.LayoutOrder,
Padding = UDim.new(0, 2),
Parent = sectioncontent
})

utility.updatescrolling(sectioncontent, sectionlist)

local sectiontypes = utility.table()

function sectiontypes:Label(options)
options = utility.table(options)
local name = options.name

utility.create("TextLabel", {
ZIndex = 8,
Size = UDim2.new(1, 0, 0, 13),
BorderColor3 = Color3.fromRGB(50, 50, 50),
BackgroundTransparency = 1,
Position = UDim2.new(0, 6, 0, 3),
BackgroundColor3 = Color3.fromRGB(30, 30, 30),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(210, 210, 210),
Text = name,
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = sectioncontent
})

if #sectioncontent:GetChildren() - 1 <= max then


sectionholder.Size = UDim2.new(1, -1, 0,
sectionlist.AbsoluteContentSize.Y + 28)
end
end

function sectiontypes:Button(options)
options = utility.table(options)
local name = options.name
local callback = options.callback

local buttonholder = utility.create("Frame", {


Size = UDim2.new(1, -5, 0, 17),
BackgroundTransparency = 1,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = sectioncontent
})

local button = utility.create("TextButton", {


ZIndex = 10,
Size = UDim2.new(1, -4, 1, -4),
BorderColor3 = Color3.fromRGB(40, 40, 40),
BackgroundTransparency = 1,
Position = UDim2.new(0, 2, 0, 2),
BackgroundColor3 = Color3.fromRGB(25, 25, 25),
AutoButtonColor = false,
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(210, 210, 210),
Text = name,
Font = Enum.Font.Code,
Parent = buttonholder
})

local bg = utility.create("Frame", {
ZIndex = 9,
Size = UDim2.new(1, 0, 1, 0),
BorderColor3 = Color3.fromRGB(40, 40, 40),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = button
})
local bggradient = utility.create("UIGradient", {
Rotation = 90,
Color = utility.gradient { Color3.fromRGB(35, 35, 35),
Color3.fromRGB(25, 25, 25) },
Parent = bg
})

local grayborder = utility.create("Frame", {


ZIndex = 8,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = button
})

local blackborder = utility.create("Frame", {


ZIndex = 7,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

button.MouseButton1Click:Connect(callback)

button.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
then
bggradient.Color = utility.gradient
{ Color3.fromRGB(45, 45, 45), Color3.fromRGB(35, 35, 35) }
end
end)

button.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
then
bggradient.Color = utility.gradient
{ Color3.fromRGB(35, 35, 35), Color3.fromRGB(25, 25, 25) }
end
end)

if #sectioncontent:GetChildren() - 1 <= max then


sectionholder.Size = UDim2.new(1, -1, 0,
sectionlist.AbsoluteContentSize.Y + 28)
end
end

function sectiontypes:Toggle(options)
options = utility.table(options)
local name = options.name
local default = options.default
local flag = options.pointer
local callback = options.callback or function() end

local toggleholder = utility.create("TextButton", {


Size = UDim2.new(1, -5, 0, 14),
BackgroundTransparency = 1,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextSize = 14,
TextColor3 = Color3.fromRGB(0, 0, 0),
Font = Enum.Font.SourceSans,
Parent = sectioncontent
})

local togglething = utility.create("TextButton", {


ZIndex = 9,
Size = UDim2.new(1, 0, 0, 14),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
BackgroundTransparency = 1,
TextTransparency = 1,
Parent = toggleholder
})

local icon = utility.create("Frame", {


ZIndex = 9,
Size = UDim2.new(0, 10, 0, 10),
BorderColor3 = Color3.fromRGB(40, 40, 40),
Position = UDim2.new(0, 2, 0, 2),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = toggleholder
})

local grayborder = utility.create("Frame", {


ZIndex = 8,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = icon
})

utility.create("Frame", {
ZIndex = 7,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local icongradient = utility.create("UIGradient", {


Rotation = 90,
Color = utility.gradient { Color3.fromRGB(35, 35, 35),
Color3.fromRGB(25, 25, 25) },
Parent = icon
})

local enablediconholder = utility.create("Frame", {


ZIndex = 10,
Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = 1,
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = icon
})

local enabledicongradient = utility.create("UIGradient", {


Rotation = 90,
Color = utility.gradient { library.accent,
Color3.fromRGB(25, 25, 25) },
Parent = enablediconholder
})

accentobjects.gradient[enabledicongradient] = function(color)
return utility.gradient { color, Color3.fromRGB(25, 25, 25)
}
end

local title = utility.create("TextLabel", {


ZIndex = 7,
Size = UDim2.new(0, 0, 0, 14),
BackgroundTransparency = 1,
Position = UDim2.new(0, 20, 0, 0),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(180, 180, 180),
Text = name,
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = toggleholder
})

local toggled = false

if flag then
library.flags[flag] = toggled
end

local function toggle()


if not switchingtabs then
toggled = not toggled

if flag then
library.flags[flag] = toggled
end

callback(toggled)

local enabledtransparency = toggled and 0 or 1


utility.tween(enablediconholder, { 0.2 },
{ Transparency = enabledtransparency })

local textcolor = toggled and library.accent or


Color3.fromRGB(180, 180, 180)
utility.tween(title, { 0.2 }, { TextColor3 =
textcolor })

if toggled then
table.insert(accentobjects.text, title)
elseif table.find(accentobjects.text, title) then
table.remove(accentobjects.text,
table.find(accentobjects.text, title))
end
end
end

togglething.MouseButton1Click:Connect(toggle)

local function set(bool)


if type(bool) == "boolean" and toggled ~= bool then
toggle()
end
end

if default then
set(default)
end

if flag then
flags[flag] = set
end

local toggletypes = utility.table()

function toggletypes:Toggle(bool)
set(bool)
end

function toggletypes:Colorpicker(newoptions)
newoptions = utility.table(newoptions)
local name = newoptions.name
local default = newoptions.default or Color3.fromRGB(255,
255, 255)
local colorpickertype = newoptions.mode
local toggleflag = colorpickertype and
colorpickertype:lower() == "toggle" and newoptions.togglepointer
local togglecallback = colorpickertype and
colorpickertype:lower() == "toggle" and newoptions.togglecallback or function() end
local flag = newoptions.pointer
local callback = newoptions.callback or function() end

local colorpickerframe = utility.create("Frame", {


ZIndex = 9,
Size = UDim2.new(1, -70, 0, 148),
Position = UDim2.new(1, -168, 0, 18),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Visible = false,
Parent = toggleholder
})

colorpickerframe.DescendantAdded:Connect(function(descendant)
if not opened then
task.wait()
if not descendant.ClassName:find("UI") then
if descendant.ClassName:find("Text") then
descendant.TextTransparency =
descendant.TextTransparency + 1
descendant.TextStrokeTransparency =
descendant.TextStrokeTransparency + 1
end

if descendant.ClassName:find("Image") then
descendant.ImageTransparency =
descendant.ImageTransparency + 1
end

descendant.BackgroundTransparency =
descendant.BackgroundTransparency + 1
end
end
end)

local bggradient = utility.create("UIGradient", {


Rotation = 90,
Color = utility.gradient { Color3.fromRGB(35, 35, 35),
Color3.fromRGB(25, 25, 25) },
Parent = colorpickerframe
})

local grayborder = utility.create("Frame", {


ZIndex = 8,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = colorpickerframe
})

local blackborder = utility.create("Frame", {


ZIndex = 7,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local saturationframe = utility.create("ImageLabel", {


ZIndex = 12,
Size = UDim2.new(0, 128, 0, 100),
BorderColor3 = Color3.fromRGB(50, 50, 50),
Position = UDim2.new(0, 6, 0, 6),
BorderSizePixel = 0,
BackgroundColor3 = default,
Image = "http://www.roblox.com/asset/?id=8630797271",
Parent = colorpickerframe
})

local grayborder = utility.create("Frame", {


ZIndex = 11,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = saturationframe
})
utility.create("Frame", {
ZIndex = 10,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local saturationpicker = utility.create("Frame", {


ZIndex = 13,
Size = UDim2.new(0, 2, 0, 2),
BorderColor3 = Color3.fromRGB(10, 10, 10),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = saturationframe
})

local hueframe = utility.create("ImageLabel", {


ZIndex = 12,
Size = UDim2.new(0, 14, 0, 100),
Position = UDim2.new(1, -20, 0, 6),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 193, 49),
ScaleType = Enum.ScaleType.Crop,
Image = "http://www.roblox.com/asset/?id=8630799159",
Parent = colorpickerframe
})

local grayborder = utility.create("Frame", {


ZIndex = 11,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = hueframe
})

utility.create("Frame", {
ZIndex = 10,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local huepicker = utility.create("Frame", {


ZIndex = 13,
Size = UDim2.new(1, 0, 0, 1),
BorderColor3 = Color3.fromRGB(10, 10, 10),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = hueframe
})

local boxholder = utility.create("Frame", {


Size = UDim2.new(1, -8, 0, 17),
ClipsDescendants = true,
Position = UDim2.new(0, 4, 0, 110),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = colorpickerframe
})

local box = utility.create("TextBox", {


ZIndex = 13,
Size = UDim2.new(1, -4, 1, -4),
BackgroundTransparency = 1,
Position = UDim2.new(0, 2, 0, 2),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(210, 210, 210),
Text = table.concat({ utility.getrgb(default) }, ", "),
PlaceholderText = "R, G, B",
Font = Enum.Font.Code,
Parent = boxholder
})

local grayborder = utility.create("Frame", {


ZIndex = 11,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = box
})

utility.create("Frame", {
ZIndex = 10,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local bg = utility.create("Frame", {
ZIndex = 12,
Size = UDim2.new(1, 0, 1, 0),
BorderColor3 = Color3.fromRGB(40, 40, 40),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = box
})

utility.create("UIGradient", {
Rotation = 90,
Color = utility.gradient { Color3.fromRGB(35, 35, 35),
Color3.fromRGB(25, 25, 25) },
Parent = bg
})

local rainbowtoggleholder = utility.create("TextButton", {


Size = UDim2.new(1, -8, 0, 14),
BackgroundTransparency = 1,
Position = UDim2.new(0, 4, 0, 130),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextSize = 14,
TextColor3 = Color3.fromRGB(0, 0, 0),
Font = Enum.Font.SourceSans,
Parent = colorpickerframe
})

local toggleicon = utility.create("Frame", {


ZIndex = 12,
Size = UDim2.new(0, 10, 0, 10),
BorderColor3 = Color3.fromRGB(40, 40, 40),
Position = UDim2.new(0, 2, 0, 2),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = rainbowtoggleholder
})

local enablediconholder = utility.create("Frame", {


ZIndex = 13,
Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = 1,
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = toggleicon
})

local enabledicongradient = utility.create("UIGradient", {


Rotation = 90,
Color = utility.gradient { library.accent,
Color3.fromRGB(25, 25, 25) },
Parent = enablediconholder
})

accentobjects.gradient[enabledicongradient] =
function(color)
return utility.gradient { color, Color3.fromRGB(25, 25,
25) }
end

local grayborder = utility.create("Frame", {


ZIndex = 11,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = toggleicon
})

utility.create("Frame", {
ZIndex = 10,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

utility.create("UIGradient", {
Rotation = 90,
Color = utility.gradient { Color3.fromRGB(35, 35, 35),
Color3.fromRGB(25, 25, 25) },
Parent = toggleicon
})

local rainbowtxt = utility.create("TextLabel", {


ZIndex = 10,
Size = UDim2.new(0, 0, 1, 0),
BackgroundTransparency = 1,
Position = UDim2.new(0, 20, 0, 0),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(180, 180, 180),
Text = "Rainbow",
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = rainbowtoggleholder
})

local colorpicker = utility.create("TextButton", {


Size = UDim2.new(1, 0, 0, 14),
BackgroundTransparency = 1,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextSize = 14,
TextColor3 = Color3.fromRGB(0, 0, 0),
Font = Enum.Font.SourceSans,
Parent = toggleholder
})

local icon = utility.create("TextButton", {


ZIndex = 9,
Size = UDim2.new(0, 18, 0, 10),
BorderColor3 = Color3.fromRGB(40, 40, 40),
Position = UDim2.new(1, -20, 0, 2),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = colorpicker,
Text = ""
})

local grayborder = utility.create("Frame", {


ZIndex = 8,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = icon
})

utility.create("Frame", {
ZIndex = 7,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local icongradient = utility.create("UIGradient", {


Rotation = 90,
Color = utility.gradient { default,
utility.changecolor(default, -200) },
Parent = icon
})

if #sectioncontent:GetChildren() - 1 <= max then


sectionholder.Size = UDim2.new(1, -1, 0,
sectionlist.AbsoluteContentSize.Y + 28)
end

local colorpickertypes = utility.table()

local opened = false


local opening = false

local function opencolorpicker()


if not opening then
opening = true

opened = not opened

if opened then
utility.tween(toggleholder, { 0.2 }, { Size =
UDim2.new(1, -5, 0, 168) })
end

local tween = utility.makevisible(colorpickerframe,


opened)

tween.Completed:Wait()

if not opened then


local tween = utility.tween(toggleholder, { 0.2
}, { Size = UDim2.new(1, -5, 0, 16) })
tween.Completed:Wait()
end

opening = false
end
end

icon.MouseButton1Click:Connect(opencolorpicker)

local hue, sat, val = default:ToHSV()

local slidinghue = false


local slidingsaturation = false

local hsv = Color3.fromHSV(hue, sat, val)

if flag then
library.flags[flag] = default
end

local function updatehue(input)


local sizeY = 1 - math.clamp((input.Position.Y -
hueframe.AbsolutePosition.Y) / hueframe.AbsoluteSize.Y, 0, 1)
local posY = math.clamp(((input.Position.Y -
hueframe.AbsolutePosition.Y) / hueframe.AbsoluteSize.Y) * hueframe.AbsoluteSize.Y,
0, hueframe.AbsoluteSize.Y - 2)
huepicker.Position = UDim2.new(0, 0, 0, posY)

hue = sizeY
hsv = Color3.fromHSV(sizeY, sat, val)

box.Text = math.clamp(math.floor((hsv.R * 255) + 0.5),


0, 255) .. ", " .. math.clamp(math.floor((hsv.B * 255) + 0.5), 0, 255) .. ", " ..
math.clamp(math.floor((hsv.G * 255) + 0.5), 0, 255)

saturationframe.BackgroundColor3 = hsv
icon.BackgroundColor3 = hsv

if flag then
library.flags[flag] = Color3.fromRGB(hsv.r * 255,
hsv.g * 255, hsv.b * 255)
end

callback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b


* 255))
end

hueframe.InputBegan:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton1 then
slidinghue = true
updatehue(input)
end
end)

hueframe.InputEnded:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton1 then
slidinghue = false
end
end)

services.InputService.InputChanged:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseMovement then
if slidinghue then
updatehue(input)
end
end
end)

local function updatesatval(input)


local sizeX = math.clamp((input.Position.X -
saturationframe.AbsolutePosition.X) / saturationframe.AbsoluteSize.X, 0, 1)
local sizeY = 1 - math.clamp((input.Position.Y -
saturationframe.AbsolutePosition.Y) / saturationframe.AbsoluteSize.Y, 0, 1)
local posY = math.clamp(((input.Position.Y -
saturationframe.AbsolutePosition.Y) / saturationframe.AbsoluteSize.Y) *
saturationframe.AbsoluteSize.Y, 0, saturationframe.AbsoluteSize.Y - 4)
local posX = math.clamp(((input.Position.X -
saturationframe.AbsolutePosition.X) / saturationframe.AbsoluteSize.X) *
saturationframe.AbsoluteSize.X, 0, saturationframe.AbsoluteSize.X - 4)

saturationpicker.Position = UDim2.new(0, posX, 0, posY)

sat = sizeX
val = sizeY
hsv = Color3.fromHSV(hue, sizeX, sizeY)

box.Text = math.clamp(math.floor((hsv.R * 255) + 0.5),


0, 255) .. ", " .. math.clamp(math.floor((hsv.B * 255) + 0.5), 0, 255) .. ", " ..
math.clamp(math.floor((hsv.G * 255) + 0.5), 0, 255)

saturationframe.BackgroundColor3 = hsv
icon.BackgroundColor3 = hsv

if flag then
library.flags[flag] = Color3.fromRGB(hsv.r * 255,
hsv.g * 255, hsv.b * 255)
end

callback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b


* 255))
end

saturationframe.InputBegan:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton1 then
slidingsaturation = true
updatesatval(input)
end
end)

saturationframe.InputEnded:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton1 then
slidingsaturation = false
end
end)

services.InputService.InputChanged:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseMovement then
if slidingsaturation then
updatesatval(input)
end
end
end)

local function set(color)


if type(color) == "table" then
color = Color3.fromRGB(unpack(color))
end

hue, sat, val = color:ToHSV()


hsv = Color3.fromHSV(hue, sat, val)

saturationframe.BackgroundColor3 = hsv
icon.BackgroundColor3 = hsv
saturationpicker.Position = UDim2.new(0,
(math.clamp(sat * saturationframe.AbsoluteSize.X, 0, saturationframe.AbsoluteSize.X
- 4)), 0, (math.clamp((1 - val) * saturationframe.AbsoluteSize.Y, 0,
saturationframe.AbsoluteSize.Y - 4)))
huepicker.Position = UDim2.new(0, 0, 0, math.clamp((1 -
hue) * saturationframe.AbsoluteSize.Y, 0, saturationframe.AbsoluteSize.Y - 4))

box.Text = math.clamp(math.floor((hsv.R * 255) + 0.5),


0, 255) .. ", " .. math.clamp(math.floor((hsv.B * 255) + 0.5), 0, 255) .. ", " ..
math.clamp(math.floor((hsv.G * 255) + 0.5), 0, 255)

if flag then
library.flags[flag] = Color3.fromRGB(hsv.r * 255,
hsv.g * 255, hsv.b * 255)
end

callback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b


* 255))
end

local toggled = false

local function toggle()


if not switchingtabs then
toggled = not toggled

if toggled then
task.spawn(function()
while toggled do
for i = 0, 1, 0.0015 do
if not toggled then
return
end

local color = Color3.fromHSV(i, 1,


1)
set(color)

task.wait()
end
end
end)
end

local enabledtransparency = toggled and 0 or 1


utility.tween(enablediconholder, { 0.2 },
{ BackgroundTransparency = enabledtransparency })

local textcolor = toggled and library.accent or


Color3.fromRGB(180, 180, 180)
utility.tween(rainbowtxt, { 0.2 }, { TextColor3 =
textcolor })

if toggled then
table.insert(accentobjects.text, title)
elseif table.find(accentobjects.text, title) then
table.remove(accentobjects.text,
table.find(accentobjects.text, title))
end
end
end

rainbowtoggleholder.MouseButton1Click:Connect(toggle)

box.FocusLost:Connect(function()
local _, amount = box.Text:gsub(", ", "")

if amount == 2 then
local values = box.Text:split(", ")
local r, g, b = math.clamp(values[1], 0, 255),
math.clamp(values[2], 0, 255), math.clamp(values[3], 0, 255)
set(Color3.fromRGB(r, g, b))
else
rgb.Text = math.floor((hsv.r * 255) + 0.5) .. ",
" .. math.floor((hsv.g * 255) + 0.5) .. ", " .. math.floor((hsv.b * 255) + 0.5)
end
end)

if default then
set(default)
end

if flag then
flags[flag] = set
end

local colorpickertypes = utility.table()

function colorpickertypes:Set(color)
set(color)
end
end

if #sectioncontent:GetChildren() - 1 <= max then


sectionholder.Size = UDim2.new(1, -1, 0,
sectionlist.AbsoluteContentSize.Y + 28)
end

return toggletypes
end

function sectiontypes:Box(options)
options = utility.table(options)
local name = options.name
local placeholder = options.placeholder or ""
local default = options.default
local boxtype = options.type or "string"
local flag = options.pointer
local callback = options.callback or function() end

local boxholder = utility.create("Frame", {


Size = UDim2.new(1, -5, 0, 32),
ClipsDescendants = true,
BorderColor3 = Color3.fromRGB(27, 42, 53),
BackgroundTransparency = 1,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = sectioncontent
})
utility.create("TextLabel", {
ZIndex = 7,
Size = UDim2.new(0, 0, 0, 13),
BackgroundTransparency = 1,
Position = UDim2.new(0, 1, 0, 0),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(210, 210, 210),
Text = name,
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = boxholder
})

local box = utility.create("TextBox", {


ZIndex = 10,
Size = UDim2.new(1, -4, 0, 13),
BackgroundTransparency = 1,
Position = UDim2.new(0, 2, 0, 17),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
PlaceholderColor3 = Color3.fromRGB(120, 120, 120),
TextSize = 13,
TextColor3 = Color3.fromRGB(210, 210, 210),
Text = "",
PlaceholderText = placeholder,
Font = Enum.Font.Code,
Parent = boxholder
})

local bg = utility.create("Frame", {
ZIndex = 9,
Size = UDim2.new(1, 0, 1, 0),
BorderColor3 = Color3.fromRGB(40, 40, 40),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = box
})

local bggradient = utility.create("UIGradient", {


Rotation = 90,
Color = ColorSequence.new(Color3.fromRGB(35, 35, 35),
Color3.fromRGB(25, 25, 25)),
Parent = bg
})

local grayborder = utility.create("Frame", {


ZIndex = 8,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = box
})
local blackborder = utility.create("Frame", {
ZIndex = 7,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

if #sectioncontent:GetChildren() - 1 <= max then


sectionholder.Size = UDim2.new(1, -1, 0,
sectionlist.AbsoluteContentSize.Y + 28)
end

if flag then
library.flags[flag] = default or ""
end

local function set(str)


if boxtype:lower() == "number" then
str = str:gsub("%D+", "")
end

box.Text = str

if flag then
library.flags[flag] = str
end

callback(str)
end

if default then
set(default)
end

if boxtype:lower() == "number" then


box:GetPropertyChangedSignal("Text"):Connect(function()
box.Text = box.Text:gsub("%D+", "")
end)
end

box.FocusLost:Connect(function()
set(box.Text)
end)

if flag then
flags[flag] = set
end

local boxtypes = utility.table()

function boxtypes:Set(str)
set(str)
end

return boxtypes
end
function sectiontypes:Slider(options)
options = utility.table(options)
local name = options.name
local min = options.minimum or 0
local slidermax = options.maximum or 100
local valuetext = options.value or "[value]/" .. slidermax
local increment = options.decimals or 0.5
local default = options.default and math.clamp(options.default,
min, slidermax) or min
local flag = options.pointer
local callback = options.callback or function() end

local sliderholder = utility.create("Frame", {


Size = UDim2.new(1, -5, 0, 28),
BackgroundTransparency = 1,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = sectioncontent
})

local slider = utility.create("Frame", {


ZIndex = 10,
Size = UDim2.new(1, -4, 0, 9),
BackgroundTransparency = 1,
Position = UDim2.new(0, 2, 1, -11),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = sliderholder
})

local grayborder = utility.create("Frame", {


ZIndex = 8,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = slider
})

utility.create("Frame", {
ZIndex = 7,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local bg = utility.create("Frame", {
ZIndex = 9,
Size = UDim2.new(1, 0, 1, 0),
BorderColor3 = Color3.fromRGB(40, 40, 40),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = slider
})

utility.create("UIGradient", {
Rotation = 90,
Color = ColorSequence.new(Color3.fromRGB(35, 35, 35),
Color3.fromRGB(25, 25, 25)),
Parent = bg
})

local fill = utility.create("Frame", {


ZIndex = 11,
Size = UDim2.new((default - min) / (slidermax - min), 0, 1,
0),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = slider
})

local fillgradient = utility.create("UIGradient", {


Rotation = 90,
Color = utility.gradient { library.accent,
Color3.fromRGB(25, 25, 25) },
Parent = fill
})

accentobjects.gradient[fillgradient] = function(color)
return utility.gradient { color, Color3.fromRGB(25, 25, 25)
}
end

local valuelabel = utility.create("TextLabel", {


ZIndex = 12,
Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = 1,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(210, 210, 210),
Text = valuetext:gsub("%[value%]", tostring(default)),
Font = Enum.Font.Code,
Parent = slider
})

utility.create("TextLabel", {
ZIndex = 7,
Size = UDim2.new(0, 0, 0, 13),
BackgroundTransparency = 1,
Position = UDim2.new(0, 1, 0, 0),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(210, 210, 210),
Text = name,
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = sliderholder
})

if #sectioncontent:GetChildren() - 1 <= max then


sectionholder.Size = UDim2.new(1, -1, 0,
sectionlist.AbsoluteContentSize.Y + 28)
end
local sliding = false

local function slide(input)


local sizeX = math.clamp((input.Position.X -
slider.AbsolutePosition.X) / slider.AbsoluteSize.X, 0, 1)
local newincrement = (slidermax / ((slidermax - min) /
(increment * 4)))
local newsizeX = math.floor(sizeX * (((slidermax - min) /
newincrement) * 4)) / (((slidermax - min) / newincrement) * 4)

utility.tween(fill, { newincrement / 80 }, { Size =


UDim2.new(newsizeX, 0, 1, 0) })

local value = math.floor((newsizeX * (slidermax - min) +


min) * 20) / 20
valuelabel.Text = valuetext:gsub("%[value%]",
tostring(value))

if flag then
library.flags[flag] = value
end

callback(value)
end

slider.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
then
sliding = true
slide(input)
end
end)

slider.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
then
sliding = false
end
end)

services.InputService.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement
then
if sliding then
slide(input)
end
end
end)

local function set(value)


value = math.clamp(value, min, slidermax)

local sizeX = ((value - min)) / (slidermax - min)


local newincrement = (slidermax / ((slidermax - min) /
(increment * 4)))

local newsizeX = math.floor(sizeX * (((slidermax - min) /


newincrement) * 4)) / (((slidermax - min) / newincrement) * 4)
value = math.floor((newsizeX * (slidermax - min) + min) *
20) / 20

fill.Size = UDim2.new(newsizeX, 0, 1, 0)
valuelabel.Text = valuetext:gsub("%[value%]",
tostring(value))

if flag then
library.flags[flag] = value
end

callback(value)
end

if default then
set(default)
end

if flag then
flags[flag] = set
end

local slidertypes = utility.table()

function slidertypes:Set(value)
set(value)
end

return slidertypes
end

function sectiontypes:Dropdown(options)
options = utility.table(options)
local name = options.name
local content = options["options"]
local maxoptions = options.maximum and (options.maximum > 1 and
options.maximum)
local default = options.default or maxoptions and {}
local flag = options.pointer
local callback = options.callback or function() end

if maxoptions then
for i, def in next, default do
if not table.find(content, def) then
table.remove(default, i)
end
end
else
if not table.find(content, default) then
default = nil
end
end

local defaulttext = default and ((type(default) == "table" and


table.concat(default, ", ")) or default)

local opened = false

local dropdownholder = utility.create("Frame", {


Size = UDim2.new(1, -5, 0, 32),
BackgroundTransparency = 1,
Position = UDim2.new(0, 0, 0, 0),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = sectioncontent
})

local dropdown = utility.create("TextButton", {


ZIndex = 10,
Size = UDim2.new(1, -4, 0, 13),
BorderColor3 = Color3.fromRGB(40, 40, 40),
BackgroundTransparency = 1,
Position = UDim2.new(0, 2, 0, 17),
BackgroundColor3 = Color3.fromRGB(25, 25, 25),
AutoButtonColor = false,
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = default and (defaulttext ~= "" and
Color3.fromRGB(210, 210, 210) or Color3.fromRGB(120, 120, 120)) or
Color3.fromRGB(120, 120, 120),
Text = default and (defaulttext ~= "" and defaulttext or
"NONE") or "NONE",
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = dropdownholder
})

local bg = utility.create("Frame", {
ZIndex = 9,
Size = UDim2.new(1, 6, 1, 0),
BorderColor3 = Color3.fromRGB(40, 40, 40),
Position = UDim2.new(0, -6, 0, 0),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = dropdown
})

local bggradient = utility.create("UIGradient", {


Rotation = 90,
Color = ColorSequence.new(Color3.fromRGB(35, 35, 35),
Color3.fromRGB(25, 25, 25)),
Parent = bg
})

local textpadding = utility.create("UIPadding", {


PaddingLeft = UDim.new(0, 6),
Parent = dropdown
})

local grayborder = utility.create("Frame", {


ZIndex = 8,
Size = UDim2.new(1, 8, 1, 2),
Position = UDim2.new(0, -7, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = dropdown
})

utility.create("Frame", {
ZIndex = 7,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local icon = utility.create("TextLabel", {


ZIndex = 11,
Size = UDim2.new(0, 13, 1, 0),
BackgroundTransparency = 1,
Position = UDim2.new(1, -13, 0, 0),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size12,
TextStrokeTransparency = 0,
TextSize = 12,
TextColor3 = Color3.fromRGB(210, 210, 210),
Text = "+",
Font = Enum.Font.Gotham,
Parent = dropdown
})

utility.create("TextLabel", {
ZIndex = 7,
Size = UDim2.new(0, 0, 0, 13),
BackgroundTransparency = 1,
Position = UDim2.new(0, 1, 0, 0),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(210, 210, 210),
Text = name,
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = dropdownholder
})

local contentframe = utility.create("Frame", {


ZIndex = 9,
Size = UDim2.new(1, -4, 1, -38),
Position = UDim2.new(0, 2, 0, 36),
BorderSizePixel = 0,
Visible = false,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = dropdownholder
})

local opened = false


contentframe.DescendantAdded:Connect(function(descendant)
if not opened then
task.wait()
if not descendant.ClassName:find("UI") then
if descendant.ClassName:find("Text") then
descendant.TextTransparency =
descendant.TextTransparency + 1
descendant.TextStrokeTransparency =
descendant.TextStrokeTransparency + 1
end

descendant.BackgroundTransparency =
descendant.BackgroundTransparency + 1
end
end
end)

local contentframegradient = utility.create("UIGradient", {


Rotation = 90,
Color = ColorSequence.new(Color3.fromRGB(35, 35, 35),
Color3.fromRGB(25, 25, 25)),
Parent = contentframe
})

local grayborder = utility.create("Frame", {


ZIndex = 8,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = contentframe
})

utility.create("Frame", {
ZIndex = 7,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local dropdowncontent = utility.create("Frame", {


Size = UDim2.new(1, -2, 1, -2),
Position = UDim2.new(0, 1, 0, 1),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = contentframe
})

local dropdowncontentlist = utility.create("UIListLayout", {


SortOrder = Enum.SortOrder.LayoutOrder,
Padding = UDim.new(0, 2),
Parent = dropdowncontent
})

local option = utility.create("TextButton", {


ZIndex = 12,
Size = UDim2.new(1, 0, 0, 16),
BorderColor3 = Color3.fromRGB(50, 50, 50),
BackgroundTransparency = 1,
Position = UDim2.new(0, 2, 0, 2),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(22, 22, 22),
AutoButtonColor = false,
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(150, 150, 150),
Text = "",
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left
})

utility.create("UIPadding", {
PaddingLeft = UDim.new(0, 10),
Parent = option
})

if #sectioncontent:GetChildren() - 1 <= max then


sectionholder.Size = UDim2.new(1, -1, 0,
sectionlist.AbsoluteContentSize.Y + 28)
end

local opening = false

local function opendropdown()


if not opening then
opening = true

opened = not opened

utility.tween(icon, { 0.2 }, { TextTransparency = 1,


TextStrokeTransparency = 1 }, function()
icon.Text = opened and "-" or "+"
end)

if opened then
utility.tween(dropdownholder, { 0.2 }, { Size =
UDim2.new(1, -5, 0, dropdowncontentlist.AbsoluteContentSize.Y + 40) })
end

local tween = utility.makevisible(contentframe, opened)

tween.Completed:Wait()

if not opened then


local tween = utility.tween(dropdownholder,
{ 0.2 }, { Size = UDim2.new(1, -5, 0, 32) })
tween.Completed:Wait()
end

utility.tween(icon, { 0.2 }, { TextTransparency = 0,


TextStrokeTransparency = 0 })

opening = false
end
end

dropdown.MouseButton1Click:Connect(opendropdown)

local chosen = maxoptions and {}


local choseninstances = {}
local optioninstances = {}

if flag then
library.flags[flag] = default
end
for _, opt in next, content do
if not maxoptions then
local optionbtn = option:Clone()
optionbtn.Parent = dropdowncontent
optionbtn.Text = opt

optioninstances[opt] = optionbtn

if default == opt then


chosen = opt
optionbtn.BackgroundTransparency = 0
optionbtn.TextColor3 = Color3.fromRGB(210, 210,
210)
end

optionbtn.MouseButton1Click:Connect(function()
if chosen ~= opt then
for _, optbtn in next,
dropdowncontent:GetChildren() do
if optbtn ~= optionbtn and
optbtn:IsA("TextButton") then
utility.tween(optbtn, { 0.2 },
{ BackgroundTransparency = 1, TextColor3 = Color3.fromRGB(150, 150, 150) })
end
end

utility.tween(optionbtn, { 0.2 },
{ BackgroundTransparency = 0, TextColor3 = Color3.fromRGB(210, 210, 210) })

local tween = utility.tween(dropdown, { 0.2 },


{ TextTransparency = 1, TextStrokeTransparency = 1 }, function()
dropdown.Text = opt
end)

chosen = opt

tween.Completed:Wait()

utility.tween(dropdown, { 0.2 },
{ TextTransparency = 0, TextStrokeTransparency = 0, TextColor3 =
Color3.fromRGB(210, 210, 210) })

if flag then
library.flags[flag] = opt
end

callback(opt)
else
utility.tween(optionbtn, { 0.2 },
{ BackgroundTransparency = 1, TextColor3 = Color3.fromRGB(150, 150, 150) })

local tween = utility.tween(dropdown, { 0.2 },


{ TextTransparency = 1, TextStrokeTransparency = 1 }, function()
dropdown.Text = "NONE"
end)

tween.Completed:Wait()
utility.tween(dropdown, { 0.2 },
{ TextTransparency = 0, TextStrokeTransparency = 0, TextColor3 =
Color3.fromRGB(150, 150, 150) })
chosen = nil

if flag then
library.flags[flag] = nil
end

callback(nil)
end
end)
else
local optionbtn = option:Clone()
optionbtn.Parent = dropdowncontent
optionbtn.Text = opt

optioninstances[opt] = optionbtn

if table.find(default, opt) then


chosen = opt
optionbtn.BackgroundTransparency = 0
optionbtn.TextColor3 = Color3.fromRGB(210, 210,
210)
end

optionbtn.MouseButton1Click:Connect(function()
if not table.find(chosen, opt) then
if #chosen >= maxoptions then
table.remove(chosen, 1)
utility.tween(choseninstances[1], { 0.2 },
{ BackgroundTransparency = 1, TextColor3 = Color3.fromRGB(150, 150, 150) })
table.remove(choseninstances, 1)
end

utility.tween(optionbtn, { 0.2 },
{ BackgroundTransparency = 0, TextColor3 = Color3.fromRGB(210, 210, 210) })

table.insert(chosen, opt)
table.insert(choseninstances, optionbtn)

local tween = utility.tween(dropdown, { 0.2 },


{ TextTransparency = 1, TextStrokeTransparency = 1 }, function()
dropdown.Text = table.concat(chosen, ", ")
end)

tween.Completed:Wait()

utility.tween(dropdown, { 0.2 },
{ TextTransparency = 0, TextStrokeTransparency = 0, TextColor3 =
Color3.fromRGB(210, 210, 210) })

if flag then
library.flags[flag] = chosen
end

callback(chosen)
else
utility.tween(optionbtn, { 0.2 },
{ BackgroundTransparency = 1, TextColor3 = Color3.fromRGB(150, 150, 150) })

table.remove(chosen, table.find(chosen, opt))


table.remove(choseninstances,
table.find(choseninstances, optionbtn))

local tween = utility.tween(dropdown, { 0.2 },


{ TextTransparency = 1, TextStrokeTransparency = 1 }, function()
dropdown.Text = table.concat(chosen, ", ")
~= "" and table.concat(chosen, ", ") or "NONE"
end)

tween.Completed:Wait()

utility.tween(dropdown, { 0.2 },
{ TextTransparency = 0, TextStrokeTransparency = 0, TextColor3 =
table.concat(chosen, ", ") ~= "" and Color3.fromRGB(210, 210, 210) or
Color3.fromRGB(150, 150, 150) })

if flag then
library.flags[flag] = chosen
end

callback(chosen)
end
end)
end
end

local function set(opt)


if not maxoptions then
if optioninstances[opt] then
for _, optbtn in next,
dropdowncontent:GetChildren() do
if optbtn ~= optioninstances[opt] and
optbtn:IsA("TextButton") then
utility.tween(optbtn, { 0.2 },
{ BackgroundTransparency = 1, TextColor3 = Color3.fromRGB(150, 150, 150) })
end
end

utility.tween(optioninstances[opt], { 0.2 },
{ BackgroundTransparency = 0, TextColor3 = Color3.fromRGB(210, 210, 210) })

local tween = utility.tween(dropdown, { 0.2 },


{ TextTransparency = 1, TextStrokeTransparency = 1 }, function()
dropdown.Text = opt
end)

chosen = opt

tween.Completed:Wait()

utility.tween(dropdown, { 0.2 }, { TextTransparency


= 0, TextStrokeTransparency = 0, TextColor3 = Color3.fromRGB(210, 210, 210) })

if flag then
library.flags[flag] = opt
end
callback(opt)
else
for _, optbtn in next,
dropdowncontent:GetChildren() do
if optbtn:IsA("TextButton") then
utility.tween(optbtn, { 0.2 },
{ BackgroundTransparency = 1, TextColor3 = Color3.fromRGB(150, 150, 150) })
end
end

local tween = utility.tween(dropdown, { 0.2 },


{ TextTransparency = 1, TextStrokeTransparency = 1 }, function()
dropdown.Text = "NONE"
end)

tween.Completed:Wait()

utility.tween(dropdown, { 0.2 }, { TextTransparency


= 0, TextStrokeTransparency = 0, TextColor3 = Color3.fromRGB(150, 150, 150) })
chosen = nil

if flag then
library.flags[flag] = nil
end

callback(nil)
end
else
table.clear(chosen)
table.clear(choseninstances)

if not opt then


local tween = utility.tween(dropdown, { 0.2 },
{ TextTransparency = 1, TextStrokeTransparency = 1 }, function()
dropdown.Text = table.concat(chosen, ", ") ~=
"" and table.concat(chosen, ", ") or "NONE"
end)

tween.Completed:Wait()

utility.tween(dropdown, { 0.2 }, { TextTransparency


= 0, TextStrokeTransparency = 0, TextColor3 = table.concat(chosen, ", ") ~= "" and
Color3.fromRGB(210, 210, 210) or Color3.fromRGB(150, 150, 150) })

if flag then
library.flags[flag] = chosen
end

callback(chosen)
else
for _, opti in next, opt do
if optioninstances[opti] then
if #chosen >= maxoptions then
table.remove(chosen, 1)
utility.tween(choseninstances[1], { 0.2
}, { BackgroundTransparency = 1, TextColor3 = Color3.fromRGB(150, 150, 150) })
table.remove(choseninstances, 1)
end
utility.tween(optioninstances[opti],
{ 0.2 }, { BackgroundTransparency = 0, TextColor3 = Color3.fromRGB(210, 210,
210) })

if not table.find(chosen, opti) then


table.insert(chosen, opti)
end

if not table.find(choseninstances, opti)


then
table.insert(choseninstances,
optioninstances[opti])
end

local tween = utility.tween(dropdown, { 0.2


}, { TextTransparency = 1, TextStrokeTransparency = 1 }, function()
dropdown.Text = table.concat(chosen, ",
")
end)

tween.Completed:Wait()

utility.tween(dropdown, { 0.2 },
{ TextTransparency = 0, TextStrokeTransparency = 0, TextColor3 =
Color3.fromRGB(210, 210, 210) })

if flag then
library.flags[flag] = chosen
end

callback(chosen)
end
end
end
end
end

if flag then
flags[flag] = set
end

local dropdowntypes = utility.table()

function dropdowntypes:Set(option)
set(option)
end

function dropdowntypes:Refresh(content)
if maxoptions then
table.clear(chosen)
end

table.clear(choseninstances)
table.clear(optioninstances)

for _, optbtn in next, dropdowncontent:GetChildren() do


if optbtn:IsA("TextButton") then
optbtn:Destroy()
end
end

set()

for _, opt in next, content do


if not maxoptions then
local optionbtn = option:Clone()
optionbtn.Parent = dropdowncontent
optionbtn.BackgroundTransparency = 2
optionbtn.Text = opt
optionbtn.TextTransparency = 1
optionbtn.TextStrokeTransparency = 1

optioninstances[opt] = optionbtn

optionbtn.MouseButton1Click:Connect(function()
if chosen ~= opt then
for _, optbtn in next,
dropdowncontent:GetChildren() do
if optbtn ~= optionbtn and
optbtn:IsA("TextButton") then
utility.tween(optbtn, { 0.2 },
{ BackgroundTransparency = 1, TextColor3 = Color3.fromRGB(150, 150, 150) })
end
end

utility.tween(optionbtn, { 0.2 },
{ BackgroundTransparency = 0, TextColor3 = Color3.fromRGB(210, 210, 210) })

local tween = utility.tween(dropdown, { 0.2


}, { TextTransparency = 1, TextStrokeTransparency = 1 }, function()
dropdown.Text = opt
end)

chosen = opt

tween.Completed:Wait()

utility.tween(dropdown, { 0.2 },
{ TextTransparency = 0, TextStrokeTransparency = 0, TextColor3 =
Color3.fromRGB(210, 210, 210) })

if flag then
library.flags[flag] = opt
end

callback(opt)
else
utility.tween(optionbtn, { 0.2 },
{ BackgroundTransparency = 1, TextColor3 = Color3.fromRGB(150, 150, 150) })

local tween = utility.tween(dropdown, { 0.2


}, { TextTransparency = 1, TextStrokeTransparency = 1 }, function()
dropdown.Text = "NONE"
end)

tween.Completed:Wait()
utility.tween(dropdown, { 0.2 },
{ TextTransparency = 0, TextStrokeTransparency = 0, TextColor3 =
Color3.fromRGB(150, 150, 150) })
chosen = nil

if flag then
library.flags[flag] = nil
end

callback(nil)
end
end)
else
local optionbtn = option:Clone()
optionbtn.Parent = dropdowncontent
optionbtn.Text = opt

optioninstances[opt] = optionbtn

if table.find(default, opt) then


chosen = opt
optionbtn.BackgroundTransparency = 0
optionbtn.TextColor3 = Color3.fromRGB(210, 210,
210)
end

optionbtn.MouseButton1Click:Connect(function()
if not table.find(chosen, opt) then
if #chosen >= maxoptions then
table.remove(chosen, 1)
utility.tween(choseninstances[1], { 0.2
}, { BackgroundTransparency = 1, TextColor3 = Color3.fromRGB(150, 150, 150) })
table.remove(choseninstances, 1)
end

utility.tween(optionbtn, { 0.2 },
{ BackgroundTransparency = 0, TextColor3 = Color3.fromRGB(210, 210, 210) })

table.insert(chosen, opt)
table.insert(choseninstances, optionbtn)

local tween = utility.tween(dropdown, { 0.2


}, { TextTransparency = 1, TextStrokeTransparency = 1 }, function()
dropdown.Text = table.concat(chosen, ",
")
end)

tween.Completed:Wait()

utility.tween(dropdown, { 0.2 },
{ TextTransparency = 0, TextStrokeTransparency = 0, TextColor3 =
Color3.fromRGB(210, 210, 210) })

if flag then
library.flags[flag] = chosen
end

callback(chosen)
else
utility.tween(optionbtn, { 0.2 },
{ BackgroundTransparency = 1, TextColor3 = Color3.fromRGB(150, 150, 150) })

table.remove(chosen, table.find(chosen,
opt))
table.remove(choseninstances,
table.find(choseninstances, optionbtn))

local tween = utility.tween(dropdown, { 0.2


}, { TextTransparency = 1, TextStrokeTransparency = 1 }, function()
dropdown.Text = table.concat(chosen, ",
") ~= "" and table.concat(chosen, ", ") or "NONE"
end)

tween.Completed:Wait()

utility.tween(dropdown, { 0.2 },
{ TextTransparency = 0, TextStrokeTransparency = 0, TextColor3 =
table.concat(chosen, ", ") ~= "" and Color3.fromRGB(210, 210, 210) or
Color3.fromRGB(150, 150, 150) })

if flag then
library.flags[flag] = chosen
end

callback(chosen)
end
end)
end
end
end

return dropdowntypes
end

function sectiontypes:Multibox(options)
local newoptions = {}
for i, v in next, options do
newoptions[i:lower()] = v
end

newoptions.maximum = newoptions.maximum or math.huge


return sectiontypes:Dropdown(newoptions)
end

function sectiontypes:Keybind(options)
options = utility.table(options)
local name = options.name
local keybindtype = options.mode
local default = options.default
local toggledefault = keybindtype and keybindtype:lower() ==
"toggle" and options.toggledefault
local toggleflag = keybindtype and keybindtype:lower() ==
"toggle" and options.togglepointer
local togglecallback = keybindtype and keybindtype:lower() ==
"toggle" and options.togglecallback or function() end
local holdflag = keybindtype and keybindtype:lower() == "hold"
and options.holdflag
local holdcallback = keybindtype and keybindtype:lower() ==
"hold" and options.holdcallback or function() end
local blacklist = options.blacklist or {}
local flag = options.pointer
local callback = options.callback or function() end

table.insert(blacklist, Enum.UserInputType.Focus)

local keybindholder = utility.create("TextButton", {


Size = UDim2.new(1, -5, 0, 14),
BackgroundTransparency = 1,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextSize = 14,
TextColor3 = Color3.fromRGB(0, 0, 0),
Font = Enum.Font.SourceSans,
Parent = sectioncontent
})

local icon, grayborder, enablediconholder


do
if keybindtype and keybindtype:lower() == "toggle" then
icon = utility.create("Frame", {
ZIndex = 9,
Size = UDim2.new(0, 10, 0, 10),
BorderColor3 = Color3.fromRGB(40, 40, 40),
Position = UDim2.new(0, 2, 0, 2),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = keybindholder
})

grayborder = utility.create("Frame", {
ZIndex = 8,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = icon
})

utility.create("UIGradient", {
Rotation = 90,
Color = ColorSequence.new(Color3.fromRGB(35, 35,
35), Color3.fromRGB(25, 25, 25)),
Parent = icon
})

utility.create("Frame", {
ZIndex = 7,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

enablediconholder = utility.create("Frame", {
ZIndex = 10,
Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = 1,
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = icon
})

local enabledicongradient =
utility.create("UIGradient", {
Rotation = 90,
Color = utility.gradient { library.accent,
Color3.fromRGB(25, 25, 25) },
Parent = enablediconholder
})

accentobjects.gradient[enabledicongradient] =
function(color)
return utility.gradient { color, Color3.fromRGB(25,
25, 25) }
end
end
end

local title = utility.create("TextLabel", {


ZIndex = 7,
Size = UDim2.new(0, 0, 1, 0),
BackgroundTransparency = 1,
Position = keybindtype and keybindtype:lower() == "toggle"
and UDim2.new(0, 20, 0, 0) or UDim2.new(0, 1, 0, 0),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = (keybindtype and keybindtype:lower() ==
"toggle" and Color3.fromRGB(180, 180, 180)) or Color3.fromRGB(210, 210, 210),
Text = name,
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = keybindholder
})

local keytext = utility.create(keybindtype and


keybindtype:lower() == "toggle" and "TextButton" or "TextLabel", {
ZIndex = 7,
Size = keybindtype and keybindtype:lower() == "toggle" and
UDim2.new(0, 45, 1, 0) or UDim2.new(0, 0, 1, 0),
BackgroundTransparency = 1,
Position = keybindtype and keybindtype:lower() == "toggle"
and UDim2.new(1, -45, 0, 0) or UDim2.new(1, 0, 0, 0),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
TextColor3 = Color3.fromRGB(150, 150, 150),
Text = "[NONE]",
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Right,
Parent = keybindholder
})

utility.create("UIPadding", {
PaddingBottom = UDim.new(0, 1),
Parent = keytext
})

if #sectioncontent:GetChildren() - 1 <= max then


sectionholder.Size = UDim2.new(1, -1, 0,
sectionlist.AbsoluteContentSize.Y + 28)
end

local keys = {
[Enum.KeyCode.LeftShift] = "L-SHIFT",
[Enum.KeyCode.RightShift] = "R-SHIFT",
[Enum.KeyCode.LeftControl] = "L-CTRL",
[Enum.KeyCode.RightControl] = "R-CTRL",
[Enum.KeyCode.LeftAlt] = "L-ALT",
[Enum.KeyCode.RightAlt] = "R-ALT",
[Enum.KeyCode.CapsLock] = "CAPSLOCK",
[Enum.KeyCode.One] = "1",
[Enum.KeyCode.Two] = "2",
[Enum.KeyCode.Three] = "3",
[Enum.KeyCode.Four] = "4",
[Enum.KeyCode.Five] = "5",
[Enum.KeyCode.Six] = "6",
[Enum.KeyCode.Seven] = "7",
[Enum.KeyCode.Eight] = "8",
[Enum.KeyCode.Nine] = "9",
[Enum.KeyCode.Zero] = "0",
[Enum.KeyCode.KeypadOne] = "NUM-1",
[Enum.KeyCode.KeypadTwo] = "NUM-2",
[Enum.KeyCode.KeypadThree] = "NUM-3",
[Enum.KeyCode.KeypadFour] = "NUM-4",
[Enum.KeyCode.KeypadFive] = "NUM-5",
[Enum.KeyCode.KeypadSix] = "NUM-6",
[Enum.KeyCode.KeypadSeven] = "NUM-7",
[Enum.KeyCode.KeypadEight] = "NUM-8",
[Enum.KeyCode.KeypadNine] = "NUM-9",
[Enum.KeyCode.KeypadZero] = "NUM-0",
[Enum.KeyCode.Minus] = "-",
[Enum.KeyCode.Equals] = "=",
[Enum.KeyCode.Tilde] = "~",
[Enum.KeyCode.LeftBracket] = "[",
[Enum.KeyCode.RightBracket] = "]",
[Enum.KeyCode.RightParenthesis] = ")",
[Enum.KeyCode.LeftParenthesis] = "(",
[Enum.KeyCode.Semicolon] = ",",
[Enum.KeyCode.Quote] = "'",
[Enum.KeyCode.BackSlash] = "\\",
[Enum.KeyCode.Comma] = ",",
[Enum.KeyCode.Period] = ".",
[Enum.KeyCode.Slash] = "/",
[Enum.KeyCode.Asterisk] = "*",
[Enum.KeyCode.Plus] = "+",
[Enum.KeyCode.Period] = ".",
[Enum.KeyCode.Backquote] = "`",
[Enum.UserInputType.MouseButton1] = "MOUSE-1",
[Enum.UserInputType.MouseButton2] = "MOUSE-2",
[Enum.UserInputType.MouseButton3] = "MOUSE-3"
}

local keychosen
local isbinding = false
local function startbinding()
isbinding = true
keytext.Text = "[...]"
keytext.TextColor3 = Color3.fromRGB(210, 210, 210)

local binding
binding =
services.InputService.InputBegan:Connect(function(input)
local key = keys[input.KeyCode] or
keys[input.UserInputType]
keytext.Text = "[" .. (key or
tostring(input.KeyCode):gsub("Enum.KeyCode.", "")) .. "]"
keytext.TextColor3 = Color3.fromRGB(180, 180, 180)
keytext.Size = UDim2.new(0, keytext.TextBounds.X, 1, 0)
keytext.Position = UDim2.new(1, -keytext.TextBounds.X,
0, 0)

if input.UserInputType == Enum.UserInputType.Keyboard
then
task.wait()
if not table.find(blacklist, input.KeyCode) then
keychosen = input.KeyCode

if flag then
library.flags[flag] = input.KeyCode
end

binding:Disconnect()
else
keychosen = nil
keytext.TextColor3 = Color3.fromRGB(180, 180,
180)
keytext.Text = "NONE"

if flag then
library.flags[flag] = nil
end

binding:Disconnect()
end
else
if not table.find(blacklist, input.UserInputType)
then
keychosen = input.UserInputType

if flag then
library.flags[flag] = input.UserInputType
end

binding:Disconnect()
else
keychosen = nil
keytext.TextColor3 = Color3.fromRGB(180, 180,
180)
keytext.Text = "[NONE]"

keytext.Size = UDim2.new(0,
keytext.TextBounds.X, 1, 0)
keytext.Position = UDim2.new(1, -
keytext.TextBounds.X, 0, 0)

if flag then
library.flags[flag] = nil
end

binding:Disconnect()
end
end
end)
end

if not keybindtype or keybindtype:lower() == "hold" then


keybindholder.MouseButton1Click:Connect(startbinding)
else
keytext.MouseButton1Click:Connect(startbinding)
end

local keybindtypes = utility.table()

if keybindtype and keybindtype:lower() == "toggle" then


local toggled = false

if toggleflag then
library.flags[toggleflag] = toggled
end

local function toggle()


if not switchingtabs then
toggled = not toggled

if toggleflag then
library.flags[toggleflag] = toggled
end

togglecallback(toggled)

local enabledtransparency = toggled and 0 or 1


utility.tween(enablediconholder, { 0.2 },
{ Transparency = enabledtransparency })

local textcolor = toggled and library.accent or


Color3.fromRGB(180, 180, 180)
utility.tween(title, { 0.2 }, { TextColor3 =
textcolor })

if toggled then
table.insert(accentobjects.text, title)
elseif table.find(accentobjects.text, title) then
table.remove(accentobjects.text,
table.find(accentobjects.text, title))
end
end
end

keybindholder.MouseButton1Click:Connect(toggle)

local function set(bool)


if type(bool) == "boolean" and toggled ~= bool then
toggle()
end
end

function keybindtypes:Toggle(bool)
set(bool)
end

if toggledefault then
set(toggledefault)
end

if toggleflag then
flags[toggleflag] = set
end

services.InputService.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Keyboard
then
if input.KeyCode == keychosen then
toggle()
callback(keychosen)
end
else
if input.UserInputType == keychosen then
toggle()
callback(keychosen)
end
end
end)
end

if keybindtype and keybindtype:lower() == "hold" then


services.InputService.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Keyboard
then
if input.KeyCode == keychosen then
if holdflag then
library.flags[holdflag] = true
end

callback(keychosen)
holdcallback(true)
end
else
if input.UserInputType == keychosen then
if holdflag then
library.flags[holdflag] = true
end

callback(keychosen)
holdcallback(true)
end
end
end)

services.InputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Keyboard
then
if input.KeyCode == keychosen then
if holdflag then
library.flags[holdflag] = true
end

holdcallback(false)
end
else
if input.UserInputType == keychosen then
if holdflag then
library.flags[holdflag] = true
end

holdcallback(false)
end
end
end)
end

if not keybindtype then


services.InputService.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Keyboard
then
if input.KeyCode == keychosen then
callback(keychosen)
end
else
if input.UserInputType == keychosen then
callback(keychosen)
end
end
end)
end

local function setkey(newkey)


if tostring(newkey):find("Enum.KeyCode.") then
newkey =
Enum.KeyCode[tostring(newkey):gsub("Enum.KeyCode.", "")]
else
newkey =
Enum.UserInputType[tostring(newkey):gsub("Enum.UserInputType.", "")]
end

if not table.find(blacklist, newkey) then


local key = keys[newkey]
local text = "[" .. (keys[newkey] or
tostring(newkey):gsub("Enum.KeyCode.", "")) .. "]"
local sizeX = services.TextService:GetTextSize(text, 8,
Enum.Font.Code, Vector2.new(1000, 1000)).X

keytext.Text = text
keytext.Size = UDim2.new(0, sizeX, 1, 0)
keytext.Position = UDim2.new(1, -sizeX, 0, 0)

keytext.TextColor3 = Color3.fromRGB(180, 180, 180)

keychosen = newkey
if flag then
library.flags[flag] = newkey
end

callback(newkey, true)
else
keychosen = nil
keytext.TextColor3 = Color3.fromRGB(180, 180, 180)
keytext.Text = "[NONE]"
keytext.Size = UDim2.new(0, keytext.TextBounds.X, 1, 0)
keytext.Position = UDim2.new(1, -keytext.TextBounds.X,
0, 0)

if flag then
library.flags[flag] = nil
end

callback(newkey, true)
end
end

if default then
task.wait()
setkey(default)
end

if flag then
flags[flag] = setkey
end

function keybindtypes:Set(newkey)
setkey(newkey)
end

return keybindtypes
end

function sectiontypes:ColorPicker(options)
options = utility.table(options)
local name = options.name
local default = options.default or Color3.fromRGB(255, 255,
255)
local colorpickertype = options.mode
local toggleflag = colorpickertype and colorpickertype:lower()
== "toggle" and options.togglepointer
local togglecallback = colorpickertype and
colorpickertype:lower() == "toggle" and options.togglecallback or function() end
local flag = options.pointer
local callback = options.callback or function() end

local colorpickerholder = utility.create("Frame", {


Size = UDim2.new(1, -5, 0, 14),
BackgroundTransparency = 1,
Position = UDim2.new(0, 0, 0, 0),
Parent = sectioncontent
})

local enabledcpiconholder
do
if colorpickertype and colorpickertype:lower() == "toggle"
then
local togglecpicon = utility.create("Frame", {
ZIndex = 9,
Size = UDim2.new(0, 10, 0, 10),
BorderColor3 = Color3.fromRGB(40, 40, 40),
Position = UDim2.new(0, 2, 0, 2),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = colorpickerholder
})

local grayborder = utility.create("Frame", {


ZIndex = 8,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = togglecpicon
})

utility.create("UIGradient", {
Rotation = 90,
Color = ColorSequence.new(Color3.fromRGB(35, 35,
35), Color3.fromRGB(25, 25, 25)),
Parent = togglecpicon
})

utility.create("Frame", {
ZIndex = 7,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

enabledcpiconholder = utility.create("Frame", {
ZIndex = 10,
Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = 1,
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = togglecpicon
})

local enabledicongradient =
utility.create("UIGradient", {
Rotation = 90,
Color = utility.gradient { library.accent,
Color3.fromRGB(25, 25, 25) },
Parent = enabledcpiconholder
})

accentobjects.gradient[enabledicongradient] =
function(color)
return utility.gradient { color, Color3.fromRGB(25,
25, 25) }
end
end
end

local colorpickerframe = utility.create("Frame", {


ZIndex = 9,
Size = UDim2.new(1, -70, 0, 148),
Position = UDim2.new(1, -168, 0, 18),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Visible = false,
Parent = colorpickerholder
})

colorpickerframe.DescendantAdded:Connect(function(descendant)
if not opened then
task.wait()
if not descendant.ClassName:find("UI") then
if descendant.ClassName:find("Text") then
descendant.TextTransparency =
descendant.TextTransparency + 1
descendant.TextStrokeTransparency =
descendant.TextStrokeTransparency + 1
end

if descendant.ClassName:find("Image") then
descendant.ImageTransparency =
descendant.ImageTransparency + 1
end

descendant.BackgroundTransparency =
descendant.BackgroundTransparency + 1
end
end
end)

local bggradient = utility.create("UIGradient", {


Rotation = 90,
Color = utility.gradient { Color3.fromRGB(35, 35, 35),
Color3.fromRGB(25, 25, 25) },
Parent = colorpickerframe
})

local grayborder = utility.create("Frame", {


ZIndex = 8,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = colorpickerframe
})

local blackborder = utility.create("Frame", {


ZIndex = 7,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})
local saturationframe = utility.create("ImageLabel", {
ZIndex = 12,
Size = UDim2.new(0, 128, 0, 100),
BorderColor3 = Color3.fromRGB(50, 50, 50),
Position = UDim2.new(0, 6, 0, 6),
BorderSizePixel = 0,
BackgroundColor3 = default,
Image = "http://www.roblox.com/asset/?id=8630797271",
Parent = colorpickerframe
})

local grayborder = utility.create("Frame", {


ZIndex = 11,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = saturationframe
})

utility.create("Frame", {
ZIndex = 10,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local saturationpicker = utility.create("Frame", {


ZIndex = 13,
Size = UDim2.new(0, 2, 0, 2),
BorderColor3 = Color3.fromRGB(10, 10, 10),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = saturationframe
})

local hueframe = utility.create("ImageLabel", {


ZIndex = 12,
Size = UDim2.new(0, 14, 0, 100),
Position = UDim2.new(1, -20, 0, 6),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 193, 49),
ScaleType = Enum.ScaleType.Crop,
Image = "http://www.roblox.com/asset/?id=8630799159",
Parent = colorpickerframe
})

local grayborder = utility.create("Frame", {


ZIndex = 11,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = hueframe
})

utility.create("Frame", {
ZIndex = 10,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local huepicker = utility.create("Frame", {


ZIndex = 13,
Size = UDim2.new(1, 0, 0, 1),
BorderColor3 = Color3.fromRGB(10, 10, 10),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = hueframe
})

local boxholder = utility.create("Frame", {


Size = UDim2.new(1, -8, 0, 17),
ClipsDescendants = true,
Position = UDim2.new(0, 4, 0, 110),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = colorpickerframe
})

local box = utility.create("TextBox", {


ZIndex = 13,
Size = UDim2.new(1, -4, 1, -4),
BackgroundTransparency = 1,
Position = UDim2.new(0, 2, 0, 2),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(210, 210, 210),
Text = table.concat({ utility.getrgb(default) }, ", "),
PlaceholderText = "R, G, B",
Font = Enum.Font.Code,
Parent = boxholder
})

local grayborder = utility.create("Frame", {


ZIndex = 11,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = box
})

utility.create("Frame", {
ZIndex = 10,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local bg = utility.create("Frame", {
ZIndex = 12,
Size = UDim2.new(1, 0, 1, 0),
BorderColor3 = Color3.fromRGB(40, 40, 40),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = box
})

utility.create("UIGradient", {
Rotation = 90,
Color = utility.gradient { Color3.fromRGB(35, 35, 35),
Color3.fromRGB(25, 25, 25) },
Parent = bg
})

local toggleholder = utility.create("TextButton", {


Size = UDim2.new(1, -8, 0, 14),
BackgroundTransparency = 1,
Position = UDim2.new(0, 4, 0, 130),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextSize = 14,
TextColor3 = Color3.fromRGB(0, 0, 0),
Font = Enum.Font.SourceSans,
Parent = colorpickerframe
})

local toggleicon = utility.create("Frame", {


ZIndex = 12,
Size = UDim2.new(0, 10, 0, 10),
BorderColor3 = Color3.fromRGB(40, 40, 40),
Position = UDim2.new(0, 2, 0, 2),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = toggleholder
})

local enablediconholder = utility.create("Frame", {


ZIndex = 13,
Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = 1,
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = toggleicon
})

local enabledicongradient = utility.create("UIGradient", {


Rotation = 90,
Color = utility.gradient { library.accent,
Color3.fromRGB(25, 25, 25) },
Parent = enablediconholder
})

accentobjects.gradient[enabledicongradient] = function(color)
return utility.gradient { color, Color3.fromRGB(25, 25, 25)
}
end

local grayborder = utility.create("Frame", {


ZIndex = 11,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = toggleicon
})

utility.create("Frame", {
ZIndex = 10,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

utility.create("UIGradient", {
Rotation = 90,
Color = utility.gradient { Color3.fromRGB(35, 35, 35),
Color3.fromRGB(25, 25, 25) },
Parent = toggleicon
})

local rainbowtxt = utility.create("TextLabel", {


ZIndex = 10,
Size = UDim2.new(0, 0, 1, 0),
BackgroundTransparency = 1,
Position = UDim2.new(0, 20, 0, 0),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(180, 180, 180),
Text = "Rainbow",
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = toggleholder
})

local colorpicker = utility.create("TextButton", {


Size = UDim2.new(1, 0, 0, 14),
BackgroundTransparency = 1,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextSize = 14,
TextColor3 = Color3.fromRGB(0, 0, 0),
Font = Enum.Font.SourceSans,
Parent = colorpickerholder
})

local icon = utility.create(colorpickertype and


colorpickertype:lower() == "toggle" and "TextButton" or "Frame", {
ZIndex = 9,
Size = UDim2.new(0, 18, 0, 10),
BorderColor3 = Color3.fromRGB(40, 40, 40),
Position = UDim2.new(1, -20, 0, 2),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
Parent = colorpicker
})

if colorpickertype and colorpickertype:lower() == "toggle" then


icon.Text = ""
end

local grayborder = utility.create("Frame", {


ZIndex = 8,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
Parent = icon
})

utility.create("Frame", {
ZIndex = 7,
Size = UDim2.new(1, 2, 1, 2),
Position = UDim2.new(0, -1, 0, -1),
BorderSizePixel = 0,
BackgroundColor3 = Color3.fromRGB(10, 10, 10),
Parent = grayborder
})

local icongradient = utility.create("UIGradient", {


Rotation = 90,
Color = utility.gradient { default,
utility.changecolor(default, -200) },
Parent = icon
})

local title = utility.create("TextLabel", {


ZIndex = 7,
Size = UDim2.new(0, 0, 0, 14),
BackgroundTransparency = 1,
Position = colorpickertype and colorpickertype:lower() ==
"toggle" and UDim2.new(0, 20, 0, 0) or UDim2.new(0, 1, 0, 0),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
FontSize = Enum.FontSize.Size14,
TextStrokeTransparency = 0,
TextSize = 13,
TextColor3 = Color3.fromRGB(210, 210, 210),
Text = name,
Font = Enum.Font.Code,
TextXAlignment = Enum.TextXAlignment.Left,
Parent = colorpicker
})

if #sectioncontent:GetChildren() - 1 <= max then


sectionholder.Size = UDim2.new(1, -1, 0,
sectionlist.AbsoluteContentSize.Y + 28)
end

local colorpickertypes = utility.table()

if colorpickertype and colorpickertype:lower() == "toggle" then


local toggled = false
if toggleflag then
library.flags[toggleflag] = toggled
end

local function toggle()


if not switchingtabs then
toggled = not toggled

if toggleflag then
library.flags[toggleflag] = toggled
end

togglecallback(toggled)

local enabledtransparency = toggled and 0 or 1


utility.tween(enabledcpiconholder, { 0.2 },
{ BackgroundTransparency = enabledtransparency })

local textcolor = toggled and library.accent or


Color3.fromRGB(180, 180, 180)
utility.tween(title, { 0.2 }, { TextColor3 =
textcolor })

if toggled then
table.insert(accentobjects.text, title)
elseif table.find(accentobjects.text, title) then
table.remove(accentobjects.text,
table.find(accentobjects.text, title))
end
end
end

colorpicker.MouseButton1Click:Connect(toggle)

local function set(bool)


if type(bool) == "boolean" and toggled ~= bool then
toggle()
end
end

function colorpickertypes:Toggle(bool)
set(bool)
end

if toggledefault then
set(toggledefault)
end

if toggleflag then
flags[toggleflag] = set
end
end

local opened = false


local opening = false

local function opencolorpicker()


if not opening then
opening = true
opened = not opened

if opened then
utility.tween(colorpickerholder, { 0.2 }, { Size =
UDim2.new(1, -5, 0, 168) })
end

local tween = utility.makevisible(colorpickerframe,


opened)

tween.Completed:Wait()

if not opened then


local tween = utility.tween(colorpickerholder,
{ 0.2 }, { Size = UDim2.new(1, -5, 0, 16) })
tween.Completed:Wait()
end

opening = false
end
end

if colorpickertype and colorpickertype:lower() == "toggle" then


icon.MouseButton1Click:Connect(opencolorpicker)
else
colorpicker.MouseButton1Click:Connect(opencolorpicker)
end

local hue, sat, val = default:ToHSV()

local slidinghue = false


local slidingsaturation = false

local hsv = Color3.fromHSV(hue, sat, val)

if flag then
library.flags[flag] = default
end

local function updatehue(input)


local sizeY = 1 - math.clamp((input.Position.Y -
hueframe.AbsolutePosition.Y) / hueframe.AbsoluteSize.Y, 0, 1)
local posY = math.clamp(((input.Position.Y -
hueframe.AbsolutePosition.Y) / hueframe.AbsoluteSize.Y) * hueframe.AbsoluteSize.Y,
0, hueframe.AbsoluteSize.Y - 2)
huepicker.Position = UDim2.new(0, 0, 0, posY)

hue = sizeY
hsv = Color3.fromHSV(sizeY, sat, val)

box.Text = math.clamp(math.floor((hsv.R * 255) + 0.5), 0,


255) .. ", " .. math.clamp(math.floor((hsv.B * 255) + 0.5), 0, 255) .. ", " ..
math.clamp(math.floor((hsv.G * 255) + 0.5), 0, 255)

saturationframe.BackgroundColor3 = hsv
icon.BackgroundColor3 = hsv

if flag then
library.flags[flag] = Color3.fromRGB(hsv.r * 255, hsv.g
* 255, hsv.b * 255)
end

callback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b *


255))
end

hueframe.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
then
slidinghue = true
updatehue(input)
end
end)

hueframe.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
then
slidinghue = false
end
end)

services.InputService.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement
then
if slidinghue then
updatehue(input)
end
end
end)

local function updatesatval(input)


local sizeX = math.clamp((input.Position.X -
saturationframe.AbsolutePosition.X) / saturationframe.AbsoluteSize.X, 0, 1)
local sizeY = 1 - math.clamp((input.Position.Y -
saturationframe.AbsolutePosition.Y) / saturationframe.AbsoluteSize.Y, 0, 1)
local posY = math.clamp(((input.Position.Y -
saturationframe.AbsolutePosition.Y) / saturationframe.AbsoluteSize.Y) *
saturationframe.AbsoluteSize.Y, 0, saturationframe.AbsoluteSize.Y - 4)
local posX = math.clamp(((input.Position.X -
saturationframe.AbsolutePosition.X) / saturationframe.AbsoluteSize.X) *
saturationframe.AbsoluteSize.X, 0, saturationframe.AbsoluteSize.X - 4)

saturationpicker.Position = UDim2.new(0, posX, 0, posY)

sat = sizeX
val = sizeY
hsv = Color3.fromHSV(hue, sizeX, sizeY)

box.Text = math.clamp(math.floor((hsv.R * 255) + 0.5), 0,


255) .. ", " .. math.clamp(math.floor((hsv.B * 255) + 0.5), 0, 255) .. ", " ..
math.clamp(math.floor((hsv.G * 255) + 0.5), 0, 255)

saturationframe.BackgroundColor3 = hsv
icon.BackgroundColor3 = hsv

if flag then
library.flags[flag] = Color3.fromRGB(hsv.r * 255, hsv.g
* 255, hsv.b * 255)
end

callback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b *


255))
end

saturationframe.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
then
slidingsaturation = true
updatesatval(input)
end
end)

saturationframe.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
then
slidingsaturation = false
end
end)

services.InputService.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement
then
if slidingsaturation then
updatesatval(input)
end
end
end)

local function set(color)


if type(color) == "table" then
color = Color3.fromRGB(unpack(color))
end

hue, sat, val = color:ToHSV()


hsv = Color3.fromHSV(hue, sat, val)

saturationframe.BackgroundColor3 = hsv
icon.BackgroundColor3 = hsv
saturationpicker.Position = UDim2.new(0, (math.clamp(sat *
saturationframe.AbsoluteSize.X, 0, saturationframe.AbsoluteSize.X - 4)), 0,
(math.clamp((1 - val) * saturationframe.AbsoluteSize.Y, 0,
saturationframe.AbsoluteSize.Y - 4)))
huepicker.Position = UDim2.new(0, 0, 0, math.clamp((1 -
hue) * saturationframe.AbsoluteSize.Y, 0, saturationframe.AbsoluteSize.Y - 4))

box.Text = math.clamp(math.floor((hsv.R * 255) + 0.5), 0,


255) .. ", " .. math.clamp(math.floor((hsv.B * 255) + 0.5), 0, 255) .. ", " ..
math.clamp(math.floor((hsv.G * 255) + 0.5), 0, 255)

if flag then
library.flags[flag] = Color3.fromRGB(hsv.r * 255, hsv.g
* 255, hsv.b * 255)
end

callback(Color3.fromRGB(hsv.r * 255, hsv.g * 255, hsv.b *


255))
end

local toggled = false

local function toggle()


if not switchingtabs then
toggled = not toggled

if toggled then
task.spawn(function()
while toggled do
for i = 0, 1, 0.0015 do
if not toggled then
return
end

local color = Color3.fromHSV(i, 1, 1)


set(color)

task.wait()
end
end
end)
end

local enabledtransparency = toggled and 0 or 1


utility.tween(enablediconholder, { 0.2 },
{ BackgroundTransparency = enabledtransparency })

local textcolor = toggled and library.accent or


Color3.fromRGB(180, 180, 180)
utility.tween(rainbowtxt, { 0.2 }, { TextColor3 =
textcolor })

if toggled then
table.insert(accentobjects.text, title)
elseif table.find(accentobjects.text, title) then
table.remove(accentobjects.text,
table.find(accentobjects.text, title))
end
end
end

toggleholder.MouseButton1Click:Connect(toggle)

box.FocusLost:Connect(function()
local _, amount = box.Text:gsub(", ", "")

if amount == 2 then
local values = box.Text:split(", ")
local r, g, b = math.clamp(values[1], 0, 255),
math.clamp(values[2], 0, 255), math.clamp(values[3], 0, 255)
set(Color3.fromRGB(r, g, b))
else
rgb.Text = math.floor((hsv.r * 255) + 0.5) .. ", " ..
math.floor((hsv.g * 255) + 0.5) .. ", " .. math.floor((hsv.b * 255) + 0.5)
end
end)
if default then
set(default)
end

if flag then
flags[flag] = set
end

local colorpickertypes = utility.table()

function colorpickertypes:Set(color)
set(color)
end
end

return sectiontypes
end

return pagetypes
end

return windowtypes
end

function library:Initialize()
if gethui then
gui.Parent = gethui()
elseif syn and syn.protect_gui then
syn.protect_gui(gui)
gui.Parent = services.CoreGui
end
end

function library:Init()
library:Initialize()
end
end

local ScriptProperties = {
ScriptName = "specter.lua",
ScriptSizeOne = 700,
ScriptSizeTwo = 500,
ScriptAccent = Color3.fromRGB(121, 66, 254),

Perms = { 246220626, 2415886442, 2284385613, 2415886442 },


Owners = { "tenaki", "happy", "xiba" },
Admins = { "aiden", "mertcan", "linux" },

UserPanel = {
Status = "member"
}
}

local Library = library

local Window = Library:New({ Name = ScriptProperties.ScriptName, Accent =


Color3.fromRGB(133, 87, 242) })
--
local Pred = 0.14
local Pos = 0
local mouse = game.Players.LocalPlayer:GetMouse()
local Player = game:GetService("Players").LocalPlayer
local runService = game:service("RunService")
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------
-- pages , sections --

local Pages = {
Aiming = Window:Page({ Name = "Main" }),
Rage = Window:Page({ Name = "Rage" }),
Visuals = Window:Page({ Name = "Visuals" }),
Misc = Window:Page({ Name = "Miscellaneous" }),
ConfigSec = Window:Page({ Name = "Configurations" })
}

local Sections = {
Aiming = {
TargetAim = {
Main = Pages.Aiming:Section({ Name = "Bullet Prioritise", Side =
"Right", Max = 3 }),
Settings = Pages.Aiming:Section({ Name = "Bullet Prioritise Settings",
Side = "Right", Max = 3 })
},
Aimbot = {
Main = Pages.Aiming:Section({ Name = "Aiming", Side = "Left", Max =
3 }),
Settings = Pages.Aiming:Section({ Name = "Aiming Settings", Side =
"Left", Max = 4 })
},
MouseStuff = Pages.Aiming:Section({ Name = "Mouse Position", Side =
"Right", Max = 2 })
},
Visuals = {
MainVisuals = Pages.Visuals:Section({ Name = "Esp", Side = "Left", Max =
5 }),
WorldVisuals = Pages.Visuals:Section({ Name = "World Settings", Side =
"Right" }),
PlayerChams = Pages.Visuals:Section({ Name = "Client Visuals", Side =
"Left", Max = 2 }),
BulletTracers = Pages.Visuals:Section({ Name = "Bullet Tracers", Side =
"Right", Max = 2 })
},
RageSector = {
AntiAim = Pages.Rage:Section({ Name = "Anti Aim", Side = "Left", Max =
5 }),
TargetStrafe = Pages.Rage:Section({ Name = "Target Strafe", Side =
"Right" }),
AntiHit = Pages.Rage:Section({ Name = "Anti Hit", Side = "Left" }),
FakeLag = Pages.Rage:Section({ Name = "Fake Lag", Side = "Right", Max =
2 })
},
MiscSector = {
Fly = Pages.Misc:Section({ Name = "Float", Side = "Left" }),
CharMain = Pages.Misc:Section({ Name = "Limits", Side = "Right" }),
SpeedMain = Pages.Misc:Section({ Name = "Movement", Side = "Left" }),
Fun = Pages.Misc:Section({ Name = "Spammer", Side = "Right", Max = 4 })

},
Configuations = {
Configs = Pages.ConfigSec:Section({ Name = "Configuration", Side =
"Left" }),
Discord = Pages.ConfigSec:Section({ Name = "Discord", Side = "Right" }),
ScriptStuff = Pages.ConfigSec:Section({ Name = "Utilities", Side =
"Right" })
}
}

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------
-- cheat settings table --

local BulletTracers = false


local AimingSettings = {
Aimbot = {
NotificationMode = false,
Keybind = Enum.KeyCode.Q,
Hitbox = "Head",
HitAirshots = false,
CameraMode = false,
MouseMode = false,
AutoPredct = false,
PredictionAmount = 0.165,
Smoothing = false,
Smoothness = 0.015
},
TargetAim = {
Enabled = true,
UseFOV = true,
ShowFOV = false,
FOV = 60,
FOVFilled = false,
Selected = false,
WallCheck = false,
PingPred1 = false,
PingPred2 = false,
CrewCheck = false,
ShowHitbox = false,
AirShotMode = true,
RandomHitbox = false,
GrabbedCheck = false,
KnockedCheck = false,
FOVThickness = 2,
FovTransparency = 1,
NotificationMode = false,
UseNearestDistance = false,
Hitboxes = "Head",
FOVColor = Color3.new(0.603921, 0.011764, 1)
},
MousePosSector = {
Filled = false,
Thickness = 1,
Size = 10,
DOTColor = Color3.fromRGB(0, 71, 212),
Enabled = false
}
}

local RageSettings = {
AntiAim = {
Enabled = false,
VelocityBreaker = false,
VBV = 500,
VBF = 100,
Confusion = false
},

LegitAntiHit = {
Enabled = false,
Multiplier = 0.25
},
FakeLag = {
Enabled = false,
Multiplier = 0.10,
Visulize = false,
ViulizationTransparency = 1,
ViulizationColor = Color3.fromRGB(255, 0, 0)

},
TargetStrafe = {
Enabled = false,
AntiAimMode = false,
AntiAimType = "Default",
Distance = 2,
Speed = 0.5,
Color = Color3.fromRGB(255, 255, 255)
}
}

local MiscSettings = {
TrashTalk = {
Enabled = false
},
NoJumpCd = {
Enabled = false
},
NoRecoil = {
Enabled = false
},
Speed = {
Enabled = false,
Motion = true,
BHop = false,
Amount = 1
},
Fly = {
Enabled = false,
Normal = true,
Height = 35,
MoveOnly = false,
Amount = 1
},
Strafe = {
Enabled = false
},
NoSlowdown = {
Enabled = false
}
}

local parts = {
"Head",
"UpperTorso",
"RightUpperArm",
"RightLowerArm",
"RightUpperArm",
"LeftUpperArm",
"LeftLowerArm",
"LeftFoot",
"RightFoot",
"LowerTorso",
"LeftHand",
"RightHand",
"RightUpperLeg",
"LeftUpperLeg",
"LeftLowerLeg",
"RightLowerLeg"
}

local VisualsExtra = {
WorldVisuals = {
MapLightingEnabled = false,
MapBrightness = 0.6,
MapContrast = 0.2,
MapTintColor = Color3.fromRGB(0, 0, 153)
},
WeaponEffects = {
Enabled = false,
Color = Color3.fromRGB(255, 0, 0),
Material = "ForceField"
},
ClientVisuals = {
SelfChams = false,
SelfChamsMaterial = "ForceField",
SelfChamsColor = Color3.fromRGB(255, 0, 0),
BaseSkin = "Plastic"
}
}

local ConfigurationTab = {

Configs = {

},

Discord = {
AutoJoin = false

},

UIPreferances = {

}
}

----- strafe ---


local Yung = loadstring(game:HttpGet("https://pastebin.com/raw/kwQeFKTi"))()
local Circle = Yung:New3DCircle()
Circle.Visible = RageSettings.TargetStrafe.Enabled
Circle.ZIndex = 1
Circle.Transparency = 1
Circle.Color = RageSettings.TargetStrafe.Color
Circle.Thickness = 1
Circle.Radius = RageSettings.TargetStrafe.Distance
local delta = 0
local duration = RageSettings.TargetStrafe.Speed
local d32_ui_color3 = Color3.fromRGB(255, 255, 255)

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------
-- aimbot --

local CC = game:GetService "Workspace".CurrentCamera


local LocalMouse = game.Players.LocalPlayer:GetMouse()
local Locking = false

function x(tt, tx, cc)


game.StarterGui:SetCore(
"SendNotification",
{
Title = tt,
Text = tx,
Duration = cc
}
)
end

local UserInputService = game:GetService("UserInputService")


UserInputService.InputBegan:Connect(
function(keygo, ok)
if (not ok) then
if (keygo.KeyCode == AimingSettings.Aimbot.Keybind) then
Locking = not Locking
if Locking and getgenv().mousemoverel then
Plr = getClosestPlayerToCursor()
PlrP = getclosest()
if AimingSettings.Aimbot.NotificationMode then
end
elseif not Locking then
if AimingSettings.Aimbot.NotificationMode then
end
end
end
end
end
)

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------
-- functions --

function getClosestPlayerToCursor()
local closestPlayer
local shortestDistance = AimingSettings.TargetAim.FOV

for i, v in pairs(game.Players:GetPlayers()) do
if v ~= game.Players.LocalPlayer and v.Character and
v.Character:FindFirstChild("Humanoid") and
v.Character.Humanoid.Health ~= 0 and
v.Character:FindFirstChild(AimingSettings.Aimbot.Hitbox)
then
local pos = CC:WorldToViewportPoint(v.Character.PrimaryPart.Position)
local magnitude = (Vector2.new(pos.X, pos.Y) -
Vector2.new(LocalMouse.X, LocalMouse.Y)).magnitude
if magnitude < shortestDistance then
closestPlayer = v
shortestDistance = magnitude
end
end
end
return closestPlayer
end

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------
-- mouse / camera mode --

game:GetService("RunService").RenderStepped:Connect(
function()
if Plr == nil then
return
elseif not Plr.Character then
return
end
if not Plr.Character:FindFirstChild(AimingSettings.Aimbot.Hitbox) then
return
end
if Locking and AimingSettings.Aimbot.MouseMode then
local goal =
CC:WorldToScreenPoint(
Plr.Character[AimingSettings.Aimbot.Hitbox].Position +
(Plr.Character[AimingSettings.Aimbot.Hitbox].Velocity *
AimingSettings.Aimbot.PredictionAmount)
)
mousemoverel(goal.X - LocalMouse.X, goal.Y - LocalMouse.Y)
else wait()
end

if Locking and AimingSettings.Aimbot.CameraMode and not


AimingSettings.Aimbot.Smoothing then
workspace.CurrentCamera.CFrame = CFrame.new(
workspace.CurrentCamera.CFrame.Position,
Plr.Character[AimingSettings.Aimbot.Hitbox].Position +
Plr.Character[AimingSettings.Aimbot.Hitbox].Velocity *
AimingSettings.Aimbot.PredictionAmount
)
elseif Locking and AimingSettings.Aimbot.CameraMode and
AimingSettings.Aimbot.Smoothing then
local Main =
CFrame.new(
workspace.CurrentCamera.CFrame.p,
Plr.Character[AimingSettings.Aimbot.Hitbox].Position +
Plr.Character[AimingSettings.Aimbot.Hitbox].Velocity *
AimingSettings.Aimbot.PredictionAmount
)
workspace.CurrentCamera.CFrame = workspace.CurrentCamera.CFrame:Lerp(
Main,
AimingSettings.Aimbot.Smoothness,
Enum.EasingStyle.Elastic,
Enum.EasingDirection.InOut
)
else wait()
end

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------
-- airshot function --

if AimingSettings.Aimbot.MouseMode == false then


if AimingSettings.Aimbot.HitAirshots == true then
if Plr ~= nil and Plr.Character.Humanoid.Jump == true and
Plr.Character.Humanoid.FloorMaterial == Enum.Material.Air
then
AimingSettings.Aimbot.Hitbox = "RightFoot"
else
AimingSettings.Aimbot.Hitbox = "LowerTorso"
end
end
end
end
)
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------
-- global toggles --

local Toggles = {
TargetAim = {

MainToggle = Sections.Aiming.TargetAim.Main:Keybind(
{
Name = "Enabled",
Callback = function(key) end,
Default = key,
Pointer = "1",
Mode = "Toggle",
toggleflag = "1.1",
togglecallback = function(state)
AimingSettings.TargetAim.Enabled = state
end
}
),

HitboxesToggle = Sections.Aiming.TargetAim.Main:Dropdown(
{
Name = "Hitbox",
Options = { "Head", "UpperTorso", "HumanoidRootPart" },
Default = "Head",
Pointer = "2",
callback = function(state)
AimingSettings.TargetAim.Hitboxes = state
end
}
),

UseNearestDistance = Sections.Aiming.TargetAim.Main:Toggle(
{
Name = "Distance Based",
Default = false,
Pointer = "3",
callback = function(state)
AimingSettings.TargetAim.UseNearestDistance = state
end
}
),
CrewCheckToggle = Sections.Aiming.TargetAim.Main:Toggle(
{
Name = "Prioritise Team",
Default = false,
Pointer = "4",
callback = function(state)
AimingSettings.TargetAim.CrewCheck = state
end
}
),
WallCheckToggle = Sections.Aiming.TargetAim.Main:Toggle(
{
Name = "Visibility Check",
Default = false,
Pointer = "5",
callback = function(state)
AimingSettings.TargetAim.WallCheck = state
end
}
),

ShowFOVToggle = Sections.Aiming.TargetAim.Settings:Toggle(
{
Name = "Draw Fov",
Default = false,
Pointer = "6",
callback = function(state)
AimingSettings.TargetAim.ShowFOV = state
end
}
),

FOVSlider = Sections.Aiming.TargetAim.Settings:Slider(
{
Name = "Bullet Radius Size",
Minimum = 1,
Maximum = 10,
Default = 1,
Decimals = 0.1,
Pointer = "7",
callback = function(state)
AimingSettings.TargetAim.FOV = state ^ 3
end
}
)

},
Aimbot = {
EnableTog = Sections.Aiming.Aimbot.Main:Toggle(
{
Name = "Enabled",
Default = false,
Pointer = "8",
callback = function(e)
AimingSettings.Aimbot.CameraMode = e
end
}
),
SmoothingToggle = Sections.Aiming.Aimbot.Main:Toggle(
{
Name = "Smoothing",
Default = false,
Pointer = "9",
callback = function(state)
AimingSettings.Aimbot.Smoothing = state
end
}
),

HitboxesDropdown = Sections.Aiming.Aimbot.Main:Dropdown(
{
Name = "Hitbox",
Options = { "Head", "UpperTorso", "HumanoidRootPart" },
Default = "Head",
Pointer = "10",
callback = function(state)
AimingSettings.Aimbot.Hitbox = state
end
}
),

TeamCheckToggle = Sections.Aiming.Aimbot.Main:Toggle(
{
Name = "Visibility Check",
Default = false,
Pointer = "11",
callback = function()
end
}
),

Revaluation = Sections.Aiming.Aimbot.Main:Toggle(
{
Name = "Revaluate Hitspand",
Default = false,
Pointer = "12",
callback = function(state)
AimingSettings.Aimbot.HitAirshots = state
end
}
),

PingDropDown = Sections.Aiming.Aimbot.Settings:Dropdown(
{
Name = "Aiming Type",
Options = { "Ping Based", "Custom" },
Default = "Ping Based",
Pointer = "13",
callback = function(state)
AimingSettings.Aimbot.AutoPredct = state
end
}
),
TypeDropdown = Sections.Aiming.Aimbot.Settings:Dropdown(
{
Name = "Aiming Tracing",
Options = { "Camera", "nil" },
Default = "nil",
Pointer = "14",
callback = function(state)

end
}
),

SmoothingSlider = Sections.Aiming.Aimbot.Settings:Slider(
{
Name = "Smoothing Amount",
Minimum = 1,
Maximum = 10,
Default = 10,
Decimals = 0.000000000000000001,
Pointer = "15",
callback = function(state)
AimingSettings.Aimbot.Smoothness = state / 50
end
}
),
PredictionAmount = Sections.Aiming.Aimbot.Settings:Slider(
{
Name = "Prediction Amount",
Minimum = 1,
Maximum = 10,
Default = 10,
Decimals = 0.000000000000000001,
Pointer = "16",
callback = function(state)
AimingSettings.Aimbot.Prediction = state / 50
end
}
),

RageStuff = {

AntiAimToggle = Sections.RageSector.AntiAim:Toggle(
{
Name = "Enabled",
Default = false,
Pointer = "17",
callback = function(state)
RageSettings.AntiAim.Enabled = state
end
}
),
DesyncToggle = Sections.RageSector.AntiAim:Toggle(
{
Name = "Confusion",
Default = false,
Pointer = "18",
callback = function(state)
RageSettings.AntiAim.VelocityBreaker = state
end
}
),
DesyncVelocitySlider = Sections.RageSector.AntiAim:Slider(
{
Name = "Velocity Speed",
Minimum = 1,
Maximum = 500,
Default = 10,
Decimals = 0.000000000000001,
Pointer = "19",
callback = function(state)
RageSettings.AntiAim.VBV = state
end
}
),
DesyncFrameSlider = Sections.RageSector.AntiAim:Slider(
{
Name = "Spin Speed",
Minimum = 1,
Maximum = 100,
Default = 10,
Decimals = 0.000000000000001,
Pointer = "20",
callback = function(state)
RageSettings.AntiAim.VBF = state
end
}
),
AntiHitToggle = Sections.RageSector.AntiHit:Toggle(
{
Name = "Enabled",
Default = false,
Pointer = "21",
callback = function(state)
RageSettings.LegitAntiHit.Enabled = state
end
}
),
AntiHitSlider = Sections.RageSector.AntiHit:Slider(
{
Name = "Multiplier",
Minimum = 1,
Maximum = 10,
Default = 1,
Decimals = 0.000000000000001,
Pointer = "22",
callback = function(state)
RageSettings.LegitAntiHit.Multiplier = state / 10
end
}
)
},

FakeLagShit = {
FakeLagT = Sections.RageSector.FakeLag:Toggle(
{
Name = "Enabled",
Default = false,
Pointer = "23",
callback = function(state)

end
}
),

FakeLagSlid = Sections.RageSector.FakeLag:Slider(
{
Name = "Multiplier",
Minimum = 1,
Maximum = 10,
Default = 1,
Decimals = 0.000000000000001,
Pointer = "24",
callback = function(state)
RageSettings.FakeLag.Multiplier = state / 30
end
}
),

FakeLagBodyCham = Sections.RageSector.FakeLag:Toggle(
{
Name = "Body Cham",
Default = false,
Pointer = "25",
callback = function(state)
fakelag = state
end
}
),

},
},

MiscStuff1 = {
FlyToggle = Sections.MiscSector.Fly:Toggle(
{
Name = "Enabled",
Default = false,
Pointer = "26",
callback = function(state)
MiscSettings.Fly.Enabled = state
end
}
),
FlyHightSlider = Sections.MiscSector.Fly:Slider(
{
Name = "Height",
Minimum = 1,
Maximum = 100,
Default = 10,
Decimals = 0.000000000000001,
Pointer = "27",
callback = function(state)
MiscSettings.Fly.Height = state
end
}
),
FlyAmount = Sections.MiscSector.Fly:Slider(
{
Name = "Multiplier",
Minimum = 1,
Maximum = 10,
Default = 5,
Decimals = 0.000000000000001,
Pointer = "28",
callback = function(state)
MiscSettings.Fly.Amount = state
end
}
)

},

MiscStuff2 = {
NoJumpCdToggle = Sections.MiscSector.CharMain:Toggle(
{
Name = "Blacklisted",
Default = false,
Pointer = "29",
callback = function(state)
MiscSettings.NoJumpCd.Enabled = state
MiscSettings.NoSlowdown.Enabled = state
end
}
),
CooldownDropdown = Sections.MiscSector.CharMain:Dropdown(
{
Name = "Type",
Options = { "Jump", "Slowdown" },
Default = "Jump",
Pointer = "30",
callback = function()
end
}
),
},

MovementShit = {
SpeedToggle = Sections.MiscSector.SpeedMain:Toggle(
{
Name = "Enabled",
Default = false,
Pointer = "31",
callback = function(state)
MiscSettings.Speed.Enabled = state
end
}
),

BhopToggle = Sections.MiscSector.SpeedMain:Toggle(
{
Name = "Bunny Hop",
Default = false,
Pointer = "32",
callback = function(state)
MiscSettings.Speed.BHop = state
end
}
),
SpeedMultipler = Sections.MiscSector.SpeedMain:Slider(
{
Name = "Multiplier",
Minimum = 1,
Maximum = 10,
Default = 1,
Decimals = 0.000000000000001,
Pointer = "32",
callback = function(state)
MiscSettings.Speed.Amount = state
end
}
),
TrashTalk = Sections.MiscSector.Fun:Toggle(
{
Name = "Enabled",
Default = false,
Pointer = "33",
callback = function(state)
MiscSettings.TrashTalk.Enabled = state
end
}
),
TrashTalkDropdown = Sections.MiscSector.Fun:Dropdown(
{
Name = "Type",
Options = { "Main" },
Default = "Main",
Pointer = "34",
callback = function(state)
end
}
)
}
}

local StrafeSection = {
TargetStrafe = Sections.RageSector.TargetStrafe:Toggle(
{
Name = "Enabled",
Default = false,
Pointer = "35",
callback = function(state)
RageSettings.TargetStrafe.Enabled = state
end
}
),

StrafeSlider = Sections.RageSector.TargetStrafe:Slider(
{
Name = "Range",
Minimum = 1,
Maximum = 100,
Default = 50,
Decimals = 0.000000000000001,
Pointer = "36",
callback = function(state)
RageSettings.TargetStrafe.Distance = state
end
}
),

SpeedStrafe = Sections.RageSector.TargetStrafe:Slider(
{
Name = "Speed",
Minimum = 1,
Maximum = 100,
Default = 50,
Decimals = 0.000000000000001,
Pointer = "37",
callback = function(state)
RageSettings.TargetStrafe.Speed = state / 50
end
}
),

StrafeRage = Sections.RageSector.TargetStrafe:Toggle(
{
Name = "Rage Bot",
Default = false,
Pointer = "37",
callback = function(state)
RageSettings.TargetStrafe.AntiAimMode = state
end
}
),

StrafeMode = Sections.RageSector.TargetStrafe:Dropdown(
{
Name = "Type",
Options = { "Flinger", "Default" },
Default = "Default",
Pointer = "38",
callback = function(state)
RageSettings.TargetStrafe.AntiAimType = state
end
}
)
}

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------
-- mouse toggles --

local MousePositionToggles = {
MouseEnabled = Sections.Aiming.MouseStuff:Toggle(
{
Name = "Enabled",
Default = false,
Pointer = "39",
callback = function(state)
AimingSettings.MousePosSector.Enabled = state
end
}
),

MouseSizeSlider = Sections.Aiming.MouseStuff:Slider(
{
Name = "Pos Radius",
Minimum = 1,
Maximum = 50,
Default = 1,
Decimals = 0.1,
Pointer = "40",
callback = function(state)
AimingSettings.MousePosSector.Size = state
end
}
)
}

Toggles.TargetAim.ShowFOVToggle:Colorpicker(
{
Name = "Fov Color",
Info = "Field Of View Rgb",
Alpha = 0.5,
Default = Color3.fromRGB(133, 87, 242),
Pointer = "41",
callback = function(shit)
AimingSettings.TargetAim.FOVColor = shit
end
}
)
StrafeSection.TargetStrafe:Colorpicker(
{
Name = "Mouse Color",
Info = "Mouse Color",
Alpha = 0.5,
Default = Color3.fromRGB(133, 87, 242),
Pointer = "42",
callback = function(shit)
Circle.Color = shit
end
}
)

MousePositionToggles.MouseEnabled:Colorpicker(
{
Name = "Mouse Color",
Info = "Mouse Color",
Alpha = 0.5,
Default = Color3.fromRGB(133, 87, 242),
Pointer = "43",
callback = function(shit)
AimingSettings.MousePosSector.DOTColor = shit
end
}
)

local AllahStorage = { Instance = {} }

local GetService =
setmetatable(
{},
{
__index = function(self, key)
return game:GetService(key)
end
}
)

local Camera = workspace.CurrentCamera


local WorldToScreen = Camera.WorldToScreenPoint
local WorldToViewportPoint = Camera.WorldToViewportPoint
local GetPartsObscuringTarget = Camera.GetPartsObscuringTarget

local RunService = GetService.RunService


local Players = GetService.Players
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local CurrentCamera = workspace.CurrentCamera
local UserInputService = GetService.UserInputService
local Unpack = table.unpack
local GuiInset = GetService.GuiService:GetGuiInset()
local Insert = table.insert
local Network = GetService.NetworkClient
local StarterGui = GetService.StarterGui
local tweenService = GetService.TweenService
local ReplicatedStorage = GetService.ReplicatedStorage
local http = GetService.HttpService
local lighting = GetService.Lighting

function Find(Data)
getgenv().Target = nil
for i, v in next, Players:GetPlayers() do
if v.Name ~= LocalPlayer.Name and v.Name:lower():match("^" ..
NoSpace(Data):lower()) then
getgenv().Target = v.Name
end
end

return getgenv().Target
end

function IsNetwork(GetPlayer)
return GetPlayer and GetPlayer.Character and
GetPlayer.Character:FindFirstChild("HumanoidRootPart") ~= nil and
GetPlayer.Character:FindFirstChild("Humanoid") ~= nil and
GetPlayer.Character:FindFirstChild("Head") ~= nil and
true or
false
end

function Knocked(GetPlayer)
if IsNetwork(GetPlayer) then
return GetPlayer.Character.BodyEffects["K.O"].Value and true or false
end
return false
end

function Grabbing(GetPlayer)
if IsNetwork(GetPlayer) then
return GetPlayer.Character:FindFirstChild("GRABBING_CONSTRAINT") and true
or false
end
return false
end

function Alive(Player)
if Player and Player.Character and
Player.Character:FindFirstChild("HumanoidRootPart") ~= nil and
Player.Character:FindFirstChild("Humanoid") ~= nil and
Player.Character:FindFirstChild("Head") ~= nil
then
return true
end
return false
end

function CameraCheck(GetPosition, IgnoredList)


if IsNetwork(LocalPlayer) then
return
#CurrentCamera:GetPartsObscuringTarget({ LocalPlayer.Character.Head.Position,
GetPosition }, IgnoredList) ==
0 and
true or
false
end
end

function WallCheck(OriginPart, Part)


if IsNetwork(LocalPlayer) then
local IgnoreList = { CurrentCamera, LocalPlayer.Character,
OriginPart.Parent }
local Parts =
CurrentCamera:GetPartsObscuringTarget(
{
OriginPart.Position,
Part.Position
},
IgnoreList
)

for i, v in pairs(Parts) do
if v.Transparency >= 0.3 then
AllahStorage.Instance[#AllahStorage.Instance + 1] = v
end

if v.Material == Enum.Material.Glass then


AllahStorage.Instance[#AllahStorage.Instance + 1] = v
end
end

return #Parts == 0
end
return true
end

function NilBody()
if Alive(LocalPlayer) then
for i, v in pairs(LocalPlayer.Character:GetChildren()) do
if v:IsA("BasePart") or v:IsA("Part") or v:IsA("MeshPart") then
if v.Name ~= "HumanoidRootPart" then
v:Destroy()
end
end
end
end
end

function NearestDistance()
local Target = nil
local Distance = math.huge
for i, v in next, Players:GetPlayers() do
if v ~= LocalPlayer and Alive(LocalPlayer) and Alive(v) then
local DistanceFromPlayer =
(v.Character.HumanoidRootPart.Position -
LocalPlayer.Character.HumanoidRootPart.Position).Magnitude
if Distance > DistanceFromPlayer then
if (not AimingSettings.TargetAim.CrewCheck or
v:FindFirstChild("DataFolder") and
v.DataFolder.Information:FindFirstChild("Crew") and
not tonumber(v.DataFolder.Information.Crew.Value) ==
tonumber(LocalPlayer.DataFolder.Information.Crew.Value)) and
(not AimingSettings.TargetAim.WallCheck or
WallCheck(v.Character.HumanoidRootPart,
LocalPlayer.Character.HumanoidRootPart))
then
Target = v
Distance = DistanceFromPlayer
end
end
end
end

return Target, Distance


end

function NearestMouse()
local Target = nil
local Distance = AimingSettings.TargetAim.FOV
for i, v in next, Players:GetPlayers() do
if v ~= LocalPlayer and Alive(LocalPlayer) and Alive(v) then
local RootPosition, RootVisible =
CurrentCamera:WorldToViewportPoint(v.Character.HumanoidRootPart.Position)
local DistanceFromMouse =
(Vector2.new(RootPosition.X, RootPosition.Y) - Vector2.new(Mouse.X,
Mouse.Y)).Magnitude
if RootVisible and Distance > DistanceFromMouse then
if (not AimingSettings.TargetAim.CrewCheck or
v:FindFirstChild("DataFolder") and
v.DataFolder.Information:FindFirstChild("Crew") and
not tonumber(v.DataFolder.Information.Crew.Value) ==
tonumber(LocalPlayer.DataFolder.Information.Crew.Value)) and
(not AimingSettings.TargetAim.WallCheck or
WallCheck(v.Character.HumanoidRootPart,
LocalPlayer.Character.HumanoidRootPart))
then
Target = v
Distance = DistanceFromMouse
end
end
end
end

return Target, Distance


end

function NearestType(Type)
if Type == "Distance" then
return NearestDistance()
elseif Type == "Mouse" then
return NearestMouse()
end
end

function ChanceTable(Table)
local Chance = 0
for i, v in pairs(Table) do
Chance = Chance + v
end
Chance = math.random(0, Chance)
for i, v in pairs(Table) do
Chance = Chance - v
if Chance <= 0 then
return i
end
end
end

function RandomTable(Table)
local Values = 0
for i, v in pairs(Table) do
Values = i
end

return Table[math.random(1, Values)]


end

local function getMousePosition()


return Vector2.new(mouse.X, mouse.Y)
end

local mouse = game.Players.LocalPlayer:GetMouse()

local WorldToViewportPoint = CurrentCamera.worldToViewportPoint

local fov_circle = Drawing.new("Circle")


fov_circle.Thickness = 1
fov_circle.NumSides = 100
fov_circle.Radius = 180
fov_circle.Filled = false
fov_circle.Visible = false
fov_circle.ZIndex = 999
fov_circle.Transparency = AimingSettings.TargetAim.FovTransparency
fov_circle.Color = Color3.fromRGB(54, 57, 241)

local outline = Drawing.new("Circle")


outline.Thickness = 0.3
outline.NumSides = 100
outline.Radius = fov_circle.Radius
outline.Filled = false
outline.Visible = false
outline.ZIndex = 999
outline.Color = Color3.fromRGB(1, 1, 1)

local mouse_box = Drawing.new("Square")


mouse_box.Visible = false
mouse_box.ZIndex = 999
mouse_box.Color = Color3.fromRGB(54, 57, 241)
mouse_box.Thickness = 20
mouse_box.Size = Vector2.new(20, 20)
mouse_box.Filled = true

local Plr = nil

local pingvalue = game:GetService("Stats").Network.ServerStatsItem["Data


Ping"]:GetValueString()
local split = string.split(pingvalue, "(")
local ping = tonumber(split[1])

local mt = getrawmetatable(game)
local old = mt.__namecall
setreadonly(mt, false)
mt.__namecall = newcclosure(
function(...) --// LPH JIT
local args = { ... }
if AimingSettings.TargetAim.Enabled and Plr ~= game.Players.LocalPlayer and Plr
~= nil and
(not AimingSettings.TargetAim.UseFOV or AimingSettings.TargetAim.FOV > Pos)
and
getnamecallmethod() == "FireServer" and
args[2] == "UpdateMousePos"
then
if AimingSettings.TargetAim.AirShotMode == true then
if Plr ~= nil and Plr.Character.Humanoid.Jump == true and
Plr.Character.Humanoid.FloorMaterial == Enum.Material.Air
then
-- "RightFoot"
args[3] = Plr.Character["RightFoot"].Position +
(Plr.Character["RightFoot"].Velocity * Pred)
return old(unpack(args))
else
-- "LowerTorso"
args[3] = Plr.Character[AimingSettings.TargetAim.Hitboxes].Position
+
(Plr.Character[AimingSettings.TargetAim.Hitboxes].Velocity *
Pred)
return old(unpack(args))
end
else
args[3] = Plr.Character[AimingSettings.TargetAim.Hitboxes].Position +
(Plr.Character[AimingSettings.TargetAim.Hitboxes].Velocity * Pred)
return old(unpack(args))
end

--[[
args[3] =
Plr.Character[AimingSettings.TargetAim.Hitboxes].Position +
(Plr.Character[AimingSettings.TargetAim.Hitboxes].Velocity * Pred)

]]
end

return old(...)
end
)

-- ac

loadstring(
game:HttpGet(
"https://pastebin.com/raw/UrQGK0p7"
)
)()

local a;
a = hookfunction(wait, function(b) if b == 1.5 and MiscSettings.NoJumpCd.Enabled
then return a() end return a(b) end)

local EspVisuals = {

BoxesToggle = Sections.Visuals.MainVisuals:Toggle(
{
Name = "Boxes",
Default = false,
Pointer = "44",
callback = function(bi)
end
}
),

NameToggle = Sections.Visuals.MainVisuals:Toggle(
{
Name = "Names",
Default = false,
Pointer = "45",
callback = function(bi)
end
}
),
TracersToggle = Sections.Visuals.MainVisuals:Toggle(
{
Name = "Tracers",
Default = false,
Pointer = "46",
callback = function(bi)
end
}
),
SkelotonToggle = Sections.Visuals.MainVisuals:Toggle(
{
Name = "Skeletons",
Default = false,
Pointer = "47",
callback = function(bi)
end
}
),

DistanceTog = Sections.Visuals.MainVisuals:Toggle(
{
Name = "Distance",
Default = false,
Pointer = "48",
callback = function(bi)

end
}
),

HealthInfo = Sections.Visuals.MainVisuals:Toggle(
{
Name = "Health Info",
Default = false,
Pointer = "49",
callback = function(bi)

end
}
),

GunInfo = Sections.Visuals.MainVisuals:Toggle(
{
Name = "Weapon Info",
Default = false,
Pointer = "50",
callback = function(bi)
end
}
),

ChamsTog = Sections.Visuals.PlayerChams:Toggle(
{
Name = "Body Cham",
Default = false,
Pointer = "51",
callback = function(state)
VisualsExtra.ClientVisuals.SelfChams = state
end
}
),

ChamDrop = Sections.Visuals.PlayerChams:Dropdown(
{
Name = "Body Material",
Options = { "ForceField", "Glass" },
Default = "ForceField",
Pointer = "52",
callback = function(state)
VisualsExtra.ClientVisuals.SelfChamsMaterial = state
end
}
),
GunTog = Sections.Visuals.PlayerChams:Toggle(
{
Name = "Gun Cham",
Default = false,
Pointer = "53",
callback = function(state)
VisualsExtra.WeaponEffects.Enabled = state
end
}
),
GunDrop = Sections.Visuals.PlayerChams:Dropdown(
{
Name = "Gun Material",
Options = { "ForceField", "Glass" },
Default = "ForceField",
Pointer = "54",
callback = function(state)
VisualsExtra.WeaponEffects.Material = state
end
}
),

BulletTracersToggle = Sections.Visuals.BulletTracers:Toggle(
{
Name = "Enabled",
Default = false,
Pointer = "55",
callback = function(bi)
BulletTracers = bi
end
}
),

MapLightingToggle = Sections.Visuals.WorldVisuals:Toggle(
{
Name = "Map Lighting",
Default = false,
Pointer = "56",
callback = function(bi)
VisualsExtra.WorldVisuals.MapLightingEnabled = bi
end
}
), -- add more shit soon
MapBrightness = Sections.Visuals.WorldVisuals:Slider(
{
Name = "Map Brightness",
Minimum = 0,
Maximum = 100,
Default = 1,

Decimals = 0.1,
Pointer = "57",
callback = function(E)
VisualsExtra.WorldVisuals.MapBrightness = E / 50
end
}
),
MapContrast = Sections.Visuals.WorldVisuals:Slider(
{
Name = "Map Contrast",
Minimum = 0,
Maximum = 100,
Default = 1,

Decimals = 0.1,
Pointer = "58",
callback = function(E)
VisualsExtra.WorldVisuals.MapContrast = E / 50
end
}
)

}
EspVisuals.BulletTracersToggle:Colorpicker(
{
Name = "Bullet Tracers",
Info = "Bullet Tracers",
Alpha = 0.5,
Default = Color3.fromRGB(255, 0, 0),
Pointer = "59",
callback = function(bi)
bullet_tracer_color = bi
end
}
)

EspVisuals.MapLightingToggle:Colorpicker(
{
Name = "Lighting Color",
Info = "World Color",
Alpha = 0.5,
Default = Color3.fromRGB(255, 255, 255),
Pointer = "60",
callback = function(shit)
VisualsExtra.WorldVisuals.MapTintColor = shit
end
}
)
EspVisuals.BoxesToggle:Colorpicker(
{
Name = "Esp Color",
Info = "Esp Color",
Alpha = 0.5,
Default = Color3.fromRGB(137, 207, 240),
Pointer = "61",
callback = function(shit)
ESPColor = shit

end
}
)

EspVisuals.ChamsTog:Colorpicker(
{
Name = "Self Chams Color",
Info = "Self Chams Color",
Alpha = 0.5,
Default = Color3.fromRGB(133, 87, 242),
Pointer = "62",
callback = function(bi)
VisualsExtra.ClientVisuals.SelfChamsColor = bi
end
}
)

EspVisuals.GunTog:Colorpicker(
{
Name = "Gun Color",
Info = "Gun Color",
Alpha = 0.5,
Default = Color3.fromRGB(255, 0, 0),
Pointer = "63",
callback = function(bi)
VisualsExtra.WeaponEffects.Color = bi
end
}
)

local watermark = library:Watermark {}

task.spawn(function()
local frames = 0

game:GetService "RunService".RenderStepped:Connect(function()
frames = frames + 1
end)

watermark:Update { "specter.lua", ScriptProperties.UserPanel.Status, frames ..


" FPS", string.format("%s:%s %s", tonumber(os.date("%I")), os.date("%M"),
os.date("%p")) }

while task.wait(1) do
watermark:Update { "specter.lua", ScriptProperties.UserPanel.Status, frames
.. " FPS", string.format("%s:%s %s", tonumber(os.date("%I")), os.date("%M"),
os.date("%p")) }
frames = 0
end
end)

local currentconfig = ""


local configname = ""

ConfigStuff = {

configdropdown = Sections.Configuations.Configs:Dropdown { Name = "Main",


Options = Library:ListConfigs(), Callback = function(option)
currentconfig = option
end },

Sections.Configuations.Configs:Box { Name = "", Callback = function(text)


configname = text
end },

Sections.Configuations.Configs:Button { Name = "Save", Callback = function()


Library:SaveConfig(configname)
ConfigStuff.configdropdown:Refresh(Library:ListConfigs())
end }
,

Sections.Configuations.Configs:Button { Name = "Load", Callback = function()


Library:LoadConfig(currentconfig)
end },
Sections.Configuations.Configs:Button { Name = "Delete", Callback = function()
Library:DeleteConfig(currentconfig)
ConfigStuff.configdropdown:Refresh(Library:ListConfigs())
end }

SettingsSection = {
UiToggle = Sections.Configuations.ScriptStuff:Keybind { Name = "Keybind",
Default = Enum.KeyCode.RightShift, Blacklist = { Enum.UserInputType.MouseButton1 },
Flag = "CurrentBind", Callback = function(key, fromsetting)
if not fromsetting then
library:Toggle()
end
end },

WaterMarkToggle = Sections.Configuations.ScriptStuff:Keybind { Name =


"Watermark", Default = Enum.KeyCode.RightShift, Blacklist =
{ Enum.UserInputType.MouseButton1 }, Flag = "CurrentToggle", Callback =
function(key, fromsetting)
if not fromsetting then
watermark:Toggle()
end
end }
}

Discord = {

AutoJoin = Sections.Configuations.Discord:Toggle(
{
Name = "Auto Join",
Default = false,
Pointer = "64",
callback = function(e)
ConfigurationTab.Discord.AutoJoin = e

end
}
),

DiscordCopyInv = Sections.Configuations.Discord:Button { Name = "Copy Invite",


Callback = function()
setclipboard("https://discord.gg/BaUbkH7BVr")
end }

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------
-- fakelag --

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------
-- rage --

function getclosest()

local mouse = game.Players.localPlayer:GetMouse()


local x, y = mouse.X, mouse.Y
local closestPlayer = nil
local shortestDistance = math.huge
for i, v in pairs(game:GetService("Players"):GetPlayers()) do
if v ~= lp and v.Character and v.Character:FindFirstChild("Humanoid") and
v.Character.Humanoid.Health ~= 0 and v.Character:FindFirstChild("HumanoidRootPart")
and v.Character:FindFirstChild("Head") then
local pos =
game:GetService("Workspace").CurrentCamera:WorldToViewportPoint(v.Character.Humanoi
dRootPart.Position)
local magnitude = (Vector2.new(pos.X, pos.Y) - Vector2.new(x,
y)).magnitude
if magnitude < shortestDistance and v.Character.Humanoid.Health > 0
then
closestPlayer = v
shortestDistance = magnitude
end
end
end
return closestPlayer
end

game:GetService("RunService").Stepped:Connect(
function(a, b)
if PlrP ~= nil and RageSettings.TargetStrafe.Enabled and Locking then
delta = (delta + b / RageSettings.TargetStrafe.Speed) % 1
Circle.Visible = true
Circle.Position = PlrP.Character.HumanoidRootPart.Position
Circle.Color = RageSettings.TargetStrafe.Color
Circle.Radius = RageSettings.TargetStrafe.Distance
game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame =
CFrame.Angles(0, 2 * math.pi * delta, 0) * CFrame.new(0, 0, Circle.Radius) +
PlrP.Character.HumanoidRootPart.Position

if RageSettings.TargetStrafe.AntiAimMode then
if RageSettings.TargetStrafe.AntiAimType == 'Flinger' then
game.Players.LocalPlayer.Character.HumanoidRootPart.Velocity =
Vector3.new(math.random(-500, 500), math.random(-400, 400), math.random(-1000,
1000))
wait()
game.Players.LocalPlayer.Character.HumanoidRootPart.Velocity =
Vector3.new(math.random(-500, 500), math.random(-400, 400), math.random(-1000,
1000))
else
game.Players.LocalPlayer.Character.HumanoidRootPart.Velocity =
Vector3.new(math.random(100, 6000), math.random(100, 6000), math.random(100, 6000))
wait()
game.Players.LocalPlayer.Character.HumanoidRootPart.Velocity =
Vector3.new(-math.random(100, 6000), -math.random(100, 6000), -math.random(100,
6000))
end
end
else
Circle.Visible = false
end
end)
game:GetService("RunService").Stepped:Connect(
function(a, b)
Plr = NearestMouse()

fov_circle.Filled = AimingSettings.TargetAim.FOVFilled
fov_circle.Thickness = AimingSettings.TargetAim.FOVThickness
fov_circle.Radius = AimingSettings.TargetAim.FOV
outline.Radius = AimingSettings.TargetAim.FOV
fov_circle.Visible = AimingSettings.TargetAim.ShowFOV
outline.Visible = AimingSettings.TargetAim.ShowFOV
fov_circle.Color = AimingSettings.TargetAim.FOVColor
outline.Position = getMousePosition() + Vector2.new(0, 36)
fov_circle.Position = getMousePosition() + Vector2.new(0, 36)
fov_circle.Transparency = AimingSettings.TargetAim.FovTransparency
mouse_box.Thickness = AimingSettings.MousePosSector.Thickness -- thickness
slider
mouse_box.Size = Vector2.new(AimingSettings.MousePosSector.Size,
AimingSettings.MousePosSector.Size) -- size slider
if AimingSettings.MousePosSector.Enabled and NearestMouse() ~= nil then
mouse_box.Color = AimingSettings.MousePosSector.DOTColor -- add colorpicker
mouse_box.Visible = ((NearestMouse() and true) or false)
mouse_box.Position =
((NearestMouse().Character[AimingSettings.TargetAim.Hitboxes].Position and
Vector2.new(
WorldToViewportPoint(Camera,
Plr.Character[AimingSettings.TargetAim.Hitboxes].Position).X,
WorldToViewportPoint(Camera,
NearestMouse().Character[AimingSettings.TargetAim.Hitboxes].Position).Y
)) or
Vector2.new(-9000, -9000))
end

if RageSettings.LegitAntiHit.Enabled then
if RageSettings.LegitAntiHit.Enabled then
game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame =
game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame +
-game.Players.LocalPlayer.Character.Humanoid.MoveDirection *
RageSettings.LegitAntiHit.Multiplier
end
end

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------
-- auto predict to ping --

pingvalue = game:GetService("Stats").Network.ServerStatsItem["Data
Ping"]:GetValueString()
split = string.split(pingvalue, "(")
ping = tonumber(split[1])

if AimingSettings.TargetAim.PingPred1 == true then


if ping < 130 then
Pred = 0.151
elseif ping < 125 then
Pred = 0.149
elseif ping < 110 then
Pred = 0.146
elseif ping < 105 then
Pred = 0.138
elseif ping < 90 then
Pred = 0.136
elseif ping < 80 then
Pred = 0.134379
elseif ping < 70 then
Pred = 0.129762
elseif ping < 60 then
Pred = 0.1248976
elseif ping < 50 then
Pred = 0.1245
elseif ping < 40 then
Pred = 0.13232
end
end

if RageSettings.AntiAim.Enabled == true then


game.Players.LocalPlayer.Character.Head.CanCollide = false
game.Players.LocalPlayer.Character.UpperTorso.CanCollide = false
game.Players.LocalPlayer.Character.LowerTorso.CanCollide = false
game.Players.LocalPlayer.Character.HumanoidRootPart.CanCollide = false
game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame =
game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame *
CFrame.new(math.random(1, 2) == 1 and 2 or -2, 0, 0)
else
game.Players.LocalPlayer.Character.Head.CanCollide = true
game.Players.LocalPlayer.Character.UpperTorso.CanCollide = true
game.Players.LocalPlayer.Character.LowerTorso.CanCollide = true
game.Players.LocalPlayer.Character.HumanoidRootPart.CanCollide = true
end

if RageSettings.AntiAim.VelocityBreaker then
game.Players.LocalPlayer.Character.HumanoidRootPart.Velocity =
game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame.lookVector *
RageSettings.AntiAim.VBV
game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame =
game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame *
CFrame.Angles(0, math.rad(RageSettings.AntiAim.VBF), 0)
end

if MiscSettings.TrashTalk.Enabled == true then


local A_1 = {
"specter.lua > u",
"sonned?",
"sad life",
"u shall quit "
}
local A_2 = "All"
local Event =
game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest
Event:FireServer(A_1[math.random(7)], A_2)
end

if MiscSettings.Speed.Enabled and not MiscSettings.Fly.Enabled then


if LocalPlayer.Character.Humanoid.MoveDirection.Magnitude > 0 then
if MiscSettings.Speed.Motion then
LocalPlayer.Character:TranslateBy(
LocalPlayer.Character.Humanoid.MoveDirection *
MiscSettings.Speed.Amount / 1.5
)
end
if MiscSettings.Speed.BHop and
LocalPlayer.Character.Humanoid:GetState() ~=
Enum.HumanoidStateType.Freefall
then
LocalPlayer.Character.Humanoid:ChangeState("Jumping")
end
end
end

if MiscSettings.Fly.Enabled and
(not MiscSettings.Fly.MoveOnly or
LocalPlayer.Character.Humanoid.MoveDirection.Magnitude > 0)
then
if MiscSettings.Fly.Normal then
local AngleX, AngleY, AngleZ =
LocalPlayer.Character.HumanoidRootPart.CFrame:ToEulerAnglesYXZ()
LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(
LocalPlayer.Character.HumanoidRootPart.CFrame.X,
MiscSettings.Fly.Height + 24,
LocalPlayer.Character.HumanoidRootPart.CFrame.Z
) * CFrame.Angles(AngleX, AngleY, AngleZ)
LocalPlayer.Character.Humanoid:ChangeState("Freefall")
LocalPlayer.Character:TranslateBy(
LocalPlayer.Character.Humanoid.MoveDirection *
MiscSettings.Fly.Amount / 1.5
)
end
end

if MiscSettings.Strafe.Enabled then
if LocalPlayer.Character.Humanoid.MoveDirection.Magnitude > 0 and
LocalPlayer.Character.Humanoid:GetState() ==
Enum.HumanoidStateType.Freefall
then

LocalPlayer.Character:TranslateBy(LocalPlayer.Character.Humanoid.MoveDirection /
3.1)
end
end
end
)

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------------------------------------
-- map visuals --
local MapLightingJmp = Instance.new("ColorCorrectionEffect")

game:GetService("RunService").RenderStepped:Connect(
function()
if MapLightingJmp.Enabled ~= VisualsExtra.WorldVisuals.MapLightingEnabled then
MapLightingJmp.Enabled = VisualsExtra.WorldVisuals.MapLightingEnabled
end

if MapLightingJmp.Brightness ~= VisualsExtra.WorldVisuals.MapBrightness then


MapLightingJmp.Brightness = VisualsExtra.WorldVisuals.MapBrightness
end

if MapLightingJmp.Contrast ~= VisualsExtra.WorldVisuals.MapContrast then


MapLightingJmp.Contrast = VisualsExtra.WorldVisuals.MapContrast
end

if MapLightingJmp.TintColor ~= VisualsExtra.WorldVisuals.MapTintColor then


MapLightingJmp.TintColor = VisualsExtra.WorldVisuals.MapTintColor
end
if MapLightingJmp.Parent ~= game:GetService("Lighting") then
MapLightingJmp.Parent = game:GetService("Lighting")
end

-- wsg

if VisualsExtra.ClientVisuals.SelfChams then
for i, v in pairs(parts) do
game.Players.LocalPlayer.Character[v].Material =
VisualsExtra.ClientVisuals.SelfChamsMaterial
game.Players.LocalPlayer.Character[v].Color =
VisualsExtra.ClientVisuals.SelfChamsColor
end
end

if VisualsExtra.ClientVisuals.SelfChams == false then


for i, v in pairs(parts) do
game.Players.LocalPlayer.Character[v].Material =
VisualsExtra.ClientVisuals.BaseSkin
end
end

local tool = game.Players.LocalPlayer.Character:FindFirstChildOfClass("Tool")


if tool and tool:FindFirstChild 'Default' then

if VisualsExtra.WeaponEffects.Enabled == true then


Game.GetService(game,
"Players").LocalPlayer.Character:FindFirstChildOfClass("Tool").Default.Material =
VisualsExtra.WeaponEffects.Material
Game.GetService(game,
"Players").LocalPlayer.Character:FindFirstChildOfClass("Tool").Default.Color =
VisualsExtra.WeaponEffects.Color
else
if tool and tool:FindFirstChild 'Default' then
if VisualsExtra.WeaponEffects.Enabled == false then
Game.GetService(game,
"Players").LocalPlayer.Character:FindFirstChildOfClass("Tool").Default.Material =
Enum.Material.Glass
end
end
end
end
end

)
-----------------------------------------------------------------------------------
----------------------------------------------------------

-- no slowdown --

-- Bullet Tracers
bullet_tracer_color = Color3.fromRGB(255, 255, 255)
function GetGun()
if game.Players.LocalPlayer.Character then
for i, v in pairs(game.Players.LocalPlayer.Character:GetChildren()) do
if v:FindFirstChild 'Ammo' then
return v
end
end
end
return nil
end

BulletTracers = false
local Services = {
Players = game:GetService("Players"),
UserInputService = game:GetService("UserInputService"),
RunService = game:GetService("RunService"),
}

local Local = {
Player = Services.Players.LocalPlayer,
Mouse = Services.Players.LocalPlayer:GetMouse(),
}
local Other = {
Camera = workspace.CurrentCamera,
BeamPart = Instance.new("Part", workspace)
}

Other.BeamPart.Name = "BeamPart"
Other.BeamPart.Transparency = 1
local Settings = {
StartColor = MainAccentColor,
EndColor = MainAccentColor,
StartWidth = 3,
EndWidth = 3,
ShowImpactPoint = false,
ImpactTransparency = 0.5,
ImpactColor = Color3.new(1, 1, 1),
Time = 1,
}
game:GetService "RunService".Heartbeat:Connect(function()

end)
local funcs = {}
Local.Mouse.TargetFilter = Other.BeamPart
function funcs:Beam(v1, v2)
v2 = Vector3.new(v2.X - 0.1, v2.Y + 0.2, v2.Z)
local colorSequence = ColorSequence.new({
ColorSequenceKeypoint.new(0, bullet_tracer_color),
ColorSequenceKeypoint.new(1, bullet_tracer_color),
})
local Part = Instance.new("Part", Other.BeamPart)
Part.Size = Vector3.new(0, 0, 0)
Part.Massless = true
Part.Transparency = 1
Part.CanCollide = false
Part.Position = v1
Part.Anchored = true
local Attachment = Instance.new("Attachment", Part)
local Part2 = Instance.new("Part", Other.BeamPart)
Part2.Size = Vector3.new(0, 0, 0)
Part2.Transparency = 0
Part2.CanCollide = false
Part2.Position = v2
Part2.Anchored = true
Part2.Material = Enum.Material.ForceField
Part2.Color = Settings.ImpactColor
Part2.Massless = true
local Attachment2 = Instance.new("Attachment", Part2)
local Beam = Instance.new("Beam", Part)
Beam.FaceCamera = true
Beam.Color = colorSequence
Beam.Attachment0 = Attachment
Beam.Attachment1 = Attachment2
Beam.LightEmission = 6
Beam.LightInfluence = 1
Beam.Width0 = Settings.StartWidth
Beam.Width1 = Settings.EndWidth
Beam.Texture = "http://www.roblox.com/asset/?id=9150663556"
Beam.TextureSpeed = 2
Beam.TextureLength = 1
delay(Settings.Time, function()
Part:Destroy()
Part2:Destroy()
end)
end

spawn(function()
while task.wait(0.5) do
gun = GetGun()
if gun then
LastAmmo = gun.Ammo.Value
gun.Ammo:GetPropertyChangedSignal("Value"):Connect(function()
if BulletTracers and gun.Ammo.Value < LastAmmo then
LastAmmo = gun.Ammo.Value
funcs:Beam(gun.Handle.Position, Local.Mouse.hit.p)
end
end)
end
end
end)

Library:ChangeAccent(Color3.fromRGB(133, 87, 242))


Library:ChangeOutline { Color3.fromRGB(121, 66, 254), Color3.fromRGB(223, 57,
137) }

Library:Initialize()

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy