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, " | ")
local watermarksize = services.TextService:GetTextSize(text:gsub("", ""):gsub("", ""), 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, " | ")
local watermarksize = services.TextService:GetTextSize(text:gsub("", ""):gsub("", ""), 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.HumanoidRootPart.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()