Run it
Copy the script and paste it into your executor.
(, )
PROTOSMASHER_LOADED
cloneref cloneref = (o) o
UserInputService = (:())
HttpService = (:())
TweenService = (:())
RunService = (:())
Players = :()
LocalPlayer = Players.LocalPlayer
Camera = .CurrentCamera
Mouse = LocalPlayer:()
V2New = .new
V3New = .new
WTVP = Camera.WorldToViewportPoint
WorldToViewport = (...) (Camera, ...)
Menu = {}
MouseHeld =
LastRefresh =
OptionsFile =
Binding =
BindedKey =
OIndex =
LineBox = {}
UIButtons = {}
Sliders = {}
ColorPicker = { Loading = , LastGenerated = }
Dragging =
DraggingUI =
Rainbow =
DragOffset = ()
DraggingWhat =
OldData = {}
IgnoreList = {}
EnemyColor = .(, , )
TeamColor = .(, , )
MenuLoaded =
ErrorLogging =
TracerPosition = (Camera.ViewportSize.X / , Camera.ViewportSize.Y - )
DragTracerPosition =
SubMenu = {}
IsSynapse = PROTOSMASHER_LOADED
Connections = { Active = {} }
Signal = {} Signal.__index = Signal
GetCharacter, CurrentColorPicker, Spectating
QUAD_SUPPORTED_EXPLOIT = (() .():() )
.MenuDrawingData = .MenuDrawingData { Instances = {} }
.InstanceData = .InstanceData {}
.RSName = .RSName ( .. HttpService:())
GetDataName = .RSName ..
UpdateName = .RSName ..
Debounce = ({}, {
__index = (t, i)
(t, i)
})
.UESP_InputChangedCon .UESP_InputChangedCon:()
.UESP_InputBeganCon .UESP_InputBeganCon:()
.UESP_InputEndedCon .UESP_InputEndedCon:()
.CurrentColorPicker .CurrentColorPicker:()
(String)
(String) ==
String:() ~= #String == String ==
(t, i, v) t[i] = v
Teams = {}
CustomTeams = {
[] = {
Initialize = ()
Teams.Sheriffs = {}; Teams.Bandits = {}
Func = :():(, )
Event = :():(, )
S, B = Func:()
Teams.Sheriffs = S; Teams.Bandits = B
Event.OnClientEvent:((id, PlayerName, Team, Remove)
id ==
TeamTable, NotTeamTable
Team == TeamTable = Teams.Bandits; NotTeamTable = Teams.Sheriffs
TeamTable = Teams.Sheriffs; NotTeamTable = Teams.Bandits
Remove TeamTable[PlayerName] =
TeamTable[PlayerName] = ; NotTeamTable[PlayerName] =
PlayerName == LocalPlayer.Name TDM.Friendlys = TeamTable; TDM.Enemies = NotTeamTable
)
,
CheckTeam = (Player)
LocalTeam = Teams.Sheriffs[LocalPlayer.Name] Teams.Sheriffs Teams.Bandits
LocalTeam[Player.Name]
},
[] = {
CheckTeam = (Player)
LocalLastName = LocalPlayer:() LocalLastName (LocalLastName)
PlayerLastName = Player:() PlayerLastName
PlayerLastName == LocalLastName
},
[] = {
CheckTeam = (Player)
LocalStats = LocalPlayer:()
LocalLastName = LocalStats LocalStats:() LocalLastName (LocalLastName.Value)
PlayerStats = Player:()
PlayerLastName = PlayerStats PlayerStats:() PlayerLastName
PlayerLastName.Value == LocalLastName.Value
},
[] = {
CheckTeam = (Player)
LocalStats = LocalPlayer:()
LocalGuildName = LocalStats LocalStats:() LocalGuildName (LocalGuildName.Value)
PlayerStats = Player:()
PlayerGuildName = PlayerStats PlayerStats:() PlayerGuildName
PlayerGuildName.Value == LocalGuildName.Value
},
[] = {
CheckTeam = (Player)
LocalStats = LocalPlayer:()
LocalGuildName = LocalStats LocalStats:() LocalGuildName (LocalGuildName.Value)
PlayerStats = Player:()
PlayerGuildName = PlayerStats PlayerStats:() PlayerGuildName
PlayerGuildName.Value == LocalGuildName.Value
}
}
RenderList = {Instances = {}}
RenderList:(, Obj2Draw, Text, Color)
RenderList.Instances[] = { ParentInstance = , = Obj2Draw, Text = Text, Color = Color }
RenderList.Instances[]
CustomPlayerTag; CustomESP; CustomCharacter
GetHealth; GetAliveState; CustomRootPartName
Modules = {
[] = {
Initialize = ()
create_comm_channel get_comm_channel
run_on_actor = runonactor run_on_actor
EventID, Event = ()
Event.Event:((List) PF_CharList = List )
Index, Actor (())
(Actor, , EventID)
,
CustomCharacter = (Player)
.PF_CharMT
.PF_CharMT = {}
.PF_CharMT.__index = .PF_CharMT
.PF_CharMT:(Name) (self, Name)
.PF_CharMT:()
PF_CharList PF_CharList[Player.Name]
Character = PF_CharList[Player.Name]
(Character, .PF_CharMT)
Character
,
GetHealth = (Player) PF_CharList PF_CharList[Player.Name] PF_CharList[Player.Name].Health ,
GetAliveState = (Player) PF_CharList PF_CharList[Player.Name] PF_CharList[Player.Name].Alive ,
CustomRootPartName =
},
[] = { CustomCharacter = (Player) :() .Players:(Player.Name) },
[] = {
CustomPlayerTag = (Player) Player:() ( .. Player.Job.Value .. ) ,
CustomESP = ()
:()
i, v (.MoneyPrinters:())
Main = v:(); Owner = v:(); Money = v:() v.Int:()
Main Owner Money
O = (Owner.Value); M = (Money.Value)
(RenderList.AddOrUpdateInstance, RenderList, v, Main, .(, O, M), .(, , ))
},
[] = {
CustomESP = ()
:() .Mobs:()
i, v (.Mobs.Forest1:())
Main = v:(); Hum = v:()
Main Hum (RenderList.AddOrUpdateInstance, RenderList, v, Main, .(, v.Name, Hum.Health, Hum.MaxHealth), .(, , ))
},
[] = {
CustomESP = ()
:()
i, v (:())
v.Name == Main = v:()
Main (RenderList.AddOrUpdateInstance, RenderList, v, Main, , .(, , ))
},
[] = {
CustomESP = () ,
CustomPlayerTag = (Player)
.PlaceVersion <
Name = ; FirstName = Player:()
(FirstName) == #FirstName >
Prefix = ; Extra = {}; Name = Name ..
Player:() > Name = Name .. .. (Player:()) ..
(Player:()) Prefix = Player:() == (Player:() == )
(FirstName) Name = Name .. .. Prefix .. FirstName
(Player:()) Name = Name .. .. Player:()
(Name) Name = Name ..
Character = (Player)
Character
Character Character:() .(Extra, )
Character:() Character.ManaAbilities:() .(Extra, )
Character:() .(Extra, .. .(Character.Mana.Value))
Character:() .(Extra, )
Character:() .(Extra, )
Character:() .(Extra, )
Character:() .(Extra, )
Character:() .(Extra, )
Character:() Character.Head:()
FM = Character.Head:()
FM.Texture == .(Extra, )
FM.Texture == .(Extra, )
FM.Texture == .(Extra, )
FM.Texture == .(Extra, )
Player:()
Player.Backpack:() .(Extra, )
Player.Backpack:() .(Extra, )
Player.Backpack:() .(Extra, )
Player.Backpack:() .(Extra, )
#Extra > Name = Name .. .. .(Extra, ) ..
Name
},
[] = {
CustomPlayerTag = (Player)
Name =
Player:()
Name = Name .. ; Prefix = ; Extra = {}
Player.leaderstats:() Player.leaderstats.Prestige.ClassName == Player.leaderstats.Prestige.Value > Name = Name .. .. (Player.leaderstats.Prestige.Value) ..
Player.leaderstats:() Player.leaderstats:() Player.leaderstats.HouseRank.ClassName == (Player.leaderstats.HouseRank.Value) Prefix = Player.leaderstats.HouseRank.Value == (Player.leaderstats.Gender.Value == )
Player.leaderstats:() Player.leaderstats.FirstName.ClassName == (Player.leaderstats.FirstName.Value) Name = Name .. .. Prefix .. Player.leaderstats.FirstName.Value
Player.leaderstats:() Player.leaderstats.LastName.ClassName == (Player.leaderstats.LastName.Value) Name = Name .. .. Player.leaderstats.LastName.Value
Player.leaderstats:() Player.leaderstats.UberTitle.ClassName == (Player.leaderstats.UberTitle.Value) Name = Name .. .. Player.leaderstats.UberTitle.Value
(Name) Name = Name ..
Character = (Player)
Character
Character Character:() .(Extra, )
Character:() Character.ManaAbilities:() .(Extra, )
Character:() .(Extra, .. .(Character.Mana.Value))
Character:() .(Extra, )
Character:() .(Extra, )
Character:() .(Extra, )
Character:() .(Extra, )
Character:() Character.Head:()
FM = Character.Head:()
FM.Texture == .(Extra, )
FM.Texture == .(Extra, )
FM.Texture == .(Extra, )
Player:()
Player.Backpack:() .(Extra, )
Player.Backpack:() .(Extra, )
Player.Backpack:() .(Extra, )
#Extra > Name = Name .. .. .(Extra, ) ..
Name
},
[] = { CustomCharacter = (Player) :() .Players:(Player.Name) },
[] = {
CustomPlayerTag = (Player)
Name = ; CharacterName = Player:()
(CharacterName)
Name = ():(CharacterName); Character = (Player); Extra = {}
Character
Blood, Armor = Character:(), Character:()
Blood Blood.ClassName == .(Extra, ():(Blood.Value))
Armor Armor.ClassName == .(Extra, ():(.(Armor.Value / )))
BackpackChildren = Player.Backpack:()
index = , #BackpackChildren
Oath = BackpackChildren[index]
Oath.ClassName == Oath.Name:()
OathName = Oath.Name:(, )
.(Extra, OathName)
#Extra > Name = Name .. .. .(Extra, ) ..
Name
},
[] = {
CustomPlayerTag = (Player)
Name = ; CharacterName = Player:()
(CharacterName)
Name = ():(CharacterName); Character = (Player); Extra = {}
Character
Blood, Armor = Character:(), Character:()
Blood Blood.ClassName == .(Extra, ():(Blood.Value))
Armor Armor.ClassName == .(Extra, ():(.(Armor.Value / )))
BackpackChildren = Player.Backpack:()
index = , #BackpackChildren
Oath = BackpackChildren[index]
Oath.ClassName == Oath.Name:()
OathName = Oath.Name:(, )
.(Extra, OathName)
#Extra > Name = Name .. .. .(Extra, ) ..
Name
},
[] = {
CustomCharacter = (Player)
_FIRST
_FIRST =
(()
GPM = ((LocalPlayer.PlayerScripts:(, ):(, )), )
PList = debug.(GPM, )
)
PList Player = (PList, Player.UserId) Player Player.model Player.model
}
}
Modules[.PlaceId] ~= Modules[.GameId] ~=
Module = Modules[.PlaceId] Modules[.GameId]
Module.Initialize Module.()
CustomPlayerTag = Module.CustomPlayerTag
CustomESP = Module.CustomESP
CustomCharacter = Module.CustomCharacter
GetHealth = Module.GetHealth
GetAliveState = Module.GetAliveState
CustomRootPartName = Module.CustomRootPartName
(Player)
CustomCharacter (Player) Player.Character
()
UserInputService:()
(Values)
X1, Y1, X2, Y2 = Values[], Values[], Values[], Values[]
MLocation = ()
(MLocation.x >= X1 MLocation.x <= (X1 + (X2 - X1))) (MLocation.y >= Y1 MLocation.y <= (Y1 + (Y2 - Y1)))
(t)
(t) ~=
(t, {
__call = (t, func)
(func) ~=
i, v (t) (func, i, v)
})
(format, ...) .(format, ...)
(Min, Max, Percent)
Min + .(((Max - Min) * Percent) + )
(InstanceName)
= .(InstanceName)
((Properties)
i, v (Properties) (Set, , i, v)
)
Menu:(Name, DrawingType, Properties)
.MenuDrawingData.Instances[Name] ~=
= .MenuDrawingData.Instances[Name]
i, v (Properties) (Set, , i, v)
= (DrawingType)(Properties)
.MenuDrawingData.Instances[Name] =
Menu:(Name)
= .MenuDrawingData.Instances[Name]
~=
((Properties)
i, v (Properties) (Set, , i, v)
)
Menu:(Name)
.MenuDrawingData.Instances[Name]
Options = ({}, {
__call = (t, ...)
Arguments = {...}; Name = Arguments[]; OIndex = OIndex +
(t, Name, ({
Name = Arguments[], Text = Arguments[], Value = Arguments[], DefaultValue = Arguments[], AllArgs = Arguments, Index = OIndex
}, {
__call = (t, v, force)
self = t
(t.Value) == t.()
(t.Value) ==
BT = Menu:((, t.Name))
force
Binding = ; Val =
Binding .(); Val = (Val + ) % ; BT.Text = Val <=
t.Value = force v BindedKey
BT t.BasePosition t.BaseSize
BT.Text = (t.Value):()
BT.Position = t.BasePosition + (t.BaseSize.X - BT.TextBounds.X - , -)
NewValue = v; NewValue == NewValue = t.Value
(t, , NewValue)
Arguments[] ~= Menu:().Visible
(Arguments[]) ==
AMT = Menu:((, t.Name)); AMT AMT.Text = (t.Value)
Inner = Menu:((, t.Name)); Inner Inner.Visible = t.Value
}))
})
()
_, Result = (readfile, OptionsFile)
_
_, Table = (HttpService.JSONDecode, HttpService, Result)
_ (Table) ==
i, v (Table)
(Options[i]) == Options[i].Value ~= ((Options[i].Value) == (Options[i].Value) == )
Options[i].Value = v.Value; (Options[i], v.Value)
Table.TeamColor TeamColor = .(Table.TeamColor.R, Table.TeamColor.G, Table.TeamColor.B)
Table.EnemyColor EnemyColor = .(Table.EnemyColor.R, Table.EnemyColor.G, Table.EnemyColor.B)
(Table.MenuKey) == Options.(.KeyCode[Table.MenuKey], )
(Table.ToggleKey) == Options.(.KeyCode[Table.ToggleKey], )
(, , )
(, , )
(, , )
(, , )
(, , )
(, , )
(, , )
(, , )
(, , )
(, , )
(, , )
(, , )
(, , , , )
(, , , , )
(, , , , )
(, , , -, )
(, , .KeyCode.F4, )
(, , .KeyCode.F3, )
(, SENTINEL_LOADED , ()
SENTINEL_LOADED
SubMenu:((), , {
{ Type = , Text = , Color = TeamColor,
Function = (Circ, Position)
() - ColorPicker.LastGenerated <
.CurrentColorPicker .CurrentColorPicker:()
CP = ColorPicker.(Position - (-, )); CurrentColorPicker = CP; .CurrentColorPicker = CP
CP.ColorChanged:((Color) Circ.Color = Color TeamColor = Color Options.TeamColor = Color )
},
{ Type = , Text = , Color = EnemyColor,
Function = (Circ, Position)
() - ColorPicker.LastGenerated <
.CurrentColorPicker .CurrentColorPicker:()
CP = ColorPicker.(Position - (-, )); CurrentColorPicker = CP; .CurrentColorPicker = CP
CP.ColorChanged:((Color) Circ.Color = Color EnemyColor = Color Options.EnemyColor = Color )
},
{ Type = , Text = , Function = ()
EnemyColor = .(, , ); TeamColor = .(, , )
C1 = Menu:(); C1 C1.Color = TeamColor
C2 = Menu:(); C2 C2.Color = EnemyColor
},
{ Type = , Text = , Function = () Rainbow = Rainbow }
})
, )
(, , ()
i, v (Options)
Options[i] ~= Options[i].Value ~= Options[i].Text ~= ((Options[i].Value) == (Options[i].Value) == (Options[i].Value) == )
Options[i](Options[i].DefaultValue, )
, )
(, , Load, )
(, , ()
, )
()
(, , )
(...)
Output = {}
i, v {...}
(v) == .(v, (i, v) Output[i] = v )
Output
Colors = {
White = .(),
Primary = { Main = .(), Light = .(), Dark = .() },
Secondary = { Main = .(), Light = .(), Dark = .() }
}
Connections:(Connection, Function)
NewConnection = Connection:(Function)
.(self.Active, NewConnection)
NewConnection
Connections:()
Index, Connection (self.Active)
Connection.Connected Connection:()
self.Active = {}
Signal.()
self = ({ _BindableEvent = .() }, Signal)
self
Signal:(Callback)
((Callback) == , .. (Callback))
self._BindableEvent.Event:((...) (...) )
Signal:(...) self._BindableEvent:(...)
Signal:() self._BindableEvent:()
Signal:() self._BindableEvent self._BindableEvent:()
(, MousePosition)
TopLeft = .Position; BottomRight = .Position + .Size
MousePosition = MousePosition ()
MousePosition.X > TopLeft.X MousePosition.Y > TopLeft.Y MousePosition.X < BottomRight.X MousePosition.Y < BottomRight.Y
ImageCache = {}
(, Url)
Data = IsSynapse :(Url) Url
[IsSynapse ] = ImageCache[Url] Data
ImageCache[Url] = Data
IsSynapse .() .Loaded
()
Drawings = { __Objects = {} }; Metatable = {}
Metatable.(self, Index)
Object = (self.__Objects, Index)
Object (IsSynapse Object.__SELF.__OBJECT_EXISTS)
Type = Index:(, Index:() - )
Success, Object = (.new, Type)
Object Success ()
self.__Objects[Index] = ({ __SELF = Object, Type = Type }, {
__call = (self, Properties)
Object = (self, ); IsSynapse Object.__OBJECT_EXISTS ,
Properties == Object.Visible = ; Object.Transparency = ; Object:();
(Properties) ==
Property, Value (Properties)
CanSet =
self.Type == IsSynapse Property == (Value) ==
CanSet =
(()
.() Object.Loaded
self.DefaultSize (self, , Object.Size)
Property = ; Value = Value.X / self.DefaultSize.X; Object[Property] = Value
)
CanSet Object[Property] = Value
Object
})
Object.Visible = ; Object.Transparency =
Type ==
.Fonts Object.Font = .Fonts.Monospace
Object.Size = ; Object.Color = .(, , ); Object.Center =
Object.Outline = ; OutlineOpacity =
Type == Type == Object.Thickness = ; Object.Filled =
self.__Objects[Index]
Object
Metatable.(self, Delete, ...)
Delete == Index, ((self, )) ()
(Drawings, Metatable)
Images = {}
(()
Images.Ring =
Images.Overlay =
)
ColorPicker.(Position, Size, Color)
ColorPicker.LastGenerated = (); ColorPicker.Loading =
self = { Color = Color .(, , ), HSV = { H = , S = , V = } }
Drawings = ()
Position = Position (); Size = Size
Padding = { , , , }
self.ColorChanged = Signal.()
Drawings[] { Color = .(, , ), Filled = , Visible = , Position = Position - (Padding[], Padding[]), Size = (Size, Size) + (Padding[] + Padding[], Padding[] + Padding[]) }
Drawings[] { Position = Position + ((Size, Size) / ), Radius = Size / - , Filled = , Thickness = , NumSides = , Color = .(, , ) }
Main = Drawings[] { Position = Position, Size = (Size, Size) }; (Main, Images.Ring)
Preview = Drawings[] { Position = Main.Position + (Main.Size / ), Size = Main.Size / , Color = .(, , ), Filled = , Thickness = }
Overlay = Drawings[] { Position = Preview.Position, Size = Preview.Size, Transparency = }; (Overlay, Images.Overlay)
CursorOutline = Drawings[] { Radius = , Thickness = , Filled = , Color = .(, , ), Position = (Main.Position.X + Main.Size.X - , Main.Position.Y + (Main.Size.Y / )) }
Drawings[] { Radius = , Transparency = , Filled = , Color = .(, , ), Position = CursorOutline.Position }
CursorOutlineSquare = Drawings[] { Radius = , Thickness = , Filled = , Color = .(, , ), Position = (Preview.Position.X + Preview.Size.X - , Preview.Position.Y + ) }
Drawings[] { Radius = , Transparency = , Filled = , Color = .(, , ), Position = CursorOutlineSquare.Position }
self:(Input)
MousePosition = (Input.Position.X, Input.Position.Y + )
self.MouseHeld
self.Item ==
Main = self.Drawings[] (); Preview = self.Drawings[] ()
Bounds = Main.Size / ; Center = Main.Position + Bounds
Relative = MousePosition - Center; Direction = Relative.unit
Position = Center + Direction * Main.Size.X /
H = (.(Position.Y - Center.Y, Position.X - Center.X)) *
H < H = + H
H = H / ; self.HSV.H = H
EndColor = .(H, self.HSV.S, self.HSV.V); EndColor ~= self.Color self.ColorChanged:(self.Color)
self.Drawings[] { Position = Position }
self.Drawings[] { Position = Position }
Preview.Color = .(H, , ); self.Color = EndColor
self.Drawings[] { Color = EndColor }
self.Item ==
Preview = self.Drawings[] (); HSV = self.HSV
Position = (.(MousePosition.X, Preview.Position.X, Preview.Position.X + Preview.Size.X), .(MousePosition.Y, Preview.Position.Y, Preview.Position.Y + Preview.Size.Y))
HSV.S = (Position.X - Preview.Position.X) / Preview.Size.X
HSV.V = - (Position.Y - Preview.Position.Y) / Preview.Size.Y
EndColor = .(HSV.H, HSV.S, HSV.V); EndColor ~= self.Color self.ColorChanged:(self.Color)
self.Color = EndColor
self.Drawings[] { Color = EndColor }
self.Drawings[] { Position = Position }
self.Drawings[] { Position = Position }
self:(Input, P, Type)
Type ==
Input.UserInputType.Name ==
Main = self.Drawings[] (); SquareSV = self.Drawings[] ()
MousePosition = (Input.Position.X, Input.Position.Y + )
self.MouseHeld = ; Bounds = Main.Size / ; Center = Main.Position + Bounds
R = (MousePosition - Center)
R.Magnitude < Bounds.X R.Magnitude > Bounds.X - self.Item =
MousePosition.X > SquareSV.Position.X MousePosition.Y > SquareSV.Position.Y MousePosition.X < SquareSV.Position.X + SquareSV.Size.X MousePosition.Y < SquareSV.Position.Y + SquareSV.Size.Y self.Item =
self:(Input, P)
Type ==
Input.UserInputType.Name == self:(Input, P)
Type == Input.UserInputType.Name == self.Item =
self:()
self.(); self.UpdatePosition = ; self.HandleInput =
Connections:()
Connections:(UserInputService.InputBegan, (Input, Process) self:(Input, Process, ) )
Connections:(UserInputService.InputChanged, (Input, Process)
Input.UserInputType.Name ==
MousePosition = (Input.Position.X, Input.Position.Y + )
self.Drawings[] { Filled = , Color = .(, , ), PointA = MousePosition + (, ), PointB = MousePosition + (, ), PointC = MousePosition + (, ), Thickness = }
self:(Input, Process, )
)
Connections:(UserInputService.InputEnded, (Input, Process)
self:(Input, Process, )
Input.UserInputType.Name == self.MouseHeld =
)
ColorPicker.Loading = ; self.Drawings = Drawings; self
SubMenu:(Position, Title, Options)
self.Open = ; Visible =
BasePosition = Position; BaseSize = (, )
End = BasePosition + BaseSize
self.Bounds = { BasePosition.X, BasePosition.Y, End.X, End.Y }
(, ()
self.Open
Menu:(, , { Size = BaseSize, Position = BasePosition, Filled = , Color = Colors.Primary.Main, Thickness = , Visible = Visible })
)
Menu:(, , { Position = BasePosition, Size = (BaseSize.X, ), Color = Colors.Primary.Dark, Filled = , Visible = Visible })
Menu:(, , { Position = BasePosition + (, ), Size = (BaseSize.X, ), Color = Colors.Primary.Main, Filled = , Visible = Visible })
Menu:(, , { Size = , Position = .MenuDrawingData.Instances[].Position + (, -), Text = Title , Color = Colors.Secondary.Light, Visible = Visible })
Menu:(, , { Size = BaseSize - (, ), Position = BasePosition + (, ), Filled = , Color = Colors.Secondary.Main, Transparency = , Visible = Visible })
Options
Index, Option (Options)
(Name) ():(Name, Index)
Position = .MenuDrawingData.Instances[].Position + (, Index * - )
Option.Type ==
ColorPreview = Menu:((), , { Position = Position, Color = Option.Color, Radius = IsSynapse , NumSides = , Filled = , Visible = })
Menu:((), , { Text = Option.Text, Position = ColorPreview.Position + (, -), Size = , Color = Colors.Primary.Dark, Visible = })
UIButtons[#UIButtons + ] = { FromSubMenu = , Option = () Option.(ColorPreview, BasePosition + (BaseSize.X, )) , = Menu:((, ()), , { Position = Position - (, ), Size = (BaseSize.X, ), Visible = }) }
Option.Type ==
UIButtons[#UIButtons + ] = { FromSubMenu = , Option = Option.Function, = Menu:((, ()), , { Size = (BaseSize.X, ) - (, ), Visible = , Transparency = , Position = Position - (, ), Color = Colors.Secondary.Light, Filled = }) }
Menu:((, ()), , { Text = Option.Text, Size = , Position = Position + (, -), Visible = , Color = Colors.Primary.Dark })
SubMenu:()
self.Open =
i, v (.MenuDrawingData.Instances)
i:(, ) ==
v.Visible =
i:(, ) == v:(); .MenuDrawingData.Instance[i] =
i, Button (UIButtons) Button.FromSubMenu UIButtons[i] =
(()
i = ,
.CurrentColorPicker .CurrentColorPicker:()
.()
)
CurrentColorPicker =
(NewPosition)
MenuLoaded = ; UIButtons = {}; Sliders = {}
BaseSize = (, )
BasePosition = NewPosition (Camera.ViewportSize.X / - (BaseSize.X / ), Camera.ViewportSize.Y / - (BaseSize.Y / ))
BasePosition = (.(BasePosition.X, , Camera.ViewportSize.X), .(BasePosition.Y, , Camera.ViewportSize.Y))
Menu:(, , { Visible = , Color = .(, , ), Transparency = , Thickness = })
Menu:(, , { Visible = , Color = .(, , ), Transparency = , Thickness = })
(, ()
Menu:(, , {
Size = BaseSize,
Position = BasePosition,
Filled = ,
Color = .(, , ),
Thickness = ,
Visible =
})
)
Menu:(, , { Position = BasePosition, Size = (BaseSize.X, ), Color = Colors.Primary.Dark, Filled = , Visible = })
Menu:(, , { Position = BasePosition + (, ), Size = (BaseSize.X, ), Color = Colors.Primary.Main, Filled = , Visible = })
Menu:(, , { Size = , Position = .MenuDrawingData.Instances.TopBarTwo.Position + (, ), Text = , Color = Colors.Secondary.Light, Visible = , Transparency = , Outline = , OutlineOpacity = })
Menu:(, , { Size = , Position = .MenuDrawingData.Instances.TopBarTwo.Position + (BaseSize.X - , ), Text = , Color = Colors.Secondary.Light, Visible = , Transparency = , Outline = , OutlineOpacity = })
Menu:(, , { Size = BaseSize - (, ), Position = BasePosition + (, ), Filled = , Color = Colors.Secondary.Main, Transparency = , Visible = })
CPos =
(Options)((i, v)
(v.Value) == (v.Text) v.Text ~=
CPos = CPos +
BaseSize = (BaseSize.X, )
BasePosition = .MenuDrawingData.Instances.Filling.Position + (, v.Index * - )
UIButtons[#UIButtons + ] = { Option = v, = Menu:((, v.Name), , { Position = BasePosition - (, ), Size = BaseSize, Visible = }) }
Menu:((, v.Name), , { Radius = , Position = BasePosition, Color = Colors.Secondary.Light, Filled = , Visible = })
Menu:((, v.Name), , { Radius = , Position = BasePosition, Color = Colors.Secondary.Dark, Filled = , Visible = v.Value })
Menu:((, v.Name), , { Text = v.Text, Size = , Position = BasePosition + (, -), Visible = , Color = Colors.Secondary.Light, Transparency = , Outline = , OutlineOpacity = })
)
(Options)((i, v)
(v.Value) ==
CPos = CPos +
BaseSize = (BaseSize.X, )
BasePosition = .MenuDrawingData.Instances.Filling.Position + (, CPos - )
Line = Menu:((, v.Name), , { Transparency = , Color = Colors.Secondary.Light, Filled = , Visible = , Position = BasePosition + (, -), Size = BaseSize - (, ), Transparency = })
Slider = Menu:((, v.Name), , { Visible = , Filled = , Color = Colors.Primary.Dark, Size = (, Line.Size.Y), Transparency = })
Text = Menu:((, v.Name), , { Text = v.Text, Size = , Center = , Transparency = , Outline = , OutlineOpacity = , Visible = , Color = Colors.White }); Text.Position = Line.Position + (Line.Size / ) - (, Text.TextBounds.Y / )
AMT = Menu:((, v.Name), , { Text = (v.Value), Size = , Center = , Transparency = , Outline = , OutlineOpacity = , Visible = , Color = Colors.White, Position = Text.Position })
CSlider = {Slider = Slider, Line = Line, Min = v.AllArgs[], Max = v.AllArgs[], Option = v}
Dummy = .()
Dummy:():(() Text.Transparency = Dummy.Value; AMT.Transparency = - Dummy.Value )
Dummy.Value =
CSlider:(Bool) self.ShowingValue = Bool; TweenService:(Dummy, TweenInfo.(, .EasingStyle.Quart, .EasingDirection.Out), { Value = Bool }):()
Sliders[#Sliders + ] = CSlider
Slider.Position = Line.Position + (, )
v.BaseSize = BaseSize; v.BasePosition = BasePosition
)
FirstItem =
(Options)((i, v)
(v.Value) ==
CPos = CPos + ( FirstItem ); FirstItem =
BaseSize = (BaseSize.X, FirstItem )
BasePosition = .MenuDrawingData.Instances.Filling.Position + (, CPos - )
UIButtons[#UIButtons + ] = { Option = v, = Menu:((, v.Name), , { Size = (BaseSize.X, ) - (, ), Visible = , Transparency = , Position = BasePosition + (, -), Color = Colors.Secondary.Light, Filled = }) }
Text = Menu:((, v.Name), , { Text = v.Text, Size = , Position = BasePosition + (, -), Visible = , Color = Colors.Secondary.Light, Transparency = , Outline = , OutlineOpacity = })
BindText = Menu:((, v.Name), , { Text = (v.Value):(), Size = , Position = BasePosition, Visible = , Color = Colors.Secondary.Light, Transparency = , Outline = , OutlineOpacity = })
Options[i].BaseSize = BaseSize; Options[i].BasePosition = BasePosition
BindText.Position = BasePosition + (BaseSize.X - BindText.TextBounds.X - , -)
)
(Options)((i, v)
(v.Value) ==
BaseSize = (BaseSize.X, )
BasePosition = .MenuDrawingData.Instances.Filling.Position + (, CPos + ( * v.AllArgs[]) - )
UIButtons[#UIButtons + ] = { Option = v, = Menu:((, v.Name), , { Size = (BaseSize.X, ) - (, ), Visible = , Transparency = , Position = BasePosition + (, -), Color = Colors.Secondary.Light, Filled = }) }
Text = Menu:((, v.Name), , { Text = v.Text, Size = , Position = BasePosition + (, -), Visible = , Color = Colors.Secondary.Light, Transparency = , Outline = , OutlineOpacity = })
)
(, () MenuLoaded = )
Menu:(, , { Visible = , Color = .(, , ), Transparency = , Thickness = })
Menu:(, , { Visible = , Color = .(, , ), Transparency = , Thickness = })
Menu:(, , { Visible = , Color = .(, , ), Transparency = , Thickness = })
()
(, () SubMenu:(()); SubMenu:() )
DrawingScreenGui
:():()
DrawingScreenGui = :():()
DrawingScreenGui = .()
DrawingScreenGui.Name =
DrawingScreenGui.Parent = :()
()
DrawingScreenGui
DrawingScreenGui.Enabled = DrawingScreenGui.Enabled
.UESP_InputChangedCon = UserInputService.InputChanged:((input)
input.UserInputType.Name == Options.MenuOpen.Value
i, v (Sliders)
Values = { v.Line.Position.X, v.Line.Position.Y, v.Line.Position.X + v.Line.Size.X, v.Line.Position.Y + v.Line.Size.Y }
(Values) v:(); MouseHeld v:()
)
.UESP_InputBeganCon = UserInputService.InputBegan:((input)
input.UserInputType.Name == Options.MenuOpen.Value
MouseHeld =
Bar = Menu:()
Values = { Bar.Position.X, Bar.Position.Y, Bar.Position.X + Bar.Size.X, Bar.Position.Y + Bar.Size.Y }
(Values)
DraggingUI =
DragOffset = Menu:().Position - ()
i, v (Sliders)
Values = { v.Line.Position.X, v.Line.Position.Y, v.Line.Position.X + v.Line.Size.X, v.Line.Position.Y + v.Line.Size.Y }
(Values) DraggingWhat = v; Dragging = ;
Dragging
Values = { TracerPosition.X - , TracerPosition.Y - , TracerPosition.X + , TracerPosition.Y + }
(Values) DragTracerPosition =
)
.UESP_InputEndedCon = UserInputService.InputEnded:((input)
input.UserInputType.Name == Options.MenuOpen.Value
MouseHeld = ; DragTracerPosition =
IgnoreOtherInput =
SubMenu.Open (SubMenu.Bounds)
CurrentColorPicker (CurrentColorPicker.Drawings[]()) IgnoreOtherInput =
IgnoreOtherInput SubMenu:()
IgnoreOtherInput
i, v (UIButtons)
SubMenu.Open (SubMenu.Bounds) v.FromSubMenu
Values = { v.Instance.Position.X, v.Instance.Position.Y, v.Instance.Position.X + v.Instance.Size.X, v.Instance.Position.Y + v.Instance.Size.Y }
(Values) v.(); IgnoreOtherInput = ;
i, v (Sliders)
IgnoreOtherInput
Values = { v.Line.Position.X, v.Line.Position.Y, v.Line.Position.X + v.Line.Size.X, v.Line.Position.Y + v.Line.Size.Y }
(Values) v:()
input.UserInputType.Name == Options.MenuOpen.Value DragTracerPosition
Values = { TracerPosition.X - , TracerPosition.Y - , TracerPosition.X + , TracerPosition.Y + }
(Values) DragTracerPosition = ; TracerPosition = (Camera.ViewportSize.X / , Camera.ViewportSize.Y - )
input.UserInputType.Name ==
Binding BindedKey = input.KeyCode; Binding =
input.KeyCode == Options.MenuKey.Value (input.KeyCode == .KeyCode.Home UserInputService:(.KeyCode.LeftControl))
Options.()
()
input.KeyCode == Options.ToggleKey.Value Options.()
input.KeyCode.Name == UserInputService:() .am_ic3
HD, LPlayer, LCharacter =
i, Player (Players:())
Character = (Player)
Player ~= LocalPlayer Player ~= Spectating Character Character:()
Head = Character:()
Head
Distance = (Camera.CFrame.Position - Head.Position).Magnitude
Distance > Options.MaxDistance.Value
Direction = -(Camera.CFrame.Position - Mouse.Hit.Position).unit
Relative = Character.Head.Position - Camera.CFrame.Position
Unit = Relative.unit
DP = Direction:(Unit)
DP > HD HD = DP; LPlayer = Player; LCharacter = Character
LPlayer LPlayer ~= Spectating LCharacter Camera.CameraSubject = LCharacter.Head; Spectating = LPlayer
LocalPlayer.Character LocalPlayer.Character:() Camera.CameraSubject = LocalPlayer.Character:(); Spectating =
)
()
.CurrentCamera:():(()
TracerPosition = (Camera.ViewportSize.X / , Camera.ViewportSize.Y - )
)
()
()
Options.MenuOpen.Value
(.MenuDrawingData.Instances)((i, v) OldData[v] (Set, v, , ) )
(.MenuDrawingData.Instances)((i, v) OldData[v] = v.Visible; if v.Visible then pcall(Set, v, 'Visible', false) end end)
end
end
local LastRayIgnoreUpdate, RayIgnoreList = 0, {}
local function CheckRay(Instance, Distance, Position, Unit)
local Pass = true; local Model = Instance
if Distance > 999 then return false end
if Instance.ClassName == 'Player' then Model = GetCharacter(Instance) end
if not Model then Model = Instance.Parent; if Model.Parent == workspace then Model = Instance end end
if not Model then return false end
local _Ray = Ray.new(Position, Unit * Distance)
if tick() - LastRayIgnoreUpdate > 3 then
LastRayIgnoreUpdate = tick()
table.clear(RayIgnoreList)
table.insert(RayIgnoreList, LocalPlayer.Character)
table.insert(RayIgnoreList, Camera)
if Mouse.TargetFilter then table.insert(RayIgnoreList, Mouse.TargetFilter) end
if #IgnoreList > 64 then while #IgnoreList > 64 do table.remove(IgnoreList, 1) end end
for i, v in pairs(IgnoreList) do table.insert(RayIgnoreList, v) end
end
local Hit = workspace:FindPartOnRayWithIgnoreList(_Ray, RayIgnoreList)
if Hit and not Hit:IsDescendantOf(Model) then
Pass = false
if Hit.Transparency >= 0.3 or not Hit.CanCollide and Hit.ClassName ~= 'Terrain' then table.insert(IgnoreList, Hit) end
end
return Pass
end
local function CheckTeam(Player)
if Player.Neutral and LocalPlayer.Neutral then return true end
return Player.TeamColor == LocalPlayer.TeamColor
end
local CustomTeam = CustomTeams[game.PlaceId]
if CustomTeam ~= nil then
if CustomTeam.Initialize then ypcall(CustomTeam.Initialize) end
CheckTeam = CustomTeam.CheckTeam
end
local function IsVisible(Player)
if not Options.VisCheck.Value then return true end
local character = GetCharacter(Player)
if not character then return false end
local head = character:FindFirstChild('Head')
if not head then return false end
local rootPart = character:FindFirstChild('HumanoidRootPart')
if not rootPart then return false end
local origin = Camera.CFrame.Position
local targets = {
head.Position,
rootPart.Position,
(head.Position + rootPart.Position) / 2
}
for _, target in pairs(targets) do
local direction = (target - origin).unit
local distance = (target - origin).Magnitude
if distance < 5 then return true end
local ray = Ray.new(origin, direction * distance)
local hit, position = workspace:FindPartOnRayWithIgnoreList(ray, {
LocalPlayer.Character,
Camera,
character
})
if not hit then
return true
end
if hit:IsDescendantOf(character) then
return true
end
end
return false
end
local BillboardConnections = {}
local BillboardDrawings = {}
local function CreateBillboardText(player)
if player == LocalPlayer then return end
local Text = NewDrawing('Text'){
Size = Options.TextSize.Value,
Color = Color3.new(1, 1, 1),
Center = true,
Outline = Options.TextOutline.Value,
OutlineOpacity = 0.5,
Visible = false,
Transparency = 1,
ZIndex = 3,
Font = Drawing.Fonts and Drawing.Fonts.Monospace or 3
}
BillboardDrawings[player] = {
Text = Text
}
local conn = RunService.RenderStepped:Connect(function()
local character = GetCharacter(player)
local text = BillboardDrawings[player]
if not text or not character or not Options.Enabled.Value then
if text and text.Text then text.Text.Visible = false end
return
end
local head = character:FindFirstChild('Head')
if not head then
text.Text.Visible = false
return
end
if Options.VisCheck.Value and not IsVisible(player) then
text.Text.Visible = false
return
end
local Vector, OnScreen = Camera:WorldToViewportPoint(head.Position + V3New(0, 2.5 + Options.YOffset.Value / 100, 0))
if OnScreen then
local distance = (Camera.CFrame.Position - head.Position).Magnitude
if distance > Options.MaxDistance.Value then
text.Text.Visible = false
return
end
local info = {}
if Options.ShowName.Value then
local name = player.Name
if CustomPlayerTag then
local tag = CustomPlayerTag(player)
if tag and #tag > 0 then name = name .. tag end
end
table.insert(info, name)
end
if Options.ShowHealth.Value then
local health = 100
if GetHealth then
health = GetHealth(player) or 100
elseif character:FindFirstChildOfClass('Humanoid') then
health = math.floor(character:FindFirstChildOfClass('Humanoid').Health)
end
table.insert(info, string.format('[%s HP]', health))
end
if Options.ShowDistance.Value then
table.insert(info, string.format('[%sm]', math.floor(distance)))
end
if #info == 0 then
text.Text.Visible = false
return
end
local color
if Rainbow then
color = Color3.fromHSV(tick() * 128 % 255 / 255, 1, 1)
elseif Options.ShowTeamColor.Value then
color = player.TeamColor.Color
elseif CheckTeam(player) then
color = TeamColor
else
color = EnemyColor
end
text.Text.Text = table.concat(info, ' ')
text.Text.Color = color
text.Text.Size = Options.TextSize.Value
text.Text.Outline = Options.TextOutline.Value
text.Text.Position = V2New(Vector.X, Vector.Y)
text.Text.Visible = true
else
text.Text.Visible = false
end
end)
table.insert(BillboardConnections, conn)
end
local function RemoveBillboard(player)
local text = BillboardDrawings[player]
if text and text.Text then
text.Text.Visible = false
text.Text:Remove()
end
BillboardDrawings[player] = nil
end
local function CreateAllBillboards()
for _, conn in pairs(BillboardConnections) do
conn:Disconnect()
end
BillboardConnections = {}
for _, text in pairs(BillboardDrawings) do
if text and text.Text then
text.Text.Visible = false
text.Text:Remove()
end
end
BillboardDrawings = {}
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
CreateBillboardText(player)
end
end
end
Players.PlayerAdded:Connect(function(player)
task.wait(0.5)
CreateBillboardText(player)
end)
Players.PlayerRemoving:Connect(function(player)
RemoveBillboard(player)
end)
LocalPlayer.CharacterAdded:Connect(function()
task.wait(1)
CreateAllBillboards()
end)
CreateAllBillboards()
local runService = game:GetService('RunService')
local players = game:GetService('Players')
local localPlayer = players.LocalPlayer
local camera = workspace.CurrentCamera
local newVector2, newColor3, newDrawing = Vector2.new, Color3.new, Drawing.new
local tan, rad = math.tan, math.rad
local round = function(...) local a = {}; for i,v in next, table.pack(...) do a[i] = math.round(v) end return unpack(a) end
local wtvp = function(...) local a, b = camera.WorldToViewportPoint(camera, ...) return newVector2(a.X, a.Y), b, a.Z end
local espCache = {}
local function GetESPColor(player)
if Rainbow then
return Color3.fromHSV(tick() * 128 % 255 / 255, 1, 1)
elseif Options.ShowTeamColor and Options.ShowTeamColor.Value then
return player.TeamColor.Color
elseif CheckTeam(player) then
return TeamColor
else
return EnemyColor
end
end
local function createEsp(player)
local drawings = {}
drawings.box = newDrawing('Square')
drawings.box.Thickness = 1
drawings.box.Filled = false
drawings.box.Color = GetESPColor(player)
drawings.box.Visible = false
drawings.box.ZIndex = 2
drawings.boxoutline = newDrawing('Square')
drawings.boxoutline.Thickness = 3
drawings.boxoutline.Filled = false
drawings.boxoutline.Color = GetESPColor(player)
drawings.boxoutline.Visible = false
drawings.boxoutline.ZIndex = 1
drawings.boxoutline.Transparency = 0.5
espCache[player] = drawings
end
local function removeEsp(player)
if rawget(espCache, player) then
for _, drawing in next, espCache[player] do
drawing:Remove()
end
espCache[player] = nil
end
end
local function updateEsp(player, esp)
local character = player and player.Character
if character then
local cframe = character:GetModelCFrame()
local position, visible, depth = wtvp(cframe.Position)
esp.box.Visible = visible
esp.boxoutline.Visible = visible
if cframe and visible then
if Options.VisCheck.Value and not IsVisible(player) then
esp.box.Visible = false
esp.boxoutline.Visible = false
return
end
local scaleFactor = 1 / (depth * tan(rad(camera.FieldOfView / 2)) * 2) * 1000
local width, height = round(4 * scaleFactor, 5 * scaleFactor)
local x, y = round(position.X, position.Y)
local boxSize = newVector2(width, height)
local boxPos = newVector2(round(x - width / 2, y - height / 2))
local color = GetESPColor(player)
esp.box.Size = boxSize
esp.box.Position = boxPos
esp.box.Color = color
esp.boxoutline.Size = boxSize
esp.boxoutline.Position = boxPos
esp.boxoutline.Color = color
esp.boxoutline.Transparency = 0.5
local distance = (Camera.CFrame.Position - character:FindFirstChild('HumanoidRootPart').Position).Magnitude
if distance > Options.MaxDistance.Value then
esp.box.Visible = false
esp.boxoutline.Visible = false
end
end
else
esp.box.Visible = false
esp.boxoutline.Visible = false
end
end
for _, player in next, players:GetPlayers() do
if player ~= localPlayer then
createEsp(player)
end
end
players.PlayerAdded:Connect(function(player)
createEsp(player)
end)
players.PlayerRemoving:Connect(function(player)
removeEsp(player)
end)
runService:BindToRenderStep('BoxESP', Enum.RenderPriority.Camera.Value, function()
for player, drawings in next, espCache do
if drawings and player ~= localPlayer then
updateEsp(player, drawings)
end
end
end)
local TracerConnections = {}
local TracerDrawings = {}
local function GetTracerColor(player)
if Rainbow then
return Color3.fromHSV(tick() * 128 % 255 / 255, 1, 1)
elseif Options.ShowTeamColor and Options.ShowTeamColor.Value then
return player.TeamColor.Color
elseif CheckTeam(player) then
return TeamColor
else
return EnemyColor
end
end
local function CreateTracers()
for _, conn in pairs(TracerConnections) do
conn:Disconnect()
end
for _, drawings in pairs(TracerDrawings) do
if drawings.Tracer then
drawings.Tracer.Visible = false
drawings.Tracer:Remove()
end
if drawings.TracerOutline then
drawings.TracerOutline.Visible = false
drawings.TracerOutline:Remove()
end
end
TracerConnections = {}
TracerDrawings = {}
for _, player in pairs(Players:GetPlayers()) do
if player == LocalPlayer then continue end
local TracerOutline = NewDrawing('Line'){
Thickness = 3,
Transparency = 0.5,
Color = GetTracerColor(player),
Visible = false
}
local Tracer = NewDrawing('Line'){
Thickness = 1,
Transparency = 0.7,
Color = GetTracerColor(player),
Visible = false
}
TracerDrawings[player] = {
Tracer = Tracer,
TracerOutline = TracerOutline
}
local conn = RunService.RenderStepped:Connect(function()
local character = GetCharacter(player)
if character and character:FindFirstChild('HumanoidRootPart') and Options.Enabled.Value and Options.ShowTracers.Value then
local rootPart = character.HumanoidRootPart
local Vector, OnScreen = Camera:WorldToViewportPoint((rootPart.CFrame * CFrame.new(0, -rootPart.Size.Y, 0)).Position)
if Options.VisCheck.Value and not IsVisible(player) then
Tracer.Visible = false
TracerOutline.Visible = false
return
end
local color = GetTracerColor(player)
Tracer.Color = color
TracerOutline.Color = color
TracerOutline.From = TracerPosition
Tracer.From = TracerPosition
if OnScreen then
Tracer.To = V2New(Vector.X, Vector.Y)
TracerOutline.To = V2New(Vector.X, Vector.Y)
local distance = (Camera.CFrame.Position - rootPart.Position).Magnitude
local show = distance <= Options.MaxDistance.Value
Tracer.Visible = show
TracerOutline.Visible = show
else
local head = character:FindFirstChild('Head')
if head then
local OPos = Camera.CFrame:pointToObjectSpace(head.Position)
local AT = math.atan2(OPos.Y, OPos.X) + math.pi
OPos = CFrame.Angles(0, 0, AT):vectorToWorldSpace((CFrame.Angles(0, math.rad(89.9), 0):vectorToWorldSpace(V3New(0, 0, -1))))
local edgePos = WorldToViewport(Camera.CFrame:pointToWorldSpace(OPos))
Tracer.To = V2New(edgePos.X, edgePos.Y)
TracerOutline.To = V2New(edgePos.X, edgePos.Y)
local distance = (Camera.CFrame.Position - head.Position).Magnitude
local show = distance <= Options.MaxDistance.Value
Tracer.Visible = show
TracerOutline.Visible = show
else
Tracer.Visible = false
TracerOutline.Visible = false
end
end
else
Tracer.Visible = false
TracerOutline.Visible = false
end
end)
table.insert(TracerConnections, conn)
end
end
Players.PlayerAdded:Connect(function(player)
task.wait(0.5)
CreateTracers()
end)
Players.PlayerRemoving:Connect(function(player)
local drawings = TracerDrawings[player]
if drawings then
if drawings.Tracer then
drawings.Tracer.Visible = false
drawings.Tracer:Remove()
end
if drawings.TracerOutline then
drawings.TracerOutline.Visible = false
drawings.TracerOutline:Remove()
end
TracerDrawings[player] = nil
end
end)
LocalPlayer.CharacterAdded:Connect(function()
task.wait(1)
CreateTracers()
end)
CreateTracers()
local HeadDotConnections = {}
local HeadDotDrawings = {}
local function GetHeadDotColor(player)
if Rainbow then
return Color3.fromHSV(tick() * 128 % 255 / 255, 1, 1)
elseif Options.ShowTeamColor and Options.ShowTeamColor.Value then
return player.TeamColor.Color
elseif CheckTeam(player) then
return TeamColor
else
return EnemyColor
end
end
local function CreateHeadDots()
for _, conn in pairs(HeadDotConnections) do
conn:Disconnect()
end
for _, drawings in pairs(HeadDotDrawings) do
if drawings.Dot then
drawings.Dot.Visible = false
drawings.Dot:Remove()
end
if drawings.DotOutline then
drawings.DotOutline.Visible = false
drawings.DotOutline:Remove()
end
end
HeadDotConnections = {}
HeadDotDrawings = {}
for _, player in pairs(Players:GetPlayers()) do
if player == LocalPlayer then continue end
local DotOutline = NewDrawing('Circle'){
Radius = 4,
Thickness = 3,
Filled = false,
Color = GetHeadDotColor(player),
Visible = false,
ZIndex = 1,
NumSides = 12,
Transparency = 0.5
}
local Dot = NewDrawing('Circle'){
Radius = 2,
Thickness = 0,
Filled = true,
Color = GetHeadDotColor(player),
Visible = false,
ZIndex = 2,
NumSides = 12
}
HeadDotDrawings[player] = {
Dot = Dot,
DotOutline = DotOutline
}
local conn = RunService.RenderStepped:Connect(function()
local character = GetCharacter(player)
if character and Options.Enabled.Value and Options.ShowDot.Value then
local head = character:FindFirstChild('Head')
if head then
local Vector, OnScreen = Camera:WorldToViewportPoint(head.Position)
if OnScreen then
if Options.VisCheck.Value and not IsVisible(player) then
Dot.Visible = false
DotOutline.Visible = false
return
end
local color = GetHeadDotColor(player)
Dot.Color = color
DotOutline.Color = color
local pos = V2New(Vector.X, Vector.Y)
Dot.Position = pos
DotOutline.Position = pos
local distance = (Camera.CFrame.Position - head.Position).Magnitude
local show = distance <= Options.MaxDistance.Value
Dot.Visible = show
DotOutline.Visible = show
else
Dot.Visible = false
DotOutline.Visible = false
end
else
Dot.Visible = false
DotOutline.Visible = false
end
else
if HeadDotDrawings[player] then
HeadDotDrawings[player].Dot.Visible = false
HeadDotDrawings[player].DotOutline.Visible = false
end
end
end)
table.insert(HeadDotConnections, conn)
end
end
Players.PlayerAdded:Connect(function(player)
task.wait(0.5)
CreateHeadDots()
end)
Players.PlayerRemoving:Connect(function(player)
local drawings = HeadDotDrawings[player]
if drawings then
if drawings.Dot then
drawings.Dot.Visible = false
drawings.Dot:Remove()
end
if drawings.DotOutline then
drawings.DotOutline.Visible = false
drawings.DotOutline:Remove()
end
HeadDotDrawings[player] = nil
end
end)
LocalPlayer.CharacterAdded:Connect(function()
task.wait(1)
CreateHeadDots()
end)
CreateHeadDots()
local LastInvalidCheck = 0
local function Update()
if tick() - LastInvalidCheck > 0.3 then
LastInvalidCheck = tick()
if Camera.Parent ~= workspace then Camera = workspace.CurrentCamera; CameraCon(); WTVP = Camera.WorldToViewportPoint end
end
if Options.MenuOpen.Value then
local Main = Menu:GetInstance('Main')
if Main then
if tick() - (shared.LastRainbowUpdate or 0) > 0.05 then
shared.LastRainbowUpdate = tick()
local hue = (tick() * 0.08) % 1
Main.Color = Color3.fromHSV(hue, 1, 1)
end
end
end
local CX = Menu:GetInstance('CrosshairX'); local CY = Menu:GetInstance('CrosshairY')
if Options.Crosshair.Value then
CX.Visible = true; CY.Visible = true
CX.To = V2New((Camera.ViewportSize.X / 2) - 8, (Camera.ViewportSize.Y / 2))
CX.From = V2New((Camera.ViewportSize.X / 2) + 8, (Camera.ViewportSize.Y / 2))
CY.To = V2New((Camera.ViewportSize.X / 2), (Camera.ViewportSize.Y / 2) - 8)
CY.From = V2New((Camera.ViewportSize.X / 2), (Camera.ViewportSize.Y / 2) + 8)
else CX.Visible = false; CY.Visible = false end
if Options.MenuOpen.Value and MenuLoaded then
local MLocation = GetMouseLocation()
local MainInstance = Menu:GetInstance('Main')
local Values = { MainInstance.Position.X, MainInstance.Position.Y, MainInstance.Position.X + MainInstance.Size.X, MainInstance.Position.Y + MainInstance.Size.Y }
if MainInstance and (MouseHoveringOver(Values) or (SubMenu.Open and MouseHoveringOver(SubMenu.Bounds))) then
Debounce.CursorVis = true
Menu:UpdateMenuInstance('Cursor1'){ Visible = true, From = V2New(MLocation.x, MLocation.y), To = V2New(MLocation.x + 5, MLocation.y + 6) }
Menu:UpdateMenuInstance('Cursor2'){ Visible = true, From = V2New(MLocation.x, MLocation.y), To = V2New(MLocation.x, MLocation.y + 8) }
Menu:UpdateMenuInstance('Cursor3'){ Visible = true, From = V2New(MLocation.x, MLocation.y + 6), To = V2New(MLocation.x + 5, MLocation.y + 5) }
else
if Debounce.CursorVis then Debounce.CursorVis = false
Menu:UpdateMenuInstance('Cursor1'){Visible = false}; Menu:UpdateMenuInstance('Cursor2'){Visible = false}; Menu:UpdateMenuInstance('Cursor3'){Visible = false}
end
end
if MouseHeld then
local MousePos = GetMouseLocation()
if Dragging then
DraggingWhat.Slider.Position = V2New(math.clamp(MLocation.X - DraggingWhat.Slider.Size.X / 2, DraggingWhat.Line.Position.X, DraggingWhat.Line.Position.X + DraggingWhat.Line.Size.X - DraggingWhat.Slider.Size.X), DraggingWhat.Slider.Position.Y)
local Percent = (DraggingWhat.Slider.Position.X - DraggingWhat.Line.Position.X) / ((DraggingWhat.Line.Position.X + DraggingWhat.Line.Size.X - DraggingWhat.Line.Position.X) - DraggingWhat.Slider.Size.X)
local Value = CalculateValue(DraggingWhat.Min, DraggingWhat.Max, Percent)
DraggingWhat.Option(Value)
elseif DraggingUI then
Debounce.UIDrag = true
local Main = Menu:GetInstance('Main')
Main.Position = MousePos + DragOffset
elseif DragTracerPosition then TracerPosition = MousePos end
else
Dragging = false; DragTracerPosition = false
if DraggingUI and Debounce.UIDrag then Debounce.UIDrag = false; DraggingUI = false; CreateMenu(Menu:GetInstance('Main').Position) end
end
if not Debounce.Menu then Debounce.Menu = true; ToggleMenu() end
elseif Debounce.Menu and not Options.MenuOpen.Value then
Debounce.Menu = false; ToggleMenu()
else
if Debounce.CursorVis then Debounce.CursorVis = false
Menu:UpdateMenuInstance('Cursor1'){Visible = false}; Menu:UpdateMenuInstance('Cursor2'){Visible = false}; Menu:UpdateMenuInstance('Cursor3'){Visible = false}
end
end
end
RunService:UnbindFromRenderStep(GetDataName)
RunService:UnbindFromRenderStep(UpdateName)
RunService:BindToRenderStep(UpdateName, 199, Update)Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: www.roblox.com, i.imgur.com.
Unnamed esp

Universal