local Rayfield = loadstring(game:HttpGet("https://sirius.menu/rayfield"))()
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local LP = Players.LocalPlayer
local Camera = workspace.CurrentCamera
-- ===================== CONFIG =====================
local DESIRED_FOV = 95
local DistanceCheck = 500
local espSettings = {
Survivors = {Enabled=true, Color=Color3.fromRGB(0,255,0)},
Killers = {Enabled=true, Color=Color3.fromRGB(255,0,0)},
Generators = {Enabled=true, Color=Color3.fromRGB(0,170,255)},
Pallets = {Enabled=false, Color=Color3.fromRGB(139,69,19)},
ExitGates = {Enabled=false, Color=Color3.fromRGB(255,255,0)},
Windows = {Enabled=false, Color=Color3.fromRGB(0,255,255)},
}
-- ===================== ITEM SURVIVOR =====================
local displayNames = {
["Motion Tracker"] = "Motion Tracker",
["Gate"] = "Portal",
["Flashlight"] = "Flashlight",
["Bandage"] = "Bandage",
["Parrying Dagger"] = "Parrying Dagger",
["Adrenaline Shot"] = "Adrenaline Shot",
["Shadow Clone"] = "Shadow Clone",
}
local function getSurvivorItem(player)
if not player.Character then return nil end
for _, obj in pairs(player.Character:GetDescendants()) do
if obj:IsA("Tool") or obj:IsA("Accessory") or obj:IsA("Model") then
if displayNames[obj.Name] then
return "("..displayNames[obj.Name]..")" --
end
end
end
return nil
end
-- ===================== TRACK OBJECT=====================
local trackedObjects = {}
local function trackObject(obj)
local n = obj.Name:lower()
if n:find("generator") then trackedObjects[obj] = "Generators"
elseif n:find("pallet") then trackedObjects[obj] = "Pallets"
elseif n:find("gate") then trackedObjects[obj] = "ExitGates"
elseif n:find("window") then trackedObjects[obj] = "Windows" end
end
for _,v in ipairs(Workspace:GetDescendants()) do
if v:IsA("Model") then trackObject(v) end
end
Workspace.DescendantAdded:Connect(function(obj)
if obj:IsA("Model") then trackObject(obj) end
end)
-- ===================== ROLE =====================
local function getRole(p)
if p.Team and p.Team.Name then
local n = p.Team.Name:lower()
if n:find("killer") then return "Killer" end
if n:find("survivor") then return "Survivor" end
end
return "Survivor"
end
-- ===================== HIGHLIGHT & LABEL =====================
local function ensureHighlight(model, color)
if not model then return end
local hl = model:FindFirstChild("VD_HL")
if not hl then
hl = Instance.new("Highlight")
hl.Name = "VD_HL"
hl.Adornee = model
hl.FillColor = color
hl.FillTransparency = 0.7
hl.OutlineColor = Color3.fromRGB(255,255,255)
hl.OutlineTransparency = 0
hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
hl.Parent = model
else
hl.FillColor = color
hl.OutlineColor = Color3.fromRGB(255,255,255)
end
end
local function clearHighlight(model)
if model and model:FindFirstChild("VD_HL") then
model.VD_HL:Destroy()
end
end
local function ensureLabel(model, text)
if not model then return end
local lbl = model:FindFirstChild("VD_Label")
if not lbl then
lbl = Instance.new("BillboardGui")
lbl.Name = "VD_Label"
lbl.Size = UDim2.new(0,150,0,18)
lbl.StudsOffset = Vector3.new(0,4.5,0)
lbl.AlwaysOnTop = true
lbl.MaxDistance = 500
lbl.Parent = model
local textLabel = Instance.new("TextLabel")
textLabel.Name = "TextLabel"
textLabel.Size = UDim2.new(1,0,1,0)
textLabel.BackgroundTransparency = 1
textLabel.TextScaled = true
textLabel.Font = Enum.Font.SourceSansBold
textLabel.RichText = true
textLabel.TextStrokeTransparency = 0.8
textLabel.TextColor3 = Color3.fromRGB(255,255,255)
textLabel.Text = text
textLabel.Parent = lbl
else
local textLabel = lbl:FindFirstChild("TextLabel")
if textLabel then
textLabel.RichText = true
textLabel.Text = text
end
end
end
local function clearLabel(model)
if model and model:FindFirstChild("VD_Label") then
model.VD_Label:Destroy()
end
end
-- ===================== GENERATOR PROGRESS =====================
local function getGeneratorProgress(gen)
local progress = 0
if gen:GetAttribute("Progress") then
progress = gen:GetAttribute("Progress")
elseif gen:GetAttribute("RepairProgress") then
progress = gen:GetAttribute("RepairProgress")
else
for _, child in ipairs(gen:GetDescendants()) do
if child:IsA("NumberValue") or child:IsA("IntValue") then
local n = child.Name:lower()
if n:find("progress") or n:find("repair") or n:find("percent") then
progress = child.Value
break
end
end
end
end
progress = (progress > 1) and progress / 100 or progress
return math.clamp(progress, 0, 1)
end
local function getProgressColor(percent)
local r = 255*(1-percent)
local g = 255*percent
return Color3.fromRGB(r,g,0)
end
local function generatorFinished(gen)
return getGeneratorProgress(gen) >= 0.99 or gen:FindFirstChild("Finished") or gen:FindFirstChild("Repaired")
end
-- ===================== FOV CORRIGIDO =====================
local function applyFOV()
if Camera and Camera.FieldOfView ~= DESIRED_FOV then
Camera.FieldOfView = DESIRED_FOV
end
end
workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(function()
task.wait(0.1)
Camera = workspace.CurrentCamera
end)
RunService.RenderStepped:Connect(function()
applyFOV()
end)
-- ===================== HITBOX =====================
local playerHitboxes = {}
local hitboxEnabledKiller = false
local hitboxEnabledAll = false
local headSize = 12
local hitboxTransparency = 1
Players.PlayerRemoving:Connect(function(player)
if playerHitboxes[player] then
playerHitboxes[player]:Destroy()
playerHitboxes[player] = nil
end
end)
RunService.RenderStepped:Connect(function()
local roleLP = getRole(LP)
for _, player in pairs(Players:GetPlayers()) do
if player ~= LP and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local hrp = player.Character.HumanoidRootPart
local apply = (hitboxEnabledAll or (hitboxEnabledKiller and roleLP == "Killer"))
if apply then
if not playerHitboxes[player] then
playerHitboxes[player] = hrp
end
hrp.Size = Vector3.new(headSize, headSize, headSize)
hrp.Transparency = hitboxTransparency
hrp.BrickColor = BrickColor.new("Really black")
hrp.Material = Enum.Material.Neon
hrp.CanCollide = false
else
if playerHitboxes[player] then
hrp.Size = Vector3.new(2,2,1)
hrp.Transparency = 0
hrp.BrickColor = BrickColor.new("Medium stone grey")
hrp.Material = Enum.Material.Plastic
hrp.CanCollide = true
playerHitboxes[player] = nil
end
end
end
end
end)
-- ===================== UPDATE ESP =====================
local function updatePlayersESP()
local LPPos = LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") and LP.Character.HumanoidRootPart.Position
if not LPPos then return end
for _,p in ipairs(Players:GetPlayers()) do
if p ~= LP and p.Character then
local hrp = p.Character:FindFirstChild("HumanoidRootPart")
if hrp then
local role = getRole(p)
local set = (role=="Killer") and espSettings.Killers or espSettings.Survivors
if set and set.Enabled then
local labelText = ""..p.DisplayName..""
if role=="Killer" then
local dist = math.floor((hrp.Position - LPPos).Magnitude)
if dist <= DistanceCheck then
ensureHighlight(p.Character, set.Color)
labelText = labelText.." ["..dist.."]"
ensureLabel(p.Character, labelText)
else
clearHighlight(p.Character)
clearLabel(p.Character)
end
else
-- Survivors: adicionar item
local item = getSurvivorItem(p)
if item then
labelText = labelText.." "..item..""
end
ensureHighlight(p.Character, set.Color)
ensureLabel(p.Character, labelText)
end
else
clearHighlight(p.Character)
clearLabel(p.Character)
end
end
end
end
end
RunService.Heartbeat:Connect(function()
local LPPos = LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") and LP.Character.HumanoidRootPart.Position
if not LPPos then return end
for obj,typeName in pairs(trackedObjects) do
if obj and obj.Parent then
local set = espSettings[typeName]
if set and set.Enabled then
local hl = obj:FindFirstChild("VD_HL")
if not hl then
hl = Instance.new("Highlight")
hl.Name = "VD_HL"
hl.Adornee = obj
hl.FillTransparency = 1
hl.OutlineColor = set.Color
hl.OutlineTransparency = 0
hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
hl.Parent = obj
else
hl.OutlineColor = set.Color
end
if typeName=="Generators" then
local progress = getGeneratorProgress(obj)
if not generatorFinished(obj) then
local percent = math.floor(progress*100)
if percent==0 and progress>0 then percent=1 end
local color = getProgressColor(progress)
local text = "["..percent.."%]"
ensureLabel(obj, text)
else
clearLabel(obj)
end
else
clearLabel(obj)
end
else
clearHighlight(obj)
clearLabel(obj)
end
end
end
updatePlayersESP()
end)
-- ===================== GUI =====================
local Window = Rayfield:CreateWindow({
Name="-",
LoadingTitle="(ESP)",
LoadingSubtitle="By SonOfJeksen",
ConfigurationSaving={Enabled=true,FolderName="VD_Suite",FileName="vd_config"},
KeySystem=false
})
-- ===================== TOGGLES =====================
local TabToggles = Window:CreateTab("ESP Toggles")
TabToggles:CreateToggle({Name="Windows ESP", CurrentValue=espSettings.Windows.Enabled, Flag="WindowsESP", Callback=function(v) espSettings.Windows.Enabled=v end})
TabToggles:CreateToggle({Name="Generators ESP", CurrentValue=espSettings.Generators.Enabled, Flag="GeneratorsESP", Callback=function(v) espSettings.Generators.Enabled=v end})
TabToggles:CreateToggle({Name="Pallets ESP", CurrentValue=espSettings.Pallets.Enabled, Flag="PalletsESP", Callback=function(v) espSettings.Pallets.Enabled=v end})
TabToggles:CreateToggle({Name="Exit Gates ESP", CurrentValue=espSettings.ExitGates.Enabled, Flag="ExitGatesESP", Callback=function(v) espSettings.ExitGates.Enabled=v end})
TabToggles:CreateToggle({Name="Killers ESP", CurrentValue=espSettings.Killers.Enabled, Flag="KillersESP", Callback=function(v) espSettings.Killers.Enabled=v end})
TabToggles:CreateToggle({Name="Survivors ESP", CurrentValue=espSettings.Survivors.Enabled, Flag="SurvivorsESP", Callback=function(v) espSettings.Survivors.Enabled=v end})
TabToggles:CreateSlider({
Name="DISTANCE",
Range={50,1000},
Increment=10,
Suffix=" studs",
CurrentValue=DistanceCheck,
Flag="DistanceCheck",
Callback=function(v) DistanceCheck=v end
})
TabToggles:CreateSlider({
Name="FOV",
Range={70,120},
Increment=1,
Suffix="°",
CurrentValue=DESIRED_FOV,
Flag="FOVSlider",
Callback=function(v) DESIRED_FOV=v end
})
-- ===================== COLORS =====================
local TabColors = Window:CreateTab("ESP Colors")
local function createColorPicker(name, setName)
TabColors:CreateColorPicker({
Name=name,
Color=espSettings[setName].Color,
Flag=name:gsub(" ",""),
Default=espSettings[setName].Color,
Callback=function(c)
espSettings[setName].Color=c
end
})
end
for _, setName in pairs({"Windows","Generators","Pallets","ExitGates","Killers","Survivors"}) do
createColorPicker(setName.." ESP Color", setName)
end
-- ===================== HITBOX =====================
local TabHitbox = Window:CreateTab("Hitbox")
TabHitbox:CreateToggle({Name="Hitbox (Killer Only)", CurrentValue=false, Flag="HitboxToggleKiller", Callback=function(v) hitboxEnabledKiller=v end})
TabHitbox:CreateToggle({Name="Hitbox (All Players)", CurrentValue=false, Flag="HitboxToggleAll", Callback=function(v) hitboxEnabledAll=v end})
TabHitbox:CreateSlider({Name="Hitbox Size", Range={4,30}, Increment=1, Suffix=" studs", CurrentValue=headSize, Flag="HitboxSize", Callback=function(v) headSize=v end})
TabHitbox:CreateSlider({Name="Hitbox Transparency", Range={0,1}, Increment=0.05, Suffix="", CurrentValue=hitboxTransparency, Flag="HitboxTransparency", Callback=function(v) hitboxTransparency=v end})
-- ===================== NOTIFICATION =====================
if Rayfield.Notify then Rayfield.Notify = function() end end