0% found this document useful (0 votes)
742 views128 pages

Starhook Mobile Fixed - Lua

Uploaded by

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

Starhook Mobile Fixed - Lua

Uploaded by

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

-- Made by linemaster3

-- Modifyed for mobile (atzlazyblue the skibidi modifyer)

local Drawing =
loadstring(game:HttpGet("https://raw.githubusercontent.com/linemaster2/storage/
main/Drawing.lua"))();

local Library = {};


do
Library = {
Open = true;
Accent = Color3.fromRGB(207, 227, 0);
Pages = {};
Sections = {};
Flags = {};
UnNamedFlags = 0;
ThemeObjects = {};
Instances = {};
Holder = nil;
OldSize = nil;
ScreenGUI = nil;
DropdownOpen = false,
OptionListOpen = false,
Keys = {
[Enum.KeyCode.Space] = "Space",
[Enum.KeyCode.Return] = "Return",
[Enum.KeyCode.LeftShift] = "LShift",
[Enum.KeyCode.RightShift] = "RShift",
[Enum.KeyCode.LeftControl] = "LCtrl",
[Enum.KeyCode.RightControl] = "RCtrl",
[Enum.KeyCode.LeftAlt] = "LAlt",
[Enum.KeyCode.RightAlt] = "RAlt",
[Enum.KeyCode.CapsLock] = "CAPS",
[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] = "Num1",
[Enum.KeyCode.KeypadTwo] = "Num2",
[Enum.KeyCode.KeypadThree] = "Num3",
[Enum.KeyCode.KeypadFour] = "Num4",
[Enum.KeyCode.KeypadFive] = "Num5",
[Enum.KeyCode.KeypadSix] = "Num6",
[Enum.KeyCode.KeypadSeven] = "Num7",
[Enum.KeyCode.KeypadEight] = "Num8",
[Enum.KeyCode.KeypadNine] = "Num9",
[Enum.KeyCode.KeypadZero] = "Num0",
[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] = "MB1",
[Enum.UserInputType.MouseButton2] = "MB2",
[Enum.UserInputType.MouseButton3] = "MB3"
};
Connections = {};
FontSize = 12;
VisValues = {};
UIKey = Enum.KeyCode.Insert;
Notifs = {};
}

-- // Ignores
local Flags = {} -- Ignore
local ColorHolders = {}

for i = 1, 10 do
print("Starhook Mobile (atzlazyblue): Loaded!")
end;

-- // Extension
Library.__index = Library
Library.Pages.__index = Library.Pages
Library.Sections.__index = Library.Sections
local LocalPlayer = game:GetService('Players').LocalPlayer;
local Mouse = LocalPlayer:GetMouse();
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")

-- // Misc Functions
do
function Library:Connection(signal, Callback)
local Con = signal:Connect(Callback)
return Con
end
--
function Library:Disconnect(Connection)
Connection:Disconnect()
end
--
function Library:Round(Number, Float)
return Float * math.floor(Number / Float)
end
--
function Library.NextFlag()
Library.UnNamedFlags = Library.UnNamedFlags + 1
return string.format("%.14g", Library.UnNamedFlags)
end
--
function Library:GetConfig()
local Config = ""
for Index, Value in pairs(self.Flags) do
if
Index ~= "ConfigConfig_List"
and Index ~= "ConfigConfig_Load"
and Index ~= "ConfigConfig_Save"
then
local Value2 = Value
local Final = ""
--
if typeof(Value2) == "Color3" then
local hue, sat, val = Value2:ToHSV()
--
Final = ("rgb(%s,%s,%s,%s)"):format(hue, sat,
val, 1)
elseif typeof(Value2) == "table" and Value2.Color and
Value2.Transparency then
local hue, sat, val = Value2.Color:ToHSV()
--
Final = ("rgb(%s,%s,%s,%s)"):format(hue, sat,
val, Value2.Transparency)
elseif typeof(Value2) == "table" and Value.Mode then
local Values = Value.current
--
Final = ("key(%s,%s,%s)"):format(Values[1] or
"nil", Values[2] or "nil", Value.Mode)
elseif Value2 ~= nil then
if typeof(Value2) == "boolean" then
Value2 =
("bool(%s)"):format(tostring(Value2))
elseif typeof(Value2) == "table" then
local New = "table("
--
for Index2, Value3 in pairs(Value2) do
New = New .. Value3 .. ","
end
--
if New:sub(#New) == "," then
New = New:sub(0, #New - 1)
end
--
Value2 = New .. ")"
elseif typeof(Value2) == "string" then
Value2 = ("string(%s)"):format(Value2)
elseif typeof(Value2) == "number" then
Value2 = ("number(%s)"):format(Value2)
end
--
Final = Value2
end
--
Config = Config .. Index .. ": " ..
tostring(Final) .. "\n"
end
end
--
return Config
end
--
function Library:LoadConfig(Config)
local Table = string.split(Config, "\n")
local Table2 = {}
for Index, Value in pairs(Table) do
local Table3 = string.split(Value, ":")
--
if Table3[1] ~= "ConfigConfig_List" and #Table3 >= 2 then
local Value = Table3[2]:sub(2, #Table3[2])
--
if Value:sub(1, 3) == "rgb" then
local Table4 = string.split(Value:sub(5, #Value
- 1), ",")
--
Value = Table4
elseif Value:sub(1, 3) == "key" then
local Table4 = string.split(Value:sub(5, #Value
- 1), ",")
--
if Table4[1] == "nil" and Table4[2] == "nil"
then
Table4[1] = nil
Table4[2] = nil
end
--
Value = Table4
elseif Value:sub(1, 4) == "bool" then
local Bool = Value:sub(6, #Value - 1)
--
Value = Bool == "true"
elseif Value:sub(1, 5) == "table" then
local Table4 = string.split(Value:sub(7, #Value
- 1), ",")
--
Value = Table4
elseif Value:sub(1, 6) == "string" then
local String = Value:sub(8, #Value - 1)
--
Value = String
elseif Value:sub(1, 6) == "number" then
local Number = tonumber(Value:sub(8, #Value -
1))
--
Value = Number
end
--
Table2[Table3[1]] = Value
end
end
--
for i, v in pairs(Table2) do
if Flags[i] then
if typeof(Flags[i]) == "table" then
Flags[i]:Set(v)
else
Flags[i](v)
end
end
end
end
--
function Library:SetOpen(bool)
if typeof(bool) == 'boolean' then
Library.Open = bool;
if Library.Open then
Library.Holder.Visible = true
--
game:GetService("TweenService"):Create(Library.Holder, TweenInfo.new(0.25,
Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Size = UDim2.new(0,
Library.OldSize.X.Offset,0,40)}):Play()

game:GetService("TweenService"):Create(Library.Holder, TweenInfo.new(0.25,
Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Size = UDim2.new(0,
Library.OldSize.X.Offset,0,Library.OldSize.Y.Offset)}):Play()
else
--
game:GetService("TweenService"):Create(Library.Holder, TweenInfo.new(0.25,
Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Size = UDim2.new(0,
Library.OldSize.X.Offset,0,40)}):Play()

game:GetService("TweenService"):Create(Library.Holder, TweenInfo.new(0.25,
Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Size = UDim2.new(0,
0,0,20)}):Play()
task.wait(0.25)
Library.Holder.Visible = false
end
end
end;
--
function Library:ChangeAccent(Color)
Library.Accent = Color

for obj, theme in next, Library.ThemeObjects do


if theme:IsA("Frame") or theme:IsA("TextButton") then
theme.BackgroundColor3 = Color
elseif theme:IsA("TextLabel") then
theme.TextColor3 = Color
elseif theme:IsA("ScrollingFrame") then
theme.ScrollBarImageColor3 = Library.Accent
end
end
end
--
function Library:IsMouseOverFrame(Frame)
local AbsPos, AbsSize = Frame.AbsolutePosition,
Frame.AbsoluteSize;

if Mouse.X >= AbsPos.X and Mouse.X <= AbsPos.X + AbsSize.X


and Mouse.Y >= AbsPos.Y and Mouse.Y <= AbsPos.Y + AbsSize.Y
then

return true;
end;

return false;
end;
--
function MakeDraggable(Instance)
local Dragging
local DragInput
local StartPosition
local StartMousePosition

local function UpdateInput(input)


local delta = input.Position - StartMousePosition
Instance.Position = UDim2.new(StartPosition.X.Scale,
StartPosition.X.Offset + delta.X, StartPosition.Y.Scale, StartPosition.Y.Offset +
delta.Y)
end

Instance.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
Dragging = true
StartMousePosition = input.Position
StartPosition = Instance.Position

input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
Dragging = false
end
end)
end
end)

Instance.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or
input.UserInputType == Enum.UserInputType.Touch then
DragInput = input
end
end)

game:GetService("UserInputService").InputChanged:Connect(function(input)
if Dragging and input == DragInput then
UpdateInput(input)
end
end)
end;
end
-- // Colorpicker Element
do
function Library:NewPicker(name, default, parent, count, flag, callback)
-- // Instances
local ColorpickerFrame = Instance.new("TextButton")
ColorpickerFrame.Name = "Colorpicker_frame"
ColorpickerFrame.BackgroundColor3 = default
ColorpickerFrame.BorderColor3 = Color3.fromRGB(0, 0, 0)
ColorpickerFrame.BorderSizePixel = 0
if count == 1 then
ColorpickerFrame.Position = UDim2.new(1, - (count * 20),0.5,0)
else
ColorpickerFrame.Position = UDim2.new(1, - (count * 20) - (count *
4),0.5,0)
end
ColorpickerFrame.Size = UDim2.new(0, 20, 0, 20)
ColorpickerFrame.AnchorPoint = Vector2.new(0,0.5)
ColorpickerFrame.Text = ""
ColorpickerFrame.AutoButtonColor = false

local UICorner = Instance.new("UICorner")


UICorner.Name = "UICorner"
UICorner.CornerRadius = UDim.new(0, 4)
UICorner.Parent = ColorpickerFrame

local UIStroke = Instance.new("UIStroke")


UIStroke.Name = "UIStroke"
UIStroke.Color = Color3.fromRGB(40, 40, 40)
UIStroke.Parent = ColorpickerFrame

ColorpickerFrame.Parent = parent

local Colorpicker = Instance.new("TextButton")


Colorpicker.Name = "Colorpicker"
Colorpicker.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
Colorpicker.BorderColor3 = Color3.fromRGB(0, 0, 0)
Colorpicker.BorderSizePixel = 0
Colorpicker.Position = UDim2.new(0, ColorpickerFrame.AbsolutePosition.X
- 100, 0, ColorpickerFrame.AbsolutePosition.Y - 50)
Colorpicker.Size = UDim2.new(0, 180, 0, 180)
Colorpicker.Parent = Library.ScreenGUI
Colorpicker.ZIndex = 100
Colorpicker.Visible = false
Colorpicker.Text = ""
Colorpicker.AutoButtonColor = false
local H,S,V = default:ToHSV()
local ImageLabel = Instance.new("ImageLabel")
ImageLabel.Name = "ImageLabel"
ImageLabel.Image = "rbxassetid://11970108040"
ImageLabel.BackgroundColor3 = Color3.fromHSV(H, 1, 1)
ImageLabel.BorderColor3 = Color3.fromRGB(0, 0, 0)
ImageLabel.BorderSizePixel = 0
ImageLabel.Position = UDim2.new(0.0556, 0, 0.026, 0)
ImageLabel.Size = UDim2.new(0, 160, 0, 154)
ImageLabel.Parent = Colorpicker

local UICorner = Instance.new("UICorner")


UICorner.Name = "UICorner"
UICorner.CornerRadius = UDim.new(0, 6)
UICorner.Parent = Colorpicker

local ImageButton = Instance.new("ImageButton")


ImageButton.Name = "ImageButton"
ImageButton.Image = "rbxassetid://14684562507"
ImageButton.BackgroundColor3 = Color3.fromHSV(H, 1, 1)
ImageButton.BorderColor3 = Color3.fromRGB(0, 0, 0)
ImageButton.BorderSizePixel = 0
ImageButton.Position = UDim2.new(0.056, 0, 0.026, 0)
ImageButton.Size = UDim2.new(0, 160, 0, 154)
ImageButton.AutoButtonColor = false

local SVSlider = Instance.new("Frame")


SVSlider.Name = "SV_slider"
SVSlider.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
SVSlider.BackgroundTransparency = 1
SVSlider.ClipsDescendants = true
SVSlider.Position = UDim2.new(0.855, 0, 0.0966, 0)
SVSlider.Size = UDim2.new(0,7,0,7)
SVSlider.ZIndex = 3

local Val = Instance.new("ImageLabel")


Val.Name = "Val"
Val.Image = "http://www.roblox.com/asset/?id=14684563800"
Val.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
Val.BackgroundTransparency = 1
Val.BorderColor3 = Color3.fromRGB(0, 0, 0)
Val.BorderSizePixel = 0
Val.Size = UDim2.new(1, 0, 1, 0)
Val.Parent = ImageButton

local UICorner1 = Instance.new("UICorner")


UICorner1.Name = "UICorner"
UICorner1.CornerRadius = UDim.new(0, 100)
UICorner1.Parent = SVSlider

local UIStroke = Instance.new("UIStroke")


UIStroke.Name = "UIStroke"
UIStroke.Color = Color3.fromRGB(255, 255, 255)
UIStroke.Parent = SVSlider

SVSlider.Parent = ImageButton

ImageButton.Parent = Colorpicker

local ImageButton1 = Instance.new("ImageButton")


ImageButton1.Name = "ImageButton"
ImageButton1.Image = "http://www.roblox.com/asset/?id=16789872274"
ImageButton1.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
ImageButton1.BorderColor3 = Color3.fromRGB(0, 0, 0)
ImageButton1.BorderSizePixel = 0
ImageButton1.Position = UDim2.new(0.5, 0,0, 165)
ImageButton1.Size = UDim2.new(0, 160,0, 8)
ImageButton1.AutoButtonColor = false
ImageButton1.AnchorPoint = Vector2.new(0.5,0)
ImageButton1.BackgroundTransparency = 1

local Frame = Instance.new("Frame")


Frame.Name = "Frame"
Frame.BackgroundColor3 = Color3.fromRGB(254, 254, 254)
Frame.BorderColor3 = Color3.fromRGB(0, 0, 0)
Frame.BorderSizePixel = 0
Frame.Position = UDim2.new(0.926, 0,0.5, 0)
Frame.Size = UDim2.new(0, 12,0, 12)
Frame.AnchorPoint = Vector2.new(0,0.5)
Frame.ZIndex = 45

local UICorner2 = Instance.new("UICorner")


UICorner2.Name = "UICorner"
UICorner2.Parent = Frame
UICorner2.CornerRadius = UDim.new(1,0)

local UICorner3 = Instance.new("UICorner")


UICorner3.Name = "UICorner"
UICorner3.Parent = ImageButton1
Frame.Parent = ImageButton1

ImageButton1.Parent = Colorpicker

-- // Connections
local mouseover = false
local hue, sat, val = default:ToHSV()
local hsv = default:ToHSV()
local oldcolor = hsv
local slidingsaturation = false
local slidinghue = false
local slidingalpha = false

local function update()


local real_pos =
game:GetService("UserInputService"):GetMouseLocation()
local mouse_position = Vector2.new(real_pos.X, real_pos.Y - 30)
local relative_palette = (mouse_position -
ImageButton.AbsolutePosition)
local relative_hue = (mouse_position -
ImageButton1.AbsolutePosition)
--
if slidingsaturation then
sat = math.clamp(1 - relative_palette.X /
ImageButton.AbsoluteSize.X, 0, 1)
val = math.clamp(1 - relative_palette.Y /
ImageButton.AbsoluteSize.Y, 0, 1)
elseif slidinghue then
hue = math.clamp(relative_hue.X /
ImageButton.AbsoluteSize.X, 0, 1)
end

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


TweenService:Create(SVSlider, TweenInfo.new(0.05,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(math.clamp(1 - sat, 0.000, 1 - 0.055), 0, math.clamp(1 - val, 0.000, 1 -
0.045), 0)}):Play()
ImageButton.BackgroundColor3 = Color3.fromHSV(hue, 1, 1)
ColorpickerFrame.BackgroundColor3 = hsv

TweenService:Create(Frame, TweenInfo.new(0.05,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(math.clamp(hue, 0.000, 0.982),-5,0.5,0)}):Play()

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 function set(color)


if type(color) == "table" then
color = Color3.fromHSV(color[1], color[2], color[3])
end
if type(color) == "string" then
color = Color3.fromHex(color)
end

local oldcolor = hsv

hue, sat, val = color:ToHSV()


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

if hsv ~= oldcolor then


ColorpickerFrame.BackgroundColor3 = hsv
TweenService:Create(SVSlider, TweenInfo.new(0.05,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(math.clamp(1 - sat, 0.000, 1 - 0.055), 0, math.clamp(1 - val, 0.000, 1 -
0.045), 0)}):Play()
ImageButton.BackgroundColor3 = Color3.fromHSV(hue, 1, 1)
TweenService:Create(Frame, TweenInfo.new(0.05,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(math.clamp(hue, 0.000, 0.982),-5,0.5,0)}):Play()

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
end

Flags[flag] = set

set(default)

ImageButton.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
slidingsaturation = true
update()
end
end)

ImageButton.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
slidingsaturation = false
update()
end
end)

ImageButton1.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
slidinghue = true
update()
end
end)

ImageButton1.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
slidinghue = false
update()
end
end)

Library:Connection(game:GetService("UserInputService").InputChanged,
function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
if slidinghue then
update()
end

if slidingsaturation then
update()
end
end
end)

local colorpickertypes = {}

function colorpickertypes:Set(color, newalpha)


set(color, newalpha)
end

