M
Description
Well, since I couldn't find a script for this game, I decided to make one myself. I did it all using ChatGPT; anyone can do it... What's in it? ========================================================== ° Esp Killer ° Esp Papers ° Esp Safes ° Esp Willow ° Esp Players ° Render Distance ° Menu Key and floating button for mobile ========================================================== Anyway, have fun :D
GAME[NEW] FIXATION
UPDATEDOct 10, 2026
ACCESSKeyless
PLATFORMDesktop & Mobile
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
--[[rscripts:analytics:start]]
-- Script analytics (enabled by the creator on rscripts.net).
-- Runs in its own thread and cannot affect the script below.
task.spawn(function()
pcall(function()
loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6aaf594277fd29f402f107e3"))()
end)
end)
--[[rscripts:analytics:end]]
--// SERVICES
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
--// REMOVE OLD GUI
for _, gui in ipairs(PlayerGui:GetChildren()) do
if gui.Name == "ESP_GUI" then
gui:Destroy()
end
end
--// REMOVE OLD CHAMS FOLDER
local OldChamsFolder = workspace:FindFirstChild("ESP_CharacterChams")
if OldChamsFolder then
OldChamsFolder:Destroy()
end
--// SETTINGS
local PaperEnabled = false
local DoorEnabled = false
local SafeEnabled = false
local WillowEnabled = false
local PlayerEnabled = false
local KillerEnabled = false
local RenderDistance = 250
local OpenKey = Enum.KeyCode.RightShift
--// COLORS
local Colors = {
Paper = Color3.fromRGB(220, 210, 50),
Door = Color3.fromRGB(210, 210, 210),
Safe = Color3.fromRGB(220, 60, 60),
Willow = Color3.fromRGB(220, 90, 155),
Survivor = Color3.fromRGB(60, 210, 90),
Interest = Color3.fromRGB(145, 70, 210),
Friend = Color3.fromRGB(60, 140, 210),
Killer = Color3.fromRGB(220, 60, 60)
}
--// GUI COLORS
local GUIBackground = Color3.fromRGB(22, 22, 27)
local GUIButton = Color3.fromRGB(30, 30, 36)
local GUIButtonOn = Color3.fromRGB(38, 38, 45)
local GUIStroke = Color3.fromRGB(60, 60, 68)
local GUISecondary = Color3.fromRGB(48, 48, 55)
--// STORAGE
local ESPObjects = {}
local CharacterConnections = {}
local HealthBars = {}
local PlayerNameESP = {}
local CharacterChams = {}
--// CHARACTER CHAMS FOLDER
-- Os Highlights ficam aqui em vez de dentro do personagem.
local CharacterChamsFolder = Instance.new("Folder")
CharacterChamsFolder.Name = "ESP_CharacterChams"
CharacterChamsFolder.Parent = workspace
--// GUI
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "ESP_GUI"
ScreenGui.ResetOnSpawn = false
ScreenGui.IgnoreGuiInset = true
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.Parent = PlayerGui
--// MAIN FRAME
local Main = Instance.new("Frame")
Main.Name = "Main"
Main.Size = UDim2.fromOffset(220, 420)
Main.Position = UDim2.new(0, 25, 0.5, -210)
Main.BackgroundColor3 = GUIBackground
Main.BorderSizePixel = 0
Main.Active = true
Main.Parent = ScreenGui
local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 10)
MainCorner.Parent = Main
local MainStroke = Instance.new("UIStroke")
MainStroke.Color = GUIStroke
MainStroke.Thickness = 1
MainStroke.Parent = Main
--// DRAG MAIN GUI
local MainDragging = false
local MainDragStart
local MainStartPosition
Main.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
MainDragging = true
MainDragStart = input.Position
MainStartPosition = Main.Position
end
end)
UserInputService.InputChanged:Connect(function(input)
if MainDragging then
if input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch then
local Delta = input.Position - MainDragStart
Main.Position = UDim2.new(
MainStartPosition.X.Scale,
MainStartPosition.X.Offset + Delta.X,
MainStartPosition.Y.Scale,
MainStartPosition.Y.Offset + Delta.Y
)
end
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
MainDragging = false
end
end)
--// TITLE
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, 0, 0, 45)
Title.BackgroundTransparency = 1
Title.Text = "FIXATION ESP"
Title.TextColor3 = Color3.fromRGB(225, 225, 225)
Title.TextSize = 19
Title.Font = Enum.Font.GothamBold
Title.Parent = Main
--// BUTTON CREATOR
local function CreateButton(text, y, color)
local Button = Instance.new("TextButton")
Button.Size = UDim2.new(1, -20, 0, 38)
Button.Position = UDim2.fromOffset(10, y)
Button.BackgroundColor3 = GUIButton
Button.BorderSizePixel = 0
Button.Text = text .. " [OFF]"
Button.TextColor3 = color
Button.TextSize = 14
Button.Font = Enum.Font.GothamBold
Button.AutoButtonColor = false
Button.Active = true
Button.Parent = Main
local Corner = Instance.new("UICorner")
Corner.CornerRadius = UDim.new(0, 7)
Corner.Parent = Button
local Stroke = Instance.new("UIStroke")
Stroke.Color = color
Stroke.Transparency = 0.78
Stroke.Thickness = 1
Stroke.Parent = Button
return Button
end
local PaperButton = CreateButton(
"Papers",
50,
Colors.Paper
)
local DoorButton = CreateButton(
"Doors",
95,
Colors.Door
)
local SafeButton = CreateButton(
"Safes",
140,
Colors.Safe
)
local WillowButton = CreateButton(
"Willow",
185,
Colors.Willow
)
local PlayerButton = CreateButton(
"ESP Player",
230,
Colors.Survivor
)
local KillerButton = CreateButton(
"Killer",
275,
Colors.Killer
)
--// DISTANCE LABEL
local DistanceLabel = Instance.new("TextLabel")
DistanceLabel.Size = UDim2.new(1, -20, 0, 25)
DistanceLabel.Position = UDim2.fromOffset(10, 320)
DistanceLabel.BackgroundTransparency = 1
DistanceLabel.Text = "Render Distance: 250"
DistanceLabel.TextColor3 = Color3.fromRGB(190, 190, 195)
DistanceLabel.TextSize = 13
DistanceLabel.Font = Enum.Font.Gotham
DistanceLabel.Parent = Main
--// SLIDER
local SliderBackground = Instance.new("Frame")
SliderBackground.Size = UDim2.new(1, -30, 0, 6)
SliderBackground.Position = UDim2.fromOffset(15, 350)
SliderBackground.BackgroundColor3 = GUISecondary
SliderBackground.BorderSizePixel = 0
SliderBackground.Active = true
SliderBackground.Parent = Main
local SliderCorner = Instance.new("UICorner")
SliderCorner.CornerRadius = UDim.new(1, 0)
SliderCorner.Parent = SliderBackground
local SliderFill = Instance.new("Frame")
SliderFill.Size =
UDim2.new(RenderDistance / 500, 0, 1, 0)
SliderFill.BackgroundColor3 =
Color3.fromRGB(105, 75, 180)
SliderFill.BorderSizePixel = 0
SliderFill.Parent = SliderBackground
local FillCorner = Instance.new("UICorner")
FillCorner.CornerRadius = UDim.new(1, 0)
FillCorner.Parent = SliderFill
local SliderButton = Instance.new("TextButton")
SliderButton.Size = UDim2.fromOffset(16, 16)
SliderButton.Position =
UDim2.new(
RenderDistance / 500,
-8,
0.5,
-8
)
SliderButton.BackgroundColor3 =
Color3.fromRGB(205, 205, 210)
SliderButton.Text = ""
SliderButton.BorderSizePixel = 0
SliderButton.Parent = SliderBackground
local SliderButtonCorner = Instance.new("UICorner")
SliderButtonCorner.CornerRadius = UDim.new(1, 0)
SliderButtonCorner.Parent = SliderButton
--// KEYBIND LABEL
local KeybindLabel = Instance.new("TextLabel")
KeybindLabel.Size = UDim2.new(1, -20, 0, 25)
KeybindLabel.Position = UDim2.fromOffset(10, 370)
KeybindLabel.BackgroundTransparency = 1
KeybindLabel.Text =
"Menu Key: RightShift"
KeybindLabel.TextColor3 =
Color3.fromRGB(180, 180, 185)
KeybindLabel.TextSize = 12
KeybindLabel.Font = Enum.Font.Gotham
KeybindLabel.Parent = Main
--// KEYBIND BOX
local KeybindBox = Instance.new("TextButton")
KeybindBox.Size =
UDim2.new(1, -20, 0, 25)
KeybindBox.Position =
UDim2.fromOffset(10, 395)
KeybindBox.BackgroundColor3 =
GUIButton
KeybindBox.Text =
"Click to change key"
KeybindBox.TextColor3 =
Color3.fromRGB(160, 160, 165)
KeybindBox.TextSize = 11
KeybindBox.Font = Enum.Font.Gotham
KeybindBox.BorderSizePixel = 0
KeybindBox.Parent = Main
local KeyCorner = Instance.new("UICorner")
KeyCorner.CornerRadius = UDim.new(0, 6)
KeyCorner.Parent = KeybindBox
--// FLOATING BUTTON
local FloatButton = Instance.new("TextButton")
FloatButton.Name = "FloatingButton"
FloatButton.Size =
UDim2.fromOffset(52, 52)
FloatButton.Position =
UDim2.new(0, 20, 0.5, -26)
FloatButton.BackgroundColor3 =
Color3.fromRGB(30, 25, 40)
FloatButton.Text = "×"
FloatButton.TextColor3 =
Color3.fromRGB(220, 220, 225)
FloatButton.TextSize = 25
FloatButton.Font = Enum.Font.GothamBold
FloatButton.BorderSizePixel = 0
FloatButton.Active = true
FloatButton.AutoButtonColor = false
FloatButton.ZIndex = 100
FloatButton.Parent = ScreenGui
local FloatCorner = Instance.new("UICorner")
FloatCorner.CornerRadius = UDim.new(1, 0)
FloatCorner.Parent = FloatButton
local FloatStroke = Instance.new("UIStroke")
FloatStroke.Color =
Color3.fromRGB(105, 70, 150)
FloatStroke.Thickness = 2
FloatStroke.Parent = FloatButton
--// FLOATING BUTTON DRAG
local FloatDragging = false
local FloatDragStart
local FloatStartPosition
local FloatMoved = false
FloatButton.InputBegan:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton1
or input.UserInputType ==
Enum.UserInputType.Touch then
FloatDragging = true
FloatMoved = false
FloatDragStart =
input.Position
FloatStartPosition =
FloatButton.Position
end
end)
UserInputService.InputChanged:Connect(function(input)
if FloatDragging then
if input.UserInputType ==
Enum.UserInputType.MouseMovement
or input.UserInputType ==
Enum.UserInputType.Touch then
local Delta =
input.Position -
FloatDragStart
if math.abs(Delta.X) > 5
or math.abs(Delta.Y) > 5 then
FloatMoved = true
end
FloatButton.Position =
UDim2.new(
FloatStartPosition.X.Scale,
FloatStartPosition.X.Offset +
Delta.X,
FloatStartPosition.Y.Scale,
FloatStartPosition.Y.Offset +
Delta.Y
)
end
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton1
or input.UserInputType ==
Enum.UserInputType.Touch then
FloatDragging = false
end
end)
--// MENU TOGGLE
local MenuOpen = true
local function ToggleMenu()
MenuOpen = not MenuOpen
Main.Visible = MenuOpen
if MenuOpen then
FloatButton.Text = "×"
else
FloatButton.Text = "☰"
end
end
FloatButton.Activated:Connect(function()
if not FloatMoved then
ToggleMenu()
end
end)
--// LOBBY CHECK
local function IsInLobby(object)
local Lobby =
workspace:FindFirstChild("Lobby")
if not Lobby then
return false
end
return object:IsDescendantOf(Lobby)
end
--// GET ROLE
local function GetRole(character)
if not character then
return nil
end
local Role =
character:FindFirstChild(
"FixationRole"
)
if Role then
if Role:IsA("StringValue") then
return Role.Value
end
local Attribute =
Role:GetAttribute("Value")
if Attribute then
return Attribute
end
end
local AttributeRole =
character:GetAttribute(
"FixationRole"
)
if AttributeRole then
return AttributeRole
end
return nil
end
--// HEALTH BAR
local function RemoveHealthBar(character)
local Bar =
HealthBars[character]
if Bar then
Bar:Destroy()
HealthBars[character] = nil
end
end
local function CreateHealthBar(character)
if not character then
return
end
local Role =
GetRole(character)
if Role == "Nikki" then
RemoveHealthBar(character)
return
end
local Root =
character:FindFirstChild(
"HumanoidRootPart"
)
if not Root then
return
end
if HealthBars[character] then
local Existing =
HealthBars[character]
if Existing.Parent then
return
end
HealthBars[character] = nil
end
local Billboard =
Instance.new("BillboardGui")
Billboard.Name = "HealthBar"
Billboard.Adornee = Root
Billboard.Size =
UDim2.fromOffset(4, 30)
Billboard.StudsOffset =
Vector3.new(2.8, 1.5, 0)
Billboard.AlwaysOnTop = true
Billboard.MaxDistance =
RenderDistance
Billboard.Enabled =
PlayerEnabled
Billboard.Parent = Root
local Background =
Instance.new("Frame")
Background.Name = "Background"
Background.Size =
UDim2.fromScale(1, 1)
Background.BackgroundColor3 =
Color3.fromRGB(25, 25, 25)
Background.BorderSizePixel = 0
Background.Parent = Billboard
local BackgroundCorner =
Instance.new("UICorner")
BackgroundCorner.CornerRadius =
UDim.new(0, 2)
BackgroundCorner.Parent =
Background
local Fill =
Instance.new("Frame")
Fill.Name = "Fill"
Fill.AnchorPoint =
Vector2.new(0, 1)
Fill.Position =
UDim2.fromScale(0, 1)
Fill.Size =
UDim2.fromScale(1, 1)
Fill.BackgroundColor3 =
Color3.fromRGB(0, 220, 70)
Fill.BorderSizePixel = 0
Fill.ZIndex = 2
Fill.Parent = Background
local FillCorner =
Instance.new("UICorner")
FillCorner.CornerRadius =
UDim.new(0, 2)
FillCorner.Parent = Fill
local HealthText =
Instance.new("TextLabel")
HealthText.Name =
"HealthText"
HealthText.Size =
UDim2.fromOffset(35, 20)
HealthText.Position =
UDim2.new(
0.5,
-17.5,
0.5,
-10
)
HealthText.BackgroundTransparency = 1
HealthText.Text = "100"
HealthText.TextColor3 =
Color3.fromRGB(255, 255, 255)
HealthText.TextStrokeColor3 =
Color3.fromRGB(0, 0, 0)
HealthText.TextStrokeTransparency = 0
HealthText.TextSize = 11
HealthText.Font = Enum.Font.GothamBold
HealthText.TextXAlignment =
Enum.TextXAlignment.Center
HealthText.TextYAlignment =
Enum.TextYAlignment.Center
HealthText.ZIndex = 3
HealthText.Parent = Background
HealthBars[character] =
Billboard
end
local function UpdateHealthBar(character)
local Billboard =
HealthBars[character]
if not Billboard then
return
end
if not Billboard.Parent then
HealthBars[character] = nil
if PlayerEnabled then
CreateHealthBar(character)
end
return
end
local Humanoid =
character:FindFirstChildOfClass(
"Humanoid"
)
if not Humanoid then
return
end
local Background =
Billboard:FindFirstChild(
"Background"
)
if not Background then
return
end
local Fill =
Background:FindFirstChild(
"Fill"
)
local HealthText =
Background:FindFirstChild(
"HealthText"
)
if not Fill or not HealthText then
return
end
local Health =
math.clamp(
Humanoid.Health /
math.max(
Humanoid.MaxHealth,
1
),
0,
1
)
Fill.Size =
UDim2.new(
1,
0,
Health,
0
)
HealthText.Text =
tostring(
math.max(
0,
math.floor(
Humanoid.Health + 0.5
)
)
)
if Health > 0.5 then
Fill.BackgroundColor3 =
Color3.fromRGB(
0,
220,
70
)
elseif Health > 0.25 then
Fill.BackgroundColor3 =
Color3.fromRGB(
225,
190,
0
)
else
Fill.BackgroundColor3 =
Color3.fromRGB(
220,
45,
45
)
end
Billboard.MaxDistance =
RenderDistance
Billboard.Enabled =
PlayerEnabled
end
--// PLAYER NAME ESP
local function RemovePlayerNameESP(character)
local Billboard =
PlayerNameESP[character]
if Billboard then
Billboard:Destroy()
PlayerNameESP[character] = nil
end
end
local function CreatePlayerNameESP(
character,
text,
color
)
if not character then
return
end
local Root =
character:FindFirstChild(
"HumanoidRootPart"
)
if not Root then
return
end
RemovePlayerNameESP(character)
local Billboard =
Instance.new("BillboardGui")
Billboard.Name =
"PlayerNameESP"
Billboard.Adornee =
Root
Billboard.Size =
UDim2.fromOffset(
130,
24
)
Billboard.StudsOffset =
Vector3.new(0, 2.7, 0)
Billboard.AlwaysOnTop = true
Billboard.MaxDistance =
RenderDistance
Billboard.Parent = Root
local Label =
Instance.new("TextLabel")
Label.Name = "Name"
Label.Size =
UDim2.fromScale(1, 1)
Label.BackgroundTransparency = 1
Label.Text = text
Label.TextColor3 = color
Label.TextStrokeColor3 =
Color3.fromRGB(0, 0, 0)
Label.TextStrokeTransparency = 0
Label.TextSize = 14
Label.Font = Enum.Font.GothamBold
Label.TextXAlignment =
Enum.TextXAlignment.Center
Label.TextYAlignment =
Enum.TextYAlignment.Center
Label.Parent = Billboard
PlayerNameESP[character] =
Billboard
end
local function UpdatePlayerNameESP(character)
local Billboard =
PlayerNameESP[character]
if not Billboard then
return
end
if not Billboard.Parent then
PlayerNameESP[character] = nil
return
end
Billboard.MaxDistance =
RenderDistance
end
--// CHARACTER CHAMS
local function RemoveCharacterChams(character)
local Highlight =
CharacterChams[character]
if Highlight then
if Highlight.Parent then
Highlight:Destroy()
end
CharacterChams[character] = nil
end
end
local function CreateCharacterChams(
character,
color
)
if not character then
return
end
if not character.Parent then
return
end
-- Verifica se já existe um Highlight válido.
local Existing =
CharacterChams[character]
if Existing then
if Existing.Parent
and Existing.Adornee == character then
Existing.FillColor = color
Existing.OutlineColor = color
Existing.FillTransparency = 0.85
Existing.OutlineTransparency = 0
Existing.DepthMode =
Enum.HighlightDepthMode.AlwaysOnTop
return
end
-- Referência antiga inválida.
if Existing.Parent then
Existing:Destroy()
end
CharacterChams[character] = nil
end
-- Cria um novo Highlight.
local Highlight =
Instance.new("Highlight")
Highlight.Name =
"CharacterChams"
Highlight.Adornee =
character
Highlight.FillColor =
color
Highlight.FillTransparency =
0.85
Highlight.OutlineColor =
color
Highlight.OutlineTransparency = 0
Highlight.DepthMode =
Enum.HighlightDepthMode.AlwaysOnTop
-- IMPORTANTE:
-- O Highlight não fica mais dentro do Character.
Highlight.Parent =
CharacterChamsFolder
CharacterChams[character] =
Highlight
end
--// REPAIR CHARACTER CHAMS
-- Recria automaticamente um Chams que tenha desaparecido.
local function RepairCharacterChams(character)
if not character then
return
end
if not character.Parent then
return
end
if character == LocalPlayer.Character then
return
end
local Role =
GetRole(character)
local WantedColor = nil
if Role == "Nikki" then
if KillerEnabled then
WantedColor = Colors.Killer
end
elseif PlayerEnabled then
if Role == "Survivor" then
WantedColor = Colors.Survivor
elseif Role == "Interest" then
WantedColor = Colors.Interest
elseif Role == "Friend" then
WantedColor = Colors.Friend
end
end
if WantedColor then
local Highlight =
CharacterChams[character]
if not Highlight
or not Highlight.Parent
or Highlight.Adornee ~= character then
CharacterChams[character] = nil
if Highlight then
pcall(function()
Highlight:Destroy()
end)
end
CreateCharacterChams(
character,
WantedColor
)
else
-- Reforça propriedades caso algo tenha alterado.
Highlight.FillColor =
WantedColor
Highlight.OutlineColor =
WantedColor
Highlight.FillTransparency =
0.85
Highlight.OutlineTransparency =
0
Highlight.DepthMode =
Enum.HighlightDepthMode.AlwaysOnTop
end
else
-- Não deveria existir Chams para esse personagem.
if CharacterChams[character] then
RemoveCharacterChams(character)
end
end
end
--// CREATE OBJECT ESP
local function CreateESP(
object,
text,
color
)
if not object then
return
end
if ESPObjects[object] then
local Data =
ESPObjects[object]
if Data.Highlight
and Data.Highlight.Parent
and Data.Billboard
and Data.Billboard.Parent then
return
end
ESPObjects[object] = nil
end
if IsInLobby(object) then
return
end
local Highlight =
Instance.new("Highlight")
Highlight.Name =
"ESP_Highlight"
Highlight.FillColor = color
Highlight.OutlineColor = color
Highlight.FillTransparency =
0.85
Highlight.OutlineTransparency = 0
Highlight.DepthMode =
Enum.HighlightDepthMode.AlwaysOnTop
Highlight.Adornee = object
Highlight.Parent = object
local Billboard =
Instance.new("BillboardGui")
Billboard.Name =
"ESP_Label"
Billboard.Size =
UDim2.fromOffset(
120,
25
)
Billboard.AlwaysOnTop = true
Billboard.MaxDistance =
RenderDistance
Billboard.StudsOffset =
Vector3.new(
0,
2.5,
0
)
local Label =
Instance.new("TextLabel")
Label.Size =
UDim2.fromScale(1, 1)
Label.BackgroundTransparency = 1
Label.Text = text
Label.TextColor3 = color
Label.TextStrokeTransparency = 0
Label.TextStrokeColor3 =
Color3.fromRGB(0, 0, 0)
Label.TextSize = 14
Label.Font = Enum.Font.GothamBold
Label.Parent = Billboard
Billboard.Parent = object
ESPObjects[object] = {
Highlight = Highlight,
Billboard = Billboard
}
end
--// REMOVE OBJECT ESP
local function RemoveESP(object)
local Data =
ESPObjects[object]
if not Data then
return
end
if Data.Highlight then
Data.Highlight:Destroy()
end
if Data.Billboard then
Data.Billboard:Destroy()
end
ESPObjects[object] = nil
end
--// SCAN OBJECTS
local function ScanObjects()
for _, object in ipairs(
workspace:GetDescendants()
) do
if object:IsA("Model")
or object:IsA("BasePart") then
if PaperEnabled
and object.Name ==
"FixationPolaroid" then
CreateESP(
object,
"Paper",
Colors.Paper
)
end
if DoorEnabled
and object.Name ==
"Door" then
if not IsInLobby(object) then
CreateESP(
object,
"Door",
Colors.Door
)
end
end
if SafeEnabled
and object.Name ==
"FixationSafe" then
CreateESP(
object,
"Safe",
Colors.Safe
)
end
if WillowEnabled
and object.Name ==
"FixationWillowBox" then
CreateESP(
object,
"Willow",
Colors.Willow
)
end
if PlayerEnabled
and object.Name ==
"INTERESSE" then
CreateESP(
object,
"Interest",
Colors.Interest
)
end
end
end
end
--// CHARACTER ESP
local function CreateCharacterESP(character)
if not character
or not character.Parent then
return
end
if character ==
LocalPlayer.Character then
return
end
local Role =
GetRole(character)
--// KILLER
if Role == "Nikki" then
if KillerEnabled then
CreateCharacterChams(
character,
Colors.Killer
)
CreatePlayerNameESP(
character,
"Killer",
Colors.Killer
)
else
RemoveCharacterChams(
character
)
RemovePlayerNameESP(
character
)
end
RemoveHealthBar(character)
return
end
--// NORMAL PLAYER
if PlayerEnabled then
if Role == "Survivor" then
CreateCharacterChams(
character,
Colors.Survivor
)
CreatePlayerNameESP(
character,
"Survivor",
Colors.Survivor
)
CreateHealthBar(character)
elseif Role == "Interest" then
CreateCharacterChams(
character,
Colors.Interest
)
CreatePlayerNameESP(
character,
"Interest",
Colors.Interest
)
CreateHealthBar(character)
elseif Role == "Friend" then
CreateCharacterChams(
character,
Colors.Friend
)
CreatePlayerNameESP(
character,
"Friend",
Colors.Friend
)
CreateHealthBar(character)
else
RemoveCharacterChams(
character
)
RemovePlayerNameESP(
character
)
RemoveHealthBar(
character
)
end
else
RemoveCharacterChams(
character
)
RemovePlayerNameESP(
character
)
RemoveHealthBar(
character
)
end
end
--// REMOVE CHARACTER ESP
local function RemoveCharacterESP(character)
if not character then
return
end
RemoveCharacterChams(character)
RemoveESP(character)
RemovePlayerNameESP(character)
RemoveHealthBar(character)
end
--// ENABLE CATEGORY
local function EnableCategory(category)
task.spawn(function()
if category == "Paper" then
PaperEnabled = true
elseif category == "Door" then
DoorEnabled = true
elseif category == "Safe" then
SafeEnabled = true
elseif category == "Willow" then
WillowEnabled = true
elseif category == "Player" then
PlayerEnabled = true
elseif category == "Killer" then
KillerEnabled = true
end
ScanObjects()
for _, player in ipairs(
Players:GetPlayers()
) do
if player.Character then
CreateCharacterESP(
player.Character
)
end
task.wait()
end
end)
end
--// DISABLE CATEGORY
local function DisableCategory(category)
task.spawn(function()
if category == "Paper" then
PaperEnabled = false
for object in pairs(
ESPObjects
) do
if object.Name ==
"FixationPolaroid" then
RemoveESP(object)
end
end
elseif category == "Door" then
DoorEnabled = false
for object in pairs(
ESPObjects
) do
if object.Name ==
"Door" then
RemoveESP(object)
end
end
elseif category == "Safe" then
SafeEnabled = false
for object in pairs(
ESPObjects
) do
if object.Name ==
"FixationSafe" then
RemoveESP(object)
end
end
elseif category == "Willow" then
WillowEnabled = false
for object in pairs(
ESPObjects
) do
if object.Name ==
"FixationWillowBox" then
RemoveESP(object)
end
end
elseif category == "Player" then
PlayerEnabled = false
for _, player in ipairs(
Players:GetPlayers()
) do
if player.Character
and player.Character ~=
LocalPlayer.Character then
local Role =
GetRole(
player.Character
)
if Role == "Survivor"
or Role == "Interest"
or Role == "Friend" then
RemoveCharacterChams(
player.Character
)
RemovePlayerNameESP(
player.Character
)
RemoveHealthBar(
player.Character
)
end
end
end
for character in pairs(
HealthBars
) do
RemoveHealthBar(
character
)
end
for character in pairs(
PlayerNameESP
) do
local Role =
GetRole(character)
if Role ~= "Nikki" then
RemovePlayerNameESP(
character
)
end
end
for character in pairs(
CharacterChams
) do
local Role =
GetRole(character)
if Role ~= "Nikki" then
RemoveCharacterChams(
character
)
end
end
for object in pairs(
ESPObjects
) do
if object.Name ==
"INTERESSE" then
RemoveESP(object)
end
end
elseif category == "Killer" then
KillerEnabled = false
for _, player in ipairs(
Players:GetPlayers()
) do
if player.Character then
if GetRole(
player.Character
) == "Nikki" then
RemoveCharacterChams(
player.Character
)
RemovePlayerNameESP(
player.Character
)
RemoveHealthBar(
player.Character
)
end
end
end
end
end)
end
--// BUTTON UPDATE
local function UpdateButton(
Button,
enabled,
text
)
if enabled then
Button.Text =
text .. " [ON]"
Button.BackgroundColor3 =
GUIButtonOn
else
Button.Text =
text .. " [OFF]"
Button.BackgroundColor3 =
GUIButton
end
end
--// BUTTONS
PaperButton.MouseButton1Click:Connect(function()
PaperEnabled =
not PaperEnabled
if PaperEnabled then
EnableCategory("Paper")
else
DisableCategory("Paper")
end
UpdateButton(
PaperButton,
PaperEnabled,
"Papers"
)
end)
DoorButton.MouseButton1Click:Connect(function()
DoorEnabled =
not DoorEnabled
if DoorEnabled then
EnableCategory("Door")
else
DisableCategory("Door")
end
UpdateButton(
DoorButton,
DoorEnabled,
"Doors"
)
end)
SafeButton.MouseButton1Click:Connect(function()
SafeEnabled =
not SafeEnabled
if SafeEnabled then
EnableCategory("Safe")
else
DisableCategory("Safe")
end
UpdateButton(
SafeButton,
SafeEnabled,
"Safes"
)
end)
WillowButton.MouseButton1Click:Connect(function()
WillowEnabled =
not WillowEnabled
if WillowEnabled then
EnableCategory("Willow")
else
DisableCategory("Willow")
end
UpdateButton(
WillowButton,
WillowEnabled,
"Willow"
)
end)
PlayerButton.MouseButton1Click:Connect(function()
PlayerEnabled =
not PlayerEnabled
if PlayerEnabled then
EnableCategory("Player")
else
DisableCategory("Player")
end
UpdateButton(
PlayerButton,
PlayerEnabled,
"ESP Player"
)
end)
KillerButton.MouseButton1Click:Connect(function()
KillerEnabled =
not KillerEnabled
if KillerEnabled then
EnableCategory("Killer")
else
DisableCategory("Killer")
end
UpdateButton(
KillerButton,
KillerEnabled,
"Killer"
)
end)
--// SLIDER
local DraggingSlider = false
local function UpdateSlider(mouseX)
local AbsolutePosition =
SliderBackground.AbsolutePosition.X
local AbsoluteSize =
SliderBackground.AbsoluteSize.X
local Percent =
math.clamp(
(mouseX - AbsolutePosition) /
AbsoluteSize,
0,
1
)
RenderDistance =
math.floor(
Percent * 500
)
SliderFill.Size =
UDim2.new(
Percent,
0,
1,
0
)
SliderButton.Position =
UDim2.new(
Percent,
-8,
0.5,
-8
)
DistanceLabel.Text =
"Render Distance: " ..
RenderDistance
for _, Data in pairs(
ESPObjects
) do
if Data.Billboard then
Data.Billboard.MaxDistance =
RenderDistance
end
end
for _, Bar in pairs(
HealthBars
) do
Bar.MaxDistance =
RenderDistance
end
for _, Billboard in pairs(
PlayerNameESP
) do
Billboard.MaxDistance =
RenderDistance
end
end
SliderButton.MouseButton1Down:Connect(
function()
DraggingSlider = true
end
)
SliderBackground.InputBegan:Connect(
function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton1 then
DraggingSlider = true
UpdateSlider(
input.Position.X
)
end
end
)
UserInputService.InputChanged:Connect(
function(input)
if DraggingSlider
and input.UserInputType ==
Enum.UserInputType.MouseMovement then
UpdateSlider(
input.Position.X
)
end
end
)
UserInputService.InputEnded:Connect(
function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton1 then
DraggingSlider = false
end
end
)
--// KEYBIND
local WaitingForKey = false
KeybindBox.MouseButton1Click:Connect(
function()
WaitingForKey = true
KeybindBox.Text =
"Press a key..."
end
)
--// KEYBOARD INPUT
UserInputService.InputBegan:Connect(
function(
input,
gameProcessed
)
if WaitingForKey then
if input.UserInputType ==
Enum.UserInputType.Keyboard then
OpenKey =
input.KeyCode
KeybindLabel.Text =
"Menu Key: " ..
input.KeyCode.Name
KeybindBox.Text =
"Click to change key"
WaitingForKey = false
end
return
end
if gameProcessed then
return
end
if input.KeyCode ==
OpenKey then
ToggleMenu()
end
end
)
--// CHARACTER WATCHER
local function WatchCharacter(character)
if not character then
return
end
if CharacterConnections[character] then
return
end
CharacterConnections[character] = true
task.spawn(function()
local Root =
character:WaitForChild(
"HumanoidRootPart",
10
)
if Root then
task.wait(0.5)
CreateCharacterESP(
character
)
end
end)
character.AncestryChanged:Connect(
function(_, parent)
if not parent then
RemoveCharacterESP(
character
)
CharacterConnections[
character
] = nil
end
end
)
end
--// PLAYER WATCHER
local function WatchPlayer(player)
if player == LocalPlayer then
return
end
if player.Character then
WatchCharacter(
player.Character
)
end
player.CharacterAdded:Connect(
function(character)
WatchCharacter(
character
)
end
)
end
for _, player in ipairs(
Players:GetPlayers()
) do
WatchPlayer(player)
end
Players.PlayerAdded:Connect(
function(player)
WatchPlayer(player)
end
)
--// NEW OBJECTS
workspace.DescendantAdded:Connect(
function(object)
if not object then
return
end
task.wait()
if PaperEnabled
and object.Name ==
"FixationPolaroid" then
CreateESP(
object,
"Paper",
Colors.Paper
)
end
if DoorEnabled
and object.Name ==
"Door" then
if not IsInLobby(object) then
CreateESP(
object,
"Door",
Colors.Door
)
end
end
if SafeEnabled
and object.Name ==
"FixationSafe" then
CreateESP(
object,
"Safe",
Colors.Safe
)
end
if WillowEnabled
and object.Name ==
"FixationWillowBox" then
CreateESP(
object,
"Willow",
Colors.Willow
)
end
if PlayerEnabled
and object.Name ==
"INTERESSE" then
CreateESP(
object,
"Interest",
Colors.Interest
)
end
end
)
--// OPTIMIZED UPDATE LOOP
task.spawn(function()
while true do
task.wait(0.25)
--========================================
-- OBJECT ESP
--========================================
for object, Data in pairs(
ESPObjects
) do
if not object
or not object.Parent then
RemoveESP(object)
else
if Data.Billboard then
if not Data.Billboard.Parent then
RemoveESP(object)
else
Data.Billboard.MaxDistance =
RenderDistance
end
end
end
end
--========================================
-- HEALTH BARS
--========================================
if PlayerEnabled then
for character in pairs(
HealthBars
) do
if character
and character.Parent then
UpdateHealthBar(
character
)
else
RemoveHealthBar(
character
)
end
end
end
--========================================
-- PLAYER NAMES
--========================================
if PlayerEnabled
or KillerEnabled then
for character, Billboard in pairs(
PlayerNameESP
) do
if character
and character.Parent then
UpdatePlayerNameESP(
character
)
else
RemovePlayerNameESP(
character
)
end
end
end
--========================================
-- ROLE CHECK
--========================================
if PlayerEnabled
or KillerEnabled then
for _, player in ipairs(
Players:GetPlayers()
) do
if player ~= LocalPlayer
and player.Character then
CreateCharacterESP(
player.Character
)
end
end
end
--========================================
-- CHAMS REPAIR
--========================================
-- Esta é a parte nova mais importante.
-- Se um Highlight sumir, ele é recriado.
if PlayerEnabled
or KillerEnabled then
for _, player in ipairs(
Players:GetPlayers()
) do
if player ~= LocalPlayer
and player.Character then
RepairCharacterChams(
player.Character
)
end
end
end
--========================================
-- LIMPEZA DE CHAMS ANTIGOS
--========================================
for character, Highlight in pairs(
CharacterChams
) do
if not character
or not character.Parent then
if Highlight then
pcall(function()
Highlight:Destroy()
end)
end
CharacterChams[character] = nil
elseif not Highlight
or not Highlight.Parent then
CharacterChams[character] = nil
if
(PlayerEnabled or KillerEnabled)
then
RepairCharacterChams(
character
)
end
end
end
end
end)
print(
"FIXATION ESP loaded successfully."
)Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place