Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UserInputService = :()
TweenService = :()
Workspace = :()
CoreGui = :()
Lighting = :()
ReplicatedStorage = :()
StatsService = :()
SoundService = :()
VirtualInputManager = :()
HttpService = :()
TeleportService = :()
Debris = :()
LocalPlayer = Players.LocalPlayer
()
Workspace.CurrentCamera Workspace:()
()
gethui
()
.protect_gui
CoreGui
CoreGui
(keyCode)
(()
VirtualInputManager (VirtualInputManager.SendKeyEvent) ==
VirtualInputManager:(, keyCode, , )
.()
VirtualInputManager:(, keyCode, , )
keypress keyrelease
(keyCode.Value)
.()
(keyCode.Value)
)
()
(()
VirtualInputManager (VirtualInputManager.SendMouseButtonEvent) ==
VirtualInputManager:(, , , , , )
.()
VirtualInputManager:(, , , , , )
mouse1click
()
)
FOLDER_NAME =
LMS_DIR = FOLDER_NAME ..
LMS_CFG_FILE = FOLDER_NAME ..
WAYPOINTS_FILE = FOLDER_NAME ..
MOBILE_POS_FILE = FOLDER_NAME ..
TIMEUI_POS_FILE = FOLDER_NAME ..
isfolder makefolder
(FOLDER_NAME) (FOLDER_NAME)
(FOLDER_NAME .. ) (FOLDER_NAME .. )
(LMS_DIR) (LMS_DIR)
CachedTrackAssets = {}
(trackName)
trackName trackName == trackName ==
CachedTrackAssets[trackName] CachedTrackAssets[trackName]
p1 = LMS_DIR .. .. trackName ..
p2 = LMS_DIR .. .. trackName ..
finalPath = (isfile (p1) p1) (isfile (p2) p2)
finalPath (getcustomasset getsynasset)
func = getcustomasset getsynasset
s, asset = (func, finalPath)
s asset
CachedTrackAssets[trackName] = asset
asset
()
list = { }
(()
isfolder (LMS_DIR)
files = (LMS_DIR)
files
_, path (files)
path:() path:()
name = path:():(, ):(, )
.(list, name)
(name)
)
.(list)
list
PreloadedFilesList = ()
Fluent = (:())()
SaveManager = (:())()
InterfaceManager = (:())()
GlobalConfig = {
SafeMode = ,
IsSpeeding = ,
WalkSpeed = ,
SpeedInterval = ,
SpeedMode = ,
Noclip = ,
NoclipMode = ,
FixEmoteProps = ,
EmoteFixRadius = ,
MouseTP = {
Enabled = ,
Mode = ,
MaxDistance = ,
HeightOffset = ,
VisualMarker = ,
MarkerColor = .(, , ),
MarkerSize = ,
},
Spawn = {
Enabled = ,
CubeSize = ,
SpawnPoint = .(-, , ),
ShowEdges = ,
EdgeColor = .(, , ),
},
Binds = {
Speed_Mode = ,
AH_Mode = ,
Noclip_Mode = ,
MouseTP_Mode = ,
Combat_Mode = ,
},
AH = {
Enabled = ,
Mode = ,
AttackMethod = ,
IgnoreSpawn = ,
BypassShield = ,
Height = ,
Distance = ,
Delay = ,
PingLimit = ,
TargetColor = .(, , ),
},
Combat = {
Enabled = ,
Guest_ParryQ = ,
Guest_FollowupE = ,
Guest_FollowupDelay = ,
Guest_FollowupRange = ,
Guest_Range = ,
TwoTime_Backstab = ,
TwoTime_Dist = ,
Shed_SlashDelay = ,
},
Gen = {
ESP_Enabled = ,
ESP_ShowPercent = ,
ESP_ShowDist = ,
FilterFakes = ,
ESP_Color = .(, , ),
},
Items = {
ESP_Enabled = ,
ShowDist = ,
Chams_Col = .(, , ),
},
LMS = {
Enabled = ,
Volume = ,
StartDelay = ,
StartEffect = ,
EffectVolume = ,
LoopTrack = ,
SurvivorTrack = ,
KillerTrack = ,
DOD_SurvCamDist = ,
DOD_KillerCamDist = ,
},
Vis = {
DoubleCheck = ,
Loc_Enabled = , Loc_Style = {Outline = , Fill = }, Loc_Fill = .(, , ), Loc_Out = .(, , ), Loc_LF = , Loc_LO = ,
K_Enabled = , K_Style = {Outline = , Fill = }, K_Fill = .(, , ), K_Out = .(, , ), K_LF = , K_LO = ,
S_Enabled = , S_Style = {Outline = , Fill = }, S_Fill = .(, , ), S_Out = .(, , ), S_LF = , S_LO = ,
Lobby_Enabled = , Lobby_Style = {Outline = , Fill = }, Lobby_Fill = .(, , ), Lobby_Out = .(, , ), Lobby_LF = , Lobby_LO = ,
Lobby_Box_Tog = , Lobby_Box_Fill = .(, , ), Lobby_Box_Out = .(, , ), Lobby_Box_Limp_Fill = , Lobby_Box_Limp_Out = ,
Lobby_Role_Tog = , Lobby_Role_Dir = , Lobby_Role_Order = , Lobby_Role_Fill = .(, , ), Lobby_Role_Out = .(, , ), Lobby_Role_Limp = ,
Box_WOffset = ,
Box_HOffset = ,
Surv_Box_Tog = , Surv_Box_Fill = .(, , ), Surv_Box_Out = .(, , ), Surv_Box_Limp_Fill = , Surv_Box_Limp_Out = ,
Killer_Box_Tog = , Killer_Box_Fill = .(, , ), Killer_Box_Out = .(, , ), Killer_Box_Limp_Fill= , Killer_Box_Limp_Out= ,
Tags_GlobalLimp = ,
Surv_Role_Tog = , Surv_Role_Dir = , Surv_Role_Order = , Surv_Role_Fill = .(, , ), Surv_Role_Out = .(, , ), Surv_Role_Limp = ,
Surv_Name_Tog = , Surv_Name_Dir = , Surv_Name_Order = , Surv_Name_Fill = .(, , ), Surv_Name_Out = .(, , ), Surv_Name_Limp = ,
Surv_Skin_Tog = , Surv_Skin_Dir = , Surv_Skin_Order = , Surv_Skin_Fill = .(, , ), Surv_Skin_Out = .(, , ), Surv_Skin_Limp = ,
Surv_Login_Tog = , Surv_Login_Dir = , Surv_Login_Order = , Surv_Login_Fill = .(, , ), Surv_Login_Out = .(, , ), Surv_Login_Limp = ,
Surv_HP_Tog = , Surv_HP_Dir = , Surv_HP_Order = , Surv_HP_Fill = .(, , ), Surv_HP_Out = .(, , ), Surv_HP_Limp = ,
Surv_Status_Tog = , Surv_Status_Dir = , Surv_Status_Order = , Surv_Status_Fill = .(, , ), Surv_Status_Out = .(, , ), Surv_Status_Limp = ,
Surv_Dist_Tog = , Surv_Dist_Dir = , Surv_Dist_Order = , Surv_Dist_Fill = .(, , ), Surv_Dist_Out = .(, , ), Surv_Dist_Limp = ,
Killer_Role_Tog = , Killer_Role_Dir = , Killer_Role_Order = , Killer_Role_Fill = .(, , ), Killer_Role_Out = .(, , ), Killer_Role_Limp = ,
Killer_Name_Tog = , Killer_Name_Dir = , Killer_Name_Order = , Killer_Name_Fill = .(, , ), Killer_Name_Out = .(, , ), Killer_Name_Limp = ,
Killer_Skin_Tog = , Killer_Skin_Dir = , Killer_Skin_Order = , Killer_Skin_Fill = .(, , ), Killer_Skin_Out = .(, , ), Killer_Skin_Limp = ,
Killer_Login_Tog = , Killer_Login_Dir = , Killer_Login_Order = , Killer_Login_Fill = .(, , ), Killer_Login_Out = .(, , ), Killer_Login_Limp = ,
Killer_HP_Tog = , Killer_HP_Dir = , Killer_HP_Order = , Killer_HP_Fill = .(, , ), Killer_HP_Out = .(, , ), Killer_HP_Limp = ,
Killer_Status_Tog = , Killer_Status_Dir = , Killer_Status_Order = , Killer_Status_Fill = .(, , ), Killer_Status_Out = .(, , ), Killer_Status_Limp = ,
Killer_Dist_Tog = , Killer_Dist_Dir = , Killer_Dist_Order = , Killer_Dist_Fill = .(, , ), Killer_Dist_Out = .(, , ), Killer_Dist_Limp = ,
Dist_Unit = ,
Fullbright = ,
AmbCol = .(, , ),
RemoveFog = ,
},
TimeUI = { Enabled = },
ShowMobileBtn = ,
}
(()
isfile (LMS_CFG_FILE)
saved = HttpService:((LMS_CFG_FILE))
saved
saved.SurvivorTrack GlobalConfig.LMS.SurvivorTrack = saved.SurvivorTrack
saved.KillerTrack GlobalConfig.LMS.KillerTrack = saved.KillerTrack
)
()
(()
writefile
data = {
SurvivorTrack = GlobalConfig.LMS.SurvivorTrack,
KillerTrack = GlobalConfig.LMS.KillerTrack,
}
(LMS_CFG_FILE, HttpService:(data))
)
ButtonSettings = {
Menu = { Size = , Transp = , Enabled = },
HideUI = { Size = , Transp = , Enabled = },
Speed = { Size = , Transp = , Enabled = },
AH = { Size = , Transp = , Enabled = },
Combat = { Size = , Transp = , Enabled = },
WP = { Size = , Transp = , Enabled = },
MouseTP = { Size = , Transp = , Enabled = },
}
GlobalState = {
ScriptActive = ,
CurrentPing = ,
Waypoints = {},
TP_Target = ,
LastBurstTick = ,
MouseTP_Primed = ,
LMS = {
IsCapturing = ,
VisualPlayed = ,
ShadowSound = ,
StartDelayTick = ,
DebouncePending = ,
DebounceStart = ,
FadeTween = ,
NativeSoundsTracked = {},
},
Vis = {
Highlights = {},
TagCache = {},
GenCache = {},
ItemCache = {},
GeneratorsList = {},
ItemsList = {},
KillerUserId = ,
VisualGUI = .()
},
AH = { LastAttack = , VisualGui = , VisualRot = },
Combat = { LastAction = , LastSlash = },
UpdateMobileBtn = ,
}
SafeGuiRoot = ()
GlobalState.Vis.VisualGUI.Name =
GlobalState.Vis.VisualGUI.Parent = SafeGuiRoot
VisualsGui = .()
VisualsGui.Name =
VisualsGui.ResetOnSpawn =
VisualsGui.IgnoreGuiInset =
VisualsGui.DisplayOrder =
VisualsGui.Enabled =
VisualsGui.Parent = SafeGuiRoot
FX_Gui = .()
FX_Gui.Name =
FX_Gui.ResetOnSpawn =
FX_Gui.IgnoreGuiInset =
FX_Gui.DisplayOrder =
FX_Gui.Parent = SafeGuiRoot
TimeScreenGui = .()
TimeScreenGui.Name =
TimeScreenGui.ResetOnSpawn =
TimeScreenGui.DisplayOrder =
TimeScreenGui.Enabled =
TimeScreenGui.Parent = SafeGuiRoot
TimeFrame = .(, TimeScreenGui)
TimeFrame.Name =
TimeFrame.Size = .(, )
TimeFrame.Position = .(, -, , )
TimeFrame.BackgroundColor3 = .(, , )
TimeFrame.BackgroundTransparency =
TimeFrame.BorderSizePixel =
TimeFrame.Active =
.(, TimeFrame).CornerRadius = .(, )
TimeStroke = .(, TimeFrame)
TimeStroke.Thickness =
TimeStroke.Color = .(, , )
TimeStroke.Transparency =
LiveDot = .(, TimeFrame)
LiveDot.Name =
LiveDot.Size = .(, )
LiveDot.Position = .(, , , -)
LiveDot.BackgroundColor3 = .(, , )
.(, LiveDot).CornerRadius = .(, )
TimeLabel = .(, TimeFrame)
TimeLabel.Size = .(, -, , )
TimeLabel.Position = .(, , , )
TimeLabel.BackgroundTransparency =
TimeLabel.Font = .Font.GothamBold
TimeLabel.TextSize =
TimeLabel.TextColor3 = .(, , )
TimeLabel.TextXAlignment = .TextXAlignment.Left
TimeLabel.Text = .()
draggingTime, dragTimeStart, timeStartPos = , ,
TimeFrame.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
draggingTime = ; dragTimeStart = input.Position; timeStartPos = TimeFrame.Position
)
TimeFrame.InputEnded:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
draggingTime =
writefile
(()
(TIMEUI_POS_FILE, HttpService:({
ScaleX = TimeFrame.Position.X.Scale, OffsetX = TimeFrame.Position.X.Offset,
ScaleY = TimeFrame.Position.Y.Scale, OffsetY = TimeFrame.Position.Y.Offset
}))
)
)
UserInputService.InputChanged:((input)
draggingTime (input.UserInputType == .UserInputType.MouseMovement input.UserInputType == .UserInputType.Touch)
delta = input.Position - dragTimeStart
TimeFrame.Position = .(timeStartPos.X.Scale, timeStartPos.X.Offset + delta.X, timeStartPos.Y.Scale, timeStartPos.Y.Offset + delta.Y)
)
MobileScreenGui = .()
MobileScreenGui.Name =
MobileScreenGui.ResetOnSpawn =
MobileScreenGui.DisplayOrder =
MobileScreenGui.Enabled =
MobileScreenGui.Parent = SafeGuiRoot
MOB_ICONS = {
Menu = ,
HideUI = ,
Speed = ,
AH = ,
Combat = ,
WP = ,
MouseTP = ,
}
(id, defaultPos)
isfile (MOBILE_POS_FILE)
success, res = (()
decoded = HttpService:((MOBILE_POS_FILE))
decoded decoded[id]
.(decoded[id].ScaleX, decoded[id].OffsetX, decoded[id].ScaleY, decoded[id].OffsetY)
)
success res res
defaultPos
MobileControl = { Buttons = {}, EditMode = }
MobileControl:(pos, btnSize)
vp = ().ViewportSize
absX = pos.X.Scale * vp.X + pos.X.Offset
absY = pos.Y.Scale * vp.Y + pos.Y.Offset
absX = .(absX, , .(, vp.X - btnSize - ))
absY = .(absY, , .(, vp.Y - btnSize - ))
.(absX, absY)
MobileControl:()
writefile
(()
data = {}
id, btn (self.Buttons)
btn.Canvas
data[id] = {
ScaleX = btn.Canvas.Position.X.Scale,
OffsetX = btn.Canvas.Position.X.Offset,
ScaleY = btn.Canvas.Position.Y.Scale,
OffsetY = btn.Canvas.Position.Y.Offset
}
(MOBILE_POS_FILE, HttpService:(data))
)
MobileControl:(id, icon, defaultPos, callback)
cfg = ButtonSettings[id] { Size = , Transp = , Enabled = }
btnFrame = .(, MobileScreenGui)
btnFrame.Name = .. id
btnFrame.Size = .(cfg.Size, cfg.Size)
btnFrame.Position = self:(defaultPos, cfg.Size)
btnFrame.BackgroundColor3 = .(, , )
btnFrame.BackgroundTransparency = cfg.Transp /
btnFrame.Visible = cfg.Enabled
btnFrame.Active =
.(, btnFrame).CornerRadius = .(, )
stroke = .(, btnFrame)
stroke.Thickness =
stroke.Color = .(, , )
img = .(, btnFrame)
img.Size = .(, ); img.Position = .(, )
img.BackgroundTransparency = ; img.Image = icon
img.ImageColor3 = .(, , )
clickDetector = .(, btnFrame)
clickDetector.Size = .(, ); clickDetector.BackgroundTransparency = ; clickDetector.Text =
dragging, dragStart, startPos = , ,
clickDetector.InputBegan:((input)
input.UserInputType == .UserInputType.Touch input.UserInputType == .UserInputType.MouseButton1
MobileControl.EditMode
dragging = ; dragStart = input.Position; startPos = btnFrame.Position
callback ()
)
clickDetector.InputEnded:((input)
input.UserInputType == .UserInputType.Touch input.UserInputType == .UserInputType.MouseButton1
dragging dragging = ; MobileControl:()
)
UserInputService.InputChanged:((input)
dragging (input.UserInputType == .UserInputType.Touch input.UserInputType == .UserInputType.MouseMovement)
delta = input.Position - dragStart
newPos = .(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
btnFrame.Position = MobileControl:(newPos, btnFrame.AbsoluteSize.X)
)
btnObj = {
Canvas = btnFrame, Stroke = stroke, Image = img,
ApplySettings = ()
curCfg = ButtonSettings[id]
btnFrame.Size = .(curCfg.Size, curCfg.Size)
btnFrame.BackgroundTransparency = curCfg.Transp /
btnFrame.Visible = curCfg.Enabled
,
SetState = (state)
stroke.Color = state .(, , ) .(, , )
}
self.Buttons[id] = btnObj
btnObj
MobileControl:(v)
self.EditMode = v
_, btn (self.Buttons)
btn.Stroke btn.Stroke.Color = v .(, , ) .(, , )
MobileControl:()
MobileScreenGui.Enabled = MobileScreenGui.Enabled
Options = Fluent.Options
(char)
char (char) ~=
char:() char:() char:() char.PrimaryPart
EmotePropBuffer = {
Tracked = {},
}
EmotePropBuffer:(part)
part part:()
self.Tracked[part] = .()
part.CanCollide =
part.CanTouch =
EmotePropBuffer:(rootPos)
now = .()
part, lastSeen (self.Tracked)
part.Parent part:(Workspace)
self.Tracked[part] =
dist = rootPos (part.Position - rootPos).Magnitude
dist > (now - lastSeen > )
(() part.CanCollide = )
self.Tracked[part] =
part.CanCollide =
part.CanTouch =
EmotePropBuffer:()
part, _ (self.Tracked)
part part.Parent
(() part.CanCollide = )
.(self.Tracked)
()
char = LocalPlayer.Character
GlobalConfig.FixEmoteProps
EmotePropBuffer:()
char
(()
_, part (char:())
part:()
part.Name ==
part.CanCollide =
part.CanCollide =
hum = char:()
hum
hum:(.HumanoidStateType.FallingDown, )
hum:(.HumanoidStateType.Ragdoll, )
)
RunService.Stepped:(()
GlobalConfig.SafeMode
char = LocalPlayer.Character
char
root = (char)
hum = char:()
shouldGhostEmotes = GlobalConfig.FixEmoteProps (GlobalConfig.Noclip GlobalConfig.NoclipMode == )
shouldGhostEmotes root
hum hum.SeatPart
EmotePropBuffer:(hum.SeatPart)
(()
_, connected (root:())
connected:() connected:(char)
EmotePropBuffer:(connected)
)
(()
r = (GlobalConfig.EmoteFixRadius)
overlap = OverlapParams.()
overlap.FilterType = .RaycastFilterType.Exclude
overlap.FilterDescendantsInstances = { char, GlobalState.Vis.VisualGUI }
nearby = Workspace:(root.Position, r, overlap)
mapBuild = Workspace:() Workspace.Map:() Workspace.Map.Ingame:() Workspace.Map.Ingame.Map:()
_, p (nearby)
isStatic = mapBuild p:(mapBuild)
isStatic p:() p.Size.Magnitude <
EmotePropBuffer:(p)
)
EmotePropBuffer:(root.Position)
GlobalConfig.Noclip (EmotePropBuffer.Tracked)
EmotePropBuffer:()
GlobalConfig.Noclip
hum
hum:(.HumanoidStateType.FallingDown, )
hum:(.HumanoidStateType.Ragdoll, )
(()
_, part (char:())
part:()
part.CanCollide =
GlobalConfig.NoclipMode ==
part.CanTouch =
)
GlobalConfig.NoclipMode ==
hitboxes = Workspace:()
hitboxes
(()
_, hb (hitboxes:())
hb:() (hb.Name:(LocalPlayer.Name) (hb:() hb:().Part0 hb:().Part0:(char)))
hb.CanCollide =
hb.CanTouch =
)
root GlobalConfig.IsSpeeding
curVel = root.AssemblyLinearVelocity
curVel.Magnitude >
root.AssemblyLinearVelocity = .(, .(curVel.Y, -, ), )
)
(featureName)
GlobalConfig.SafeMode
Fluent:({
Title = ,
Content = featureName .. ,
Duration = ,
Type =
})
(playerOrChar)
char = (playerOrChar) == (playerOrChar:() playerOrChar.Character playerOrChar)
char
ragFolder = Workspace:()
ragFolder char:(ragFolder)
hum = char:()
hum hum.Health > char:() ~=
(sliderVal, isEnabled)
isEnabled (sliderVal) ~=
.(sliderVal / , , )
SpawnEngine = {
CenterPos = GlobalConfig.Spawn.SpawnPoint,
InitialLocked = ,
Adornment = ,
SelectionBox = ,
}
SpawnEngine:()
self.Adornment (() self.Adornment:() ); self.Adornment = ; self.SelectionBox =
size = (GlobalConfig.Spawn.CubeSize)
adorn = .()
adorn.Name = ; adorn.Adornee = Workspace.Terrain
adorn.CFrame = .(self.CenterPos); adorn.Size = .(size, size, size)
adorn.Color3 = GlobalConfig.Spawn.EdgeColor; adorn.Transparency = ; adorn.AlwaysOnTop = ; adorn.ZIndex =
adorn.Visible = GlobalConfig.Spawn.ShowEdges GlobalConfig.Spawn.Enabled
adorn.Parent = GlobalState.Vis.VisualGUI
box = .()
box.Name = ; box.Adornee = adorn; box.Color3 = GlobalConfig.Spawn.EdgeColor
box.LineThickness = ; box.SurfaceTransparency = ; box.Transparency =
box.Visible = GlobalConfig.Spawn.ShowEdges GlobalConfig.Spawn.Enabled
box.Parent = adorn
self.Adornment = adorn; self.SelectionBox = box
SpawnEngine:(customPos)
targetPos = customPos
targetPos
root = LocalPlayer.Character (LocalPlayer.Character)
root targetPos = root.Position
targetPos
self.CenterPos = targetPos; self.InitialLocked =
GlobalConfig.Spawn.SpawnPoint = targetPos
self:()
SpawnEngine:()
self.Adornment self.SelectionBox
size = (GlobalConfig.Spawn.CubeSize)
self.Adornment.Size = .(size, size, size)
self.Adornment.CFrame = .(self.CenterPos)
self.Adornment.Color3 = GlobalConfig.Spawn.EdgeColor
self.SelectionBox.Color3 = GlobalConfig.Spawn.EdgeColor
self.Adornment.Visible = GlobalConfig.Spawn.ShowEdges GlobalConfig.Spawn.Enabled
self.SelectionBox.Visible = GlobalConfig.Spawn.ShowEdges GlobalConfig.Spawn.Enabled
SpawnEngine:(position)
GlobalConfig.Spawn.Enabled position
center = self.CenterPos
halfSize = ((GlobalConfig.Spawn.CubeSize) ) /
(position.X >= center.X - halfSize position.X <= center.X + halfSize)
(position.Y >= center.Y - halfSize position.Y <= center.Y + halfSize)
(position.Z >= center.Z - halfSize position.Z <= center.Z + halfSize)
(char)
char (char) ~=
{ DisplayName = , Username = , SkinName = , RealHP = , MaxHP = , Overheal = , TotalHP = , IsSlateskin = }
hum = char:()
realHP = hum hum.Health
maxHP = (hum hum.MaxHealth > ) hum.MaxHealth
overHP = (char:() )
dName = char:()
uName = char:()
sName = char:() char:()
p = Players:(char) Players:(char.Name)
fallbackName = p p.DisplayName char.Name
fallbackUser = p p.Name char.Name
finalName = (dName (dName) ~= (dName)) fallbackName
isNoobChar = (finalName:() == char.Name:():() ~= )
hasSlateskin = isNoobChar (char:() == char:() ~= )
{
IsInvincible = char:() == ,
IsStunned = (char:() == ),
IsFixingGen = char:() == ,
IsHelpless = char:() == char:() == ,
IsShielded = char:() ~= char:() ~= ,
IsSlateskin = hasSlateskin,
Overheal = overHP,
TotalHP = realHP + overHP,
RealHP = realHP,
MaxHP = maxHP,
DisplayName = finalName,
SkinName = (sName (sName) ~= (sName)) ,
Username = (uName (uName) ~= (uName)) fallbackUser,
}
()
(()
killersFolder = Workspace:() Workspace.Players:()
killersFolder
_, killerModel (killersFolder:())
p = Players:(killerModel)
p p.Character == killerModel
GlobalState.Vis.KillerUserId = p.UserId
GlobalState.Vis.KillerUserId
killerPlr = Players:(GlobalState.Vis.KillerUserId)
killerPlr killerPlr.Character
kRoot = (killerPlr.Character)
kHum = killerPlr.Character:()
kRoot kHum kHum.Health >
inSpawn = SpawnEngine:(kRoot.Position)
isExactly100 = .(kHum.Health - ) <
inSpawn isExactly100 GlobalState.Vis.KillerUserId =
GlobalState.Vis.KillerUserId =
GlobalState.Vis.KillerUserId =
GlobalState.Vis.KillerUserId GlobalConfig.Vis.DoubleCheck
maxHP, candidateUserId = ,
_, p (Players:())
p.Character (p)
pRoot = (p.Character)
pHum = p.Character:()
pRoot pHum SpawnEngine:(pRoot.Position)
pHum.Health > maxHP maxHP = pHum.Health; candidateUserId = p.UserId
candidateUserId maxHP > GlobalState.Vis.KillerUserId = candidateUserId
)
(playerOrChar, forcedRole)
forcedRole forcedRole ~= forcedRole
char = (playerOrChar) == (playerOrChar:() playerOrChar playerOrChar.Character)
p = (playerOrChar) == (playerOrChar:() playerOrChar Players:(char))
char
killersFolder = Workspace:() Workspace.Players:()
killersFolder char:(killersFolder)
survFolder = Workspace:() Workspace.Players:()
survFolder char:(survFolder)
p p.UserId == GlobalState.Vis.KillerUserId
MouseTPEngine = { MarkerPart = , SelectionSphere = }
MouseTPEngine:()
cam = ()
cam ,
mousePos = UserInputService:()
unitRay = cam:(mousePos.X, mousePos.Y)
params = RaycastParams.()
params.FilterType = .RaycastFilterType.Exclude
ignoreList = { GlobalState.Vis.VisualGUI }
LocalPlayer.Character .(ignoreList, LocalPlayer.Character)
params.FilterDescendantsInstances = ignoreList
params.IgnoreWater =
maxDist = (GlobalConfig.MouseTP.MaxDistance)
result = Workspace:(unitRay.Origin, unitRay.Direction * maxDist, params)
result result.Position, result.Normal
unitRay.Origin + (unitRay.Direction * maxDist), .(, , )
MouseTPEngine:()
self.MarkerPart self.MarkerPart.Parent
size = (GlobalConfig.MouseTP.MarkerSize)
part = .()
part.Name = ; part.Shape = .PartType.Cylinder
part.Size = .(, size, size); part.Anchored = ; part.CanCollide =
part.Material = .Material.Neon; part.Transparency = ; part.Color = GlobalConfig.MouseTP.MarkerColor
part.Parent = GlobalState.Vis.VisualGUI
sphere = .()
sphere.Adornee = part; sphere.Color3 = GlobalConfig.MouseTP.MarkerColor; sphere.Transparency = ; sphere.Parent = part
self.MarkerPart = part; self.SelectionSphere = sphere
MouseTPEngine:()
self.MarkerPart (() self.MarkerPart:() ); self.MarkerPart = ; self.SelectionSphere =
MouseTPEngine:()
()
char = LocalPlayer.Character
root = (char)
root
hitPos, _ = self:()
hitPos
hOffset = (GlobalConfig.MouseTP.HeightOffset)
root.CFrame = .(hitPos + .(, hOffset, ))
Fluent:({ Title = , Content = , Duration = , Type = })
MouseTPEngine:()
GlobalConfig.MouseTP.Enabled GlobalConfig.MouseTP.VisualMarker GlobalConfig.SafeMode
self.MarkerPart self:()
self:()
hitPos, hitNormal = self:()
hitPos self.MarkerPart
size = (GlobalConfig.MouseTP.MarkerSize)
self.MarkerPart.Size = .(, size, size)
self.MarkerPart.Color = GlobalConfig.MouseTP.MarkerColor
self.SelectionSphere self.SelectionSphere.Color3 = GlobalConfig.MouseTP.MarkerColor
self.MarkerPart.CFrame = .(hitPos, hitPos + hitNormal) * .(, .(), )
()
(()
data = {}
name, cf (GlobalState.Waypoints) data[name] = {cf:()}
(WAYPOINTS_FILE, HttpService:(data))
)
()
(()
isfile (WAYPOINTS_FILE)
data = HttpService:((WAYPOINTS_FILE))
data
name, comps (data)
(comps) == #comps ==
GlobalState.Waypoints[name] = .((comps))
)
()
(dt)
GlobalConfig.SafeMode GlobalConfig.IsSpeeding GlobalConfig.AH.Enabled
char = LocalPlayer.Character
root = (char)
hum = char char:()
char root hum
(()
hum.MoveDirection.Magnitude >
moveVec = hum.MoveDirection.Unit
now = .()
speed = (GlobalConfig.WalkSpeed)
intervalVal = (GlobalConfig.SpeedInterval)
intervalVal ==
GlobalConfig.SpeedMode == GlobalConfig.SpeedMode ==
root.AssemblyLinearVelocity = .(moveVec.X * speed, root.AssemblyLinearVelocity.Y, moveVec.Z * speed)
GlobalConfig.SpeedMode ==
root.CFrame = root.CFrame + (moveVec * (speed * dt))
GlobalConfig.SpeedMode ==
hum.WalkSpeed = speed
intervalSec = intervalVal /
sprintDuration =
totalCycle = intervalSec + sprintDuration
timeInCycle = (now - GlobalState.LastBurstTick) % totalCycle
timeInCycle <= sprintDuration
GlobalConfig.SpeedMode == GlobalConfig.SpeedMode ==
root.AssemblyLinearVelocity = .(moveVec.X * speed, root.AssemblyLinearVelocity.Y, moveVec.Z * speed)
GlobalConfig.SpeedMode ==
root.CFrame = root.CFrame + (moveVec * (speed * dt))
GlobalConfig.SpeedMode ==
hum.WalkSpeed = speed
GlobalConfig.SpeedMode == hum.WalkSpeed =
)
()
GlobalConfig.Combat.Enabled GlobalConfig.SafeMode
(LocalPlayer) ~=
char = LocalPlayer.Character
myRoot = (char)
char myRoot
myCombat = (char)
myNameLow = myCombat.DisplayName:()
(()
(myNameLow:() myNameLow:()) GlobalConfig.Combat.Guest_ParryQ
maxRange = (GlobalConfig.Combat.Guest_Range)
_, p (Players:())
p ~= LocalPlayer p.Character (p) (p) ==
kRoot = (p.Character)
kRoot (kRoot.Position - myRoot.Position).Magnitude <= maxRange
() - GlobalState.Combat.LastAction >=
GlobalState.Combat.LastAction = ()
(.KeyCode.Q)
GlobalConfig.Combat.Guest_FollowupE
followupDelay = (GlobalConfig.Combat.Guest_FollowupDelay)
.(followupDelay, ()
GlobalConfig.Combat.Enabled GlobalConfig.SafeMode
curChar = LocalPlayer.Character
curRoot = (curChar)
curChar curRoot (curChar)
eRange = (GlobalConfig.Combat.Guest_FollowupRange)
kRoot kRoot.Parent (kRoot.Position - curRoot.Position).Magnitude <= eRange
lookTarget = .(kRoot.Position.X, curRoot.Position.Y, kRoot.Position.Z)
curRoot.CFrame = .(curRoot.Position, lookTarget)
.()
(.KeyCode.E)
)
(myNameLow:() myNameLow:()) GlobalConfig.Combat.TwoTime_Backstab
_, p (Players:())
p ~= LocalPlayer p.Character (p) (p) ==
kRoot = (p.Character)
kRoot (kRoot.Position - myRoot.Position).Magnitude <=
bDist = (GlobalConfig.Combat.TwoTime_Dist)
kLook = kRoot.CFrame.LookVector
backPos = kRoot.Position - (kLook * bDist)
myRoot.CFrame = .(backPos, kRoot.Position)
myRoot.AssemblyLinearVelocity = .zero
()
(myNameLow:() myNameLow:())
slashDelay = (GlobalConfig.Combat.Shed_SlashDelay)
() - GlobalState.Combat.LastSlash >= slashDelay
_, p (Players:())
p ~= LocalPlayer p.Character (p) (p) ==
kRoot = (p.Character)
kRoot (kRoot.Position - myRoot.Position).Magnitude <=
GlobalState.Combat.LastSlash = ()
tool = char:()
tool tool:()
()
)
(targetRoot)
vis = GlobalState.AH.VisualGui
vis
bg = .()
bg.Name = ; bg.Size = .(, ); bg.AlwaysOnTop =
bg.Parent = GlobalState.Vis.VisualGUI
img = .(, bg)
img.Size = .(, ); img.BackgroundTransparency =
img.Image =
GlobalState.AH.VisualGui = { Gui = bg, Img = img }
vis = GlobalState.AH.VisualGui
targetRoot
vis.Gui.Enabled = ; vis.Gui.Adornee = targetRoot
vis.Img.ImageColor3 = GlobalConfig.AH.TargetColor
GlobalState.AH.VisualRot = (GlobalState.AH.VisualRot + ) %
vis.Img.Rotation = GlobalState.AH.VisualRot
vis.Gui.Enabled =
()
GlobalConfig.AH.Enabled GlobalConfig.SafeMode
(LocalPlayer) ~=
()
char = LocalPlayer.Character
myRoot = (char)
char myRoot
myCombat = (char)
myCombat.IsStunned myCombat.IsHelpless
(()
target =
validPlayers = {}
_, p (Players:())
p ~= LocalPlayer (p) (p) ==
tChar = p.Character
tRoot = (tChar)
tCombat = (tChar)
tRoot tChar
inSpawn = SpawnEngine:(tRoot.Position)
canTargetSpawn = (GlobalConfig.AH.IgnoreSpawn inSpawn)
isInvul = GlobalConfig.AH.BypassShield (tCombat.IsInvincible tCombat.IsShielded)
canTargetSpawn isInvul
.(validPlayers, {
Player = p,
Root = tRoot,
TotalHP = tCombat.TotalHP,
Distance = (tRoot.Position - myRoot.Position).Magnitude
})
#validPlayers >
GlobalConfig.AH.Mode ==
.(validPlayers, (a, b) a.Distance < b.Distance )
target = validPlayers[].Root
GlobalConfig.AH.Mode ==
.(validPlayers, (a, b) a.TotalHP < b.TotalHP )
target = validPlayers[].Root
GlobalConfig.AH.Mode ==
target = validPlayers[.(, #validPlayers)].Root
target
tVel = target.AssemblyLinearVelocity target.Velocity .zero
predictPos = target.Position + .(tVel.X, , tVel.Z) *
hVal = (GlobalConfig.AH.Height)
dVal = (GlobalConfig.AH.Distance)
targetCFrame = .(predictPos, predictPos + target.CFrame.LookVector) * .(, hVal, dVal)
myRoot.AssemblyLinearVelocity = .zero
myRoot.Velocity = .zero
myRoot.CFrame = targetCFrame
attackDelay = (GlobalConfig.AH.Delay)
() - GlobalState.AH.LastAttack >= attackDelay
GlobalState.AH.LastAttack = ()
GlobalConfig.AH.AttackMethod == GlobalConfig.AH.AttackMethod ==
()
GlobalConfig.AH.AttackMethod == GlobalConfig.AH.AttackMethod ==
tool = char:()
tool tool:()
(target)
()
)
(genModel)
genModel genModel.Parent
attr = genModel:()
genModel:()
genModel:()
genModel:()
attr (attr) ==
attr <= .(attr * ) .(attr)
_, desc (genModel:())
desc:() desc:()
_, bar (desc:())
(bar:() bar:()) bar.Size.X.Scale > bar.Size.X.Scale <=
bar.BackgroundColor3.G > bar.BackgroundColor3.R <
.(bar.Size.X.Scale * )
objStorage = Workspace:() ReplicatedStorage:()
objStorage
match = objStorage:(genModel.Name)
match
_, val (objStorage:())
val.Name:(genModel.Name) (genModel:() (val.Name):((genModel:())))
match = val
match (match:() match:())
v = match.Value
v <= .(v * ) .(v)
()
genList = {}
itmList = {}
seenItems = {}
map = Workspace:() Workspace.Map:()
map
_, obj (map:())
obj:() (obj.Name == obj.Name:())
isFake = obj:() ~=
obj:() ==
obj.Name:():() ~=
pVal = (obj)
rootPart = obj:() obj.PrimaryPart obj:()
.(genList, { Model = obj, Root = rootPart, IsFake = isFake, Progress = pVal })
pFolder = Workspace:()
scanFolders = { Workspace }
map .(scanFolders, map)
_, folder (scanFolders)
_, obj (folder:())
obj.Name ~= obj.Name ~= obj.Name ~=
toolCandidate = obj:() obj obj:()
toolCandidate seenItems[toolCandidate]
isEquipped = (pFolder toolCandidate:(pFolder))
toolCandidate:()
(toolCandidate.Parent toolCandidate.Parent:())
isEquipped
itemRoot = toolCandidate:()
toolCandidate:()
toolCandidate:()
toolCandidate:()
prompt = toolCandidate:(, )
nameLower = toolCandidate.Name:()
isFake = nameLower:() ~=
toolCandidate:() ==
toolCandidate:() ==
itemType =
nameLower:() nameLower:()
itemType =
nameLower:()
itemType = isFake
itemType itemRoot
seenItems[toolCandidate] =
.(itmList, {
= toolCandidate,
Root = itemRoot,
Prompt = prompt,
Name = itemType,
IsFake = isFake,
Key = (prompt and prompt.KeyboardKeyCode and prompt.KeyboardKeyCode.Name ~= "Unknown" and prompt.KeyboardKeyCode.Name) or "E"
})
end
end
end
end
end
end
GlobalState.Vis.GeneratorsList = genList
GlobalState.Vis.ItemsList = itmList
end
-- ═════════════════════════════════════════════════════════════════════════
-- 2.5D
-- ═════════════════════════════════════════════════════════════════════════
local LMS_Visuals = {}
local function CreateViewport3DModel(parent, sourceChar, isLeft, customDistance)
if not sourceChar or not sourceChar:IsA("Model") then return nil, nil end
local vp = Instance.new("ViewportFrame")
vp.Size = UDim2.fromScale(1, 1); vp.BackgroundTransparency = 1
vp.LightColor = Color3.fromRGB(255, 235, 235); vp.LightDirection = Vector3.new(isLeft and 1 or -1, 1, -2).Unit
vp.Ambient = Color3.fromRGB(130, 130, 130); vp.Parent = parent
local wm = Instance.new("WorldModel", vp)
local oldArch = sourceChar.Archivable
sourceChar.Archivable = true
local clonedChar = sourceChar:Clone()
sourceChar.Archivable = oldArch
if not clonedChar then return vp, nil end
for _, v in ipairs(clonedChar:GetDescendants()) do
if v:IsA("Script") or v:IsA("LocalScript") or v:IsA("ModuleScript") or v:IsA("Highlight") or v:IsA("BillboardGui") or v:IsA("Sound") then
pcall(function() v:Destroy() end)
elseif v:IsA("BasePart") then
v.Anchored = true; v.CanCollide = false
end
end
clonedChar.Parent = wm
local root = clonedChar:FindFirstChild("HumanoidRootPart") or clonedChar.PrimaryPart or clonedChar:FindFirstChild("Torso")
if root then
local cam = Instance.new("Camera", vp); vp.CurrentCamera = cam
local head = clonedChar:FindFirstChild("Head") or root
local focusPos = head.Position - Vector3.new(0, 0.6, 0)
local distVal = tonumber(customDistance) or 4.8
local camOffset = (isLeft and Vector3.new(2.2, 0.4, -distVal) or Vector3.new(-2.2, 0.4, -distVal))
cam.CFrame = CFrame.lookAt(focusPos + camOffset, focusPos)
end
return vp, clonedChar
end
LMS_Visuals["DOD"] = function()
local Container = Instance.new("Frame", FX_Gui)
Container.Name = "DOD_Container"; Container.Size = UDim2.fromScale(1, 1); Container.BackgroundTransparency = 1
local flash = Instance.new("Frame", Container)
flash.Size = UDim2.fromScale(1, 1); flash.BackgroundColor3 = Color3.fromRGB(180, 0, 0); flash.BackgroundTransparency = 0.3
TweenService:Create(flash, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { BackgroundTransparency = 1 }):Play()
local s = Instance.new("Sound", SoundService)
s.SoundId = "rbxassetid://82149378025190"; s.Volume = (tonumber(GlobalConfig.LMS.EffectVolume) or 1) * 0.9; s:Play()
Debris:AddItem(s, 6)
local killerChar, survChar = nil, nil
local killerName, survName = "Killer", "Survivor"
local killersFolder = Workspace:FindFirstChild("Players") and Workspace.Players:FindFirstChild("Killers")
if killersFolder then
for _, c in ipairs(killersFolder:GetChildren()) do
local p = Players:GetPlayerFromCharacter(c)
if p and p.Character == c and IsPlayerAlive(c) then
killerChar = c
killerName = tostring(c:GetAttribute("ActorDisplayName") or c.Name)
break
end
end
end
local survFolder = Workspace:FindFirstChild("Players") and Workspace.Players:FindFirstChild("Survivors")
if survFolder then
for _, c in ipairs(survFolder:GetChildren()) do
local p = Players:GetPlayerFromCharacter(c)
if p and p.Character == c and IsPlayerAlive(c) and not SpawnEngine:IsInSpawnZone(GetRoot(c) and GetRoot(c).Position) then
survChar = c
survName = tostring(c:GetAttribute("ActorDisplayName") or c.Name)
break
end
end
end
local leftGroup = Instance.new("Frame", Container)
leftGroup.Size = UDim2.new(0, 580, 0, 160); leftGroup.Position = UDim2.new(-0.6, 0, 0.02, 0); leftGroup.BackgroundTransparency = 1
local diesHeader = Instance.new("TextLabel", leftGroup)
diesHeader.Size = UDim2.new(1, 0, 0, 30); diesHeader.BackgroundTransparency = 1; diesHeader.Text = "Survivor"
diesHeader.TextColor3 = Color3.fromRGB(255, 255, 255); diesHeader.TextTransparency = 0.3
diesHeader.FontFace = Font.new("rbxasset://fonts/families/GothamSSm.json", Enum.FontWeight.Medium, Enum.FontStyle.Italic)
diesHeader.TextSize = 28; diesHeader.TextXAlignment = Enum.TextXAlignment.Left
local survBox = Instance.new("Frame", leftGroup)
survBox.Size = UDim2.new(1, 0, 0, 60); survBox.Position = UDim2.new(0, 0, 0, 35)
survBox.BackgroundColor3 = Color3.fromRGB(15, 15, 15); survBox.BackgroundTransparency = 0.2
local survStroke = Instance.new("UIStroke", survBox); survStroke.Color = Color3.fromRGB(40, 255, 120); survStroke.Thickness = 2
local survLbl = Instance.new("TextLabel", survBox); survLbl.Size = UDim2.fromScale(1, 1); survLbl.BackgroundTransparency = 1
survLbl.Text = survName; survLbl.TextColor3 = Color3.fromRGB(255, 255, 255); survLbl.Font = Enum.Font.GothamBold; survLbl.TextSize = 36
TweenService:Create(leftGroup, TweenInfo.new(0.65, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Position = UDim2.new(0.02, 0, 0.02, 0) }):Play()
local rightGroup = Instance.new("Frame", Container)
rightGroup.Size = UDim2.new(0, 580, 0, 160); rightGroup.Position = UDim2.new(1.6, -580, 0.02, 0); rightGroup.BackgroundTransparency = 1
local deathsHeader = Instance.new("TextLabel", rightGroup)
deathsHeader.Size = UDim2.new(1, 0, 0, 30); deathsHeader.BackgroundTransparency = 1; deathsHeader.Text = "Killer"
deathsHeader.TextColor3 = Color3.fromRGB(255, 255, 255); deathsHeader.TextTransparency = 0.3
deathsHeader.FontFace = Font.new("rbxasset://fonts/families/GothamSSm.json", Enum.FontWeight.Medium, Enum.FontStyle.Italic)
deathsHeader.TextSize = 28; deathsHeader.TextXAlignment = Enum.TextXAlignment.Right
local exeBox = Instance.new("Frame", rightGroup)
exeBox.Size = UDim2.new(1, 0, 0, 60); exeBox.Position = UDim2.new(0, 0, 0, 35)
exeBox.BackgroundColor3 = Color3.fromRGB(15, 15, 15); exeBox.BackgroundTransparency = 0.2
local exeStroke = Instance.new("UIStroke", exeBox); exeStroke.Color = Color3.fromRGB(255, 40, 40); exeStroke.Thickness = 2
local exeLbl = Instance.new("TextLabel", exeBox); exeLbl.Size = UDim2.fromScale(1, 1); exeLbl.BackgroundTransparency = 1
exeLbl.Text = killerName; exeLbl.TextColor3 = Color3.fromRGB(255, 255, 255); exeLbl.Font = Enum.Font.GothamBold; exeLbl.TextSize = 36
TweenService:Create(rightGroup, TweenInfo.new(0.65, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Position = UDim2.new(0.98, -580, 0.02, 0) }):Play()
local vsGroup = Instance.new("Frame", Container)
vsGroup.Size = UDim2.new(0, 180, 0, 80); vsGroup.AnchorPoint = Vector2.new(0.5, 0); vsGroup.Position = UDim2.new(0.5, 0, -0.3, 0)
vsGroup.BackgroundColor3 = Color3.fromRGB(15, 15, 15); vsGroup.BackgroundTransparency = 0.2
local vsStroke = Instance.new("UIStroke", vsGroup); vsStroke.Color = Color3.fromRGB(255, 215, 0); vsStroke.Thickness = 2
local vsCenterLbl = Instance.new("TextLabel", vsGroup); vsCenterLbl.Size = UDim2.fromScale(1, 1); vsCenterLbl.BackgroundTransparency = 1
vsCenterLbl.Text = "VS."; vsCenterLbl.TextColor3 = Color3.fromRGB(255, 220, 0); vsCenterLbl.Font = Enum.Font.FredokaOne; vsCenterLbl.TextSize = 44
TweenService:Create(vsGroup, TweenInfo.new(0.65, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Position = UDim2.new(0.5, 0, 0.025, 0) }):Play()
local survVPFrame, killerVPFrame
if survChar then
local sBoxHolder = Instance.new("Frame", Container)
sBoxHolder.Size = UDim2.fromScale(0.32, 0.58); sBoxHolder.AnchorPoint = Vector2.new(0, 1)
sBoxHolder.Position = UDim2.new(-0.35, 0, 1, 0); sBoxHolder.BackgroundTransparency = 1
CreateViewport3DModel(sBoxHolder, survChar, true, GlobalConfig.LMS.DOD_SurvCamDist)
TweenService:Create(sBoxHolder, TweenInfo.new(0.65, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Position = UDim2.new(0, 0, 1, 0) }):Play()
survVPFrame = sBoxHolder
end
if killerChar then
local kBoxHolder = Instance.new("Frame", Container)
kBoxHolder.Size = UDim2.fromScale(0.32, 0.58); kBoxHolder.AnchorPoint = Vector2.new(1, 1)
kBoxHolder.Position = UDim2.new(1.35, 0, 1, 0); kBoxHolder.BackgroundTransparency = 1
CreateViewport3DModel(kBoxHolder, killerChar, false, GlobalConfig.LMS.DOD_KillerCamDist)
TweenService:Create(kBoxHolder, TweenInfo.new(0.65, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), { Position = UDim2.new(1, 0, 1, 0) }):Play()
killerVPFrame = kBoxHolder
end
task.delay(3.5, function()
if leftGroup and leftGroup.Parent then TweenService:Create(leftGroup, TweenInfo.new(0.4, Enum.EasingStyle.Cubic, Enum.EasingDirection.In), { Position = UDim2.new(-0.6, 0, 0.02, 0) }):Play() end
if rightGroup and rightGroup.Parent then TweenService:Create(rightGroup, TweenInfo.new(0.4, Enum.EasingStyle.Cubic, Enum.EasingDirection.In), { Position = UDim2.new(1.6, -580, 0.02, 0) }):Play() end
if vsGroup and vsGroup.Parent then TweenService:Create(vsGroup, TweenInfo.new(0.4, Enum.EasingStyle.Cubic, Enum.EasingDirection.In), { Position = UDim2.new(0.5, 0, -0.3, 0) }):Play() end
if survVPFrame and survVPFrame.Parent then TweenService:Create(survVPFrame, TweenInfo.new(0.4, Enum.EasingStyle.Cubic, Enum.EasingDirection.In), { Position = UDim2.new(-0.35, 0, 1, 0) }):Play() end
if killerVPFrame and killerVPFrame.Parent then TweenService:Create(killerVPFrame, TweenInfo.new(0.4, Enum.EasingStyle.Cubic, Enum.EasingDirection.In), { Position = UDim2.new(1.35, 0, 1, 0) }):Play() end
task.wait(0.45)
if Container and Container.Parent then Container:Destroy() end
end)
end
LMS_Visuals["Pizza Tower"] = function()
local img = Instance.new("ImageLabel", FX_Gui)
img.BackgroundTransparency = 1; img.Size = UDim2.fromScale(0.55, 0.4); img.SizeConstraint = Enum.SizeConstraint.RelativeYY; img.AnchorPoint = Vector2.new(0.5, 0.5)
img.Position = UDim2.fromScale(0.5, 1.5); img.Image = "rbxassetid://77264911614141"
local s = Instance.new("Sound", SoundService); s.SoundId = "rbxassetid://96050676918804"; s.Volume = tonumber(GlobalConfig.LMS.EffectVolume) or 1; s:Play()
Debris:AddItem(s, 6)
TweenService:Create(img, TweenInfo.new(4.5, Enum.EasingStyle.Linear), { Position = UDim2.fromScale(0.5, -0.5) }):Play()
task.spawn(function()
local toggle = false
while img and img.Parent and img.Position.Y.Scale > -0.5 do
img.Image = toggle and "rbxassetid://77264911614141" or "rbxassetid://92555127882199"
toggle = not toggle; task.wait(0.05)
end
if img then img:Destroy() end
end)
end
LMS_Visuals["FNF"] = function()
local s = Instance.new("Sound", SoundService); s.SoundId = "rbxassetid://6555005549"; s.Volume = (tonumber(GlobalConfig.LMS.EffectVolume) or 1) * 0.4; s:Play()
Debris:AddItem(s, 5)
local function CreateText(id)
local im = Instance.new("ImageLabel", FX_Gui)
im.Size = UDim2.fromScale(0.4, 0.2); im.SizeConstraint = Enum.SizeConstraint.RelativeYY
im.AnchorPoint = Vector2.new(0.5, 0.5); im.Position = UDim2.fromScale(0.5, 0.5); im.BackgroundTransparency = 1; im.Image = "rbxassetid://" .. id; im.ImageTransparency = 1
return im
end
task.spawn(function()
local r = CreateText("6443228613")
TweenService:Create(r, TweenInfo.new(0.1), { ImageTransparency = 0 }):Play(); task.wait(0.6)
TweenService:Create(r, TweenInfo.new(0.1), { ImageTransparency = 1, Position = UDim2.fromScale(0.5, 0.4) }):Play(); r:Destroy()
local ready = CreateText("6443225217")
TweenService:Create(ready, TweenInfo.new(0.1), { ImageTransparency = 0 }):Play(); task.wait(0.6)
TweenService:Create(ready, TweenInfo.new(0.1), { ImageTransparency = 1, Position = UDim2.fromScale(0.5, 0.4) }):Play(); ready:Destroy()
local go = CreateText("6443224742")
TweenService:Create(go, TweenInfo.new(0.1), { ImageTransparency = 0 }):Play(); task.wait(0.8)
TweenService:Create(go, TweenInfo.new(0.5), { ImageTransparency = 1, Size = UDim2.fromScale(0.6, 0.3) }):Play(); go:Destroy()
end)
end
local function ResolveActiveTrackAsset()
local isLocalKiller = (GetPlayerRole(LocalPlayer) == "Killer")
local selectedTrack = isLocalKiller and GlobalConfig.LMS.KillerTrack or GlobalConfig.LMS.SurvivorTrack
return ResolveTrackAsset(selectedTrack)
end
local function EnforceNativeAudioMute(sound)
if not sound or not sound:IsA("Sound") then return end
if not sound:GetAttribute("DOOM_MUTED") then
sound:SetAttribute("DOOM_MUTED", true)
sound:SetAttribute("DOOM_ORIG_VOL", sound.Volume > 0 and sound.Volume or 1)
end
sound.Volume = 0
end
local function RestoreNativeAudioMute(sound)
if not sound or not sound:IsA("Sound") then return end
if sound:GetAttribute("DOOM_MUTED") then
local origVol = sound:GetAttribute("DOOM_ORIG_VOL") or 1
sound.Volume = origVol
sound:SetAttribute("DOOM_MUTED", nil)
sound:SetAttribute("DOOM_ORIG_VOL", nil)
end
end
local function RestoreAllNativeAudio()
local L = GlobalState.LMS
local themesFolder = Workspace:FindFirstChild("Themes")
if themesFolder then
for _, snd in ipairs(themesFolder:GetChildren()) do
if snd:IsA("Sound") then
RestoreNativeAudioMute(snd)
end
end
end
for snd, _ in pairs(L.NativeSoundsTracked) do
if snd and snd.Parent then
RestoreNativeAudioMute(snd)
end
end
table.clear(L.NativeSoundsTracked)
end
local function IsMatchActive()
local map = Workspace:FindFirstChild("Map")
local inGame = map and map:FindFirstChild("Ingame")
if not inGame then return false end
local misc = Workspace:FindFirstChild("Misc")
if misc and misc:FindFirstChild("KillerCutsceneBackground") then
return false
end
local spectating = Workspace:FindFirstChild("Players") and Workspace.Players:FindFirstChild("Spectating")
if spectating then
for _, obj in ipairs(spectating:GetDescendants()) do
if obj:IsA("ValueBase") and obj.Name == "EndOfRound" then
return false
end
end
end
return true
end
-- ── LMS DETECT ───────────────────────────────────────────────
local function DoLMSAudioEngine()
local L = GlobalState.LMS
if not GlobalConfig.LMS.Enabled then
if L.IsCapturing or (L.ShadowSound and L.ShadowSound.IsPlaying) then
L.IsCapturing = false
L.VisualPlayed = false
L.StartDelayTick = nil
RestoreAllNativeAudio()
if L.ShadowSound and L.ShadowSound.IsPlaying then
L.ShadowSound:Stop()
L.ShadowSound.SoundId = ""
end
end
return
end
pcall(function()
if not IsMatchActive() then
L.DebouncePending = false
L.IsCapturing = false
L.VisualPlayed = false
L.StartDelayTick = nil
RestoreAllNativeAudio()
if L.ShadowSound and L.ShadowSound.IsPlaying and not L.FadeTween then
L.FadeTween = TweenService:Create(L.ShadowSound, TweenInfo.new(0.8, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), { Volume = 0 })
L.FadeTween:Play()
L.FadeTween.Completed:Once(function()
if not L.IsCapturing and L.ShadowSound then
L.ShadowSound:Stop()
L.ShadowSound.SoundId = ""
end
L.FadeTween = nil
end)
end
return
end
local activeNativeLmsSounds = {}
local hasNativeSoundLms = false
local themesFolder = Workspace:FindFirstChild("Themes")
-- 1. LastSurvivor
if themesFolder then
local nativeLms = themesFolder:FindFirstChild("LastSurvivor")
if nativeLms and nativeLms:IsA("Sound") then
table.insert(activeNativeLmsSounds, nativeLms)
L.NativeSoundsTracked[nativeLms] = true
hasNativeSoundLms = true
EnforceNativeAudioMute(nativeLms)
end
local countWarn = themesFolder:FindFirstChild("30seconds")
if countWarn and countWarn:IsA("Sound") and L.IsCapturing then
table.insert(activeNativeLmsSounds, countWarn)
L.NativeSoundsTracked[countWarn] = true
EnforceNativeAudioMute(countWarn)
end
end
local has3DTrigger = false
for _, child in ipairs(Workspace:GetChildren()) do
if child:IsA("Model") and child.Name:match("%a+LMS$") and child ~= VisualsGui and child ~= FX_Gui then
has3DTrigger = true
break
end
end
local hasPlayerCountLms = false
local map = Workspace:FindFirstChild("Map")
local isRoundLoaded = map and map:FindFirstChild("Ingame") and map.Ingame:FindFirstChild("Map") and map.Ingame.Map:FindFirstChild("ServerTime")
if isRoundLoaded then
local survCount, killerCount = 0, 0
local pFolder = Workspace:FindFirstChild("Players")
local sf = pFolder and pFolder:FindFirstChild("Survivors")
local kf = pFolder and pFolder:FindFirstChild("Killers")
if sf and kf then
for _, c in ipairs(sf:GetChildren()) do
local p = Players:GetPlayerFromCharacter(c)
if p and p.Character == c and IsPlayerAlive(c) and not SpawnEngine:IsInSpawnZone(GetRoot(c) and GetRoot(c).Position) then
survCount = survCount + 1
end
end
for _, c in ipairs(kf:GetChildren()) do
local p = Players:GetPlayerFromCharacter(c)
if p and p.Character == c and IsPlayerAlive(c) and not SpawnEngine:IsInSpawnZone(GetRoot(c) and GetRoot(c).Position) then
killerCount = killerCount + 1
end
end
end
if survCount == 1 and killerCount >= 1 then
hasPlayerCountLms = true
end
end
local isLmsCondition = hasNativeSoundLms or has3DTrigger or hasPlayerCountLms
if not isLmsCondition and L.IsCapturing then
if not L.DebouncePending then
L.DebouncePending = true
L.DebounceStart = tick()
end
if tick() - L.DebounceStart < 2.5 then
isLmsCondition = true
else
L.DebouncePending = false
end
else
L.DebouncePending = false
end
local trackAsset = ResolveActiveTrackAsset()
local hasCustomTrack = (trackAsset ~= nil)
if isLmsCondition and hasCustomTrack then
if not L.StartDelayTick then L.StartDelayTick = tick() end
local delayVal = tonumber(GlobalConfig.LMS.StartDelay) or 0
if tick() - L.StartDelayTick >= delayVal then
L.IsCapturing = true
for _, snd in ipairs(activeNativeLmsSounds) do
EnforceNativeAudioMute(snd)
end
if not L.VisualPlayed and GlobalConfig.LMS.StartEffect ~= "None" then
local fxFunc = LMS_Visuals[GlobalConfig.LMS.StartEffect]
if fxFunc then
L.VisualPlayed = true
task.spawn(fxFunc)
end
end
if not L.ShadowSound then
local s = Instance.new("Sound")
s.Name = "Doom_LMS_Audio"; s.Parent = SoundService
L.ShadowSound = s
end
if L.ShadowSound.SoundId ~= trackAsset then
L.ShadowSound.SoundId = trackAsset
L.ShadowSound.Looped = GlobalConfig.LMS.LoopTrack
L.ShadowSound:Play()
end
if not L.ShadowSound.IsPlaying then L.ShadowSound:Play() end
L.ShadowSound.Volume = tonumber(GlobalConfig.LMS.Volume) or 1.0
end
else
L.StartDelayTick = nil
L.VisualPlayed = false
L.IsCapturing = false
RestoreAllNativeAudio()
if L.ShadowSound and L.ShadowSound.IsPlaying and not L.FadeTween then
L.FadeTween = TweenService:Create(L.ShadowSound, TweenInfo.new(1.0, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), { Volume = 0 })
L.FadeTween:Play()
L.FadeTween.Completed:Once(function()
if not L.IsCapturing and L.ShadowSound then
L.ShadowSound:Stop()
L.ShadowSound.SoundId = ""
end
L.FadeTween = nil
end)
end
end
end)
end
task.spawn(function()
local themes = Workspace:WaitForChild("Themes", 5)
if themes then
themes.ChildAdded:Connect(function(child)
if child:IsA("Sound") and child.Name == "LastSurvivor" and IsMatchActive() then
EnforceNativeAudioMute(child)
pcall(DoLMSAudioEngine)
end
end)
end
Workspace.ChildAdded:Connect(function(child)
if child:IsA("Model") and child.Name:match("%a+LMS$") and IsMatchActive() then
pcall(DoLMSAudioEngine)
end
end)
end)
-- ═════════════════════════════════════════════════════════════════════════
-- 2D BOX & 4-DIRECTIONAL TAGS ENGINE
-- ═════════════════════════════════════════════════════════════════════════
local function GetHighlight(model)
local cache = GlobalState.Vis.Highlights
if not cache[model] then
local hl = Instance.new("Highlight")
hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
hl.Parent = GlobalState.Vis.VisualGUI
cache[model] = hl
end
return cache[model]
end
local function GetTags(model)
local cache = GlobalState.Vis.TagCache
if not cache[model] or not cache[model].BoxFrame or not cache[model].BoxFrame.Parent then
local boxFrame = Instance.new("Frame")
boxFrame.Name = "Doom_2D_Box"
boxFrame.BackgroundTransparency = 1
boxFrame.BorderSizePixel = 0
boxFrame.Visible = false
boxFrame.ClipsDescendants = false
boxFrame.Position = UDim2.fromOffset(-5000, -5000)
boxFrame.Size = UDim2.fromOffset(0, 0)
boxFrame.ZIndex = 100
boxFrame.Parent = VisualsGui
local boxStroke = Instance.new("UIStroke", boxFrame)
boxStroke.Name = "BoxStroke"
boxStroke.Thickness = 1.5
boxStroke.Transparency = 1
local function MakeHolder(name, anchor, pos, hAlign, vAlign)
local h = Instance.new("Frame", boxFrame)
h.Name = name
h.BackgroundTransparency = 1
h.AnchorPoint = anchor
h.Position = pos
h.Size = UDim2.new(0, 260, 0, 0)
h.AutomaticSize = Enum.AutomaticSize.Y
h.ClipsDescendants = false
h.ZIndex = 101
local layout = Instance.new("UIListLayout", h)
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.HorizontalAlignment = hAlign
layout.VerticalAlignment = vAlign
layout.Padding = UDim.new(0, 1)
return h
end
local topHolder = MakeHolder("TopHolder", Vector2.new(0.5, 1), UDim2.new(0.5, 0, 0, -3), Enum.HorizontalAlignment.Center, Enum.VerticalAlignment.Bottom)
local botHolder = MakeHolder("BottomHolder",Vector2.new(0.5, 0), UDim2.new(0.5, 0, 1, 3), Enum.HorizontalAlignment.Center, Enum.VerticalAlignment.Top)
local leftHolder = MakeHolder("LeftHolder", Vector2.new(1, 0), UDim2.new(0, -4, 0, 0), Enum.HorizontalAlignment.Right, Enum.VerticalAlignment.Top)
local rightHolder = MakeHolder("RightHolder", Vector2.new(0, 0), UDim2.new(1, 4, 0, 0), Enum.HorizontalAlignment.Left, Enum.VerticalAlignment.Top)
local function CreateTagLabel(name)
local lbl = Instance.new("TextLabel")
lbl.Name = name
lbl.Text = ""
lbl.BackgroundTransparency = 1
lbl.Font = Enum.Font.GothamBold
lbl.TextSize = 12
lbl.TextColor3 = Color3.fromRGB(255, 255, 255)
lbl.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
lbl.TextStrokeTransparency = 0
lbl.TextTransparency = 0
lbl.Size = UDim2.new(1, 0, 0, 14)
lbl.Visible = false
lbl.ZIndex = 102
return lbl
end
cache[model] = {
BoxFrame = boxFrame,
BoxStroke = boxStroke,
Holders = { Top = topHolder, Bottom = botHolder, Left = leftHolder, Right = rightHolder },
SURV = {
Role = CreateTagLabel("SURV_Role"),
Name = CreateTagLabel("SURV_Name"),
Skin = CreateTagLabel("SURV_Skin"),
Login = CreateTagLabel("SURV_Login"),
HP = CreateTagLabel("SURV_HP"),
Status = CreateTagLabel("SURV_Status"),
Dist = CreateTagLabel("SURV_Dist"),
},
KILLER = {
Role = CreateTagLabel("KILLER_Role"),
Name = CreateTagLabel("KILLER_Name"),
Skin = CreateTagLabel("KILLER_Skin"),
Login = CreateTagLabel("KILLER_Login"),
HP = CreateTagLabel("KILLER_HP"),
Status = CreateTagLabel("KILLER_Status"),
Dist = CreateTagLabel("KILLER_Dist"),
},
LOBBY = {
Role = CreateTagLabel("LOBBY_Role"),
}
}
end
return cache[model]
end
local function ApplyHighlightESP(model, configPrefix)
local cfg = GlobalConfig.Vis
local isEnabled = cfg[configPrefix.."_Enabled"]
local hl = GetHighlight(model)
if isEnabled then
hl.Enabled = true; hl.Adornee = model
local styleDict = cfg[configPrefix.."_Style"] or {}
local hasFill = (styleDict["Fill"] == true) or (table.find(styleDict, "Fill") ~= nil)
local hasOut = (styleDict["Outline"] == true) or (table.find(styleDict, "Outline") ~= nil)
hl.FillColor = cfg[configPrefix.."_Fill"]
hl.OutlineColor = cfg[configPrefix.."_Out"]
hl.FillTransparency = hasFill and ((tonumber(cfg[configPrefix.."_LF"]) or 2) / 5) or 1
hl.OutlineTransparency = hasOut and ((tonumber(cfg[configPrefix.."_LO"]) or 0) / 5) or 1
else
hl.Enabled = false; hl.Adornee = nil
end
end
local function ClearAllEntityTags(tData)
if not tData then return end
tData.BoxFrame.Visible = false
tData.BoxFrame.Position = UDim2.fromOffset(-5000, -5000)
tData.BoxFrame.Size = UDim2.fromOffset(0, 0)
tData.BoxStroke.Enabled = false
for _, l in pairs(tData.SURV) do
l.Visible = false
l.Text = ""
end
for _, l in pairs(tData.KILLER) do
l.Visible = false
l.Text = ""
end
for _, l in pairs(tData.LOBBY) do
l.Visible = false
l.Text = ""
end
end
local function DoVisualsRender()
local cam = GetCamera()
if not cam then return end
if GlobalConfig.Vis.Fullbright then
Lighting.Ambient = GlobalConfig.Vis.AmbCol
Lighting.OutdoorAmbient = GlobalConfig.Vis.AmbCol
end
if GlobalConfig.Vis.RemoveFog then
for _, v in pairs(Lighting:GetChildren()) do
if v:IsA("Atmosphere") then v.Density = 0 end
if v:IsA("Fog") or v.Name == "Fog" then v.FogEnd = 100000 end
end
end
local myChar = LocalPlayer.Character
if myChar and IsPlayerAlive(myChar) then
ApplyHighlightESP(myChar, "Loc")
end
local cfg = GlobalConfig.Vis
local scannedModels = {}
local renderedThisFrame = {}
local MAX_ENTITY_DIST = 900
local MAX_LOBBY_DIST = 600
local function RenderModelVisuals(char, forcedRole)
if not char or typeof(char) ~= "Instance" or not char:IsA("Model") or scannedModels[char] then return end
scannedModels[char] = true
local tData = GetTags(char)
local p = Players:GetPlayerFromCharacter(char)
if not p then
local cand = Players:FindFirstChild(char.Name) or Players:FindFirstChild(tostring(char:GetAttribute("Username") or ""))
if cand and cand.Character == char then
p = cand
end
end
if char == LocalPlayer.Character or p == LocalPlayer or char.Name == LocalPlayer.Name then
ClearAllEntityTags(tData)
return
end
if not p or p.Character ~= char then
ClearAllEntityTags(tData)
local hl = GlobalState.Vis.Highlights[char]
if hl then hl.Enabled = false; hl.Adornee = nil end
return
end
local root = GetRoot(char)
local hum = char:FindFirstChildOfClass("Humanoid")
if not root or not hum or hum.Health <= 0 then
ClearAllEntityTags(tData)
local hl = GlobalState.Vis.Highlights[char]
if hl then hl.Enabled = false; hl.Adornee = nil end
return
end
local distStuds = (cam.CFrame.Position - root.Position).Magnitude
local inSpawn = SpawnEngine:IsInSpawnZone(root.Position)
local distLimit = inSpawn and MAX_LOBBY_DIST or MAX_ENTITY_DIST
if distStuds > distLimit then
ClearAllEntityTags(tData)
local hl = GlobalState.Vis.Highlights[char]
if hl then hl.Enabled = false; hl.Adornee = nil end
return
end
local role = forcedRole or (p and GetPlayerRole(p) or "Survivor")
local combat = GetCombatState(char)
if inSpawn then
if cfg.Lobby_Enabled then
ApplyHighlightESP(char, "Lobby")
else
local hl = GetHighlight(char)
hl.Enabled = false
hl.Adornee = nil
end
elseif role == "Killer" then
ApplyHighlightESP(char, "K")
else
ApplyHighlightESP(char, "S")
end
local rootPos = root.Position
local root2D, onScreen = cam:WorldToViewportPoint(rootPos)
if not onScreen or root2D.Z <= 0 then
ClearAllEntityTags(tData)
return
end
local topWorld = rootPos + Vector3.new(0, 2.5, 0)
local botWorld = rootPos - Vector3.new(0, 3.0, 0)
local top2D = cam:WorldToViewportPoint(topWorld)
local bot2D = cam:WorldToViewportPoint(botWorld)
if top2D.Z <= 0 or bot2D.Z <= 0 then
ClearAllEntityTags(tData)
return
end
local boxHeight = math.abs(bot2D.Y - top2D.Y)
boxHeight = math.max(boxHeight, 10)
local boxWidth = math.floor(boxHeight * 0.62)
local minX = math.floor(root2D.X - (boxWidth / 2))
local minY = math.floor(math.min(top2D.Y, bot2D.Y))
local maxX = minX + boxWidth
local maxY = minY + boxHeight
minX = minX - (tonumber(cfg.Box_WOffset) or 0)
maxX = maxX + (tonumber(cfg.Box_WOffset) or 0)
minY = minY - (tonumber(cfg.Box_HOffset) or 0)
maxY = maxY + (tonumber(cfg.Box_HOffset) or 0)
if distStuds <= 3.5 or minX >= maxX or minY >= maxY then
ClearAllEntityTags(tData)
return
end
local isBoxOn, boxFillCol, boxOutCol, fillTransp, outTransp
if inSpawn then
isBoxOn = cfg.Lobby_Box_Tog
boxFillCol = cfg.Lobby_Box_Fill
boxOutCol = cfg.Lobby_Box_Out
fillTransp = GetTrans(cfg.Lobby_Box_Limp_Fill, isBoxOn)
outTransp = GetTrans(cfg.Lobby_Box_Limp_Out, isBoxOn)
elseif role == "Killer" then
isBoxOn = cfg.Killer_Box_Tog
boxFillCol = cfg.Killer_Box_Fill
boxOutCol = cfg.Killer_Box_Out
fillTransp = GetTrans(cfg.Killer_Box_Limp_Fill, isBoxOn)
outTransp = GetTrans(cfg.Killer_Box_Limp_Out, isBoxOn)
else
isBoxOn = cfg.Surv_Box_Tog
boxFillCol = cfg.Surv_Box_Fill
boxOutCol = cfg.Surv_Box_Out
fillTransp = GetTrans(cfg.Surv_Box_Limp_Fill, isBoxOn)
outTransp = GetTrans(cfg.Surv_Box_Limp_Out, isBoxOn)
end
local function ProcessTagLabel(lbl, isTog, dir, order, fillCol, outCol, limpVal, textStr)
if not lbl then return end
if isTog and textStr and tostring(textStr) ~= "" then
local holder = tData.Holders[dir] or tData.Holders.Top
if lbl.Parent ~= holder then lbl.Parent = holder end
lbl.Text = tostring(textStr)
if dir == "Left" then lbl.TextXAlignment = Enum.TextXAlignment.Right
elseif dir == "Right" then lbl.TextXAlignment = Enum.TextXAlignment.Left
else lbl.TextXAlignment = Enum.TextXAlignment.Center end
lbl.TextColor3 = fillCol
lbl.TextStrokeColor3 = outCol
local dT = math.clamp((tonumber(cfg.Tags_GlobalLimp) or 0) / 5, 0, 1)
if type(limpVal) == "number" and limpVal > 0 then
dT = math.max(dT, math.clamp(limpVal / 5, 0, 1))
end
lbl.TextTransparency = dT
lbl.TextStrokeTransparency = dT
lbl.LayoutOrder = tonumber(order) or 1
lbl.Visible = true
else
lbl.Visible = false
lbl.Text = ""
end
end
local hpStr = math.floor(combat.RealHP) .. " / " .. math.floor(combat.MaxHP) .. " HP"
if combat.Overheal > 0 then hpStr = hpStr .. " (+" .. math.floor(combat.Overheal) .. " Overheal)" end
local distM = math.floor(distStuds / 3.57)
local distStr = (cfg.Dist_Unit == "Both" and (math.floor(distStuds) .. " studs (" .. distM .. "m)")) or (cfg.Dist_Unit == "Meters" and (distM .. "m")) or (math.floor(distStuds) .. " studs")
local statusBadges = {}
if combat.IsFixingGen then table.insert(statusBadges, "[FIXING]") end
if combat.IsStunned then table.insert(statusBadges, "[STUNNED]") end
if combat.IsInvincible then table.insert(statusBadges, "[INVINCIBLE]") end
if combat.IsShielded then table.insert(statusBadges, "[SHIELDED]") end
if combat.IsHelpless then table.insert(statusBadges, "[HELPLESS]") end
if combat.IsSlateskin then table.insert(statusBadges, "[SLATESKIN]") end
local statusStr = table.concat(statusBadges, " ")
if inSpawn then
for _, l in pairs(tData.SURV) do l.Visible = false; l.Text = "" end
for _, l in pairs(tData.KILLER) do l.Visible = false; l.Text = "" end
ProcessTagLabel(tData.LOBBY.Role, cfg.Lobby_Role_Tog, cfg.Lobby_Role_Dir, cfg.Lobby_Role_Order, cfg.Lobby_Role_Fill, cfg.Lobby_Role_Out, cfg.Lobby_Role_Limp, "[LOBBY]")
if not isBoxOn and not cfg.Lobby_Role_Tog then
ClearAllEntityTags(tData)
return
end
elseif role == "Killer" then
for _, l in pairs(tData.SURV) do l.Visible = false; l.Text = "" end
for _, l in pairs(tData.LOBBY) do l.Visible = false; l.Text = "" end
ProcessTagLabel(tData.KILLER.Role, cfg.Killer_Role_Tog, cfg.Killer_Role_Dir, cfg.Killer_Role_Order, cfg.Killer_Role_Fill, cfg.Killer_Role_Out, cfg.Killer_Role_Limp, "[KILLER]")
ProcessTagLabel(tData.KILLER.Name, cfg.Killer_Name_Tog, cfg.Killer_Name_Dir, cfg.Killer_Name_Order, cfg.Killer_Name_Fill, cfg.Killer_Name_Out, cfg.Killer_Name_Limp, combat.DisplayName)
ProcessTagLabel(tData.KILLER.Skin, cfg.Killer_Skin_Tog, cfg.Killer_Skin_Dir, cfg.Killer_Skin_Order, cfg.Killer_Skin_Fill, cfg.Killer_Skin_Out, cfg.Killer_Skin_Limp, "[" .. combat.SkinName .. "]")
ProcessTagLabel(tData.KILLER.Login, cfg.Killer_Login_Tog, cfg.Killer_Login_Dir, cfg.Killer_Login_Order, cfg.Killer_Login_Fill, cfg.Killer_Login_Out, cfg.Killer_Login_Limp, "@" .. combat.Username)
ProcessTagLabel(tData.KILLER.HP, cfg.Killer_HP_Tog, cfg.Killer_HP_Dir, cfg.Killer_HP_Order, cfg.Killer_HP_Fill, cfg.Killer_HP_Out, cfg.Killer_HP_Limp, hpStr)
ProcessTagLabel(tData.KILLER.Status, cfg.Killer_Status_Tog, cfg.Killer_Status_Dir, cfg.Killer_Status_Order, cfg.Killer_Status_Fill, cfg.Killer_Status_Out, cfg.Killer_Status_Limp, statusStr)
ProcessTagLabel(tData.KILLER.Dist, cfg.Killer_Dist_Tog, cfg.Killer_Dist_Dir, cfg.Killer_Dist_Order, cfg.Killer_Dist_Fill, cfg.Killer_Dist_Out, cfg.Killer_Dist_Limp, distStr)
else
for _, l in pairs(tData.KILLER) do l.Visible = false; l.Text = "" end
for _, l in pairs(tData.LOBBY) do l.Visible = false; l.Text = "" end
ProcessTagLabel(tData.SURV.Role, cfg.Surv_Role_Tog, cfg.Surv_Role_Dir, cfg.Surv_Role_Order, cfg.Surv_Role_Fill, cfg.Surv_Role_Out, cfg.Surv_Role_Limp, "[SURVIVOR]")
ProcessTagLabel(tData.SURV.Name, cfg.Surv_Name_Tog, cfg.Surv_Name_Dir, cfg.Surv_Name_Order, cfg.Surv_Name_Fill, cfg.Surv_Name_Out, cfg.Surv_Name_Limp, combat.DisplayName)
ProcessTagLabel(tData.SURV.Skin, cfg.Surv_Skin_Tog, cfg.Surv_Skin_Dir, cfg.Surv_Skin_Order, cfg.Surv_Skin_Fill, cfg.Surv_Skin_Out, cfg.Surv_Skin_Limp, "[" .. combat.SkinName .. "]")
ProcessTagLabel(tData.SURV.Login, cfg.Surv_Login_Tog, cfg.Surv_Login_Dir, cfg.Surv_Login_Order, cfg.Surv_Login_Fill, cfg.Surv_Login_Out, cfg.Surv_Login_Limp, "@" .. combat.Username)
ProcessTagLabel(tData.SURV.HP, cfg.Surv_HP_Tog, cfg.Surv_HP_Dir, cfg.Surv_HP_Order, cfg.Surv_HP_Fill, cfg.Surv_HP_Out, cfg.Surv_HP_Limp, hpStr)
ProcessTagLabel(tData.SURV.Status, cfg.Surv_Status_Tog, cfg.Surv_Status_Dir, cfg.Surv_Status_Order, cfg.Surv_Status_Fill, cfg.Surv_Status_Out, cfg.Surv_Status_Limp, statusStr)
ProcessTagLabel(tData.SURV.Dist, cfg.Surv_Dist_Tog, cfg.Surv_Dist_Dir, cfg.Surv_Dist_Order, cfg.Surv_Dist_Fill, cfg.Surv_Dist_Out, cfg.Surv_Dist_Limp, distStr)
end
tData.BoxFrame.Position = UDim2.fromOffset(minX, minY)
tData.BoxFrame.Size = UDim2.fromOffset(maxX - minX, maxY - minY)
tData.BoxFrame.BackgroundColor3 = boxFillCol
tData.BoxFrame.BackgroundTransparency = fillTransp
tData.BoxStroke.Color = boxOutCol
tData.BoxStroke.Transparency = outTransp
tData.BoxStroke.Enabled = isBoxOn
tData.BoxFrame.Visible = true
renderedThisFrame[char] = true
end
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character then
RenderModelVisuals(p.Character, nil)
end
end
for model, tData in pairs(GlobalState.Vis.TagCache) do
if not renderedThisFrame[model] then
ClearAllEntityTags(tData)
local hl = GlobalState.Vis.Highlights[model]
if hl then
hl.Enabled = false
hl.Adornee = nil
end
if not model or not model.Parent then
pcall(function()
if tData.BoxFrame and tData.BoxFrame.Parent then
tData.BoxFrame:Destroy()
end
end)
GlobalState.Vis.TagCache[model] = nil
end
end
end
for model, hl in pairs(GlobalState.Vis.Highlights) do
if not renderedThisFrame[model] and model ~= myChar then
hl.Enabled = false
hl.Adornee = nil
if not model or not model.Parent then
pcall(function() hl:Destroy() end)
GlobalState.Vis.Highlights[model] = nil
end
end
end
-- ── GENERATORS ESP ──
local activeGensThisFrame = {}
if GlobalConfig.Gen.ESP_Enabled then
for _, gen in ipairs(GlobalState.Vis.GeneratorsList) do
if gen.Root and gen.Model and gen.Model.Parent then
local distStuds = (cam.CFrame.Position - gen.Root.Position).Magnitude
local bg = GlobalState.Vis.GenCache[gen.Model]
if distStuds <= 800 then
activeGensThisFrame[gen.Model] = true
if not bg or not bg.Gui.Parent then
local bGui = Instance.new("BillboardGui")
bGui.Name = "Doom_Gen_ESP"
bGui.Size = UDim2.fromOffset(200, 20)
bGui.AlwaysOnTop = true
bGui.LightInfluence = 0
bGui.StudsOffset = Vector3.new(0, 2.0, 0)
bGui.Parent = GlobalState.Vis.VisualGUI
local lbl = Instance.new("TextLabel", bGui)
lbl.Size = UDim2.fromScale(1, 1)
lbl.BackgroundTransparency = 1
lbl.Font = Enum.Font.GothamBold
lbl.TextSize = 12
lbl.TextStrokeTransparency = 0
lbl.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
GlobalState.Vis.GenCache[gen.Model] = { Gui = bGui, Label = lbl }
bg = GlobalState.Vis.GenCache[gen.Model]
end
bg.Gui.Enabled = true
bg.Gui.Adornee = gen.Root
local distM = math.floor(distStuds / 3.57)
local str = gen.IsFake and "[FAKE GENERATOR]" or "GENERATOR"
if GlobalConfig.Gen.ESP_ShowPercent and not gen.IsFake then
str = str .. " [" .. math.floor(gen.Progress) .. "%]"
end
if GlobalConfig.Gen.ESP_ShowDist then
str = str .. " • " .. distM .. "m"
end
bg.Label.Text = str
bg.Label.TextColor3 = gen.IsFake and Color3.fromRGB(255, 50, 50) or GlobalConfig.Gen.ESP_Color
else
if bg then bg.Gui.Enabled = false; bg.Gui.Adornee = nil end
end
end
end
end
for model, bg in pairs(GlobalState.Vis.GenCache) do
if not activeGensThisFrame[model] then
if bg.Gui then bg.Gui.Enabled = false; bg.Gui.Adornee = nil end
if not model.Parent then
pcall(function() bg.Gui:Destroy() end)
GlobalState.Vis.GenCache[model] = nil
end
end
end
-- ── ITEMS ESP ──
local activeItemsThisFrame = {}
if GlobalConfig.Items.ESP_Enabled then
local myRoot = myChar and GetRoot(myChar)
local originPos = myRoot and myRoot.Position or cam.CFrame.Position
for _, itm in ipairs(GlobalState.Vis.ItemsList) do
if itm.Root and itm.Root.Parent and itm.Instance and itm.Instance.Parent then
local distStuds = (originPos - itm.Root.Position).Magnitude
if distStuds <= (200 * 3.57) then
activeItemsThisFrame[itm.Instance] = true
local bg = GlobalState.Vis.ItemCache[itm.Instance]
if not bg or not bg.Gui.Parent then
local bGui = Instance.new("BillboardGui")
bGui.Name = "Doom_Item_ESP"
bGui.Size = UDim2.fromOffset(200, 20)
bGui.AlwaysOnTop = true
bGui.LightInfluence = 0
bGui.StudsOffset = Vector3.new(0, 1.4, 0)
bGui.ResetOnSpawn = false
bGui.Parent = GlobalState.Vis.VisualGUI
local lbl = Instance.new("TextLabel", bGui)
lbl.Size = UDim2.fromScale(1, 1)
lbl.BackgroundTransparency = 1
lbl.Font = Enum.Font.GothamBold
lbl.TextSize = 12
lbl.TextStrokeTransparency = 0
lbl.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
GlobalState.Vis.ItemCache[itm.Instance] = { Gui = bGui, Label = lbl }
bg = GlobalState.Vis.ItemCache[itm.Instance]
end
bg.Gui.Enabled = true
bg.Gui.Adornee = itm.Root
local mainColor
if itm.IsFake then
mainColor = Color3.fromRGB(255, 50, 50)
elseif itm.Name == "Bloxy Cola" then
mainColor = Color3.fromRGB(255, 195, 45)
else
mainColor = GlobalConfig.Items.Chams_Col or Color3.fromRGB(50, 255, 130)
end
local distM = math.floor(distStuds / 3.57)
local textStr = "[" .. itm.Name:upper() .. "]"
if GlobalConfig.Items.ShowDist then
textStr = textStr .. " • " .. distM .. "m"
end
bg.Label.TextColor3 = mainColor
bg.Label.Text = textStr
end
end
end
end
for inst, cacheObj in pairs(GlobalState.Vis.ItemCache) do
if not activeItemsThisFrame[inst] then
if cacheObj.Gui then
cacheObj.Gui.Enabled = false
cacheObj.Gui.Adornee = nil
end
if not inst.Parent or not inst:FindFirstChild("ItemRoot") then
if cacheObj.Gui then pcall(function() cacheObj.Gui:Destroy() end) end
GlobalState.Vis.ItemCache[inst] = nil
end
end
end
end
local function WipeAllSessionBuffers()
for _, cacheObj in pairs(GlobalState.Vis.ItemCache) do
if cacheObj.Gui then pcall(function() cacheObj.Gui:Destroy() end) end
end
table.clear(GlobalState.Vis.ItemCache)
table.clear(GlobalState.Vis.ItemsList)
for _, bg in pairs(GlobalState.Vis.GenCache) do
if bg.Gui then pcall(function() bg.Gui:Destroy() end) end
end
table.clear(GlobalState.Vis.GenCache)
table.clear(GlobalState.Vis.GeneratorsList)
for _, tData in pairs(GlobalState.Vis.TagCache) do
ClearAllEntityTags(tData)
if tData.BoxFrame and tData.BoxFrame.Parent then
pcall(function() tData.BoxFrame:Destroy() end)
end
end
table.clear(GlobalState.Vis.TagCache)
for _, hl in pairs(GlobalState.Vis.Highlights) do
pcall(function() hl:Destroy() end)
end
table.clear(GlobalState.Vis.Highlights)
EmotePropBuffer:ClearAll()
GlobalState.Vis.KillerUserId = nil
local L = GlobalState.LMS
L.IsCapturing = false
L.VisualPlayed = false
L.StartDelayTick = nil
L.DebouncePending = false
RestoreAllNativeAudio()
if L.ShadowSound and L.ShadowSound.IsPlaying then
L.ShadowSound:Stop()
L.ShadowSound.SoundId = ""
end
end
local LastIngameFolder = nil
local function CheckRoundLifecycle()
local map = Workspace:FindFirstChild("Map")
local curIngame = map and map:FindFirstChild("Ingame")
if curIngame ~= LastIngameFolder then
LastIngameFolder = curIngame
WipeAllSessionBuffers()
if curIngame then
task.delay(0.6, function()
pcall(UpdateCachedWorldObjectsFast)
pcall(UpdateDynamicKillerRole)
end)
end
end
end
-- ═════════════════════════════════════════════════════════════════════════
-- UI INITIALIZATION
-- ═════════════════════════════════════════════════════════════════════════
local Window = Fluent:CreateWindow({
Title = "DOOMSENSE V1",
SubTitle = "Fluent " .. Fluent.Version,
TabWidth = 160,
Size = UDim2.fromOffset(580, 470),
Acrylic = false,
Theme = "Dark",
MinimizeKey = Enum.KeyCode.Insert
})
local Tabs = {
Main = Window:AddTab({ Title = "Main", Icon = "home" }),
Teleport = Window:AddTab({ Title = "Teleport", Icon = "map-pin" }),
AH = Window:AddTab({ Title = "Auto Hunt", Icon = "crosshair" }),
Combat = Window:AddTab({ Title = "Combat", Icon = "shield" }),
Visuals = Window:AddTab({ Title = "Visuals", Icon = "eye" }),
LMS = Window:AddTab({ Title = "Custom LMS", Icon = "music" }),
Mobile = Window:AddTab({ Title = "Mobile", Icon = "smartphone" }),
Settings = Window:AddTab({ Title = "Settings", Icon = "settings" }),
}
-- ── MAIN TAB ──
local TabMain = Tabs.Main
TabMain:AddSection("Safety")
TabMain:AddToggle("SafeModeTog", {
Title = "Safe Mode",
Description = "Disables active movement and combat features.",
Default = false,
Callback = function(v)
GlobalConfig.SafeMode = v
if v then
if Options.SpeedTog and Options.SpeedTog.Value then Options.SpeedTog:SetValue(false) end
if Options.NoclipTog and Options.NoclipTog.Value then Options.NoclipTog:SetValue(false) end
if Options.AHTog and Options.AHTog.Value then Options.AHTog:SetValue(false) end
if Options.MouseTP_Enabled and Options.MouseTP_Enabled.Value then Options.MouseTP_Enabled:SetValue(false) end
if Options.Combat_Tog and Options.Combat_Tog.Value then Options.Combat_Tog:SetValue(false) end
RestoreCollisions()
end
end
})
TabMain:AddSection("Movement Speed")
TabMain:AddToggle("SpeedTog", {
Title = "Enable Speedhack",
Default = false,
Callback = function(v)
if v and IsSafeBlocked("Speedhack") then Options.SpeedTog:SetValue(false); return end
GlobalConfig.IsSpeeding = v
GlobalState.LastBurstTick = os.clock()
if GlobalState.UpdateMobileBtn then GlobalState.UpdateMobileBtn("Speed", v) end
end
})
TabMain:AddKeybind("SpeedBind", { Title = "Speed Keybind", Default = "None", Mode = "Toggle", Callback = function() if GlobalConfig.Binds.Speed_Mode == "Toggle" and Options.SpeedTog then Options.SpeedTog:SetValue(not Options.SpeedTog.Value) end end })
TabMain:AddDropdown("SpeedBind_Mode", { Title = "Keybind Mode", Values = {"Toggle", "Hold"}, Default = "Toggle", Callback = function(v) GlobalConfig.Binds.Speed_Mode = v end })
TabMain:AddDropdown("SpeedMode", {
Title = "Speed Engine",
Values = {"Linear Mover (BodyPhysics)", "Smooth CFrame (Anti-Lag)", "Assembly Velocity", "Humanoid WalkSpeed"},
Default = "Linear Mover (BodyPhysics)",
Callback = function(v) GlobalConfig.SpeedMode = v end
})
TabMain:AddSlider("WalkSpeed", { Title = "Walk Speed", Default = 16, Min = 16, Max = 250, Rounding = 1, Callback = function(v) GlobalConfig.WalkSpeed = v end })
TabMain:AddSlider("SpeedInterval", {
Title = "Burst Interval (ms)",
Description = "0 = continuous movement. 1-5000 = sprint pulses.",
Default = 0, Min = 0, Max = 5000, Rounding = 0,
Callback = function(v) GlobalConfig.SpeedInterval = v; GlobalState.LastBurstTick = os.clock() end
})
TabMain:AddSection("Noclip System")
TabMain:AddToggle("NoclipTog", {
Title = "Enable Noclip",
Description = "Bypasses walls and obstacles.",
Default = false,
Callback = function(v)
if v and IsSafeBlocked("Noclip") then Options.NoclipTog:SetValue(false); return end
GlobalConfig.Noclip = v
if not v then RestoreCollisions() end
end
})
TabMain:AddKeybind("NoclipBind", { Title = "Noclip Keybind", Default = "None", Mode = "Toggle", Callback = function() if GlobalConfig.Binds.Noclip_Mode == "Toggle" and Options.NoclipTog then Options.NoclipTog:SetValue(not Options.NoclipTog.Value) end end })
TabMain:AddDropdown("NoclipBind_Mode", { Title = "Keybind Mode", Values = {"Toggle", "Hold"}, Default = "Toggle", Callback = function(v) GlobalConfig.Binds.Noclip_Mode = v end })
TabMain:AddDropdown("NoclipMode", {
Title = "Noclip Engine Mode",
Values = {"Classic Stepped", "Anti-Ejection Physics"},
Default = "Classic Stepped",
Callback = function(v) GlobalConfig.NoclipMode = v end
})
TabMain:AddSection("Emote Props Collision Fix")
TabMain:AddToggle("FixEmoteProps", {
Title = "Fix Emote Props Collision (Standalone)",
Description = "Игнорирует коллизии кресел и пропсов эмоций рядом с телом даже при выключенном ноклипе.",
Default = false,
Callback = function(v)
GlobalConfig.FixEmoteProps = v
if not v and not GlobalConfig.Noclip then
EmotePropBuffer:ClearAll()
end
end
})
TabMain:AddSlider("EmoteFixRadius", {
Title = "Emote Detect Radius",
Default = 7.5,
Min = 3.0,
Max = 15.0,
Rounding = 1,
Callback = function(v) GlobalConfig.EmoteFixRadius = v end
})
-- ── TELEPORT TAB ──
local TabTP = Tabs.Teleport
TabTP:AddSection("Mouse 3D Teleport")
TabTP:AddToggle("MouseTP_Enabled", {
Title = "Enable Mouse 3D TP",
Default = false,
Callback = function(v)
if v and IsSafeBlocked("Mouse Teleport") then Options.MouseTP_Enabled:SetValue(false); return end
GlobalConfig.MouseTP.Enabled = v
if not v then MouseTPEngine:DestroyMarker() end
if GlobalState.UpdateMobileBtn then GlobalState.UpdateMobileBtn("MouseTP", v) end
end
})
TabTP:AddKeybind("MouseTP_Bind", {
Title = "Mouse TP Keybind",
Default = "None",
Mode = "Toggle",
Callback = function()
if not GlobalConfig.MouseTP.Enabled then return end
if GlobalConfig.MouseTP.Mode == "Keybind Instant TP" then MouseTPEngine:Teleport() end
end
})
TabTP:AddDropdown("MouseTP_Mode", { Title = "Activation Mode", Values = {"Keybind Instant TP", "Keybind + Mouse Click"}, Default = "Keybind Instant TP", Callback = function(v) GlobalConfig.MouseTP.Mode = v end })
TabTP:AddSlider("MouseTP_Height", { Title = "Height Offset", Default = 0, Min = 0, Max = 15, Rounding = 1, Callback = function(v) GlobalConfig.MouseTP.HeightOffset = v end })
TabTP:AddSlider("MouseTP_MaxDist", { Title = "Max Raycast Distance", Default = 2000, Min = 100, Max = 5000, Rounding = 0, Callback = function(v) GlobalConfig.MouseTP.MaxDistance = v end })
TabTP:AddToggle("MouseTP_ShowVisual", { Title = "3D Target Marker", Default = false, Callback = function(v) GlobalConfig.MouseTP.VisualMarker = v end })
TabTP:AddColorpicker("MouseTP_MarkerCol", { Title = "Marker Color", Default = Color3.fromRGB(0, 255, 180), Callback = function(v) GlobalConfig.MouseTP.MarkerColor = v end })
TabTP:AddSlider("MouseTP_MarkerSize", { Title = "Marker Radius", Default = 3.5, Min = 1, Max = 15, Rounding = 1, Callback = function(v) GlobalConfig.MouseTP.MarkerSize = v end })
TabTP:AddSection("Waypoints")
local WP_Input = TabTP:AddInput("WP_Name", { Title = "Waypoint Name", Default = "Safe Spot" })
local WP_Drop = TabTP:AddDropdown("WP_Select", { Title = "Saved Waypoints", Values = {}, Default = nil })
local function RefreshWPList()
local list = {}
for name, _ in pairs(GlobalState.Waypoints) do table.insert(list, name) end
table.sort(list); WP_Drop:SetValues(list)
end
RefreshWPList()
TabTP:AddButton({
Title = "Save Position",
Callback = function()
local name = Options.WP_Name.Value
if name == "" then return Fluent:Notify({Title = "Error", Content = "Enter waypoint name!", Duration = 2}) end
local root = GetRoot(LocalPlayer.Character)
if root then
GlobalState.Waypoints[name] = root.CFrame
SaveWaypoints(); RefreshWPList(); WP_Drop:SetValue(name)
Fluent:Notify({Title = "Waypoint Saved", Content = name, Duration = 2, Type = "Success"})
end
end
})
TabTP:AddButton({
Title = "Teleport to Point",
Callback = function()
if IsSafeBlocked("Waypoint Teleport") then return end
local name = Options.WP_Select.Value
if name and GlobalState.Waypoints[name] then
local root = GetRoot(LocalPlayer.Character)
if root then root.CFrame = GlobalState.Waypoints[name]; Fluent:Notify({Title="Teleport", Content=name, Duration=2}) end
end
end
})
-- ── AUTO HUNT TAB ──
local TabAH = Tabs.AH
TabAH:AddSection("Auto Hunt [KILLER ONLY]")
TabAH:AddToggle("AHTog", {
Title = "Enable Auto Hunt",
Description = "Instant zero-velocity tracking. Active only when playing as Killer.",
Default = false,
Callback = function(v)
if v and IsSafeBlocked("Auto Hunt") then Options.AHTog:SetValue(false); return end
GlobalConfig.AH.Enabled = v
GlobalState.LastBurstTick = os.clock()
if not v then UpdateAHTargetVisual(nil) end
if GlobalState.UpdateMobileBtn then GlobalState.UpdateMobileBtn("AH", v) end
end
})
TabAH:AddToggle("AH_IgnoreSpawn", { Title = "Ignore Spawn Cube", Default = true, Callback = function(v) GlobalConfig.AH.IgnoreSpawn = v end })
TabAH:AddToggle("AH_BypassShield", { Title = "Ignore Invincible / Shielded", Default = true, Callback = function(v) GlobalConfig.AH.BypassShield = v end })
TabAH:AddKeybind("AHBind", { Title = "Auto Hunt Keybind", Default = "None", Mode = "Toggle", Callback = function() if GlobalConfig.Binds.AH_Mode == "Toggle" and Options.AHTog then Options.AHTog:SetValue(not Options.AHTog.Value) end end })
TabAH:AddDropdown("AHBind_Mode", { Title = "Keybind Mode", Values = {"Toggle", "Hold"}, Default = "Toggle", Callback = function(v) GlobalConfig.Binds.AH_Mode = v end })
TabAH:AddDropdown("AH_Mode", { Title = "Target Priority", Values = {"Nearest", "Lowest HP", "Random"}, Default = "Nearest", Callback = function(v) GlobalConfig.AH.Mode = v end })
TabAH:AddDropdown("AH_AttackMethod", { Title = "Attack Method", Values = {"Both", "Simulated Click", "Tool Activate"}, Default = "Both", Callback = function(v) GlobalConfig.AH.AttackMethod = v end })
TabAH:AddSlider("AH_Height", { Title = "Height Offset", Default = 0, Min = -15, Max = 15, Rounding = 1, Callback = function(v) GlobalConfig.AH.Height = v end })
TabAH:AddSlider("AH_Distance", { Title = "Distance Offset", Default = 0, Min = -15, Max = 15, Rounding = 1, Callback = function(v) GlobalConfig.AH.Distance = v end })
TabAH:AddSlider("AH_Delay", { Title = "Attack Delay (sec)", Default = 0.05, Min = 0.01, Max = 2, Rounding = 2, Callback = function(v) GlobalConfig.AH.Delay = v end })
TabAH:AddColorpicker("AH_Color", { Title = "Crosshair Color", Default = Color3.fromRGB(255, 50, 50), Callback = function(v) GlobalConfig.AH.TargetColor = v end })
-- ── COMBAT TAB ──
local TabCombat = Tabs.Combat
TabCombat:AddSection("Combat Suite [SURVIVOR ONLY]")
TabCombat:AddToggle("Combat_Tog", {
Title = "Enable Combat Suite",
Description = "Active only when playing as Survivor.",
Default = false,
Callback = function(v)
if v and IsSafeBlocked("Combat Module") then Options.Combat_Tog:SetValue(false); return end
GlobalConfig.Combat.Enabled = v
if GlobalState.UpdateMobileBtn then GlobalState.UpdateMobileBtn("Combat", v) end
end
})
TabCombat:AddParagraph({ Title = "Guest 1337 / Sixer", Content = "Auto Parry on 'Q' -> Followup strike/ram on 'E' (У) after delay." })
TabCombat:AddToggle("Combat_1337_Parry", { Title = "Auto Melee Parry (Q)", Default = true, Callback = function(v) GlobalConfig.Combat.Guest_ParryQ = v end })
TabCombat:AddSlider("Combat_1337_Dist", { Title = "Parry Range (Studs)", Default = 14, Min = 6, Max = 25, Rounding = 1, Callback = function(v) GlobalConfig.Combat.Guest_Range = v end })
TabCombat:AddToggle("Combat_1337_FollowE", { Title = "Auto Strike/Ram on 'E' (У) after Q", Default = true, Callback = function(v) GlobalConfig.Combat.Guest_FollowupE = v end })
TabCombat:AddSlider("Combat_1337_EDelay", { Title = "E (У) Followup Delay (sec)", Default = 1.0, Min = 0.2, Max = 2.5, Rounding = 1, Callback = function(v) GlobalConfig.Combat.Guest_FollowupDelay = v end })
TabCombat:AddSlider("Combat_1337_ERange", { Title = "E (У) Max Distance (Studs)", Default = 18, Min = 6, Max = 35, Rounding = 1, Callback = function(v) GlobalConfig.Combat.Guest_FollowupRange = v end })
TabCombat:AddParagraph({ Title = "TwoTime", Content = "180° Rear positioning for guaranteed backstab critical hits." })
TabCombat:AddToggle("Combat_TwoTime_Back", { Title = "Enable Rear Backstab", Default = false, Callback = function(v) GlobalConfig.Combat.TwoTime_Backstab = v end })
TabCombat:AddSlider("Combat_TwoTime_Dist", { Title = "Back Distance (Studs)", Default = 3.5, Min = 1.0, Max = 8.0, Rounding = 1, Callback = function(v) GlobalConfig.Combat.TwoTime_Dist = v end })
TabCombat:AddParagraph({ Title = "Shedletsky", Content = "Single sword slash with recharge cooldown control (no block)." })
TabCombat:AddSlider("Combat_Shed_Delay", { Title = "Slash Cooldown (sec)", Default = 0.6, Min = 0.2, Max = 2.0, Rounding = 2, Callback = function(v) GlobalConfig.Combat.Shed_SlashDelay = v end })
-- ── VISUALS TAB ──
local TabVis = Tabs.Visuals
local SecThreshold = TabVis:AddSection("Safe Cube & Dynamic Killer Detector")
SecThreshold:AddToggle("SpawnZone_Tog", { Title = "Enable Spawn Safe Cube", Default = false, Callback = function(v) GlobalConfig.Spawn.Enabled = v; SpawnEngine:UpdateVisual() end })
SecThreshold:AddToggle("SpawnZone_ShowEdges", { Title = "Show Cube Edges", Default = false, Callback = function(v) GlobalConfig.Spawn.ShowEdges = v; SpawnEngine:UpdateVisual() end })
SecThreshold:AddSlider("SpawnZone_Size", { Title = "Spawn Size (Studs)", Default = 3000, Min = 500, Max = 10000, Rounding = 0, Callback = function(v) GlobalConfig.Spawn.CubeSize = v; SpawnEngine:UpdateVisual() end })
SecThreshold:AddButton({ Title = "Set Spawn Center Here", Callback = function() if SpawnEngine:SetNewPosition() then Fluent:Notify({Title="Spawn", Content="Center locked to current position!", Duration=2, Type="Success"}) end end })
SecThreshold:AddToggle("DoubleCheck_Tog", { Title = "Dynamic Killer Max-HP Tracker", Default = true, Callback = function(v) GlobalConfig.Vis.DoubleCheck = v end })
-- ── CHAMS player ──
local function AddHighlightSection(title, prefix, defOut, defFill)
local sec = TabVis:AddSection(title .. " Chams")
sec:AddToggle(prefix.."_Enabled", { Title = "Enable "..title, Default = false, Callback = function(v) GlobalConfig.Vis[prefix.."_Enabled"] = v end })
sec:AddDropdown(prefix.."_Style", { Title = "Style", Values = {"Outline", "Fill"}, Multi = true, Default = {}, Callback = function(v) GlobalConfig.Vis[prefix.."_Style"] = v end })
sec:AddColorpicker(prefix.."_Out", { Title = "Outline Color", Default = defOut, Callback = function(v) GlobalConfig.Vis[prefix.."_Out"] = v end })
sec:AddColorpicker(prefix.."_Fill", { Title = "Fill Color", Default = defFill, Callback = function(v) GlobalConfig.Vis[prefix.."_Fill"] = v end })
sec:AddSlider(prefix.."_LO", { Title = "Outline Transparency", Min = 0, Max = 5, Default = 0, Rounding = 1, Callback = function(v) GlobalConfig.Vis[prefix.."_LO"] = v end })
sec:AddSlider(prefix.."_LF", { Title = "Fill Transparency", Min = 0, Max = 5, Default = 2, Rounding = 1, Callback = function(v) GlobalConfig.Vis[prefix.."_LF"] = v end })
end
AddHighlightSection("Local Player", "Loc", Color3.fromRGB(255, 255, 255), Color3.fromRGB(100, 100, 255))
AddHighlightSection("Killer", "K", Color3.fromRGB(255, 255, 255), Color3.fromRGB(255, 40, 40))
AddHighlightSection("Survivor", "S", Color3.fromRGB(255, 255, 255), Color3.fromRGB(40, 255, 120))
-- ── LOBBY (SAFE ZONE) ──
local SecLobby = TabVis:AddSection("Lobby (Safe Zone) Editor")
SecLobby:AddToggle("Lobby_Enabled", { Title = "Enable Lobby Chams", Default = false, Callback = function(v) GlobalConfig.Vis.Lobby_Enabled = v end })
SecLobby:AddDropdown("Lobby_Style", { Title = "Chams Style", Values = {"Outline", "Fill"}, Multi = true, Default = {}, Callback = function(v) GlobalConfig.Vis.Lobby_Style = v end })
SecLobby:AddColorpicker("Lobby_Out", { Title = "Chams Outline Color", Default = Color3.fromRGB(255, 255, 255), Callback = function(v) GlobalConfig.Vis.Lobby_Out = v end })
SecLobby:AddColorpicker("Lobby_Fill", { Title = "Chams Fill Color", Default = Color3.fromRGB(255, 215, 0), Callback = function(v) GlobalConfig.Vis.Lobby_Fill = v end })
SecLobby:AddSlider("Lobby_LO", { Title = "Chams Outline Transparency", Min = 0, Max = 5, Default = 0, Rounding = 1, Callback = function(v) GlobalConfig.Vis.Lobby_LO = v end })
SecLobby:AddSlider("Lobby_LF", { Title = "Chams Fill Transparency", Min = 0, Max = 5, Default = 2, Rounding = 1, Callback = function(v) GlobalConfig.Vis.Lobby_LF = v end })
SecLobby:AddParagraph({ Title = "Lobby 2D Box", Content = "" })
SecLobby:AddToggle("Lobby_Box_Tog", { Title = "Enable Lobby 2D Box", Default = false, Callback = function(v) GlobalConfig.Vis.Lobby_Box_Tog = v end })
SecLobby:AddColorpicker("Lobby_Box_Fill", { Title = "Box Fill Color", Default = GlobalConfig.Vis.Lobby_Box_Fill, Callback = function(v) GlobalConfig.Vis.Lobby_Box_Fill = v end })
SecLobby:AddColorpicker("Lobby_Box_Out", { Title = "Box Outline Color", Default = GlobalConfig.Vis.Lobby_Box_Out, Callback = function(v) GlobalConfig.Vis.Lobby_Box_Out = v end })
SecLobby:AddParagraph({ Title = "Lobby Tag (Only [LOBBY])", Content = "" })
SecLobby:AddToggle("Lobby_Role_Tog", { Title = "Show [LOBBY] Tag", Default = false, Callback = function(v) GlobalConfig.Vis.Lobby_Role_Tog = v end })
SecLobby:AddDropdown("Lobby_Role_Dir", { Title = "Tag Direction", Values = {"Top", "Bottom", "Left", "Right"}, Default = "Top", Callback = function(v) GlobalConfig.Vis.Lobby_Role_Dir = v end })
SecLobby:AddColorpicker("Lobby_Role_Fill", { Title = "Tag Text Color", Default = Color3.fromRGB(255, 220, 60), Callback = function(v) GlobalConfig.Vis.Lobby_Role_Fill = v end })
SecLobby:AddColorpicker("Lobby_Role_Out", { Title = "Tag Outline Color", Default = Color3.fromRGB(0, 0, 0), Callback = function(v) GlobalConfig.Vis.Lobby_Role_Out = v end })
-- ── object world ──
local SecGenESP = TabVis:AddSection("Generators ESP")
SecGenESP:AddToggle("Gen_ESP_Tog", { Title = "Enable Generator ESP", Default = false, Callback = function(v) GlobalConfig.Gen.ESP_Enabled = v end })
SecGenESP:AddToggle("Gen_ESP_Percent", { Title = "Show Progress %", Default = true, Callback = function(v) GlobalConfig.Gen.ESP_ShowPercent = v end })
SecGenESP:AddToggle("Gen_ESP_Dist", { Title = "Show Distance", Default = true, Callback = function(v) GlobalConfig.Gen.ESP_ShowDist = v end })
SecGenESP:AddToggle("Gen_FilterFakes", { Title = "Filter Fake Generators", Default = true, Callback = function(v) GlobalConfig.Gen.FilterFakes = v end })
SecGenESP:AddColorpicker("Gen_ESP_Col", { Title = "ESP Color", Default = Color3.fromRGB(0, 200, 255), Callback = function(v) GlobalConfig.Gen.ESP_Color = v end })
local SecItemESP = TabVis:AddSection("Items ESP (Medkits & Colas)")
SecItemESP:AddToggle("Item_ESP_Tog", { Title = "Enable Items ESP", Default = false, Callback = function(v) GlobalConfig.Items.ESP_Enabled = v end })
SecItemESP:AddToggle("Item_ESP_Dist", { Title = "Show Distance", Default = true, Callback = function(v) GlobalConfig.Items.ShowDist = v end })
SecItemESP:AddColorpicker("Item_ESP_Col", { Title = "Items ESP Color", Default = Color3.fromRGB(255, 200, 50), Callback = function(v) GlobalConfig.Items.Chams_Col = v end })
local Sec2D = TabVis:AddSection("2D Box & Tags System")
Sec2D:AddSlider("2D_GlobalLimp", { Title = "Global Text Transparency", Min = 0, Max = 5, Default = 0, Rounding = 1, Callback = function(v) GlobalConfig.Vis.Tags_GlobalLimp = v end })
Sec2D:AddSlider("Box_WOffset", { Title = "Box Width Offset", Min = -15, Max = 15, Default = 0, Rounding = 1, Callback = function(v) GlobalConfig.Vis.Box_WOffset = v end })
Sec2D:AddSlider("Box_HOffset", { Title = "Box Height Offset", Min = -15, Max = 15, Default = 0, Rounding = 1, Callback = function(v) GlobalConfig.Vis.Box_HOffset = v end })
local DirValues = { "Top", "Bottom", "Left", "Right" }
-- ── 2D SURVIVORS ──
Sec2D:AddParagraph({ Title = "Survivor: 2D Box", Content = "" })
Sec2D:AddToggle("Surv_Box_Tog", { Title = "Enable Survivor Box", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Box_Tog = v end })
Sec2D:AddColorpicker("Surv_Box_Fill", { Title = "Box Fill Color", Default = GlobalConfig.Vis.Surv_Box_Fill, Callback = function(v) GlobalConfig.Vis.Surv_Box_Fill = v end })
Sec2D:AddColorpicker("Surv_Box_Out", { Title = "Box Outline Color", Default = GlobalConfig.Vis.Surv_Box_Out, Callback = function(v) GlobalConfig.Vis.Surv_Box_Out = v end })
Sec2D:AddParagraph({ Title = "Survivor: Tags", Content = "" })
Sec2D:AddToggle("Surv_Role_Tog", { Title = "Show [SURVIVOR]", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Role_Tog = v end })
Sec2D:AddDropdown("Surv_Role_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Surv_Role_Dir = v end })
Sec2D:AddToggle("Surv_Name_Tog", { Title = "Show Character Name", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Name_Tog = v end })
Sec2D:AddDropdown("Surv_Name_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Surv_Name_Dir = v end })
Sec2D:AddToggle("Surv_Skin_Tog", { Title = "Show Skin Name", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Skin_Tog = v end })
Sec2D:AddDropdown("Surv_Skin_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Surv_Skin_Dir = v end })
Sec2D:AddToggle("Surv_Login_Tog", { Title = "Show Username (@Login)", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Login_Tog = v end })
Sec2D:AddDropdown("Surv_Login_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Surv_Login_Dir = v end })
Sec2D:AddToggle("Surv_HP_Tog", { Title = "Show HP + Overheal", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_HP_Tog = v end })
Sec2D:AddDropdown("Surv_HP_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Surv_HP_Dir = v end })
Sec2D:AddToggle("Surv_Status_Tog", { Title = "Show Status Badges ([FIXING], [SLATESKIN])", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Status_Tog = v end })
Sec2D:AddDropdown("Surv_Status_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Surv_Status_Dir = v end })
Sec2D:AddToggle("Surv_Dist_Tog", { Title = "Show Distance", Default = false, Callback = function(v) GlobalConfig.Vis.Surv_Dist_Tog = v end })
Sec2D:AddDropdown("Surv_Dist_Dir", { Title = "Direction", Values = DirValues, Default = "Bottom", Callback = function(v) GlobalConfig.Vis.Surv_Dist_Dir = v end })
-- ── 2D KILLER ──
Sec2D:AddParagraph({ Title = "Killer: 2D Box", Content = "" })
Sec2D:AddToggle("Killer_Box_Tog", { Title = "Enable Killer Box", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Box_Tog = v end })
Sec2D:AddColorpicker("Killer_Box_Fill", { Title = "Box Fill Color", Default = GlobalConfig.Vis.Killer_Box_Fill, Callback = function(v) GlobalConfig.Vis.Killer_Box_Fill = v end })
Sec2D:AddColorpicker("Killer_Box_Out", { Title = "Box Outline Color", Default = GlobalConfig.Vis.Killer_Box_Out, Callback = function(v) GlobalConfig.Vis.Killer_Box_Out = v end })
Sec2D:AddParagraph({ Title = "Killer: Tags", Content = "" })
Sec2D:AddToggle("Killer_Role_Tog", { Title = "Show [KILLER]", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Role_Tog = v end })
Sec2D:AddDropdown("Killer_Role_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Killer_Role_Dir = v end })
Sec2D:AddToggle("Killer_Name_Tog", { Title = "Show Character Name", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Name_Tog = v end })
Sec2D:AddDropdown("Killer_Name_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Killer_Name_Dir = v end })
Sec2D:AddToggle("Killer_Skin_Tog", { Title = "Show Skin Name", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Skin_Tog = v end })
Sec2D:AddDropdown("Killer_Skin_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Killer_Skin_Dir = v end })
Sec2D:AddToggle("Killer_Login_Tog", { Title = "Show Username (@Login)", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Login_Tog = v end })
Sec2D:AddDropdown("Killer_Login_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Killer_Login_Dir = v end })
Sec2D:AddToggle("Killer_HP_Tog", { Title = "Show HP", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_HP_Tog = v end })
Sec2D:AddDropdown("Killer_HP_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Killer_HP_Dir = v end })
Sec2D:AddToggle("Killer_Status_Tog", { Title = "Show Status Badges ([INVINCIBLE], [STUNNED])", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Status_Tog = v end })
Sec2D:AddDropdown("Killer_Status_Dir", { Title = "Direction", Values = DirValues, Default = "Top", Callback = function(v) GlobalConfig.Vis.Killer_Status_Dir = v end })
Sec2D:AddToggle("Killer_Dist_Tog", { Title = "Show Distance", Default = false, Callback = function(v) GlobalConfig.Vis.Killer_Dist_Tog = v end })
Sec2D:AddDropdown("Killer_Dist_Dir", { Title = "Direction", Values = DirValues, Default = "Bottom", Callback = function(v) GlobalConfig.Vis.Killer_Dist_Dir = v end })
-- ── CUSTOM LMS TAB ──
local TabLMS = Tabs.LMS
TabLMS:AddSection("LMS Audio Controller")
TabLMS:AddToggle("LMS_MainTog", {
Title = "Enable Custom LMS Music",
Default = false,
Callback = function(v)
GlobalConfig.LMS.Enabled = v
if not v then
RestoreAllNativeAudio()
end
DoLMSAudioEngine()
end
})
local SurvTrackDrop = TabLMS:AddDropdown("LMS_SurvTrack", {
Title = "Survivor Track (.mp3/.ogg)",
Values = PreloadedFilesList,
Default = GlobalConfig.LMS.SurvivorTrack,
Callback = function(v)
GlobalConfig.LMS.SurvivorTrack = v
ResolveTrackAsset(v)
SaveLMSConfig()
DoLMSAudioEngine()
end
})
local KillerTrackDrop = TabLMS:AddDropdown("LMS_KillerTrack", {
Title = "Killer Track (.mp3/.ogg)",
Values = PreloadedFilesList,
Default = GlobalConfig.LMS.KillerTrack,
Callback = function(v)
GlobalConfig.LMS.KillerTrack = v
ResolveTrackAsset(v)
SaveLMSConfig()
DoLMSAudioEngine()
end
})
TabLMS:AddButton({
Title = "Refresh Local Audio Files",
Callback = function()
local updated = GetFilesList()
SurvTrackDrop:SetValues(updated)
KillerTrackDrop:SetValues(updated)
Fluent:Notify({Title="LMS Audio", Content="Track list updated successfully!", Duration=1.5})
end
})
TabLMS:AddSlider("LMS_Volume", { Title = "Music Volume", Min = 0, Max = 5, Default = 1.0, Rounding = 1, Callback = function(v) GlobalConfig.LMS.Volume = v end })
TabLMS:AddSlider("LMS_StartDelay", { Title = "Start Delay (sec)", Min = 0.0, Max = 10.0, Default = 0.0, Rounding = 1, Callback = function(v) GlobalConfig.LMS.StartDelay = v end })
TabLMS:AddToggle("LMS_LoopTrack", { Title = "Loop Music Track", Default = true, Callback = function(v) GlobalConfig.LMS.LoopTrack = v end })
TabLMS:AddSection("Visual Intro Scene")
TabLMS:AddDropdown("LMS_StartEffect", {
Title = "Visual Intro Style",
Values = {"None", "DOD", "Pizza Tower", "FNF"},
Default = "None",
Callback = function(v) GlobalConfig.LMS.StartEffect = v end
})
TabLMS:AddSlider("LMS_FXVolume", { Title = "Intro Sound Volume", Min = 0, Max = 5, Default = 1.0, Rounding = 1, Callback = function(v) GlobalConfig.LMS.EffectVolume = v end })
TabLMS:AddSlider("DOD_SurvCamDist", {
Title = "Camera Zoom: Survivor",
Min = 1.0, Max = 15.0, Default = 4.8, Rounding = 1,
Callback = function(v) GlobalConfig.LMS.DOD_SurvCamDist = v end
})
TabLMS:AddSlider("DOD_KillerCamDist", {
Title = "Camera Zoom: Killer",
Min = 1.0, Max = 15.0, Default = 4.8, Rounding = 1,
Callback = function(v) GlobalConfig.LMS.DOD_KillerCamDist = v end
})
TabLMS:AddButton({
Title = "Preview Intro Scene",
Callback = function()
local fx = LMS_Visuals[GlobalConfig.LMS.StartEffect]
if fx then
task.spawn(fx)
Fluent:Notify({Title="LMS Preview", Content="Playing intro: " .. GlobalConfig.LMS.StartEffect, Duration=2})
end
end
})
-- ── MOBILE OVERLAY TAB ──
local TabMob = Tabs.Mobile
MobileControl:CreateButton("Menu", MOB_ICONS.Menu, GetSavedPos("Menu", UDim2.new(0.9, 0, 0.4, 0)), function() if Window then Window:Minimize() end end)
MobileControl:CreateButton("HideUI", MOB_ICONS.HideUI, GetSavedPos("HideUI", UDim2.new(0.82, 0, 0.4, 0)), function() MobileControl:ToggleVisibility() end)
MobileControl:CreateButton("Speed", MOB_ICONS.Speed, GetSavedPos("Speed", UDim2.new(0.9, 0, 0.55, 0)), function() if Options.SpeedTog then Options.SpeedTog:SetValue(not Options.SpeedTog.Value) end end)
MobileControl:CreateButton("AH", MOB_ICONS.AH, GetSavedPos("AH", UDim2.new(0.82, 0, 0.55, 0)), function() if Options.AHTog then Options.AHTog:SetValue(not Options.AHTog.Value) end end)
MobileControl:CreateButton("Combat", MOB_ICONS.Combat, GetSavedPos("Combat", UDim2.new(0.9, 0, 0.70, 0)), function() if Options.Combat_Tog then Options.Combat_Tog:SetValue(not Options.Combat_Tog.Value) end end)
MobileControl:CreateButton("MouseTP", MOB_ICONS.MouseTP, GetSavedPos("MouseTP", UDim2.new(0.82, 0, 0.70, 0)), function() MouseTPEngine:Teleport() end)
MobileControl:CreateButton("WP", MOB_ICONS.WP, GetSavedPos("WP", UDim2.new(0.74, 0, 0.70, 0)), function()
local name = Options.WP_Select and Options.WP_Select.Value
local root = GetRoot(LocalPlayer.Character)
if name and GlobalState.Waypoints[name] and root then
root.CFrame = GlobalState.Waypoints[name]
Fluent:Notify({Title="Quick TP", Content="Teleported to: " .. name, Duration=2})
end
end)
GlobalState.UpdateMobileBtn = function(id, state)
if MobileControl.Buttons[id] then MobileControl.Buttons[id].SetState(state) end
end
TabMob:AddToggle("Mob_Enable", { Title = "Show Mobile Overlay", Default = false, Callback = function(v) MobileScreenGui.Enabled = v; GlobalConfig.ShowMobileBtn = v end })
TabMob:AddToggle("Mob_Edit", { Title = "Drag Buttons Mode", Default = false, Callback = function(v) MobileControl:SetEditMode(v) end })
local EdSection = TabMob:AddSection("Button Editor")
local function AddEditorControls(id, hasToggle)
EdSection:AddParagraph({ Title = id, Content = "" })
EdSection:AddSlider("Size_" .. id, { Title = "Size (px)", Default = ButtonSettings[id].Size, Min = 20, Max = 100, Rounding = 0, Callback = function(v) ButtonSettings[id].Size = v; if MobileControl.Buttons[id] then MobileControl.Buttons[id].ApplySettings() end end })
EdSection:AddSlider("Transp_" .. id, { Title = "Transparency %", Default = ButtonSettings[id].Transp, Min = 0, Max = 100, Rounding = 0, Callback = function(v) ButtonSettings[id].Transp = v; if MobileControl.Buttons[id] then MobileControl.Buttons[id].ApplySettings() end end })
if hasToggle then
EdSection:AddToggle("Enable_" .. id, { Title = "Show Button", Default = ButtonSettings[id].Enabled, Callback = function(v) ButtonSettings[id].Enabled = v; if MobileControl.Buttons[id] then MobileControl.Buttons[id].ApplySettings() end end })
end
end
AddEditorControls("Menu", false)
AddEditorControls("HideUI", false)
AddEditorControls("Speed", true)
AddEditorControls("AH", true)
AddEditorControls("Combat", true)
AddEditorControls("MouseTP", true)
AddEditorControls("WP", true)
-- ── SETTINGS TAB ──
local TabSettings = Tabs.Settings
SaveManager:SetLibrary(Fluent)
InterfaceManager:SetLibrary(Fluent)
SaveManager:IgnoreThemeSettings()
InterfaceManager:SetFolder(FOLDER_NAME)
SaveManager:SetFolder(FOLDER_NAME .. "/cfg")
InterfaceManager:BuildInterfaceSection(TabSettings)
TabSettings:AddSection("Widget")
TabSettings:AddToggle("TimeUIToggle", {
Title = "Show System Time UI",
Default = false,
Callback = function(v) GlobalConfig.TimeUI.Enabled = v; TimeScreenGui.Enabled = v end
})
SaveManager:BuildConfigSection(TabSettings)
TabSettings:AddButton({
Title = "REJOIN SERVER",
Callback = function()
if #Players:GetPlayers() <= 1 then TeleportService:Teleport(game.PlaceId, LocalPlayer)
else TeleportService:TeleportToPlaceInstance(game.PlaceId, game.JobId, LocalPlayer) end
end
})
-- ── DYNAMIC KEYBIND LISTENERS ──
UserInputService.InputBegan:Connect(function(input, gpe)
if gpe or UserInputService:GetFocusedTextBox() then return end
if Options.SpeedBind and Options.SpeedBind.Value and Options.SpeedBind.Value ~= "None" then
if input.KeyCode.Name == Options.SpeedBind.Value or input.UserInputType.Name == Options.SpeedBind.Value then
if GlobalConfig.Binds.Speed_Mode == "Hold" and Options.SpeedTog then Options.SpeedTog:SetValue(true) end
end
end
if Options.NoclipBind and Options.NoclipBind.Value and Options.NoclipBind.Value ~= "None" then
if input.KeyCode.Name == Options.NoclipBind.Value or input.UserInputType.Name == Options.NoclipBind.Value then
if GlobalConfig.Binds.Noclip_Mode == "Hold" and Options.NoclipTog then Options.NoclipTog:SetValue(true) end
end
end
if Options.AHBind and Options.AHBind.Value and Options.AHBind.Value ~= "None" then
if input.KeyCode.Name == Options.AHBind.Value or input.UserInputType.Name == Options.AHBind.Value then
if GlobalConfig.Binds.AH_Mode == "Hold" and Options.AHTog then Options.AHTog:SetValue(true) end
end
end
if GlobalConfig.MouseTP.Enabled and GlobalConfig.MouseTP.Mode == "Keybind + Mouse Click" then
if Options.MouseTP_Bind and Options.MouseTP_Bind.Value and Options.MouseTP_Bind.Value ~= "None" then
if input.KeyCode.Name == Options.MouseTP_Bind.Value or input.UserInputType.Name == Options.MouseTP_Bind.Value then
GlobalState.MouseTP_Primed = true
end
end
if GlobalState.MouseTP_Primed and input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseTPEngine:Teleport()
end
end
end)
UserInputService.InputEnded:Connect(function(input, gpe)
if Options.SpeedBind and Options.SpeedBind.Value and Options.SpeedBind.Value ~= "None" then
if input.KeyCode.Name == Options.SpeedBind.Value or input.UserInputType.Name == Options.SpeedBind.Value then
if GlobalConfig.Binds.Speed_Mode == "Hold" and Options.SpeedTog then Options.SpeedTog:SetValue(false) end
end
end
if Options.NoclipBind and Options.NoclipBind.Value and Options.NoclipBind.Value ~= "None" then
if input.KeyCode.Name == Options.NoclipBind.Value or input.UserInputType.Name == Options.NoclipBind.Value then
if GlobalConfig.Binds.Noclip_Mode == "Hold" and Options.NoclipTog then Options.NoclipTog:SetValue(false) end
end
end
if Options.AHBind and Options.AHBind.Value and Options.AHBind.Value ~= "None" then
if input.KeyCode.Name == Options.AHBind.Value or input.UserInputType.Name == Options.AHBind.Value then
if GlobalConfig.Binds.AH_Mode == "Hold" and Options.AHTog then Options.AHTog:SetValue(false) end
end
end
if Options.MouseTP_Bind and Options.MouseTP_Bind.Value and Options.MouseTP_Bind.Value ~= "None" then
if input.KeyCode.Name == Options.MouseTP_Bind.Value or input.UserInputType.Name == Options.MouseTP_Bind.Value then
GlobalState.MouseTP_Primed = false
end
end
end)
-- ── FAST HEARTBEAT LOOP ──────────────────────────────────────────────────
local FastTimers = { AH = 0, Combat = 0, LMS = 0 }
RunService.Heartbeat:Connect(function(dt)
if not GlobalState.ScriptActive then return end
pcall(function() DoMovementPhysics(dt) end)
pcall(function() MouseTPEngine:Update() end)
pcall(function() DoVisualsRender() end)
FastTimers.LMS = FastTimers.LMS + dt
if FastTimers.LMS >= 0.05 then
FastTimers.LMS = 0
pcall(DoLMSAudioEngine)
end
FastTimers.Combat = FastTimers.Combat + dt
if FastTimers.Combat >= 0.05 then
FastTimers.Combat = 0
pcall(function() DoSurvivorCombatEngine() end)
end
FastTimers.AH = FastTimers.AH + dt
if FastTimers.AH >= 0.05 then
FastTimers.AH = 0
pcall(function() DoKillerAutoHunt() end)
end
end)
task.spawn(function()
local phase = 0
while GlobalState.ScriptActive do
task.wait(0.25)
phase = (phase + 1) % 4
pcall(CheckRoundLifecycle)
if phase == 0 then
pcall(UpdateDynamicKillerRole)
elseif phase == 1 then
pcall(UpdateCachedWorldObjectsFast)
elseif phase == 2 then
pcall(function()
local rawPing = StatsService.Network.ServerStatsItem
["Data Ping"]:GetValue()
GlobalState.CurrentPing = math.floor(rawPing)
local cam = GetCamera()
if cam then
for _, btn in pairs(MobileControl.Buttons) do
if btn.Canvas and btn.Canvas.Parent then
local s = btn.Canvas.AbsoluteSize
if s.X > 0 and s.Y > 0 then
btn.Canvas.Position = MobileControl:GetSafePosition(btn.Canvas.Position, s.X)
end
end
end
end
end)
elseif phase == 3 then
pcall(function()
for inst, cacheObj in pairs(GlobalState.Vis.ItemCache) do
if not inst.Parent or not inst:FindFirstChild("ItemRoot") then
if cacheObj.Gui then pcall(function() cacheObj.Gui:Destroy() end) end
GlobalState.Vis.ItemCache[inst] = nil
end
end
end)
end
end
end)
task.spawn(function()
while GlobalState.ScriptActive do
task.wait(1)
if GlobalConfig.TimeUI.Enabled and TimeScreenGui.Enabled then
TimeLabel.Text = os.date("%H:%M:%S")
end
end
end)
-- ── INITIALIZATION ──
LocalPlayer.CharacterAdded:Connect(function(char)
RestoreCollisions()
end)
pcall(function() UpdateCachedWorldObjectsFast() end)
pcall(function()
if Tabs and Tabs.Main and typeof(Tabs.Main.Select) == "function" then
Tabs.Main:Select()
elseif Window and typeof(Window.SelectTab) == "function" then
Window:SelectTab(1)
end
end)
Fluent:Notify({
Title = "DOOMSENSE V1",
Content = "Forsaken Master Core Loaded. [Insert = Menu]",
Duration = 5
})
task.delay(0.5, function()
pcall(function()
if SaveManager and SaveManager.LoadAutoloadConfig then
SaveManager:LoadAutoloadConfig()
end
end)
end)
CoreGui.ChildRemoved:Connect(function(child)
if child.Name == "ScreenGui" then
MouseTPEngine:DestroyMarker()
if SpawnEngine.Adornment then pcall(function() SpawnEngine.Adornment:Destroy() end) end
if GlobalState.Vis.VisualGUI then pcall(function() GlobalState.Vis.VisualGUI:Destroy() end) end
if VisualsGui then pcall(function() VisualsGui:Destroy() end) end
if FX_Gui then pcall(function() FX_Gui:Destroy() end) end
if MobileScreenGui then pcall(function() MobileScreenGui:Destroy() end) end
if TimeScreenGui then pcall(function() TimeScreenGui:Destroy() end) end
GlobalState.ScriptActive = false
RestoreCollisions()
end
end)
print("[DOOMSENSE V1 FORSAKEN].")Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: github.com, raw.githubusercontent.com.
pasta.
Stay safe
Never paste your .ROBLOSECURITY cookie anywhere, and use an alt account with scripts.

Universal