Library:Connection(game:GetService("UserInputService").InputBegan,
function(Input)
if Colorpicker.Visible and Input.UserInputType ==
Enum.UserInputType.MouseButton1 and input.UserInputType == Enum.UserInputType.Touch
then
if not Library:IsMouseOverFrame(Colorpicker) and not
Library:IsMouseOverFrame(ColorpickerFrame) then
Colorpicker.Position = UDim2.new(0,
ColorpickerFrame.AbsolutePosition.X - 100, 0, ColorpickerFrame.AbsolutePosition.Y +
25)
TweenService:Create(Colorpicker, TweenInfo.new(0.1,
Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {BackgroundTransparency =
1}):Play()
TweenService:Create(Colorpicker, TweenInfo.new(0.1,
Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {Position = UDim2.new(0,
ColorpickerFrame.AbsolutePosition.X - 100, 0,
ColorpickerFrame.AbsolutePosition.Y)}):Play()
task.spawn(function()
task.wait(0.1)
Colorpicker.Visible = false
parent.ZIndex = 1
Library.Cooldown = false
end)
for _,V in next, Colorpicker:GetDescendants() do
if V:IsA("Frame") or V:IsA("TextButton") or
V:IsA("ScrollingFrame") then
TweenService:Create(V, TweenInfo.new(0.1,
Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {BackgroundTransparency =
1}):Play()
Library.VisValues[V] = V.BackgroundTransparency
elseif V:IsA("TextLabel") or V:IsA("TextBox") then
TweenService:Create(V, TweenInfo.new(0.1,
Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {TextTransparency = 1}):Play()
Library.VisValues[V] = V.TextTransparency
elseif V:IsA("ImageLabel") or V:IsA("ImageButton") then
TweenService:Create(V, TweenInfo.new(0.1,
Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {ImageTransparency =
1}):Play();
Library.VisValues[V] = V.ImageTransparency
elseif V:IsA("UIStroke") then
TweenService:Create(V, TweenInfo.new(0.1,
Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {Transparency = 1}):Play()
Library.VisValues[V] = V.Transparency
end
end
end
end
end)

ColorpickerFrame.MouseButton1Click:Connect(function()
if Colorpicker.Visible == false then
Colorpicker.Position = UDim2.new(0,
ColorpickerFrame.AbsolutePosition.X - 100, 0, ColorpickerFrame.AbsolutePosition.Y)
TweenService:Create(Colorpicker, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position = UDim2.new(0,
ColorpickerFrame.AbsolutePosition.X - 100, 0, ColorpickerFrame.AbsolutePosition.Y +
25)}):Play()
end
Colorpicker.Visible = not Colorpicker.Visible -- who tf thought
Colorpicker.Visible = true was a good idea like atzlazyblue founded this problem
parent.ZIndex = 100
Library.Cooldown = true
TweenService:Create(Colorpicker, TweenInfo.new(0.1,
Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {BackgroundTransparency =
0}):Play()
for _, V in next, Colorpicker:GetDescendants() do
if V:IsA("Frame") or V:IsA("TextButton") or
V:IsA("ScrollingFrame") then
TweenService:Create(V, TweenInfo.new(0.1,
Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {BackgroundTransparency =
Library.VisValues[V]}):Play()
elseif V:IsA("TextLabel") or V:IsA("TextBox") then
TweenService:Create(V, TweenInfo.new(0.1,
Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {TextTransparency =
Library.VisValues[V]}):Play()
elseif V:IsA("ImageLabel") or V:IsA("ImageButton") then
TweenService:Create(V, TweenInfo.new(0.1,
Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {ImageTransparency =
Library.VisValues[V]}):Play()
elseif V:IsA("UIStroke") then
TweenService:Create(V, TweenInfo.new(0.1,
Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {Transparency = 0}):Play()
end
end
if slidinghue then
slidinghue = false
end
if slidingsaturation then
slidingsaturation = false
end
end)

return colorpickertypes, Colorpicker


end
end
--
function Library:updateNotifsPositions(position)
for i, v in pairs(Library.Notifs) do
local Position = Vector2.new(20, 20)
game:GetService("TweenService"):Create(v.Container,
TweenInfo.new(1, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Position
= UDim2.new(0,Position.X,0,Position.Y + (i * 25))}):Play()
end
end
--
function Library:Notification(message, duration)
local notification = {Container = nil, Objects = {}}
--
local Position = Vector2.new(20, 20)
--
local NewInd = Instance.new("Frame")
NewInd.Name = "NewInd"
NewInd.AutomaticSize = Enum.AutomaticSize.X
NewInd.Position = UDim2.new(0,20,0,20)
NewInd.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
NewInd.BackgroundTransparency = 1
NewInd.BorderColor3 = Color3.fromRGB(0, 0, 0)
NewInd.Size = UDim2.fromOffset(0, 20)
NewInd.Parent = Library.ScreenGUI
notification.Container = NewInd

local Outline = Instance.new("Frame")


Outline.Name = "Outline"
Outline.AnchorPoint = Vector2.new(0, 0)
Outline.AutomaticSize = Enum.AutomaticSize.X
Outline.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
Outline.BorderColor3 = Color3.fromRGB(0, 0, 0)
Outline.BorderSizePixel = 1
Outline.Position = UDim2.new(0,0,0,0)
Outline.Size = UDim2.fromOffset(0, 20)
Outline.Visible = true
Outline.ZIndex = 50
Outline.Parent = NewInd
Outline.BackgroundTransparency = 1

local UICorner = Instance.new("UICorner")


UICorner.Name = "UICorner"
UICorner.CornerRadius = UDim.new(0, 4)
UICorner.Parent = Outline

local UIStroke = Instance.new("UIStroke")


UIStroke.Name = "UIStroke"
UIStroke.Parent = Outline
UIStroke.Transparency = 1

local Inline = Instance.new("Frame")


Inline.Name = "Inline"
Inline.BackgroundColor3 = Color3.fromRGB(13, 13, 13)
Inline.BorderColor3 = Color3.fromRGB(0, 0, 0)
Inline.BorderSizePixel = 0
Inline.Position = UDim2.fromOffset(1, 1)
Inline.Size = UDim2.new(1, -2, 1, -2)
Inline.ZIndex = 51
Inline.BackgroundTransparency = 1
local UICorner2 = Instance.new("UICorner")
UICorner2.Name = "UICorner_2"
UICorner2.CornerRadius = UDim.new(0, 4)
UICorner2.Parent = Inline

local Title = Instance.new("TextLabel")


Title.Name = "Title"
Title.FontFace = Font.new("rbxasset://fonts/families/GothamSSm.json")
Title.RichText = true
Title.Text = message
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 13
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.AutomaticSize = Enum.AutomaticSize.X
Title.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
Title.BackgroundTransparency = 1
Title.BorderColor3 = Color3.fromRGB(0, 0, 0)
Title.BorderSizePixel = 0
Title.Position = UDim2.fromOffset(5, 0)
Title.Size = UDim2.fromScale(0, 1)
Title.Parent = Inline
Title.TextTransparency = 1

local UIPadding = Instance.new("UIPadding")


UIPadding.Name = "UIPadding"
UIPadding.PaddingRight = UDim.new(0, 6)
UIPadding.Parent = Inline

Inline.Parent = Outline

function notification:remove()
table.remove(Library.Notifs, table.find(Library.Notifs,
notification))
Library:updateNotifsPositions(Position)
task.wait(0.5)
NewInd:Destroy()
end

task.spawn(function()
Outline.AnchorPoint = Vector2.new(1,0)
for i,v in next, NewInd:GetDescendants() do
if v:IsA("Frame") then
game:GetService("TweenService"):Create(v,
TweenInfo.new(1, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out),
{BackgroundTransparency = 0}):Play()
elseif v:IsA("UIStroke") then
game:GetService("TweenService"):Create(v,
TweenInfo.new(1, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out),
{Transparency = 0}):Play()
end
end
local Tween1 = game:GetService("TweenService"):Create(Outline,
TweenInfo.new(1, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out),
{AnchorPoint = Vector2.new(0,0)}):Play()
game:GetService("TweenService"):Create(Title, TweenInfo.new(1,
Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {TextTransparency =
0}):Play()
task.wait(duration)
--game:GetService("TweenService"):Create(ActualInd,
TweenInfo.new(1, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out),
{AnchorPoint = Vector2.new(1,0)}):Play()
for i,v in next, NewInd:GetDescendants() do
if v:IsA("Frame") then
game:GetService("TweenService"):Create(v,
TweenInfo.new(1, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out),
{BackgroundTransparency = 1}):Play()
elseif v:IsA("UIStroke") then
game:GetService("TweenService"):Create(v,
TweenInfo.new(1, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out),
{Transparency = 1}):Play()
end
end
game:GetService("TweenService"):Create(Title, TweenInfo.new(1,
Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {TextTransparency =
1}):Play()
end)

task.delay(duration + 0.1, function()


notification:remove()
end)

table.insert(Library.Notifs, notification)
Library:updateNotifsPositions(Position)
NewInd.Position = UDim2.new(0,Position.X,0,Position.Y +
(table.find(Library.Notifs, notification) * 25))
return notification
end

-- // Main
do
local Pages = Library.Pages;
local Sections = Library.Sections;
--
function Library:New(Properties)
if not Properties then
Properties = {}
end
--
local Window = {
Size = Properties.Size or UDim2.new(0,600,0,450),
Pages = {},
PageAxis = 0,
Dragging = { false, UDim2.new(0, 0, 0, 0) },
Resized = nil,
Elements = {},
}
--
local ScreenGui = Instance.new('ScreenGui',
game:GetService("RunService"):IsStudio() and game.Players.LocalPlayer.PlayerGui or
game.CoreGui)
local Outline = Instance.new('Frame', ScreenGui)
MakeDraggable(Outline)
local UICorner = Instance.new('UICorner', Outline)
local UIStroke = Instance.new('UIStroke', Outline)
local Inline = Instance.new('Frame', Outline)
local UICorner_2 = Instance.new('UICorner', Inline)
local Holder = Instance.new('Frame', Inline)
local UICorner = Instance.new('UICorner', Holder)
local Frame = Instance.new('Frame', Holder)
local Tabs = Instance.new('Frame', Inline)
local UIListLayout = Instance.new('UIListLayout', Tabs)
local TextButton = Instance.new('TextButton', Inline)
--
if UserInputService.TouchEnabled then
local ToggleSG = Instance.new("ScreenGui", game.CoreGui)
local button = Instance.new("TextButton", ToggleSG)
local UICorner_Inf = Instance.new("UICorner", button)
ToggleSG.DisplayOrder = 9999
--
button.Size = UDim2.new(0, 80, 0, 20)
button.AnchorPoint = Vector2.new(1, 0)
button.Position = UDim2.new(1, -10, 0, 32)
button.BackgroundColor3 = Color3.fromRGB(16,16,16)
button.AutoButtonColor = false
button.BorderColor3 = Color3.new(0,0,0)
button.RichText = true
button.TextSize = 12
button.Font = Enum.Font.Ubuntu
button.Text = '<font color="#d0e300">Starhook</font><font
color="#FFFFFF">.club</font>'
button.TextColor3 = Color3.new(1,1,1)
--
UICorner_Inf.CornerRadius = UDim.new(0.25,0)
--
button.MouseButton1Click:Connect(function()
Outline.Visible = not Outline.Visible
end)
end;
--
ScreenGui.DisplayOrder = 100
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
Library.ScreenGUI = ScreenGui
--
Outline.Name = "Outline"
Outline.Position = UDim2.new(0.5,0,0.5,0)
Outline.Size = UDim2.new(0,0,0,40)
Outline.BackgroundColor3 = Color3.new(0.1961,0.1961,0.1961)
Outline.BorderColor3 = Color3.new(0,0,0)
Outline.AnchorPoint = Vector2.new(0.5,0.5)
Outline.ZIndex = 50
Outline.ClipsDescendants = false
Library.Holder = Outline
Library.OldSize = Window.Size
--
local Logo = Instance.new("ImageLabel")
Logo.Name = "Logo"
Logo.Image = Properties.Logo
Logo.ScaleType = Enum.ScaleType.Fit
Logo.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
Logo.BackgroundTransparency = 1
Logo.BorderColor3 = Color3.fromRGB(0, 0, 0)
Logo.BorderSizePixel = 0
Logo.Position = UDim2.fromOffset(10, -20)
Logo.ImageColor3 = Properties.LogoRGB
Logo.Size = UDim2.fromOffset(90, 90)
Logo.Parent = Holder
--
Inline.Name = "Inline"
Inline.Position = UDim2.new(0,1,0,1)
Inline.Size = UDim2.new(1,-2,1,-2)
Inline.BackgroundColor3 = Color3.new(0.051,0.051,0.051)
Inline.BorderSizePixel = 0
Inline.BorderColor3 = Color3.new(0,0,0)
Inline.ZIndex = 51
--
Holder.Name = "Holder"
Holder.Position = UDim2.new(0,150,0,0)
Holder.Size = UDim2.new(1,-150,1,0)
Holder.BackgroundColor3 = Color3.new(0.0588235, 0.0588235,
0.0588235)
Holder.BorderSizePixel = 0
Holder.BorderColor3 = Color3.new(0,0,0)
Holder.ZIndex = 52
--
Frame.Size = UDim2.new(0,5,1,0)
Frame.BackgroundColor3 = Color3.new(0.0588235, 0.0588235,
0.0588235)
Frame.BorderSizePixel = 0
Frame.BorderColor3 = Color3.new(0,0,0)
--
Tabs.Name = "Tabs"
Tabs.Position = UDim2.new(0,5,0,10)
Tabs.Size = UDim2.new(0,140,1,-20)
Tabs.BackgroundColor3 = Color3.new(1,1,1)
Tabs.BackgroundTransparency = 1.01
Tabs.BorderSizePixel = 0
Tabs.BorderColor3 = Color3.new(0,0,0)
--
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
UIListLayout.Padding = UDim.new(0,4)
--
TextButton.Size = UDim2.new(1,0,0,20)
TextButton.BackgroundColor3 = Color3.new(1,1,1)
TextButton.BackgroundTransparency = 1
TextButton.BorderSizePixel = 0
TextButton.BorderColor3 = Color3.new(0,0,0)
TextButton.Text = ""
TextButton.TextColor3 = Color3.new(0,0,0)
TextButton.AutoButtonColor = false
TextButton.Font = Enum.Font.SourceSans
TextButton.TextSize = 14
TextButton.ZIndex = 100

local Line1 = Instance.new("Frame")


Line1.Name = "Line1"
Line1.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
Line1.BorderColor3 = Color3.fromRGB(0, 0, 0)
Line1.BorderSizePixel = 0
Line1.Position = UDim2.fromOffset(0, 50)
Line1.Size = UDim2.new(1, 0, 0, 1)
Line1.Parent = Holder

local Line2 = Instance.new("Frame")


Line2.Name = "Line2"
Line2.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
Line2.BorderColor3 = Color3.fromRGB(0, 0, 0)
Line2.BorderSizePixel = 0
Line2.Size = UDim2.new(0, 1, 1, 0)
Line2.Parent = Holder

local Logo = Instance.new("ImageLabel")


Logo.Name = "Logo"
Logo.Image = "http://www.roblox.com/asset/?id=17669613413"
Logo.ScaleType = Enum.ScaleType.Fit
Logo.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
Logo.BackgroundTransparency = 1
Logo.BorderColor3 = Color3.fromRGB(0, 0, 0)
Logo.BorderSizePixel = 0
Logo.Position = UDim2.fromOffset(10, -20)
Logo.Size = UDim2.fromOffset(90, 90)
Logo.Parent = Holder

local FadeThing = Instance.new("Frame")


FadeThing.Name = "FadeThing"
FadeThing.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
FadeThing.BorderColor3 = Color3.fromRGB(0, 0, 0)
FadeThing.BorderSizePixel = 0
FadeThing.Position = UDim2.fromOffset(9, 59)
FadeThing.Size = UDim2.new(1, -18, 1, -63)
FadeThing.ZIndex = 55
FadeThing.Parent = Holder
FadeThing.Visible = false

-- // Elements
Window.Elements = {
TabHolder = Tabs,
Holder = Holder,
FadeThing = FadeThing
}

-- // Functions
function Window:UpdateTabs()
for Index, Page in pairs(Window.Pages) do
Page:Turn(Page.Open)
end
end

Library:Connection(game:GetService("UserInputService").InputBegan,
function(Inp)
if Inp.KeyCode == Library.UIKey then
Library:SetOpen(not Library.Open)
end
end)

game:GetService("TweenService"):Create(Library.Holder,
TweenInfo.new(0.25, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {Size
= UDim2.new(0, Window.Size.X.Offset,0,Window.Size.Y.Offset)}):Play()

-- // Returns
Library.Holder = Outline
return setmetatable(Window, Library)
end
--
function Library:Seperator(Properties)
if not Properties then
Properties = {}
end
--
local Page = {
Name = Properties.Name or "Page",
Window = self,
Elements = {},
}
--
local TextSep = Instance.new('Frame',
Page.Window.Elements.TabHolder)
local TextLabel = Instance.new('TextLabel', TextSep)
--
TextSep.Name = "TextSep"
TextSep.Size = UDim2.new(1,0,0,20)
TextSep.BackgroundColor3 = Color3.new(1,1,1)
TextSep.BackgroundTransparency = 1
TextSep.BorderSizePixel = 0
TextSep.BorderColor3 = Color3.new(0,0,0)
--
TextLabel.Position = UDim2.new(0,8,0,0)
TextLabel.Size = UDim2.new(1,-10,1,0)
TextLabel.BackgroundColor3 = Color3.new(1,1,1)
TextLabel.BackgroundTransparency = 1
TextLabel.BorderSizePixel = 0
TextLabel.BorderColor3 = Color3.new(0,0,0)
TextLabel.Text = Page.Name
TextLabel.TextColor3 = Color3.new(0.7059,0.7059,0.7059)
TextLabel.Font = Enum.Font.Gotham
TextLabel.TextSize = Library.FontSize
TextLabel.TextXAlignment = Enum.TextXAlignment.Left
end
--
function Library:Page(Properties)
if not Properties then
Properties = {}
end
--
local Page = {
Name = Properties.Name or "Page",
Icon = Properties.Icon or "http://www.roblox.com/asset/?
id=6022668955",
Window = self,
Open = false,
Sections = {},
Elements = {},
}
--
local TabButton = Instance.new('TextButton',
Page.Window.Elements.TabHolder)
local UICorner_3 = Instance.new('UICorner', TabButton)
local Accent = Instance.new('Frame', TabButton)
local UICorner = Instance.new('UICorner', Accent)
local Title = Instance.new('TextLabel', TabButton)
local Icon = Instance.new('ImageLabel', TabButton)
local NewPage = Instance.new('Frame',
Page.Window.Elements.Holder)
local Left = Instance.new('Frame', NewPage)
local LeftLayout = Instance.new('UIListLayout', Left)
local Right = Instance.new('Frame', NewPage)
local RightLayout = Instance.new('UIListLayout', Right)
--
TabButton.Name = "TabButton"
TabButton.Size = UDim2.new(1,0,0,30)
TabButton.BackgroundColor3 = Color3.new(0.0784,0.0784,0.0784)
TabButton.BorderSizePixel = 0
TabButton.BackgroundTransparency = 1
TabButton.BorderColor3 = Color3.new(0,0,0)
TabButton.Text = ""
TabButton.TextColor3 = Color3.new(0,0,0)
TabButton.AutoButtonColor = false
TabButton.Font = Enum.Font.SourceSans
TabButton.TextSize = 14
TabButton.ClipsDescendants = true
--
Accent.Name = "Accent"
Accent.Position = UDim2.new(0,-8,0,5)
Accent.Size = UDim2.new(0,10,1,-10)
Accent.BackgroundColor3 = Library.Accent
Accent.BorderSizePixel = 0
Accent.BorderColor3 = Color3.new(0,0,0)
Accent.BackgroundTransparency = 0
table.insert(Library.ThemeObjects, Accent)
--
Title.Name = "Title"
Title.Position = UDim2.new(0,35,0,0)
Title.Size = UDim2.new(1,-10,1,0)
Title.BackgroundColor3 = Color3.new(1,1,1)
Title.BackgroundTransparency = 1
Title.BorderSizePixel = 0
Title.BorderColor3 = Color3.new(0,0,0)
Title.Text = Page.Name
Title.TextColor3 = Color3.fromRGB(120,120,120)
Title.Font = Enum.Font.Gotham
Title.TextSize = Library.FontSize
Title.TextXAlignment = Enum.TextXAlignment.Left
--
Icon.Name = "Icon"
Icon.Position = UDim2.new(0,11,0,8)
Icon.Size = UDim2.new(0,15,0,15)
Icon.BackgroundColor3 = Color3.new(1,1,1)
Icon.BackgroundTransparency = 1
Icon.BorderSizePixel = 0
Icon.BorderColor3 = Color3.new(0,0,0)
Icon.Image = Page.Icon
Icon.ImageColor3 = Color3.fromRGB(120,120,120)
--
NewPage.Name = "NewPage"
NewPage.Position = UDim2.new(0,10,0,60)
NewPage.Size = UDim2.new(1,-20,1,-65)
NewPage.BackgroundColor3 = Color3.new(1,1,1)
NewPage.BackgroundTransparency = 1
NewPage.BorderSizePixel = 0
NewPage.BorderColor3 = Color3.new(0,0,0)
NewPage.ZIndex = 53
NewPage.Visible = false
--
Left.Name = "Left"
Left.Size = UDim2.new(0.5,-4,1,0)
Left.BackgroundColor3 = Color3.new(1,1,1)
Left.BackgroundTransparency = 1
Left.BorderSizePixel = 0
--// Left.ScrollBarThickness = 0.1
Left.BorderColor3 = Color3.new(0,0,0)
Left.ZIndex = 54
--
LeftLayout.Name = "LeftLayout"
LeftLayout.SortOrder = Enum.SortOrder.LayoutOrder
LeftLayout.Padding = UDim.new(0,8)
--
Right.Name = "Right"
Right.Position = UDim2.new(0.5,4,0,0)
Right.Size = UDim2.new(0.5,-4,1,0)
--// Right.ScrollBarThickness = 0.1
Right.BackgroundColor3 = Color3.new(1,1,1)
Right.BackgroundTransparency = 1
Right.BorderSizePixel = 0
Right.BorderColor3 = Color3.new(0,0,0)
Right.ZIndex = 53
--
RightLayout.Name = "RightLayout"
RightLayout.SortOrder = Enum.SortOrder.LayoutOrder
RightLayout.Padding = UDim.new(0,8)

-- // Functions
function Page:Turn(bool)
Page.Open = bool
task.spawn(function()
Page.Window.Elements.FadeThing.Visible = true
TweenService:Create(Page.Window.Elements.FadeThing,
TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out),
{BackgroundTransparency = 0}):Play()
task.wait(0.1)
NewPage.Visible = Page.Open
TweenService:Create(Page.Window.Elements.FadeThing,
TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out),
{BackgroundTransparency = 1}):Play()
task.wait(0.1)
Page.Window.Elements.FadeThing.Visible = false
end)
game:GetService("TweenService"):Create(TabButton,
TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out),
{BackgroundTransparency = Page.Open and 0 or 1}):Play()
game:GetService("TweenService"):Create(Title,
TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {TextColor3
= Page.Open and Color3.fromRGB(200,200,200) or Color3.fromRGB(120,120,120)}):Play()
game:GetService("TweenService"):Create(Icon,
TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {ImageColor3
= Page.Open and Color3.fromRGB(200,200,200) or Color3.fromRGB(120,120,120)}):Play()
game:GetService("TweenService"):Create(Accent,
TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out),
{BackgroundTransparency = Page.Open and 0 or 1}):Play()
end
--
Library:Connection(TabButton.MouseButton1Click, function()
if not Page.Open then
Page:Turn(true)
for _, Pages in pairs(Page.Window.Pages) do
if Pages.Open and Pages ~= Page then
Pages:Turn(false)
end
end
end
end)
--
Library:Connection(TabButton.MouseEnter, function()
if not Page.Open then
game:GetService("TweenService"):Create(Title,
TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {TextColor3
= Color3.fromRGB(180,180,180)}):Play()
game:GetService("TweenService"):Create(Icon,
TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {ImageColor3
= Color3.fromRGB(180,180,180)}):Play()
end
end)
--
Library:Connection(TabButton.MouseLeave, function()
if not Page.Open then
game:GetService("TweenService"):Create(Title,
TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {TextColor3
= Color3.fromRGB(120,120,120)}):Play()
game:GetService("TweenService"):Create(Icon,
TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {ImageColor3
= Color3.fromRGB(120,120,120)}):Play()
end
end)

-- // Elements
Page.Elements = {
Left = Left,
Right = Right,
TabButton = TabButton
}

-- // Drawings
if #Page.Window.Pages == 0 then
Page:Turn(true)
end
Page.Window.Pages[#Page.Window.Pages + 1] = Page
Page.Window:UpdateTabs()
return setmetatable(Page, Library.Pages)
end
--
function Pages:Section(Properties)
if not Properties then
Properties = {}
end
--
local Section = {
Name = Properties.Name or "Section",
Page = self,
Side = (Properties.side or Properties.Side or
"left"):lower(),
Size = Properties.size or Properties.Size or 200,
Elements = {},
Content = {},
}
--
local NewSection = Instance.new('Frame', Section.Side == "left"
and Section.Page.Elements.Left or Section.Side == "right" and
Section.Page.Elements.Right)
local UIStroke = Instance.new('UIStroke', NewSection)
local UICorner = Instance.new('UICorner', NewSection)
local Frame = Instance.new('Frame', NewSection)
local Title = Instance.new('TextLabel', NewSection)
local Content = Instance.new('Frame', NewSection)
local UIListLayout = Instance.new('UIListLayout', Content)
--
NewSection.Name = "NewSection"
NewSection.Size = Section.Size == "Fill" and UDim2.new(1,0,1,0)
or UDim2.new(1,0,0,Section.Size)
NewSection.BackgroundColor3 = Color3.new(0.0784314, 0.0784314,
0.0784314)
NewSection.BorderSizePixel = 0
NewSection.BorderColor3 = Color3.new(0,0,0)
NewSection.ZIndex = 53
--
UIStroke.Color = Color3.new(0.137255, 0.137255, 0.137255)
--
Frame.Position = UDim2.new(0,0,0,20)
Frame.Size = UDim2.new(1,0,0,1)
Frame.BackgroundColor3 = Color3.new(0.1569,0.1569,0.1569)
Frame.BorderSizePixel = 0
Frame.BorderColor3 = Color3.new(0,0,0)
--
Title.Name = "Title"
Title.Position = UDim2.new(0,8,0,1)
Title.Size = UDim2.new(1,-10,0,20)
Title.BackgroundColor3 = Color3.new(1,1,1)
Title.BackgroundTransparency = 1
Title.BorderSizePixel = 0
Title.BorderColor3 = Color3.new(0,0,0)
Title.Text = Section.Name
Title.TextColor3 = Color3.new(0.7059,0.7059,0.7059)
Title.Font = Enum.Font.Gotham
Title.TextSize = Library.FontSize
Title.TextXAlignment = Enum.TextXAlignment.Left
--
Content.Name = "Content"
Content.Position = UDim2.new(0,10,0,30)
Content.Size = UDim2.new(1,-20,1,-40)
Content.BackgroundColor3 = Color3.new(1,1,1)
Content.BackgroundTransparency = 1
Content.BorderSizePixel = 0
Content.BorderColor3 = Color3.new(0,0,0)
Content.ZIndex = 53
--
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
UIListLayout.Padding = UDim.new(0,8)

-- // Elements
Section.Elements = {
SectionContent = Content
}

-- // Returning
Section.Page.Sections[#Section.Page.Sections + 1] = Section
return setmetatable(Section, Library.Sections)
end
--
function Sections:Toggle(Properties)
if not Properties then
Properties = {}
end
--
local Toggle = {
Window = self.Window,
Page = self.Page,
Section = self,
Risk = Properties.Risk or false,
Name = Properties.Name or "Toggle",
State = (
Properties.state
or Properties.State
or Properties.def
or Properties.Def
or Properties.default
or Properties.Default
or false
),
Callback = (
Properties.callback
or Properties.Callback
or Properties.callBack
or Properties.CallBack
or function() end
),
Flag = (
Properties.flag
or Properties.Flag
or Properties.pointer
or Properties.Pointer
or Library.NextFlag()
),
Toggled = false,
}
--
local NewToggle = Instance.new('TextButton',
Toggle.Section.Elements.SectionContent)
local ToggleTitle = Instance.new('TextLabel', NewToggle)
local ToggleFrame = Instance.new('Frame', NewToggle)
local UICorner_2 = Instance.new('UICorner', ToggleFrame)
local ToggleAccent = Instance.new('Frame', ToggleFrame)
local UICorner_3 = Instance.new('UICorner', ToggleAccent)
local Circle = Instance.new('Frame', ToggleFrame)
local UICorner_4 = Instance.new('UICorner', Circle)
--
NewToggle.Name = "NewToggle"
NewToggle.Size = UDim2.new(1,0,0,17)
NewToggle.BackgroundColor3 = Color3.new(1,1,1)
NewToggle.BackgroundTransparency = 1
NewToggle.BorderSizePixel = 0
NewToggle.BorderColor3 = Color3.new(0,0,0)
NewToggle.Text = ""
NewToggle.TextColor3 = Color3.new(0,0,0)
NewToggle.AutoButtonColor = false
NewToggle.Font = Enum.Font.SourceSans
NewToggle.TextSize = 14
NewToggle.ZIndex = 53
--
ToggleTitle.Name = "ToggleTitle"
ToggleTitle.Size = UDim2.new(1,-10,0,17)
ToggleTitle.BackgroundColor3 = Color3.new(1,1,1)
ToggleTitle.BackgroundTransparency = 1
ToggleTitle.BorderSizePixel = 0
ToggleTitle.BorderColor3 = Color3.new(0,0,0)
ToggleTitle.Text = Toggle.Name
ToggleTitle.TextColor3 = Color3.new(0.7843,0.7843,0.7843)
ToggleTitle.Font = Enum.Font.Gotham
ToggleTitle.TextSize = Library.FontSize
ToggleTitle.TextXAlignment = Enum.TextXAlignment.Left
--
ToggleFrame.Name = "ToggleFrame"
ToggleFrame.Position = UDim2.new(1,-40,0,0)
ToggleFrame.Size = UDim2.new(0,40,1,0)
ToggleFrame.BackgroundColor3 = Color3.new(0.051,0.051,0.051)
ToggleFrame.BorderSizePixel = 0
ToggleFrame.BorderColor3 = Color3.new(0,0,0)
ToggleFrame.ZIndex = 53
--
ToggleAccent.Name = "ToggleAccent"
ToggleAccent.Position = UDim2.new(0,1,0,1)
ToggleAccent.Size = UDim2.new(1,-2,1,-2)
ToggleAccent.BackgroundColor3 = Library.Accent
ToggleAccent.BackgroundTransparency = 1
ToggleAccent.BorderSizePixel = 0
ToggleAccent.BorderColor3 = Color3.new(0,0,0)
ToggleAccent.ZIndex = 53
table.insert(Library.ThemeObjects, ToggleAccent)
--
Circle.Name = "Circle"
Circle.Position = UDim2.new(0,5,0.5,-5)
Circle.Size = UDim2.new(0,10,0,10)
Circle.BackgroundColor3 = Color3.new(1,1,1)
Circle.BorderSizePixel = 0
Circle.BorderColor3 = Color3.new(0,0,0)
Circle.ZIndex = 53
--
UICorner_4.CornerRadius = UDim.new(1,0)

-- // Functions
local function SetState()
Toggle.Toggled = not Toggle.Toggled
if Toggle.Toggled then
game:GetService("TweenService"):Create(ToggleAccent,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
{BackgroundTransparency = 0}):Play()
game:GetService("TweenService"):Create(Circle,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(1,-15,0.5,-5)}):Play()
else
game:GetService("TweenService"):Create(ToggleAccent,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
{BackgroundTransparency = 1}):Play()
game:GetService("TweenService"):Create(Circle,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(0,5,0.5,-5)}):Play()
end
Library.Flags[Toggle.Flag] = Toggle.Toggled
Toggle.Callback(Toggle.Toggled)
end

-- // Options List
function Toggle:OptionList(Properties)
if not Properties then
Properties = {}
end
--
local Section = {
Elements = {},
Content = {},
}
--
local OptionButton = Instance.new('ImageButton', NewToggle)
local OptionList = Instance.new('Frame', OptionButton)
local UICorner = Instance.new('UICorner', OptionList)
local UIStroke = Instance.new('UIStroke', OptionList)
local OptionContent = Instance.new('Frame', OptionList)
local UIListLayout = Instance.new('UIListLayout',
OptionContent)
--
OptionButton.Name = "OptionButton"
OptionButton.Position = UDim2.new(1,-65,0,1)
OptionButton.Size = UDim2.new(0,15,0,15)
OptionButton.BackgroundColor3 = Color3.new(1,1,1)
OptionButton.BackgroundTransparency = 1
OptionButton.BorderSizePixel = 0
OptionButton.BorderColor3 = Color3.new(0,0,0)
OptionButton.Image = "http://www.roblox.com/asset/?
id=6031280882"
OptionButton.ImageColor3 = Color3.new(0.7843,0.7843,0.7843)
OptionButton.ZIndex = 54
--
OptionList.Name = "OptionList"
OptionList.Position = UDim2.new(0,70,0,-10)
OptionList.Size = UDim2.new(0,200,0,10)
OptionList.BackgroundColor3 = Color3.new(0.0784314,
0.0784314, 0.0784314)
OptionList.BorderSizePixel = 0
OptionList.BorderColor3 = Color3.new(0,0,0)
OptionList.AutomaticSize = Enum.AutomaticSize.Y
OptionList.Visible = false
OptionList.ZIndex = 54
--
UIStroke.Color = Color3.new(0.137255, 0.137255, 0.137255)
--
OptionContent.Name = "OptionContent"
OptionContent.Position = UDim2.new(0,10,0,10)
OptionContent.Size = UDim2.new(1,-20,1,-10)
OptionContent.BackgroundColor3 = Color3.new(1,1,1)
OptionContent.BackgroundTransparency = 1
OptionContent.BorderSizePixel = 0
OptionContent.BorderColor3 = Color3.new(0,0,0)
OptionContent.AutomaticSize = Enum.AutomaticSize.Y
OptionContent.ZIndex = 54
--
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
UIListLayout.Padding = UDim.new(0,4)
--
Library:Connection(OptionButton.MouseButton1Click,
function()
local State = not OptionList.Visible
--// local Position = OptionButton.AbsolutePosition
--// OptionList.Position =
UDim2.fromOffset(Position.X, Position.Y)
OptionList.Visible = State
Library.OptionListOpen = State
end)
--

Library:Connection(game:GetService("UserInputService").InputBegan,
function(Input)
if (Library.DropdownOpen) then return end;

if OptionList.Visible and Input.UserInputType ==


Enum.UserInputType.MouseButton1 then
if not Library:IsMouseOverFrame(OptionList) and
not Library:IsMouseOverFrame(OptionButton) then
OptionList.Visible = false
end
end
end)

-- // Elements
Section.Elements = {
SectionContent = OptionContent
}

-- // Returning
return setmetatable(Section, Library.Sections)
end

-- // Misc Functions
function Toggle.Set(bool)
bool = type(bool) == "boolean" and bool or false
if Toggle.Toggled ~= bool then
SetState()
end
end
Toggle.Set(Toggle.State)
Library.Flags[Toggle.Flag] = Toggle.State
Flags[Toggle.Flag] = Toggle.Set

-- // Returning
Library:Connection(NewToggle.MouseButton1Click, SetState)
return Toggle
end
--
function Sections:Nest(Properties)
if not Properties then
Properties = {}
end
--
local Section = {
Name = Properties.Name or "Section",
RealSection = self,
Size = Properties.size or Properties.Size or 200,
Elements = {},
Content = {},
}
--
local ScrollHolder = Instance.new("Frame",
Section.RealSection.Elements.SectionContent)
local NewScroll = Instance.new('ScrollingFrame', ScrollHolder)
local UICorner2 = Instance.new('UICorner', ScrollHolder)
local UIStroke = Instance.new('UIStroke', ScrollHolder)
local ScrollContent = Instance.new('Frame', NewScroll)
local UIListLayout = Instance.new('UIListLayout', ScrollContent)
--
ScrollHolder.Name = "ScrollHolder"
ScrollHolder.Size = UDim2.new(1,0,0,Section.Size)
ScrollHolder.BackgroundColor3 = Color3.new(0.0784314, 0.0784314,
0.0784314)
ScrollHolder.BorderSizePixel = 0
ScrollHolder.BorderColor3 = Color3.new(0,0,0)
ScrollHolder.ClipsDescendants = true
--
NewScroll.Name = "NewScroll"
NewScroll.Size = UDim2.new(1,0,1,0)
NewScroll.BackgroundColor3 = Color3.new(0.098,0.098,0.098)
NewScroll.BackgroundTransparency = 1
NewScroll.BorderSizePixel = 0
NewScroll.BorderColor3 = Color3.new(0,0,0)
NewScroll.CanvasSize = UDim2.new(0,0,0,0)
NewScroll.AutomaticCanvasSize = Enum.AutomaticSize.Y
NewScroll.ScrollBarThickness = 2
NewScroll.TopImage = ""
NewScroll.BottomImage = ""
NewScroll.VerticalScrollBarInset = Enum.ScrollBarInset.Always
NewScroll.ScrollBarImageColor3 = Library.Accent
NewScroll.ClipsDescendants = true
table.insert(Library.ThemeObjects, NewScroll)
--
UIStroke.Color = Color3.new(0.137255, 0.137255, 0.137255)
--
ScrollContent.Name = "ScrollContent"
ScrollContent.Position = UDim2.new(0,10,0,5)
ScrollContent.Size = UDim2.new(1,-20,0,0)
ScrollContent.BackgroundColor3 = Color3.new(1,1,1)
ScrollContent.BackgroundTransparency = 1
ScrollContent.BorderSizePixel = 0
ScrollContent.BorderColor3 = Color3.new(0,0,0)
ScrollContent.AutomaticSize = Enum.AutomaticSize.Y
--
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
UIListLayout.Padding = UDim.new(0,4)
-- // Elements
Section.Elements = {
SectionContent = ScrollContent
}

-- // Returning
return setmetatable(Section, Library.Sections)
end
--
function Sections:Slider(Properties)
if not Properties then
Properties = {}
end
--
local Slider = {
Window = self.Window,
Page = self.Page,
Section = self,
Name = Properties.Name or "Slider",
Min = Properties.min or Properties.Min or Properties.minimum or
Properties.Minimum or 0,
State = Properties.state or Properties.State or Properties.def
or Properties.Def or Properties.default or Properties.Default or 10,
Max = Properties.max or Properties.Max or Properties.maximum or
Properties.Maximum or 100,
Sub = Properties.suffix or Properties.Suffix or
Properties.ending or Properties.Ending or Properties.prefix or Properties.Prefix or
Properties.measurement or Properties.Measurement or "",
Decimals = Properties.decimals or Properties.Decimals or 1,
Callback = Properties.callback or Properties.Callback or
Properties.callBack or Properties.CallBack or function() end,
Flag = Properties.flag or Properties.Flag or Properties.pointer
or Properties.Pointer or Library.NextFlag(),
}
local TextValue = ("[value]" .. Slider.Sub)
--
local NewSlider = Instance.new('TextButton',
Slider.Section.Elements.SectionContent)
local SliderTitle = Instance.new('TextLabel', NewSlider)
local ToggleFrame = Instance.new('Frame', NewSlider)
local UICorner_2 = Instance.new('UICorner', ToggleFrame)
local FillHold = Instance.new('Frame', ToggleFrame)
local UICorner_3 = Instance.new('UICorner', FillHold)
local Fill = Instance.new('TextButton', FillHold)
local UICorner_4 = Instance.new('UICorner', Fill)
local Circle = Instance.new('Frame', Fill)
local UICorner_5 = Instance.new('UICorner', Circle)
local SliderValue = Instance.new('TextLabel', NewSlider)
--
NewSlider.Name = "NewSlider"
NewSlider.Size = UDim2.new(1,0,0,32)
NewSlider.BackgroundColor3 = Color3.new(1,1,1)
NewSlider.BackgroundTransparency = 1
NewSlider.BorderSizePixel = 0
NewSlider.BorderColor3 = Color3.new(0,0,0)
NewSlider.Text = ""
NewSlider.TextColor3 = Color3.new(0,0,0)
NewSlider.AutoButtonColor = false
NewSlider.Font = Enum.Font.SourceSans
NewSlider.TextSize = 14
NewSlider.ZIndex = 53
--
SliderTitle.Name = "SliderTitle"
SliderTitle.Size = UDim2.new(1,-10,0,17)
SliderTitle.BackgroundColor3 = Color3.new(1,1,1)
SliderTitle.BackgroundTransparency = 1
SliderTitle.BorderSizePixel = 0
SliderTitle.BorderColor3 = Color3.new(0,0,0)
SliderTitle.Text = Slider.Name
SliderTitle.TextColor3 = Color3.new(0.7843,0.7843,0.7843)
SliderTitle.Font = Enum.Font.Gotham
SliderTitle.TextSize = Library.FontSize
SliderTitle.TextXAlignment = Enum.TextXAlignment.Left
--
ToggleFrame.Name = "ToggleFrame"
ToggleFrame.Position = UDim2.new(0,0,1,-8)
ToggleFrame.Size = UDim2.new(1,0,0,8)
ToggleFrame.BackgroundColor3 = Color3.new(0.051,0.051,0.051)
ToggleFrame.BorderSizePixel = 0
ToggleFrame.BorderColor3 = Color3.new(0,0,0)
ToggleFrame.ZIndex = 53
--
FillHold.Name = "FillHold"
FillHold.Position = UDim2.new(0,1,0,1)
FillHold.Size = UDim2.new(1,-2,1,-2)
FillHold.BackgroundColor3 = Color3.new(0.6667,0.6667,1)
FillHold.BackgroundTransparency = 1
FillHold.BorderSizePixel = 0
FillHold.BorderColor3 = Color3.new(0,0,0)
FillHold.ZIndex = 53
--
Fill.Name = "Fill"
Fill.Size = UDim2.new(0,0,1,0)
Fill.BackgroundColor3 = Library.Accent
Fill.BorderSizePixel = 0
Fill.BorderColor3 = Color3.new(0,0,0)
Fill.Text = ""
Fill.TextColor3 = Color3.new(0,0,0)
Fill.AutoButtonColor = false
Fill.Font = Enum.Font.SourceSans
Fill.TextSize = 14
Fill.ZIndex = 53
table.insert(Library.ThemeObjects, Fill)
--
Circle.Name = "Circle"
Circle.Position = UDim2.new(1,-6,0.5,-6)
Circle.Size = UDim2.new(0,13,0,13)
Circle.BackgroundColor3 = Color3.new(1,1,1)
Circle.BorderSizePixel = 0
Circle.BorderColor3 = Color3.new(0,0,0)
Circle.ZIndex = 53
--
UICorner_5.CornerRadius = UDim.new(1,0)
--
SliderValue.Name = "SliderValue"
SliderValue.Size = UDim2.new(1,0,0,17)
SliderValue.BackgroundColor3 = Color3.new(1,1,1)
SliderValue.BackgroundTransparency = 1
SliderValue.BorderSizePixel = 0
SliderValue.BorderColor3 = Color3.new(0,0,0)
SliderValue.Text = ""
SliderValue.TextColor3 = Color3.new(0.4706,0.4706,0.4706)
SliderValue.Font = Enum.Font.Gotham
SliderValue.TextSize = Library.FontSize
SliderValue.TextXAlignment = Enum.TextXAlignment.Right

-- // Functions
local Sliding = false
local Val = Slider.State

local function Set(value)


value = math.clamp(Library:Round(value, Slider.Decimals),
Slider.Min, Slider.Max)
local sizeX = ((value - Slider.Min) / (Slider.Max -
Slider.Min))
game:GetService("TweenService"):Create(Fill, TweenInfo.new(0.1,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size = UDim2.new(sizeX, 0, 1,
0)}):Play()
SliderValue.Text = TextValue:gsub("%[value%]",
string.format("%.14g", value))
Val = value
Library.Flags[Slider.Flag] = value
Slider.Callback(value)
end

local function Slide(input)


local sizeX = (input.Position.X - NewSlider.AbsolutePosition.X)
/ NewSlider.AbsoluteSize.X
local value = ((Slider.Max - Slider.Min) * sizeX) + Slider.Min
Set(value)
end

Library:Connection(NewSlider.InputBegan, function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
Sliding = true
Slide(input)
end
end)

Library:Connection(NewSlider.InputEnded, function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
Sliding = false
end
end)

Library:Connection(Fill.InputBegan, function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
Sliding = true
Slide(input)
end
end)

Library:Connection(Fill.InputEnded, function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
Sliding = false
end
end)

Library:Connection(game:GetService("UserInputService").InputChanged,
function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or
input.UserInputType == Enum.UserInputType.Touch then
if Sliding then
Slide(input)
end
end
end)

function Slider:Set(Value)
Set(Value)
end

Flags[Slider.Flag] = Set
Library.Flags[Slider.Flag] = Slider.State
Set(Slider.State)

-- // Returning
return Slider
end
--
function Sections:List(Properties)
local Properties = Properties or {};
local Dropdown = {
Window = self.Window,
Page = self.Page,
Section = self,
Open = false,
Name = Properties.Name or Properties.name or nil,
Options = (Properties.options or Properties.Options or
Properties.values or Properties.Values or {
"1",
"2",
"3",
}),
Max = (Properties.Max or Properties.max or nil),
State = (
Properties.state
or Properties.State
or Properties.def
or Properties.Def
or Properties.default
or Properties.Default
or nil
),
Callback = (
Properties.callback
or Properties.Callback
or Properties.callBack
or Properties.CallBack
or function() end
),
Flag = (
Properties.flag
or Properties.Flag
or Properties.pointer
or Properties.Pointer
or Library.NextFlag()
),
OptionInsts = {},
}
--
local NewDropdown = Instance.new('Frame',
Dropdown.Section.Elements.SectionContent)
local DropdownTitle = Instance.new('TextLabel', NewDropdown)
local ToggleFrame = Instance.new('TextButton', NewDropdown)
local UICorner_2 = Instance.new('UICorner', ToggleFrame)
local ToggleContent = Instance.new('Frame', ToggleFrame)
local UICorner_3 = Instance.new('UICorner', ToggleContent)
local UIListLayout = Instance.new('UIListLayout', ToggleContent)
local DropdownTitle_2 = Instance.new('TextLabel', ToggleFrame)
local Icon = Instance.new('ImageLabel', ToggleFrame)
--
NewDropdown.Name = "NewDropdown"
NewDropdown.Size = UDim2.new(1,0,0,48)
NewDropdown.BackgroundColor3 = Color3.new(1,1,1)
NewDropdown.BackgroundTransparency = 1
NewDropdown.BorderSizePixel = 0
NewDropdown.BorderColor3 = Color3.new(0,0,0)
NewDropdown.ZIndex = 54
--
DropdownTitle.Name = "DropdownTitle"
DropdownTitle.Size = UDim2.new(1,-10,0,17)
DropdownTitle.BackgroundColor3 = Color3.new(1,1,1)
DropdownTitle.BackgroundTransparency = 1
DropdownTitle.BorderSizePixel = 0
DropdownTitle.BorderColor3 = Color3.new(0,0,0)
DropdownTitle.Text = Dropdown.Name
DropdownTitle.TextColor3 = Color3.new(0.7843,0.7843,0.7843)
DropdownTitle.Font = Enum.Font.Gotham
DropdownTitle.TextSize = Library.FontSize
DropdownTitle.TextXAlignment = Enum.TextXAlignment.Left
--
ToggleFrame.Name = "ToggleFrame"
ToggleFrame.Position = UDim2.new(0,0,1,-24)
ToggleFrame.Size = UDim2.new(1,0,0,24)
ToggleFrame.BackgroundColor3 = Color3.new(0.098,0.098,0.098)
ToggleFrame.BorderSizePixel = 0
ToggleFrame.BorderColor3 = Color3.new(0,0,0)
ToggleFrame.ZIndex = 54
ToggleFrame.AutoButtonColor = false
ToggleFrame.Text = ""
--
UICorner_2.CornerRadius = UDim.new(0,4)
--
ToggleContent.Name = "ToggleContent"
ToggleContent.Position = UDim2.new(0,0,1,0)
ToggleContent.Size = UDim2.new(1,0,0,0)
ToggleContent.BackgroundColor3 = Color3.new(0.0706,0.0706,0.0706)
ToggleContent.BorderSizePixel = 0
ToggleContent.BorderColor3 = Color3.new(0,0,0)
ToggleContent.ZIndex = 54
ToggleContent.ClipsDescendants = true
--
UICorner_3.CornerRadius = UDim.new(0,4)
--
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
--
DropdownTitle_2.Name = "DropdownTitle"
DropdownTitle_2.Position = UDim2.new(0,4,0,0)
DropdownTitle_2.Size = UDim2.new(1,-10,1,0)
DropdownTitle_2.BackgroundColor3 = Color3.new(1,1,1)
DropdownTitle_2.BackgroundTransparency = 1
DropdownTitle_2.BorderSizePixel = 0
DropdownTitle_2.BorderColor3 = Color3.new(0,0,0)
DropdownTitle_2.Text = ""
DropdownTitle_2.TextColor3 = Color3.new(0.7843,0.7843,0.7843)
DropdownTitle_2.Font = Enum.Font.Gotham
DropdownTitle_2.TextSize = Library.FontSize
DropdownTitle_2.TextXAlignment = Enum.TextXAlignment.Left
--
Icon.Name = "Icon"
Icon.Position = UDim2.new(1,-25,0,5)
Icon.Size = UDim2.new(0,20,0,15)
Icon.BackgroundColor3 = Color3.new(1,1,1)
Icon.BackgroundTransparency = 1
Icon.BorderSizePixel = 0
Icon.BorderColor3 = Color3.new(0,0,0)
Icon.Image = "http://www.roblox.com/asset/?id=6034818372"
Icon.ImageColor3 = Color3.new(0.4706,0.4706,0.4706)
Icon.ZIndex = 54

local Toggled = false


local Count = 0

Library:Connection(ToggleFrame.MouseButton1Click, function()
Toggled = not Toggled
Library.DropdownOpen = Toggled
if Toggled then
NewDropdown.ZIndex = 55
game:GetService("TweenService"):Create(Icon,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Rotation =
180}):Play()
game:GetService("TweenService"):Create(Icon,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {ImageColor3
= Color3.fromRGB(200,200,200)}):Play()
game:GetService("TweenService"):Create(ToggleContent,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size =
UDim2.new(1,0,0,Count * 22)}):Play()
else
game:GetService("TweenService"):Create(Icon,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Rotation =
0}):Play()
game:GetService("TweenService"):Create(Icon,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {ImageColor3
= Color3.fromRGB(120,120,120)}):Play()
game:GetService("TweenService"):Create(ToggleContent,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size =
UDim2.new(1,0,0,0)}):Play()
task.wait(0.20)
NewDropdown.ZIndex = 54
end
end)
--

Library:Connection(game:GetService("UserInputService").InputBegan,
function(Input)
if ToggleContent.Visible and Input.UserInputType ==
Enum.UserInputType.MouseButton1 then
if not Library:IsMouseOverFrame(ToggleContent) and
not Library:IsMouseOverFrame(ToggleFrame) and not Library.OptionListOpen then
Toggled = false
Library.DropdownOpen = false
game:GetService("TweenService"):Create(Icon,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {ImageColor3
= Color3.fromRGB(120,120,120)}):Play()
game:GetService("TweenService"):Create(Icon,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Rotation =
0}):Play()

game:GetService("TweenService"):Create(ToggleContent, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Size =
UDim2.new(1,0,0,0)}):Play()
task.wait(0.20)
NewDropdown.ZIndex = 54
end
end
end)
--
local Chosen = Dropdown.Max and {} or nil
--
local function handleoptionclick(option, button, text, dot)
button.MouseButton1Click:Connect(function()
if Dropdown.Max then
if table.find(Chosen, option) then
table.remove(Chosen, table.find(Chosen,
option))

local textchosen = {}
local cutobject = false

for _, opt in next, Chosen do


table.insert(textchosen, opt)
end

DropdownTitle_2.Text = #Chosen == 0 and


"" or table.concat(textchosen, ", ") .. (cutobject and ", ..." or "")

game:GetService("TweenService"):Create(text, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextColor3 =
Color3.fromRGB(120,120,120)}):Play()

game:GetService("TweenService"):Create(dot, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {BackgroundTransparency =
1}):Play()

game:GetService("TweenService"):Create(text, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(0,4,0,0)}):Play()
Library.Flags[Dropdown.Flag] = Chosen
Dropdown.Callback(Chosen)
else
if #Chosen == Dropdown.Max then

Dropdown.OptionInsts[Chosen[1]].text.Visible = false
table.remove(Chosen, 1)
end

table.insert(Chosen, option)

local textchosen = {}
local cutobject = false

for _, opt in next, Chosen do


table.insert(textchosen, opt)
end

DropdownTitle_2.Text = #Chosen == 0 and


"" or table.concat(textchosen, ", ") .. (cutobject and ", ..." or "")

game:GetService("TweenService"):Create(text, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextColor3 =
Color3.fromRGB(200,200,200)}):Play()

game:GetService("TweenService"):Create(dot, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {BackgroundTransparency =
0}):Play()

game:GetService("TweenService"):Create(text, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(0,20,0,0)}):Play()

