
Keyless

local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local CoreGui = game:GetService("CoreGui")
local HttpService = game:GetService("HttpService")
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local Camera = workspace.CurrentCamera
--// Global State for UI Logic
local OpenedDropdown = nil
local LastMouseBehavior = Enum.MouseBehavior.Default
local LastMouseIconEnabled = true
--// UI Elements Tracking for Configs
local UI_Elements = {
Toggles = {},
Sliders = {},
Keys = {},
ESPToggles = {},
ESPSizeToggles = {},
PlayerActions = {}
}
--// ESP States Storage
local ESPStates = {
Survivor = {
Chams = {Enabled = false, Color = Color3.fromHex("#AFEEEE"), Outline = Color3.new(0,0,0)},
Skeleton = {Enabled = false, Color = Color3.fromHex("#AFEEEE"), Outline = Color3.new(0,0,0)},
Names = {Enabled = false, Color = Color3.fromHex("#AFEEEE"), Outline = Color3.new(0,0,0), Size = "Auto"},
Distance = {Enabled = false, Color = Color3.fromHex("#AFEEEE"), Outline = Color3.new(0,0,0), Size = "Auto"}
},
Killer = {
Chams = {Enabled = false, Color = Color3.fromHex("#A5260A"), Outline = Color3.new(0,0,0)},
Skeleton = {Enabled = false, Color = Color3.fromHex("#A5260A"), Outline = Color3.new(0,0,0)},
Names = {Enabled = false, Color = Color3.fromHex("#A5260A"), Outline = Color3.new(0,0,0), Size = "Auto"},
Distance = {Enabled = false, Color = Color3.fromHex("#A5260A"), Outline = Color3.new(0,0,0), Size = "Auto"},
Killerlight = {Enabled = false, Color = Color3.fromHex("#FF0000"), Outline = Color3.new(0,0,0)}
},
Objects = {
Chests = {Enabled = false, Color = Color3.fromHex("#CD5700"), Outline = Color3.new(0,0,0)},
Hatch = {Enabled = false, Color = Color3.fromHex("#7B3F00"), Outline = Color3.new(0,0,0)},
Lockers = {Enabled = false, Color = Color3.fromHex("#CD5700"), Outline = Color3.new(0,0,0)},
Hooks = {Enabled = false, Color = Color3.fromHex("#A5260A"), Outline = Color3.new(0,0,0)},
Pallets = {Enabled = false, Color = Color3.fromHex("#DAD871"), Outline = Color3.new(0,0,0)},
Windows = {Enabled = false, Color = Color3.fromHex("#DAD871"), Outline = Color3.new(0,0,0)},
Exits = {Enabled = false, Color = Color3.fromHex("#969696"), Outline = Color3.new(0,0,0)},
Totems = {Enabled = false, Color = Color3.fromHex("#FFFDDF"), Outline = Color3.new(0,0,0)},
Generators = {Enabled = false, Color = Color3.fromHex("#1E1112"), Outline = Color3.new(0,0,0)},
GeneratorsProgress = {Enabled = false}
}
}
--// Дополнительные состояния
local MiscStates = {
FOVChanger = {Enabled = false, Value = 70},
AspectRatioChanger = {Enabled = false, Value = 0.70},
FreeCamera = {Enabled = false},
FlashProgress = {Enabled = false},
InfItemCharges = {Enabled = false},
OutfitChanger = {Enabled = false},
ScratchMarks = {Enabled = false, Color = Color3.fromRGB(208, 23, 6)}
}
local ScratchMarksModule = {
Connection = nil,
Folder = nil,
LastTick = 0
}
--// ESP Modules Storage
local ESPModules = {
Survivor = {
Chams = {Highlights = {}},
Skeleton = {Lines = {}, Connection = nil},
Names = {Labels = {}, Connection = nil},
Distance = {Labels = {}, Connection = nil}
},
Killer = {
Chams = {Highlights = {}},
Skeleton = {Lines = {}, Connection = nil},
Names = {Labels = {}, Connection = nil},
Distance = {Labels = {}, Connection = nil},
Killerlight = {Connection = nil}
},
Objects = {
Chests = {Highlights = {}},
Hatch = {Highlights = {}},
Lockers = {Highlights = {}},
Hooks = {Highlights = {}},
Pallets = {Highlights = {}},
Windows = {Highlights = {}},
Exits = {Highlights = {}},
Totems = {Highlights = {}},
Generators = {Highlights = {}},
GeneratorsProgress = {Billboards = {}, Connection = nil}
}
}
--// Theme Configuration
local Theme = {
Background = Color3.fromRGB(28, 30, 35),
Sidebar = Color3.fromRGB(22, 24, 28),
Panel = Color3.fromRGB(34, 36, 41),
Accent = Color3.fromRGB(211, 47, 47),
Text = Color3.fromRGB(255, 255, 255),
SubText = Color3.fromRGB(150, 150, 150),
Input = Color3.fromRGB(24, 26, 30),
Divider = Color3.fromRGB(45, 47, 52)
}
local RageModules = {
BlockHooks = {Connection = nil},
FinishGens = {Connection = nil},
GateNeverOpen = {Connection = nil},
NeverFinishGens = {Connection = nil},
LungeDuration = {Connection = nil, Value = 0.6}
}
--// Helper XYETA
local function Create(className, props, children)
local inst = Instance.new(className)
for k, v in pairs(props or {}) do inst[k] = v end
if children then
for _, child in pairs(children) do child.Parent = inst end
end
return inst
end
local function MakeDraggable(dragObj, moveObj)
local dragging, dragInput, dragStart, startPos
dragObj.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = moveObj.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then dragging = false end
end)
end
end)
dragObj.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end
end)
UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
moveObj.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
end
--// Функция определения команды игрока
local function getPlayerTeam(player)
if player.Team then
local teamName = player.Team.Name
if teamName:lower():find("killer") then
return "Killer"
elseif teamName:lower():find("survivor") then
return "Survivor"
end
end
local role = player:GetAttribute("Role") or player:GetAttribute("Team")
if role then
role = tostring(role):lower()
if role:find("killer") then
return "Killer"
elseif role:find("survivor") then
return "Survivor"
end
end
return "Survivor"
end
local function FromHex(hex)
hex = hex:gsub("#", "")
if #hex == 6 then
local r, g, b = tonumber(hex:sub(1, 2), 16), tonumber(hex:sub(3, 4), 16), tonumber(hex:sub(5, 6), 16)
if r and g and b then return Color3.fromRGB(r, g, b) end
end
return nil
end
--// Таблица сокращений названий клавиш
local KeyShortcuts = {
["LeftControl"] = "LCtrl", ["RightControl"] = "RCtrl",
["LeftShift"] = "LShift", ["RightShift"] = "RShift",
["LeftAlt"] = "LAlt", ["RightAlt"] = "RAlt",
["CapsLock"] = "Caps", ["Return"] = "Enter",
["Backspace"] = "Back", ["PageUp"] = "PgUp",
["PageDown"] = "PgDn", ["Delete"] = "Del",
["Insert"] = "Ins", ["Home"] = "Home",
["End"] = "End", ["Space"] = "Space",
["One"] = "1", ["Two"] = "2", ["Three"] = "3", ["Four"] = "4",
["Five"] = "5", ["Six"] = "6", ["Seven"] = "7", ["Eight"] = "8",
["Nine"] = "9", ["Zero"] = "0"
}
-- Функция для получения красивого имени клавиши
local function GetKeyName(keyCode)
if not keyCode or keyCode == Enum.KeyCode.Unknown then
return "None"
end
return KeyShortcuts[keyCode.Name] or keyCode.Name
end
--// ESP XYETA
-- Killer Chams
local function updateKillerChams(enabled, color, outlineColor)
-- Очищаем старые Highlights
for _, highlight in pairs(ESPModules.Killer.Chams.Highlights) do
if highlight and highlight.Parent then
highlight:Destroy()
end
end
ESPModules.Killer.Chams.Highlights = {}
if not enabled then return end
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
local character = player.Character
if getPlayerTeam(player) == "Killer" then
local highlight = Instance.new("Highlight")
highlight.Name = "Killer_ESP_Highlight"
highlight.Adornee = character
highlight.FillColor = color
highlight.OutlineColor = outlineColor
highlight.FillTransparency = 0.5
highlight.OutlineTransparency = 0.3
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Parent = character
table.insert(ESPModules.Killer.Chams.Highlights, highlight)
end
end
end
end
-- Survivor Chams
local function updateSurvivorChams(enabled, color, outlineColor)
for _, highlight in pairs(ESPModules.Survivor.Chams.Highlights) do
if highlight and highlight.Parent then
highlight:Destroy()
end
end
ESPModules.Survivor.Chams.Highlights = {}
if not enabled then return end
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
local character = player.Character
if getPlayerTeam(player) == "Survivor" then
local highlight = Instance.new("Highlight")
highlight.Name = "Survivor_ESP_Highlight"
highlight.Adornee = character
highlight.FillColor = color
highlight.OutlineColor = outlineColor
highlight.FillTransparency = 0.5
highlight.OutlineTransparency = 0.3
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Parent = character
table.insert(ESPModules.Survivor.Chams.Highlights, highlight)
end
end
end
end
-- Killer Skeleton
local function updateKillerSkeleton(enabled, color, outlineColor)
if ESPModules.Killer.Skeleton.Connection then
ESPModules.Killer.Skeleton.Connection:Disconnect()
ESPModules.Killer.Skeleton.Connection = nil
end
for _, line in pairs(ESPModules.Killer.Skeleton.Lines) do
if line then line:Destroy() end
end
ESPModules.Killer.Skeleton.Lines = {}
if not enabled then return end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "KillerSkeletonGUI"
screenGui.IgnoreGuiInset = true
screenGui.ResetOnSpawn = false
screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local R15_STRUCTURE = {
{"Head", "UpperTorso"},
{"UpperTorso", "LowerTorso"},
{"UpperTorso", "LeftUpperArm"}, {"LeftUpperArm", "LeftLowerArm"}, {"LeftLowerArm", "LeftHand"},
{"UpperTorso", "RightUpperArm"}, {"RightUpperArm", "RightLowerArm"}, {"RightLowerArm", "RightHand"},
{"LowerTorso", "LeftUpperLeg"}, {"LeftUpperLeg", "LeftLowerLeg"}, {"LeftLowerLeg", "LeftFoot"},
{"LowerTorso", "RightUpperLeg"}, {"RightUpperLeg", "RightLowerLeg"}, {"RightLowerLeg", "RightFoot"}
}
ESPModules.Killer.Skeleton.Connection = RunService.RenderStepped:Connect(function()
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
local char = player.Character
local hum = char:FindFirstChild("Humanoid")
if hum and hum.Health > 0 and getPlayerTeam(player) == "Killer" then
for i, connection in ipairs(R15_STRUCTURE) do
local partA = char:FindFirstChild(connection[1])
local partB = char:FindFirstChild(connection[2])
if partA and partB then
local posA, visA = workspace.CurrentCamera:WorldToViewportPoint(partA.Position)
local posB, visB = workspace.CurrentCamera:WorldToViewportPoint(partB.Position)
-- ОБНОВЛЕНИЕ: Проверяем, что ОБЕ точки в поле зрения
if visA and visB then
local line = ESPModules.Killer.Skeleton.Lines[player.Name .. i]
if not line then
line = Instance.new("Frame")
line.Name = "Killer_Skeleton_Line"
line.BackgroundColor3 = color
line.BorderSizePixel = 0
line.AnchorPoint = Vector2.new(0.5, 0.5)
line.Parent = screenGui
ESPModules.Killer.Skeleton.Lines[player.Name .. i] = line
end
local start2d = Vector2.new(posA.X, posA.Y)
local end2d = Vector2.new(posB.X, posB.Y)
local diff = end2d - start2d
line.Size = UDim2.new(0, diff.Magnitude, 0, 1.5)
line.Position = UDim2.new(0, start2d.X + (diff.X / 2), 0, start2d.Y + (diff.Y / 2))
line.Rotation = math.deg(math.atan2(diff.Y, diff.X))
line.Visible = true
else
-- Скрываем линию, если игрок не в поле зрения
local line = ESPModules.Killer.Skeleton.Lines[player.Name .. i]
if line then
line.Visible = false
end
end
else
-- Скрываем линию, если части тела не найдены
local line = ESPModules.Killer.Skeleton.Lines[player.Name .. i]
if line then
line.Visible = false
end
end
end
else
-- Скрываем все линии, если игрок мертв или не убийца
for i = 1, #R15_STRUCTURE do
local line = ESPModules.Killer.Skeleton.Lines[player.Name .. i]
if line then
line.Visible = false
end
end
end
else
-- Скрываем все линии, если игрок вышел
for i = 1, #R15_STRUCTURE do
local line = ESPModules.Killer.Skeleton.Lines[player.Name .. i]
if line then
line.Visible = false
end
end
end
end
end)
end
-- Survivor Skeleton
local function updateSurvivorSkeleton(enabled, color, outlineColor)
if ESPModules.Survivor.Skeleton.Connection then
ESPModules.Survivor.Skeleton.Connection:Disconnect()
ESPModules.Survivor.Skeleton.Connection = nil
end
for _, line in pairs(ESPModules.Survivor.Skeleton.Lines) do
if line then line:Destroy() end
end
ESPModules.Survivor.Skeleton.Lines = {}
if not enabled then return end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "SurvivorSkeletonGUI"
screenGui.IgnoreGuiInset = true
screenGui.ResetOnSpawn = false
screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local R15_STRUCTURE = {
{"Head", "UpperTorso"},
{"UpperTorso", "LowerTorso"},
{"UpperTorso", "LeftUpperArm"}, {"LeftUpperArm", "LeftLowerArm"}, {"LeftLowerArm", "LeftHand"},
{"UpperTorso", "RightUpperArm"}, {"RightUpperArm", "RightLowerArm"}, {"RightLowerArm", "RightHand"},
{"LowerTorso", "LeftUpperLeg"}, {"LeftUpperLeg", "LeftLowerLeg"}, {"LeftLowerLeg", "LeftFoot"},
{"LowerTorso", "RightUpperLeg"}, {"RightUpperLeg", "RightLowerLeg"}, {"RightLowerLeg", "RightFoot"}
}
ESPModules.Survivor.Skeleton.Connection = RunService.RenderStepped:Connect(function()
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
local char = player.Character
local hum = char:FindFirstChild("Humanoid")
if hum and hum.Health > 0 and getPlayerTeam(player) == "Survivor" then
for i, connection in ipairs(R15_STRUCTURE) do
local partA = char:FindFirstChild(connection[1])
local partB = char:FindFirstChild(connection[2])
if partA and partB then
local posA, visA = workspace.CurrentCamera:WorldToViewportPoint(partA.Position)
local posB, visB = workspace.CurrentCamera:WorldToViewportPoint(partB.Position)
-- ОБНОВЛЕНИЕ: Проверяем, что ОБЕ точки в поле зрения
if visA and visB then
local line = ESPModules.Survivor.Skeleton.Lines[player.Name .. i]
if not line then
line = Instance.new("Frame")
line.Name = "Survivor_Skeleton_Line"
line.BackgroundColor3 = color
line.BorderSizePixel = 0
line.AnchorPoint = Vector2.new(0.5, 0.5)
line.Parent = screenGui
ESPModules.Survivor.Skeleton.Lines[player.Name .. i] = line
end
local start2d = Vector2.new(posA.X, posA.Y)
local end2d = Vector2.new(posB.X, posB.Y)
local diff = end2d - start2d
line.Size = UDim2.new(0, diff.Magnitude, 0, 1.5)
line.Position = UDim2.new(0, start2d.X + (diff.X / 2), 0, start2d.Y + (diff.Y / 2))
line.Rotation = math.deg(math.atan2(diff.Y, diff.X))
line.Visible = true
else
-- Скрываем линию, если игрок не в поле зрения
local line = ESPModules.Survivor.Skeleton.Lines[player.Name .. i]
if line then
line.Visible = false
end
end
else
-- Скрываем линию, если части тела не найдены
local line = ESPModules.Survivor.Skeleton.Lines[player.Name .. i]
if line then
line.Visible = false
end
end
end
else
-- Скрываем все линии, если игрок мертв или не выживший
for i = 1, #R15_STRUCTURE do
local line = ESPModules.Survivor.Skeleton.Lines[player.Name .. i]
if line then
line.Visible = false
end
end
end
else
-- Скрываем все линии, если игрок вышел
for i = 1, #R15_STRUCTURE do
local line = ESPModules.Survivor.Skeleton.Lines[player.Name .. i]
if line then
line.Visible = false
end
end
end
end
end)
end
-- Killer Names (ИСПРАВЛЕННАЯ ВЕРСИЯ)
local function updateKillerNames(enabled, color, outlineColor, size)
if ESPModules.Killer.Names.Connection then
ESPModules.Killer.Names.Connection:Disconnect()
ESPModules.Killer.Names.Connection = nil
end
for _, label in pairs(ESPModules.Killer.Names.Labels) do
if label then label:Destroy() end
end
ESPModules.Killer.Names.Labels = {}
if not enabled then return end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "KillerNamesESP"
screenGui.IgnoreGuiInset = true
screenGui.ResetOnSpawn = false
screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local textSize = 16
if size ~= "Auto" and type(size) == "number" then
textSize = math.clamp(size, 10, 30)
end
ESPModules.Killer.Names.Connection = RunService.RenderStepped:Connect(function()
-- Создаем временный список активных игроков
local activePlayers = {}
for _, player in pairs(Players:GetPlayers()) do
activePlayers[player] = true
end
-- Очищаем метки для игроков, которых больше нет в игре
for player, label in pairs(ESPModules.Killer.Names.Labels) do
if not activePlayers[player] and label then
label:Destroy()
ESPModules.Killer.Names.Labels[player] = nil
end
end
-- Обновляем метки для активных игроков
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and LocalPlayer.Character then
local character = player.Character
local head = character:FindFirstChild("Head")
local humanoid = character:FindFirstChild("Humanoid")
local localHrp = LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if head and humanoid and humanoid.Health > 0 and localHrp and getPlayerTeam(player) == "Killer" then
local label = ESPModules.Killer.Names.Labels[player]
if not label then
label = Instance.new("TextLabel")
label.Name = "Killer_" .. player.Name
label.Parent = screenGui
label.BackgroundTransparency = 1
label.Size = UDim2.new(0, 200, 0, 28)
label.TextColor3 = color
label.Font = Enum.Font.RobotoMono
label.TextSize = textSize
label.TextStrokeColor3 = outlineColor
label.TextStrokeTransparency = 0.3
label.Text = player.Name
ESPModules.Killer.Names.Labels[player] = label
end
local namePosition = head.Position + Vector3.new(0, 3.5, 0)
local vector, onScreen = workspace.CurrentCamera:WorldToViewportPoint(namePosition)
if onScreen then
label.Position = UDim2.new(0, vector.X - 100, 0, vector.Y)
label.Visible = true
else
label.Visible = false
end
else
if ESPModules.Killer.Names.Labels[player] then
ESPModules.Killer.Names.Labels[player].Visible = false
end
end
else
if ESPModules.Killer.Names.Labels[player] then
ESPModules.Killer.Names.Labels[player].Visible = false
end
end
end
end)
end
-- Survivor Names (ИСПРАВЛЕННАЯ ВЕРСИЯ)
local function updateSurvivorNames(enabled, color, outlineColor, size)
if ESPModules.Survivor.Names.Connection then
ESPModules.Survivor.Names.Connection:Disconnect()
ESPModules.Survivor.Names.Connection = nil
end
for _, label in pairs(ESPModules.Survivor.Names.Labels) do
if label then label:Destroy() end
end
ESPModules.Survivor.Names.Labels = {}
if not enabled then return end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "SurvivorNamesESP"
screenGui.IgnoreGuiInset = true
screenGui.ResetOnSpawn = false
screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local textSize = 14
if size ~= "Auto" and type(size) == "number" then
textSize = math.clamp(size, 10, 30)
end
ESPModules.Survivor.Names.Connection = RunService.RenderStepped:Connect(function()
-- Создаем временный список активных игроков
local activePlayers = {}
for _, player in pairs(Players:GetPlayers()) do
activePlayers[player] = true
end
-- Очищаем метки для игроков, которых больше нет в игре
for player, label in pairs(ESPModules.Survivor.Names.Labels) do
if not activePlayers[player] and label then
label:Destroy()
ESPModules.Survivor.Names.Labels[player] = nil
end
end
-- Обновляем метки для активных игроков
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and LocalPlayer.Character then
local character = player.Character
local head = character:FindFirstChild("Head")
local humanoid = character:FindFirstChild("Humanoid")
local localHrp = LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if head and humanoid and humanoid.Health > 0 and localHrp and getPlayerTeam(player) == "Survivor" then
local label = ESPModules.Survivor.Names.Labels[player]
if not label then
label = Instance.new("TextLabel")
label.Name = "Survivor_" .. player.Name
label.Parent = screenGui
label.BackgroundTransparency = 1
label.Size = UDim2.new(0, 200, 0, 28)
label.TextColor3 = color
label.Font = Enum.Font.RobotoMono
label.TextSize = textSize
label.TextStrokeColor3 = outlineColor
label.TextStrokeTransparency = 0.5
label.Text = player.Name
ESPModules.Survivor.Names.Labels[player] = label
end
local namePosition = head.Position + Vector3.new(0, 3.0, 0)
local vector, onScreen = workspace.CurrentCamera:WorldToViewportPoint(namePosition)
if onScreen then
label.Position = UDim2.new(0, vector.X - 100, 0, vector.Y)
label.Visible = true
else
label.Visible = false
end
else
if ESPModules.Survivor.Names.Labels[player] then
ESPModules.Survivor.Names.Labels[player].Visible = false
end
end
else
if ESPModules.Survivor.Names.Labels[player] then
ESPModules.Survivor.Names.Labels[player].Visible = false
end
end
end
end)
end
-- Killer Distance (ИСПРАВЛЕННАЯ ВЕРСИЯ)
local function updateKillerDistance(enabled, color, outlineColor, size)
if ESPModules.Killer.Distance.Connection then
ESPModules.Killer.Distance.Connection:Disconnect()
ESPModules.Killer.Distance.Connection = nil
end
for _, label in pairs(ESPModules.Killer.Distance.Labels) do
if label then label:Destroy() end
end
ESPModules.Killer.Distance.Labels = {}
if not enabled then return end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "KillerDistanceESP"
screenGui.IgnoreGuiInset = true
screenGui.ResetOnSpawn = false
screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local textSize = 12
if size ~= "Auto" and type(size) == "number" then
textSize = math.clamp(size, 8, 24)
end
ESPModules.Killer.Distance.Connection = RunService.RenderStepped:Connect(function()
-- Создаем временный список активных игроков
local activePlayers = {}
for _, player in pairs(Players:GetPlayers()) do
activePlayers[player] = true
end
-- Очищаем метки для игроков, которых больше нет в игре
for player, label in pairs(ESPModules.Killer.Distance.Labels) do
if not activePlayers[player] and label then
label:Destroy()
ESPModules.Killer.Distance.Labels[player] = nil
end
end
-- Обновляем метки для активных игроков
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and LocalPlayer.Character then
local character = player.Character
local humanoid = character:FindFirstChild("Humanoid")
local hrp = character:FindFirstChild("HumanoidRootPart")
local localHrp = LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if hrp and humanoid and humanoid.Health > 0 and localHrp and getPlayerTeam(player) == "Killer" then
local label = ESPModules.Killer.Distance.Labels[player]
if not label then
label = Instance.new("TextLabel")
label.Name = "Killer_Distance_" .. player.Name
label.Parent = screenGui
label.BackgroundTransparency = 1
label.Size = UDim2.new(0, 120, 0, 25)
label.TextColor3 = color
label.Font = Enum.Font.RobotoMono
label.TextSize = textSize
label.TextStrokeColor3 = outlineColor
label.TextStrokeTransparency = 0.5
ESPModules.Killer.Distance.Labels[player] = label
end
local footPosition = hrp.Position - Vector3.new(0, 2.5, 0)
local vector, onScreen = workspace.CurrentCamera:WorldToViewportPoint(footPosition)
if onScreen then
local distanceStuds = (hrp.Position - localHrp.Position).Magnitude
local distanceMeters = math.floor(distanceStuds / 3.57)
label.Text = distanceMeters .. " m"
label.Position = UDim2.new(0, vector.X - 60, 0, vector.Y)
label.Visible = true
else
label.Visible = false
end
else
if ESPModules.Killer.Distance.Labels[player] then
ESPModules.Killer.Distance.Labels[player].Visible = false
end
end
else
if ESPModules.Killer.Distance.Labels[player] then
ESPModules.Killer.Distance.Labels[player].Visible = false
end
end
end
end)
end
-- Survivor Distance (ИСПРАВЛЕННАЯ ВЕРСИЯ)
local function updateSurvivorDistance(enabled, color, outlineColor, size)
if ESPModules.Survivor.Distance.Connection then
ESPModules.Survivor.Distance.Connection:Disconnect()
ESPModules.Survivor.Distance.Connection = nil
end
for _, label in pairs(ESPModules.Survivor.Distance.Labels) do
if label then label:Destroy() end
end
ESPModules.Survivor.Distance.Labels = {}
if not enabled then return end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "SurvivorDistanceESP"
screenGui.IgnoreGuiInset = true
screenGui.ResetOnSpawn = false
screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local textSize = 12
if size ~= "Auto" and type(size) == "number" then
textSize = math.clamp(size, 8, 24)
end
ESPModules.Survivor.Distance.Connection = RunService.RenderStepped:Connect(function()
-- Создаем временный список активных игроков
local activePlayers = {}
for _, player in pairs(Players:GetPlayers()) do
activePlayers[player] = true
end
-- Очищаем метки для игроков, которых больше нет в игре
for player, label in pairs(ESPModules.Survivor.Distance.Labels) do
if not activePlayers[player] and label then
label:Destroy()
ESPModules.Survivor.Distance.Labels[player] = nil
end
end
-- Обновляем метки для активных игроков
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and LocalPlayer.Character then
local character = player.Character
local humanoid = character:FindFirstChild("Humanoid")
local hrp = character:FindFirstChild("HumanoidRootPart")
local localHrp = LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if hrp and humanoid and humanoid.Health > 0 and localHrp and getPlayerTeam(player) == "Survivor" then
local label = ESPModules.Survivor.Distance.Labels[player]
if not label then
label = Instance.new("TextLabel")
label.Name = "Survivor_Distance_" .. player.Name
label.Parent = screenGui
label.BackgroundTransparency = 1
label.Size = UDim2.new(0, 120, 0, 25)
label.TextColor3 = color
label.Font = Enum.Font.RobotoMono
label.TextSize = textSize
label.TextStrokeColor3 = outlineColor
label.TextStrokeTransparency = 0.5
ESPModules.Survivor.Distance.Labels[player] = label
end
local footPosition = hrp.Position - Vector3.new(0, 2.5, 0)
local vector, onScreen = workspace.CurrentCamera:WorldToViewportPoint(footPosition)
if onScreen then
local distanceStuds = (hrp.Position - localHrp.Position).Magnitude
local distanceMeters = math.floor(distanceStuds / 3.57)
label.Text = distanceMeters .. " m"
label.Position = UDim2.new(0, vector.X - 60, 0, vector.Y)
label.Visible = true
else
label.Visible = false
end
else
if ESPModules.Survivor.Distance.Labels[player] then
ESPModules.Survivor.Distance.Labels[player].Visible = false
end
end
else
if ESPModules.Survivor.Distance.Labels[player] then
ESPModules.Survivor.Distance.Labels[player].Visible = false
end
end
end
end)
end
-- Custom Killerlight
local function updateKillerlight(enabled, color, outlineColor)
if ESPModules.Killer.Killerlight.Connection then
ESPModules.Killer.Killerlight.Connection:Disconnect()
ESPModules.Killer.Killerlight.Connection = nil
end
if not enabled then return end
ESPModules.Killer.Killerlight.Connection = RunService.Heartbeat:Connect(function()
-- Workspace Beams
local beamsFolder = workspace:FindFirstChild("Beams")
if beamsFolder then
for _, part in ipairs(beamsFolder:GetDescendants()) do
if part:IsA("BasePart") and string.find(part.Name:lower(), "redstain") then
part.Color = color
end
end
end
-- Players
for _, player in pairs(Players:GetPlayers()) do
local character = player.Character
if character and character:FindFirstChild("Head") then
local head = character.Head
for _, child in ipairs(head:GetChildren()) do
if child:IsA("SurfaceLight") and string.find(child.Name:lower(), "redstain") then
child.Color = color
end
end
end
end
end)
end
-- Object ESP Functions
local function updateObjectESP(objectType, enabled, color, outlineColor)
if ESPModules.Objects[objectType] and ESPModules.Objects[objectType].Highlights then
for _, highlight in pairs(ESPModules.Objects[objectType].Highlights) do
if highlight and highlight.Parent then
highlight:Destroy()
end
end
ESPModules.Objects[objectType].Highlights = {}
end
if not enabled then return end
local baseNames = {
Chests = "Chest",
Hatch = "Hatch",
Lockers = "Hiding_Spot",
Hooks = "Hook",
Pallets = "Pallet",
Windows = "Window",
Exits = "Wall_Mount",
Totems = "Totem",
Generators = "Generator"
}
local exactMatch = {
Chests = false,
Hatch = true,
Lockers = false,
Hooks = false,
Pallets = false,
Windows = false,
Exits = true,
Totems = false,
Generators = false
}
local baseName = baseNames[objectType]
if not baseName then return end
for _, descendant in pairs(workspace:GetDescendants()) do
if descendant:IsA("BasePart") or descendant:IsA("Model") then
local name = descendant.Name
local match = false
if exactMatch[objectType] then
if name == baseName then
match = true
end
else
if string.find(name, baseName) == 1 then
match = true
end
end
if match then
local highlight = Instance.new("Highlight")
highlight.Name = objectType .. "_ESP_Highlight"
highlight.Adornee = descendant
highlight.FillColor = color
highlight.OutlineColor = outlineColor
highlight.FillTransparency = 0.5
highlight.OutlineTransparency = 0.3
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Parent = descendant
table.insert(ESPModules.Objects[objectType].Highlights, highlight)
end
end
end
end
-- Generators Progress (ИСПРАВЛЕННАЯ ВЕРСИЯ БЕЗ PRINT)
local function updateGeneratorsProgress(enabled)
-- Останавливаем предыдущее соединение если было
if ESPModules.Objects.GeneratorsProgress.Connection then
ESPModules.Objects.GeneratorsProgress.Connection:Disconnect()
ESPModules.Objects.GeneratorsProgress.Connection = nil
end
-- Удаляем все существующие BillboardGui
for _, billboard in pairs(ESPModules.Objects.GeneratorsProgress.Billboards) do
if billboard and billboard.Parent then
billboard:Destroy()
end
end
ESPModules.Objects.GeneratorsProgress.Billboards = {}
-- Удаляем ScreenGui если он есть
if ESPModules.Objects.GeneratorsProgress.ScreenGui then
ESPModules.Objects.GeneratorsProgress.ScreenGui:Destroy()
ESPModules.Objects.GeneratorsProgress.ScreenGui = nil
end
if not enabled then return end
-- Создаем ScreenGui для отображения Billboard
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "GeneratorsProgressGUI"
screenGui.IgnoreGuiInset = true
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
-- Функция для получения прогресса генератора
local function getGeneratorProgress(generator)
if not generator or not generator.Parent then
return 0
end
-- Ищем атрибуты
for attrName, attrValue in pairs(generator:GetAttributes()) do
if type(attrValue) == "number" then
local attrLower = attrName:lower()
if attrLower:find("progress") or attrLower:find("value") or attrLower:find("repair") then
local value = attrValue
-- Если значение 0-1000, конвертируем в проценты
if value <= 1000 and value >= 0 then
return math.floor((value / 1000) * 100)
end
-- Если уже 0-100
if value <= 100 and value >= 0 then
return math.floor(value)
end
end
end
end
-- Ищем NumberValue/IntValue
for _, child in pairs(generator:GetDescendants()) do
if (child:IsA("NumberValue") or child:IsA("IntValue") or child:IsA("StringValue")) then
local childName = child.Name:lower()
if childName:find("progress") or childName:find("value") then
local value = tonumber(child.Value) or 0
if value <= 1000 and value >= 0 then
return math.floor((value / 1000) * 100)
end
if value <= 100 and value >= 0 then
return math.floor(value)
end
end
end
end
return 0
end
-- Находим все генераторы
local generators = {}
for _, descendant in pairs(workspace:GetDescendants()) do
if descendant:IsA("Model") and string.find(descendant.Name:lower(), "generator") then
table.insert(generators, descendant)
end
end
-- Функция для получения позиции генератора
local function getGeneratorPosition(generator)
if not generator then return Vector3.new(0, 0, 0) end
-- Пробуем разные части генератора
local head = generator:FindFirstChild("Head")
if head then return head.Position end
local panel = generator:FindFirstChild("Panel")
if panel and panel:IsA("BasePart") then return panel.Position end
local primaryPart = generator.PrimaryPart
if primaryPart then return primaryPart.Position end
-- Ищем любую BasePart
for _, child in pairs(generator:GetChildren()) do
if child:IsA("BasePart") then
return child.Position
end
end
-- Если ничего не нашли, возвращаем позицию модели
return generator:GetPivot().Position
end
-- Функция создания TextLabel для прогресса
local function createProgressLabel(generator)
if not generator then return nil end
local label = Instance.new("TextLabel")
label.Name = "GeneratorProgress_" .. generator.Name
label.BackgroundTransparency = 1
label.Size = UDim2.new(0, 70, 0, 22)
label.Text = "0%"
label.TextColor3 = Color3.fromRGB(153, 153, 153)
label.TextStrokeColor3 = Color3.new(0, 0, 0)
label.TextStrokeTransparency = 0
label.TextSize = 13
label.Font = Enum.Font.GothamSemibold
label.Visible = false
label.Parent = screenGui
-- Сохраняем ссылку
ESPModules.Objects.GeneratorsProgress.Billboards[generator] = label
return label
end
-- Создаем метки для всех генераторов
for _, generator in ipairs(generators) do
if generator and generator.Parent then
createProgressLabel(generator)
end
end
-- Запускаем цикл обновления позиций и прогресса
ESPModules.Objects.GeneratorsProgress.Connection = RunService.RenderStepped:Connect(function()
for generator, label in pairs(ESPModules.Objects.GeneratorsProgress.Billboards) do
if generator and generator.Parent and label and label.Parent then
-- Получаем прогресс
local progress = getGeneratorProgress(generator)
-- Получаем позицию генератора в мировых координатах
local position = getGeneratorPosition(generator)
-- Конвертируем мировые координаты в экранные
local camera = workspace.CurrentCamera
local screenPoint, onScreen = camera:WorldToViewportPoint(position + Vector3.new(0, 2.5, 0))
if onScreen then
-- Обновляем позицию и текст
label.Position = UDim2.new(0, screenPoint.X - 35, 0, screenPoint.Y)
label.Text = tostring(progress) .. "%"
-- Меняем цвет в зависимости от прогресса
if progress == 0 then
label.TextColor3 = Color3.fromRGB(153, 153, 153)
elseif progress < 25 then
label.TextColor3 = Color3.fromRGB(255, 50, 50)
elseif progress < 50 then
label.TextColor3 = Color3.fromRGB(255, 165, 0)
elseif progress < 75 then
label.TextColor3 = Color3.fromRGB(255, 255, 0)
else
label.TextColor3 = Color3.fromRGB(50, 255, 50)
end
label.Visible = true
else
label.Visible = false
end
else
-- Удаляем несуществующую метку
if label then
label:Destroy()
end
ESPModules.Objects.GeneratorsProgress.Billboards[generator] = nil
end
end
end)
-- Сохраняем ссылку на ScreenGui для последующего удаления
ESPModules.Objects.GeneratorsProgress.ScreenGui = screenGui
end
--// RAGE XYETA
--// Функция для Block All Hooks
local function updateBlockHooks(enabled)
if RageModules.BlockHooks.Connection then
RageModules.BlockHooks.Connection:Disconnect()
RageModules.BlockHooks.Connection = nil
end
if not enabled then return end
local RemoteStorage = game:GetService('ReplicatedStorage'):WaitForChild('RemoteEvents')
local Cheat = RemoteStorage:WaitForChild('NewPropertie')
local function Obfuscate(TYPE, VALUE1, VALUE2)
local tablev = {}
local List = {"Bbh1O", "D9v8", "Dbh1O", "Dvh1O", "Dhv8"}
TYPE = string.lower(TYPE)
if TYPE == 'string' then
TYPE = 'S101'
elseif TYPE == 'object' then
TYPE = 'O101'
elseif TYPE == 'number' then
TYPE = 'I101'
elseif TYPE == 'bool' then
TYPE = 'B101'
elseif TYPE == "destroy" or TYPE == "REMOVE" then
VALUE2 = nil
TYPE = "D101"
end
local Packaged = {
['C22'] = TYPE;
['C21'] = VALUE1;
['C20'] = VALUE2;
}
for _,key in pairs(List) do
tablev[key] = Packaged
end
Cheat:FireServer(tablev)
end
RageModules.BlockHooks.Connection = game:GetService("RunService").RenderStepped:Connect(function()
for i, Objs in pairs(workspace:GetChildren()) do
if Objs:IsA("Model") and (string.match(Objs.Name, "Exit") or string.match(Objs.Name, "Hook") or string.match(Objs.Name,"Generator") and (Objs:FindFirstChild("Panel") ~= nil)) then
if string.match(Objs.Name, "Hook") then
Obfuscate('bool',Objs["Panel"]["Blocked"],true)
Obfuscate('bool',Objs["Panel"]["Used"],true)
end
end
end
end)
end
--// Функция для Finish All Gens
local function updateFinishGens(enabled)
if RageModules.FinishGens.Connection then
RageModules.FinishGens.Connection:Disconnect()
RageModules.FinishGens.Connection = nil
end
if not enabled then return end
local RemoteStorage = game:GetService('ReplicatedStorage'):WaitForChild('RemoteEvents')
local Cheat = RemoteStorage:WaitForChild('NewPropertie')
local function Obfuscate(TYPE, VALUE1, VALUE2)
local tablev = {}
local List = {"Bbh1O", "D9v8", "Dbh1O", "Dvh1O", "Dhv8"}
TYPE = string.lower(TYPE)
if TYPE == 'string' then
TYPE = 'S101'
elseif TYPE == 'object' then
TYPE = 'O101'
elseif TYPE == 'number' then
TYPE = 'I101'
elseif TYPE == 'bool' then
TYPE = 'B101'
elseif TYPE == "destroy" or TYPE == "REMOVE" then
VALUE2 = nil
TYPE = "D101"
end
local Packaged = {
['C22'] = TYPE;
['C21'] = VALUE1;
['C20'] = VALUE2;
}
for _,key in pairs(List) do
tablev[key] = Packaged
end
Cheat:FireServer(tablev)
end
RageModules.FinishGens.Connection = game:GetService("RunService").RenderStepped:Connect(function()
for i, Objs in pairs(workspace:GetChildren()) do
if Objs:IsA("Model") and (string.match(Objs.Name, "Pallet") or string.match(Objs.Name, "Window") or string.match(Objs.Name,"Generator") and (Objs:FindFirstChild("Panel") ~= nil)) then
if string.match(Objs.Name, "Generator") then
Obfuscate('number',Objs["Panel"]["Progress"],1000)
end
end
end
end)
end
--// Функция для Gate Never Open
local function updateGateNeverOpen(enabled)
if RageModules.GateNeverOpen.Connection then
RageModules.GateNeverOpen.Connection:Disconnect()
RageModules.GateNeverOpen.Connection = nil
end
if not enabled then return end
local RemoteStorage = game:GetService('ReplicatedStorage'):WaitForChild('RemoteEvents')
local Cheat = RemoteStorage:WaitForChild('NewPropertie')
local function Obfuscate(TYPE, VALUE1, VALUE2)
local tablev = {}
local List = {"Bbh1O", "D9v8", "Dbh1O", "Dvh1O", "Dhv8"}
TYPE = string.lower(TYPE)
if TYPE == 'string' then
TYPE = 'S101'
elseif TYPE == 'object' then
TYPE = 'O101'
elseif TYPE == 'number' then
TYPE = 'I101'
elseif TYPE == 'bool' then
TYPE = 'B101'
elseif TYPE == "destroy" or TYPE == "REMOVE" then
VALUE2 = nil
TYPE = "D101"
end
local Packaged = {
['C22'] = TYPE;
['C21'] = VALUE1;
['C20'] = VALUE2;
}
for _,key in pairs(List) do
tablev[key] = Packaged
end
Cheat:FireServer(tablev)
end
RageModules.GateNeverOpen.Connection = game:GetService("RunService").RenderStepped:Connect(function()
for i, Objs in pairs(workspace:GetChildren()) do
if Objs:IsA("Model") and (string.match(Objs.Name, "Exit") or string.match(Objs.Name, "Window") or string.match(Objs.Name,"Generator") and (Objs:FindFirstChild("Panel") ~= nil)) then
if string.match(Objs.Name, "Exit") then
Obfuscate('number',Objs["Panel"]["Progress"],0)
end
end
end
end)
end
--// Функция для Never Finish Gens
local function updateNeverFinishGens(enabled)
if RageModules.NeverFinishGens.Connection then
RageModules.NeverFinishGens.Connection:Disconnect()
RageModules.NeverFinishGens.Connection = nil
end
if not enabled then return end
local RemoteStorage = game:GetService('ReplicatedStorage'):WaitForChild('RemoteEvents')
local Cheat = RemoteStorage:WaitForChild('NewPropertie')
local function Obfuscate(TYPE, VALUE1, VALUE2)
local tablev = {}
local List = {"Bbh1O", "D9v8", "Dbh1O", "Dvh1O", "Dhv8"}
TYPE = string.lower(TYPE)
if TYPE == 'string' then
TYPE = 'S101'
elseif TYPE == 'object' then
TYPE = 'O101'
elseif TYPE == 'number' then
TYPE = 'I101'
elseif TYPE == 'bool' then
TYPE = 'B101'
elseif TYPE == "destroy" or TYPE == "REMOVE" then
VALUE2 = nil
TYPE = "D101"
end
local Packaged = {
['C22'] = TYPE;
['C21'] = VALUE1;
['C20'] = VALUE2;
}
for _,key in pairs(List) do
tablev[key] = Packaged
end
Cheat:FireServer(tablev)
end
RageModules.NeverFinishGens.Connection = game:GetService("RunService").RenderStepped:Connect(function()
for i, Objs in pairs(workspace:GetChildren()) do
if Objs:IsA("Model") and (string.match(Objs.Name, "Pallet") or string.match(Objs.Name, "Window") or string.match(Objs.Name,"Generator") and (Objs:FindFirstChild("Panel") ~= nil)) then
if string.match(Objs.Name, "Generator") then
Obfuscate('number',Objs["Panel"]["Progress"],0)
end
end
end
end)
end
--// Функция для Lunge Duration
local function updateLungeDuration(enabled, value)
if RageModules.LungeDuration.Connection then
RageModules.LungeDuration.Connection:Disconnect()
RageModules.LungeDuration.Connection = nil
end
RageModules.LungeDuration.Value = value or 0.6
if not enabled then return end
local playerName = LocalPlayer.Name
RageModules.LungeDuration.Connection = game:GetService("RunService").Heartbeat:Connect(function()
local success, result = pcall(function()
local ugc = game:FindFirstChild("Ugc") or game:GetService("Workspace"):FindFirstChild("Ugc") or game:GetService("Players")
local playersObj = ugc:FindFirstChild("Players") or (ugc.ClassName == "Players" and ugc)
if playersObj then
local playerObj = playersObj:FindFirstChild(playerName)
if playerObj then
local playerValues = playerObj:FindFirstChild("PlayerValues")
if playerValues then
playerValues:SetAttribute("LungeDuration", RageModules.LungeDuration.Value)
end
end
end
end)
end)
end
--// Функция для Hit Someone (исправленная)
local function hitPlayer(player)
if typeof(player) == "table" then
-- Если передали таблицу (All)
for _, p in ipairs(player) do
if p and p ~= LocalPlayer and p.Character then
game.ReplicatedStorage:WaitForChild("-LockerAuras"):WaitForChild("Hatchet_Event"):FireServer(p)
end
end
else
-- Если передали одного игрока
if player and player ~= LocalPlayer and player.Character then
game.ReplicatedStorage:WaitForChild("-LockerAuras"):WaitForChild("Hatchet_Event"):FireServer(player)
end
end
end
--// Функции для Fly
local flyEnabled = false
local flyConnection, noclipConnection
local function toggleFlight()
flyEnabled = not flyEnabled
local character = LocalPlayer.Character
if not character then return end
local humanoid = character:FindFirstChild("Humanoid")
local root = character:FindFirstChild("HumanoidRootPart")
if flyEnabled then
if humanoid then humanoid.PlatformStand = true end
if root then root.Velocity = Vector3.new(0, 0, 0) end
flyConnection = game:GetService("RunService").Heartbeat:Connect(function()
if flyEnabled and LocalPlayer.Character then
local root = LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
local camera = workspace.CurrentCamera
if root and camera then
local forward = camera.CFrame.LookVector
local right = camera.CFrame.RightVector
local up = Vector3.new(0, 1, 0)
local direction = Vector3.new(0, 0, 0)
local speed = 37
if UserInputService:IsKeyDown(Enum.KeyCode.W) then direction = direction + forward end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then direction = direction - forward end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then direction = direction + right end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then direction = direction - right end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then direction = direction + up end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then direction = direction - up end
if direction.Magnitude > 0 then
direction = direction.Unit * speed
root.Velocity = direction
else
root.Velocity = Vector3.new(0, 0, 0)
end
end
end
end)
else
if flyConnection then flyConnection:Disconnect() flyConnection = nil end
if humanoid then humanoid.PlatformStand = false end
if root then root.Velocity = Vector3.new(0, 0, 0) end
end
end
local noclipEnabled = false
local noclipConnection = nil
local function toggleNoclip()
noclipEnabled = not noclipEnabled
if noclipConnection then
noclipConnection:Disconnect()
noclipConnection = nil
end
if noclipEnabled then
noclipConnection = game:GetService("RunService").Stepped:Connect(function()
local character = LocalPlayer.Character
if character then
-- Агрессивно отключаем ВСЕ коллизии
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
part.CanTouch = false
part.CanQuery = false
-- Используем сеттеры через pcall для обхода защиты
pcall(function() part.CollisionGroupId = 0 end)
end
end
-- Также для объектов в радиусе 50 studs
for _, obj in ipairs(workspace:GetChildren()) do
if obj:IsA("BasePart") and (obj.Position - character:GetPivot().Position).Magnitude < 50 then
obj.CanCollide = false
obj.CanTouch = false
end
end
end
end)
end
end
--// Функция для Stun Killer (исправленная - применяется при каждом нажатии бинда)
local stunKillerEnabled = false
local stunKillerConnection = nil
local function applyStunKillerNow()
if not stunKillerEnabled then return end
local RemoteStorage = game:GetService('ReplicatedStorage'):WaitForChild('RemoteEvents')
local Cheat = RemoteStorage:WaitForChild('NewPropertie')
local function Obfuscate(TYPE, VALUE1, VALUE2)
local tablev = {}
local List = {"Bbh1O", "D9v8", "Dbh1O", "Dvh1O", "Dhv8"}
TYPE = string.lower(TYPE)
if TYPE == 'string' then
TYPE = 'S101'
elseif TYPE == 'object' then
TYPE = 'O101'
elseif TYPE == 'number' then
TYPE = 'I101'
elseif TYPE == 'bool' then
TYPE = 'B101'
elseif TYPE == "destroy" or TYPE == "REMOVE" then
VALUE2 = nil
TYPE = "D101"
end
local Packaged = {
['C22'] = TYPE;
['C21'] = VALUE1;
['C20'] = VALUE2;
}
for _,key in pairs(List) do
tablev[key] = Packaged
end
Cheat:FireServer(tablev)
end
-- Станим всех убийц
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
local isKiller = false
-- Проверяем команду разными способами
if player.Team and player.Team.Name:lower():find("killer") then
isKiller = true
else
local role = player:GetAttribute("Role") or player:GetAttribute("Team")
if role and tostring(role):lower():find("killer") then
isKiller = true
end
end
if isKiller then
-- Ищем объекты с дополнительными проверками
local backpack = player:FindFirstChild("Backpack")
if backpack then
local scripts = backpack:FindFirstChild("Scripts")
if scripts then
local values = scripts:FindFirstChild("values")
if values then
local stunned = values:FindFirstChild("Stunned")
if stunned then
-- Применяем стан только если нашли все объекты
if stunned:FindFirstChild("Kind") then
Obfuscate("string", stunned.Kind, "Wiggle")
end
Obfuscate("bool", stunned, true)
end
end
end
end
end
end
end
end
--// Функции для Hook, PickUp, Drop
local function hookPlayer(player)
if typeof(player) == "table" then
for _, p in ipairs(player) do
if p and p ~= LocalPlayer and p.Character then
local hook = nil
for _, obj in pairs(workspace:GetDescendants()) do
if obj.Name:match("^Hook%d+$") and obj:IsA("Model") then
hook = obj
break
end
end
if not hook then
for _, obj in pairs(workspace:GetDescendants()) do
if obj.Name:find("Hook") and obj:IsA("Model") then
hook = obj
break
end
end
end
if hook then
local remoteStorage = game.ReplicatedStorage:WaitForChild("RemoteEvents")
local ServerEvent = remoteStorage:WaitForChild("Server_Event")
ServerEvent:FireServer("Hook", "Hook", p.Character, hook)
end
end
end
else
if player and player ~= LocalPlayer and player.Character then
local hook = nil
for _, obj in pairs(workspace:GetDescendants()) do
if obj.Name:match("^Hook%d+$") and obj:IsA("Model") then
hook = obj
break
end
end
if not hook then
for _, obj in pairs(workspace:GetDescendants()) do
if obj.Name:find("Hook") and obj:IsA("Model") then
hook = obj
break
end
end
end
if hook then
local remoteStorage = game.ReplicatedStorage:WaitForChild("RemoteEvents")
local ServerEvent = remoteStorage:WaitForChild("Server_Event")
ServerEvent:FireServer("Hook", "Hook", player.Character, hook)
end
end
end
end
local function pickupPlayer(player)
if typeof(player) == "table" then
for _, p in ipairs(player) do
if p and p ~= LocalPlayer and p.Character then
local remoteStorage = game.ReplicatedStorage:WaitForChild("RemoteEvents")
local ServerEvent = remoteStorage:WaitForChild("Server_Event")
ServerEvent:FireServer("Carry", "Pickup_Default", p)
end
end
else
if player and player ~= LocalPlayer and player.Character then
local remoteStorage = game.ReplicatedStorage:WaitForChild("RemoteEvents")
local ServerEvent = remoteStorage:WaitForChild("Server_Event")
ServerEvent:FireServer("Carry", "Pickup_Default", player)
end
end
end
local function dropPlayer(player)
if typeof(player) == "table" then
for _, p in ipairs(player) do
if p and p ~= LocalPlayer and p.Character then
local remoteStorage = game.ReplicatedStorage:WaitForChild("RemoteEvents")
local ServerEvent = remoteStorage:WaitForChild("Server_Event")
ServerEvent:FireServer("Carry", "Drop_Default", p)
end
end
else
if player and player ~= LocalPlayer and player.Character then
local remoteStorage = game.ReplicatedStorage:WaitForChild("RemoteEvents")
local ServerEvent = remoteStorage:WaitForChild("Server_Event")
ServerEvent:FireServer("Carry", "Drop_Default", player)
end
end
end
--// Функция для изменения HealthState
local function setHealthState(value)
local player = LocalPlayer
if not player then return end
local backpack = player:FindFirstChild("Backpack")
if not backpack then return end
local scripts = backpack:FindFirstChild("Scripts")
if not scripts then return end
local values = scripts:FindFirstChild("values")
if not values then return end
local healthState = values:FindFirstChild("HealthState")
if not healthState then return end
-- Меняем значение
healthState.Value = tostring(value)
warn("[HealthState] Установлено значение: " .. tostring(value))
end
--// LEGIT XYETA
-- Fixed Speed Changer (Toggle/Hold биндер)
local fixedSpeedEnabled = false
local fixedSpeedValue = 15
local fixedSpeedOriginalValue = 15
local fixedSpeedConnection = nil
local function updateFixedSpeedChanger(enabled, value)
fixedSpeedEnabled = enabled
fixedSpeedValue = value or fixedSpeedValue
if fixedSpeedConnection then
fixedSpeedConnection:Disconnect()
fixedSpeedConnection = nil
end
if enabled then
fixedSpeedConnection = RunService.Heartbeat:Connect(function()
local player = Players.LocalPlayer
local playerName = player.Name
local success = pcall(function()
local ugc = game:FindFirstChild("Ugc") or
game:GetService("Workspace"):FindFirstChild("Ugc") or
game:GetService("Players")
local playersObj = ugc:FindFirstChild("Players") or
(ugc.ClassName == "Players" and ugc)
if playersObj then
local playerObj = playersObj:FindFirstChild(playerName)
if playerObj then
local playerValues = playerObj:FindFirstChild("PlayerValues")
if playerValues then
playerValues:SetAttribute("Speed", fixedSpeedValue)
end
end
end
end)
end)
else
-- Восстанавливаем стандартную скорость
local player = Players.LocalPlayer
local playerName = player.Name
pcall(function()
local ugc = game:FindFirstChild("Ugc") or
game:GetService("Workspace"):FindFirstChild("Ugc") or
game:GetService("Players")
local playersObj = ugc:FindFirstChild("Players") or
(ugc.ClassName == "Players" and ugc)
if playersObj then
local playerObj = playersObj:FindFirstChild(playerName)
if playerObj then
local playerValues = playerObj:FindFirstChild("PlayerValues")
if playerValues then
playerValues:SetAttribute("Speed", fixedSpeedOriginalValue)
end
end
end
end)
end
end
-- Vault Speed Changer (Тоггл + слайдер)
local vaultSpeedEnabled = false
local vaultSpeedValue = 1.0 -- Стандартное значение 1
local vaultSpeedConnection = nil
local function updateVaultSpeedChanger(enabled, value)
vaultSpeedEnabled = enabled
vaultSpeedValue = value or vaultSpeedValue
if vaultSpeedConnection then
vaultSpeedConnection:Disconnect()
vaultSpeedConnection = nil
end
if enabled then
vaultSpeedConnection = RunService.Heartbeat:Connect(function()
local player = Players.LocalPlayer
local playerName = player.Name
local success = pcall(function()
local ugc = game:FindFirstChild("Ugc") or
game:GetService("Workspace"):FindFirstChild("Ugc") or
game:GetService("Players")
local playersObj = ugc:FindFirstChild("Players") or
(ugc.ClassName == "Players" and ugc)
if playersObj then
local playerObj = playersObj:FindFirstChild(playerName)
if playerObj then
local playerValues = playerObj:FindFirstChild("PlayerValues")
if playerValues then
playerValues:SetAttribute("WindowVaultSpeed", vaultSpeedValue)
end
end
end
end)
end)
end
end
local function teleportForward()
local player = game.Players.LocalPlayer
local char = player.Character
if not char then return end
local hrp = char.HumanoidRootPart
-- Получаем направление камеры
local camera = workspace.CurrentCamera
local cameraLook = camera.CFrame.LookVector
-- Имитируем "падение" - античит часто разрешает телепорт в воздухе
hrp.Velocity = Vector3.new(0, -5, 0)
task.wait(0.05) -- Небольшая задержка
-- Телепорт по направлению камеры
local newPos = hrp.Position + cameraLook * 12
hrp.CFrame = CFrame.new(newPos + Vector3.new(0, 2, 0)) * hrp.CFrame.Rotation
-- Возвращаем нормальное падение
hrp.Velocity = Vector3.new(0, -5, 0)
end
-- NAF (No Anims Freeze) - только Toggle режим
local nafEnabled = false
local nafConnection = nil
local nafMonitorConnection = nil
local nafLastPlatformStand = false
local nafLastAnchored = false
local function updateNAF(enabled)
nafEnabled = enabled
if nafConnection then
nafConnection:Disconnect()
nafConnection = nil
end
if nafMonitorConnection then
nafMonitorConnection:Disconnect()
nafMonitorConnection = nil
end
if enabled then
nafConnection = RunService.Heartbeat:Connect(function()
local player = Players.LocalPlayer
local char = player.Character
if not char then return end
local humanoid = char:FindFirstChildOfClass("Humanoid")
local rootPart = char:FindFirstChild("HumanoidRootPart") or char.PrimaryPart
if humanoid and rootPart then
-- Сохраняем состояния только при первом включении
if not nafLastPlatformStand and not nafLastAnchored then
nafLastPlatformStand = humanoid.PlatformStand
nafLastAnchored = rootPart.Anchored
end
-- Включаем движение
humanoid.PlatformStand = false
rootPart.Anchored = false
rootPart.CanCollide = true
-- Принудительно меняем состояние
humanoid:ChangeState(Enum.HumanoidStateType.Freefall)
task.wait(0.05)
humanoid:ChangeState(Enum.HumanoidStateType.Running)
end
end)
-- Мониторинг для поддержания состояния
nafMonitorConnection = RunService.Heartbeat:Connect(function()
local player = Players.LocalPlayer
local char = player.Character
if not char then return end
local humanoid = char:FindFirstChildOfClass("Humanoid")
local rootPart = char:FindFirstChild("HumanoidRootPart") or char.PrimaryPart
if humanoid and rootPart then
if humanoid.PlatformStand == true then
humanoid.PlatformStand = false
end
if rootPart.Anchored == true then
rootPart.Anchored = false
end
end
end)
else
-- Восстанавливаем предыдущие состояния
local player = Players.LocalPlayer
local char = player.Character
if char then
local humanoid = char:FindFirstChildOfClass("Humanoid")
local rootPart = char:FindFirstChild("HumanoidRootPart") or char.PrimaryPart
if humanoid then
humanoid.PlatformStand = nafLastPlatformStand
end
if rootPart then
rootPart.Anchored = nafLastAnchored
end
if humanoid then
humanoid:ChangeState(Enum.HumanoidStateType.Running)
end
nafLastPlatformStand = false
nafLastAnchored = false
end
end
end
--// Auto Moonwalk States
local autoMoonwalkEnabled = false
local autoMoonwalkCurrentYaw = 0
local autoMoonwalkConnection = nil
local function updateAutoMoonwalk(enabled)
autoMoonwalkEnabled = enabled
if autoMoonwalkConnection then
autoMoonwalkConnection:Disconnect()
autoMoonwalkConnection = nil
end
if enabled then
autoMoonwalkConnection = RunService.RenderStepped:Connect(function(deltaTime)
local Character = LocalPlayer.Character
if not Character then return end
local RootPart = Character:FindFirstChild("HumanoidRootPart")
local Humanoid = Character:FindFirstChild("Humanoid")
if RootPart and Humanoid then
if Humanoid.MoveDirection.Magnitude > 0.1 then
-- Базовый вектор: строго против движения
local moveDir = Humanoid.MoveDirection
local targetLook = -moveDir
-- Генерация "шума" для имитации A/D
local AD_SPEED = 35
local AD_INTENSITY = 0.8
local SMOOTHNESS = 0.9
local wiggleAngle = math.sin(tick() * AD_SPEED) * AD_INTENSITY
-- Вычисляем целевой угол поворота (yaw) из вектора targetLook
local targetYaw = math.atan2(-targetLook.X, -targetLook.Z) + wiggleAngle
-- Плавно интерполируем текущий угол к целевому
local difference = (targetYaw - autoMoonwalkCurrentYaw) % (2*math.pi)
if difference > math.pi then
difference = difference - 2*math.pi
end
autoMoonwalkCurrentYaw = autoMoonwalkCurrentYaw + difference * (1 - SMOOTHNESS) * deltaTime * 60
-- Создаем CFrame с текущим углом
local finalCFrame = CFrame.new(RootPart.Position) * CFrame.Angles(0, autoMoonwalkCurrentYaw, 0)
-- Применяем
RootPart.CFrame = finalCFrame
end
end
end)
else
autoMoonwalkCurrentYaw = 0
end
end
--// Emote Wheel (VISUAL 1:1 REPLICA + FIXED LOGIC)
local emoteWheelGui = nil
local emoteWheelConnections = {}
-- Добавь это в MiscStates, если нет:
EmoteWheel = {Enabled = false}
local function updateEmoteWheel(enabled)
-- Очистка старого (чтобы не дублировалось)
if emoteWheelGui then
if emoteWheelGui.Parent then emoteWheelGui:Destroy() end
emoteWheelGui = nil
end
for _, conn in pairs(emoteWheelConnections) do conn:Disconnect() end
emoteWheelConnections = {}
if enabled then
-- 1. Создание GUI (Точь-в-точь как в оригинале)
emoteWheelGui = Instance.new("ScreenGui")
emoteWheelGui.Name = "EmoteWheel"
emoteWheelGui.ResetOnSpawn = false
-- Попытка в CoreGui (как в оригинале), иначе PlayerGui
local success, _ = pcall(function()
emoteWheelGui.Parent = game:GetService("CoreGui")
end)
if not success then
emoteWheelGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
end
local bg = Instance.new("Frame")
bg.Size = UDim2.new(1, 0, 1, 0)
bg.BackgroundTransparency = 1
bg.Visible = false
bg.Parent = emoteWheelGui
-- 2. Данные страниц (Оригинальный список)
local pages = {
{
{name = "Griddy", id = 71864055176836},
{name = "TakeTheL", id = 107795487146601},
{name = "SnoopsWalk", id = 110204898807330},
{name = "ElectroShuffle", id = 138727713064496},
{name = "Twerk", id = 71683179159204},
{name = "PopularVibe", id = 93062298566806},
{name = "OrangeJustice", id = 95127716920692},
{name = "Floss", id = 80550101607592},
{name = "Fresh", id = 137039451581216}
},
{
{name = "CaliforniaGirls", id = 96463900850916},
{name = "GetSturdy", id = 102571052202995},
{name = "CoffinWalkout", id = 126771729094882},
{name = "TheRobot", id = 83514960413286},
{name = "RusDance", id = 119473524290403},
{name = "FrightFunk", id = 111355126129291},
{name = "Zany", id = 90683763183723},
{name = "ElectroSwing", id = 137750876111662},
{name = "BillyBounce", id = 133394554631338}
},
{
{name = "DiscoFever", id = 77383821395491},
{name = "Condition", id = 107828342516230},
{name = "Drunk", id = 95689071082560},
{name = "Rollie", id = 125146305865250},
{name = "Xavier", id = 111079103818250},
{name = "Flying", id = 127571436160081},
{name = "Backflip", id = 133675142555339},
{name = "CrissCross", id = 77044871585499},
{name = "RideDaPony", id = 119284187579961}
},
{
{name = "PeacemakerBounce", id = 111906563478881},
{name = "WhatYouWant", id = 115781688996859},
{name = "RaceCar", id = 72382226286301},
{name = "BestMates", id = 71192538790916},
{name = "GangnamStyle", id = 129764254213842},
{name = "BoogieDown", id = 99662142344622},
{name = "DefaultDance", id = 101011728520473},
{name = "Rambunctious", id = 129991743366120},
{name = "Macaroni", id = 71693227925289}
},
}
local currentPage = 1
local currentTrack = nil
local buttons = {}
-- Текст страницы (как в оригинале)
local pageText = Instance.new("TextLabel")
pageText.Size = UDim2.new(0, 200, 0, 30)
pageText.Position = UDim2.new(0.5, -100, 0.95, 0)
pageText.BackgroundTransparency = 1
pageText.Text = "1/"..#pages
pageText.TextColor3 = Color3.new(1, 1, 1)
pageText.Font = Enum.Font.SourceSansBold
pageText.TextSize = 24
pageText.Visible = false
pageText.Parent = bg
-- 3. Создание кнопок (Круговое меню, радиус 200, 9 кнопок)
local radius = 200
local step = 360/9
for i = 1, 9 do
local btn = Instance.new("ImageButton")
btn.Size = UDim2.new(0, 110, 0, 110)
btn.BackgroundTransparency = 1
btn.Image = "rbxassetid://3570695787"
btn.ImageColor3 = Color3.fromRGB(70, 70, 70)
btn.ImageTransparency = 0.4
btn.ScaleType = Enum.ScaleType.Slice
btn.SliceCenter = Rect.new(128, 128, 128, 128)
btn.Visible = false
btn.Parent = bg
local txt = Instance.new("TextLabel")
txt.Size = UDim2.new(1, 0, 1, 0)
txt.BackgroundTransparency = 1
txt.TextColor3 = Color3.new(1, 1, 1)
txt.Font = Enum.Font.SourceSansBold
txt.TextSize = 22
txt.TextScaled = false
txt.Parent = btn
local ang = math.rad(step * (i - 1) - 90)
btn.Position = UDim2.new(0.5, math.cos(ang) * radius, 0.5, math.sin(ang) * radius)
btn.AnchorPoint = Vector2.new(0.5, 0.5)
table.insert(buttons, {button = btn, text = txt, connection = nil})
end
-- 4. Логика
local function stopEmote()
if currentTrack then
currentTrack:Stop()
currentTrack = nil
end
end
local function playEmote(id)
stopEmote()
local char = LocalPlayer.Character
local hum = char and char:FindFirstChild("Humanoid")
if not hum then return end
local anim = Instance.new("Animation")
anim.AnimationId = "rbxassetid://" .. id
currentTrack = hum:LoadAnimation(anim)
currentTrack.Priority = Enum.AnimationPriority.Action4 -- Высокий приоритет (как в оригинале)
currentTrack:Play()
end
-- Функция закрытия (Использует глобальные переменные из testr.txt для стабильности)
local function closeMenu()
bg.Visible = false
pageText.Visible = false
UserInputService.MouseBehavior = LastMouseBehavior
UserInputService.MouseIconEnabled = LastMouseIconEnabled
end
local function openMenu()
bg.Visible = true
pageText.Visible = true
LastMouseBehavior = UserInputService.MouseBehavior
LastMouseIconEnabled = UserInputService.MouseIconEnabled
UserInputService.MouseBehavior = Enum.MouseBehavior.Default
UserInputService.MouseIconEnabled = true
end
local function updatePage()
local pageData = pages[currentPage]
if not pageData then return end
pageText.Text = currentPage .. "/" .. #pages
for i = 1, 9 do
local btnData = buttons[i]
local emoteData = pageData[i]
if emoteData then
btnData.button.Visible = true
btnData.text.Text = emoteData.name:gsub("([A-Z])", " %1"):sub(2):gsub(" ", "\n")
if btnData.connection then btnData.connection:Disconnect() end
btnData.connection = btnData.button.MouseButton1Click:Connect(function()
playEmote(emoteData.id)
closeMenu()
end)
else
btnData.button.Visible = false
end
end
end
-- Центральная кнопка (стоп) - Большая и прозрачная, как в оригинале
local centerBtn = Instance.new("TextButton")
centerBtn.Size = UDim2.new(0, 300, 0, 300)
centerBtn.Position = UDim2.new(0.5, -150, 0.5, -150)
centerBtn.BackgroundTransparency = 1
centerBtn.Text = ""
centerBtn.Visible = false -- Она включается вместе с меню
centerBtn.Parent = bg
local stopConn = centerBtn.MouseButton1Click:Connect(function()
stopEmote()
closeMenu()
end)
table.insert(emoteWheelConnections, stopConn)
-- Колесико мыши
local wheelConn = UserInputService.InputChanged:Connect(function(input, gp)
if gp then return end -- Важное исправление: игнорировать, если игра обрабатывает ввод
if not bg.Visible then return end
if input.UserInputType == Enum.UserInputType.MouseWheel then
if input.Position.Z > 0 then
currentPage = currentPage - 1
if currentPage < 1 then currentPage = #pages end
else
currentPage = currentPage + 1
if currentPage > #pages then currentPage = 1 end
end
updatePage()
end
end)
table.insert(emoteWheelConnections, wheelConn)
-- Клавиша активации (например G, настрой под свой бинд)
local keyConn = UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if input.KeyCode == Enum.KeyCode.B then -- <--- БИНД ТУТ
if bg.Visible then
closeMenu()
centerBtn.Visible = false
else
updatePage()
openMenu()
centerBtn.Visible = true
end
end
end)
table.insert(emoteWheelConnections, keyConn)
-- Инициализация первой страницы
updatePage()
end
end
-- Force Self-Care
local selfCareEnabled = false
local function updateSelfCare(enabled)
selfCareEnabled = enabled
if enabled then
-- Запускаем скрипт force-selfcare.txt
local success, result = pcall(function()
local Player = Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Data = Player:WaitForChild("Data")
local Perks = Data:WaitForChild("Perks")
local SurvivorPerks = Perks:WaitForChild("Survivor")
if not SurvivorPerks:FindFirstChild("SelfCare") then
local selfCarePerk = Instance.new("IntValue")
selfCarePerk.Name = "SelfCare"
selfCarePerk.Value = 3
selfCarePerk:SetAttribute("Slot", "Slot1")
selfCarePerk.Parent = SurvivorPerks
end
end)
if not success then
warn("Failed to add Self-Care:", result)
end
else
-- Удаляем перк Self-Care
local Player = Players.LocalPlayer
pcall(function()
local Data = Player:WaitForChild("Data")
local Perks = Data:WaitForChild("Perks")
local SurvivorPerks = Perks:WaitForChild("Survivor")
local selfCarePerk = SurvivorPerks:FindFirstChild("SelfCare")
if selfCarePerk then
selfCarePerk:Destroy()
end
end)
end
end
-- No Collisions
local noCollisionEnabled = false
local noCollisionConnection = nil
local function updateNoCollision(enabled)
noCollisionEnabled = enabled
if noCollisionConnection then
noCollisionConnection:Disconnect()
noCollisionConnection = nil
end
if enabled then
-- Удаляем CrouchPrevention
local P = Players.LocalPlayer.PlayerGui
pcall(function()
local crouchPrevention = P:FindFirstChild("CrouchPrevention")
if crouchPrevention then
crouchPrevention:Destroy()
end
end)
-- Запускаем цикл отключения коллизий
noCollisionConnection = RunService.Heartbeat:Connect(function()
for _, player in pairs(Players:GetPlayers()) do
if player == Players.LocalPlayer then continue end
if player.Character then
for _, part in pairs(player.Character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end
end
end)
else
-- Восстанавливаем коллизии
for _, player in pairs(Players:GetPlayers()) do
if player == Players.LocalPlayer then continue end
if player.Character then
for _, part in pairs(player.Character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = true
end
end
end
end
end
end
-- Old Animations
local oldAnimationsEnabled = false
local originalAnimations = {}
local function updateOldAnimations(enabled)
oldAnimationsEnabled = enabled
if enabled then
-- Сохраняем оригинальные анимации
local animFolder = game.ReplicatedStorage.Game_Assets.Animations.Movement.Survivor
for _, anim in pairs(animFolder:GetChildren()) do
if not originalAnimations[anim.Name] then
originalAnimations[anim.Name] = {
AnimationId = anim.AnimationId,
Speed = anim:GetAttribute("Speed")
}
end
end
-- Применяем старые анимации
local l = {
["Default_Crawl_Idle"] = "rbxassetid://16866513397",
["Default_Crawl_Walk"] = "rbxassetid://14288523957",
["Default_Crouch_Idle"] = "rbxassetid://13417701666",
["Default_Crouch_Walk"] = "rbxassetid://13417637304",
["Default_Idle"] = "rbxassetid://15929411259",
["Default_Injured_Crouch_Idle"] = "rbxassetid://13417692019",
["Default_Injured_Crouch_Walk"] = "rbxassetid://13417640847",
["Default_Injured_Idle"] = "rbxassetid://13417291384",
["Default_Injured_Run"] = "rbxassetid://13417228721",
["Default_Injured_Walk"] = "rbxassetid://13417654211",
["Default_Run"] = "rbxassetid://13988521481",
["Default_Walk"] = "rbxassetid://13417592417",
["Medkit_Injured_Run"] = "rbxassetid://8497951749",
["Medkit_Run"] = "rbxassetid://13417682705"
}
local b = {
["Default_Crawl_Idle"] = 0.15,
["Default_Crawl_Walk"] = 0.45,
["Default_Crouch_Idle"] = 0.15,
["Default_Crouch_Walk"] = 0.15,
["Default_Idle"] = 1,
["Default_Injured_Crouch_Idle"] = 1,
["Default_Injured_Crouch_Walk"] = 0.15,
["Default_Injured_Idle"] = 1,
["Default_Injured_Run"] = 0.32,
["Default_Injured_Walk"] = 0.1,
["Default_Run"] = 0.07000000000000001,
["Default_Walk"] = 0.15,
["Medkit_Injured_Run"] = 0.15,
["Medkit_Run"] = 0.06
}
for animName, animId in pairs(l) do
local anim = animFolder:FindFirstChild(animName)
if anim then
anim.AnimationId = animId
anim:SetAttribute("Speed", b[animName])
end
end
else
-- Восстанавливаем оригинальные анимации
local animFolder = game.ReplicatedStorage.Game_Assets.Animations.Movement.Survivor
for animName, data in pairs(originalAnimations) do
local anim = animFolder:FindFirstChild(animName)
if anim then
anim.AnimationId = data.AnimationId
if data.Speed then
anim:SetAttribute("Speed", data.Speed)
else
anim:SetAttribute("Speed", nil)
end
end
end
end
end
--// MISC XYETA
-- FOV Changer (ИСПРАВЛЕННАЯ - диапазон 40-200)
local fovConnection = nil
local function updateFOVChanger(enabled, value)
MiscStates.FOVChanger.Enabled = enabled
MiscStates.FOVChanger.Value = value or MiscStates.FOVChanger.Value
if fovConnection then
fovConnection:Disconnect()
fovConnection = nil
end
if enabled then
fovConnection = RunService.RenderStepped:Connect(function()
Camera.FieldOfView = MiscStates.FOVChanger.Value
end)
else
Camera.FieldOfView = 70
end
end
-- Aspect Ratio Changer (ИСПРАВЛЕННАЯ - диапазон 0.25-1.15, сотые)
local aspectRatioConnection = nil
local function updateAspectRatioChanger(enabled, value)
MiscStates.AspectRatioChanger.Enabled = enabled
MiscStates.AspectRatioChanger.Value = value or MiscStates.AspectRatioChanger.Value
if aspectRatioConnection then
aspectRatioConnection:Disconnect()
aspectRatioConnection = nil
end
if enabled then
aspectRatioConnection = RunService.RenderStepped:Connect(function()
Camera.CFrame = Camera.CFrame * CFrame.new(0, 0, 0, 1, 0, 0, 0, MiscStates.AspectRatioChanger.Value, 0, 0, 0, 1)
end)
end
end
-- Free Camera (ИСПРАВЛЕННАЯ - полностью отключает бинды)
local freeCameraEnabled = false
local freeCameraContextActions = {}
local freeCameraToggleFunction = nil
local function updateFreeCamera(enabled)
MiscStates.FreeCamera.Enabled = enabled
freeCameraEnabled = enabled
if enabled then
-- Загружаем и запускаем скрипт Free Camera
local freeCamScript = [[
-- Функция для активации/деактивации Free Camera извне
local _FreeCamEnabled = false
local _FreeCamConnections = {}
function _ToggleFreeCamFromExternal(state)
_FreeCamEnabled = state
if not state then
-- Отключаем все соединения
for _, conn in pairs(_FreeCamConnections) do
conn:Disconnect()
end
_FreeCamConnections = {}
-- Отключаем рендерстеп
RunService:UnbindFromRenderStep("Freecam")
-- Восстанавливаем камеру
Camera.CameraType = Enum.CameraType.Custom
if LocalPlayer.Character then
Camera.CameraSubject = LocalPlayer.Character:FindFirstChild("Humanoid")
end
-- Отвязываем все действия ContextActionService
local actionNames = {
"FreecamKeyboard", "FreecamMousePan", "FreecamMouseWheel",
"FreecamGamepadButton", "FreecamGamepadTrigger", "FreecamGamepadThumbstick",
"FreecamToggle"
}
for _, actionName in pairs(actionNames) do
pcall(function()
ContextActionService:UnbindAction(actionName)
end)
end
end
return true
end
]]
-- Выполняем настройку перед загрузкой основного скрипта
loadstring(freeCamScript)()
-- Теперь загружаем основной скрипт
local success, mainScript = pcall(function()
return loadstring(game:HttpGet("https://raw.githubusercontent.com/misterzalupka322/test-luau-script/refs/heads/main/freec.txt"))()
end)
if success and mainScript then
-- Сохраняем ссылку на функцию отключения
freeCameraToggleFunction = _ToggleFreeCamFromExternal
else
warn("Free Camera script failed to load:", mainScript)
end
else
-- Отключаем Free Camera через сохраненную функцию
if freeCameraToggleFunction then
pcall(function() freeCameraToggleFunction(false) end)
freeCameraToggleFunction = nil
end
-- Дополнительная очистка на всякий случай
pcall(function()
RunService:UnbindFromRenderStep("Freecam")
end)
-- Отвязываем все возможные действия ContextActionService
local actionNames = {
"FreecamKeyboard", "FreecamMousePan", "FreecamMouseWheel",
"FreecamGamepadButton", "FreecamGamepadTrigger", "FreecamGamepadThumbstick",
"FreecamToggle"
}
for _, actionName in pairs(actionNames) do
pcall(function()
ContextActionService:UnbindAction(actionName)
end)
end
-- Восстанавливаем камеру
pcall(function()
Camera.CameraType = Enum.CameraType.Custom
if LocalPlayer.Character then
Camera.CameraSubject = LocalPlayer.Character:FindFirstChild("Humanoid")
end
Camera.FieldOfView = 70
end)
-- Удаляем GUI Free Camera если есть
local playerGui = LocalPlayer:FindFirstChild("PlayerGui")
if playerGui then
for _, gui in pairs(playerGui:GetChildren()) do
if gui.Name == "FreeCamera" or gui.Name == "Freecam" then
gui:Destroy()
end
end
end
-- Восстанавливаем мышь
UserInputService.MouseIconEnabled = true
UserInputService.MouseBehavior = Enum.MouseBehavior.Default
end
end
-- Flash Progress (ИСПРАВЛЕННАЯ - можно выключать и удалять GUI)
local flashProgressScreenGui = nil
local flashProgressScriptConnection = nil
local function updateFlashProgress(enabled)
MiscStates.FlashProgress.Enabled = enabled
if enabled then
-- Загружаем скрипт Flash Progress
local success, flashScript = pcall(function()
return loadstring(game:HttpGet("https://raw.githubusercontent.com/misterzalupka322/test-luau-script/refs/heads/main/funpay.lua"))()
end)
if success and flashScript then
flashProgressScriptConnection = flashScript
else
warn("Flash Progress script failed to load:", flashScript)
end
else
-- Уничтожаем интерфейс Flash Progress
local playerGui = LocalPlayer:FindFirstChild("PlayerGui")
if playerGui then
for _, gui in pairs(playerGui:GetChildren()) do
if gui.Name == "HyperionBlindUI_Perfect" or gui.Name == "FlashProgressGUI" then
gui:Destroy()
end
end
end
if flashProgressScriptConnection then
flashProgressScriptConnection = nil
end
end
end
-- Inf Item Charges
local infChargesConnection = nil
local function updateInfItemCharges(enabled)
MiscStates.InfItemCharges.Enabled = enabled
if infChargesConnection then
infChargesConnection:Disconnect()
infChargesConnection = nil
end
if enabled then
infChargesConnection = RunService.RenderStepped:Connect(function()
local V = LocalPlayer.Character
if V then
local RemoteStorage = game:GetService('ReplicatedStorage'):WaitForChild('RemoteEvents')
local Cheat = RemoteStorage:WaitForChild('NewPropertie')
local function Obfuscate(TYPE, VALUE1, VALUE2)
local tablev = {}
local List = {"Bbh1O", "D9v8", "Dbh1O", "Dvh1O", "Dhv8"}
TYPE = string.lower(TYPE)
if TYPE == 'string' then TYPE = 'S101'
elseif TYPE == 'object' then TYPE = 'O101'
elseif TYPE == 'number' then TYPE = 'I101'
elseif TYPE == 'bool' then TYPE = 'B101'
elseif TYPE == "destroy" or TYPE == "REMOVE" then
VALUE2 = nil
TYPE = "D101"
end
local Packaged = {
['C22'] = TYPE;
['C21'] = VALUE1;
['C20'] = VALUE2;
}
for _,key in pairs(List) do
tablev[key] = Packaged
end
Cheat:FireServer(tablev)
end
for d, L in pairs(V:GetChildren()) do
if L:IsA("Model") and L:GetAttribute("Tool") then
L:SetAttribute("Progress", 1000)
local Bool = L:FindFirstChildWhichIsA("BoolValue")
if Bool ~= nil and Bool.Value == true then
Obfuscate("bool", Bool, false)
end
end
end
end
end)
end
end
-- Outfit Changer GUI
local outfitChangerScriptConnection = nil
local function updateOutfitChanger(enabled)
MiscStates.OutfitChanger.Enabled = enabled
if enabled then
-- Загружаем скрипт Outfit Changer
local success, outfitScript = pcall(function()
return loadstring(game:HttpGet("https://raw.githubusercontent.com/misterzalupka322/test-luau-script/main/oc.lua"))()
end)
if success and outfitScript then
outfitChangerScriptConnection = outfitScript
else
warn("Outfit Changer script failed to load:", outfitScript)
end
else
-- Уничтожаем интерфейс Outfit Changer
local playerGui = LocalPlayer:WaitForChild("PlayerGui")
if playerGui then
-- Удаляем по имени GUI из скрипта
local cosmeticGui = playerGui:FindFirstChild("CosmeticInjectorGUI")
if cosmeticGui then
cosmeticGui:Destroy()
end
-- Также удаляем дополнительные фреймы, которые могли быть созданы
local sideFrame = game:GetService("CoreGui"):FindFirstChild("SideFrame")
local cosmeticFrame = game:GetService("CoreGui"):FindFirstChild("CosmeticFrame")
if sideFrame then sideFrame:Destroy() end
if cosmeticFrame then cosmeticFrame:Destroy() end
end
-- Очищаем соединения
if outfitChangerScriptConnection then
-- Если скрипт возвращает функцию для очистки, вызываем ее
if type(outfitChangerScriptConnection) == "function" then
pcall(function() outfitChangerScriptConnection() end)
end
outfitChangerScriptConnection = nil
end
-- Дополнительная очистка в PlayerGui
task.wait(0.1) -- Даем время на очистку
if playerGui then
for _, gui in pairs(playerGui:GetChildren()) do
if gui.Name == "CosmeticInjectorGUI" or
gui.Name:find("OutfitChanger") or
gui.Name:find("Cosmetic") then
gui:Destroy()
end
end
end
end
end
-- Scratch Marks с проверками эффектов (Hidden, Cloaked, Ghost)
local function updateScratchMarks(enabled, color)
if ScratchMarksModule.Connection then
ScratchMarksModule.Connection:Disconnect()
ScratchMarksModule.Connection = nil
end
if ScratchMarksModule.Folder then
ScratchMarksModule.Folder:Destroy()
ScratchMarksModule.Folder = nil
end
if not enabled then return end
local folder = Instance.new("Folder")
folder.Name = "ScratchMarks"
folder.Parent = workspace.CurrentCamera
ScratchMarksModule.Folder = folder
-- Параметры следов (как в оригинале)
local directionsTable = {
Straight = { Direction = CFrame.Angles(0,0,0), Amount = 1, Range = 400, MaxSize = 35 },
Down = { Direction = CFrame.Angles(math.rad(-90),0,0), Amount = 5, Range = 420, MaxSize = 50 },
Right = { Direction = CFrame.Angles(0,math.rad(90),0), Amount = 1, Range = 400, MaxSize = 35 },
Back = { Direction = CFrame.Angles(0,math.rad(180),0), Amount = 1, Range = 400, MaxSize = 35 },
Left = { Direction = CFrame.Angles(0,math.rad(-90),0), Amount = 1, Range = 400, MaxSize = 35 },
Up = { Direction = CFrame.Angles(math.rad(90),0,0), Amount = 1, Range = 400, MaxSize = 55 },
}
local ScratchRange = 18
local ScratchFreq = 0.8
local MinSize = 10
local ScratchTime = 5
-- Функция проверки эффектов через CodeModule
local function hasEffect(effectName)
if CodeModule and type(CodeModule.GetEffect) == "function" then
local success, result = pcall(function()
return CodeModule:GetEffect(effectName, LocalPlayer)
end)
if success then
return result
end
end
return false
end
local function createScratch()
local char = LocalPlayer.Character
if not char then return end
local humanoid = char:FindFirstChild("Humanoid")
local rootPart = char:FindFirstChild("HumanoidRootPart")
if not humanoid or not rootPart then return end
-- Проверка эффектов скрытности (если есть – следы не появляются)
if hasEffect("Hidden") or hasEffect("Cloaked") or hasEffect("Ghost") then
return
end
-- Получаем значения из Backpack
local backpack = LocalPlayer:FindFirstChild("Backpack")
if not backpack then return end
local scripts = backpack:FindFirstChild("Scripts")
if not scripts then return end
local values = scripts:FindFirstChild("values")
if not values then return end
local healthState = values:FindFirstChild("HealthState")
local hooked = values:FindFirstChild("Hooked")
local shift = scripts:FindFirstChild("MovementSpeedScript") and scripts.MovementSpeedScript:FindFirstChild("Shift")
if not healthState or not hooked or not shift then return end
-- Проверка здоровья
local healthVal = tonumber(healthState.Value)
if not healthVal or healthVal <= 0 then return end
-- Проверка на крюке
if hooked.Value then return end
-- Проверка движения
if humanoid.MoveDirection.Magnitude == 0 then return end
-- Проверка бега (shift)
if not shift.Value then return end
-- Частота
local currentTime = tick()
if currentTime - ScratchMarksModule.LastTick < ScratchFreq then return end
ScratchMarksModule.LastTick = currentTime
-- Создание следов
local baseFrame = CFrame.new(char:GetPivot().Position)
for _, dirTable in pairs(directionsTable) do
local ray = Ray.new(baseFrame.Position, (baseFrame * dirTable.Direction).LookVector * ScratchRange)
local part, hitPos = workspace:FindPartOnRayWithIgnoreList(ray, {folder, char})
if part then
for i = 1, dirTable.Amount do
local newPositionY = math.random(-dirTable.Range, dirTable.Range) / 100
newPositionY = newPositionY - (newPositionY * math.random(0,1)) * 2
local newPositionS = math.random(-dirTable.Range, dirTable.Range) / 100
newPositionS = newPositionS - (newPositionS * math.random(0,1)) * 2
local thisCFrame = CFrame.new(baseFrame.Position, hitPos)
local dist = (baseFrame.Position - hitPos).magnitude
thisCFrame = thisCFrame * CFrame.new(0, 0, -dist) * CFrame.new(newPositionS, newPositionY, 0) * CFrame.Angles(0, 0, math.rad(math.random(0, 360)))
local scratchPart = Instance.new("Part")
scratchPart.Anchored = true
scratchPart.CanCollide = false
scratchPart.CanQuery = false
scratchPart.Transparency = 1
scratchPart.Material = Enum.Material.Neon
scratchPart.Color = color or MiscStates.ScratchMarks.Color
scratchPart.Name = "Scratch"
scratchPart.Size = Vector3.new(math.random(MinSize, dirTable.MaxSize) / 10, 0.1, 0.1)
scratchPart.CFrame = thisCFrame
scratchPart.Parent = folder
local tween = TweenService:Create(scratchPart, TweenInfo.new(3), {Transparency = 0})
tween:Play()
task.delay(ScratchTime, function()
local fadeTween = TweenService:Create(scratchPart, TweenInfo.new(3), {Transparency = 1})
fadeTween:Play()
fadeTween.Completed:Wait()
scratchPart:Destroy()
end)
end
end
end
end
ScratchMarksModule.Connection = RunService.Heartbeat:Connect(createScratch)
end
--// UI SETUP XYETA
--// UI Setup
local ScreenGui = Create("ScreenGui", {
Name = "HyperionV7_Final",
Parent = RunService:IsStudio() and LocalPlayer.PlayerGui or CoreGui,
ResetOnSpawn = false,
ZIndexBehavior = Enum.ZIndexBehavior.Sibling
})
local Main = Create("CanvasGroup", {
Name = "Main",
Parent = ScreenGui,
BackgroundColor3 = Theme.Background,
Position = UDim2.fromScale(0.5, 0.5),
Size = UDim2.fromOffset(750, 550),
AnchorPoint = Vector2.new(0.5, 0.5),
GroupTransparency = 1, -- Start invisible
Visible = false
}, { Create("UICorner", {CornerRadius = UDim.new(0, 10)}) })
MakeDraggable(Main, Main)
local CurrentTab = nil
local CurrentSubTab = nil
local Tabs = {}
local Pages = {}
local PageColumns = {}
local SubTabContainers = {}
local SubTabs = {}
local Sidebar = Create("Frame", {
Parent = Main,
BackgroundColor3 = Theme.Sidebar,
Size = UDim2.new(0, 180, 1, 0),
ZIndex = 2
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 10)}),
Create("Frame", {
BackgroundColor3 = Theme.Sidebar,
BorderSizePixel = 0,
Position = UDim2.new(1, -5, 0, 0),
Size = UDim2.new(0, 5, 1, 0),
ZIndex = 2
})
})
Create("TextLabel", {
Parent = Sidebar,
BackgroundTransparency = 1,
Position = UDim2.new(0, 20, 0, 20),
Size = UDim2.new(0, 140, 0, 30),
Font = Enum.Font.GothamBold,
Text = "yeban.cc 1.5 crack by dkhok",
TextColor3 = Theme.Accent,
TextSize = 22,
TextXAlignment = Enum.TextXAlignment.Left
}, {
Create("Frame", {
BackgroundColor3 = Color3.new(1,1,1),
Size = UDim2.fromOffset(4, 4),
Position = UDim2.new(0, -8, 0.5, -2)
}, { Create("UICorner", {CornerRadius = UDim.new(1,0)}) })
})
local Nav = Create("ScrollingFrame", {
Parent = Sidebar,
BackgroundTransparency = 1,
Position = UDim2.new(0, 10, 0, 80),
Size = UDim2.new(1, -20, 1, -160),
BorderSizePixel = 0,
ScrollBarThickness = 0,
AutomaticCanvasSize = Enum.AutomaticSize.Y,
CanvasSize = UDim2.new(0,0,0,0)
}, { Create("UIListLayout", {Padding = UDim.new(0, 8), SortOrder = Enum.SortOrder.LayoutOrder}) })
local Content = Create("Frame", {
Parent = Main,
BackgroundTransparency = 1,
Position = UDim2.new(0, 190, 0, 10),
Size = UDim2.new(1, -200, 1, -20)
})
local Header = Create("Frame", {Parent = Content, BackgroundTransparency = 1, Size = UDim2.new(1,0,0,60)})
Create("TextLabel", {
Parent = Header, BackgroundTransparency = 1, Size = UDim2.new(0,200,0,30),
Font = Enum.Font.GothamBold, Text = "Hello, " .. LocalPlayer.DisplayName, TextColor3 = Theme.Text, TextSize = 24, TextXAlignment = Enum.TextXAlignment.Left
})
Create("TextLabel", {
Parent = Header, BackgroundTransparency = 1, Position = UDim2.new(0,0,0,30), Size = UDim2.new(0,200,0,20),
Font = Enum.Font.Gotham, Text = "Welcome Back!", TextColor3 = Theme.SubText, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left
})
local SearchBoxInput
local function UpdateSearch(text)
text = text:lower()
local activePage = nil
for name, page in pairs(Pages) do
if page.Visible then activePage = page break end
end
if not activePage then return end
local pageData = PageColumns[activePage]
if not pageData then return end
local leftCol = pageData.LeftCol
local rightCol = pageData.RightCol
local function FilterList(list)
if not list then return end
for _, panel in pairs(list:GetChildren()) do
if panel:IsA("Frame") then
local foundInPanel = false
local title = panel:FindFirstChild("Title")
if title and title:IsA("TextLabel") and title.Text:lower():find(text) then
foundInPanel = true
end
local container = panel:FindFirstChild("Container")
if container then
for _, item in pairs(container:GetChildren()) do
if item:IsA("Frame") then
local itemText = item:FindFirstChild("ItemName")
if itemText and itemText.Text:lower():find(text) then
item.Visible = true
foundInPanel = true
elseif itemText then
item.Visible = false
end
end
end
end
panel.Visible = foundInPanel or (text == "")
end
end
end
FilterList(leftCol)
FilterList(rightCol)
end
local SearchBar = Create("Frame", {
Parent = Header, BackgroundColor3 = Theme.Input, Position = UDim2.new(1,-200,0,10), Size = UDim2.new(0,200,0,35)
}, {
Create("UICorner", {CornerRadius = UDim.new(0,8)}),
Create("TextLabel", {
BackgroundTransparency = 1,
Size = UDim2.new(0,35,1,0),
Text = "🔍",
TextColor3 = Theme.SubText,
TextSize = 14,
Font = Enum.Font.Gotham
})
})
SearchBoxInput = Create("TextBox", {
Parent = SearchBar,
BackgroundTransparency = 1, Position = UDim2.new(0,35,0,0), Size = UDim2.new(1,-40,1,0),
Font = Enum.Font.Gotham, PlaceholderText = "Search", Text = "", TextColor3 = Theme.Text,
TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left,
ClearTextOnFocus = false
})
SearchBoxInput:GetPropertyChangedSignal("Text"):Connect(function()
UpdateSearch(SearchBoxInput.Text)
end)
local function AnimateContainer(container, show)
if not container then return end
local childrenCount = 0
for _, c in pairs(container:GetChildren()) do
if c:IsA("TextButton") then childrenCount = childrenCount + 1 end
end
local targetHeight = (childrenCount * 30) + (math.max(0, childrenCount - 1) * 2) + 5
if show then
container.Visible = true
TweenService:Create(container, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
Size = UDim2.new(1, 0, 0, targetHeight)
}):Play()
else
TweenService:Create(container, TweenInfo.new(0.25, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
Size = UDim2.new(1, 0, 0, 0)
}):Play()
end
end
local function SwitchTab(tabName, isSubTab)
-- Функция анимации перехода страниц
local function AnimatePageTransition(targetPageName)
for name, page in pairs(Pages) do
if name == targetPageName then
-- Подготовка новой страницы
page.Visible = true
page.GroupTransparency = 1
-- ИСПРАВЛЕНИЕ: Начальная позиция анимации (70 + 20 = 90)
page.Position = UDim2.new(0, 0, 0, 90)
-- Запускаем анимацию появления (выезжает вверх на позицию 70)
TweenService:Create(page, TweenInfo.new(0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
GroupTransparency = 0,
Position = UDim2.new(0, 0, 0, 70) -- ИСПРАВЛЕНИЕ: Конечная позиция ровно под шапкой
}):Play()
else
-- Скрываем старые страницы
page.Visible = false
end
end
end
if not isSubTab then
-- Логика для ГЛАВНЫХ вкладок
if CurrentTab == tabName and SubTabContainers[tabName] then return end
CurrentTab = tabName
for name, btn in pairs(Tabs) do
local active = (name == tabName)
-- Анимация кнопок
local targetBgTransparency = active and 0 or 1
local targetTextColor = active and Theme.Text or Color3.fromRGB(120, 120, 120)
TweenService:Create(btn, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
BackgroundTransparency = targetBgTransparency,
BackgroundColor3 = active and Theme.Accent or Color3.new(1,1,1)
}):Play()
if btn:FindFirstChild("Content") then
TweenService:Create(btn.Content, TweenInfo.new(0.3), {TextColor3 = targetTextColor}):Play()
end
if SubTabContainers[name] then
AnimateContainer(SubTabContainers[name], active)
end
end
if not SubTabContainers[tabName] then
AnimatePageTransition(tabName)
SearchBoxInput.Text = ""
else
local container = SubTabContainers[tabName]
if container then
local firstSubTabBtn = nil
for _, child in pairs(container:GetChildren()) do
if child:IsA("TextButton") then firstSubTabBtn = child break end
end
if firstSubTabBtn then
local contentLabel = firstSubTabBtn:FindFirstChild("PageId")
if contentLabel then SwitchTab(contentLabel.Text, true) end
end
end
end
else
-- Логика для ПОДВКЛАДОК
CurrentSubTab = tabName
for name, btn in pairs(SubTabs) do
local pageIdLabel = btn:FindFirstChild("PageId")
local pageId = pageIdLabel and pageIdLabel.Text or ""
local active = (pageId == tabName)
if btn:FindFirstChild("Content") then
local targetColor = active and Theme.Text or Color3.fromRGB(140, 140, 140)
TweenService:Create(btn.Content, TweenInfo.new(0.3), {TextColor3 = targetColor}):Play()
end
if btn:FindFirstChild("Indicator") then
TweenService:Create(btn.Indicator, TweenInfo.new(0.3), {
BackgroundTransparency = active and 0 or 1,
Size = active and UDim2.fromOffset(3, 18) or UDim2.fromOffset(2, 14)
}):Play()
end
end
AnimatePageTransition(tabName)
SearchBoxInput.Text = ""
end
end
local function CreateTabButton(text, hasSubTabs)
local btn = Create("TextButton", {
Parent = Nav, BackgroundColor3 = Color3.new(1,1,1), BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 0, 40), Text = "", AutoButtonColor = false
}, { Create("UICorner", {CornerRadius = UDim.new(0, 8)}) })
btn.MouseButton1Click:Connect(function() SwitchTab(text) end)
Create("TextLabel", {
Name = "Content", Parent = btn, BackgroundTransparency = 1, Position = UDim2.new(0, 15, 0, 0),
Size = UDim2.new(1, -15, 1, 0), Font = Enum.Font.GothamBold, Text = text,
TextColor3 = Color3.fromRGB(120,120,120), TextSize = 14, TextXAlignment = Enum.TextXAlignment.Left
})
Tabs[text] = btn
if hasSubTabs then
local subContainer = Create("Frame", {
Name = text.."_SubContainer", Parent = Nav, BackgroundTransparency = 1, Size = UDim2.new(1, 0, 0, 0),
ClipsDescendants = true, Visible = false
}, {
Create("UIListLayout", {Padding = UDim.new(0, 2), SortOrder = Enum.SortOrder.LayoutOrder}),
Create("UIPadding", {PaddingLeft = UDim.new(0, 10)})
})
SubTabContainers[text] = subContainer
return subContainer
end
return nil
end
local function CreateSubTabButton(parent, text, pageIdOverride)
local targetPageId = pageIdOverride or text
local btn = Create("TextButton", {
Parent = parent, BackgroundTransparency = 1, Size = UDim2.new(1, 0, 0, 30), Text = "", AutoButtonColor = false
})
Create("TextLabel", { Name = "PageId", Parent = btn, Visible = false, Text = targetPageId })
local indicator = Create("Frame", {
Name = "Indicator", Parent = btn, BackgroundColor3 = Theme.Accent, Position = UDim2.new(0, 5, 0.5, -7),
Size = UDim2.fromOffset(2, 14), BackgroundTransparency = 1
}, { Create("UICorner", {CornerRadius = UDim.new(0, 2)}) })
Create("TextLabel", {
Name = "Content", Parent = btn, BackgroundTransparency = 1, Position = UDim2.new(0, 25, 0, 0),
Size = UDim2.new(1, -25, 1, 0), Font = Enum.Font.GothamMedium, Text = text,
TextColor3 = Color3.fromRGB(140, 140, 140), TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left
})
btn.MouseButton1Click:Connect(function() SwitchTab(targetPageId, true) end)
SubTabs[targetPageId] = btn
return btn
end
local function CreatePage(name)
local page = Create("CanvasGroup", {
Name = name,
Parent = Content,
BackgroundTransparency = 1,
-- ИСПРАВЛЕНИЕ: Ставим позицию 70, чтобы не перекрывать Header
Position = UDim2.new(0, 0, 0, 70),
-- ИСПРАВЛЕНИЕ: Вычитаем 70 из высоты, чтобы не вылезало снизу
Size = UDim2.new(1, 0, 1, -70),
Visible = false,
GroupTransparency = 1,
ClipsDescendants = true,
BorderSizePixel = 0
})
local scroll = Create("ScrollingFrame", {
Parent = page,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 1, 0),
CanvasSize = UDim2.new(0, 0, 0, 0),
ScrollBarThickness = 0,
AutomaticCanvasSize = Enum.AutomaticSize.Y
})
local left = Create("Frame", {
Parent = scroll,
BackgroundTransparency = 1,
Size = UDim2.new(0.48, 0, 1, 0)
}, {
Create("UIListLayout", {Padding = UDim.new(0, 15), SortOrder = Enum.SortOrder.LayoutOrder})
})
local right = Create("Frame", {
Parent = scroll,
BackgroundTransparency = 1,
Position = UDim2.new(0.52, 0, 0, 0),
Size = UDim2.new(0.48, 0, 1, 0)
}, {
Create("UIListLayout", {Padding = UDim.new(0, 15), SortOrder = Enum.SortOrder.LayoutOrder})
})
PageColumns[page] = { LeftCol = left, RightCol = right }
Pages[name] = page
return left, right
end
local function AddPanel(parent, title)
local p = Create("Frame", {Parent = parent, BackgroundColor3 = Theme.Sidebar, Size = UDim2.new(1,0,0,0), AutomaticSize = Enum.AutomaticSize.Y}, {
Create("UICorner", {CornerRadius = UDim.new(0,8)}),
Create("UIPadding", {PaddingTop = UDim.new(0,15), PaddingBottom = UDim.new(0,15), PaddingLeft = UDim.new(0,15), PaddingRight = UDim.new(0,15)})
})
Create("TextLabel", {Name="Title", Parent = p, BackgroundTransparency = 1, Size = UDim2.new(1,0,0,20), Font = Enum.Font.GothamBold, Text = title, TextColor3 = Theme.Text, TextSize = 16, TextXAlignment = Enum.TextXAlignment.Left})
local cont = Create("Frame", {Name="Container", Parent = p, BackgroundTransparency = 1, Position = UDim2.new(0,0,0,30), Size = UDim2.new(1,0,0,0), AutomaticSize = Enum.AutomaticSize.Y}, {Create("UIListLayout", {Padding = UDim.new(0, 10), SortOrder = Enum.SortOrder.LayoutOrder})})
return cont
end
--// UI COMPONENTS XYETA
local function AddPlayerAction(parent, name, callback)
local selectedPlayer = "All"
local isProcessing = false
local isOpen = false
local Holder = Create("Frame", { Parent = parent, BackgroundTransparency = 1, Size = UDim2.new(1, 0, 0, 25), ZIndex = 10 })
-- Сохраняем Label в переменную для анимации цвета
local Label = Create("TextLabel", {
Name = "ItemName",
Parent = Holder,
BackgroundTransparency = 1,
Size = UDim2.new(0.3, 0, 1, 0),
Font = Enum.Font.GothamMedium,
Text = name,
TextColor3 = Theme.SubText, -- Начальный цвет (тусклый)
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left
})
local DropdownBtn = Create("TextButton", {
Parent = Holder,
BackgroundColor3 = Theme.Input,
Position = UDim2.new(0.4, 0, 0, 0),
Size = UDim2.new(0.48, 0, 1, 0),
Text = "",
AutoButtonColor = false,
ZIndex = 11
}, { Create("UICorner", {CornerRadius = UDim.new(0, 6)}) })
local DisplayText = Create("TextLabel", {
Parent = DropdownBtn,
BackgroundTransparency = 1,
Position = UDim2.new(0, 10, 0, 0),
Size = UDim2.new(1, -30, 1, 0),
Font = Enum.Font.Gotham,
Text = "All",
TextColor3 = Theme.Text,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 12
})
local Arrow = Create("TextLabel", {
Parent = DropdownBtn,
BackgroundTransparency = 1,
Position = UDim2.new(1, -25, 0, 0),
Size = UDim2.new(0, 20, 1, 0),
Text = "▼",
TextColor3 = Theme.SubText,
TextSize = 10,
Font = Enum.Font.Gotham,
ZIndex = 12
})
local ListContainer = Create("Frame", {
Parent = Holder,
BackgroundColor3 = Theme.Input,
Position = UDim2.new(0.4, 0, 1, 3),
Size = UDim2.new(0.48, 0, 0, 0),
ClipsDescendants = true,
Visible = false,
ZIndex = 100
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 6)}),
Create("UIListLayout", {SortOrder = Enum.SortOrder.LayoutOrder})
})
local function CloseDropdown(instant)
isOpen = false
if instant then
Arrow.Rotation = 0
ListContainer.Size = UDim2.new(0.48, 0, 0, 0)
ListContainer.Visible = false
Holder.ZIndex = 10
else
TweenService:Create(Arrow, TweenInfo.new(0.3), {Rotation = 0}):Play()
local closeTween = TweenService:Create(ListContainer, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {Size = UDim2.new(0.48, 0, 0, 0)})
closeTween:Play()
closeTween.Completed:Connect(function()
if not isOpen then ListContainer.Visible = false Holder.ZIndex = 10 end
end)
end
end
DropdownBtn.MouseButton1Click:Connect(function()
if isOpen then
CloseDropdown()
OpenedDropdown = nil
else
if OpenedDropdown then OpenedDropdown(true) end
isOpen = true
OpenedDropdown = CloseDropdown
Holder.ZIndex = 100
ListContainer.Visible = true
for _, child in pairs(ListContainer:GetChildren()) do if child:IsA("TextButton") then child:Destroy() end end
local targets = {"All"}
for _, p in pairs(Players:GetPlayers()) do
if p ~= LocalPlayer then table.insert(targets, p.Name) end
end
for _, targetName in ipairs(targets) do
local b = Create("TextButton", {
Parent = ListContainer,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 0, 25),
Text = " " .. targetName,
TextColor3 = Theme.SubText,
TextSize = 12,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 101
})
b.MouseButton1Click:Connect(function()
selectedPlayer = targetName
DisplayText.Text = targetName
CloseDropdown()
OpenedDropdown = nil
end)
end
local targetHeight = math.min(#targets * 25, 150)
TweenService:Create(Arrow, TweenInfo.new(0.3), {Rotation = 180}):Play()
TweenService:Create(ListContainer, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Size = UDim2.new(0.48, 0, 0, targetHeight)}):Play()
end
end)
-- ЧЕКБОКС
local CheckboxFrame = Create("Frame", {
Parent = Holder,
BackgroundColor3 = Theme.Input,
Position = UDim2.new(1, 0, 0.5, 0),
AnchorPoint = Vector2.new(1, 0.5),
Size = UDim2.fromOffset(18, 18),
ZIndex = 11
}, { Create("UICorner", {CornerRadius = UDim.new(0, 4)}) })
local Fill = Create("Frame", {
Parent = CheckboxFrame,
BackgroundColor3 = Theme.Accent,
Position = UDim2.new(0.5, 0, 0.5, 0),
AnchorPoint = Vector2.new(0.5, 0.5),
Size = UDim2.fromOffset(0, 0),
ZIndex = 12
}, { Create("UICorner", {CornerRadius = UDim.new(0, 2)}) })
local ActionBtn = Create("TextButton", {
Parent = CheckboxFrame,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 1, 0),
Text = "",
ZIndex = 13
})
ActionBtn.MouseButton1Click:Connect(function()
if isProcessing then return end
isProcessing = true
-- АНИМАЦИЯ ВКЛЮЧЕНИЯ: Чекбокс + Текст
TweenService:Create(Fill, TweenInfo.new(0.2), {Size = UDim2.fromOffset(12, 12)}):Play()
TweenService:Create(Label, TweenInfo.new(0.2), {TextColor3 = Theme.Text}):Play()
if callback then
if selectedPlayer == "All" then
local allOthers = {}
for _, p in pairs(Players:GetPlayers()) do
if p ~= LocalPlayer then table.insert(allOthers, p) end
end
callback(allOthers, true)
else
callback(Players:FindFirstChild(selectedPlayer), false)
end
end
task.delay(0.5, function()
-- АНИМАЦИЯ ВЫКЛЮЧЕНИЯ: Чекбокс + Текст (возврат к SubText)
TweenService:Create(Fill, TweenInfo.new(0.2), {Size = UDim2.fromOffset(0, 0)}):Play()
TweenService:Create(Label, TweenInfo.new(0.2), {TextColor3 = Theme.SubText}):Play()
isProcessing = false
end)
end)
return Holder
end
local function AddDropdown(parent, name, options, callback)
local selectedOption = options[1] and options[1].value or ""
local isProcessing = false
local isOpen = false
local Holder = Create("Frame", { Parent = parent, BackgroundTransparency = 1, Size = UDim2.new(1, 0, 0, 25), ZIndex = 10 })
-- Label с возможностью анимации цвета
local Label = Create("TextLabel", {
Name = "ItemName",
Parent = Holder,
BackgroundTransparency = 1,
Size = UDim2.new(0.3, 0, 1, 0),
Font = Enum.Font.GothamMedium,
Text = name,
TextColor3 = Theme.SubText,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left
})
local DropdownBtn = Create("TextButton", {
Parent = Holder,
BackgroundColor3 = Theme.Input,
Position = UDim2.new(0.4, 0, 0, 0),
Size = UDim2.new(0.48, 0, 1, 0),
Text = "",
AutoButtonColor = false,
ZIndex = 11
}, { Create("UICorner", {CornerRadius = UDim.new(0, 6)}) })
local DisplayText = Create("TextLabel", {
Parent = DropdownBtn,
BackgroundTransparency = 1,
Position = UDim2.new(0, 10, 0, 0),
Size = UDim2.new(1, -30, 1, 0),
Font = Enum.Font.Gotham,
Text = options[1] and options[1].text or "Select",
TextColor3 = Theme.Text,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 12
})
local Arrow = Create("TextLabel", {
Parent = DropdownBtn,
BackgroundTransparency = 1,
Position = UDim2.new(1, -25, 0, 0),
Size = UDim2.new(0, 20, 1, 0),
Text = "▼",
TextColor3 = Theme.SubText,
TextSize = 10,
Font = Enum.Font.Gotham,
ZIndex = 12
})
local ListContainer = Create("Frame", {
Parent = Holder,
BackgroundColor3 = Theme.Input,
Position = UDim2.new(0.4, 0, 1, 3),
Size = UDim2.new(0.48, 0, 0, 0),
ClipsDescendants = true,
Visible = false,
ZIndex = 100
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 6)}),
Create("UIListLayout", {SortOrder = Enum.SortOrder.LayoutOrder})
})
local function CloseDropdown(instant)
isOpen = false
if instant then
Arrow.Rotation = 0
ListContainer.Size = UDim2.new(0.48, 0, 0, 0)
ListContainer.Visible = false
Holder.ZIndex = 10
else
TweenService:Create(Arrow, TweenInfo.new(0.3), {Rotation = 0}):Play()
local closeTween = TweenService:Create(ListContainer, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {Size = UDim2.new(0.48, 0, 0, 0)})
closeTween:Play()
closeTween.Completed:Connect(function()
if not isOpen then
ListContainer.Visible = false
Holder.ZIndex = 10
end
end)
end
end
DropdownBtn.MouseButton1Click:Connect(function()
if isOpen then
CloseDropdown()
OpenedDropdown = nil
else
if OpenedDropdown then OpenedDropdown(true) end
isOpen = true
OpenedDropdown = CloseDropdown
Holder.ZIndex = 100
ListContainer.Visible = true
for _, child in pairs(ListContainer:GetChildren()) do
if child:IsA("TextButton") then child:Destroy() end
end
for _, option in ipairs(options) do
local b = Create("TextButton", {
Parent = ListContainer,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 0, 25),
Text = " " .. option.text,
TextColor3 = Theme.SubText,
TextSize = 12,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 101
})
b.MouseButton1Click:Connect(function()
selectedOption = option.value
DisplayText.Text = option.text
CloseDropdown()
OpenedDropdown = nil
end)
end
local targetHeight = math.min(#options * 25, 150)
TweenService:Create(Arrow, TweenInfo.new(0.3), {Rotation = 180}):Play()
TweenService:Create(ListContainer, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
Size = UDim2.new(0.48, 0, 0, targetHeight)
}):Play()
end
end)
-- ЧЕКБОКС для применения
local CheckboxFrame = Create("Frame", {
Parent = Holder,
BackgroundColor3 = Theme.Input,
Position = UDim2.new(1, 0, 0.5, 0),
AnchorPoint = Vector2.new(1, 0.5),
Size = UDim2.fromOffset(18, 18),
ZIndex = 11
}, { Create("UICorner", {CornerRadius = UDim.new(0, 4)}) })
local Fill = Create("Frame", {
Parent = CheckboxFrame,
BackgroundColor3 = Theme.Accent,
Position = UDim2.new(0.5, 0, 0.5, 0),
AnchorPoint = Vector2.new(0.5, 0.5),
Size = UDim2.fromOffset(0, 0),
ZIndex = 12
}, { Create("UICorner", {CornerRadius = UDim.new(0, 2)}) })
local ActionBtn = Create("TextButton", {
Parent = CheckboxFrame,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 1, 0),
Text = "",
ZIndex = 13
})
ActionBtn.MouseButton1Click:Connect(function()
if isProcessing then return end
isProcessing = true
-- Анимация включения
TweenService:Create(Fill, TweenInfo.new(0.2), {Size = UDim2.fromOffset(12, 12)}):Play()
TweenService:Create(Label, TweenInfo.new(0.2), {TextColor3 = Theme.Text}):Play()
if callback then
callback(selectedOption)
end
task.delay(0.5, function()
-- Анимация выключения
TweenService:Create(Fill, TweenInfo.new(0.2), {Size = UDim2.fromOffset(0, 0)}):Play()
TweenService:Create(Label, TweenInfo.new(0.2), {TextColor3 = Theme.SubText}):Play()
isProcessing = false
end)
end)
return Holder
end
local function AddESPToggle(parent, name, defaultColor, callback)
local enabled = false
local currentColor = defaultColor or Color3.fromRGB(255, 255, 255)
local outlineColor = Color3.fromRGB(0, 0, 0)
local Holder = Create("Frame", { Parent = parent, BackgroundTransparency = 1, Size = UDim2.new(1, 0, 0, 25) })
local RowBtn = Create("TextButton", {
Parent = Holder,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 1, 0),
Text = "",
ZIndex = 1,
AutoButtonColor = false
})
local Label = Create("TextLabel", {
Name = "ItemName",
Parent = Holder,
BackgroundTransparency = 1,
Size = UDim2.new(0.4, 0, 1, 0),
Font = Enum.Font.GothamMedium,
Text = name,
TextColor3 = enabled and Theme.Text or Theme.SubText,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 2
})
local Controls = Create("Frame", {
Parent = Holder,
BackgroundTransparency = 1,
Position = UDim2.new(1, 0, 0, 0),
Size = UDim2.new(0, 160, 1, 0),
AnchorPoint = Vector2.new(1, 0),
ZIndex = 10,
Active = true
})
Create("UIListLayout", {
Parent = Controls,
SortOrder = Enum.SortOrder.LayoutOrder,
FillDirection = Enum.FillDirection.Horizontal,
HorizontalAlignment = Enum.HorizontalAlignment.Right,
VerticalAlignment = Enum.VerticalAlignment.Center,
Padding = UDim.new(0, 14)
})
local Checkbox = Create("Frame", {
Parent = Controls,
BackgroundColor3 = Theme.Input,
Size = UDim2.fromOffset(18, 18),
LayoutOrder = 3
}, { Create("UICorner", {CornerRadius = UDim.new(0, 4)}) })
local CheckFill = Create("Frame", {
Parent = Checkbox,
BackgroundColor3 = Theme.Accent,
Position = UDim2.new(0.5, 0, 0.5, 0),
AnchorPoint = Vector2.new(0.5, 0.5),
Size = enabled and UDim2.fromOffset(12, 12) or UDim2.fromOffset(0, 0)
}, { Create("UICorner", {CornerRadius = UDim.new(0, 2)}) })
local ColorCircle = Create("ImageButton", {
Parent = Controls,
BackgroundColor3 = currentColor,
Size = UDim2.fromOffset(16, 16),
LayoutOrder = 2,
ZIndex = 15,
AutoButtonColor = false,
Active = true,
Image = ""
}, {
Create("UICorner", {CornerRadius = UDim.new(1, 0)}),
Create("UIStroke", { Name = "Stroke", Color = outlineColor, Thickness = 1.5 })
})
local Stroke = ColorCircle:FindFirstChild("Stroke")
local HexInput = Create("TextBox", {
Parent = Controls,
BackgroundColor3 = Theme.Input,
Size = UDim2.new(0, 0, 0, 18),
Visible = false,
Text = "",
PlaceholderText = "#HEX",
TextColor3 = Color3.new(1,1,1),
Font = Enum.Font.Gotham,
TextSize = 10,
LayoutOrder = 1,
ClipsDescendants = true,
ZIndex = 15
}, { Create("UICorner", {CornerRadius = UDim.new(0, 4)}) })
-- Функция для конвертации Color3 в HEX
local function Color3ToHex(color)
local r = math.floor(color.r * 255)
local g = math.floor(color.g * 255)
local b = math.floor(color.b * 255)
return string.format("#%02X%02X%02X", r, g, b)
end
local function Toggle()
enabled = not enabled
TweenService:Create(CheckFill, TweenInfo.new(0.2), {
Size = enabled and UDim2.fromOffset(12, 12) or UDim2.fromOffset(0, 0)
}):Play()
TweenService:Create(Label, TweenInfo.new(0.2), {
TextColor3 = enabled and Theme.Text or Theme.SubText
}):Play()
if callback then
callback(enabled, currentColor, outlineColor)
end
end
RowBtn.MouseButton1Click:Connect(Toggle)
HexInput:GetPropertyChangedSignal("Text"):Connect(function()
local text = HexInput.Text
local clean = text:gsub("[^%x]", ""):sub(1, 6):upper()
local formatted = "#" .. clean
if text ~= formatted then
HexInput.Text = formatted
HexInput.CursorPosition = #formatted + 1
end
end)
ColorCircle.MouseButton1Click:Connect(function()
if HexInput.Visible then return end
HexInput.Visible = true
HexInput.Text = Color3ToHex(currentColor)
HexInput:CaptureFocus()
TweenService:Create(HexInput, TweenInfo.new(0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
Size = UDim2.new(0, 65, 0, 18)
}):Play()
end)
ColorCircle.MouseButton2Click:Connect(function()
outlineColor = (outlineColor == Color3.new(0,0,0)) and Color3.new(1,1,1) or Color3.new(0,0,0)
TweenService:Create(Stroke, TweenInfo.new(0.3), {Color = outlineColor}):Play()
if callback then
callback(enabled, currentColor, outlineColor)
end
end)
HexInput.FocusLost:Connect(function(enter)
if enter then
local nc = FromHex(HexInput.Text)
if nc then
currentColor = nc
TweenService:Create(ColorCircle, TweenInfo.new(0.3), {
BackgroundColor3 = currentColor
}):Play()
end
end
local t = TweenService:Create(HexInput, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {
Size = UDim2.new(0, 0, 0, 18)
})
t:Play()
t.Completed:Connect(function()
HexInput.Visible = false
end)
if callback then
callback(enabled, currentColor, outlineColor)
end
end)
-- Сохраняем элемент для конфигов
local elementId = name .. "_ESP"
UI_Elements.ESPToggles[elementId] = {
holder = Holder,
name = name,
getState = function()
return {
enabled = enabled,
color = {r = currentColor.r, g = currentColor.g, b = currentColor.b},
outlineColor = {r = outlineColor.r, g = outlineColor.g, b = outlineColor.b}
}
end,
setState = function(state)
enabled = state.enabled
currentColor = Color3.new(state.color.r, state.color.g, state.color.b)
outlineColor = Color3.new(state.outlineColor.r, state.outlineColor.g, state.outlineColor.b)
-- Обновляем визуал
CheckFill.Size = enabled and UDim2.fromOffset(12, 12) or UDim2.fromOffset(0, 0)
Label.TextColor3 = enabled and Theme.Text or Theme.SubText
ColorCircle.BackgroundColor3 = currentColor
Stroke.Color = outlineColor
-- Вызываем коллбек
if callback then
callback(enabled, currentColor, outlineColor)
end
end
}
return Holder
end
local function AddESPSizeToggle(parent, name, defaultColor, callback)
local enabled = false
local currentColor = defaultColor or Color3.fromRGB(255, 255, 255)
local outlineColor = Color3.fromRGB(0, 0, 0)
local selectedSize = "Auto"
local Holder = Create("Frame", {
Parent = parent,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 0, 25),
ZIndex = 10
})
local RowBtn = Create("TextButton", {
Parent = Holder,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 1, 0),
Text = "",
ZIndex = 1,
AutoButtonColor = false
})
local Label = Create("TextLabel", {
Parent = Holder,
BackgroundTransparency = 1,
Size = UDim2.new(0.4, 0, 1, 0),
Font = Enum.Font.GothamMedium,
Text = name,
TextColor3 = enabled and Theme.Text or Theme.SubText,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 2
})
local Controls = Create("Frame", {
Parent = Holder,
BackgroundTransparency = 1,
Position = UDim2.new(1, 0, 0.5, 0),
AnchorPoint = Vector2.new(1, 0.5),
Size = UDim2.new(0, 0, 1, 0),
AutomaticSize = Enum.AutomaticSize.X,
ZIndex = 10
})
Create("UIListLayout", {
Parent = Controls,
SortOrder = Enum.SortOrder.LayoutOrder,
FillDirection = Enum.FillDirection.Horizontal,
HorizontalAlignment = Enum.HorizontalAlignment.Right,
VerticalAlignment = Enum.VerticalAlignment.Center,
Padding = UDim.new(0, 14)
})
local Checkbox = Create("Frame", {
Parent = Controls,
BackgroundColor3 = Theme.Input,
Size = UDim2.fromOffset(18, 18),
LayoutOrder = 10
}, { Create("UICorner", {CornerRadius = UDim.new(0, 4)}) })
local CheckFill = Create("Frame", {
Parent = Checkbox,
BackgroundColor3 = Theme.Accent,
Position = UDim2.new(0.5, 0, 0.5, 0),
AnchorPoint = Vector2.new(0.5, 0.5),
Size = enabled and UDim2.fromOffset(12, 12) or UDim2.fromOffset(0, 0)
}, { Create("UICorner", {CornerRadius = UDim.new(0, 2)}) })
local ColorCircle = Create("ImageButton", {
Parent = Controls,
BackgroundColor3 = currentColor,
Size = UDim2.fromOffset(16, 16),
LayoutOrder = 9,
ZIndex = 15,
AutoButtonColor = false,
Active = true,
Image = ""
}, {
Create("UICorner", {CornerRadius = UDim.new(1, 0)}),
Create("UIStroke", { Name = "Stroke", Color = outlineColor, Thickness = 1.5 })
})
local Stroke = ColorCircle:FindFirstChild("Stroke")
local HexInput = Create("TextBox", {
Parent = Controls,
BackgroundColor3 = Theme.Input,
Size = UDim2.new(0, 0, 0, 18),
Visible = false,
Text = "",
PlaceholderText = "#HEX",
TextColor3 = Color3.new(1,1,1),
Font = Enum.Font.Gotham,
TextSize = 10,
LayoutOrder = 8,
ClipsDescendants = true,
ZIndex = 20
}, { Create("UICorner", {CornerRadius = UDim.new(0, 4)}) })
local SizeInput = Create("TextBox", {
Parent = Controls,
BackgroundColor3 = Theme.Input,
Size = UDim2.fromOffset(40, 18),
Text = selectedSize,
TextColor3 = Theme.Text,
Font = Enum.Font.Gotham,
TextSize = 10,
LayoutOrder = 7,
ZIndex = 20,
ClearTextOnFocus = true,
ClipsDescendants = true
}, { Create("UICorner", {CornerRadius = UDim.new(0, 4)}) })
-- Функция для конвертации Color3 в HEX
local function Color3ToHex(color)
local r = math.floor(color.r * 255)
local g = math.floor(color.g * 255)
local b = math.floor(color.b * 255)
return string.format("#%02X%02X%02X", r, g, b)
end
local function Toggle()
enabled = not enabled
TweenService:Create(CheckFill, TweenInfo.new(0.2), {
Size = enabled and UDim2.fromOffset(12, 12) or UDim2.fromOffset(0, 0)
}):Play()
TweenService:Create(Label, TweenInfo.new(0.2), {
TextColor3 = enabled and Theme.Text or Theme.SubText
}):Play()
if callback then
callback(enabled, currentColor, outlineColor, selectedSize)
end
end
RowBtn.MouseButton1Click:Connect(Toggle)
SizeInput:GetPropertyChangedSignal("Text"):Connect(function()
if #SizeInput.Text > 5 then
SizeInput.Text = SizeInput.Text:sub(1, 5)
end
end)
SizeInput.FocusLost:Connect(function()
local val = SizeInput.Text:gsub("[^%d]", "")
local num = tonumber(val)
if num and num >= 1 and num <= 99 then
selectedSize = num
SizeInput.Text = num .. "px"
else
selectedSize = "Auto"
SizeInput.Text = "Auto"
end
if callback then
callback(enabled, currentColor, outlineColor, selectedSize)
end
end)
HexInput:GetPropertyChangedSignal("Text"):Connect(function()
local text = HexInput.Text
local clean = text:gsub("[^%x]", ""):sub(1, 6):upper()
local formatted = "#" .. clean
if text ~= formatted then
HexInput.Text = formatted
HexInput.CursorPosition = #formatted + 1
end
end)
ColorCircle.MouseButton1Click:Connect(function()
if HexInput.Visible then return end
HexInput.Visible = true
HexInput.Text = Color3ToHex(currentColor)
HexInput:CaptureFocus()
TweenService:Create(HexInput, TweenInfo.new(0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
Size = UDim2.new(0, 65, 0, 18)
}):Play()
end)
ColorCircle.MouseButton2Click:Connect(function()
outlineColor = (outlineColor == Color3.new(0,0,0)) and Color3.new(1,1,1) or Color3.new(0,0,0)
TweenService:Create(Stroke, TweenInfo.new(0.3), {Color = outlineColor}):Play()
if callback then
callback(enabled, currentColor, outlineColor, selectedSize)
end
end)
HexInput.FocusLost:Connect(function(enter)
if enter then
local nc = FromHex(HexInput.Text)
if nc then
currentColor = nc
TweenService:Create(ColorCircle, TweenInfo.new(0.3), {
BackgroundColor3 = currentColor
}):Play()
end
end
local t = TweenService:Create(HexInput, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {
Size = UDim2.new(0, 0, 0, 18)
})
t:Play()
t.Completed:Connect(function()
HexInput.Visible = false
end)
if callback then
callback(enabled, currentColor, outlineColor, selectedSize)
end
end)
-- Сохраняем элемент для конфигов
local elementId = name .. "_ESPSize"
UI_Elements.ESPSizeToggles[elementId] = {
holder = Holder,
name = name,
getState = function()
return {
enabled = enabled,
color = {r = currentColor.r, g = currentColor.g, b = currentColor.b},
outlineColor = {r = outlineColor.r, g = outlineColor.g, b = outlineColor.b},
size = selectedSize
}
end,
setState = function(state)
enabled = state.enabled
currentColor = Color3.new(state.color.r, state.color.g, state.color.b)
outlineColor = Color3.new(state.outlineColor.r, state.outlineColor.g, state.outlineColor.b)
selectedSize = state.size or "Auto"
-- Обновляем визуал
CheckFill.Size = enabled and UDim2.fromOffset(12, 12) or UDim2.fromOffset(0, 0)
Label.TextColor3 = enabled and Theme.Text or Theme.SubText
ColorCircle.BackgroundColor3 = currentColor
Stroke.Color = outlineColor
SizeInput.Text = selectedSize == "Auto" and "Auto" or tostring(selectedSize) .. "px"
-- Вызываем коллбек
if callback then
callback(enabled, currentColor, outlineColor, selectedSize)
end
end
}
return Holder
end
local function AddKey(parent, name, options)
if typeof(options) == "EnumItem" then
options = {key = options}
end
options = options or {}
local defaultKey = options.key or Enum.KeyCode.Unknown
local defaultMode = options.mode or "Toggle"
local defaultState = options.state or false
local callback = options.callback or function() end
local onlyToggle = options.onlyToggle or false
local currentKey = defaultKey
local currentMode = defaultMode
local currentState = defaultState
local functionActive = false
local keyConnection
local keyUpConnection
local isListening = false
local listeningConnection
local f = Create("Frame", {
Parent = parent,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 0, 25)
})
local NameLabel = Create("TextLabel", {
Name = "ItemName",
Parent = f,
BackgroundTransparency = 1,
Size = UDim2.new(1, -130, 1, 0),
Font = Enum.Font.GothamMedium,
Text = name,
TextColor3 = currentState and Theme.Text or Theme.SubText,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left
})
local box = Create("Frame", {
Parent = f,
BackgroundColor3 = Theme.Input,
Position = UDim2.new(1, 0, 0.5, 0),
Size = UDim2.fromOffset(18, 18),
AnchorPoint = Vector2.new(1, 0.5)
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 4)})
})
local redSquare = Create("Frame", {
Parent = box,
BackgroundColor3 = Theme.Accent,
Position = UDim2.new(0.5, 0, 0.5, 0),
Size = currentState and UDim2.fromOffset(12, 12) or UDim2.fromOffset(0, 0),
AnchorPoint = Vector2.new(0.5, 0.5)
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 2)})
})
local toggleBtn = Instance.new("TextButton", box)
toggleBtn.BackgroundTransparency = 1
toggleBtn.Size = UDim2.new(1, 0, 1, 0)
toggleBtn.Text = ""
local function updateState(newState)
currentState = newState
TweenService:Create(redSquare, TweenInfo.new(0.2), {
Size = currentState and UDim2.fromOffset(12, 12) or UDim2.fromOffset(0, 0)
}):Play()
TweenService:Create(NameLabel, TweenInfo.new(0.2), {
TextColor3 = currentState and Theme.Text or Theme.SubText
}):Play()
if not currentState and functionActive then
functionActive = false
callback(false)
end
end
local function createConnections()
if keyConnection then
keyConnection:Disconnect()
keyConnection = nil
end
if keyUpConnection then
keyUpConnection:Disconnect()
keyUpConnection = nil
end
if currentKey ~= Enum.KeyCode.Unknown and currentState then
if currentMode == "Toggle" then
keyConnection = UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == currentKey then
if input.UserInputState == Enum.UserInputState.Begin then
functionActive = not functionActive
callback(functionActive)
end
end
end)
elseif currentMode == "Hold" then
keyConnection = UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == currentKey then
if input.UserInputState == Enum.UserInputState.Begin then
callback(true)
end
end
end)
keyUpConnection = UserInputService.InputEnded:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == currentKey then
if input.UserInputState == Enum.UserInputState.End then
callback(false)
end
end
end)
end
end
end
toggleBtn.MouseButton1Click:Connect(function()
updateState(not currentState)
createConnections()
end)
local keyBtn = Create("TextButton", {
Parent = f,
BackgroundColor3 = Theme.Input,
Position = UDim2.new(1, -25, 0.5, 0),
Size = UDim2.fromOffset(50, 18),
AnchorPoint = Vector2.new(1, 0.5),
Text = GetKeyName(currentKey),
Font = Enum.Font.Gotham,
TextSize = 11,
TextColor3 = Theme.SubText,
AutoButtonColor = false
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 4)})
})
local modeBtn
if not onlyToggle then
modeBtn = Create("TextButton", {
Parent = f,
BackgroundTransparency = 1,
Position = UDim2.new(1, -80, 0.5, 0),
Size = UDim2.fromOffset(40, 18),
AnchorPoint = Vector2.new(1, 0.5),
Text = currentMode,
Font = Enum.Font.Gotham,
TextSize = 11,
TextColor3 = Theme.SubText
})
modeBtn.MouseButton1Click:Connect(function()
if functionActive then
functionActive = false
callback(false)
end
currentMode = (currentMode == "Toggle") and "Hold" or "Toggle"
modeBtn.Text = currentMode
createConnections()
end)
else
currentMode = "Toggle"
end
keyBtn.MouseButton1Click:Connect(function()
if isListening then return end
isListening = true
keyBtn.Text = "..."
keyBtn.TextColor3 = Theme.Accent
if listeningConnection then
listeningConnection:Disconnect()
listeningConnection = nil
end
listeningConnection = UserInputService.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
if input.KeyCode == Enum.KeyCode.Escape or input.KeyCode == Enum.KeyCode.Backspace then
currentKey = Enum.KeyCode.Unknown
else
currentKey = input.KeyCode
end
keyBtn.Text = GetKeyName(currentKey)
keyBtn.TextColor3 = Theme.SubText
isListening = false
if listeningConnection then
listeningConnection:Disconnect()
listeningConnection = nil
end
createConnections()
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
isListening = false
keyBtn.Text = GetKeyName(currentKey)
keyBtn.TextColor3 = Theme.SubText
if listeningConnection then
listeningConnection:Disconnect()
listeningConnection = nil
end
end
end)
end)
createConnections()
f.Destroying:Connect(function()
if keyConnection then
keyConnection:Disconnect()
keyConnection = nil
end
if keyUpConnection then
keyUpConnection:Disconnect()
keyUpConnection = nil
end
if listeningConnection then
listeningConnection:Disconnect()
listeningConnection = nil
end
end)
-- Сохраняем элемент для конфигов
local elementId = name .. "_Key"
UI_Elements.Keys[elementId] = {
holder = f,
name = name,
getState = function()
return {
key = currentKey.Name,
mode = currentMode,
state = currentState
}
end,
setState = function(state)
currentKey = Enum.KeyCode[state.key] or Enum.KeyCode.Unknown
currentMode = state.mode
currentState = state.state
-- Обновляем визуал
redSquare.Size = currentState and UDim2.fromOffset(12, 12) or UDim2.fromOffset(0, 0)
NameLabel.TextColor3 = currentState and Theme.Text or Theme.SubText
keyBtn.Text = GetKeyName(currentKey)
if modeBtn then
modeBtn.Text = currentMode
end
-- Пересоздаем соединения
createConnections()
-- Если состояние активно, вызываем коллбек
if currentState then
if currentMode == "Toggle" then
functionActive = true
callback(true)
end
end
end
}
return f
end
local function AddOneTimeToggle(parent, name, callback)
local enabled = false
local f = Create("Frame", {Parent = parent, BackgroundTransparency = 1, Size = UDim2.new(1, 0, 0, 25)})
local itemNameLabel = Create("TextLabel", {
Name = "ItemName",
Parent = f,
BackgroundTransparency = 1,
Size = UDim2.new(0.6, 0, 1, 0),
Font = Enum.Font.GothamMedium,
Text = name,
TextColor3 = Theme.SubText,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left
})
local box = Create("Frame", {
Parent = f,
BackgroundColor3 = Theme.Input,
Position = UDim2.new(1, 0, 0.5, 0),
Size = UDim2.fromOffset(18, 18),
AnchorPoint = Vector2.new(1, 0.5)
}, {Create("UICorner", {CornerRadius = UDim.new(0, 4)})})
local redSquare = Create("Frame", {
Parent = box,
BackgroundColor3 = Theme.Accent,
Position = UDim2.new(0.5, 0, 0.5, 0),
Size = UDim2.fromOffset(0, 0),
AnchorPoint = Vector2.new(0.5, 0.5)
}, {Create("UICorner", {CornerRadius = UDim.new(0, 2)})})
local btn = Instance.new("TextButton", f)
btn.BackgroundTransparency = 1
btn.Size = UDim2.new(1, 0, 1, 0)
btn.Text = ""
btn.MouseButton1Click:Connect(function()
if not enabled then
enabled = true
TweenService:Create(redSquare, TweenInfo.new(0.2), {Size = UDim2.fromOffset(12, 12)}):Play()
TweenService:Create(itemNameLabel, TweenInfo.new(0.2), {TextColor3 = Theme.Text}):Play()
if callback then callback(true) end
end
end)
return f
end
local function AddSlider(parent, name, minValue, maxValue, defaultValue, callback)
local currentValue = defaultValue
local f = Create("Frame", {
Parent = parent,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 0, 25)
})
local LeftContainer = Create("Frame", {
Parent = f,
BackgroundTransparency = 1,
Size = UDim2.new(0.35, 0, 1, 0)
})
local NameLabel = Create("TextLabel", {
Name = "ItemName",
Parent = LeftContainer,
BackgroundTransparency = 1,
Size = UDim2.new(0.6, 0, 1, 0),
Font = Enum.Font.GothamMedium,
Text = name,
TextColor3 = Theme.Text,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left
})
local ValueLabel = Create("TextLabel", {
Parent = LeftContainer,
BackgroundTransparency = 1,
Position = UDim2.new(0.6, 0, 0, 0),
Size = UDim2.new(0.4, 0, 1, 0),
Font = Enum.Font.Gotham,
Text = tostring(defaultValue),
TextColor3 = Theme.SubText,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Right,
TextYAlignment = Enum.TextYAlignment.Center
})
local bg = Create("Frame", {
Parent = f,
BackgroundColor3 = Theme.Input,
Position = UDim2.new(0.35, 10, 0.5, -3),
Size = UDim2.new(0.65, -10, 0, 6)
}, {
Create("UICorner", {CornerRadius = UDim.new(1, 0)})
})
local initialPos = (defaultValue - minValue) / (maxValue - minValue)
local fill = Create("Frame", {
Parent = bg,
BackgroundColor3 = Theme.Accent,
Size = UDim2.new(initialPos, 0, 1, 0)
}, {
Create("UICorner", {CornerRadius = UDim.new(1, 0)})
})
local handle = Create("Frame", {
Parent = fill,
BackgroundColor3 = Theme.Accent,
Position = UDim2.new(1, 0, 0.5, 0),
Size = UDim2.fromOffset(10, 10),
AnchorPoint = Vector2.new(0.5, 0.5)
}, {
Create("UICorner", {CornerRadius = UDim.new(1, 0)}),
Create("UIStroke", {Color = Theme.Sidebar, Thickness = 2})
})
local isDragging = false
local dragStart = Vector2.new(0, 0)
local startPos = 0
local bgBtn = Create("TextButton", {
Parent = bg,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 3, 0),
Position = UDim2.new(0, 0, -1, 0),
Text = "",
AutoButtonColor = false,
ZIndex = 5
})
local function UpdateSlide(input)
if not isDragging then return end
local mousePos = input.Position
local bgAbsolutePos = bg.AbsolutePosition
local bgAbsoluteSize = bg.AbsoluteSize
local pos = math.clamp((mousePos.X - bgAbsolutePos.X) / bgAbsoluteSize.X, 0, 1)
local value = minValue + (pos * (maxValue - minValue))
local isDecimalRange = (maxValue - minValue <= 10) or (minValue % 1 ~= 0) or (maxValue % 1 ~= 0)
if isDecimalRange then
local precision = 1
if name == "CAR itself" then
precision = 2
end
value = math.floor(value * (10 ^ precision) + 0.5) / (10 ^ precision)
ValueLabel.Text = string.format("%."..precision.."f", value)
else
value = math.round(value)
ValueLabel.Text = tostring(value)
end
currentValue = value
TweenService:Create(fill, TweenInfo.new(0.05, Enum.EasingStyle.Linear), {
Size = UDim2.new(pos, 0, 1, 0)
}):Play()
if callback then
callback(value)
end
end
bgBtn.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
isDragging = true
dragStart = input.Position
startPos = fill.Size.X.Scale
TweenService:Create(handle, TweenInfo.new(0.15), {
Size = UDim2.fromOffset(12, 12)
}):Play()
UpdateSlide(input)
end
end)
UserInputService.InputChanged:Connect(function(input)
if isDragging and input.UserInputType == Enum.UserInputType.MouseMovement then
UpdateSlide(input)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 and isDragging then
isDragging = false
TweenService:Create(handle, TweenInfo.new(0.15), {
Size = UDim2.fromOffset(10, 10)
}):Play()
end
end)
bgBtn.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
isDragging = false
TweenService:Create(handle, TweenInfo.new(0.15), {
Size = UDim2.fromOffset(10, 10)
}):Play()
end
end)
-- Сохраняем элемент для конфигов
local elementId = name .. "_Slider"
UI_Elements.Sliders[elementId] = {
holder = f,
name = name,
getState = function()
return {
value = currentValue,
min = minValue,
max = maxValue
}
end,
setState = function(state)
currentValue = state.value
-- Обновляем визуал
local pos = (currentValue - minValue) / (maxValue - minValue)
fill.Size = UDim2.new(pos, 0, 1, 0)
local isDecimalRange = (maxValue - minValue <= 10) or (minValue % 1 ~= 0) or (maxValue % 1 ~= 0)
if isDecimalRange then
local precision = 1
if name == "CAR itself" then
precision = 2
end
ValueLabel.Text = string.format("%."..precision.."f", currentValue)
else
ValueLabel.Text = tostring(currentValue)
end
-- Вызываем коллбек
if callback then
callback(currentValue)
end
end
}
return f
end
local function AddToggle(parent, name, on, callback)
local enabled = on
local f = Create("Frame", {
Parent = parent,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 0, 25)
})
local itemNameLabel = Create("TextLabel", {
Name = "ItemName",
Parent = f,
BackgroundTransparency = 1,
Size = UDim2.new(0.6, 0, 1, 0),
Font = Enum.Font.GothamMedium,
Text = name,
TextColor3 = enabled and Theme.Text or Theme.SubText,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left
})
local box = Create("Frame", {
Parent = f,
BackgroundColor3 = Theme.Input,
Position = UDim2.new(1, 0, 0.5, 0),
Size = UDim2.fromOffset(18, 18),
AnchorPoint = Vector2.new(1, 0.5)
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 4)})
})
local redSquare = Create("Frame", {
Parent = box,
BackgroundColor3 = Theme.Accent,
Position = UDim2.new(0.5, 0, 0.5, 0),
Size = enabled and UDim2.fromOffset(12, 12) or UDim2.fromOffset(0, 0),
AnchorPoint = Vector2.new(0.5, 0.5)
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 2)})
})
local btn = Instance.new("TextButton", f)
btn.BackgroundTransparency = 1
btn.Size = UDim2.new(1, 0, 1, 0)
btn.Text = ""
btn.MouseButton1Click:Connect(function()
enabled = not enabled
TweenService:Create(redSquare, TweenInfo.new(0.2), {
Size = enabled and UDim2.fromOffset(12, 12) or UDim2.fromOffset(0, 0)
}):Play()
TweenService:Create(itemNameLabel, TweenInfo.new(0.2), {
TextColor3 = enabled and Theme.Text or Theme.SubText
}):Play()
if callback then
callback(enabled)
end
end)
-- Сохраняем элемент для конфигов
local elementId = name .. "_Toggle"
UI_Elements.Toggles[elementId] = {
holder = f,
name = name,
getState = function()
return { enabled = enabled }
end,
setState = function(state)
enabled = state.enabled
-- Обновляем визуал
redSquare.Size = enabled and UDim2.fromOffset(12, 12) or UDim2.fromOffset(0, 0)
itemNameLabel.TextColor3 = enabled and Theme.Text or Theme.SubText
-- Вызываем коллбек
if callback then
callback(enabled)
end
end
}
return f
end
--//TABS XYETA
local MainTab = CreateTabButton("Main", true)
CreateSubTabButton(MainTab, "Legit")
CreateSubTabButton(MainTab, "Rage")
local VisualsTab = CreateTabButton("Visuals", true)
CreateSubTabButton(VisualsTab, "Main", "VisualsMain")
CreateSubTabButton(VisualsTab, "Misc", "VisualsMisc")
local ConfigsTab = CreateTabButton("Configs", false)
local L_Left, L_Right = CreatePage("Legit")
local MovementPanel = AddPanel(L_Left, "Movement")
AddKey(MovementPanel, "Speed Changer", {
mode = "Toggle", -- Можно изменить на Hold
callback = function(state)
updateFixedSpeedChanger(state, fixedSpeedValue)
end
})
AddSlider(MovementPanel, "SC itself", 5, 100, 15, function(value)
fixedSpeedValue = value
if fixedSpeedEnabled then
updateFixedSpeedChanger(true, value)
end
end)
AddToggle(MovementPanel, "VaultSpeed Changer", false, function(state)
updateVaultSpeedChanger(state, vaultSpeedValue)
end)
AddSlider(MovementPanel, "VSC itself", 0.01, 1.23, 1.0, function(value)
vaultSpeedValue = math.floor(value * 100) / 100
if vaultSpeedEnabled then
updateVaultSpeedChanger(true, vaultSpeedValue)
end
end)
AddKey(MovementPanel, "12stud Teleport", {
mode = "Toggle",
callback = function(state)
if state then
teleportForward()
end
onlyToggle = true
end
})
AddKey(MovementPanel, "NAF", {
mode = "Toggle",
callback = function(state)
updateNAF(state)
end,
onlyToggle = true
})
AddKey(MovementPanel, "Auto Moonwalk", {
mode = "Toggle",
callback = function(state)
updateAutoMoonwalk(state)
end,
onlyToggle = true -- Только Toggle режим, без Hold
})
local UnnamedPanel = AddPanel(L_Right, "Unnamed")
AddToggle(UnnamedPanel, "Emote Wheel (B)", false, function(state)
updateEmoteWheel(state)
end)
AddToggle(UnnamedPanel, "Force Self-Care", false, function(state)
updateSelfCare(state)
end)
AddKey(UnnamedPanel, "No Collisions", {
mode = "Toggle",
callback = function(state)
updateNoCollision(state)
end
})
AddToggle(UnnamedPanel, "Old Animations", false, function(state)
updateOldAnimations(state)
end)
AddOneTimeToggle(UnnamedPanel, "Ban Yourself", function()
local player = game.Players.LocalPlayer
local healthState = player:WaitForChild("Backpack"):WaitForChild("Scripts"):WaitForChild("values"):WaitForChild("HealthState")
game:GetService("ReplicatedStorage").RemoteEvents.NewPropertie:FireServer({Bbh1O={C22="I101",C21=healthState,C20=3}})
end)
local R_Left, R_Right = CreatePage("Rage")
local SurvivorSide = AddPanel(R_Left, "Survivor Side")
AddOneTimeToggle(SurvivorSide, "Break All Hooks (BUGGY)", function(enabled)
updateBlockHooks(enabled)
end)
AddOneTimeToggle(SurvivorSide, "Finish All Gens", function(enabled)
updateFinishGens(enabled)
end)
AddKey(SurvivorSide, "Fly", {
mode = "Toggle",
callback = function(state)
if state == true and not flyEnabled then
toggleFlight()
elseif state == false and flyEnabled then
toggleFlight()
end
end
})
AddKey(SurvivorSide, "Noclip", {
mode = "Toggle",
callback = function(state)
if state == true then
-- При нажатии ВКЛЮЧАЕМ
if not noclipEnabled then
noclipEnabled = true
-- Запускаем цикл NoClip
noclipConnection = game:GetService("RunService").Stepped:Connect(function()
local character = LocalPlayer.Character
if character then
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
part.CanTouch = false
part.CanQuery = false
end
end
end
end)
warn("[NoClip] Включен (Hold)")
end
else
-- При отпускании ВЫКЛЮЧАЕМ
if noclipEnabled then
noclipEnabled = false
if noclipConnection then
noclipConnection:Disconnect()
noclipConnection = nil
end
-- Восстанавливаем коллизии
local character = LocalPlayer.Character
if character then
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = true
part.CanTouch = true
part.CanQuery = true
end
end
end
warn("[NoClip] Выключен (Hold)")
end
end
end
})
AddPlayerAction(SurvivorSide, "Hit Someone", function(players, isAll)
if isAll then
hitPlayer(players)
else
hitPlayer(players)
end
end)
AddDropdown(SurvivorSide, "HealthState", {
{text = "Healthy (2)", value = "2"},
{text = "Injured (1)", value = "1"},
{text = "Dying (0)", value = "0"}
}, function(selectedValue)
setHealthState(selectedValue)
end)
AddKey(SurvivorSide, "Stun Killer", {
mode = "Toggle",
callback = function(state)
-- Включаем/выключаем функцию
stunKillerEnabled = state
-- Если функция включена, применяем стан сразу при нажатии
if state == true then
applyStunKillerNow()
-- Создаем соединение, которое будет применять стан при каждом последующем нажатии бинда
if stunKillerConnection then
stunKillerConnection:Disconnect()
end
-- Соединение для отслеживания нажатий клавиши
local keyPressed = false
stunKillerConnection = UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed or not stunKillerEnabled then return end
-- Получаем текущий бинд из UI элемента (нужно найти его в UI_Elements.Keys)
local elementId = "Stun Killer_Key"
local keyElement = UI_Elements.Keys[elementId]
if keyElement and keyElement.getState then
local state = keyElement.getState()
local currentKey = Enum.KeyCode[state.key]
-- Проверяем, что нажата именно эта клавиша
if input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == currentKey then
if not keyPressed then
keyPressed = true
applyStunKillerNow()
end
end
end
end)
-- Сбрасываем флаг при отпускании клавиши
local keyUpConnection = UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
keyPressed = false
end
end)
-- Сохраняем соединение для очистки
table.insert(stunKillerConnection, keyUpConnection)
else
-- Отключаем соединения при выключении
if stunKillerConnection then
if type(stunKillerConnection) == "table" then
for _, conn in ipairs(stunKillerConnection) do
if conn then
conn:Disconnect()
end
end
else
stunKillerConnection:Disconnect()
end
stunKillerConnection = nil
end
end
end,
onlyToggle = true
})
local KillerSide = AddPanel(R_Right, "Killer Side")
AddOneTimeToggle(KillerSide, "Gate Never Open", function(enabled)
updateGateNeverOpen(enabled)
end)
AddOneTimeToggle(KillerSide, "Never Finish Gens", function(enabled)
updateNeverFinishGens(enabled)
end)
AddPlayerAction(KillerSide, "Hook Someone", function(players, isAll)
if isAll then
hookPlayer(players)
else
hookPlayer(players)
end
end)
AddPlayerAction(KillerSide, "PickUpSomeone", function(players, isAll)
if isAll then
pickupPlayer(players)
else
pickupPlayer(players)
end
end)
AddPlayerAction(KillerSide, "Drop Someone", function(players, isAll)
if isAll then
dropPlayer(players)
else
dropPlayer(players)
end
end)
local LungeToggleEnabled = false
AddToggle(KillerSide, "Custom Lunge Duration", false, function(enabled)
LungeToggleEnabled = enabled
updateLungeDuration(enabled, RageModules.LungeDuration.Value)
end)
AddSlider(KillerSide, "CLD itself", 0.5, 10.0, 0.6, function(value)
RageModules.LungeDuration.Value = value
-- Если тоггл включен, сразу применяем
if LungeToggleEnabled then
updateLungeDuration(true, value)
end
end)
local V_Left, V_Right = CreatePage("VisualsMain")
local SurvivorESP = AddPanel(V_Left, "Survivors ESP")
AddESPToggle(SurvivorESP, "SurvChams", Color3.fromHex("#AFEEEE"), function(enabled, color, outlineColor)
ESPStates.Survivor.Chams = {Enabled = enabled, Color = color, Outline = outlineColor}
updateSurvivorChams(enabled, color, outlineColor)
end)
AddESPToggle(SurvivorESP, "Skeletons", Color3.fromHex("#AFEEEE"), function(enabled, color, outlineColor)
ESPStates.Survivor.Skeleton = {Enabled = enabled, Color = color, Outline = outlineColor}
updateSurvivorSkeleton(enabled, color, outlineColor)
end)
AddESPSizeToggle(SurvivorESP, "Names", Color3.fromHex("#AFEEEE"), function(enabled, color, outlineColor, selectedSize)
ESPStates.Survivor.Names = {Enabled = enabled, Color = color, Outline = outlineColor, Size = selectedSize}
updateSurvivorNames(enabled, color, outlineColor, selectedSize)
end)
AddESPSizeToggle(SurvivorESP, "Distances", Color3.fromHex("#AFEEEE"), function(enabled, color, outlineColor, selectedSize)
ESPStates.Survivor.Distance = {Enabled = enabled, Color = color, Outline = outlineColor, Size = selectedSize}
updateSurvivorDistance(enabled, color, outlineColor, selectedSize)
end)
local KillerESP = AddPanel(V_Left, "Killer ESP")
AddESPToggle(KillerESP, "KillerChams", Color3.fromHex("#A5260A"), function(enabled, color, outlineColor)
ESPStates.Killer.Chams = {Enabled = enabled, Color = color, Outline = outlineColor}
updateKillerChams(enabled, color, outlineColor)
end)
AddESPToggle(KillerESP, "Skeleton", Color3.fromHex("#A5260A"), function(enabled, color, outlineColor)
ESPStates.Killer.Skeleton = {Enabled = enabled, Color = color, Outline = outlineColor}
updateKillerSkeleton(enabled, color, outlineColor)
end)
AddESPSizeToggle(KillerESP, "Name", Color3.fromHex("#A5260A"), function(enabled, color, outlineColor, selectedSize)
ESPStates.Killer.Names = {Enabled = enabled, Color = color, Outline = outlineColor, Size = selectedSize}
updateKillerNames(enabled, color, outlineColor, selectedSize)
end)
AddESPSizeToggle(KillerESP, "Distance", Color3.fromHex("#A5260A"), function(enabled, color, outlineColor, selectedSize)
ESPStates.Killer.Distance = {Enabled = enabled, Color = color, Outline = outlineColor, Size = selectedSize}
updateKillerDistance(enabled, color, outlineColor, selectedSize)
end)
AddESPToggle(KillerESP, "Custom Killerlight", Color3.fromHex("#FF0000"), function(enabled, color, outlineColor)
ESPStates.Killer.Killerlight = {Enabled = enabled, Color = color, Outline = outlineColor}
updateKillerlight(enabled, color, outlineColor)
end)
local ObjectHighlight = AddPanel(V_Right, "Object Highlight")
AddESPToggle(ObjectHighlight, "Chests", Color3.fromHex("#CD5700"), function(enabled, color, outlineColor)
ESPStates.Objects.Chests = {Enabled = enabled, Color = color, Outline = outlineColor}
updateObjectESP("Chests", enabled, color, outlineColor)
end)
AddESPToggle(ObjectHighlight, "Hatch", Color3.fromHex("#7B3F00"), function(enabled, color, outlineColor)
ESPStates.Objects.Hatch = {Enabled = enabled, Color = color, Outline = outlineColor}
updateObjectESP("Hatch", enabled, color, outlineColor)
end)
AddESPToggle(ObjectHighlight, "Lockers", Color3.fromHex("#CD5700"), function(enabled, color, outlineColor)
ESPStates.Objects.Lockers = {Enabled = enabled, Color = color, Outline = outlineColor}
updateObjectESP("Lockers", enabled, color, outlineColor)
end)
AddESPToggle(ObjectHighlight, "Hooks", Color3.fromHex("#A5260A"), function(enabled, color, outlineColor)
ESPStates.Objects.Hooks = {Enabled = enabled, Color = color, Outline = outlineColor}
updateObjectESP("Hooks", enabled, color, outlineColor)
end)
AddESPToggle(ObjectHighlight, "Pallets", Color3.fromHex("#DAD871"), function(enabled, color, outlineColor)
ESPStates.Objects.Pallets = {Enabled = enabled, Color = color, Outline = outlineColor}
updateObjectESP("Pallets", enabled, color, outlineColor)
end)
AddESPToggle(ObjectHighlight, "Windows", Color3.fromHex("#DAD871"), function(enabled, color, outlineColor)
ESPStates.Objects.Windows = {Enabled = enabled, Color = color, Outline = outlineColor}
updateObjectESP("Windows", enabled, color, outlineColor)
end)
AddESPToggle(ObjectHighlight, "Exits", Color3.fromHex("#969696"), function(enabled, color, outlineColor)
ESPStates.Objects.Exits = {Enabled = enabled, Color = color, Outline = outlineColor}
updateObjectESP("Exits", enabled, color, outlineColor)
end)
AddESPToggle(ObjectHighlight, "Totems", Color3.fromHex("#FFFDDF"), function(enabled, color, outlineColor)
ESPStates.Objects.Totems = {Enabled = enabled, Color = color, Outline = outlineColor}
updateObjectESP("Totems", enabled, color, outlineColor)
end)
AddESPToggle(ObjectHighlight, "Generators", Color3.fromHex("#1E1112"), function(enabled, color, outlineColor)
ESPStates.Objects.Generators = {Enabled = enabled, Color = color, Outline = outlineColor}
updateObjectESP("Generators", enabled, color, outlineColor)
end)
AddToggle(ObjectHighlight, "Generators Progress", false, function(enabled)
ESPStates.Objects.GeneratorsProgress = {Enabled = enabled}
updateGeneratorsProgress(enabled)
end)
local VM_Left, VM_Right = CreatePage("VisualsMisc")
local CameraPanel = AddPanel(VM_Left, "Camera")
AddToggle(CameraPanel, "FOV Changer", false, function(state)
updateFOVChanger(state, MiscStates.FOVChanger.Value)
end)
AddSlider(CameraPanel, "FOV", 1, 120, 70, function(value)
MiscStates.FOVChanger.Value = value
if MiscStates.FOVChanger.Enabled then
updateFOVChanger(true, value)
end
end)
AddToggle(CameraPanel, "Custom Aspect Ratio", false, function(state)
updateAspectRatioChanger(state, MiscStates.AspectRatioChanger.Value)
end)
AddSlider(CameraPanel, "CAR itself", 0.25, 1.15, 0.75, function(value)
MiscStates.AspectRatioChanger.Value = value
if MiscStates.AspectRatioChanger.Enabled then
updateAspectRatioChanger(true, value)
end
end)
AddToggle(CameraPanel, "Free Camera (SHIFT + P)", false, function(state)
updateFreeCamera(state)
end)
-- Show Scratch Marks (вкл/выкл)
AddToggle(CameraPanel, "Show SM", false, function(state)
MiscStates.ScratchMarks.Enabled = state
updateScratchMarks(state, MiscStates.ScratchMarks.Color)
end)
-- Выбор цвета следов (используем ESP-стиль, но чекбокс внутри не влияет на включение)
AddESPToggle(CameraPanel, "SM Color", MiscStates.ScratchMarks.Color, function(enabled, color, outline)
MiscStates.ScratchMarks.Color = color
if MiscStates.ScratchMarks.Enabled then
updateScratchMarks(true, color) -- перезапускаем с новым цветом
end
end)
local InterfacesPanel = AddPanel(VM_Left, "Interfaces")
AddToggle(InterfacesPanel, "Show Flash Progress", false, function(state)
updateFlashProgress(state)
end)
local OtherPanel = AddPanel(VM_Right, "Other")
AddToggle(OtherPanel, "Inf Item Charges", false, function(state)
updateInfItemCharges(state)
end)
AddToggle(OtherPanel, "Outfit Changer GUI", false, function(state)
updateOutfitChanger(state)
end)
--//CFG XYETA
local ConfigExtension = ".json"
local ConfigFolder = "Hyperion_Configs"
-- Проверка доступности файловых функций
local function IsFileFunctionsAvailable()
return pcall(function()
return readfile and writefile and delfile and isfile and listfiles
end)
end
-- Создание папки для конфигов
local function EnsureConfigFolder()
if IsFileFunctionsAvailable() then
if not isfolder(ConfigFolder) then
makefolder(ConfigFolder)
end
end
end
-- Получение списка конфигов
local function GetConfigList()
if not IsFileFunctionsAvailable() then
return {"test"}
end
local configs = {}
EnsureConfigFolder()
local success, files = pcall(function()
return listfiles(ConfigFolder)
end)
if success and files then
for _, file in ipairs(files) do
if file:sub(-5):lower() == ".json" then
local fileName = file:match("[^\\/]+$")
table.insert(configs, fileName)
end
end
end
if #configs == 0 then
return {"No configs :P"}
end
return configs
end
-- Сохранение конфига
local function SaveConfig(filename)
if not IsFileFunctionsAvailable() then
warn("File functions not available")
return false
end
local configData = {
version = "1.0",
timestamp = os.time(),
-- Состояния ESP
ESPStates = ESPStates,
-- Состояния Misc
MiscStates = MiscStates,
-- Состояния Rage
RageModules = RageModules,
-- Состояния Legit
LegitStates = {
fixedSpeedEnabled = fixedSpeedEnabled,
fixedSpeedValue = fixedSpeedValue,
vaultSpeedEnabled = vaultSpeedEnabled,
vaultSpeedValue = vaultSpeedValue,
nafEnabled = nafEnabled,
selfCareEnabled = selfCareEnabled,
noCollisionEnabled = noCollisionEnabled,
oldAnimationsEnabled = oldAnimationsEnabled
},
-- Состояния UI элементов
UIStates = {
Toggles = {},
Sliders = {},
Keys = {},
ESPToggles = {},
ESPSizeToggles = {}
}
}
-- Сохраняем состояния UI элементов
for id, element in pairs(UI_Elements.Toggles) do
configData.UIStates.Toggles[id] = element.getState()
end
for id, element in pairs(UI_Elements.Sliders) do
configData.UIStates.Sliders[id] = element.getState()
end
for id, element in pairs(UI_Elements.Keys) do
configData.UIStates.Keys[id] = element.getState()
end
for id, element in pairs(UI_Elements.ESPToggles) do
configData.UIStates.ESPToggles[id] = element.getState()
end
for id, element in pairs(UI_Elements.ESPSizeToggles) do
configData.UIStates.ESPSizeToggles[id] = element.getState()
end
local json = HttpService:JSONEncode(configData)
EnsureConfigFolder()
local filePath = ConfigFolder .. "/" .. filename
local success, err = pcall(function()
writefile(filePath, json)
end)
return success, err
end
-- Загрузка конфига (с правильным порядком)
local function LoadConfig(filename)
if not IsFileFunctionsAvailable() then
warn("File functions not available")
return false
end
local filePath = ConfigFolder .. "/" .. filename
if not isfile(filePath) then
warn("Config file does not exist: " .. filePath)
return false
end
local success, configData = pcall(function()
local json = readfile(filePath)
return HttpService:JSONDecode(json)
end)
if not success or not configData then
warn("Failed to load config")
return false
end
-- Шаг 1: Загружаем ESP состояния (самые важные)
if configData.ESPStates then
for category, values in pairs(configData.ESPStates) do
if ESPStates[category] then
for key, state in pairs(values) do
if ESPStates[category][key] then
for prop, value in pairs(state) do
if typeof(value) == "table" and value.r and value.g and value.b then
ESPStates[category][key][prop] = Color3.new(value.r, value.g, value.b)
else
ESPStates[category][key][prop] = value
end
end
end
end
end
end
end
-- Шаг 2: Загружаем UI элементы
if configData.UIStates then
-- ESP тогглы (должны быть перед применением ESP)
if configData.UIStates.ESPToggles then
for id, state in pairs(configData.UIStates.ESPToggles) do
if UI_Elements.ESPToggles[id] then
UI_Elements.ESPToggles[id].setState(state)
end
end
end
-- ESP Size тогглы
if configData.UIStates.ESPSizeToggles then
for id, state in pairs(configData.UIStates.ESPSizeToggles) do
if UI_Elements.ESPSizeToggles[id] then
UI_Elements.ESPSizeToggles[id].setState(state)
end
end
end
end
-- Шаг 3: Применяем ESP (после загрузки всех настроек ESP)
task.wait(0.01)
for category, states in pairs(ESPStates) do
for name, state in pairs(states) do
if category == "Survivor" then
if name == "Chams" then
updateSurvivorChams(state.Enabled, state.Color, state.Outline)
elseif name == "Skeleton" then
updateSurvivorSkeleton(state.Enabled, state.Color, state.Outline)
elseif name == "Names" then
updateSurvivorNames(state.Enabled, state.Color, state.Outline, state.Size)
elseif name == "Distance" then
updateSurvivorDistance(state.Enabled, state.Color, state.Outline, state.Size)
end
elseif category == "Killer" then
if name == "Chams" then
updateKillerChams(state.Enabled, state.Color, state.Outline)
elseif name == "Skeleton" then
updateKillerSkeleton(state.Enabled, state.Color, state.Outline)
elseif name == "Names" then
updateKillerNames(state.Enabled, state.Color, state.Outline, state.Size)
elseif name == "Distance" then
updateKillerDistance(state.Enabled, state.Color, state.Outline, state.Size)
elseif name == "Killerlight" then
updateKillerlight(state.Enabled, state.Color, state.Outline)
end
elseif category == "Objects" then
if name == "GeneratorsProgress" then
updateGeneratorsProgress(state.Enabled)
else
updateObjectESP(name, state.Enabled, state.Color, state.Outline)
end
end
end
end
-- Шаг 4: Загружаем остальные UI элементы
if configData.UIStates then
-- Тогглы
if configData.UIStates.Toggles then
for id, state in pairs(configData.UIStates.Toggles) do
if UI_Elements.Toggles[id] then
UI_Elements.Toggles[id].setState(state)
end
end
end
-- Слайдеры
if configData.UIStates.Sliders then
for id, state in pairs(configData.UIStates.Sliders) do
if UI_Elements.Sliders[id] then
UI_Elements.Sliders[id].setState(state)
end
end
end
-- Ключи
if configData.UIStates.Keys then
for id, state in pairs(configData.UIStates.Keys) do
if UI_Elements.Keys[id] then
UI_Elements.Keys[id].setState(state)
end
end
end
end
-- Шаг 5: Загружаем Rage состояния
if configData.RageModules then
for name, module in pairs(configData.RageModules) do
if RageModules[name] then
if module.Value then
RageModules[name].Value = module.Value
end
-- Применяем Rage состояния
if name == "BlockHooks" then
updateBlockHooks(module.Enabled)
elseif name == "FinishGens" then
updateFinishGens(module.Enabled)
elseif name == "GateNeverOpen" then
updateGateNeverOpen(module.Enabled)
elseif name == "NeverFinishGens" then
updateNeverFinishGens(module.Enabled)
elseif name == "LungeDuration" then
updateLungeDuration(module.Enabled, module.Value)
end
end
end
end
-- Шаг 6: Загружаем Legit состояния
if configData.LegitStates then
fixedSpeedEnabled = configData.LegitStates.fixedSpeedEnabled or false
fixedSpeedValue = configData.LegitStates.fixedSpeedValue or 15
vaultSpeedEnabled = configData.LegitStates.vaultSpeedEnabled or false
vaultSpeedValue = configData.LegitStates.vaultSpeedValue or 1.0
nafEnabled = configData.LegitStates.nafEnabled or false
selfCareEnabled = configData.LegitStates.selfCareEnabled or false
noCollisionEnabled = configData.LegitStates.noCollisionEnabled or false
oldAnimationsEnabled = configData.LegitStates.oldAnimationsEnabled or false
-- Применяем Legit состояния
updateFixedSpeedChanger(fixedSpeedEnabled, fixedSpeedValue)
updateVaultSpeedChanger(vaultSpeedEnabled, vaultSpeedValue)
updateNAF(nafEnabled)
updateSelfCare(selfCareEnabled)
updateNoCollision(noCollisionEnabled)
updateOldAnimations(oldAnimationsEnabled)
end
-- Шаг 7: Загружаем Misc состояния (кроме FOV и Aspect Ratio)
if configData.MiscStates then
for name, state in pairs(configData.MiscStates) do
if MiscStates[name] then
MiscStates[name] = state
-- Пока не применяем FOV и Aspect Ratio
if name ~= "FOVChanger" and name ~= "AspectRatioChanger" then
if name == "FreeCamera" then
updateFreeCamera(state.Enabled)
elseif name == "FlashProgress" then
updateFlashProgress(state.Enabled)
elseif name == "InfItemCharges" then
updateInfItemCharges(state.Enabled)
elseif name == "OutfitChanger" then
updateOutfitChanger(state.Enabled)
end
end
end
end
end
-- Шаг 8: В САМОМ КОНЦЕ применяем FOV и Aspect Ratio
if configData.MiscStates then
local fovState = configData.MiscStates["FOVChanger"]
local aspectState = configData.MiscStates["AspectRatioChanger"]
if fovState then
task.wait(0.05) -- Небольшая задержка для стабильности
updateFOVChanger(fovState.Enabled, fovState.Value)
end
if aspectState then
task.wait(0.05) -- Небольшая задержка для стабильности
updateAspectRatioChanger(aspectState.Enabled, aspectState.Value)
end
end
return true
end
-- Удаление конфига
local function DeleteConfig(filename)
if not IsFileFunctionsAvailable() then
warn("File functions not available")
return false
end
local filePath = ConfigFolder .. "/" .. filename
if not isfile(filePath) then
warn("Config file does not exist: " .. filePath)
return false
end
local success, err = pcall(function()
delfile(filePath)
end)
return success, err
end
-- Функция для создания UI конфигов
local function AddConfigContent(Parent)
local ConfigUI = {}
-- Основной контейнер
local Container = Create("Frame", {
Parent = Parent,
Size = UDim2.new(1, 0, 0, 0),
BackgroundTransparency = 1,
AutomaticSize = Enum.AutomaticSize.Y,
ZIndex = 1
}, {
Create("UIListLayout", {
SortOrder = Enum.SortOrder.LayoutOrder,
Padding = UDim.new(0, 10),
HorizontalAlignment = Enum.HorizontalAlignment.Center
})
})
-- 1. ШАПКА ВЫПАДАЮЩЕГО СПИСКА
local DropdownOpen = false
local DropdownBtn = Create("TextButton", {
Parent = Container,
BackgroundColor3 = Theme.Input,
Size = UDim2.new(1, 0, 0, 32),
Text = "",
AutoButtonColor = false,
ZIndex = 5,
LayoutOrder = 1
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 6)}),
Create("UIStroke", {Color = Theme.Divider, Thickness = 1})
})
local DropdownLabel = Create("TextLabel", {
Parent = DropdownBtn,
BackgroundTransparency = 1,
Position = UDim2.new(0, 10, 0, 0),
Size = UDim2.new(1, -30, 1, 0),
Font = Enum.Font.Gotham,
Text = "Select Config",
TextColor3 = Theme.SubText,
TextSize = 13,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 6
})
local DropdownArrow = Create("ImageLabel", {
Parent = DropdownBtn,
BackgroundTransparency = 1,
Position = UDim2.new(1, -25, 0.5, -8),
Size = UDim2.new(0, 16, 0, 16),
Image = "rbxassetid://6031091004",
ImageColor3 = Theme.SubText,
ZIndex = 6
})
-- 2. ПЛАВАЮЩИЙ КОНТЕЙНЕР
local FloatingHolder = Create("Frame", {
Parent = Container,
Size = UDim2.new(1, 0, 0, 0),
BackgroundTransparency = 1,
ClipsDescendants = false,
ZIndex = 50,
LayoutOrder = 2
})
local ListStroke = Create("UIStroke", {
Color = Theme.Divider,
Thickness = 1,
Transparency = 1
})
local DropdownList = Create("ScrollingFrame", {
Parent = FloatingHolder,
BackgroundColor3 = Theme.Input,
Position = UDim2.new(0, 0, 0, 5),
Size = UDim2.new(1, 0, 0, 0),
ScrollBarThickness = 2,
ScrollBarImageTransparency = 1,
BorderSizePixel = 0,
ZIndex = 51,
ClipsDescendants = true,
CanvasSize = UDim2.new(0, 0, 0, 0)
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 6)}),
ListStroke,
Create("UIListLayout", {
SortOrder = Enum.SortOrder.LayoutOrder,
Padding = UDim.new(0, 2)
})
})
-- 3. ПОЛЕ ВВОДА
local Input = Create("TextBox", {
Parent = Container,
BackgroundColor3 = Theme.Input,
Size = UDim2.new(1, 0, 0, 32),
Text = "",
PlaceholderText = "Config name..." .. ConfigExtension,
TextColor3 = Theme.Text,
PlaceholderColor3 = Theme.SubText,
Font = Enum.Font.Gotham,
TextSize = 13,
TextXAlignment = Enum.TextXAlignment.Left,
ClearTextOnFocus = false,
LayoutOrder = 3,
ZIndex = 1
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 6)}),
Create("UIStroke", {Color = Theme.Divider, Thickness = 1}),
Create("UIPadding", {PaddingLeft = UDim.new(0, 10)})
})
-- Логика ввода
Input:GetPropertyChangedSignal("Text"):Connect(function()
local text = Input.Text
if text:sub(-5):lower() ~= ConfigExtension then
local cleanText = text:gsub(ConfigExtension, "")
if #cleanText > 20 then
cleanText = cleanText:sub(1, 20)
end
Input.Text = cleanText .. ConfigExtension
Input.CursorPosition = #cleanText + 1
else
local cleanText = text:gsub(ConfigExtension, "")
if #cleanText > 20 then
cleanText = cleanText:sub(1, 20)
Input.Text = cleanText .. ConfigExtension
Input.CursorPosition = #cleanText + 1
end
end
end)
-- 4. КНОПКИ
local BtnContainer = Create("Frame", {
Parent = Container,
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 0, 32),
LayoutOrder = 4,
ZIndex = 1
}, {
Create("UIListLayout", {
FillDirection = Enum.FillDirection.Horizontal,
Padding = UDim.new(0, 6),
HorizontalAlignment = Enum.HorizontalAlignment.Center
})
})
local function AddSmallBtn(text, color)
local btn = Create("TextButton", {
Parent = BtnContainer,
BackgroundColor3 = Theme.Input,
Size = UDim2.new(0.31, 0, 1, 0),
Text = text,
Font = Enum.Font.GothamBold,
TextColor3 = color,
TextSize = 12,
AutoButtonColor = false,
ZIndex = 1
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 6)}),
Create("UIStroke", {Color = Theme.Divider, Thickness = 1})
})
btn.MouseEnter:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.2), {
BackgroundColor3 = Theme.Sidebar
}):Play()
end)
btn.MouseLeave:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.2), {
BackgroundColor3 = Theme.Input
}):Play()
end)
return btn
end
ConfigUI.SaveBtn = AddSmallBtn("Save", Theme.Accent)
ConfigUI.LoadBtn = AddSmallBtn("Load", Theme.Text)
ConfigUI.DeleteBtn = AddSmallBtn("Delete", Color3.fromRGB(240, 70, 70))
ConfigUI.Input = Input
-- ЛОГИКА АНИМАЦИЙ
local function ToggleDropdown(shouldOpen)
DropdownOpen = shouldOpen
local itemCount = #DropdownList:GetChildren() - 3
local contentHeight = math.clamp(itemCount * 30, 0, 150)
if shouldOpen then
DropdownList.Visible = true
TweenService:Create(DropdownArrow, TweenInfo.new(0.4, Enum.EasingStyle.Quart), {
Rotation = 180
}):Play()
TweenService:Create(DropdownList, TweenInfo.new(0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
Size = UDim2.new(1, 0, 0, contentHeight)
}):Play()
TweenService:Create(ListStroke, TweenInfo.new(0.2), {
Transparency = 0
}):Play()
else
TweenService:Create(DropdownArrow, TweenInfo.new(0.4, Enum.EasingStyle.Quart), {
Rotation = 0
}):Play()
TweenService:Create(ListStroke, TweenInfo.new(0.1), {
Transparency = 1
}):Play()
local closeTween = TweenService:Create(DropdownList, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
Size = UDim2.new(1, 0, 0, 0)
})
closeTween:Play()
closeTween.Completed:Connect(function()
if not DropdownOpen then
DropdownList.Visible = false
end
end)
end
end
local function UpdateList()
for _, v in pairs(DropdownList:GetChildren()) do
if v:IsA("TextButton") then
v:Destroy()
end
end
local configs = GetConfigList()
for _, name in ipairs(configs) do
local item = Create("TextButton", {
Parent = DropdownList,
BackgroundTransparency = 1,
BackgroundColor3 = Theme.Sidebar,
Size = UDim2.new(1, 0, 0, 28),
Text = " " .. name,
Font = Enum.Font.Gotham,
TextColor3 = Theme.SubText,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left,
AutoButtonColor = false,
ZIndex = 52
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 4)})
})
item.MouseEnter:Connect(function()
TweenService:Create(item, TweenInfo.new(0.2), {
BackgroundTransparency = 0.5,
TextColor3 = Theme.Text
}):Play()
end)
item.MouseLeave:Connect(function()
TweenService:Create(item, TweenInfo.new(0.2), {
BackgroundTransparency = 1,
TextColor3 = Theme.SubText
}):Play()
end)
item.MouseButton1Click:Connect(function()
Input.Text = name
DropdownLabel.Text = name
DropdownLabel.TextColor3 = Theme.Text
ToggleDropdown(false)
end)
end
DropdownList.CanvasSize = UDim2.new(0, 0, 0, #configs * 30)
end
DropdownBtn.MouseButton1Click:Connect(function()
if not DropdownOpen then
UpdateList()
end
ToggleDropdown(not DropdownOpen)
end)
-- Кнопки действий
ConfigUI.SaveBtn.MouseButton1Click:Connect(function()
local filename = Input.Text
if filename == "" or filename == ConfigExtension then
warn("Please enter a valid config name")
return
end
if not filename:sub(-5):lower() == ConfigExtension then
filename = filename .. ConfigExtension
end
local success, err = SaveConfig(filename)
if success then
warn("Config saved: " .. filename)
UpdateList()
else
warn("Failed to save config: " .. tostring(err))
end
end)
ConfigUI.LoadBtn.MouseButton1Click:Connect(function()
local filename = Input.Text
if filename == "" then
warn("Please select a config")
return
end
if not filename:sub(-5):lower() == ConfigExtension then
filename = filename .. ConfigExtension
end
local success = LoadConfig(filename)
if success then
warn("Config loaded: " .. filename)
else
warn("Failed to load config")
end
end)
ConfigUI.DeleteBtn.MouseButton1Click:Connect(function()
local filename = Input.Text
if filename == "" then
warn("Please select a config")
return
end
if not filename:sub(-5):lower() == ConfigExtension then
filename = filename .. ConfigExtension
end
local success, err = DeleteConfig(filename)
if success then
warn("Config deleted: " .. filename)
Input.Text = ""
DropdownLabel.Text = "Select Config"
DropdownLabel.TextColor3 = Theme.SubText
UpdateList()
else
warn("Failed to delete config: " .. tostring(err))
end
end)
-- Инициализация
UpdateList()
return ConfigUI
end
--//CFG TAB XYETA
local C_Left, C_Right = CreatePage("Configs")
local ConfigManagerPanel = AddPanel(C_Left, "Manager")
AddConfigContent(ConfigManagerPanel)
--//XZ
SwitchTab("Main")
--//ESP CLEANER AFTER PLAYER LEFT XYETA
Players.PlayerRemoving:Connect(function(player)
-- Удаляем линии скелета
for key, line in pairs(ESPModules.Killer.Skeleton.Lines) do
if string.find(key, player.Name) == 1 then
line:Destroy()
ESPModules.Killer.Skeleton.Lines[key] = nil
end
end
for key, line in pairs(ESPModules.Survivor.Skeleton.Lines) do
if string.find(key, player.Name) == 1 then
line:Destroy()
ESPModules.Survivor.Skeleton.Lines[key] = nil
end
end
-- Удаляем метки имен
if ESPModules.Killer.Names.Labels[player] then
ESPModules.Killer.Names.Labels[player]:Destroy()
ESPModules.Killer.Names.Labels[player] = nil
end
if ESPModules.Survivor.Names.Labels[player] then
ESPModules.Survivor.Names.Labels[player]:Destroy()
ESPModules.Survivor.Names.Labels[player] = nil
end
-- Удаляем метки дистанции
if ESPModules.Killer.Distance.Labels[player] then
ESPModules.Killer.Distance.Labels[player]:Destroy()
ESPModules.Killer.Distance.Labels[player] = nil
end
if ESPModules.Survivor.Distance.Labels[player] then
ESPModules.Survivor.Distance.Labels[player]:Destroy()
ESPModules.Survivor.Distance.Labels[player] = nil
end
-- Удаляем Chams highlights
for i, highlight in pairs(ESPModules.Killer.Chams.Highlights) do
if highlight and highlight.Adornee and highlight.Adornee:IsDescendantOf(player) then
highlight:Destroy()
ESPModules.Killer.Chams.Highlights[i] = nil
end
end
for i, highlight in pairs(ESPModules.Survivor.Chams.Highlights) do
if highlight and highlight.Adornee and highlight.Adornee:IsDescendantOf(player) then
highlight:Destroy()
ESPModules.Survivor.Chams.Highlights[i] = nil
end
end
end)
--//MENU XYETA
task.spawn(function()
repeat task.wait() until LocalPlayer and LocalPlayer.DisplayName ~= nil
local userId = LocalPlayer.UserId
local thumbType = Enum.ThumbnailType.HeadShot
local thumbSize = Enum.ThumbnailSize.Size420x420
local success, content = pcall(function() return Players:GetUserThumbnailAsync(userId, thumbType, thumbSize) end)
if not success then content = "rbxasset://textures/ui/GuiImagePlaceholder.png" end
local displayName = LocalPlayer.DisplayName or LocalPlayer.Name
Create("Frame", {
Parent = Sidebar, BackgroundColor3 = Theme.Input, Size = UDim2.new(0, 160, 0, 50),
Position = UDim2.new(0, 10, 1, -70), ZIndex = 10
}, {
Create("UICorner", {CornerRadius = UDim.new(0, 8)}),
Create("ImageLabel", { Name = "AvatarImage", BackgroundColor3 = Theme.Divider, Image = content, Position = UDim2.new(0, 5, 0, 5), Size = UDim2.fromOffset(40, 40), ZIndex = 11 }, { Create("UICorner", {CornerRadius = UDim.new(0, 6)}), Create("UIStroke", {Color = Theme.Accent, Thickness = 1}) }),
Create("TextLabel", { BackgroundTransparency = 1, Position = UDim2.new(0, 55, 0, 5), Size = UDim2.new(0, 95, 0, 20), Font = Enum.Font.GothamBold, Text = displayName, TextColor3 = Theme.Text, TextSize = 14, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = Enum.TextTruncate.AtEnd, ZIndex = 11 }),
Create("TextLabel", { BackgroundTransparency = 1, Position = UDim2.new(0, 55, 0, 25), Size = UDim2.new(0, 95, 0, 20), Font = Enum.Font.Gotham, Text = "Member", TextColor3 = Theme.SubText, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, ZIndex = 11 })
})
end)
--// FIXED: MENU ANIMATION & CANVASGROUP TRANSPARENCY
local IsVisible = true
local ActiveTween = nil
local function ToggleMenu(state)
if ActiveTween then ActiveTween:Cancel() end
if state then
-- СОХРАНЯЕМ И РАЗБЛОКИРУЕМ КУРСОР (поведение + иконка)
LastMouseBehavior = UserInputService.MouseBehavior
LastMouseIconEnabled = UserInputService.MouseIconEnabled
UserInputService.MouseBehavior = Enum.MouseBehavior.Default
UserInputService.MouseIconEnabled = true
Main.Visible = true
-- Только изменение прозрачности, размер не трогаем (он фиксирован после интро)
ActiveTween = TweenService:Create(Main, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
GroupTransparency = 0 -- 0 = полностью видимо
})
ActiveTween:Play()
else
-- ВОЗВРАЩАЕМ КУРСОР В ПРЕДЫДУЩЕЕ СОСТОЯНИЕ
UserInputService.MouseBehavior = LastMouseBehavior
UserInputService.MouseIconEnabled = LastMouseIconEnabled
ActiveTween = TweenService:Create(Main, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
GroupTransparency = 1 -- 1 = полностью невидимо
})
ActiveTween:Play()
ActiveTween.Completed:Connect(function(status)
if status == Enum.PlaybackState.Completed and not IsVisible then
Main.Visible = false
end
end)
end
end
UserInputService.InputBegan:Connect(function(input, gpe)
if input.KeyCode == Enum.KeyCode.RightShift then
IsVisible = not IsVisible
ToggleMenu(IsVisible)
end
end)
--//INTRO XYETA
LastMouseBehavior = UserInputService.MouseBehavior
LastMouseIconEnabled = UserInputService.MouseIconEnabled
UserInputService.MouseBehavior = Enum.MouseBehavior.Default
UserInputService.MouseIconEnabled = true
Main.Size = UDim2.new(0, 750, 0, 0)
Main.Visible = true
TweenService:Create(Main, TweenInfo.new(0.6, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
Size = UDim2.fromOffset(750, 550),
GroupTransparency = 0
}):Play()
easy crack by me
F🥀