Library.Flags[Dropdown.Flag] = Chosen
Dropdown.Callback(Chosen)
end
else
for opt, tbl in next, Dropdown.OptionInsts do
if opt ~= option then

game:GetService("TweenService"):Create(tbl.text, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextColor3 =
Color3.fromRGB(120,120,120)}):Play()

game:GetService("TweenService"):Create(tbl.text, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(0,4,0,0)}):Play()

game:GetService("TweenService"):Create(tbl.dot, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {BackgroundTransparency =
1}):Play()
end
end
Chosen = option
DropdownTitle_2.Text = option
game:GetService("TweenService"):Create(text,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextColor3 =
Color3.fromRGB(200,200,200)}):Play()
game:GetService("TweenService"):Create(dot,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
{BackgroundTransparency = 0}):Play()
game:GetService("TweenService"):Create(text,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(0,20,0,0)}):Play()
Library.Flags[Dropdown.Flag] = option
Dropdown.Callback(option)
end
end)
end
--
local function createoptions(tbl)
for _, option in next, tbl do
Dropdown.OptionInsts[option] = {}
local TextButton = Instance.new('TextButton',
ToggleContent)
local DropdownTitle3 = Instance.new('TextLabel',
TextButton)
local AccentDot = Instance.new('Frame', TextButton)
local OptionCorner = Instance.new('UICorner',
AccentDot)
--
TextButton.Size = UDim2.new(1,0,0,22)
TextButton.BackgroundColor3 = Color3.new(1,1,1)
TextButton.BackgroundTransparency = 1
TextButton.BorderSizePixel = 0
TextButton.BorderColor3 = Color3.new(0,0,0)
TextButton.Text = ""
TextButton.TextColor3 = Color3.new(0,0,0)
TextButton.AutoButtonColor = false
TextButton.Font = Enum.Font.SourceSans
TextButton.TextSize = 14
Dropdown.OptionInsts[option].button = TextButton
--
DropdownTitle3.Name = "DropdownTitle"
DropdownTitle3.Position = UDim2.new(0,20,0,0)
DropdownTitle3.Size = UDim2.new(1,-10,1,0)
DropdownTitle3.BackgroundColor3 = Color3.new(1,1,1)
DropdownTitle3.BackgroundTransparency = 1
DropdownTitle3.BorderSizePixel = 0
DropdownTitle3.BorderColor3 = Color3.new(0,0,0)
DropdownTitle3.Text = option
DropdownTitle3.TextColor3 =
Color3.fromRGB(120,120,120)
DropdownTitle3.Font = Enum.Font.Gotham
DropdownTitle3.TextSize = Library.FontSize
DropdownTitle3.TextXAlignment =
Enum.TextXAlignment.Left
Dropdown.OptionInsts[option].text = DropdownTitle3
--
AccentDot.Name = "AccentDot"
AccentDot.Position = UDim2.new(0,8,0,8)
AccentDot.Size = UDim2.new(0,6,0,6)
AccentDot.BackgroundColor3 = Library.Accent
AccentDot.BorderSizePixel = 0
AccentDot.BorderColor3 = Color3.new(0,0,0)
table.insert(Library.ThemeObjects, AccentDot)
Dropdown.OptionInsts[option].dot = AccentDot
--
OptionCorner.CornerRadius = UDim.new(1,0)
Count += 1

handleoptionclick(option, TextButton, DropdownTitle3,


AccentDot)
end
end
createoptions(Dropdown.Options)
--
local set
set = function(option)
if Dropdown.Max then
table.clear(Chosen)
option = type(option) == "table" and option or {}

for opt, tbl in next, Dropdown.OptionInsts do


if not table.find(option, opt) then

game:GetService("TweenService"):Create(tbl.text, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextColor3 =
Color3.fromRGB(120,120,120)}):Play()

game:GetService("TweenService"):Create(tbl.text, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(0,4,0,0)}):Play()

game:GetService("TweenService"):Create(tbl.dot, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {BackgroundTransparency =
1}):Play()
end
end

for i, opt in next, option do


if table.find(Dropdown.Options, opt) and
#Chosen < Dropdown.Max then
table.insert(Chosen, opt)

game:GetService("TweenService"):Create(Dropdown.OptionInsts[opt].text,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextColor3 =
Color3.fromRGB(200,200,200)}):Play()

game:GetService("TweenService"):Create(Dropdown.OptionInsts[opt].dot,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
{BackgroundTransparency = 0}):Play()

game:GetService("TweenService"):Create(Dropdown.OptionInsts[opt].text,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(0,20,0,0)}):Play()
end
end

local textchosen = {}
local cutobject = false

for _, opt in next, Chosen do


table.insert(textchosen, opt)
end
DropdownTitle_2.Text = #Chosen == 0 and "" or
table.concat(textchosen, ", ") .. (cutobject and ", ..." or "")

Library.Flags[Dropdown.Flag] = Chosen
Dropdown.Callback(Chosen)
end
end
--
function Dropdown:Set(option)
if Dropdown.Max then
set(option)
else
for opt, tbl in next, Dropdown.OptionInsts do
if opt ~= option then

game:GetService("TweenService"):Create(tbl.text, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextColor3 =
Color3.fromRGB(120,120,120)}):Play()

game:GetService("TweenService"):Create(tbl.text, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(0,4,0,0)}):Play()

game:GetService("TweenService"):Create(tbl.dot, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {BackgroundTransparency =
1}):Play()
end
end
if table.find(Dropdown.Options, option) then
Chosen = option
DropdownTitle_2.Text = option

game:GetService("TweenService"):Create(Dropdown.OptionInsts[option].text,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextColor3 =
Color3.fromRGB(200,200,200)}):Play()

game:GetService("TweenService"):Create(Dropdown.OptionInsts[option].dot,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
{BackgroundTransparency = 0}):Play()

game:GetService("TweenService"):Create(Dropdown.OptionInsts[option].text,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position =
UDim2.new(0,20,0,0)}):Play()
Library.Flags[Dropdown.Flag] = Chosen
Dropdown.Callback(Chosen)
else
Chosen = nil
DropdownTitle_2.Text = ""
Library.Flags[Dropdown.Flag] = Chosen
Dropdown.Callback(Chosen)
end
end
end
--
function Dropdown:Refresh(tbl)
Count = 0
for _, opt in next, Dropdown.OptionInsts do
coroutine.wrap(function()
opt.button:Destroy()
end)()
end
table.clear(Dropdown.OptionInsts)

createoptions(tbl)
Chosen = nil

Library.Flags[Dropdown.Flag] = Chosen
Dropdown.Callback(Chosen)
end

-- // Returning
if Dropdown.Max then
Flags[Dropdown.Flag] = set
else
Flags[Dropdown.Flag] = Dropdown
end
Dropdown:Set(Dropdown.State)
return Dropdown
end
--
function Sections:Colorpicker(Properties)
local Properties = Properties or {}
local Colorpicker = {
Window = self.Window,
Page = self.Page,
Section = self,
Name = (Properties.Name or "Colorpicker"),
State = (
Properties.state
or Properties.State
or Properties.def
or Properties.Def
or Properties.default
or Properties.Default
or Color3.fromRGB(255, 0, 0)
),
Callback = (
Properties.callback
or Properties.Callback
or Properties.callBack
or Properties.CallBack
or function() end
),
Flag = (
Properties.flag
or Properties.Flag
or Properties.pointer
or Properties.Pointer
or Library.NextFlag()
),
Colorpickers = 0,
}
--
local NewColor = Instance.new("TextButton")
NewColor.Name = "NewColor"
NewColor.FontFace =
Font.new("rbxasset://fonts/families/SourceSansPro.json")
NewColor.Text = ""
NewColor.TextColor3 = Color3.fromRGB(0, 0, 0)
NewColor.TextSize = 14
NewColor.AutoButtonColor = false
NewColor.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
NewColor.BackgroundTransparency = 1
NewColor.BorderColor3 = Color3.fromRGB(0, 0, 0)
NewColor.BorderSizePixel = 0
NewColor.Size = UDim2.new(1, 0, 0, 17)
NewColor.ZIndex = 54
NewColor.Parent = Colorpicker.Section.Elements.SectionContent

local ToggleTitle = Instance.new("TextLabel")


ToggleTitle.Name = "ToggleTitle"
ToggleTitle.FontFace =
Font.new("rbxasset://fonts/families/GothamSSm.json")
ToggleTitle.Text = Colorpicker.Name
ToggleTitle.TextColor3 = Color3.fromRGB(200, 200, 200)
ToggleTitle.TextSize = 13
ToggleTitle.TextXAlignment = Enum.TextXAlignment.Left
ToggleTitle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
ToggleTitle.BackgroundTransparency = 1
ToggleTitle.BorderColor3 = Color3.fromRGB(0, 0, 0)
ToggleTitle.BorderSizePixel = 0
ToggleTitle.Size = UDim2.new(1, -10, 0, 17)
ToggleTitle.Parent = NewColor

-- // Functions
Colorpicker.Colorpickers = Colorpicker.Colorpickers + 1
local colorpickertypes = Library:NewPicker(
Colorpicker.Name,
Colorpicker.State,
NewColor,
Colorpicker.Colorpickers,
Colorpicker.Flag,
Colorpicker.Callback
)

function Colorpicker:Set(color)
colorpickertypes:Set(color, false, true)
end

function Colorpicker:Colorpicker(Properties)
local Properties = Properties or {}
local NewColorpicker = {
State = (
Properties.state
or Properties.State
or Properties.def
or Properties.Def
or Properties.default
or Properties.Default
or Color3.fromRGB(255, 0, 0)
),
Callback = (
Properties.callback
or Properties.Callback
or Properties.callBack
or Properties.CallBack
or function() end
),
Flag = (
Properties.flag
or Properties.Flag
or Properties.pointer
or Properties.Pointer
or Library.NextFlag()
),
}
-- // Functions
Colorpicker.Colorpickers = Colorpicker.Colorpickers + 1
local Newcolorpickertypes = Library:NewPicker(
"",
NewColorpicker.State,
NewColor,
Colorpicker.Colorpickers,
NewColorpicker.Flag,
NewColorpicker.Callback
)

function NewColorpicker:Set(color)
Newcolorpickertypes:Set(color)
end

-- // Returning
return NewColorpicker
end

-- // Returning
return Colorpicker
end
--
function Sections:Keybind(Properties)
local Properties = Properties or {}
local Keybind = {
Section = self,
Name = Properties.name or Properties.Name or "Keybind",
State = (
Properties.state
or Properties.State
or Properties.def
or Properties.Def
or Properties.default
or Properties.Default
or Enum.KeyCode.E
),
Mode = (Properties.mode or Properties.Mode or "Toggle"),
UseKey = (Properties.UseKey or false),
Callback = (
Properties.callback
or Properties.Callback
or Properties.callBack
or Properties.CallBack
or function() end
),
Flag = (
Properties.flag
or Properties.Flag
or Properties.pointer
or Properties.Pointer
or Library.NextFlag()
),
Binding = nil,
}
local Key
local State = false
--
local NewKey = Instance.new("TextButton")
NewKey.Name = "NewKey"
NewKey.FontFace =
Font.new("rbxasset://fonts/families/SourceSansPro.json")
NewKey.Text = ""
NewKey.TextColor3 = Color3.fromRGB(0, 0, 0)
NewKey.TextSize = 14
NewKey.AutoButtonColor = false
NewKey.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
NewKey.BackgroundTransparency = 1
NewKey.BorderColor3 = Color3.fromRGB(0, 0, 0)
NewKey.BorderSizePixel = 0
NewKey.Size = UDim2.new(1, 0, 0, 17)
NewKey.ZIndex = 54
NewKey.Parent = Keybind.Section.Elements.SectionContent

local ToggleTitle = Instance.new("TextLabel")


ToggleTitle.Name = "ToggleTitle"
ToggleTitle.FontFace =
Font.new("rbxasset://fonts/families/GothamSSm.json")
ToggleTitle.Text = Keybind.Name
ToggleTitle.TextColor3 = Color3.fromRGB(200, 200, 200)
ToggleTitle.TextSize = 13
ToggleTitle.TextXAlignment = Enum.TextXAlignment.Left
ToggleTitle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
ToggleTitle.BackgroundTransparency = 1
ToggleTitle.BorderColor3 = Color3.fromRGB(0, 0, 0)
ToggleTitle.BorderSizePixel = 0
ToggleTitle.Size = UDim2.new(1, -10, 0, 17)
ToggleTitle.Parent = NewKey

local KeyText = Instance.new("TextLabel")


KeyText.Name = "KeyText"
KeyText.FontFace =
Font.new("rbxasset://fonts/families/GothamSSm.json")
KeyText.Text = "None"
KeyText.TextColor3 = Color3.fromRGB(200, 200, 200)
KeyText.TextSize = 13
KeyText.TextXAlignment = Enum.TextXAlignment.Right
KeyText.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
KeyText.BackgroundTransparency = 1
KeyText.BorderColor3 = Color3.fromRGB(0, 0, 0)
KeyText.BorderSizePixel = 0
KeyText.Position = UDim2.new(1, -180, 0, 0)
KeyText.Size = UDim2.new(1, -10, 0, 17)
KeyText.Parent = NewKey

-- // Functions
local function set(newkey)
if string.find(tostring(newkey), "Enum") then
if c then
c:Disconnect()
if Keybind.Flag then
Library.Flags[Keybind.Flag] = false
end
Keybind.Callback(false)
end
if tostring(newkey):find("Enum.KeyCode.") then
newkey =
Enum.KeyCode[tostring(newkey):gsub("Enum.KeyCode.", "")]
elseif tostring(newkey):find("Enum.UserInputType.")
then
newkey =
Enum.UserInputType[tostring(newkey):gsub("Enum.UserInputType.", "")]
end
if newkey == Enum.KeyCode.Backspace then
Key = nil
if Keybind.UseKey then
if Keybind.Flag then
Library.Flags[Keybind.Flag] = Key
end
Keybind.Callback(Key)
end
local text = "None"

KeyText.Text = text
elseif newkey ~= nil then
Key = newkey
if Keybind.UseKey then
if Keybind.Flag then
Library.Flags[Keybind.Flag] = Key
end
Keybind.Callback(Key)
end
local text = (Library.Keys[newkey] or
tostring(newkey):gsub("Enum.KeyCode.", ""))

KeyText.Text = text
end

Library.Flags[Keybind.Flag .. "_KEY"] = newkey


elseif table.find({ "Always", "Toggle", "Hold" }, newkey)
then
if not Keybind.UseKey then
Library.Flags[Keybind.Flag .. "_KEY STATE"] =
newkey
Keybind.Mode = newkey
if Keybind.Mode == "Always" then
State = true
if Keybind.Flag then
Library.Flags[Keybind.Flag] = State
end
Keybind.Callback(true)
end
end
else
State = newkey
if Keybind.Flag then
Library.Flags[Keybind.Flag] = newkey
end
Keybind.Callback(newkey)
end
end
--
set(Keybind.State)
set(Keybind.Mode)
NewKey.MouseButton1Click:Connect(function()
if not Keybind.Binding then

KeyText.Text = "..."
TweenService:Create(KeyText, TweenInfo.new(0.25,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextColor3 =
Color3.fromRGB(255,255,255)}):Play()

Keybind.Binding = Library:Connection(
game:GetService("UserInputService").InputBegan,
function(input, gpe)
if gpe then return end;
if input.UserInputType ==
Enum.UserInputType.Touch then return end;

set(
input.UserInputType ==
Enum.UserInputType.Keyboard and input.KeyCode
or input.UserInputType
)
Library:Disconnect(Keybind.Binding)
task.wait()
Keybind.Binding = nil
TweenService:Create(KeyText,
TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextColor3 =
Color3.fromRGB(200, 200, 200)}):Play()
end
)
end
end)
--

Library:Connection(game:GetService("UserInputService").InputBegan,
function(inp, gpe)
if (gpe) then return end;

if (inp.KeyCode == Key or inp.UserInputType == Key) and not


Keybind.Binding and not Keybind.UseKey then
if Keybind.Mode == "Hold" then
if Keybind.Flag then
Library.Flags[Keybind.Flag] = true
end
c =
Library:Connection(game:GetService("RunService").RenderStepped, function()
if Keybind.Callback then
Keybind.Callback(true)
end
end)
elseif Keybind.Mode == "Toggle" then
State = not State
if Keybind.Flag then
Library.Flags[Keybind.Flag] = State
end
Keybind.Callback(State)
end
end
end)
--

Library:Connection(game:GetService("UserInputService").InputEnded,
function(inp, gpe)
if gpe then return end;

if Keybind.Mode == "Hold" and not Keybind.UseKey then


if Key ~= "" or Key ~= nil then
if inp.KeyCode == Key or inp.UserInputType ==
Key then
if c then
c:Disconnect()
if Keybind.Flag then
Library.Flags[Keybind.Flag] =
false
end
if Keybind.Callback then
Keybind.Callback(false)
end
end
end
end
end
end)
--
Library.Flags[Keybind.Flag .. "_KEY"] = Keybind.State
Library.Flags[Keybind.Flag .. "_KEY STATE"] = Keybind.Mode
Flags[Keybind.Flag] = set
Flags[Keybind.Flag .. "_KEY"] = set
Flags[Keybind.Flag .. "_KEY STATE"] = set
--
function Keybind:Set(key)
set(key)
end

-- // Returning
return Keybind
end
--
function Sections:Textbox(Properties)
local Properties = Properties or {}
local Textbox = {
Window = self.Window,
Page = self.Page,
Section = self,
Placeholder = (
Properties.placeholder
or Properties.Placeholder
or Properties.holder
or Properties.Holder
or "Enter your text here"
),
State = (
Properties.state
or Properties.State
or Properties.def
or Properties.Def
or Properties.default
or Properties.Default
or ""
),
Callback = (
Properties.callback
or Properties.Callback
or Properties.callBack
or Properties.CallBack
or function() end
),
Flag = (
Properties.flag
or Properties.Flag
or Properties.pointer
or Properties.Pointer
or Library.NextFlag()
),
}
--
local NewBox = Instance.new("Frame")
NewBox.Name = "NewBox"
NewBox.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
NewBox.BackgroundTransparency = 1
NewBox.BorderColor3 = Color3.fromRGB(0, 0, 0)
NewBox.BorderSizePixel = 0
NewBox.Size = UDim2.new(1, 0, 0, 24)
NewBox.ZIndex = 54
NewBox.Parent = Textbox.Section.Elements.SectionContent

local ToggleFrame = Instance.new("Frame")


ToggleFrame.Name = "ToggleFrame"
ToggleFrame.BackgroundColor3 = Color3.fromRGB(13, 13, 13)
ToggleFrame.BorderColor3 = Color3.fromRGB(0, 0, 0)
ToggleFrame.BorderSizePixel = 0
ToggleFrame.Position = UDim2.new(0, 0, 1, -24)
ToggleFrame.Size = UDim2.new(1, 0, 0, 24)
ToggleFrame.ZIndex = 55

local UICorner2 = Instance.new("UICorner")


UICorner2.Name = "UICorner_2"
UICorner2.CornerRadius = UDim.new(0, 4)
UICorner2.Parent = ToggleFrame

local DropdownTitle = Instance.new("TextBox")


DropdownTitle.Name = "DropdownTitle"
DropdownTitle.FontFace =
Font.new("rbxasset://fonts/families/GothamSSm.json")
DropdownTitle.Text = Textbox.State
DropdownTitle.PlaceholderText = Textbox.Placeholder
DropdownTitle.PlaceholderColor3 = Color3.fromRGB(145,145,145)
DropdownTitle.TextColor3 = Color3.fromRGB(200, 200, 200)
DropdownTitle.TextSize = 13
DropdownTitle.ClearTextOnFocus = false
DropdownTitle.TextXAlignment = Enum.TextXAlignment.Left
DropdownTitle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
DropdownTitle.BackgroundTransparency = 1
DropdownTitle.BorderColor3 = Color3.fromRGB(0, 0, 0)
DropdownTitle.BorderSizePixel = 0
DropdownTitle.Position = UDim2.fromOffset(4, 0)
DropdownTitle.Size = UDim2.new(1, -10, 1, 0)
DropdownTitle.ZIndex = 53
DropdownTitle.Parent = ToggleFrame
DropdownTitle.TextTruncate = Enum.TextTruncate.SplitWord

ToggleFrame.Parent = NewBox
--
DropdownTitle.FocusLost:Connect(function()
Textbox.Callback(DropdownTitle.Text)
Library.Flags[Textbox.Flag] = DropdownTitle.Text
end)
--
local function set(str)
DropdownTitle.Text = str
Library.Flags[Textbox.Flag] = str
Textbox.Callback(str)
end
-- // Return
Flags[Textbox.Flag] = set
Library.Flags[Textbox.Flag] = DropdownTitle.Text
return Textbox
end
--
function Sections:Button(Properties)
local Properties = Properties or {}
local Button = {
Window = self.Window,
Page = self.Page,
Section = self,
Name = Properties.Name or "button",
Callback = (
Properties.callback
or Properties.Callback
or Properties.callBack
or Properties.CallBack
or function() end
),
}
--
local NewButton = Instance.new("TextButton")
NewButton.Name = "NewButton"
NewButton.FontFace =
Font.new("rbxasset://fonts/families/SourceSansPro.json")
NewButton.Text = ""
NewButton.TextColor3 = Color3.fromRGB(0, 0, 0)
NewButton.TextSize = 14
NewButton.AutoButtonColor = false
NewButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
NewButton.BackgroundTransparency = 1
NewButton.BorderColor3 = Color3.fromRGB(0, 0, 0)
NewButton.BorderSizePixel = 0
NewButton.Size = UDim2.new(1, 0, 0, 24)
NewButton.ZIndex = 54
NewButton.Parent = Button.Section.Elements.SectionContent

local ToggleFrame = Instance.new("Frame")


ToggleFrame.Name = "ToggleFrame"
ToggleFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
ToggleFrame.BorderColor3 = Color3.fromRGB(0, 0, 0)
ToggleFrame.BorderSizePixel = 0
ToggleFrame.Position = UDim2.new(0, 0, 1, -24)
ToggleFrame.Size = UDim2.new(1, 0, 0, 24)
ToggleFrame.ZIndex = 55

local UICorner2 = Instance.new("UICorner")


UICorner2.Name = "UICorner_2"
UICorner2.CornerRadius = UDim.new(0, 4)
UICorner2.Parent = ToggleFrame

local DropdownTitle = Instance.new("TextLabel")


DropdownTitle.Name = "DropdownTitle"
DropdownTitle.FontFace =
Font.new("rbxasset://fonts/families/GothamSSm.json")
DropdownTitle.Text = Button.Name
DropdownTitle.TextColor3 = Color3.fromRGB(200, 200, 200)
DropdownTitle.TextSize = 13
DropdownTitle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
DropdownTitle.BackgroundTransparency = 1
DropdownTitle.BorderColor3 = Color3.fromRGB(0, 0, 0)
DropdownTitle.BorderSizePixel = 0
DropdownTitle.Size = UDim2.fromScale(1, 1)
DropdownTitle.ZIndex = 53
DropdownTitle.Parent = ToggleFrame

ToggleFrame.Parent = NewButton
--
Library:Connection(NewButton.MouseButton1Down, function()
Button.Callback()
TweenService:Create(DropdownTitle, TweenInfo.new(0.1,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextColor3 =
Color3.fromRGB(255,255,255)}):Play()
task.spawn(function()
task.wait(0.1)
TweenService:Create(DropdownTitle, TweenInfo.new(0.1,
Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextColor3 =
Color3.fromRGB(200,200,200)}):Play()
end)
end)
end
--
function Library:Watermark(Properties)
local Watermark = {
Name = (Properties.Name or Properties.name or
"Starhook.club | placeholder");
AnimateText = nil;
}
--
local Outline = Instance.new("Frame")
Outline.Name = "Outline"
Outline.AnchorPoint = Vector2.new(1, 0)
Outline.AutomaticSize = Enum.AutomaticSize.X
Outline.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
Outline.BorderColor3 = Color3.fromRGB(0, 0, 0)
Outline.Position = UDim2.new(1, -10, 0, 10)
Outline.Size = UDim2.fromOffset(100, 20)
Outline.Visible = false
Outline.ZIndex = 50
Outline.Parent = Library.ScreenGUI

local UICorner = Instance.new("UICorner")


UICorner.Name = "UICorner"
UICorner.CornerRadius = UDim.new(0, 4)
UICorner.Parent = Outline

local UIStroke = Instance.new("UIStroke")


UIStroke.Name = "UIStroke"
UIStroke.Parent = Outline

local Inline = Instance.new("Frame")


Inline.Name = "Inline"
Inline.BackgroundColor3 = Color3.fromRGB(13, 13, 13)
Inline.BorderColor3 = Color3.fromRGB(0, 0, 0)
Inline.BorderSizePixel = 0
Inline.Position = UDim2.fromOffset(1, 1)
Inline.Size = UDim2.new(1, -2, 1, -2)
Inline.ZIndex = 51

local UICorner2 = Instance.new("UICorner")


UICorner2.Name = "UICorner_2"
UICorner2.CornerRadius = UDim.new(0, 4)
UICorner2.Parent = Inline

local Title = Instance.new("TextLabel")


Title.Name = "Title"
Title.FontFace =
Font.new("rbxasset://fonts/families/GothamSSm.json")
Title.RichText = true
Title.Text = Watermark.Name
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 13
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.AutomaticSize = Enum.AutomaticSize.X
Title.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
Title.BackgroundTransparency = 1
Title.BorderColor3 = Color3.fromRGB(0, 0, 0)
Title.BorderSizePixel = 0
Title.Position = UDim2.fromOffset(5, 0)
Title.Size = UDim2.fromScale(0, 1)
Title.Parent = Inline

local UIPadding = Instance.new("UIPadding")


UIPadding.Name = "UIPadding"
UIPadding.PaddingRight = UDim.new(0, 6)
UIPadding.Parent = Inline

Inline.Parent = Outline

task.spawn(function()
while task.wait() do
for i = 1, #"Starhook.club" do
Watermark.AnimateText =
string.sub("Starhook.club", 1, i) .. "";
Title.Text = Watermark.AnimateText .. " " ..
Watermark.Name;
task.wait(0.4);
end;

for i = #"Starhook.club" - 1, 1, -1 do
Watermark.AnimateText =
string.sub("Starhook.club", 1, i) .. "";
Title.Text = Watermark.AnimateText .. " " ..
Watermark.Name;
task.wait(0.4);
end;
end;
end)
-- // Functions
function Watermark:UpdateText(NewText)
Watermark.Name = NewText
Title.Text = Watermark.AnimateText .. " " ..
Watermark.Name;
end;
function Watermark:SetVisible(State)
Outline.Visible = State;
end;

return Watermark
end
--
end
end

local library = Library;


local flags = Library.Flags;

--// Luraph Macros (https://lura.ph/dashboard/documents/macros)


getfenv().LPH_NO_VIRTUALIZE = function(...) return ... end;

--// window locals


local default_color = Color3.fromRGB(207, 227, 0);

--// services
local players = game:GetService("Players");
local workspace = game:GetService("Workspace");
local user_input_service = game:GetService("UserInputService");
local run_service = game:GetService("RunService");
local replicated_storage = game:GetService("ReplicatedStorage");
local http_service = game:GetService("HttpService");
local tween_service = game:GetService("TweenService");
local stats = game:GetService("Stats");
local lighting = game:GetService("Lighting");
local core_gui = cloneref(game:GetService("CoreGui"));

--// libraries
--// local library, flags =
loadstring(game:HttpGet("https://gist.githubusercontent.com/linemaster2/
c6ba71bcb486990e5ea34ba9b7be6db6/raw/c95ba2fcd4d2b3a3ce62bdb429c75c8e696579f8/
sadiuohfgasduo9fhasdu8ihfgasd98u7asasdf.lua"))();
--- Lua-side duplication of the API of events on Roblox objects.
-- signals are needed for to ensure that for local events objects are passed by
-- reference rather than by value where possible, as the BindableEvent objects
-- always pass signal arguments by value, meaning tables will be deep copied.
-- Roblox's deep copy method parses to a non-lua table compatable format.
-- @classmod signal

local HttpService = game:GetService("HttpService")

local ENABLE_TRACEBACK = false

local signal = {}
signal.__index = signal
signal.ClassName = "signal"

--- Constructs a new signal.


-- @constructor signal.new()
-- @treturn signal
function signal.new()
local self = setmetatable({}, signal)

self._bindableEvent = Instance.new("BindableEvent")
self._argMap = {}
self._source = ENABLE_TRACEBACK and debug.traceback() or ""

-- Events in Roblox execute in reverse order as they are stored in a linked


list and
-- new connections are added at the head. This event will be at the tail of
the list to
-- clean up memory.
self._bindableEvent.Event:Connect(function(key)
self._argMap[key] = nil

-- We've been destroyed here and there's nothing left in flight.


-- Let's remove the argmap too.
-- This code may be slower than leaving this table allocated.
if (not self._bindableEvent) and (not next(self._argMap)) then
self._argMap = nil
end
end)

return self
end

--- Fire the event with the given arguments. All handlers will be invoked. Handlers
follow
-- Roblox signal conventions.
-- @param ... Variable arguments to pass to handler
-- @treturn nil
function signal:Fire(...)
if not self._bindableEvent then
warn(("signal is already destroyed. %s"):format(self._source))
return
end

local args = table.pack(...)

-- TODO: Replace with a less memory/computationally expensive key generation


scheme
local key = HttpService:GenerateGUID(false)
self._argMap[key] = args

-- Queues each handler onto the queue.


self._bindableEvent:Fire(key)
end

--- Connect a new handler to the event. Returns a connection object that can be
disconnected.
-- @tparam function handler Function handler called with arguments passed when
`:Fire(...)` is called
-- @treturn Connection Connection object that can be disconnected
function signal:Connect(handler)
if not (type(handler) == "function") then
error(("connect(%s)"):format(typeof(handler)), 2)
end

return self._bindableEvent.Event:Connect(function(key)
-- note we could queue multiple events here, but we'll do this just as
Roblox events expect
-- to behave.

local args = self._argMap[key]


if args then
handler(table.unpack(args, 1, args.n))
else
error("Missing arg data, probably due to reentrance.")
end
end)
end

--- Wait for fire to be called, and return the arguments it was given.
-- @treturn ... Variable arguments from connection
function signal:Wait()
local key = self._bindableEvent.Event:Wait()
local args = self._argMap[key]
if args then
return table.unpack(args, 1, args.n)
else
error("Missing arg data, probably due to reentrance.")
return nil
end
end

--- Disconnects all connected events to the signal. Voids the signal as unusable.
-- @treturn nil
function signal:Destroy()
if self._bindableEvent then
-- This should disconnect all events, but in-flight events should still
be
-- executed.

self._bindableEvent:Destroy()
self._bindableEvent = nil
end

-- Do not remove the argmap. It will be cleaned up by the cleanup connection.

setmetatable(self, nil)
end
--// get the mouse arg
local real_dh_arg;

local dahood_ids = {2788229376, 16033173781, 7213786345}


local bullet_tp_connection;

--// hit sounds

local hitsounds = {
["RIFK7"] = "rbxassetid://9102080552",
["Bubble"] = "rbxassetid://9102092728",
["Minecraft"] = "rbxassetid://5869422451",
["Cod"] = "rbxassetid://160432334",
["Bameware"] = "rbxassetid://6565367558",
["Neverlose"] = "rbxassetid://6565370984",
["Gamesense"] = "rbxassetid://4817809188",
["Rust"] = "rbxassetid://6565371338"
};

if (not (isfolder("starhook"))) then


makefolder("starhook");
end;

--// game support


local game_support = {
[2788229376] = {
Number = 1,
Name = "Da Hood",
Remote = "MainEvent",
Argument = real_dh_arg or "UpdateMousePosI",
BulletName = "BULLET_RAYS",
BulletBeamName = "GunBeam",
BulletPath = workspace:FindFirstChild("Ignored") and
workspace.Ignored:FindFirstChild("Siren") and
workspace.Ignored.Siren:FindFirstChild("Radius") or nil
},
[12238627497] = {
Number = 2,
Name = "Locker Hood",
Remote = "MainEvent",
Argument = "UpdateMousePos",
BulletName = "BULLET_RAYS",
BulletBeamName = "GunBeam",
BulletPath = workspace:FindFirstChild("Ignored") or nil
},
[5602055394] = {
Number = 3,
Name = "Hood Modded",
Remote = "MAINEVENT",
Argument = "MousePos",
BulletName = "BULLET_RAYS",
BulletBeamName = "GunBeam",
BulletPath = workspace:FindFirstChild("Ignored") or nil
},
[17403265390] = {
Number = 4,
Name = "Da Downhill",
Remote = "MAINEVENT",
Argument = "MOUSE",
BulletName = "Part",
BulletBeamName = "gb",
BulletPath = workspace
},
[17403166075] = {
Number = 5,
Name = "Da Bank",
Remote = "MAINEVENT",
Argument = "MOUSE",
BulletName = "Part",
BulletBeamName = "gb",
BulletPath = workspace
},
[18111448661] = {
Number = 6,
Name = "Da Uphill",
Remote = "MAINEVENT",
Argument = "MOUSE",
BulletName = "Part",
BulletBeamName = "gb",
BulletPath = workspace
},
[15186202290] = {
Number = 7,
Name = "Da Strike",
Remote = "MAINEVENT",
Argument = "MOUSE",
BulletName = "Part",
BulletBeamName = "gb",
BulletPath = workspace
},
[11143225577] = {
Number = 8,
Name = "1v1 Hood Aim Trainer",
Remote = "MAINEVENT",
Argument = "UpdateMousePos"
},
[15763494605] = {
Number = 9,
Name = "Hood Aim",
Remote = "MAINEVENT",
Argument = "MOUSE"
},
[15166543806] = {
Number = 10,
Name = "Moon Hood",
Remote = "MAINEVENT",
Argument = "MoonUpdateMousePos"
},
[17897702920] = {
Number = 11,
Name = "OG Da Hood",
Remote = "MainEvent",
Argument = "UpdateMousePos",
Adonis = true -- idk who putted this
},
[16033173781] = {
Number = 12,
Name = "Da Hood Macro",
Remote = "MainEvent",
Argument = "UpdateMousePos1"
},
[7213786345] = {
Number = 13,
Name = "Da Hood VC",
Remote = "MainEvent",
Argument = real_dh_arg or "UpdateMousePosI",
BulletName = "BULLET_RAYS",
BulletBeamName = "GunBeam",
BulletPath = workspace:FindFirstChild("Ignored") and
workspace.Ignored:FindFirstChild("Siren") and
workspace.Ignored.Siren:FindFirstChild("Radius") or nil
},
[16033173781] = {
Number = 14,
Name = "Da Hood Macro",
Remote = "MainEvent",
Argument = real_dh_arg or "UpdateMousePosI",
BulletName = "BULLET_RAYS",
BulletBeamName = "GunBeam",
BulletPath = workspace:FindFirstChild("Ignored") and
workspace.Ignored:FindFirstChild("Siren") and
workspace.Ignored.Siren:FindFirstChild("Radius") or nil
},
[9825515356] = {
Number = 15,
Name = "Hood Customs",
Remote = "MainEvent",
Argument = real_dh_arg or "MousePosUpdate",
BulletName = "BULLET_RAYS",
BulletBeamName = "GunBeam",
BulletPath = workspace:FindFirstChild("Ignored") or nil
},
[16859411452] = {
Number = 16,
Name = "Hood Z",
Remote = "MainEvent",
Argument = "UpdateMousePos",
BulletName = "bulletray",
BulletBeamName = "beam",
BulletPath = workspace:FindFirstChild("Ignored") or nil
},
[14277620939] = {
Number = 17,
Name = "Custom FFA",
Remote = "MainEvent",
Argument = "UpdateMousePos",
BulletName = "BULLET_RAYS",
BulletBeamName = "GunBeam",
BulletPath = workspace:FindFirstChild("Ignored") or nil
},
[17886986441] = {
Number = 19,
Name = "Ar Hood",
Remote = "MainEvent",
Argument = "UpdateMousePos",
BulletName = "BULLET_RAYS",
BulletBeamName = "GunBeam" or "gb" or "Beam" or "Beam1",
BulletPath = workspace:FindFirstChild("Ignored") or nil,

AdonisBypass = {
ExecuteBypass = function()
loadstring(game:HttpGet("https://scriptblox.com/raw/Universal-
Script-Adonis-Anticheat-Bypass-11111", true))()
end
}
},
[17721393836] = { -- top 10 lazy modifyer :fire:
Number = 19,
Name = "The Hood Custom",
Remote = "MainEvent",
Argument = "UpdateMousePos",
BulletName = "BULLET_RAYS",
BulletBeamName = "GunBeam" or "gb" or "Beam" or "Beam1",
BulletPath = workspace:FindFirstChild("Ignored") or nil,

AdonisBypass = {
ExecuteBypass = function()
loadstring(game:HttpGet("https://scriptblox.com/raw/Universal-
Script-Adonis-Anticheat-Bypass-11111", true))()
end
}
},
[17344804827] = {
Number = 20,
Name = "Yeno Hood",
Remote = "MainEvent",
Argument = "UpdateMousePos",
BulletName = "BULLET_RAYS",
BulletBeamName = "GunBeam" or "gb" or "Beam" or "Beam1",
BulletPath = workspace:FindFirstChild("Ignored") or nil,

AdonisBypass = {
ExecuteBypass = function()
loadstring(game:HttpGet("https://scriptblox.com/raw/Universal-
Script-Adonis-Anticheat-Bypass-11111", true))()
end
}
},
[130633951564639] = {
Number = 21,
Name = "Da Bot Aim Trainer",
Remote = "MAINEVENT",
Argument = "MOUSE",
BulletName = "BULLET_RAYS",
BulletBeamName = "GunBeam" or "gb" or "Beam" or "Beam1",
BulletPath = workspace:FindFirstChild("Ignored") or nil,
},
[125825216602676] = {
Number = 22,
Name = "Da Downhill",
Remote = "MAINEVENT",
Argument = "MOUSE"
},
}; --// Credits to farzad
--// Credit to atzlazyblue (not dev) mf did 82% of the supportment
--// automatic bypass | who ever made adonis is a opp
AdonisBypass = game_support[game.PlaceId] and
game_support[game.PlaceId].AdonisBypass

if AdonisBypass then
print("[Starhook]: Adonis found for: " .. game_support[game.PlaceId].Name)
AdonisBypass.ExecuteBypass()
end;

--// custom game support


local remote_name = game_support[game.PlaceId] and
game_support[game.PlaceId].Remote or nil;
local mouse_argument = game_support[game.PlaceId] and
game_support[game.PlaceId].Argument or nil;
local bullet_beam_name = game_support[game.PlaceId] and
game_support[game.PlaceId].BulletBeamName or nil;
local bullet_name = game_support[game.PlaceId] and
game_support[game.PlaceId].BulletName or nil;
local bullet_path = game_support[game.PlaceId] and
game_support[game.PlaceId].BulletPath or nil;

local remote = replicated_storage[remote_name];

local hood_customs = 9825515356;

--// world
local world = {
FogColor = lighting.FogColor,
FogStart = lighting.FogStart,
FogEnd = lighting.FogEnd,
Ambient = lighting.Ambient,
Brightness = lighting.Brightness,
ClockTime = lighting.ClockTime,
ExposureCompensation = lighting.ExposureCompensation,
ColorShift_Top = lighting.ColorShift_Top,
ColorShift_Bottom = lighting.ColorShift_Bottom
};

--// instances
local local_player = players.LocalPlayer;
--// local chat_remote =
replicated_storage:FindFirstChild("DefaultChatSystemChatEvents") and
replicated_storage.DefaultChatSystemChatEvents.SayMessageRequest or nil;
local camera = workspace.CurrentCamera;

--// script table


local locals = {
network_should_sleep = false,
original_position = CFrame.new(1, 1, 1),
should_starhook_destroy = false,
old_ticks = {
assist_stutter_tick = tick(),
clone_chams_tick = tick(),
auto_shoot_tick = tick(),
network_desync_tick = tick()
},
assist = {
is_targetting = false,
target = nil,
},
target_aim = {
predicted_position = Vector3.new(1, 1, 1),
is_targetting = false,
target = nil
},
silent_aim = {
predicted_position = Vector3.new(1, 1, 1),
is_targetting = false,
target = nil
},
gun = {
current_tool = nil,
current_tool_bullet_tp = nil,
recently_shot = false,
recently_hit = false,
previous_ammo = 0,
previous_ammo_bullet_tp = 0
}
};

local AssetID = {
["SkyBoxes"] = {
["Normal"] = {600886090,600830446,600831635,600832720,600833862,600835177},
["DoomSpire"] =
{6050649245,6050664592,6050648475,6050644331,6050649718,6050650083},
["CatGirl"] =
{444167615,444167615,444167615,444167615,444167615,444167615},
["Vibe"] =
{1417494402,1417494030,1417494146,1417494253,1417494499,1417494643},
["Blue Aurora"] = {12063984,12064107,12064152,12064121,12064115,12064131},
["Purple Clouds"] =
{151165191,151165214,151165197,151165224,151165206,151165227},
["Purple Nebula"] =
{159454286,159454299,159454296,159454293,159454300,159454288},
["Twighlight"] =
{264909758,264908339,264907909,264909420,264908886,264907379},
["Vivid Skies"] =
{271042310,271042516,271077243,271042556,271042467,271077958},
["Purple and Blue"] =
{149397684,149397692,149397686,149397697,149397688,149397702},
},
["Angle"] = 0,
["Characters"] = {
AmongUs = {Vector3.new(0.15,0.15,0.15), "6686375937", "6686375902"},
SpongeBob = {Vector3.new(5,5,5), "5408463358", "5408463211"},
Patrick = {Vector3.new(0.4,0.4,0.4), "5730253510", "5730253467"},
Maxell = {Vector3.new(0.2,0.2,0.2), "12303996609", "12303996327"},
Brian = {Vector3.new(1.7,1.7,1.7), "512454212", "512454192"},
CapyBara = {Vector3.new(2,2,2), "11255227067", "11255226712"},
Chicken = {Vector3.new(3, 3, 3), "2114220248", "2114220154"},
Sonic = {Vector3.new(0.15,0.15,0.15), "6901422268", "6901422170"},
}
}

local drawings = {};


local signals = {};
local instances = {target_ui = {}};
local blood_splatters = {};
local ui = {window = nil,tabs = {}}
local connections = {gun = {}};
local script_addon = {events = {}};

--// screengui
local screen_gui = Instance.new("ScreenGui");
screen_gui.Name = "https://starhook.club";
screen_gui.IgnoreGuiInset = true;
screen_gui.DisplayOrder = 99999;
screen_gui.ResetOnSpawn = false;
screen_gui.Enabled = false;
screen_gui.Parent = core_gui;

local screen_gui_2 = Instance.new("ScreenGui");


screen_gui_2.Name = "https://starhook.club";
screen_gui_2.IgnoreGuiInset = true;
screen_gui_2.DisplayOrder = 99999;
screen_gui_2.ResetOnSpawn = false;
screen_gui_2.Enabled = false;
screen_gui_2.Parent = core_gui;

--// old fflags


local old_psr;
local old_pssmbs;
--// "S2PhysicsSenderRate", "PhysicsSenderMaxBandwidthBps",
"DataSenderMaxJoinBandwidthBps"

if (getfflag) then
local old = getfflag;

getfflag = function(fflag)
local success, result = pcall(function()
return old(fflag);
end);

return result;
end;

old_psr = getfflag("S2PhysicsSenderRate");
old_pssmbs = getfflag("PhysicsSenderMaxBandwidthBps");
end;

--// utility
local utility = {}; do
utility.get_xmr_price = LPH_NO_VIRTUALIZE(function()
local data = game:HttpGet("https://api.coincap.io/v2/assets/monero");
local table_data = http_service:JSONDecode(data);

return math.floor(table_data.priceUsd) or 0;
end);

utility.world_to_screen = LPH_NO_VIRTUALIZE(function(position)
local position, on_screen = camera:WorldToViewportPoint(position);

return {position = Vector2.new(position.X, position.Y), on_screen =


on_screen};
end);
utility.get_ping = LPH_NO_VIRTUALIZE(function()
return stats.Network.ServerStatsItem["Data Ping"]:GetValue();
end);

utility.has_character = LPH_NO_VIRTUALIZE(function(player)
return (player and player.Character and
player.Character:FindFirstChild("Humanoid")) and true or false;
end);

utility.new_connection = function(type, callback) --// by all matters do NOT


no virtualize this
local connection = type:Connect(callback);

table.insert(connections, connection);

return connection;
end;

utility.create_connection = function(signal_name) --// by all matters do NOT


no virtualize this
local connection = signal.new(signal_name);
return connection;
end;

utility.is_in_air = LPH_NO_VIRTUALIZE(function(player)
if (not (utility.has_character(player))) then return false end;

local root_part = player.Character.HumanoidRootPart;

return root_part.Velocity.Y ~= 0;
end);

utility.is_friends_with = LPH_NO_VIRTUALIZE(function(player)
return player:IsFriendsWith(local_player.UserId) and true or false;
end);

utility.is_player_behind_a_wall = LPH_NO_VIRTUALIZE(function(player)
local amount =
camera:GetPartsObscuringTarget({local_player.Character.HumanoidRootPart.Position,
player.Character.HumanoidRootPart.Position}, {local_player.Character,
player.Character});
return #amount ~= 0;
end);

utility.drawing_new = function(type, properties)


local drawing_object = Drawing.new(type);

for property, value in properties do


drawing_object[property] = value;
end;

return drawing_object;
end;

utility.instance_new = function(type, properties)


local instance = Instance.new(type);

for property, value in properties do


instance[property] = value;
end;

return instance;
end;

utility.generate_random_string = function(length)
local characters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
local random_string = "";

for i = 1, length do
local random_index = math.random(1, #characters);
random_string = random_string .. string.sub(characters,
random_index, random_index);
end;

return random_string;
end;

utility.is_player_black = LPH_NO_VIRTUALIZE(function(player)
if (not (utility.has_character(player))) then return false end;

local head = player.Character.Head;


local hue = Color3.toHSV(head.Color);

return hue >= 0 and hue <= 0.1;


end);

utility.play_sound = LPH_NO_VIRTUALIZE(function(volume, sound_id)


local sound = Instance.new("Sound");
sound.Parent = workspace;
sound.SoundId = sound_id;
sound.Volume = volume;

sound:Play();

utility.new_connection(sound.Ended, function()
sound:Destroy();
end);
end);

utility.clone_character = function(player, transparency, color, material,


delete_hrp)
local delete_hrp = delete_hrp or true;

player.Character.Archivable = true;
local new_character = player.Character:Clone();
new_character.Parent = workspace;
player.Character.Archivable = false;

local parts = new_character:GetChildren();

for i = 1, #parts do
local part = parts[i];

if (part.ClassName == "MeshPart") then


part.Anchored = true;
part.CanCollide = false;
part.Color = color;
part.Material = Enum.Material[material];
part.Transparency = transparency;
else
if part.Name ~= "HumanoidRootPart" and delete_hrp then
part:Destroy();
end;
end;

if part.Name == "Head" then


local decal = part:FindFirstChild("face");

if decal then decal:Destroy() end;


end;
end;

return new_character;
end;

utility.create_beam = LPH_NO_VIRTUALIZE(function(from, to, color_1, color_2,


duration, fade_enabled, fade_duration)
local tween;
local total_time = 0;

local main_part = utility.instance_new("Part", {


Parent = workspace,
Size = Vector3.new(0, 0, 0),
Massless = true,
Transparency = 1,
CanCollide = false,
Position = from,
Anchored = true
});

local part0 = utility.instance_new("Part", {


Parent = main_part,
Size = Vector3.new(0, 0, 0),
Massless = true,
Transparency = 1,
CanCollide = false,
Position = from,
Anchored = true
});

local part1 = utility.instance_new("Part", {


Parent = main_part,
Size = Vector3.new(0, 0, 0),
Massless = true,
Transparency = 1,
CanCollide = false,
Position = to,
Anchored = true
});

local attachment0 = utility.instance_new("Attachment", {


Parent = part0
});

local attachment1 = utility.instance_new("Attachment", {


Parent = part1
});

local beam = utility.instance_new("Beam", {


Texture = "rbxassetid://446111271",
TextureMode = Enum.TextureMode.Wrap,
TextureLength = 10,
LightEmission = 1,
LightInfluence = 1,
FaceCamera = true,
ZOffset = -1,
Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(1, 1),
}),
Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, color_1),
ColorSequenceKeypoint.new(1, color_2),
}),
Attachment0 = attachment0,
Attachment1 = attachment1,
Enabled = true,
Parent = main_part
});

if fade_enabled then
tween = utility.new_connection(run_service.Heartbeat,
function(delta_time) --// credits to xander
total_time += delta_time;
beam.Transparency =
NumberSequence.new(tween_service:GetValue((total_time / fade_duration),
Enum.EasingStyle.Quad, Enum.EasingDirection.In));
end)
end;

task.delay(duration, function()
main_part:Destroy();

if (tween) then
tween:Disconnect();
end;
end);
end);

utility.create_impact = function(color, size, fade_enabled, fade_duration,


duration, position)
local impact = utility.instance_new("Part", {
CanCollide = false;
Material = Enum.Material.Neon;
Size = Vector3.new(size, size, size);
Color = color;
Position = position;
Anchored = true;
Parent = workspace
});

local outline = utility.instance_new("SelectionBox", { --// credits to


xander
LineThickness = 0.01;
Color3 = color;
SurfaceTransparency = 1;
Adornee = impact;
Visible = true;
Parent = impact
});

if (fade_enabled) then
local tween_info = TweenInfo.new(duration);
local tween = tween_service:Create(impact, tween_info,
{Transparency = 1});
local tween_outline = tween_service:Create(outline, tween_info,
{Transparency = 1});

tween:Play();
tween_outline:Play();
end;

task.delay(duration, function()
impact:Destroy()
end);
end;
end;

--// math functions


local custom_math = {}; do
custom_math.random_vector3 = LPH_NO_VIRTUALIZE(function(randomization)
return Vector3.new(math.random(-randomization, randomization),
math.random(-randomization, randomization), math.random(-randomization,
randomization));
end);

custom_math.recalculate_velocity = LPH_NO_VIRTUALIZE(function(part,
update_time) --// this is pasted
local current_position = part.Position;
local current_time = tick();
task.wait(1 / update_time);
local new_position = part.Position;
local new_time = tick();
local distance_traveled = (new_position - current_position);
local time_interval = (new_time - current_time);
local velocity = (distance_traveled / time_interval);
current_position = new_position;
current_time = new_time;
return velocity;
end);

custom_math.cframe_to_offset = function(origin, target)


local actual_origin = origin * CFrame.new(0, -1, 0, 1, 0, 0, 0, 0, 1,
0, -1, 0);
return actual_origin:ToObjectSpace(target):inverse();
end;

custom_math.is_mouse_over_frame = function(frame)
local mouse_pos = user_input_service:GetMouseLocation();
local absolute_position = frame.AbsolutePosition;
local absolute_size = frame.AbsoluteSize;

local xBound = (mouse_pos.X >= absolute_position.X and mouse_pos.X <


absolute_position.X + absolute_size.X);
local yBound = (mouse_pos.Y >= absolute_position.Y and mouse_pos.Y <
absolute_position.Y + absolute_size.Y);
return (xBound and yBound);
end;
end;

--// custom dahood functions


local dahood = {}; do
dahood.has_blood_splatter = LPH_NO_VIRTUALIZE(function(player)
if (not utility.has_character(player)) then return false end;

local descendants = player.Character:GetDescendants();


for i = 1, #descendants do
local instance = descendants[i];

if ((instance.Name == "BloodSplatter" or instance.Name ==


"BloodParticles" or instance.Name == "BloodParticle") and not
table.find(blood_splatters, instance)) then
table.insert(blood_splatters, instance);
return true, instance.Parent;
end;
end;

return false;
end);

dahood.get_armor = LPH_NO_VIRTUALIZE(function(player)
if (not utility.has_character(player)) then return 100 end;

local body_effects = player.Character:FindFirstChild("BodyEffects");

if not body_effects then


return 100;
end;

return body_effects.Armor.Value;
end);

dahood.is_on_vehicle = LPH_NO_VIRTUALIZE(function(player)
return player.Character:FindFirstChild("[CarHitBox]") ~= nil;
end);

dahood.is_knocked = LPH_NO_VIRTUALIZE(function(player) --// TODO: rewrite


this
local value;

if game.GameId == 1958807588 then --// hood modded


value = player.Information.KO.Value;
else --// real dahood
local bodyeffects =
player.Character:FindFirstChild("BodyEffects");
value = bodyeffects and bodyeffects["K.O"].Value or false;
end;

return value;
end);

dahood.get_gun = LPH_NO_VIRTUALIZE(function(player) --// TODO: ADD MORE


SUPPORT FOR DIFFERENT HOOD GAMES
local info;

--// character check


if (not (utility.has_character(player))) then return end;

local tool = player.Character:FindFirstChildWhichIsA("Tool");

--// tool check


if (not (tool)) then return end;

--// main code


local descendants = tool:GetDescendants();

for i = 1, #descendants do
local object = descendants[i];

if (object.Name:lower():find("ammo") and not


object.Name:lower():find("max") and (object.ClassName == "IntValue" or
object.ClassName == "NumberValue")) then
info = {};
info.ammo = object;
info.tool = tool;
end;
end;

return info;
end);

dahood.is_grabbed = LPH_NO_VIRTUALIZE(function(player)
return player.Character:FindFirstChild("GRABBING_CONSTRAINT") ~= nil;
end);
end;

--// combat functions


local combat = {}; do
combat.get_closest_body_part = LPH_NO_VIRTUALIZE(function(player)
local closest_body_part;
local mouse_position = user_input_service:GetMouseLocation();
local radius = math.huge;

local children = player.Character:GetChildren();

for i = 1, #children do
local part = children[i];
if (part.ClassName ~= "MeshPart") then continue end;

local part_position = utility.world_to_screen(part.Position);


local distance = (mouse_position -
part_position.position).Magnitude;

if (distance <= radius) then


radius = distance;
closest_body_part = part;
end;
end;

return closest_body_part;
end);
combat.get_closest_player = LPH_NO_VIRTUALIZE(function(fov_enabled,
fov_radius, checks_enabled, check_values)
--// locals
local mouse_position = user_input_service:GetMouseLocation();
local radius = fov_enabled and (fov_radius * 3) or math.huge;
local closest_player;

--// main loop


local players = players:GetPlayers();
for i = 1 , #players do
local player = players[i];
if (player == local_player) then continue end;

if (not (utility.has_character(player))) then continue end;

local root_part =
player.Character:FindFirstChild("HumanoidRootPart");

if (not (root_part)) then continue end;

local root_position =
utility.world_to_screen(root_part.Position);

if (not (root_position.on_screen)) then continue end;

if (checks_enabled and (
table.find(check_values, "Vehicle") and
dahood.is_on_vehicle(player) or
table.find(check_values, "Knocked") and
dahood.is_knocked(player) or
table.find(check_values, "Grabbed") and
dahood.is_grabbed(player) or
table.find(check_values, "Friend") and
utility.is_friends_with(player) or
table.find(check_values, "Wall") and
utility.is_player_behind_a_wall(player)
)) then continue end;

local distance = (mouse_position -


root_position.position).Magnitude;

if (distance <= radius) then


radius = distance;
closest_player = player;
end;
end;

return closest_player;
end);

combat.resolve = function(player, method, update_time)


if (not utility.has_character(player)) then return Vector3.new(0, 0, 0)
end;

local actual_update_time = update_time or 100;


local velocity;

if (method == "Recalculate") then


velocity =
custom_math.recalculate_velocity(player.Character.HumanoidRootPart,
actual_update_time);
elseif (method == "MoveDirection") then
velocity = (player.Character.Humanoid.MoveDirection *
player.Character.Humanoid.WalkSpeed);
end;

return velocity;
end;

combat.get_random_body_part = function(player)
local children = player.Character:GetChildren();
local mesh_parts = {};

for i = 1, #children do
local object = children[i];
if (object.ClassName ~= "MeshPart") then continue end;

table.insert(mesh_parts, object);
end;

return mesh_parts[math.random(1, #mesh_parts)];


end;
end;

--// assist functions


local assist = {}; do
assist.get_predicted_position = function()
--// locals
local target = locals.assist.target;

--// settings
local aim_part = flags["legit_assist_part"];
local prediction = flags["legit_assist_prediction"];
local shake_enabled = flags["legit_assist_shake_enabled"];
local shake_amount = flags["legit_assist_shake_amount"];
local anti_ground_shots_enabled =
flags["legit_assist_anti_ground_shots"];
local to_take_off = flags["legit_assist_anti_ground_shots_to_take_off"]
/ 10; --// will convert 2 to 0.2 as an example
local use_air_aim_part = flags["legit_assist_use_air_hit_part"];
local air_aim_part = flags["legit_assist_air_part"];
local resolver_enabled = flags["legit_assist_resolver"];
local resolver_method = flags["legit_assist_resolver_method"];
local resolve_update_time = flags["legit_assist_resolver_update_time"];

--// instances
local root_part = target.Character.HumanoidRootPart;
local aim_part_instance = target.Character:FindFirstChild(aim_part);

--// vars
local velocity = resolver_enabled and combat.resolve(target,
resolver_method, resolve_update_time) or root_part.Velocity;

--// velocity modifactions


if (anti_ground_shots_enabled and (utility.is_in_air(target))) then
velocity = Vector3.new(velocity.X, math.abs(velocity.Y *
to_take_off), velocity.Z);
end;

--// aim part modifactions


if (use_air_aim_part and (utility.is_in_air(target))) then
aim_part_instance =
target.Character:FindFirstChild(air_aim_part);
end;

--// main
local predicted_position = (aim_part_instance.Position + velocity *
prediction);

--// position modifactions


if (shake_enabled) then
predicted_position = predicted_position +
custom_math.random_vector3(shake_amount);
end;

--// end
return predicted_position;
end;

assist.move_mouse = function(position, smoothing)


local mouse_position = user_input_service:GetMouseLocation();

mousemoverel((position.X - mouse_position.X) / smoothing, (position.Y -


mouse_position.Y) / smoothing);
end;
end;
--// silent aim functions
local silent_aim = {} do
silent_aim.get_predicted_position = function()
--// locals
local target = locals.silent_aim.target;

--// settings
local aim_part = flags["legit_silent_aim_part"];
local closest_body_part_enabled =
flags["legit_silent_closest_body_part"];
local prediction = flags["legit_silent_prediction"];
local anti_ground_shots_enabled =
flags["legit_silent_anti_ground_shots"];
local to_take_off = flags["legit_silent_anti_ground_shots_to_take_off"]
/ 10;
local use_air_aim_part = flags["legit_silent_use_air_hit_part"];
local air_aim_part = flags["legit_silent_air_aim_part"];
local resolver_enabled = flags["legit_silent_resolver"];
local resolver_method = flags["legit_silent_resolver_method"];
local update_time = flags["legit_silent_resolver_update_time"];

--// instances
local root_part = target.Character.HumanoidRootPart;
local aim_part_instance = closest_body_part_enabled and
combat.get_closest_body_part(target) or target.Character:FindFirstChild(aim_part);

--// vars
local velocity = resolver_enabled and combat.resolve(target,
resolver_method, update_time) or root_part.Velocity;
--// velocity modifactions
if (anti_ground_shots_enabled and (utility.is_in_air(target))) then
velocity = Vector3.new(velocity.X, math.abs(velocity.Y *
to_take_off), velocity.Z);
end;

--// aim part modifactions


if (use_air_aim_part and (utility.is_in_air(target))) then
aim_part_instance =
target.Character:FindFirstChild(air_aim_part);
end;

--// main
local predicted_position = (aim_part_instance.Position + velocity *
prediction);

--// end
return game.PlaceId == hood_customs and predicted_position +
Vector3.new(25, 100, 25) or predicted_position
end;
end;

--// target aim functions


local target_aim = {}; do
target_aim.get_predicted_position = function()
--// locals
local target = locals.target_aim.target;

--// settings
local aim_part = flags["rage_target_aim_aim_part"];
local closest_body_part_enabled =
flags["rage_target_aim_closest_body_part"];
local prediction = flags["rage_target_aim_prediction"];
local resolver_enabled = flags["rage_target_aim_resolver_enabled"];
local resolver_method = flags["rage_target_aim_resolver_method"];
local anti_ground_shots_enabled =
flags["rage_target_aim_anti_ground_shots"];
local dampening_factor = flags["rage_target_aim_dampening_factor"];
local use_air_aim_part = flags["rage_target_aim_use_air_hit_part"];
local air_aim_part = flags["rage_target_aim_air_aim_part"];
local use_air_offset = flags["rage_target_aim_use_air_offset"];
local air_offset = flags["rage_target_aim_air_offset"] / 100; --// will
convert 4 to 0.04 as am example
local update_time = flags["rage_target_aim_update_time"];
local random_body_part_enabled =
flags["rage_target_aim_randomized_body_part"];
--local movement_simulation =
flags["rage_target_aim_movement_simulation"];

--// instances
local root_part = target.Character.HumanoidRootPart;
local aim_part_instance = closest_body_part_enabled and
combat.get_closest_body_part(target) or target.Character:FindFirstChild(aim_part);

--// random body part


if (random_body_part_enabled) then
aim_part_instance = combat.get_random_body_part(target);
end;
--// vars
local velocity = resolver_enabled and combat.resolve(target,
resolver_method, update_time) or root_part.Velocity;
local is_in_air = utility.is_in_air(target);

if (anti_ground_shots_enabled and is_in_air) then


local going_down = velocity:Dot(Vector3.new(0, -1, 0));
if going_down > 0.05 then
velocity *= Vector3.new(1, dampening_factor, 1);
end;
end;

--// aim part modifactions


if (use_air_aim_part and (is_in_air)) then
aim_part_instance =
target.Character:FindFirstChild(air_aim_part);
end;

--// main
local predicted_position = (aim_part_instance.Position + velocity *
prediction);

--// offsets
if (use_air_offset and (is_in_air)) then
predicted_position = predicted_position + Vector3.new(0,
air_offset, 0);
end;

--// end
return game.PlaceId == hood_customs and predicted_position +
Vector3.new(25, 100, 25) or predicted_position;
end;
end;

--// hit effects


local hit_effects = {}; do
hit_effects.confetti = function(position) --// credits to xander
local part = utility.instance_new("Part", {
Position = position,
Anchored = true,
Transparency = 1,
CanCollide = false,
Parent = workspace
});

for i = 1, 5 do
local particle1 = utility.instance_new("ParticleEmitter", {
Acceleration = Vector3.new(0,-10,0);
Color =
ColorSequence.new{ColorSequenceKeypoint.new(0,Color3.new(0,1,0.886275)),ColorSequen
ceKeypoint.new(1,Color3.new(0,1,0.886275))};
Lifetime = NumberRange.new(1,2);
Rate = 0;
RotSpeed = NumberRange.new(260,260);
Size =
NumberSequence.new{NumberSequenceKeypoint.new(0,0.1,0),NumberSequenceKeypoint.new(1
,0.1,0)};
Speed = NumberRange.new(15,15);
SpreadAngle = Vector2.new(360,360);
Texture = "http://www.roblox.com/asset/?id=241685484";
Parent = part
});
local particle2 = utility.instance_new("ParticleEmitter", {
Acceleration = Vector3.new(0,-10,0);
Color =
ColorSequence.new{ColorSequenceKeypoint.new(0,Color3.new(0,0.0980392,1)),ColorSeque
nceKeypoint.new(1,Color3.new(0,0,1))};
Lifetime = NumberRange.new(1,2);
Rate = 0;
RotSpeed = NumberRange.new(260,260);
Size =
NumberSequence.new{NumberSequenceKeypoint.new(0,0.1,0),NumberSequenceKeypoint.new(1
,0.1,0)};
Speed = NumberRange.new(15,15);
SpreadAngle = Vector2.new(360,360);
Texture = "http://www.roblox.com/asset/?id=241685484]";
Parent = part
});
local particle3 = utility.instance_new("ParticleEmitter", {
Acceleration = Vector3.new(0,-10,0);
Color =
ColorSequence.new{ColorSequenceKeypoint.new(0,Color3.new(0.901961,1,0)),ColorSequen
ceKeypoint.new(1,Color3.new(1,0.933333,0))};
Lifetime = NumberRange.new(1,2);
Rate = 0;
RotSpeed = NumberRange.new(260,260);
Size =
NumberSequence.new{NumberSequenceKeypoint.new(0,0.1,0),NumberSequenceKeypoint.new(1
,0.1,0)};
Speed = NumberRange.new(15,15);
SpreadAngle = Vector2.new(360,360);
Texture = "http://www.roblox.com/asset/?id=24168548";
Parent = part
});
local particle4 = utility.instance_new("ParticleEmitter", {
Acceleration = Vector3.new(0,-10,0);
Color =
ColorSequence.new{ColorSequenceKeypoint.new(0,Color3.new(0.180392,1,0)),ColorSequen
ceKeypoint.new(1,Color3.new(0.180392,1,0))};
Lifetime = NumberRange.new(1,2);
Rate = 0;
RotSpeed = NumberRange.new(260,260);
Size =
NumberSequence.new{NumberSequenceKeypoint.new(0,0.1,0),NumberSequenceKeypoint.new(1
,0.1,0)};
Speed = NumberRange.new(15,15);
SpreadAngle = Vector2.new(360,360);
Texture = "http://www.roblox.com/asset/?id=241685484";
Parent = part
});
local particle5 = utility.instance_new("ParticleEmitter", {
Acceleration = Vector3.new(0,-10,0);
Color =
ColorSequence.new{ColorSequenceKeypoint.new(0,Color3.new(1,0,0)),ColorSequenceKeypo
int.new(1,Color3.new(1,0,0))};
Lifetime = NumberRange.new(1,2);
Rate = 0;
RotSpeed = NumberRange.new(260,260);
Size =
NumberSequence.new{NumberSequenceKeypoint.new(0,0.1,0),NumberSequenceKeypoint.new(1
,0.1,0)};
Speed = NumberRange.new(15,15);
SpreadAngle = Vector2.new(360,360);
Texture = "http://www.roblox.com/asset/?id=241685484";
Parent = part
});
end;

local objects = part:GetChildren();

for i = 1, #objects do
local object = objects[i];

if (object.ClassName ~= "ParticleEmitter") then continue end;

object:Emit(1);
end;

task.delay(3, function()
part:Destroy();
end);
end;

hit_effects.bubble = function(position, color) --// credits to xander once


again
local part = utility.instance_new("Part", {
Position = position,
Anchored = true,
Transparency = 1,
CanCollide = false,
Parent = workspace
});

local particle1 = utility.instance_new("ParticleEmitter", {


Color =
ColorSequence.new{ColorSequenceKeypoint.new(0,color),ColorSequenceKeypoint.new(1,co
lor)};
Lifetime = NumberRange.new(0.5,0.5);
LightEmission = 1;
LockedToPart = true;
Orientation = Enum.ParticleOrientation.VelocityPerpendicular;
Rate = 0;
Size =
NumberSequence.new{NumberSequenceKeypoint.new(0,0,0),NumberSequenceKeypoint.new(1,1
0,0)};
Speed = NumberRange.new(1.5,1.5);
Texture = "rbxassetid://1084991215";
Transparency =
NumberSequence.new{NumberSequenceKeypoint.new(0,1,0),NumberSequenceKeypoint.new(0.0
996047,0,0),NumberSequenceKeypoint.new(0.602372,0,0),NumberSequenceKeypoint.new(1,1
,0)};
ZOffset = 1;
Parent = part
});
local particle2 = utility.instance_new("ParticleEmitter", {
Color =
ColorSequence.new{ColorSequenceKeypoint.new(0,color),ColorSequenceKeypoint.new(1,co
lor)};
Lifetime = NumberRange.new(0.5,0.5);
LightEmission = 1;
LockedToPart = true;
Rate = 0;
Size =
NumberSequence.new{NumberSequenceKeypoint.new(0,0,0),NumberSequenceKeypoint.new(1,1
0,0)};
Speed = NumberRange.new(0,0);
Texture = "rbxassetid://1084991215";
Transparency =
NumberSequence.new{NumberSequenceKeypoint.new(0,1,0),NumberSequenceKeypoint.new(0.0
996047,0,0),NumberSequenceKeypoint.new(0.601581,0,0),NumberSequenceKeypoint.new(1,1
,0)};
ZOffset = 1;
Parent = part
});
local particle3 = utility.instance_new("ParticleEmitter", {
Color =
ColorSequence.new{ColorSequenceKeypoint.new(0,Color3.new(0,0,0)),ColorSequenceKeypo
int.new(1,Color3.new(0,0,0))};
Lifetime = NumberRange.new(0.2,0.5);
LockedToPart = true;
Orientation = Enum.ParticleOrientation.VelocityParallel;
Rate = 0;
Rotation = NumberRange.new(-90,90);
Size =
NumberSequence.new{NumberSequenceKeypoint.new(0,1,0),NumberSequenceKeypoint.new(1,8
.5,1.5)};
Speed = NumberRange.new(0.1,0.1);
SpreadAngle = Vector2.new(180,180);
Texture = "http://www.roblox.com/asset/?id=6820680001";
Transparency =
NumberSequence.new{NumberSequenceKeypoint.new(0,1,0),NumberSequenceKeypoint.new(0.2
00791,0,0),NumberSequenceKeypoint.new(0.699605,0,0),NumberSequenceKeypoint.new(1,1,
0)};
ZOffset = 1.5;
Parent = part
});

particle1:Emit(1);
particle2:Emit(1);
particle3:Emit(1);

task.delay(1, function()
part:Destroy();
end);
end;
end;

local features = {}; do


features.local_material = function(state, material)
local children = local_player.Character:GetDescendants();
for i = 1, #children do
local child = children[i];
if (child.ClassName == "MeshPart") then
child.Material = Enum.Material[state and material or
"Plastic"];
end;
end;
end;

features.get_text = function(original_text)
local args = {
["display_name"] = local_player.DisplayName,
["name"] = local_player.Name,
["target_name"] = locals.target_aim.is_targetting and
locals.target_aim.target.Name or "None"
};

for arg, name in args do


original_text = original_text:gsub("%${" .. arg .. "}", name);
end;

return original_text
end;

features.update_c_sync_char = function(desynced_pos, color)


if not instances.c_sync_chams then return end;
if not utility.has_character(local_player) then return end;

local parts = instances.c_sync_chams:GetChildren();


local hrp = local_player.Character:FindFirstChild("HumanoidRootPart");

if not hrp then return end;

for i = 1, #parts do
local part = parts[i];
local actual_part =
local_player.Character:FindFirstChild(part.Name);

if not actual_part then continue end;


if part.Name == "HumanoidRootPart" then continue end;

if part.ClassName == "MeshPart" then


part.CFrame = actual_part.CFrame;
part.Anchored = true;
part.CanCollide = false;
part.Color = color;
end;
end;

instances.c_sync_chams:SetPrimaryPartCFrame(desynced_pos);
end;
end;

--// drawing objects


do
--// assist
do
--// assist fov
drawings["assist_fov_outside"] = utility.drawing_new("Circle", {
Visible = false,
Color = default_color,
ZIndex = 9e9
});
drawings["assist_fov_inside"] = utility.drawing_new("Circle", {
Visible = false,
Filled = true,
Color = default_color,
ZIndex = 9e9
});
end;

--// silent aim


do
--// silent fov
drawings["silent_fov_outside"] = utility.drawing_new("Circle", {
Visible = false,
Color = default_color,
ZIndex = 9e9
});

drawings["silent_fov_inside"] = utility.drawing_new("Circle", {
Visible = false,
Filled = true,
Color = default_color,
ZIndex = 9e9
});

--// target tracer


drawings["silent_tracer"] = utility.drawing_new("Line", {
Visible = false,
Color = default_color,
Thickness = 2
});
end;

--// target aim


do
drawings["target_fov_outside"] = utility.drawing_new("Circle", {
Visible = false,
Color = default_color,
ZIndex = 9e9
});

drawings["target_fov_inside"] = utility.drawing_new("Circle", {
Visible = false,
Filled = true,
Color = default_color,
ZIndex = 9e9
});

drawings["target_tracer"] = utility.drawing_new("Line", {
Visible = false,
Color = default_color,
Thickness = 2
});

drawings["target_dot"] = utility.drawing_new("Circle", {
Filled = true
});
end;

--// c sync
do
drawings["c_sync_dot"] = utility.drawing_new("Circle", {
Visible = false,
Filled = true
});

drawings["c_sync_tracer"] = utility.drawing_new("Line", {
Visible = false,
Color = default_color,
Thickness = 2
})
end;
end;

--// signals
do
signals["target_target_changed"] =
utility.create_connection("target_target_changed");
end;

--// instances
do
--// target aim
do
instances["target_chams"] = utility.instance_new("Highlight", {
FillColor = default_color,
OutlineColor = default_color,
OutlineTransparency = 0.5,
FillTransparency = 0.5
});
end;

--// local shit


do
instances["local_chams"] = utility.instance_new("Highlight", {
FillColor = default_color,
OutlineColor = Color3.new(0, 0, 0),
OutlineTransparency = 0.5,
FillTransparency = 0.5
});

instances["local_text"] = utility.instance_new("TextLabel", {
Name = "https://starhook.club",
Parent = screen_gui_2,
Text = '<font color="rgb(207, 227, 0)">starhook</font><font
color="rgb(255, 255, 255)">.club</font>',
BackgroundTransparency = 1,
BorderSizePixel = 0,
TextStrokeTransparency = 0.5,
Font = Enum.Font.SourceSans,
TextSize = 20,
RichText = true
});
end;

do
instances["target_ui"]["frame"] = utility.instance_new("Frame", {
Parent = screen_gui;
BackgroundColor3 = Color3.fromRGB(13, 13, 13);
BorderColor3 = Color3.fromRGB(0, 0, 0);
BorderSizePixel = 0;
Position = UDim2.new(0.405395985, 0, 0.644607842, 0);
Size = UDim2.new(0, 337, 0, 132);
});

instances["target_ui"]["ui_corner"] = utility.instance_new("UICorner", {
Parent = instances["target_ui"]["frame"];
});

instances["target_ui"]["ui_stroke"] = utility.instance_new("UIStroke", {
Parent = instances["target_ui"]["frame"];
Color = Color3.fromRGB(50, 50, 50);
});

instances["target_ui"]["image"] = utility.instance_new("Frame", {
Name = "Image";
Parent = instances["target_ui"]["frame"];
BackgroundColor3 = Color3.fromRGB(20, 20, 20);
BorderColor3 = Color3.fromRGB(0, 0, 0);
BorderSizePixel = 0;
Position = UDim2.new(0.0326409489, 0, 0.121212125, 0);
Size = UDim2.new(0, 100, 0, 100);
});

instances["target_ui"]["main_image"] = utility.instance_new("ImageLabel", {
Name = "MainImage";
Parent = instances["target_ui"]["image"];
BackgroundColor3 = Color3.fromRGB(255, 255, 255);
BackgroundTransparency = 1.0;
BorderColor3 = Color3.fromRGB(0, 0, 0);
BorderSizePixel = 0;
Size = UDim2.new(0, 100, 0, 100);
Image = "rbxthumb://type=AvatarHeadShot&id=5038007184&w=420&h=420";
});

instances["target_ui"]["ui_corner_2"] = utility.instance_new("UICorner", {
Parent = instances["target_ui"]["main_image"];
});

instances["target_ui"]["ui_corner_3"] = utility.instance_new("UICorner", {
Parent = instances["target_ui"]["image"];
});

instances["target_ui"]["ui_stroke_2"] = utility.instance_new("UIStroke", {
Parent = instances["target_ui"]["image"];
Color = Color3.fromRGB(35, 35, 35);
});

instances["target_ui"]["info"] = utility.instance_new("Frame", {
Name = "Info";
Parent = instances["target_ui"]["frame"];
BackgroundColor3 = Color3.fromRGB(20, 20, 20);
BorderColor3 = Color3.fromRGB(0, 0, 0);
BorderSizePixel = 0;
Position = UDim2.new(0.370919883, 0, 0.121212125, 0);
Size = UDim2.new(0, 202, 0, 100);
});
instances["target_ui"]["ui_corner_4"] = utility.instance_new("UICorner", {
Parent = instances["target_ui"]["info"];
});

instances["target_ui"]["ui_stroke_3"] = utility.instance_new("UIStroke", {
Parent = instances["target_ui"]["info"];
Color = Color3.fromRGB(35, 35, 35);
});

instances["target_ui"]["logo"] = utility.instance_new("ImageLabel", {
Name = "Logo";
Parent = instances["target_ui"]["info"];
BackgroundColor3 = Color3.fromRGB(207, 227, 0);
BackgroundTransparency = 1.0;
BorderColor3 = Color3.fromRGB(0, 0, 0);
BorderSizePixel = 0;
Position = UDim2.new(0.801597357, 0, -0.00666687032, 0);
Size = UDim2.new(0, 40, 0, 40);
Image = "http://www.roblox.com/asset/?id=18305816180";
});

instances["target_ui"]["player_name"] = utility.instance_new("TextLabel", {
Name = "PlayerName";
Parent = instances["target_ui"]["info"];
BackgroundColor3 = Color3.fromRGB(255, 255, 255);
BackgroundTransparency = 1.0;
BorderColor3 = Color3.fromRGB(0, 0, 0);
BorderSizePixel = 0;
Position = UDim2.new(0.0597032607, 0, 0, 0);
Size = UDim2.new(0, 115, 0, 39);
Font = Enum.Font.Roboto;
Text = "Linemaster";
TextColor3 = Color3.fromRGB(255, 255, 255);
TextScaled = true;
TextSize = 27.0;
TextStrokeTransparency = 0.0;
TextWrapped = true;
});

instances["target_ui"]["health"] = utility.instance_new("Frame", {
Name = "Health";
Parent = instances["target_ui"]["info"];
BackgroundColor3 = Color3.fromRGB(35, 35, 35);
BorderColor3 = Color3.fromRGB(0, 0, 0);
BorderSizePixel = 0;
Position = UDim2.new(0.0297029708, 0, 0.469999999, 0);
Size = UDim2.new(0, 143, 0, 13);
});

instances["target_ui"]["ui_corner_5"] = utility.instance_new("UICorner", {
Parent = instances["target_ui"]["health"];
});

instances["target_ui"]["health_inline"] = utility.instance_new("Frame", {
Name = "HealthInline";
Parent = instances["target_ui"]["health"];
BackgroundColor3 = Color3.fromRGB(207, 227, 0);
BorderColor3 = Color3.fromRGB(0, 0, 0);
BorderSizePixel = 0;
Position = UDim2.new(-0.00526097417, 0, 0.0769230798, 0);
Size = UDim2.new(0, 143, 0, 12);
});

instances["target_ui"]["ui_corner_6"] = utility.instance_new("UICorner", {
Parent = instances["target_ui"]["health_inline"];
});

instances["target_ui"]["armor"] = utility.instance_new("Frame", {
Name = "Armor";
Parent = instances["target_ui"]["info"];
BackgroundColor3 = Color3.fromRGB(35, 35, 35);
BorderColor3 = Color3.fromRGB(0, 0, 0);
BorderSizePixel = 0;
Position = UDim2.new(0.0299999993, 0, 0.699999988, 0);
Size = UDim2.new(0, 143, 0, 13);
});

instances["target_ui"]["ui_corner_7"] = utility.instance_new("UICorner", {
Parent = instances["target_ui"]["armor"];
});

instances["target_ui"]["armor_inline"] = utility.instance_new("Frame", {
Name = "ArmorInline";
Parent = instances["target_ui"]["armor"];
BackgroundColor3 = Color3.fromRGB(0, 140, 227);
BorderColor3 = Color3.fromRGB(0, 0, 0);
BorderSizePixel = 0;
Position = UDim2.new(-0.00526097417, 0, 0.0769230798, 0);
Size = UDim2.new(0, 143, 0, 12);
});

instances["target_ui"]["ui_corner_8"] = utility.instance_new("UICorner", {
Parent = instances["target_ui"]["armor_inline"];
});
end;

--// c sync
do
local cloned_char = utility.clone_character(local_player, 0.7,
default_color, "Neon", false);
cloned_char.PrimaryPart = cloned_char.HumanoidRootPart;
cloned_char.HumanoidRootPart.CanCollide = false;
instances["c_sync_chams"] = cloned_char
end;
end;

--// connections
do
--// addon library
do
script_addon.events["gun_activated"] =
utility.create_connection("gun_activated");
end;

local dragging = false;

--// target ui dragging


utility.new_connection(user_input_service.InputBegan, function(input,
is_typing)
if (not (input.UserInputType == Enum.UserInputType.MouseButton1)) then
return end;
if (not (custom_math.is_mouse_over_frame(instances["target_ui"]
["frame"]))) then return end;
if ((flags["rage_target_aim_ui_mode"] ~= "Static")) then return end;

dragging = true;
end);

utility.new_connection(user_input_service.InputEnded, function(input,
is_typing)
if (not (input.UserInputType == Enum.UserInputType.MouseButton1)) then
return end;

dragging = false;
end);

utility.new_connection(user_input_service.InputChanged, function(input)
if (not (input.UserInputType == Enum.UserInputType.MouseMovement)) then
return end;
if (not (dragging)) then return end;

local mouse_pos = user_input_service:GetMouseLocation();

local tween_info = TweenInfo.new(0.1, Enum.EasingStyle.Quad,


Enum.EasingDirection.Out);
local frame = instances["target_ui"]["frame"];

local tween = tween_service:Create(frame, tween_info, {Position =


UDim2.fromOffset(mouse_pos.X, mouse_pos.Y)});

tween:Play();
end);

do
--// assist connections
utility.new_connection(run_service.RenderStepped, function()
local assist_enabled = flags["legit_assist_enabled"];
local stutter_enabled = flags["legit_assist_stutter_enabled"];
local stutter_amount = flags["legit_assist_stutter_amount"];
local actual_stutter_amount = (stutter_amount / 15);
local fov_enabled = flags["legit_assist_settings_use_field_of_view"];

if (assist_enabled and (locals.assist.is_targetting and


locals.assist.target) and ((not stutter_enabled) or stutter_enabled and (tick() -
locals.old_ticks.assist_stutter_tick >= actual_stutter_amount))) then
local assist_type = flags["legit_assist_type"];
local smoothing = flags["legit_assist_smoothing_amount"];
local actual_smoothing = (1 / smoothing);
local smoothing_enabled = flags["legit_assist_smoothing_enabled"];

local position = assist.get_predicted_position();

if (assist_type) == "Camera" then


camera.CFrame = smoothing_enabled and
camera.CFrame:Lerp(CFrame.new(camera.CFrame.Position, position), actual_smoothing)
or CFrame.new(camera.CFrame.Position, position); --// also please note that i
wanted to use tweenservice but i hate tweenservice
elseif (assist_type) == "Mouse" then
local screen_position = utility.world_to_screen(position);
local actual_smoothing_mouse = smoothing_enabled and smoothing
or 7;
assist.move_mouse(screen_position.position,
actual_smoothing_mouse);
end;

locals.old_ticks.assist_stutter_tick = tick();
end;

if (assist_enabled and fov_enabled) then


local fov_radius =
(flags["legit_assist_settings_field_of_view_radius"] * 3);
local fov_color =
flags["legit_assist_settings_field_of_view_color"];
local fov_transparency =
flags["legit_assist_settings_field_of_view_transparency"];

--// outside fov


drawings.assist_fov_outside.Visible = true;
drawings.assist_fov_outside.Radius = fov_radius;
drawings.assist_fov_outside.Color = fov_color;
drawings.assist_fov_outside.Position =
user_input_service:GetMouseLocation();

--// inside
drawings.assist_fov_inside.Visible = true;
drawings.assist_fov_inside.Radius = fov_radius;
drawings.assist_fov_inside.Color = fov_color;
drawings.assist_fov_inside.Transparency = fov_transparency;
drawings.assist_fov_inside.Position =
user_input_service:GetMouseLocation();
else
if drawings.assist_fov_inside then
drawings.assist_fov_outside.Visible = false;
drawings.assist_fov_inside.Visible = false;
end;
end;
end);
end;

--// silent aim connections


do
utility.new_connection(run_service.RenderStepped, function()
--// settings
local silent_enabled = flags["legit_silent_enabled"];
local tracer_enabled = flags["legit_silent_aim_tracer_enabled"];
local fov_enabled = flags["legit_silent_use_field_of_view"];
local fov_visualize_enabled =
flags["legit_silent_visualize_field_of_view"];
local fov_radius = flags["legit_silent_field_of_view_radius"];
local checks_enabled = flags["legit_silent_use_checks"];
local check_values = flags["legit_silent_checks"];

if (silent_enabled) then
local new_target = combat.get_closest_player(fov_enabled,
fov_radius, checks_enabled, check_values);
if new_target ~= locals.silent_aim.target then
locals.silent_aim.target = new_target or nil;
end;

locals.silent_aim.is_targetting = new_target and true or false;


end;

if (silent_enabled and (locals.silent_aim.is_targetting and


locals.silent_aim.target)) then
locals.silent_aim.predicted_position =
silent_aim.get_predicted_position();
end;

if (silent_enabled and (fov_enabled and fov_visualize_enabled)) then


--// settings
local fov_color = flags["legit_silent_field_of_view_color"];
local fov_transparency =
flags["legit_silent_field_of_view_transparency"];

--// outside
drawings.silent_fov_outside.Visible = true;
drawings.silent_fov_outside.Radius = fov_radius * 3;
drawings.silent_fov_outside.Color = fov_color;
drawings.silent_fov_outside.Position =
user_input_service:GetMouseLocation();

--// inside
drawings.silent_fov_inside.Visible = true;
drawings.silent_fov_inside.Radius = fov_radius * 3;
drawings.silent_fov_inside.Color = fov_color;
drawings.silent_fov_inside.Transparency = fov_transparency;
drawings.silent_fov_inside.Position =
user_input_service:GetMouseLocation();
else
if drawings.silent_fov_inside.Visible then
drawings.silent_fov_outside.Visible = false;
drawings.silent_fov_inside.Visible = false;
end;
end;

if (silent_enabled and (tracer_enabled) and


(locals.silent_aim.is_targetting and locals.silent_aim.target)) then
local mouse_position = user_input_service:GetMouseLocation();
local predicted_position = utility.world_to_screen(game.PlaceId ==
hood_customs and locals.silent_aim.predicted_position - Vector3.new(25, 100, 25) or
locals.silent_aim.predicted_position);
local tracer_color = flags["legit_silent_aim_tracer_color"];
local tracer_thickness =
flags["legit_silent_aim_tracer_thickness"];
local tracer_transparency =
flags["legit_silent_aim_tracer_transparency"];

drawings.silent_tracer.Visible = predicted_position.on_screen;
drawings.silent_tracer.From = mouse_position;
drawings.silent_tracer.To = predicted_position.position;
drawings.silent_tracer.Color = tracer_color;
drawings.silent_tracer.Transparency = tracer_transparency;
drawings.silent_tracer.Thickness = tracer_thickness;
else
if drawings.silent_tracer.Visible then
drawings.silent_tracer.Visible = false;
end;
end;
end);
end;

--// rage connections


do
--// target aim connections
do
utility.new_connection(run_service.Heartbeat, function()
local target_aim_enabled = flags["rage_target_aim_enabled"];
local fov_enabled = flags["rage_target_aim_use_field_of_view"];
local fov_radius = flags["rage_target_aim_field_of_view_radius"];
local visualize_fov =
flags["rage_target_aim_visualize_field_of_view"];
local visuals_enabled = flags["rage_target_aim_visuals_enabled"];
local tracer_enabled = flags["rage_target_aim_tracer_enabled"];
local chams_enabled = flags["rage_target_aim_chams_enabled"];
local fov_transparency =
flags["rage_target_aim_field_of_view_transparency"];
local dot_enabled = flags["rage_target_aim_dot_enabled"];
local auto_shoot_enabled =
flags["rage_target_aim_auto_shoot"];
local look_at_enabled = flags["rage_target_aim_look_at"];
local ui_enabled =
flags["rage_target_aim_visuals_ui_enabled"];
local ui_type = flags["rage_target_aim_ui_mode"];

local target = locals.target_aim.target;


local is_targetting = locals.target_aim.is_targetting;

if (target_aim_enabled and (is_targetting and target)) then


locals.target_aim.predicted_position =
target_aim.get_predicted_position();
end;

if (target_aim_enabled and (fov_enabled and visualize_fov)) then


--// settings
local fov_color = flags["rage_target_aim_field_of_view_color"];

--// outside
drawings.target_fov_outside.Visible = true;
drawings.target_fov_outside.Radius = fov_radius * 3;
drawings.target_fov_outside.Color = fov_color;
drawings.target_fov_outside.Position =
user_input_service:GetMouseLocation();

--// inside
drawings.target_fov_inside.Visible = true;
drawings.target_fov_inside.Radius = fov_radius * 3;
drawings.target_fov_inside.Color = fov_color;
drawings.target_fov_inside.Transparency = fov_transparency;
drawings.target_fov_inside.Position =
user_input_service:GetMouseLocation();
else
if drawings.target_fov_outside.Visible then
drawings.target_fov_outside.Visible = false;
drawings.target_fov_inside.Visible = false;
end;
end;

if (target_aim_enabled and (visuals_enabled and ui_enabled)


and (is_targetting and target and utility.has_character(target))) then
local screen_pos =
utility.world_to_screen(target.Character.HumanoidRootPart.Position);

if (ui_type == "Follow") then


local tween_info = TweenInfo.new(0.1,
Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, 0, false, 0);
local tween =
tween_service:Create(instances["target_ui"]["frame"], tween_info, {Position =
UDim2.fromOffset(screen_pos.position.X, screen_pos.position.Y)});
tween:Play();
end;

local health_inline = instances["target_ui"]


["health_inline"];
local armor_inline = instances["target_ui"]
["armor_inline"];

local health_percent =
target.Character.Humanoid.Health / target.Character.Humanoid.MaxHealth;
health_inline.Size = UDim2.new(health_percent, 0, 1,
0);

local armor_percent = dahood.get_armor(target) / 100;


armor_inline.Size = UDim2.new(armor_percent, 0, 1,
0);
end;

if (target_aim_enabled and (visuals_enabled and


dot_enabled) and (is_targetting and target) and utility.has_character(target)) then
local predicted_position = utility.world_to_screen(game.PlaceId
== hood_customs and locals.target_aim.predicted_position - Vector3.new(25, 100, 25)
or locals.target_aim.predicted_position);
local dot_color = flags["rage_target_aim_dot_color"];
local dot_size = flags["rage_target_aim_dot_size"];

drawings.target_dot.Visible = predicted_position.on_screen;
drawings.target_dot.Position = predicted_position.position;
drawings.target_dot.Color = dot_color;
drawings.target_dot.Radius = dot_size;
else
if drawings.target_dot.Visible then
drawings.target_dot.Visible = false;
end;
end;

if (target_aim_enabled and (visuals_enabled and tracer_enabled) and


(is_targetting and target) and utility.has_character(target)) then
local mouse_position = user_input_service:GetMouseLocation();
local predicted_position = utility.world_to_screen(game.PlaceId
== hood_customs and locals.target_aim.predicted_position - Vector3.new(25, 100, 25)
or locals.target_aim.predicted_position);
local tracer_color = flags["rage_target_aim_tracer_color"];
local tracer_thickness =
flags["rage_target_aim_tracer_thickness"];

drawings.target_tracer.Visible = predicted_position.on_screen;
drawings.target_tracer.From = mouse_position;
drawings.target_tracer.To = predicted_position.position;
drawings.target_tracer.Color = tracer_color;
drawings.target_tracer.Thickness = tracer_thickness;
else
if drawings.target_tracer.Visible then
drawings.target_tracer.Visible = false;
end;
end;

if (target_aim_enabled and (visuals_enabled and chams_enabled) and


(is_targetting and target) and utility.has_character(target)) then
local fill_color = flags["rage_target_aim_chams_fill_color"];
local outline_color =
flags["rage_target_aim_chams_outline_color"];

instances.target_chams.Parent = target.Character;
instances.target_chams.OutlineColor = outline_color;
instances.target_chams.FillColor = fill_color;
else
instances.target_chams.Parent = nil;
end;

if ((target_aim_enabled and look_at_enabled) and


(is_targetting and target and utility.has_character(target))) then
local_player.Character.HumanoidRootPart.CFrame =
CFrame.new(local_player.Character.HumanoidRootPart.CFrame.Position,
Vector3.new(target.Character.HumanoidRootPart.CFrame.X,
local_player.Character.HumanoidRootPart.CFrame.Position.Y,
target.Character.HumanoidRootPart.CFrame.Z));
end;

if (target_aim_enabled and auto_shoot_enabled and


(is_targetting and target) and utility.has_character(target) and
locals.gun.current_tool and (tick() - locals.old_ticks.auto_shoot_tick >= 0.1))
then
local is_behind_wall =
utility.is_player_behind_a_wall(target);
local is_knocked = dahood.is_knocked(target);

if (not is_behind_wall or is_knocked) then


locals.gun.current_tool:Activate();
end;

locals.old_ticks.auto_shoot_tick = tick();
end;
end);

utility.new_connection(run_service.Heartbeat, function()
local target_aim_enabled = flags["rage_target_aim_enabled"];
local target_aim_teleport_enabled =
flags["rage_target_aim_teleport_enabled"];
local target_aim_teleport_keybind_active =
flags["rage_target_aim_teleport_keybind"];
local target_aim_teleport_destroy_cheaters_bypass =
flags["rage_target_aim_bypass_destroy_cheaters"];
local target = locals.target_aim.target;
local is_targetting = locals.target_aim.is_targetting;

if ((target_aim_enabled and target_aim_teleport_enabled and


target_aim_teleport_keybind_active) and (is_targetting and target and
utility.has_character(target)) and (not target_aim_teleport_destroy_cheaters_bypass
or target_aim_teleport_destroy_cheaters_bypass and
target.Character.HumanoidRootPart.CFrame.Position.Y >= -10000)) then
local target_aim_teleport_type =
flags["rage_target_aim_teleport_type"];
local target_aim_teleport_randomization =
flags["rage_target_aim_teleport_randomization"];
local target_aim_teleport_strafe_speed =
flags["rage_target_aim_teleport_strafe_speed"];
local target_aim_teleport_strafe_distance =
flags["rage_target_aim_teleport_strafe_distance"];
local target_aim_teleport_strafe_height =
flags["rage_target_aim_teleport_strafe_height"];

local cframe;

if (target_aim_teleport_type == "Random") then


cframe = target.Character.HumanoidRootPart.CFrame +
custom_math.random_vector3(target_aim_teleport_randomization);
elseif (target_aim_teleport_type == "Strafe") then
local current_time = tick();
cframe =
CFrame.new(target.Character.HumanoidRootPart.Position) * CFrame.Angles(0, 2 *
math.pi * current_time * target_aim_teleport_strafe_speed % (2 * math.pi), 0) *
CFrame.new(0, target_aim_teleport_strafe_height,
target_aim_teleport_strafe_distance);
end;

local_player.Character.HumanoidRootPart.CFrame = cframe;
end;
end);

--// target changed connection


utility.new_connection(signals.target_target_changed,
function(target, is_targetting)
local spectate_enabled = flags["rage_target_aim_spectate"];
local notify_enabled = flags["rage_target_aim_notify"];
local notify_duration =
flags["rage_target_aim_notify_duration"];
local ui_enabled =
flags["rage_target_aim_visuals_ui_enabled"];

if (spectate_enabled and (target and is_targetting)) then


camera.CameraSubject = target.Character.Humanoid;
else
camera.CameraSubject =
local_player.Character.Humanoid;
end;

if (notify_enabled) then
local message = is_targetting and
string.format("Targeting %s", target.DisplayName) or "Untargeting";
library:Notification(message, notify_duration);
end;
if (ui_enabled) then
screen_gui.Enabled = is_targetting;
instances["target_ui"]["player_name"].Text =
is_targetting and target.DisplayName or "None";
instances["target_ui"]["main_image"].Image =
is_targetting and players:GetUserThumbnailAsync(target.UserId,
Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size100x100) or
"rbxassetid://111122112";
end;
end);
end;

--// misc rage


do
utility.new_connection(run_service.Heartbeat, function(delta_time)
local cframe_speed_enabled = flags["rage_cframe_speed_enabled"];
local cframe_speed_keybind = flags["rage_cframe_speed_keybind"];
local no_jump_cooldown =
flags["rage_misc_movement_no_jump_cooldown"];
local cframe_fly_enabled =
flags["rage_cframe_fly_enabled"];
local cframe_fly_keybind =
flags["rage_cframe_fly_keybind"];
local cframe_fly_speed = flags["rage_cframe_fly_amount"];

if ((cframe_speed_enabled and cframe_speed_keybind) and


utility.has_character(local_player)) then
local speed = flags["rage_cframe_speed_amount"];
local root_part = local_player.Character.HumanoidRootPart;
local humanoid = local_player.Character.Humanoid;

root_part.CFrame = root_part.CFrame + humanoid.MoveDirection *


speed;
end;

if (cframe_fly_enabled and cframe_fly_keybind and


utility.has_character(local_player)) then --// credits to xander
local move_direction =
local_player.Character.Humanoid.MoveDirection;
local hrp = local_player.Character.HumanoidRootPart;

local add = Vector3.new(0,


(user_input_service:IsKeyDown(Enum.KeyCode.Space) and cframe_fly_speed / 8 or
user_input_service:IsKeyDown(Enum.KeyCode.LeftShift) and -cframe_fly_speed / 8) or
0, 0);

hrp.CFrame = hrp.CFrame + (move_direction *


delta_time) * cframe_fly_speed * 10;
hrp.CFrame = hrp.CFrame + add;
hrp.Velocity = (hrp.Velocity * Vector3.new(1, 0, 1))
+ Vector3.new(0, 1.9, 0);
end;

if (no_jump_cooldown and utility.has_character(local_player)) then


local_player.Character.Humanoid.UseJumpPower = false;
end;
end);
end;
--// visuals
do
utility.new_connection(run_service.Heartbeat, function()
local clone_chams_enabled =
flags["visuals_clone_chams_enabled"];
local clone_chams_duration =
flags["visuals_clone_chams_duration"]
local local_player_chams_enabled =
flags["visuals_player_chams_enabled"];
local local_player_chams_fill_color =
flags["visuals_player_chams_fill_color"];
local local_player_chams_outline_color =
flags["visuals_player_chams_outline_color"];

if (clone_chams_enabled and (tick() -


locals.old_ticks.clone_chams_tick >= clone_chams_duration)) then
locals.old_ticks.clone_chams_tick = tick();

local players_apply = {
["Local Player"] = local_player,
["Target Aim Target"] =
locals.target_aim.target
};

local to_apply_table =
flags["visuals_clone_chams_to_apply"]

for i = 1, #to_apply_table do
local to_apply = to_apply_table[i];
local player = players_apply[to_apply];
if (player) then
local color =
flags["visuals_clone_chams_color"];
local transparency =
flags["visuals_clone_chams_transparency"];

local model =
utility.clone_character(player, transparency, color, "ForceField", true);

task.delay(clone_chams_duration,
function()
model:Destroy();
end);
end;
end;
end;

if (local_player_chams_enabled and
utility.has_character(local_player)) then
instances.local_chams.Parent = local_player.Character
instances.local_chams.FillColor =
local_player_chams_fill_color;
instances.local_chams.OutlineColor =
local_player_chams_outline_color;
else
instances.local_chams.Parent = nil
end;
end);
utility.new_connection(run_service.Heartbeat, function()
local enabled = flags["visuals_text_enabled"];
local color = flags["visuals_text_color"]:ToHex();
local cursor_offset_y =
flags["visuals_text_cursor_offset"];
local custom_text =
flags["visuals_cursor_custom_text_text"];
local custom_text_enabled =
flags["visuals_text_custom_text"];

if (enabled) then
screen_gui_2.Enabled = true;
local text_label = instances["local_text"];
local mouse_position =
user_input_service:GetMouseLocation();
local actual_color = `#{color}`;
local text_color = actual_color ~= "#nil" and
actual_color or "#cfe300";

local text = custom_text_enabled and '<font


color="' .. text_color .. '">' .. features.get_text(custom_text) .. '</font>' or
'<font color="' .. text_color .. '">starhook</font><font color="rgb(255, 255,
255)">.club</font>';
text_label.Text = text;
text_label.Position = UDim2.new(0, mouse_position.X,
0, mouse_position.Y + cursor_offset_y);
else
screen_gui_2.Enabled = false;
end;
end);
end;

--// anti aim


do
--// velocity spoofer
utility.new_connection(run_service.Heartbeat, function()
local enabled = flags["anti_aim_velocity_spoofer_enabled"];
local keybind = flags["anti_aim_velocity_spoofer_keybind"];

if (enabled and keybind and


utility.has_character(local_player)) then
local type = flags["anti_aim_velocity_spoofer_type"];

local hrp = local_player.Character.HumanoidRootPart


local old_velocity = hrp.Velocity;

local new_velocity;

if (type == "Local Strafe") then


local strafe_speed =
flags["anti_aim_velocity_spoofer_strafe_speed"];
local strafe_distance =
flags["anti_aim_velocity_spoofer_strafe_distance"] * 10;
local current_time = tick();

new_velocity = Vector3.new(math.cos(2 * math.pi


* current_time * strafe_speed % (2 * math.pi)) * strafe_distance, 0, math.sin(2 *
math.pi * current_time * strafe_speed % (2 * math.pi)) * strafe_distance)
elseif (type == "Static") then
local x =
flags["anti_aim_velocity_spoofer_static_x"];
local y =
flags["anti_aim_velocity_spoofer_static_y"];
local z =
flags["anti_aim_velocity_spoofer_static_z"];

new_velocity = Vector3.new(x, y, z);


elseif (type == "Random") then
local randomization =
flags["anti_aim_velocity_spoofer_randomization"];

new_velocity =
custom_math.random_vector3(randomization * 1000);
end;

hrp.Velocity = new_velocity;
run_service.RenderStepped:Wait();
hrp.Velocity = old_velocity;
end;
end);

--// network desync


utility.new_connection(run_service.Heartbeat, function()
local enabled = flags["anti_aim_network_desync_enabled"];
local amount = flags["anti_aim_network_desync_amount"];

if (enabled and ((tick() -


locals.old_ticks.network_desync_tick) >= (amount / 1000))) then
locals.network_should_sleep = not
locals.network_should_sleep;

sethiddenproperty(local_player.Character.HumanoidRootPart,
"NetworkIsSleeping", locals.network_should_sleep);
locals.old_ticks.network_desync_tick = tick();
end;
end);

--// csynchoronioastions 🔥
utility.new_connection(run_service.Heartbeat, function()
local enabled = flags["anti_aim_c_sync_enabled"];
local keybind = flags["anti_aim_c_sync_keybind"];
local c_sync_type = flags["anti_aim_c_sync_type"];
local static_x = flags["anti_aim_c_sync_static_x"];
local static_y = flags["anti_aim_c_sync_static_y"];
local static_z = flags["anti_aim_c_sync_static_z"];
local randomization =
flags["anti_aim_c_sync_randomization"];
local visualize_enabled =
flags["anti_aim_c_sync_visualize_enabled"];
local visualize_types =
flags["anti_aim_c_sync_visualize_types"];
local visualize_color =
flags["anti_aim_c_sync_visualize_color"];
local visualize_dot_size =
flags["anti_aim_c_sync_dot_size"];

--// starhook classics


local classics_enabled =
flags["anti_aim_starhook_classics_enabled"];
local classics_keybind =
flags["anti_aim_starhook_classics_keybind"];
local classics_types = flags["anti_aim_starhook_classics"];

if ((enabled or classics_enabled) and (keybind or


classics_keybind) and (not (classics_keybind and classics_enabled and
classics_types == "supercoolboi34 Destroyer") or (classics_keybind and
classics_enabled and classics_types == "supercoolboi34 Destroyer"))) then
local hrp = local_player.Character.HumanoidRootPart;

local spoofed_cframe = hrp.CFrame;

local is_targetting =
(locals.target_aim.is_targetting and locals.target_aim.target);

local types = {
["Static Local"] = hrp.CFrame +
Vector3.new(static_x, static_y, static_z),
["Static Target"] = is_targetting and
locals.target_aim.target.Character.HumanoidRootPart.CFrame + Vector3.new(static_x,
static_y, static_z) or hrp.CFrame,
["Local Random"] = hrp.CFrame +
custom_math.random_vector3(randomization),
["Target Random"] = is_targetting and
locals.target_aim.target.Character.HumanoidRootPart.CFrame +
custom_math.random_vector3(randomization) or hrp.CFrame,
["Destroy Cheaters"] = hrp.CFrame +
Vector3.new(0 / 0, 1, math.huge),
["supercoolboi34 Destroyer"] =
locals.should_starhook_destroy and hrp.CFrame + Vector3.new(0 / 0, 1, math.huge) or
hrp.CFrame
};

local desync_type = (classics_enabled and


classics_keybind and (classics_types == "Destroy Cheaters" and types["Destroy
Cheaters"] or classics_types == "supercoolboi34 Destroyer" and
types["supercoolboi34 Destroyer"] or types[classics_types])) or (enabled and
keybind and types[c_sync_type]);

locals.original_position = hrp.CFrame;

if (visualize_enabled and table.find(visualize_types,


"Tracer") and typeof(desync_type) == "CFrame") then
local hrp_pos =
utility.world_to_screen(hrp.Position);
local desynced_pos =
utility.world_to_screen(desync_type.Position);

drawings.c_sync_tracer.Visible = true;
drawings.c_sync_tracer.From =
Vector2.new(hrp_pos.position.X, hrp_pos.position.Y);
drawings.c_sync_tracer.To =
Vector2.new(desynced_pos.position.X, desynced_pos.position.Y);
drawings.c_sync_tracer.Color = visualize_color;
else
drawings.c_sync_tracer.Visible = false;
end;

if (visualize_enabled and table.find(visualize_types,


"Dot") and typeof(desync_type) == "CFrame") then
local desynced_pos =
utility.world_to_screen(desync_type.Position);

drawings.c_sync_dot.Visible = true;
drawings.c_sync_dot.Color = visualize_color;
drawings.c_sync_dot.Position =
desynced_pos.position;
drawings.c_sync_dot.Radius =
visualize_dot_size;
else
drawings.c_sync_dot.Visible = false;
end;

if (visualize_enabled and table.find(visualize_types,


"Character") and typeof(desync_type) == "CFrame") then
instances.c_sync_chams.Parent = workspace;
features.update_c_sync_char(desync_type,
visualize_color);
else
if instances.c_sync_chams.Parent ~= nil then
instances.c_sync_chams.Parent = nil;
end;
end;

hrp.CFrame = desync_type;

run_service.RenderStepped:Wait();
hrp.CFrame = locals.original_position;
else
if instances.c_sync_chams.Parent ~= nil then
instances.c_sync_chams.Parent = nil;
end;
drawings.c_sync_tracer.Visible = false;
drawings.c_sync_dot.Visible = false;
end;
end);

task.spawn(function()
while task.wait(0.1) do
locals.should_starhook_destroy = not
locals.should_starhook_destroy;
end;
end);
end;
end;

--// rocket tp

if (table.find(dahood_ids, game.PlaceId)) then


utility.new_connection(workspace.Ignored.ChildAdded, function(object)
if (flags["rage_target_aim_enabled"] and
flags["rage_target_aim_rocket_tp_enabled"] and (locals.target_aim.is_targetting and
locals.target_aim.target) and utility.has_character(locals.target_aim.target) and
(object.Name == "Model" or object.Name == "GrenadeLauncherAmmo")) then
local is_grenade_launcher = object.Name ==
"GrenadeLauncherAmmo";
local target = locals.target_aim.target;

local part = is_grenade_launcher and


object:WaitForChild("Main") or object:WaitForChild("Launcher");

part.CFrame = CFrame.new(1, 1, 1);

if (not is_grenade_launcher) then


part.BodyVelocity:Destroy();
part.TouchInterest:Destroy();
end;

local connection =
utility.new_connection(run_service.Heartbeat, function()
if ((locals.target_aim.is_targetting and target) and
utility.has_character(target)) then
part.CFrame =
target.Character.HumanoidRootPart.CFrame;
part.Velocity = Vector3.new(0, 0.001, 0);
end;
end);

utility.new_connection(object.Destroying, function()
connection:Disconnect();
end);
end;
end);
end;

---// override
do
Library:Connection(run_service.RenderStepped, function()
local override_skybox = flags["override_world_skybox"]
local skyboxassetid = flags["override_world_skybox_rbxassetid"]

local override_character = flags["override_local_character"]


local custom_character = flags["custom_local_character_module"]

local no_slowdown = flags["override_anti_slowdown"]


local no_spread = flags["override_anti_spread"]
local no_recoil = flags["override_anti_recoil"]

if no_slowdown then
local Slowdowns =
LocalPlayer.Character.BodyEffects.Movement:FindFirstChild("NoJumping") or
LocalPlayer.Character.BodyEffects.Movement:FindFirstChild("ReduceWalk") or
LocalPlayer.Character.BodyEffects.Movement:FindFirstChild("NoWalkSpeed")

if Slowdowns then
Slowdowns:Destroy()
end

if LocalPlayer.Character.BodyEffects.Reload.Value then
LocalPlayer.Character.BodyEffects.Reload.Value =
false
end

if LocalPlayer.Character.BodyEffects.Reloading.Value then
LocalPlayer.Character.BodyEffects.Reloading.Value =
false
end
end

if no_slowdown then

end

if no_spread then

end

if override_skybox then
if lighting:FindFirstChildOfClass("Sky") then
local sky = lighting:FindFirstChildOfClass("Sky")
sky.SkyboxBk = "rbxassetid://" ..
AssetID.SkyBoxes[skyboxassetid][1]
sky.SkyboxDn = "rbxassetid://" ..
AssetID.SkyBoxes[skyboxassetid][2]
sky.SkyboxFt = "rbxassetid://" ..
AssetID.SkyBoxes[skyboxassetid][3]
sky.SkyboxLf = "rbxassetid://" ..
AssetID.SkyBoxes[skyboxassetid][4]
sky.SkyboxRt = "rbxassetid://" ..
AssetID.SkyBoxes[skyboxassetid][5]
sky.SkyboxUp = "rbxassetid://" ..
AssetID.SkyBoxes[skyboxassetid][6]
sky.Parent = lighting
end;
else
if lighting:FindFirstChildOfClass("Sky") then
local sky = lighting:FindFirstChildOfClass("Sky")
sky.SkyboxBk = "rbxassetid://" .. AssetID.SkyBoxes["Normal"]
[1]
sky.SkyboxDn = "rbxassetid://" .. AssetID.SkyBoxes["Normal"]
[2]
sky.SkyboxFt = "rbxassetid://" .. AssetID.SkyBoxes["Normal"]
[3]
sky.SkyboxLf = "rbxassetid://" .. AssetID.SkyBoxes["Normal"]
[4]
sky.SkyboxRt = "rbxassetid://" .. AssetID.SkyBoxes["Normal"]
[5]
sky.SkyboxUp = "rbxassetid://" .. AssetID.SkyBoxes["Normal"]
[6]
else
local sky = Instance.new("Sky")
sky.SkyboxBk = "rbxassetid://" .. AssetID.SkyBoxes["Normal"]
[1]
sky.SkyboxDn = "rbxassetid://" .. AssetID.SkyBoxes["Normal"]
[2]
sky.SkyboxFt = "rbxassetid://" .. AssetID.SkyBoxes["Normal"]
[3]
sky.SkyboxLf = "rbxassetid://" .. AssetID.SkyBoxes["Normal"]
[4]
sky.SkyboxRt = "rbxassetid://" .. AssetID.SkyBoxes["Normal"]
[5]
sky.SkyboxUp = "rbxassetid://" .. AssetID.SkyBoxes["Normal"]
[6]
sky.Parent = lighting
end;
end;

if override_character then
local character_name = flags["custom_local_character_module"]
if AssetID.Characters[character_name] then
local scale = AssetID.Characters[character_name][1]
local head_asset_id = AssetID.Characters[character_name][2]
local body_asset_id = AssetID.Characters[character_name][3]

local player = game.Players.LocalPlayer


if player.Character then
player.Character.Head.MeshId = "rbxassetid://" ..
head_asset_id
player.Character.Body.MeshId = "rbxassetid://" ..
body_asset_id

player.Character:SetPrimaryPartCFrame(player.Character.PrimaryPart.CFrame)

for _, part in pairs(player.Character:GetChildren()) do


if part:IsA("BasePart") then
part.Size = part.Size * scale
end;
end;
end;
end;
end;

end)
end;

--// gun connections


do
local get_closest_player = function(radius, position)
local actual_radius = radius;
local closest_player;

local all_players = players:GetPlayers();

for i = 1, #all_players do
local player = all_players[i];

if (player == local_player) then continue end;

if (not (utility.has_character(player))) then continue end;

local hrp = player.Character.HumanoidRootPart;


local distance = (hrp.Position - position).Magnitude;

if (distance <= actual_radius) then


actual_radius = distance;
closest_player = player;
end;
end;

return closest_player;
end;
local add_character = function(character)
--// main child added connection
utility.new_connection(character.ChildAdded, function(object)
local gun = dahood.get_gun(local_player);

if (not (gun)) then return end;

if object == gun.tool then


connections.gun["activated"] =
utility.new_connection(gun.tool.Activated, function()
script_addon.events["gun_activated"]:Fire();

if (flags["legit_silent_enabled"] and
flags["legit_silent_anti_aim_viewer"] and (locals.silent_aim.is_targetting and
locals.silent_aim.target)) then
remote:FireServer(mouse_argument,
locals.silent_aim.predicted_position);
end;

if (flags["legit_silent_enabled"] and not


flags["legit_silent_anti_aim_viewer"] and (locals.silent_aim.is_targetting and
locals.silent_aim.target)) then
remote:FireServer(mouse_argument,
locals.silent_aim.predicted_position);
end;

if (flags["rage_target_aim_enabled"] and
(locals.target_aim.is_targetting and locals.target_aim.target)) then
remote:FireServer(mouse_argument,
locals.target_aim.predicted_position);
end;
end);

connections.gun["shot"] =
utility.new_connection(gun.ammo.Changed, function()
local new_ammo = gun.ammo.Value;
if (new_ammo < locals.gun.previous_ammo) then
locals.gun.recently_shot = true;
task.wait();
locals.gun.recently_shot = false;
end;

locals.gun.previous_ammo = gun.ammo.Value;
end);
end;

locals.gun.current_tool = gun.tool;
end);

--// main child removed connection


utility.new_connection(character.ChildRemoved, function(object)
if object == locals.gun.current_tool then

local gun_connections = connections.gun;


for i = 1, #gun_connections do
local connection = gun_connections[i];
connection:Disconnect();
end;
connections.gun = {};
locals.gun.previous_ammo = 999;
locals.gun.current_tool = nil;
end;
end);
end;

utility.new_connection(local_player.CharacterAdded, function(character)
add_character(character);

character:WaitForChild("Humanoid");

local material = flags["visuals_player_material_type"];


local material_enabled =
flags["visuals_player_material_enabled"];

features.local_material(material_enabled, material);
end);

add_character(local_player.Character);

--// main bullets


if (bullet_path) then
child_added = utility.new_connection(bullet_path.ChildAdded,
function(object)
if object.name == bullet_name and locals.gun.recently_shot then
local gun_beam = object:WaitForChild(bullet_beam_name);
local start_pos, end_pos = object.Position,
gun_beam.Attachment1.WorldPosition;

local bullet_tracers_enabled =
flags["visuals_bullet_tracers_enabled"];
local bullet_impacts_enabled =
flags["visuals_bullet_impacts_enabled"];
local hit_detection_enabled =
flags["visuals_hit_detection_enabled"];

if (bullet_tracers_enabled) then
gun_beam:Destroy();
local gradient_color_1 =
flags["visuals_bullet_tracers_color_gradient_1"];
local gradient_color_2 =
flags["visuals_bullet_tracers_color_gradient_2"];
local duration = flags["visuals_bullet_tracers_duration"];
local fade_enabled =
flags["visuals_bullet_tracers_fade_enabled"];
local fade_duration =
flags["visuals_bullet_tracers_fade_duration"];

utility.create_beam(start_pos, end_pos, gradient_color_1,


gradient_color_2, duration, fade_enabled, fade_duration);
end;

if (bullet_impacts_enabled) then
local color_picker = flags["visuals_bullet_impacts_color"];
local size = flags["visuals_bullet_impacts_size"];
local duration = flags["visuals_bullet_impacts_duration"];
local fade_enabled =
flags["visuals_bullet_impacts_fade_enabled"];
local fade_duration =
flags["visuals_bullet_impacts_fade_duration"];
local color = color_picker;

utility.create_impact(color, size, fade_enabled,


fade_duration, duration, end_pos);
end;

if (hit_detection_enabled) then
local player = get_closest_player(10, end_pos);

task.wait();

local has_blood_splatter, part =


dahood.has_blood_splatter(player);

if (not (has_blood_splatter)) then return end;

local hit_sounds_enabled =
flags["visuals_hit_detection_sounds_enabled"];
local sound_to_play =
flags["visuals_hit_detection_sounds_which_sound"];
local sound_volume =
flags["visuals_hit_detection_sounds_volume"];
local chams_enabled =
flags["visuals_hit_detection_chams_enabled"];
local chams_color =
flags["visuals_hit_detection_chams_color"];
local chams_transparency =
flags["visuals_hit_detection_chams_transparency"];
local chams_duration =
flags["visuals_hit_detection_chams_duration"];
local effects_enabled =
flags["visuals_hit_detection_effects_enabled"];
local effects_color =
flags["visuals_hit_detection_effects_color"];
local effects_which =
flags["visuals_hit_detection_effects_which_effect"];
local notifications_enabled =
flags["visuals_hit_detection_notification"];
local notifications_duration =
flags["visuals_hit_detection_notification_duration"];

if (hit_sounds_enabled) then
local sound = hitsounds[sound_to_play];
utility.play_sound(sound_volume, sound);
end;

if (chams_enabled) then
local new_character =
utility.clone_character(player, chams_transparency, chams_color, "Neon");

task.delay(chams_duration, function()
new_character:Destroy();
end);
end;

if (effects_enabled) then
if (effects_which == "Bubble") then

hit_effects.bubble(player.Character.HumanoidRootPart.Position,
effects_color);
elseif (effects_which == "Confetti") then

hit_effects.confetti(player.Character.HumanoidRootPart.Position)
end;

end;

if (notifications_enabled) then
library:Notification(string.format("Hit
%s in %s", player.DisplayName, part.Name), notifications_duration);
end;
end;
end;
end);
end;
end;
end;

if (ESP) then
local esp = {}; do
esp.players = {};

esp.add_player = function(player)
local new_esp = {
box_outline = utility.drawing_new("Square", {
Thickness = 3,
Filled = false,
Visible = false
}),
box_inline = utility.drawing_new("Square", {
Thickness = 1,
Filled = false,
Visible = false
}),
name = utility.drawing_new("Text", {
Outline = true,
Center = true,
Size = 13,
Visible = false
}),
head_dot_outline = utility.drawing_new("Circle", {
Radius = 10,
Thickness = 3,
Visible = false,
Color = Color3.new(0, 0, 0)
}),
head_dot_inline = utility.drawing_new("Circle", {
Radius = 10,
Thickness = 1,
Visible = false
}),
health_bar_outline = utility.drawing_new("Line", {
Thickness = 3,
Visible = false,
Color = Color3.new(0, 0, 0)
}),
health_bar_inline = utility.drawing_new("Line", {
Thickness = 1,
Visible = false
}),
health_text = utility.drawing_new("Text", {
Color = Color3.new(1, 1, 1),
Size = 12,
Outline = true,
Center = true
}),
armor_bar_outline = utility.drawing_new("Line", {
Thickness = 3,
Visible = false,
Color = Color3.new(0, 0, 0)
}),
armor_bar_inline = utility.drawing_new("Line", {
Thickness = 1,
Visible = false
})
};

esp.players[player] = new_esp;
end;

esp.remove_player = function(player)
for _, drawing in esp.players[player] do
drawing:Remove();
end;

esp.players[player] = nil;
end;

utility.new_connection(players.PlayerAdded, function(player)
esp.add_player(player);
end);

utility.new_connection(players.PlayerRemoving, function(player)
esp.remove_player(player);
end);

local all_players = players:GetPlayers();

for i = 1, #all_players do
local player = all_players[i];

if (player == local_player) then continue end;

esp.add_player(player);
end;

utility.new_connection(run_service.Heartbeat, function()
--// Settings
local esp_enabled = flags["visuals_esp_enabled"];
local boxes_enabled = flags["visuals_esp_boxes_enabled"];
local boxes_color = flags["visuals_esp_boxes_color"];

local names_enabled = flags["visuals_esp_names_enabled"];


local names_color = flags["visuals_esp_names_color"];

local head_dots_enabled = flags["visuals_esp_head_dots_enabled"];


local head_dots_color = flags["visuals_esp_head_dots_color"];
local head_dots_sides = flags["visuals_esp_head_dots_sides"];
local head_dots_size = flags["visuals_esp_head_dots_size"];

local health_bar_enabled =
flags["visuals_esp_health_bar_enabled"];
local health_bar_health_based_color =
flags["visuals_esp_health_bar_health_based_color"];
local health_bar_color = flags["visuals_esp_health_bar_color"]

local health_text_enabled =
flags["visuals_esp_health_text_enabled"];
local health_text_color = flags["visuals_esp_health_text_color"];
local health_text_health_based_color =
flags["visuals_esp_health_text_health_based_color"];

local armor_bar_enabled = flags["visuals_esp_armor_bar_enabled"];

local armor_bar_color = flags["visuals_esp_armor_bar_color"];

local boxes_target_color_enabled =
flags["visuals_esp_boxes_target_color_enabled"];
local boxes_target_color =
flags["visuals_esp_boxes_target_color"];

-- boxes target
do
local boxestarget_toggle = legit_silent_aim:Toggle({Name =
"Armor Bar", Flag = "boxes_target_color_enabled"});
local boxestarget_option_list =
boxestarget_toggle:OptionList({});
boxestarget_option_list:Colorpicker({Name = "Color", Flag =
"boxes_target_color", Default = default_color});
end;

local players = esp.players;

for player, esp in players do


if (not (utility.has_character(player))) then continue end;

local character = player.Character;


local hrp = character:FindFirstChild("HumanoidRootPart");
local head = character:FindFirstChild("Head");

if (not (hrp)) then continue end;


if (not (head)) then continue end;

local screen_pos = utility.world_to_screen(hrp.Position);


local screen_pos_head =
utility.world_to_screen(head.Position);

local adjust_x = screen_pos.position.X -


(esp.box_inline.Size.X / 2);
local adjust_y = screen_pos.position.Y -
(esp.box_inline.Size.Y / 2);
local scale = 1000 / (camera.CFrame.Position -
hrp.Position).Magnitude;

local box_position = Vector2.new(adjust_x, adjust_y);


local box_size = Vector2.new(3 * scale, 4.5 * scale);

local outline_offset = -2;


local box_outline_size = Vector2.new(box_size.X +
outline_offset, box_size.Y + outline_offset);
local box_outline_position = Vector2.new(adjust_x -
(outline_offset / 2), adjust_y - (outline_offset / 2));

local target = locals.target_aim.target;


local is_targetting = locals.target_aim.is_targetting;

if (esp_enabled and boxes_enabled and screen_pos.on_screen)


then
esp.box_outline.Size = box_outline_size;
esp.box_outline.Position = box_outline_position;
esp.box_inline.Size = box_size;
esp.box_inline.Position = box_position;
esp.box_inline.Color = (boxes_target_color_enabled
and is_targetting and target == player) and boxes_target_color or boxes_color;
esp.box_inline.Visible = true;
esp.box_outline.Visible = true;
else
esp.box_inline.Visible = false;
esp.box_outline.Visible = false;
end;

if (esp_enabled and names_enabled and screen_pos.on_screen)


then
esp.name.Visible = true;
esp.name.Text = player.DisplayName;
esp.name.Position = Vector2.new(box_size.X / 2 +
box_position.X, box_position.Y - 16);
esp.name.Color = names_color;
else
esp.name.Visible = false;
end;

local head_dot_size = head_dots_size;


local head_dot_outline_size = head_dot_size + -1;

if (esp_enabled and head_dots_enabled and


screen_pos_head.on_screen) then
esp.head_dot_inline.Position =
screen_pos_head.position;
esp.head_dot_inline.Radius = head_dot_size;
esp.head_dot_inline.NumSides = head_dots_sides;
esp.head_dot_inline.Color = head_dots_color;
esp.head_dot_inline.Visible = true;

esp.head_dot_outline.Position =
screen_pos_head.position;
esp.head_dot_outline.Radius = head_dot_outline_size;
esp.head_dot_outline.NumSides = head_dots_sides;
esp.head_dot_outline.Visible = true;
else
esp.head_dot_outline.Visible = false;
esp.head_dot_inline.Visible = false;
end;

local health_percentage =
player.Character.Humanoid.Health / player.Character.Humanoid.MaxHealth;
local health_bar_height = health_percentage * box_size.Y +
1;

if (esp_enabled and health_bar_enabled and


screen_pos.on_screen) then
esp.health_bar_outline.Visible = true;
esp.health_bar_inline.Visible = true;

esp.health_bar_outline.From =
Vector2.new(box_position.X - 5, box_position.Y + box_size.Y + 1);
esp.health_bar_outline.To =
Vector2.new(esp.health_bar_outline.From.X, esp.health_bar_outline.From.Y -
box_size.Y - 2);
esp.health_bar_inline.From =
Vector2.new(box_position.X - 5, box_position.Y + box_size.Y) ;
esp.health_bar_inline.To = Vector2.new(box_position.X
- 5, box_position.Y + box_size.Y - health_bar_height);

if (health_bar_health_based_color) then
esp.health_bar_inline.Color = Color3.new(1, 0,
0):Lerp(Color3.new(0, 1, 0), health_percentage);
else
esp.health_bar_inline.Color = health_bar_color;
end;
else
esp.health_bar_outline.Visible = false;
esp.health_bar_inline.Visible = false;
end;

if (esp_enabled and health_text_enabled and


screen_pos.on_screen) then
esp.health_text.Visible = true;
esp.health_text.Text =
tostring(math.floor(player.Character.Humanoid.Health));
esp.health_text.Position = Vector2.new(box_position.X
- 5 - esp.health_text.TextBounds.X, box_position.Y + box_size.Y -
health_bar_height)

if (health_text_health_based_color) then
esp.health_text.Color = Color3.new(1, 0,
0):Lerp(Color3.new(0, 1, 0), health_percentage);
else
esp.health_text.Color = health_text_color;
end;
else
esp.health_text.Visible = false;
end;

if (esp_enabled and armor_bar_enabled and


screen_pos.on_screen) then
local armor_percentage = dahood.get_armor(player) /
100;
local max_bar_width = box_size.X - 2;
local armor_bar_width = math.clamp(armor_percentage *
max_bar_width, 0, max_bar_width);

esp.armor_bar_outline.Visible = true;
esp.armor_bar_inline.Visible = true;

esp.armor_bar_outline.From =
Vector2.new(box_position.X, box_position.Y + box_size.Y + 4);
esp.armor_bar_outline.To = Vector2.new(box_position.X
+ max_bar_width, box_position.Y + box_size.Y + 4);

esp.armor_bar_inline.From =
Vector2.new(box_position.X + 1, box_position.Y + box_size.Y + 4);
esp.armor_bar_inline.To = Vector2.new(box_position.X
+ 1 + armor_bar_width, box_position.Y + box_size.Y + 4);

esp.armor_bar_inline.Color = armor_bar_color;
else
esp.armor_bar_outline.Visible = false;
esp.armor_bar_inline.Visible = false;
end;
end;
end);
end;
end;

--// hooks
do
if (hookmetamethod) then
local __namecall; __namecall = hookmetamethod(game, "__namecall",
LPH_NO_VIRTUALIZE(function(self, ...)
local method, args = tostring(getnamecallmethod()), {...};

if (not checkcaller() and method == "FireServer" and


(typeof(args[1]) == "string" and typeof(args[2]) == "Vector3")) then
if (flags["legit_silent_enabled"] and not
flags["legit_silent_anti_aim_viewer"] and (locals.silent_aim.is_targetting and
locals.silent_aim.target)) then
args[2] = locals.silent_aim.predicted_position;
end;

if (flags["rage_target_aim_enabled"] and
(locals.target_aim.is_targetting and locals.target_aim.target)) then
args[2] = locals.target_aim.predicted_position;
end;

return __namecall(self, unpack(args));


end;

return __namecall(self, ...);


end));

local __newindex; __newindex = hookmetamethod(game, "__newindex",


LPH_NO_VIRTUALIZE(function(self, property, value)
local calling_script = getcallingscript();

if (not (checkcaller()) and (flags["rage_exploits_enabled"] and


flags["rage_exploits_no_recoil"]) and (calling_script == "Framework" or
calling_script == "F") and (self == camera and property == "CFrame")) then
return;
end;

return __newindex(self, property, value);


end));

local __index; __index = hookmetamethod(game, "__index",


LPH_NO_VIRTUALIZE(function(self, property)
if (not checkcaller() and ((((flags["anti_aim_c_sync_enabled"] or
(flags["anti_aim_starhook_classics_enabled"] and
(flags["anti_aim_starhook_classics"] == "Destroy Cheaters" or
flags["anti_aim_starhook_classics"] == "supercoolboi34 Destroyer"))) and
(flags["anti_aim_c_sync_keybind"] or flags["anti_aim_starhook_classics_keybind"])))
and property == "CFrame" and self == local_player.Character.HumanoidRootPart)) then
return locals.original_position;
end;

return __index(self, property);


end));
end;
end;

local LogoAccent = default_color -- eh

do
--// Example
local window = library:New({
Size = UDim2.new(0, 600, 0, 500),
Logo = "http://www.roblox.com/asset/?id=17673929618",
LogoRGB = LogoAccent
});

local watermark = library:Watermark({Name = ""});

window:Seperator({Name = "Combat"});
ui.tabs["legit"] = window:Page({Name = "Legit", Icon =
"http://www.roblox.com/asset/?id=6023426921"});
ui.tabs["rage"] = window:Page({Name = "Rage", "http://www.roblox.com/asset/?
id=6023426921"});
window:Seperator({Name = "Visuals"});
ui.tabs["world"] = window:Page({Name = "World", Icon =
"http://www.roblox.com/asset/?id=6034684930"});
ui.tabs["view"] = window:Page({Name = "View", Icon =
"http://www.roblox.com/asset/?id=6031075931"});
ui.tabs["override"] = window:Page({Name = "Override", Icon =
"http://www.roblox.com/asset/?id=7734022107"});
window:Seperator({Name = "Player"});
ui.tabs["movement"] = window:Page({Name = "Movement", Icon =
"http://www.roblox.com/asset/?id=6034754445"});
ui.tabs["anti_aim"] = window:Page({Name = "Anti Aim", Icon =
"http://www.roblox.com/asset/?id=14760676189"});
window:Seperator({Name = "Settings"});
ui.tabs["settings"] = window:Page({Name = "Settings", Icon =
"http://www.roblox.com/asset/?id=6031280882"});

--// legit
do
--// sections
local legit_main_assist = ui.tabs["legit"]:Section({Name = "Assist",
Side = "Left", Size = 420});
local legit_silent_aim = ui.tabs["legit"]:Section({Name = "Silent Aim",
Side = "Right", Size = 420});

--// main assist


do
--// main assist section
do
local main_toggle = legit_main_assist:Toggle({Name =
"Enabled", Flag = "legit_assist_enabled"});
local main_toggle_option_list = main_toggle:OptionList({});
main_toggle_option_list:List({Name = "Type", Flag =
"legit_assist_type", Options = {"Camera", "Mouse"}, Default = "Camera"});
main_toggle_option_list:List({Name = "Aim Part", Flag =
"legit_assist_part", Options = {"Head", "HumanoidRootPart", "UpperTorso",
"LowerTorso"}, Default = "HumanoidRootPart"});

legit_main_assist:Keybind({Flag = "legit_assist_key", Name


= "Target Bind", Default = Enum.KeyCode.E, Mode = "Toggle", Callback = function()
local assist_enabled = flags["legit_assist_enabled"];
local fov_enabled =
flags["legit_assist_settings_use_field_of_view"];
local fov_radius =
flags["legit_assist_settings_field_of_view_radius"];
local checks_enabled =
flags["legit_assist_checks_enabled"];
local check_values = flags["legit_assist_checks"];
local auto_switch_enabled =
flags["legit_assist_auto_switch"];

if (not (assist_enabled)) then return end;

local new_target =
combat.get_closest_player(fov_enabled, fov_radius, checks_enabled, check_values);

locals.assist.is_targetting = (new_target and not


locals.assist.is_targetting or false);

if (auto_switch_enabled and new_target and not


locals.assist.is_targetting) then
locals.assist.is_targetting = true;
end;

locals.assist.target = (locals.assist.is_targetting
and new_target or nil);
end});

local mouse_tp_toggle = legit_main_assist:Toggle({Name =


"Mouse TP", Flag = "legit_assist_mouse_tp_enabled"});

local option_list_mouse_tp =
mouse_tp_toggle:OptionList({});

option_list_mouse_tp:Keybind({Flag =
"legit_assist_mouse_tp_key", Name = "Keybind", Default = Enum.KeyCode.C, Mode =
"Toggle", Callback = function()
local assist_enabled = flags["legit_assist_enabled"];
local mouse_tp_enabled =
flags["legit_assist_mouse_tp_enabled"];

if (not (assist_enabled or mouse_tp_enabled or


(locals.assist.is_targetting and locals.assist.target))) then return end;

local predicted_position =
assist.get_predicted_position();
local screen_predicted_position =
utility.world_to_screen(predicted_position);
assist.move_mouse(screen_predicted_position.position,
5);
end});

local smoothing_toggle = legit_main_assist:Toggle({Name =


"Smoothing", Flag = "legit_assist_smoothing_enabled"});
local smoothing_option_list =
smoothing_toggle:OptionList({});
smoothing_option_list:Slider({Name = "Smoothing Amount",
Flag = "legit_assist_smoothing_amount", Default = 1, Minimum = 1, Maximum = 100,
Decimals = 0.01, Ending = "%"});

legit_main_assist:Toggle({Name = "Auto Switch", Flag =


"legit_assist_auto_switch"});

local air_aimpart_toggle = legit_main_assist:Toggle({Name =


"Air Aim Part", Flag = "legit_assist_use_air_hit_part"});
local air_aimpart_option_list =
air_aimpart_toggle:OptionList({});
air_aimpart_option_list:List({Name = "Air Aim Part", Flag =
"legit_assist_air_part", Options = {"Head", "HumanoidRootPart", "UpperTorso",
"LowerTorso"}, Default = "LowerTorso"});

local resolver_toggle = legit_main_assist:Toggle({Name =


"Resolver", Flag = "legit_assist_resolver"});
local resolve_option_list = resolver_toggle:OptionList({});
resolve_option_list:List({Name = "Method", Flag =
"legit_assist_resolver_method", Options = {"Recalculate", "MoveDirection"}, Default
= "Recalculate"});
resolve_option_list:Slider({Name = "Update Time", Flag =
"legit_assist_resolver_update_time", Default = 100, Minimum = 1, Maximum = 200,
Decimals = 0.001, Ending = "ms"});

local anti_ground_toggle = legit_main_assist:Toggle({Name =


"Anti Ground Shots", Flag = "legit_assist_anti_ground_shots"});
local anti_ground_option_list =
anti_ground_toggle:OptionList({});
anti_ground_option_list:Slider({Name = "To Take Off", Flag
= "legit_assist_anti_ground_shots_to_take_off", Default = 2, Minimum = 0.1, Maximum
= 10, Decimals = 0.01, Ending = "'"});

local stutter_toggle = legit_main_assist:Toggle({Name =


"Stutter", Flag = "legit_assist_stutter_enabled"});
local stutter_option_list = stutter_toggle:OptionList({});
stutter_option_list:Slider({Name = "Amount", Flag =
"legit_assist_stutter_amount", Default = 1, Minimum = 1, Maximum = 10, Decimals =
0.01, Ending = "s"});

local shake_toggle = legit_main_assist:Toggle({Name =


"Shake", Flag = "legit_assist_shake_enabled"});
local shake_option_list = shake_toggle:OptionList({});
shake_option_list:Slider({Name = "Amount", Flag =
"legit_assist_shake_amount", Default = 0.01, Minimum = 0.01, Maximum = 10, Decimals
= 0.001, Ending = "'"});

local checks_toggle = legit_main_assist:Toggle({Name =


"Checks", Flag = "legit_assist_checks_enabled"});
local checks_option_list = checks_toggle:OptionList({});
checks_option_list:List({Name = "Checks", Flag =
"legit_assist_checks", Options = {"Knocked", "Grabbed", "Friend", "Wall",
"Vehicle"}, Default = {"Knocked"}, Max = 5});

local fov_toggle = legit_main_assist:Toggle({Name = "Use


Field Of View", Flag = "legit_assist_settings_use_field_of_view"});
local fov_option_list = fov_toggle:OptionList({});

fov_option_list:Colorpicker({Name = "Color", Flag =


"legit_assist_settings_field_of_view_color", Default = default_color});
fov_option_list:Slider({Name = "Radius", Flag =
"legit_assist_settings_field_of_view_radius", Default = 1, Minimum = 1, Maximum =
200, Decimals = 0.01, Ending = "%"});
fov_option_list:Slider({Name = "Transparency", Flag =
"legit_assist_settings_field_of_view_transparency", Default = 0, Minimum = 0,
Maximum = 1, Decimals = 0.01, Ending = "%"});

legit_main_assist:Textbox({Name = "Prediction", Flag =


"legit_assist_prediction", Default = "0.134", PlaceHolder = "Prediction"});
end;

--// silent aim section


do
legit_silent_aim:Toggle({Name = "Enabled", Flag =
"legit_silent_enabled"});
legit_silent_aim:Toggle({Name = "Closest Body Part", Flag =
"legit_silent_closest_body_part"});
legit_silent_aim:Toggle({Name = "Anti Aim Viewer", Flag =
"legit_silent_anti_aim_viewer"});

local resolver_toggle = legit_silent_aim:Toggle({Name =


"Resolver", Flag = "legit_silent_resolver"});
local resolver_option_list =
resolver_toggle:OptionList({});
resolver_option_list:List({Name = "Method", Flag =
"legit_silent_resolver_method", Options = {"Recalculate", "MoveDirection"}, Default
= "Recalculate"});
resolver_option_list:Slider({Name = "Update Time", Flag =
"legit_silent_resolver_update_time", Default = 100, Minimum = 1, Maximum = 200,
Decimals = 0.001, Ending = "ms"});

local fov_toggle = legit_silent_aim:Toggle({Name = "Field


Of View", Flag = "legit_silent_use_field_of_view"});
local fov_option_list = fov_toggle:OptionList({});
fov_option_list:Toggle({Name = "Visualize", Flag =
"legit_silent_visualize_field_of_view"});
fov_option_list:Colorpicker({Name = "Color", Flag =
"legit_silent_field_of_view_color", Default = default_color});
fov_option_list:Slider({Name = "Transparency", Flag =
"legit_silent_field_of_view_transparency", Default = 0, Minimum = 0, Maximum = 1,
Decimals = 0.01, Ending = "%"});
fov_option_list:Slider({Name = "Radius", Flag =
"legit_silent_field_of_view_radius", Default = 1, Minimum = 1, Maximum = 200,
Decimals = 0.01, Ending = "%"});

local line_toggle = legit_silent_aim:Toggle({Name = "Line",


Flag = "legit_silent_aim_tracer_enabled"});
local line_option_list = line_toggle:OptionList({});
line_option_list:Colorpicker({Name = "Color", Flag =
"legit_silent_aim_tracer_color", Default = default_color});
line_option_list:Slider({Name = "Line Thickness", Flag =
"legit_silent_aim_tracer_thickness", Default = 2, Minimum = 1, Maximum = 5,
Decimals = 0.01, Ending = "%"});
line_option_list:Slider({Name = "Transparency", Flag =
"legit_silent_aim_tracer_transparency", Default = 1, Minimum = 0, Maximum = 1,
Decimals = 0.01, Ending = "%"});

local checks_toggle = legit_silent_aim:Toggle({Name =


"Checks", Flag = "legit_silent_use_checks"});
local checks_option_list = checks_toggle:OptionList({});
checks_option_list:List({Name = "Values", Flag =
"legit_silent_checks", Options = {"Knocked", "Grabbed", "Friend", "Wall",
"Vehicle"}, Default = {"Knocked"}, Max = 5});

local airpart_toggle = legit_silent_aim:Toggle({Name = "Use


Air Aim Part", Flag = "legit_silent_use_air_hit_part"});
local airpart_option_list = airpart_toggle:OptionList({});
airpart_option_list:List({Name = "Air Aim Part", Flag =
"legit_silent_air_aim_part", Options = {"Head", "HumanoidRootPart", "UpperTorso",
"LowerTorso"}, Default = "HumanoidRootPart"});

local antiground_toggle = legit_silent_aim:Toggle({Name =


"Anti Ground Shots", Flag = "legit_silent_anti_ground_shots"});
local antiground_option_list =
antiground_toggle:OptionList({});
antiground_option_list:Slider({Name = "To Take Off", Flag =
"legit_silent_anti_ground_shots_to_take_off", Default = 2, Minimum = 0.1, Maximum =
10, Decimals = 0.01, Ending = "'"});

legit_silent_aim:List({Name = "Aim Part", Flag =


"legit_silent_aim_part", Options = {"Head", "HumanoidRootPart", "UpperTorso",
"LowerTorso"}, Default = "HumanoidRootPart"});
legit_silent_aim:Textbox({Name = "Prediction", Flag =
"legit_silent_prediction", Default = "0.134", PlaceHolder = "Prediction"});
end;
end;
end;

--// rage
do
--// sections
local rage_main_target_aim = ui.tabs["rage"]:Section({Name = "Target
Aim", Side = "Left", Size = 427});
local rage_target_aim_visuals = ui.tabs["rage"]:Section({Name = "Target
Aim Visuals", Side = "Right", Size = 245});
local rage_target_aim_teleport = ui.tabs["rage"]:Section({Name =
"Target Aim Teleport", Side = "Right", Size = 175});
do
local main_toggle = rage_main_target_aim:Toggle({Name =
"Enabled", Flag = "rage_target_aim_enabled", Callback = function(state)
if state then return end;

screen_gui.Enabled = false;
end});
local main_toggle_option_list = main_toggle:OptionList({});
main_toggle_option_list:Toggle({Name = "Notify", Flag =
"rage_target_aim_notify"});
main_toggle_option_list:Slider({Name = "Notify Duration", Flag =
"rage_target_aim_notify_duration", Default = 2, Minimum = 1, Maximum = 10, Decimals
= 0.01, Ending = "s"});
main_toggle_option_list:Toggle({Name = "Auto Shoot", Flag =
"rage_target_aim_auto_shoot"});
main_toggle_option_list:Toggle({Name = "Look At", Flag =
"rage_target_aim_look_at"});
main_toggle_option_list:Toggle({Name = "Randomized BodyPart",
Flag = "rage_target_aim_randomized_body_part"});
main_toggle_option_list:Toggle({Name = "Movement Simulation",
Flag = "rage_target_aim_movement_simulation"});

rage_main_target_aim:Keybind({Flag = "rage_target_aim_key",
Default = Enum.KeyCode.E, Mode = "Toggle", Callback = function(key)
local target_aim_enabled =
flags["rage_target_aim_enabled"];
local checks_enabled = flags["rage_target_aim_use_checks"];
local check_values = flags["rage_target_aim_checks"];
local fov_enabled =
flags["rage_target_aim_use_field_of_view"];
local fov_radius =
flags["rage_target_aim_field_of_view_radius"];
local auto_switch = flags["rage_target_aim_auto_switch"];

if (not (target_aim_enabled)) then return end;

local new_target = combat.get_closest_player(fov_enabled,


fov_radius, checks_enabled, check_values);

locals.target_aim.is_targetting = (new_target and not


locals.target_aim.is_targetting or false);

if (auto_switch and new_target and not


locals.target_aim.is_targetting and locals.target_aim.target ~= new_target) then
locals.target_aim.is_targetting = true;
end;

locals.target_aim.target = (locals.target_aim.is_targetting
and new_target or nil);

signals.target_target_changed:Fire(locals.target_aim.target,
locals.target_aim.is_targetting);
end});

if (not table.find(dahood_ids, game.PlaceId)) then


rage_main_target_aim:Toggle({Name = "Bullet Tp", Flag =
"rage_target_aim_bullet_tp_enabled"});
else
rage_main_target_aim:Toggle({Name = "Rocket Tp", Flag =
"rage_target_aim_rocket_tp_enabled"});
end;

rage_main_target_aim:Toggle({Name = "Spectate", Flag =


"rage_target_aim_spectate"});
rage_main_target_aim:Toggle({Name = "Auto Switch", Flag =
"rage_target_aim_auto_switch"});
rage_main_target_aim:Toggle({Name = "Closest Body Part", Flag =
"rage_target_aim_closest_body_part"});

local air_part_toggle = rage_main_target_aim:Toggle({Name = "Use


Air Aim Part", Flag = "rage_target_aim_use_air_hit_part"});
local air_part_option_list = air_part_toggle:OptionList({});
air_part_option_list:List({Name = "Aim Part", Flag =
"rage_target_aim_air_aim_part", Options = {"Head", "HumanoidRootPart",
"UpperTorso", "LowerTorso"}, Default = "HumanoidRootPart"});
local air_offset_toggle = rage_main_target_aim:Toggle({Name =
"Air Offset", Flag = "rage_target_aim_use_air_offset"});
local air_offset_option_list = air_offset_toggle:OptionList({});
air_offset_option_list:Slider({Name = "Offset", Flag =
"rage_target_aim_air_offset", Default = 4, Minimum = -10, Maximum = 10, Decimals =
0.001, Ending = "'"});
local resolver_toggle = rage_main_target_aim:Toggle({Name =
"Resolver", Flag = "rage_target_aim_resolver_enabled"});
local resolver_option_list = resolver_toggle:OptionList({});
resolver_option_list:List({Name = "Method", Flag =
"rage_target_aim_resolver_method", Options = {"Recalculate", "MoveDirection"},
Default = "Recalculate"});
resolver_option_list:Slider({Name = "Update Time", Flag =
"rage_target_aim_update_time", Default = 100, Minimum = 1, Maximum = 200, Decimals
= 0.001, Ending = "ms"});
local checks_toggle = rage_main_target_aim:Toggle({Name =
"Checks", Flag = "rage_target_aim_use_checks"});
local checks_option_list = checks_toggle:OptionList({});
checks_option_list:List({Name = "Checks", Flag =
"rage_target_aim_checks", Options = {"Knocked", "Grabbed", "Friend", "Wall",
"Vehicle"}, Default = {"Knocked"}, Max = 5});
local anti_ground_toggle = rage_main_target_aim:Toggle({Name =
"Anti Ground Shots", Flag = "rage_target_aim_anti_ground_shots"});
local anti_ground_option_list =
anti_ground_toggle:OptionList({});
--// anti_ground_option_list:Slider({Name = "To Take Off", Flag =
"rage_target_aim_anti_ground_shots_to_take_off", Default = 2, Minimum = 0.1,
Maximum = 20, Decimals = 0.01, Ending = "'"});
anti_ground_option_list:Slider({Name = "Dampening Factor", Flag =
"rage_target_aim_dampening_factor", Default = 0.7, Minimum = 0, Maximum = 1,
Decimals = 0.01, Ending = ""});
local fov_toggle = rage_main_target_aim:Toggle({Name = "Field Of
View", Flag = "rage_target_aim_use_field_of_view"});
local fov_option_list = fov_toggle:OptionList({});
fov_option_list:Toggle({Name = "Visualize", Flag =
"rage_target_aim_visualize_field_of_view"});
fov_option_list:Colorpicker({Name = "Color", Flag =
"rage_target_aim_field_of_view_color", Default = default_color, Transparency = 0});
fov_option_list:Slider({Name = "Transparency", Flag =
"rage_target_aim_field_of_view_transparency", Default = 0, Minimum = 0, Maximum =
1, Decimals = 0.01, Ending = "%"});
fov_option_list:Slider({Name = "Radius", Flag =
"rage_target_aim_field_of_view_radius", Default = 1, Minimum = 1, Maximum = 200,
Decimals = 0.01, Ending = "%"});

rage_main_target_aim:Textbox({Name = "Prediction", Flag =


"rage_target_aim_prediction", Default = "0.134", PlaceHolder = "Prediction"});
rage_main_target_aim:List({Name = "Aim Part", Flag =
"rage_target_aim_aim_part", Options = {"Head", "HumanoidRootPart", "UpperTorso",
"LowerTorso"}, Default = "HumanoidRootPart"});
end;

--// target aim visuals


do
local main_toggle = rage_target_aim_visuals:Toggle({Name =
"Enabled", Flag = "rage_target_aim_visuals_enabled"});
local option_list_toggle = main_toggle:OptionList({});

option_list_toggle:Toggle({Name = "UI", Flag =


"rage_target_aim_visuals_ui_enabled", Callback = function(state)
if state then return end;

screen_gui.Enabled = false;
end});

option_list_toggle:List({Name = "UI Mode", Flag =


"rage_target_aim_ui_mode", Options = {"Follow", "Static"}, Default = "Static"});

rage_target_aim_visuals:Toggle({Name = "Line", Flag =


"rage_target_aim_tracer_enabled"});
local dot = rage_target_aim_visuals:Toggle({Name = "Dot", Flag =
"rage_target_aim_dot_enabled"});
local dot_option_list = dot:OptionList({});
dot_option_list:Colorpicker({Name = "Color", Flag =
"rage_target_aim_dot_color", Default = default_color, Transparency = 0});
dot_option_list:Slider({Name = "Size", Flag =
"rage_target_aim_dot_size", Default = 6, Minimum = 1, Maximum = 20, Decimals =
0.01, Ending = "%"});

rage_target_aim_visuals:Toggle({Name = "Chams", Flag =


"rage_target_aim_chams_enabled"});

rage_target_aim_visuals:Colorpicker({Name = "Line Color", Info =


"Target Aim Line Color", Flag = "rage_target_aim_tracer_color", Default =
default_color, Transparency = 1});

rage_target_aim_visuals:Colorpicker({Name = "Chams Fill Color",


Info = "Target Aim Chams Fill Color", Flag = "rage_target_aim_chams_fill_color",
Default = default_color, Transparency = 0.5});
rage_target_aim_visuals:Colorpicker({Name = "Chams Outline
Color", Info = "Target Aim Chams Outline Color", Flag =
"rage_target_aim_chams_outline_color", Default = Color3.fromRGB(0, 0, 0),
Transparency = 0});

rage_target_aim_visuals:Slider({Name = "Line Thickness", Flag =


"rage_target_aim_tracer_thickness", Default = 2, Minimum = 1, Maximum = 5, Decimals
= 0.01, Ending = "%"});
end;

--// target aim teleport


do
local main_toggle = rage_target_aim_teleport:Toggle({Name =
"Enabled", Flag = "rage_target_aim_teleport_enabled"});
rage_target_aim_teleport:Toggle({Name = "Bypass Destroy
Cheaters", Flag = "rage_target_aim_bypass_destroy_cheaters"})

local main_toggle_optionlist = main_toggle:OptionList({});


rage_target_aim_teleport:Keybind({Flag =
"rage_target_aim_teleport_keybind", Default = Enum.KeyCode.B, KeybindName = "Target
Aim Teleport", Mode = "Toggle"});

rage_target_aim_teleport:List({Name = "Type", Flag =


"rage_target_aim_teleport_type", Options = {"Random", "Strafe"}, Default =
"Random"});
main_toggle_optionlist:Slider({Name = "Randomization", Flag =
"rage_target_aim_teleport_randomization", Default = 1, Minimum = 1, Maximum = 20,
Decimals = 0.01, Ending = "%"});
main_toggle_optionlist:Slider({Name = "Strafe Distance", Flag =
"rage_target_aim_teleport_strafe_distance", Default = 1, Minimum = 1, Maximum = 20,
Decimals = 0.01, Ending = "%"});
main_toggle_optionlist:Slider({Name = "Strafe Speed", Flag =
"rage_target_aim_teleport_strafe_speed", Default = 1, Minimum = 1, Maximum = 10,
Decimals = 0.01, Ending = "%"});
main_toggle_optionlist:Slider({Name = "Strafe", Flag =
"rage_target_aim_teleport_strafe_height", Default = 1, Minimum = 1, Maximum = 20,
Decimals = 0.01, Ending = "%"});

end;
end;

--// movement
do
local cframe_speed = ui.tabs["movement"]:Section({Name = "CFrame
speed", Side = "Left", Size = 125});
local cframe_fly = ui.tabs["movement"]:Section({Name = "Fly", Side =
"Left", Size = 125});
local misc = ui.tabs["movement"]:Section({Name = "Misc", Side =
"Right", Size = 100});

--// speed
do
local main_toggle = cframe_speed:Toggle({Name = "Enabled", Flag =
"rage_cframe_speed_enabled"});
cframe_speed:Keybind({Flag = "rage_cframe_speed_keybind", Name =
"Keybind", Default = Enum.KeyCode.X, Mode = "Toggle"});
cframe_speed:Slider({Name = "Amount", Flag =
"rage_cframe_speed_amount", Default = 0.3, Minimum = 0.1, Maximum = 10, Decimals =
0.01, Ending = "%"});
end;

--// fly
do
local main_toggle = cframe_fly:Toggle({Name = "Enabled", Flag =
"rage_cframe_fly_enabled"});
cframe_fly:Keybind({Flag = "rage_cframe_fly_keybind", Name =
"Keybind", Default = Enum.KeyCode.C, Mode = "Toggle"});
cframe_fly:Slider({Name = "Speed", Flag =
"rage_cframe_fly_amount", Default = 1, Minimum = 1, Maximum = 30, Decimals = 0.01,
Ending = "%"});
end;

--// misc
do
misc:Toggle({Name = "No Jump Cooldown", Flag =
"rage_misc_movement_no_jump_cooldown", Callback = function(state)
if (not (utility.has_character(local_player))) then return
end;

local_player.Character.Humanoid.UseJumpPower = true;
end});

misc:Toggle({Name = "No Seats", Callback = function(state)


local descendants = game:GetDescendants();

for i = 1, #descendants do
local object = descendants[i];

if (object.ClassName ~= "Seat") then continue end;

object.CanTouch = not state and true or false;


end;
end});
end;
end;

--// visuals
do
--// world
do
local visuals_bullet_tracers = ui.tabs["world"]:Section({Name =
"Bullet Tracers", Side = "Left", Size = 210});
local visuals_bullet_impacts = ui.tabs["world"]:Section({Name =
"Bullet Impacts", Side = "Right", Size = 210});
local visuals_hit_detection = ui.tabs["world"]:Section({Name =
"Hit Detection", Side = "Left"});
local visuals_clone_chams = ui.tabs["world"]:Section({Name =
"Clone Chams", Side = "Right"});

--// bullet tracers


do
local main_toggle = visuals_bullet_tracers:Toggle({Name =
"Enabled", Flag = "visuals_bullet_tracers_enabled"});
visuals_bullet_tracers:Toggle({Name = "Fade", Flag =
"visuals_bullet_tracers_fade_enabled"});

visuals_bullet_tracers:Colorpicker({Name = "Bullet Tracers


Gradient Start", Flag = "visuals_bullet_tracers_color_gradient_1", Default =
default_color, Transparency = 0});
visuals_bullet_tracers:Colorpicker({Name = "Bullet Tracers
Gradient End", Flag = "visuals_bullet_tracers_color_gradient_2", Default =
default_color, Transparency = 0});

visuals_bullet_tracers:Slider({Name = "Fade Duration", Flag


= "visuals_bullet_tracers_fade_duration", Default = 2, Minimum = 0.5, Maximum = 5,
Decimals = 0.001, Ending = "s"});
visuals_bullet_tracers:Slider({Name = "Duration", Flag =
"visuals_bullet_tracers_duration", Default = 2, Minimum = 0.5, Maximum = 5,
Decimals = 0.001, Ending = "s"});
end;

--// bullet impact


do
local main_toggle = visuals_bullet_impacts:Toggle({Name =
"Enabled", Flag = "visuals_bullet_impacts_enabled"});

local main_toggle_option_list = main_toggle:OptionList({});


main_toggle_option_list:Colorpicker({Name = "Bullet Impacts
Color", Flag = "visuals_bullet_impacts_color", Default = default_color,
Transparency = 0});

visuals_bullet_impacts:Toggle({Name = "Fade", Flag =


"visuals_bullet_impacts_fade_enabled"});
visuals_bullet_impacts:Slider({Name = "Size", Flag =
"visuals_bullet_impacts_size", Default = 0.5, Minimum = 0.1, Maximum = 10, Decimals
= 0.001, Ending = "'"});
visuals_bullet_impacts:Slider({Name = "Fade Duration", Flag
= "visuals_bullet_impacts_fade_duration", Default = 2, Minimum = 0.5, Maximum = 5,
Decimals = 0.001, Ending = "s"});
visuals_bullet_impacts:Slider({Name = "Duration", Flag =
"visuals_bullet_impacts_duration", Default = 2, Minimum = 0.5, Maximum = 5,
Decimals = 0.001, Ending = "s"});
end;

--// hit detection


do
local sounds = {};

for i,v in hitsounds do


table.insert(sounds, i);
end;

visuals_hit_detection:Toggle({Name = "Enabled", Flag =


"visuals_hit_detection_enabled"});
local sounds_toggle = visuals_hit_detection:Toggle({Name =
"Sounds", Flag = "visuals_hit_detection_sounds_enabled"});

local sounds_toggle_option_list =
sounds_toggle:OptionList({});
sounds_toggle_option_list:List({Name = "Sound", Flag =
"visuals_hit_detection_sounds_which_sound", Options = sounds, Default =
sounds[1]});
sounds_toggle_option_list:Slider({Name = "Volume", Flag =
"visuals_hit_detection_sounds_volume", Default = 5, Minimum = 0.1, Maximum = 10,
Decimals = 0.01, Ending = "%"});

local chams_toggle = visuals_hit_detection:Toggle({Name =


"Chams", Flag = "visuals_hit_detection_chams_enabled"});

local chams_option_list = chams_toggle:OptionList({});


chams_option_list:Colorpicker({Name = "Color", Flag =
"visuals_hit_detection_chams_color", Default = default_color});
chams_option_list:Slider({Name = "Transparency", Flag =
"visuals_hit_detection_chams_transparency", Default = 0.7, Minimum = 0, Maximum =
1, Decimals = 0.001, Ending = "%"});
chams_option_list:Slider({Name = "Duration", Flag =
"visuals_hit_detection_chams_duration", Default = 2, Minimum = 0, Maximum = 10,
Decimals = 0.001, Ending = "s"});

local effect = visuals_hit_detection:Toggle({Name =


"Effects", Flag = "visuals_hit_detection_effects_enabled"});

local effect_option_list = effect:OptionList({});


effect_option_list:Colorpicker({Name = "Color", Flag =
"visuals_hit_detection_effects_color", Default = default_color});
effect_option_list:List({Name = "Which Effect", Flag =
"visuals_hit_detection_effects_which_effect", Options = {"Bubble", "Confetti"},
Default = "Bubble"});

visuals_hit_detection:Toggle({Name = "Notification", Flag =


"visuals_hit_detection_notification"});
visuals_hit_detection:Slider({Name = "Notification
Duration", Flag = "visuals_hit_detection_notification_duration", Default = 2,
Minimum = 0, Maximum = 10, Decimals = 0.001, Ending = "s"});
end;

--// clons chams


do
visuals_clone_chams:Toggle({Name = "Enabled", Flag =
"visuals_clone_chams_enabled"});
visuals_clone_chams:Colorpicker({Name = "Color", Flag =
"visuals_clone_chams_color", Default = default_color});
visuals_clone_chams:Slider({Name = "Duration", Flag =
"visuals_clone_chams_duration", Default = 0.1, Minimum = 0.1, Maximum = 10,
Decimals = 0.001, Ending = "s"});
visuals_clone_chams:List({Name = "To Apply", Flag =
"visuals_clone_chams_to_apply", Options = {"Local Player", "Target Aim Target"},
Default = {"Local Player"}, Max = 2});
end;
end;

--// misc
do
local world_section = ui.tabs["view"]:Section({Name = "World",
Side = "Left", Size = 210});
local lplr_section = ui.tabs["view"]:Section({Name = "Local
Player", Side = "Left", Size = 210});
local cursor_text = ui.tabs["view"]:Section({Name = "Text", Side
= "Right", Size = 210});

--// world
do
local fog = world_section:Toggle({Name = "Fog", Flag =
"visuals_world_fog", Callback = function(state)
if state then
lighting.FogColor =
flags["visuals_world_fog_color"];
lighting.FogStart =
flags["visuals_world_fog_start"];
lighting.FogEnd =
flags["visuals_world_fog_end"];
else
lighting.FogColor = world.FogColor;
lighting.FogStart = world.FogStart;
lighting.FogEnd = world.FogEnd;
end;
end});

local fog_option_list = fog:OptionList({});


fog_option_list:Colorpicker({Name = "Color", Flag =
"visuals_world_fog_color", Default = default_color, Callback = function(color)
if flags["visuals_world_fog"] then
lighting.FogColor = color;
end;
end});
fog_option_list:Slider({Name = "Start", Flag =
"visuals_world_fog_start", Default = 150, Minimum = 100, Maximum = 10000, Decimals
= 1, Ending = "%", Callback = function(number)
if flags["visuals_world_fog"] then
lighting.FogStart = number;
end;
end});
fog_option_list:Slider({Name = "End", Flag =
"visuals_world_fog_end", Default = 550, Minimum = 100, Maximum = 10000, Decimals =
1, Ending = "%", Callback = function(number)
if flags["visuals_world_fog"] then
lighting.FogEnd = number;
end;
end});

local ambient = world_section:Toggle({Name = "Ambient",


Flag = "visuals_world_ambient", Callback = function(state)
if state then
lighting.Ambient =
flags["visuals_world_ambient_color"];
else
lighting.Ambient = world.Ambient;
end;
end});

local ambient_option_list = ambient:OptionList({});


ambient_option_list:Colorpicker({Name = "Color", Flag =
"visuals_world_ambient_color", Default = default_color, Callback = function(color)
if flags["visuals_world_ambient"] then
lighting.Ambient = color;
end;
end});

local clock_time_toggle = world_section:Toggle({Name =


"Clock Time", Flag = "visuals_world_clock_time", Callback = function(state)
if state then
lighting.ClockTime =
flags["visuals_world_clock_time_time"];
else
lighting.ClockTime = world.ClockTime;
end;
end});
local clock_time_option_list =
clock_time_toggle:OptionList({});
clock_time_option_list:Slider({Name = "Time", Flag =
"visuals_world_clock_time_time", Default = 14, Minimum = 0, Maximum = 24, Decimals
= 1, Callback = function(number)
if flags["visuals_world_clock_time"] then
lighting.ClockTime = number;
end;
end});

local brightness_toggle = world_section:Toggle({Name =


"Brightness", Flag = "visuals_world_brightness", Callback = function(state)
if state then
lighting.Brightness =
flags["visuals_world_brightness_level"];
else
lighting.Brightness = world.Brightness;
end;
end});
local brightness_option_list =
brightness_toggle:OptionList({});
brightness_option_list:Slider({Name = "Level", Flag =
"visuals_world_brightness_level", Default = 0.1, Minimum = 0, Maximum = 10,
Decimals = 1, Callback = function(number)
if flags["visuals_world_brightness"] then
lighting.Brightness = number;
end;
end});

local exposure = world_section:Toggle({Name = "Exposure",


Flag = "visuals_world_exposure", Callback = function(state)
if state then
lighting.ExposureCompensation =
flags["visuals_world_exposure_compensation"];
else
lighting.ExposureCompensation =
world.ExposureCompensation;
end;
end});
local exposure_option_list = exposure:OptionList({});
exposure_option_list:Slider({Name = "Compensation", Flag =
"visuals_world_exposure_compensation", Default = 0, Minimum = -10, Maximum = 10,
Decimals = 1, Callback = function(number)
if flags["visuals_world_exposure"] then
lighting.ExposureCompensation = number;
end;
end});

local color_shift_top = world_section:Toggle({Name = "Color


Shift Top", Flag = "visuals_world_color_shift_top", Callback = function(state)
if state then
lighting.ColorShift_Top =
flags["visuals_world_color_shift_top_color"];
else
lighting.ColorShift_Top = world.ColorShift_Top;
end;
end});
local color_shift_top_option_list =
color_shift_top:OptionList({});
color_shift_top_option_list:Colorpicker({Name = "Color",
Flag = "visuals_world_color_shift_top_color", Default = default_color, Callback =
function(color)
if flags["visuals_world_color_shift_top"] then
lighting.ColorShift_Top = color;
end;
end});
local collor_shift_bottom = world_section:Toggle({Name =
"Color Shift Bottom", Flag = "visuals_world_color_shift_bottom", Callback =
function(state)
if state then
lighting.ColorShift_Bottom =
flags["visuals_world_color_shift_bottom_color"];
else
lighting.ColorShift_Bottom =
world.ColorShift_Bottom;
end;
end});
local color_shift_bottom_option_list =
collor_shift_bottom:OptionList({});
color_shift_bottom_option_list:Colorpicker({Name = "Color",
Flag = "visuals_world_color_shift_bottom_color", Default = default_color, Callback
= function(color)
if flags["visuals_world_color_shift_bottom"] then
lighting.ColorShift_Bottom = color;
end;
end});
end;

--// local player section


do
lplr_section:Toggle({Name = "Chams", Flag =
"visuals_player_chams_enabled"});
lplr_section:Toggle({Name = "Material", Flag =
"visuals_player_material_enabled", Callback = function(state)
local material =
flags["visuals_player_material_type"];
features.local_material(state, material);
end});
lplr_section:Colorpicker({Name = "Outline Color", Flag =
"visuals_player_chams_outline_color", Default = Color3.new(0, 0, 0)});
lplr_section:Colorpicker({Name = "Fill Color", Flag =
"visuals_player_chams_fill_color", Default = default_color});
lplr_section:List({Name = "Material", Flag =
"visuals_player_material_type", Options = {"ForceField", "Neon"}, Default =
"ForceField", Callback = function(material)
local state =
flags["visuals_player_material_enabled"];
features.local_material(state, material);
end});
end;

if true then
local esp_section = ui.tabs["view"]:Section({Name = "ESP",
Side = "Right", Size = 210});
--// esp section
do
esp_section:Toggle({Name = "Enabled", Flag =
"visuals_esp_enabled"});
local boxes_toggle = esp_section:Toggle({Name =
"Boxes", Flag = "visuals_esp_boxes_enabled"});
local boxes_option_list =
boxes_toggle:OptionList({});
boxes_option_list:Colorpicker({Name = "Color", Flag =
"visuals_esp_boxes_color", Default = Color3.new(1, 1, 1)});
boxes_option_list:Toggle({Name = "Target Color", Flag
= "visuals_esp_boxes_target_color_enabled"});
boxes_option_list:Colorpicker({Name = "Target Color",
Flag = "visuals_esp_boxes_target_color", Default = Color3.new(1, 0, 0)});

local names_toggle = esp_section:Toggle({Name =


"Names", Flag = "visuals_esp_names_enabled"});
local names_option_list =
names_toggle:OptionList({});
names_option_list:Colorpicker({Name = "Color", Flag =
"visuals_esp_names_color", Default = Color3.new(1, 1, 1)});

local head_dots_toggle = esp_section:Toggle({Name =


"Head Dots", Flag = "visuals_esp_head_dots_enabled"});
local head_dots_option_list =
head_dots_toggle:OptionList({});
head_dots_option_list:Colorpicker({Name = "Color",
Flag = "visuals_esp_head_dots_color", Default = Color3.new(1, 1, 1)});
head_dots_option_list:Slider({Name = "Sides", Flag =
"visuals_esp_head_dots_sides", Default = 6, Minimum = 1, Maximum = 100, Decimals =
1, Ending = "'"});
head_dots_option_list:Slider({Name = "Size", Flag =
"visuals_esp_head_dots_size", Default = 10, Minimum = 1, Maximum = 20, Decimals =
0.0001, Ending = "'"});
local health_bar_toggle = esp_section:Toggle({Name =
"Health Bar", Flag = "visuals_esp_health_bar_enabled"});
local health_bar_option_list =
health_bar_toggle:OptionList({});
health_bar_option_list:Toggle({Name = "Health Based
Color", Flag = "visuals_esp_health_bar_health_based_color"});
health_bar_option_list:Colorpicker({Name = "Health
Color", Flag = "visuals_esp_health_bar_color", Default = Color3.new(1, 1, 1)});
local health_text_toggle = esp_section:Toggle({Name =
"Health Text", Flag = "visuals_esp_health_text_enabled"});
local health_text_option_list =
health_text_toggle:OptionList({});
health_text_option_list:Toggle({Name = "Health Based
Color", Flag = "visuals_esp_health_text_health_based_color"});
health_text_option_list:Colorpicker({Name = "Color",
Flag = "visuals_esp_health_text_color", Default = Color3.new(1, 1, 1)});
local armor_bar_toggle = esp_section:Toggle({Name =
"Armor Bar", Flag = "visuals_esp_armor_bar_enabled"});
local armor_bar_option_list =
armor_bar_toggle:OptionList({});
armor_bar_option_list:Colorpicker({Name = "Armor
Color", Flag = "visuals_esp_armor_bar_color", Default = Color3.new(1, 1, 1)});
end;
end;

--// cursor text


do
cursor_text:Toggle({Name = "Enabled", Flag =
"visuals_text_enabled"});
cursor_text:Toggle({Name = "Custom Text", Flag =
"visuals_text_custom_text"});
cursor_text:Colorpicker({Name = "Text Color", Flag =
"visuals_text_color", Default = default_color});
cursor_text:Slider({Name = "Cursor Offset", Flag =
"visuals_text_cursor_offset", Default = 49, Minimum = 1, Maximum = 100, Decimals =
0.0001, Ending = "%"});
cursor_text:Textbox({Flag =
"visuals_cursor_custom_text_text", Placeholder = "[${target_name}]"});
end;
end;
end;

--// override
do
--// sections
local override_world = ui.tabs["override"]:Section({Name = "World",
Side = "Left", Size = 127});
local override_anti = ui.tabs["override"]:Section({Name = "Anti", Side
= "Right", Size = 127});

do
local override_recoil = override_anti:Toggle({Name = "Recoil", Flag =
"override_anti_recoil"});
local override_spread = override_anti:Toggle({Name = "Spread", Flag =
"override_anti_spread"});
local override_slowdown = override_anti:Toggle({Name = "Slowdown", Flag
= "override_anti_slowdown"});
end;

--// override skybox


do
local override_skybox_toggle = override_world:Toggle({Name = "Skybox",
Flag = "override_world_skybox"});
local override_skybox_option_list =
override_skybox_toggle:OptionList({});
override_skybox_option_list:List({Name = "Skybox Decal", Flag =
"override_world_skybox_rbxassetid", Options = {"Normal", "DoomSpire", "CatGirl",
"Vibe", "Blue Aurora", "Purple Clouds", "Purple Nebula", "Twighlight", "Vivid
Skies", "Purple and Blue"}, Default = "Normal"});
end;

--// override character


do
local override_character_toggle = override_world:Toggle({Name =
"Character", Flag = "override_local_character"});
local override_character_option_list =
override_character_toggle:OptionList({});
override_character_option_list:List({Name = "Module", Flag =
"custom_local_character_module", Options = {"AmongUs", "SpongeBob", "Patrick",
"Maxell", "Brian", "CapyBara", "Chicken", "Sonic"}, Default = "Normal"});
end;
end;

--// anti aim


do
local velocity_spoofer = ui.tabs["anti_aim"]:Section({Name = "Velocity
Spoofer", Side = "Left", Size = 160});
local network_desync = ui.tabs["anti_aim"]:Section({Name = "Network
Desync", Side = "Right", Size = 110});
local c_sync = ui.tabs["anti_aim"]:Section({Name = "C-Sync", Side =
"Right", Size = 300});
local fflag = ui.tabs["anti_aim"]:Section({Name = "FFlag Desync", Side
= "Left", Size = 95});
local starhook_classics = ui.tabs["anti_aim"]:Section({Name = "Starhook
Classics", Side = "Left", Size = 150});
--// velocity spoofer
do
local nest = velocity_spoofer:Nest({Size = 120});
nest:Toggle({Name = "Enabled", Flag =
"anti_aim_velocity_spoofer_enabled"});
nest:Keybind({Flag = "anti_aim_velocity_spoofer_keybind", Name =
"Keybind", Default = Enum.KeyCode.C, Mode = "Toggle"});
nest:List({Name = "Type", Flag =
"anti_aim_velocity_spoofer_type", Options = {"Local Strafe", "Random", "Static"},
Default = {"Local Strafe"}});
nest:Slider({Name = "Strafe Distance", Flag =
"anti_aim_velocity_spoofer_strafe_distance", Default = 1, Minimum = 1, Maximum =
20, Decimals = 0.01, Ending = "%"});
nest:Slider({Name = "Strafe Speed", Flag =
"anti_aim_velocity_spoofer_strafe_speed", Default = 1, Minimum = 1, Maximum = 10,
Decimals = 0.01, Ending = "%"});
nest:Slider({Name = "Static X", Flag =
"anti_aim_velocity_spoofer_static_x", Default = 1, Minimum = 1, Maximum = 100,
Decimals = 0.01, Ending = "'"});
nest:Slider({Name = "Static Y", Flag =
"anti_aim_velocity_spoofer_static_y", Default = 1, Minimum = 1, Maximum = 100,
Decimals = 0.01, Ending = "'"});
nest:Slider({Name = "Static Z", Flag =
"anti_aim_velocity_spoofer_static_z", Default = 1, Minimum = 1, Maximum = 100,
Decimals = 0.01, Ending = "'"});
nest:Slider({Name = "Randomization", Flag =
"anti_aim_velocity_spoofer_randomization", Default = 1, Minimum = 1, Maximum = 100,
Decimals = 0.01, Ending = "%"});
end;

--// network desync


do
network_desync:Toggle({Name = "Enabled", Flag =
"anti_aim_network_desync_enabled"});
network_desync:Slider({Name = "Amount", Flag =
"anti_aim_network_desync_amount", Default = 7.5, Minimum = 0, Maximum = 10,
Decimals = 0.01, Ending = "%"});
end;

--// c sync
do
local main_toggle = c_sync:Toggle({Name = "Enabled", Flag =
"anti_aim_c_sync_enabled"});
local main_toggle_option_list = main_toggle:OptionList({});

main_toggle_option_list:Toggle({Name = "Visualize", Flag =


"anti_aim_c_sync_visualize_enabled"});
main_toggle_option_list:List({Name = "Visualize Types", Flag =
"anti_aim_c_sync_visualize_types", Options = {"Tracer", "Dot", "Character"},
Default = {"Tracer"}, Max = 3});
main_toggle_option_list:Colorpicker({Name = "Visualize Color",
Flag = "anti_aim_c_sync_visualize_color", Default = default_color});
main_toggle_option_list:Slider({Name = "Visualize Dot Size", Flag
= "anti_aim_c_sync_dot_size", Default = 16, Minimum = 1, Maximum = 20, Decimals =
0.01, Ending = "%"});

c_sync:Keybind({Flag = "anti_aim_c_sync_keybind", Name =


"Keybind", Default = Enum.KeyCode.N, Mode = "Toggle"});
c_sync:List({Name = "Type", Flag = "anti_aim_c_sync_type",
Options = {"Static Local", "Static Target", "Local Random", "Target Random"},
Default = "Local Offset"});
c_sync:Slider({Name = "Randomization", Flag =
"anti_aim_c_sync_randomization", Default = 1, Minimum = 1, Maximum = 100, Decimals
= 0.01, Ending = "%"});
c_sync:Slider({Name = "Static X", Flag =
"anti_aim_c_sync_static_x", Default = 1, Minimum = 0, Maximum = 100, Decimals =
0.01, Ending = "'"});
c_sync:Slider({Name = "Static Y", Flag =
"anti_aim_c_sync_static_y", Default = 1, Minimum = 0, Maximum = 100, Decimals =
0.01, Ending = "'"});
c_sync:Slider({Name = "Static Z", Flag =
"anti_aim_c_sync_static_z", Default = 1, Minimum = 0, Maximum = 100, Decimals =
0.01, Ending = "'"});
end;

--// fflags desync


do
fflag:Toggle({Name = "Enabled", Flag =
"anti_aim_fflag_desync_enabled", Callback = function(state)
if (state) then
setfflag("S2PhysicsSenderRate",
tostring(flags["anti_aim_fflag_amount"]));
else
setfflag("S2PhysicsSenderRate", tostring(old_psr));
end;
end});
fflag:Slider({Name = "Amount", Flag = "anti_aim_fflag_amount",
Default = 2, Minimum = 0, Maximum = 15, Decimals = 0.01, Ending = "%", Callback =
function(value)
if (flags["anti_aim_fflag_desync_enabled"]) then
setfflag("S2PhysicsSenderRate", tostring(value));
end;
end});
end;

--// destroy cheaters


do
starhook_classics:Toggle({Name = "Enabled", Flag =
"anti_aim_starhook_classics_enabled"});
starhook_classics:Keybind({Flag =
"anti_aim_starhook_classics_keybind", Name = "Keybind", Default = Enum.KeyCode.Y,
Mode = "Toggle"});
starhook_classics:List({Name = "Classics", Flag =
"anti_aim_starhook_classics", Options = {"Destroy Cheaters", "supercoolboi34
Destroyer"}, Default = "Destroy Cheaters"});
end;
end;

--// settings
do --// credits to finobe wtv im way too lazy
local cfgs = ui.tabs["settings"]:Section({Name = "Config", Side =
"Left", Size = 427});
local window = ui.tabs["settings"]:Section({Name = "Window", Side =
"Right", Size = 170});
local tools = ui.tabs["settings"]:Section({Name = "Tool", Side =
"Right", Size = 160});
local cfg_list = cfgs:List({Name = "Config List", Flag =
"setting_configuration_list", Options = {}});
cfgs:Textbox({Flag = "settings_configuration_name", Placeholder =
"Config name"});

local current_list = {};

if not isfolder("starhook") then


makefolder("starhook");
end;

if not isfolder("starhook/configs") then


makefolder("starhook/configs");
end;

local function update_config_list()


local list = {};

for idx, file in listfiles("starhook/configs") do


local file_name = file:gsub("starhook/configs\\",
""):gsub(".cfg", ""):gsub("starhook/configs/", "");
list[#list + 1] = file_name;
end;

local is_new = #list ~= #current_list;

if not is_new then


for idx = 1, #list do
if list[idx] ~= current_list[idx] then
is_new = true;
break;
end;
end;
end;

if is_new then
current_list = list;
cfg_list:Refresh(current_list);
end;
end;

cfgs:Button({Name = "Create", Callback = function()


local config_name = flags.settings_configuration_name;
if config_name == "" or isfile("starhook/configs/" ..
config_name .. ".cfg") then
return;
end;
writefile("starhook/configs/" .. config_name .. ".cfg",
Library:GetConfig());
update_config_list();
end});

cfgs:Button({Name = "Save", Callback = function()


local selected_config = flags.setting_configuration_list;
if selected_config then
writefile("starhook/configs/" .. selected_config .. ".cfg",
Library:GetConfig());
end;
end});
cfgs:Button({Name = "Load", Callback = function()
local selected_config = flags.setting_configuration_list;
if selected_config then
Library:LoadConfig(readfile("starhook/configs/" ..
selected_config .. ".cfg"));
end;
end});

cfgs:Button({Name = "Delete", Callback = function()


local selected_config = flags.setting_configuration_list;
if selected_config then
delfile("starhook/configs/" .. selected_config .. ".cfg");
end;
update_config_list();
end});

cfgs:Button({Name = "Refresh", Callback = function()


update_config_list();
end});

update_config_list();

--// ui settings
window:Keybind({Name = "UI Toggle", Flag = "ui_toggle", Default =
Enum.KeyCode.Insert, UseKey = true, Callback = function(key)
Library.UIKey = key;
end});

window:Toggle({Name = "Watermark", Flag = "ui_watermark", Callback =


function(state)
watermark:SetVisible(state);
end});

window:Colorpicker({Name = "Menu Accent", Flag = "MenuAccent", Default


= default_color, Callback = function(state)
library:ChangeAccent(state);
LogoAccent = state
end});

--// tools
MakeTool = function(ToolKeybind, ToolInstanceName)
local ToolInstanceName = Instance.new("Tool");
ToolInstanceName.RequiresHandle = false
ToolInstanceName.Name = ToolKeybind
ToolInstanceName.Activated:Connect(function()
game:GetService("VirtualInputManager"):SendKeyEvent(true,
ToolKeybind, false, game)
end)
ToolInstanceName.Parent = game.Players.LocalPlayer.Backpack
local Player = game.Players.LocalPlayer
local function OnCharacterAdded(character)
ToolInstanceName.Parent = game.Players.LocalPlayer.Backpack
end;
Player.CharacterAdded:Connect(OnCharacterAdded);

Player.CharacterRemoving:Connect(function()
ToolInstanceName.Parent = game.Players.LocalPlayer.Backpack
end)
end;

MakeButton = function(ButtonKeybind, ButtInstanceName)


local MBSG Instance.new('ScreenGui',
game:GetService("RunService"):IsStudio() and game.Players.LocalPlayer.PlayerGui or
game.CoreGui).DisplayOrder = 100
local Button = Instance.new("TextButton", MBSG)

MBSG.DisplayOrder = 9999
MBSG.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

MakeDraggable(Button)
Button.Name = ButtonKeybind
Button.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
Button.AnchorPoint = Vector2.new(0.5, 0.5)
Button.Position = UDim2.new(0.5, 0, 0.5, 0)
Button.Text = ButtonKeybind
Button.TextColor3 = Color3.fromRGB(255, 255, 255)
Button.BorderColor3 = Color3.new(0,0,0)
Button.AutoButtonColor = false

Button.MouseButton1Click:Connect(function()
game:GetService("VirtualInputManager"):SendKeyEvent(true,
ButtonKeybind, false, game)
end)
end;

tools:Textbox({Flag = "Tool Keybind", Placeholder = "Tool Keybind"});


tools:Button({Name = "Make Tool", Callback = function()
MakeTool(flags["Tool Keybind"], flags["Tool Keybind"])
end});

tools:Textbox({Flag = "Button Keybind", Placeholder = "Button


Keybind"});
tools:Button({Name = "Make Button", Callback = function()
MakeButton(flags["Button Keybind"], flags["Button Keybind"])
end});
end;
end;

You might also like