
Key Required

local repo = "https://raw.githubusercontent.com/deividcomsono/Obsidian/main/"
local success, Library = pcall(function()
return loadstring(game:HttpGet(repo .. "Library.lua"))()
end)
if not success then
error("Не удалось загрузить библиотеку!")
end
local ThemeManager = loadstring(game:HttpGet(repo .. "addons/ThemeManager.lua"))()
local SaveManager = loadstring(game:HttpGet(repo .. "addons/SaveManager.lua"))()
local Options = Library.Options
local Toggles = Library.Toggles
Library.ForceCheckbox = false
Library.ShowToggleFrameInKeybinds = true
local Players = game:GetService("Players")
local VirtualInputManager = game:GetService("VirtualInputManager")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local HttpService = game:GetService("HttpService")
local player = Players.LocalPlayer
_G.AutoFarmRunning = false
_G.AutoFarmTask = nil
_G.Flying = false
_G.FlySpeed = 50
_G.NoClipEnabled = false
_G.FlyBodyVelocity = nil
_G.NoClipConnection = nil
_G.InfJumpEnabled = false
_G.FarmFlySpeed = 50
_G.AimSmoothness = 0.3
_G.ESPRunning = false
_G.ESPConnection = nil
_G.ESPObjects = {}
_G.EnemyESPRunning = false
_G.EnemyESPConnection = nil
_G.EnemyESPObjects = {}
_G.PlayerESPRunning = false
_G.PlayerESPConnection = nil
_G.PlayerESPObjects = {}
_G.HitboxMultiplier = 5
_G.HitboxEnabled = false
_G.HitboxConnection = nil
_G.OriginalHitboxSizes = {}
_G.ShowHeadHitboxEnabled = false
_G.HeadHitboxConnection = nil
_G.HeadHitboxParts = {}
_G.Invisible = false
_G.InvisibilityConnection = nil
_G.SpeedLoop = nil
_G.Waypoints = {}
_G.SelectedWaypoint = nil
_G.KnownEnemies = {
"Zombie",
"ArcticZombie",
"Headless Zombie",
"Infected Zombie",
"Mutant Zombie",
"Radioactive Zombie",
"Others Enemy"
}
_G.SelectedEnemies = {}
for _, enemyName in pairs(_G.KnownEnemies) do
_G.SelectedEnemies[enemyName] = true
end
_G.AvailableObjects = {
"BlueberryBush",
"Coal",
"CommonLoot",
"CopperOre",
"IronOre",
"MedicalLoot",
"Palm1",
"Palm2",
"Palm3",
"PotatoPlant",
"PresentLoot",
"RareLoot",
"Sandstone",
"Stone",
"StrawberryBush",
"Tree1",
"Tree2",
"Tree3",
"Tree4",
"Tree5",
"UncommonLoot"
}
_G.SelectedObjects = {}
for _, objName in pairs(_G.AvailableObjects) do
_G.SelectedObjects[objName] = true
end
local BRIGHT_PURPLE_COLOR = Color3.fromRGB(200, 0, 255)
_G.ESPColors = {
["BlueberryBush"] = Color3.fromRGB(0, 100, 255),
["Coal"] = Color3.fromRGB(30, 30, 30),
["CommonLoot"] = Color3.fromRGB(255, 255, 255),
["CopperOre"] = Color3.fromRGB(184, 115, 51),
["IronOre"] = Color3.fromRGB(150, 150, 150),
["MedicalLoot"] = Color3.fromRGB(255, 0, 0),
["Palm1"] = Color3.fromRGB(34, 139, 34),
["Palm2"] = Color3.fromRGB(0, 100, 0),
["Palm3"] = Color3.fromRGB(0, 80, 0),
["PotatoPlant"] = Color3.fromRGB(139, 69, 19),
["PresentLoot"] = Color3.fromRGB(255, 215, 0),
["RareLoot"] = Color3.fromRGB(0, 255, 255),
["Sandstone"] = Color3.fromRGB(210, 180, 140),
["Stone"] = Color3.fromRGB(128, 128, 128),
["StrawberryBush"] = Color3.fromRGB(255, 0, 0),
["Tree1"] = Color3.fromRGB(85, 107, 47),
["Tree2"] = Color3.fromRGB(107, 142, 35),
["Tree3"] = Color3.fromRGB(124, 252, 0),
["Tree4"] = Color3.fromRGB(173, 255, 47),
["Tree5"] = Color3.fromRGB(154, 205, 50),
["UncommonLoot"] = Color3.fromRGB(0, 255, 0),
["Zombie"] = Color3.fromRGB(255, 100, 100),
["ArcticZombie"] = Color3.fromRGB(100, 200, 255),
["Headless Zombie"] = Color3.fromRGB(255, 150, 50),
["Infected Zombie"] = Color3.fromRGB(100, 255, 100),
["Mutant Zombie"] = Color3.fromRGB(255, 50, 200),
["Radioactive Zombie"] = Color3.fromRGB(50, 255, 50),
["Others Enemy"] = Color3.fromRGB(255, 50, 50),
["Boss"] = Color3.fromRGB(255, 0, 0),
["Player"] = Color3.fromRGB(0, 200, 255),
}
local function startSpeedLoop()
if _G.SpeedLoop then return end
_G.SpeedLoop = RunService.Heartbeat:Connect(function()
if not Toggles.SpeedToggle or not Toggles.SpeedToggle.Value then
_G.SpeedLoop:Disconnect()
_G.SpeedLoop = nil
return
end
local character = player.Character
if not character then return end
local humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid then return end
local speed = Options.SpeedValue and Options.SpeedValue.Value or 50
humanoid.WalkSpeed = speed
end)
end
local function disableCameraShake()
local camera = workspace.CurrentCamera
if not camera then return end
for _, child in pairs(camera:GetChildren()) do
if child:IsA("Camera") or child:IsA("Script") then
local success, result = pcall(function()
if child.Name:lower():find("shake") or child.Name:lower():find("camera") then
child:Destroy()
end
end)
end
end
camera.CameraType = Enum.CameraType.Custom
end
local function getEnemyType(enemyName)
for _, knownEnemy in pairs(_G.KnownEnemies) do
if string.find(enemyName, knownEnemy) or enemyName == knownEnemy then
if knownEnemy == "Others Enemy" then
return "Others Enemy", enemyName
end
return knownEnemy, nil
end
end
if string.find(enemyName, "Arctic") then
return "ArcticZombie", nil
elseif string.find(enemyName, "Mutant") then
return "Mutant Zombie", nil
elseif string.find(enemyName, "Headless") then
return "Headless Zombie", nil
elseif string.find(enemyName, "Infected") then
return "Infected Zombie", nil
elseif string.find(enemyName, "Radioactive") then
return "Radioactive Zombie", nil
elseif string.find(enemyName, "Zombie") then
return "Zombie", nil
elseif string.find(enemyName, "Boss") then
return "Boss", nil
else
return "Others Enemy", enemyName
end
end
local function createHeadHitbox(enemy)
if not enemy or not enemy:IsA("Model") then return nil end
local head = enemy:FindFirstChild("Head")
if not head or not head:IsA("BasePart") then return nil end
local hitboxPart = Instance.new("Part")
hitboxPart.Name = "BeautifulHeadHitbox"
hitboxPart.Size = head.Size * 1.1
hitboxPart.CFrame = head.CFrame
hitboxPart.Transparency = 0.85
hitboxPart.CanCollide = false
hitboxPart.Anchored = true
hitboxPart.CastShadow = false
hitboxPart.Locked = true
hitboxPart.Color = BRIGHT_PURPLE_COLOR
local glow = Instance.new("PointLight")
glow.Name = "HitboxGlow"
glow.Color = BRIGHT_PURPLE_COLOR
glow.Brightness = 2
glow.Range = 10
glow.Shadows = false
glow.Parent = hitboxPart
local highlight = Instance.new("SelectionBox")
highlight.Name = "HitboxOutline"
highlight.Adornee = hitboxPart
highlight.LineThickness = 0.05
highlight.Color3 = BRIGHT_PURPLE_COLOR
highlight.Transparency = 0.3
highlight.Parent = hitboxPart
_G.HeadHitboxParts[enemy] = {
part = hitboxPart,
head = head,
enemy = enemy
}
hitboxPart.Parent = workspace
return hitboxPart
end
local function updateHeadHitbox(hitboxData)
if not hitboxData or not hitboxData.part or not hitboxData.head then return end
hitboxData.part.CFrame = hitboxData.head.CFrame
hitboxData.part.Size = hitboxData.head.Size * 1.1
end
local function removeHeadHitbox(hitboxData)
if hitboxData and hitboxData.part then
hitboxData.part:Destroy()
end
end
local function toggleShowHeadHitbox()
if _G.ShowHeadHitboxEnabled then
_G.ShowHeadHitboxEnabled = false
for enemy, hitboxData in pairs(_G.HeadHitboxParts) do
removeHeadHitbox(hitboxData)
end
_G.HeadHitboxParts = {}
if _G.HeadHitboxConnection then
_G.HeadHitboxConnection:Disconnect()
_G.HeadHitboxConnection = nil
end
Library:Notify("Красивые хитбоксы отключены", 3)
return
end
_G.ShowHeadHitboxEnabled = true
local function createHitboxesForExistingEnemies()
local enemiesFolder = workspace:FindFirstChild("Enemies")
if not enemiesFolder then return end
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if enemy:IsA("Model") then
createHeadHitbox(enemy)
end
end
end
local function onEnemyAdded(child)
if not _G.ShowHeadHitboxEnabled then return end
task.wait(0.1)
if child:IsA("Model") then
createHeadHitbox(child)
end
end
local function onEnemyRemoved(child)
if _G.HeadHitboxParts[child] then
removeHeadHitbox(_G.HeadHitboxParts[child])
_G.HeadHitboxParts[child] = nil
end
end
local enemiesFolder = workspace:FindFirstChild("Enemies")
if enemiesFolder then
createHitboxesForExistingEnemies()
_G.HeadHitboxConnection = enemiesFolder.ChildAdded:Connect(onEnemyAdded)
enemiesFolder.ChildRemoved:Connect(onEnemyRemoved)
end
local updateConnection
updateConnection = RunService.RenderStepped:Connect(function()
if not _G.ShowHeadHitboxEnabled then
updateConnection:Disconnect()
return
end
for enemy, hitboxData in pairs(_G.HeadHitboxParts) do
if enemy and enemy.Parent and enemy.Parent == workspace.Enemies then
updateHeadHitbox(hitboxData)
else
removeHeadHitbox(hitboxData)
_G.HeadHitboxParts[enemy] = nil
end
end
end)
Library:Notify("Красивые фиолетовые хитбоксы включены", 3)
end
local function applyHitboxToEnemy(enemy, multiplier)
if enemy and enemy:IsA("Model") then
local head = enemy:FindFirstChild("Head")
if head and head:IsA("BasePart") then
if not _G.OriginalHitboxSizes[enemy] then
_G.OriginalHitboxSizes[enemy] = head.Size
end
local originalSize = _G.OriginalHitboxSizes[enemy]
local baseSize = math.min(originalSize.X, originalSize.Y, originalSize.Z)
local uniformSize = baseSize * multiplier
head.Size = Vector3.new(uniformSize, uniformSize, uniformSize)
end
end
end
local function updateAllHitboxes(multiplier)
_G.HitboxMultiplier = multiplier
local enemiesFolder = workspace:FindFirstChild("Enemies")
if not enemiesFolder then return end
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
applyHitboxToEnemy(enemy, multiplier)
end
end
local function resetEnemyHitboxes()
local enemiesFolder = workspace:FindFirstChild("Enemies")
if not enemiesFolder then return end
for enemy, originalSize in pairs(_G.OriginalHitboxSizes) do
if enemy and enemy.Parent and enemy.Parent == enemiesFolder then
local head = enemy:FindFirstChild("Head")
if head and head:IsA("BasePart") then
head.Size = originalSize
end
end
end
_G.OriginalHitboxSizes = {}
end
local function toggleHitbox()
if _G.HitboxEnabled then
_G.HitboxEnabled = false
if _G.HitboxConnection then
_G.HitboxConnection:Disconnect()
_G.HitboxConnection = nil
end
resetEnemyHitboxes()
Library:Notify("Авто-хитбокс отключен", 3)
return
end
_G.HitboxEnabled = true
local multiplier = Options.HitboxMultiplier and Options.HitboxMultiplier.Value or 5
updateAllHitboxes(multiplier)
local function onEnemyAdded(child)
if not _G.HitboxEnabled then return end
task.wait(0.1)
if child:IsA("Model") then
local multiplier = Options.HitboxMultiplier and Options.HitboxMultiplier.Value or 5
applyHitboxToEnemy(child, multiplier)
end
end
local enemiesFolder = workspace:FindFirstChild("Enemies")
if enemiesFolder then
_G.HitboxConnection = enemiesFolder.ChildAdded:Connect(onEnemyAdded)
end
Library:Notify("Авто-хитбокс включен", 3)
end
local function toggleInvisible()
if _G.Invisible then
_G.Invisible = false
if _G.InvisibilityConnection then
_G.InvisibilityConnection:Disconnect()
_G.InvisibilityConnection = nil
end
local character = player.Character
if character then
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.Transparency = 0
if part:FindFirstChild("OriginalTransparency") then
part.Transparency = part.OriginalTransparency.Value
part.OriginalTransparency:Destroy()
end
end
end
end
Library:Notify("Невидимость отключена", 3)
return
end
_G.Invisible = true
local function updateInvisibility()
local character = player.Character
if not character then return end
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") then
if not part:FindFirstChild("OriginalTransparency") then
local originalValue = Instance.new("NumberValue")
originalValue.Name = "OriginalTransparency"
originalValue.Value = part.Transparency
originalValue.Parent = part
end
part.Transparency = 1
end
end
end
updateInvisibility()
_G.InvisibilityConnection = RunService.Heartbeat:Connect(function()
if not _G.Invisible then
_G.InvisibilityConnection:Disconnect()
_G.InvisibilityConnection = nil
return
end
updateInvisibility()
end)
player.CharacterAdded:Connect(function()
if _G.Invisible then
task.wait(1)
updateInvisibility()
end
end)
Library:Notify("Невидимость включена", 3)
end
local function createESP(obj, isEnemy, isPlayer, enemyType, customName, playerName)
if not obj or not obj:IsDescendantOf(workspace) then return nil end
local esp = {}
if isEnemy and not enemyType then
enemyType, customName = getEnemyType(obj.Name)
end
if isEnemy and enemyType and not _G.SelectedEnemies[enemyType] then
return nil
end
local billboard = Instance.new("BillboardGui")
billboard.Name = "ESPBillboard"
billboard.Adornee = obj:IsA("BasePart") and obj or obj:FindFirstChildWhichIsA("BasePart")
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.StudsOffset = Vector3.new(0, 3, 0)
billboard.AlwaysOnTop = true
billboard.MaxDistance = 1000
billboard.ResetOnSpawn = false
local displayText = ""
if isPlayer then
displayText = playerName or "Player"
elseif isEnemy then
if enemyType == "Others Enemy" and customName then
displayText = customName
else
displayText = enemyType or obj.Name
end
else
displayText = obj.Name
end
local textLabel = Instance.new("TextLabel")
textLabel.Name = "ESPLabel"
textLabel.Size = UDim2.new(1, 0, 0.5, 0)
textLabel.Position = UDim2.new(0, 0, 0, 0)
textLabel.BackgroundTransparency = 1
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.TextStrokeColor3 = Color3.new(0, 0, 0)
textLabel.Font = Enum.Font.SourceSansBold
textLabel.TextSize = 18
textLabel.Text = displayText
textLabel.Parent = billboard
local distanceLabel = Instance.new("TextLabel")
distanceLabel.Name = "ESPDistance"
distanceLabel.Size = UDim2.new(1, 0, 0.5, 0)
distanceLabel.Position = UDim2.new(0, 0, 0.5, 0)
distanceLabel.BackgroundTransparency = 1
distanceLabel.TextColor3 = Color3.new(1, 1, 1)
distanceLabel.TextStrokeTransparency = 0
distanceLabel.TextStrokeColor3 = Color3.new(0, 0, 0)
distanceLabel.Font = Enum.Font.SourceSansBold
distanceLabel.TextSize = 16
distanceLabel.Text = "0 studs"
distanceLabel.Parent = billboard
local highlight = Instance.new("Highlight")
highlight.Name = "ESPHighlight"
highlight.FillTransparency = 0.8
highlight.OutlineTransparency = 0
highlight.OutlineColor = Color3.new(1, 1, 1)
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Adornee = obj
local color
if isPlayer then
color = _G.ESPColors["Player"]
elseif isEnemy then
color = _G.ESPColors[enemyType] or _G.ESPColors["Others Enemy"]
else
color = _G.ESPColors[obj.Name] or Color3.new(1, 1, 1)
end
highlight.FillColor = color
highlight.OutlineColor = color
textLabel.TextColor3 = color
distanceLabel.TextColor3 = color
esp.billboard = billboard
esp.highlight = highlight
esp.object = obj
esp.isEnemy = isEnemy
esp.isPlayer = isPlayer
esp.enemyType = enemyType
if obj:IsA("Model") then
if obj.PrimaryPart then
billboard.Adornee = obj.PrimaryPart
highlight.Adornee = obj
else
local part = obj:FindFirstChildWhichIsA("BasePart")
if part then
billboard.Adornee = part
highlight.Adornee = obj
else
billboard:Destroy()
highlight:Destroy()
return nil
end
end
end
billboard.Parent = game:GetService("CoreGui")
highlight.Parent = game:GetService("CoreGui")
return esp
end
local function updateESP(espTable)
if not espTable or not espTable.billboard or not espTable.billboard.Parent then return end
local character = player.Character
if not character then return end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return end
local targetPart = espTable.billboard.Adornee
if not targetPart or not targetPart.Parent then return end
local distance = (humanoidRootPart.Position - targetPart.Position).Magnitude
espTable.billboard.ESPDistance.Text = math.floor(distance) .. " studs"
local maxDistance = espTable.isEnemy and 500 or 300
if espTable.isPlayer then
maxDistance = 1000
end
espTable.billboard.Enabled = distance <= maxDistance
espTable.highlight.Enabled = distance <= maxDistance
end
local function removeESP(espTable)
if espTable then
if espTable.billboard then
espTable.billboard:Destroy()
end
if espTable.highlight then
espTable.highlight:Destroy()
end
end
end
local function refreshEnemyESP()
if not _G.EnemyESPRunning then return end
for enemy, esp in pairs(_G.EnemyESPObjects) do
removeESP(esp)
end
_G.EnemyESPObjects = {}
local enemiesFolder = workspace:FindFirstChild("Enemies")
if enemiesFolder then
for _, enemy in ipairs(enemiesFolder:GetChildren()) do
if enemy:IsA("BasePart") or enemy:IsA("Model") then
local enemyType, customName = getEnemyType(enemy.Name)
if _G.SelectedEnemies[enemyType] then
local esp = createESP(enemy, true, false, enemyType, customName)
if esp then
_G.EnemyESPObjects[enemy] = esp
end
end
end
end
end
end
local function refreshResourceESP()
if not _G.ESPRunning then return end
for obj, esp in pairs(_G.ESPObjects) do
removeESP(esp)
end
_G.ESPObjects = {}
local spawnedFolder = workspace:FindFirstChild("Spawned")
if spawnedFolder then
for _, obj in ipairs(spawnedFolder:GetChildren()) do
if obj:IsA("BasePart") or obj:IsA("Model") then
if _G.SelectedObjects[obj.Name] then
local esp = createESP(obj, false, false)
if esp then
_G.ESPObjects[obj] = esp
end
end
end
end
end
end
local function refreshPlayerESP()
if not _G.PlayerESPRunning then return end
for plyr, esp in pairs(_G.PlayerESPObjects) do
removeESP(esp)
end
_G.PlayerESPObjects = {}
for _, otherPlayer in ipairs(Players:GetPlayers()) do
if otherPlayer ~= player and otherPlayer.Character then
local character = otherPlayer.Character
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if humanoidRootPart then
local esp = createESP(character, false, true, nil, nil, otherPlayer.Name)
if esp then
_G.PlayerESPObjects[otherPlayer] = esp
end
end
end
end
end
local function toggleAllResources(value)
for _, objName in pairs(_G.AvailableObjects) do
_G.SelectedObjects[objName] = value
if Toggles["ResourceESP_" .. objName] then
Toggles["ResourceESP_" .. objName]:SetValue(value)
end
end
if _G.ESPRunning then
refreshResourceESP()
end
end
local function toggleAllEnemies(value)
for _, enemyName in pairs(_G.KnownEnemies) do
_G.SelectedEnemies[enemyName] = value
if Toggles["EnemyESP_" .. enemyName] then
Toggles["EnemyESP_" .. enemyName]:SetValue(value)
end
end
if _G.EnemyESPRunning then
refreshEnemyESP()
end
end
local function simulateClick()
local mouse = player:GetMouse()
local screenCenter = Vector2.new(mouse.ViewSizeX / 2, mouse.ViewSizeY / 2)
if VirtualInputManager then
VirtualInputManager:SendMouseButtonEvent(
screenCenter.X,
screenCenter.Y,
0,
true,
game,
1
)
task.wait(0.05)
VirtualInputManager:SendMouseButtonEvent(
screenCenter.X,
screenCenter.Y,
0,
false,
game,
1
)
end
end
local function setupClickTP()
local mouse = player:GetMouse()
mouse.Button1Down:Connect(function()
if Toggles.ClickTPToggle and Toggles.ClickTPToggle.Value then
local character = player.Character
if not character then return end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return end
local target = mouse.Hit.Position
humanoidRootPart.CFrame = CFrame.new(target + Vector3.new(0, 5, 0))
end
end)
end
local function smoothAimAtObject(objPosition)
if not objPosition then return end
local camera = workspace.CurrentCamera
if not camera then return end
local character = player.Character
if not character then return end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return end
local currentLookVector = camera.CFrame.LookVector
local directionToTarget = (objPosition - camera.CFrame.Position).Unit
local smoothFactor = math.clamp(_G.AimSmoothness, 0.01, 0.99)
local newLookVector = currentLookVector:Lerp(directionToTarget, 1 - smoothFactor)
local newCFrame = CFrame.new(camera.CFrame.Position, camera.CFrame.Position + newLookVector)
camera.CFrame = newCFrame
local lookPos = Vector3.new(objPosition.X, objPosition.Y, objPosition.Z)
local currentRotation = humanoidRootPart.CFrame
local targetRotation = CFrame.lookAt(humanoidRootPart.Position, lookPos)
humanoidRootPart.CFrame = currentRotation:Lerp(targetRotation, 0.5)
end
local function getObjectPosition(obj)
if obj:IsA("BasePart") then
return obj.Position
elseif obj:IsA("Model") then
if obj.PrimaryPart then
return obj.PrimaryPart.Position
end
local part = obj:FindFirstChildWhichIsA("BasePart")
if part then
return part.Position
end
if obj.GetPivot then
return obj:GetPivot().Position
end
end
return nil
end
local function isObjectSelected(objName)
return _G.SelectedObjects[objName] == true
end
local function saveWaypoint(name)
local character = player.Character
if not character then
Library:Notify("Ошибка: Персонаж не найден!", 3)
return
end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then
Library:Notify("Ошибка: HumanoidRootPart не найден!", 3)
return
end
local position = humanoidRootPart.Position
local waypointId = HttpService:GenerateGUID(false)
_G.Waypoints[waypointId] = {
id = waypointId,
name = name,
position = position,
timestamp = os.time()
}
Library:Notify("Waypoint '" .. name .. "' сохранен!", 3)
return waypointId
end
local function teleportToWaypoint(waypointId)
local waypoint = _G.Waypoints[waypointId]
if not waypoint then
Library:Notify("Waypoint не найден!", 3)
return
end
local character = player.Character
if not character then return end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return end
humanoidRootPart.CFrame = CFrame.new(waypoint.position + Vector3.new(0, 5, 0))
Library:Notify("Телепортирован к '" .. waypoint.name .. "'", 3)
end
local function deleteWaypoint(waypointId)
if _G.Waypoints[waypointId] then
local name = _G.Waypoints[waypointId].name
_G.Waypoints[waypointId] = nil
Library:Notify("Waypoint '" .. name .. "' удален!", 3)
end
end
local function findNearestSelectedObject()
local spawnedFolder = workspace:FindFirstChild("Spawned")
if not spawnedFolder then return nil end
local character = player.Character
if not character then return nil end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return nil end
local nearestObj = nil
local nearestDistance = math.huge
for _, item in ipairs(spawnedFolder:GetChildren()) do
local itemName = item.Name
if isObjectSelected(itemName) then
if item:IsA("BasePart") or item:IsA("Model") then
local position = getObjectPosition(item)
if position then
local distance = (humanoidRootPart.Position - position).Magnitude
if distance < nearestDistance then
nearestDistance = distance
nearestObj = item
end
end
end
end
end
return nearestObj, nearestDistance
end
local function findNearestPlayer()
local character = player.Character
if not character then return nil end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return nil end
local nearestPlayer = nil
local nearestDistance = math.huge
for _, otherPlayer in ipairs(Players:GetPlayers()) do
if otherPlayer ~= player and otherPlayer.Character then
local otherCharacter = otherPlayer.Character
local otherHumanoidRootPart = otherCharacter:FindFirstChild("HumanoidRootPart")
if otherHumanoidRootPart then
local distance = (humanoidRootPart.Position - otherHumanoidRootPart.Position).Magnitude
if distance < nearestDistance then
nearestDistance = distance
nearestPlayer = otherPlayer
end
end
end
end
return nearestPlayer, nearestDistance
end
local function teleportToNearestPlayer()
local nearestPlayer, distance = findNearestPlayer()
if not nearestPlayer then
Library:Notify("Игроки не найдены!", 3)
return
end
local character = player.Character
if not character then return end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return end
local targetCharacter = nearestPlayer.Character
if not targetCharacter then return end
local targetHumanoidRootPart = targetCharacter:FindFirstChild("HumanoidRootPart")
if not targetHumanoidRootPart then return end
humanoidRootPart.CFrame = CFrame.new(targetHumanoidRootPart.Position + Vector3.new(0, 5, 0))
Library:Notify("Телепортирован к " .. nearestPlayer.Name .. " (" .. math.floor(distance) .. " studs)", 3)
end
local function moveToObject(objPosition, speed)
local character = player.Character
if not character then return false end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return false end
local startPos = humanoidRootPart.Position
local direction = (objPosition - startPos).Unit
local distance = (objPosition - startPos).Magnitude
local travelTime = distance / speed
if travelTime <= 0 then return true end
local startTime = tick()
while _G.AutoFarmRunning and tick() - startTime < travelTime do
local elapsed = tick() - startTime
local progress = elapsed / travelTime
local currentPos = startPos + (objPosition - startPos) * progress
humanoidRootPart.CFrame = CFrame.new(currentPos)
smoothAimAtObject(objPosition)
task.wait()
end
return true
end
local function toggleFly()
if _G.Flying then
_G.Flying = false
if _G.FlyBodyVelocity then
_G.FlyBodyVelocity:Destroy()
_G.FlyBodyVelocity = nil
end
local character = player.Character
if character then
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.PlatformStand = false
end
end
return
end
_G.Flying = true
local flySpeed = Options.FlySpeed and Options.FlySpeed.Value or 50
local function updateFly()
local character = player.Character
if not character then return end
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return end
if not _G.FlyBodyVelocity or not _G.FlyBodyVelocity.Parent then
if _G.FlyBodyVelocity then
_G.FlyBodyVelocity:Destroy()
end
_G.FlyBodyVelocity = Instance.new("BodyVelocity")
_G.FlyBodyVelocity.Velocity = Vector3.new(0, 0, 0)
_G.FlyBodyVelocity.MaxForce = Vector3.new(4000, 4000, 4000)
_G.FlyBodyVelocity.P = 1250
_G.FlyBodyVelocity.Parent = humanoidRootPart
end
local camera = workspace.CurrentCamera
local direction = Vector3.new(0, 0, 0)
if UserInputService:IsKeyDown(Enum.KeyCode.W) then
direction = direction + camera.CFrame.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then
direction = direction - camera.CFrame.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then
direction = direction - camera.CFrame.RightVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then
direction = direction + camera.CFrame.RightVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.E) then
direction = direction + Vector3.new(0, 1, 0)
end
if UserInputService:IsKeyDown(Enum.KeyCode.Q) then
direction = direction - Vector3.new(0, 1, 0)
end
if direction.Magnitude > 0 then
direction = direction.Unit * flySpeed
end
_G.FlyBodyVelocity.Velocity = direction
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.PlatformStand = true
end
end
local flyConnection
flyConnection = RunService.Heartbeat:Connect(function()
if not _G.Flying then
flyConnection:Disconnect()
return
end
local success, err = pcall(updateFly)
if not success then
_G.Flying = false
flyConnection:Disconnect()
end
end)
end
local function toggleNoClip()
if _G.NoClipEnabled then
_G.NoClipEnabled = false
if _G.NoClipConnection then
_G.NoClipConnection:Disconnect()
_G.NoClipConnection = nil
end
return
end
_G.NoClipEnabled = true
_G.NoClipConnection = RunService.Stepped:Connect(function()
if not _G.NoClipEnabled then
if _G.NoClipConnection then
_G.NoClipConnection:Disconnect()
end
return
end
local character = player.Character
if not character then return end
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end)
end
local function ensureNoClipForAutoFarm()
if _G.AutoFarmRunning and not _G.NoClipEnabled then
toggleNoClip()
if Toggles.NoClipToggle then
Toggles.NoClipToggle:SetValue(true)
end
end
end
local function toggleInfJump()
if _G.InfJumpEnabled then
_G.InfJumpEnabled = false
if _G.InfJumpConnection then
_G.InfJumpConnection:Disconnect()
_G.InfJumpConnection = nil
end
return
end
_G.InfJumpEnabled = true
_G.InfJumpConnection = UserInputService.JumpRequest:Connect(function()
if _G.InfJumpEnabled then
local character = player.Character
if character then
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid and humanoid:GetState() == Enum.HumanoidStateType.Freefall then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end
end)
end
local function toggleAllObjects(value)
for _, objName in pairs(_G.AvailableObjects) do
_G.SelectedObjects[objName] = value
if Toggles["FarmObject_" .. objName] then
Toggles["FarmObject_" .. objName]:SetValue(value)
end
end
end
local function startAutoFarm()
if _G.AutoFarmRunning then
return
end
local hasSelectedObjects = false
for _, objName in pairs(_G.AvailableObjects) do
if _G.SelectedObjects[objName] then
hasSelectedObjects = true
break
end
end
if not hasSelectedObjects then
Library:Notify("Ошибка: Не выбрано ни одного объекта для фарма!", 5)
return
end
_G.AutoFarmRunning = true
ensureNoClipForAutoFarm()
_G.AutoFarmTask = task.spawn(function()
while _G.AutoFarmRunning do
task.wait(0.5)
if not player.Character then
player:LoadCharacter()
task.wait(2)
continue
end
local spawnedFolder = workspace:FindFirstChild("Spawned")
if not spawnedFolder then
task.wait(2)
continue
end
local nearestObj, distance = findNearestSelectedObject()
if not nearestObj then
task.wait(2)
continue
end
local objPosition = getObjectPosition(nearestObj)
if not objPosition then
task.wait(1)
continue
end
local targetPosition = objPosition + Vector3.new(0, 3, 0)
local successMove = moveToObject(targetPosition, _G.FarmFlySpeed)
if successMove then
task.wait(0.2)
local startTime = os.time()
local clicked = false
while nearestObj and nearestObj.Parent and nearestObj.Parent == spawnedFolder and _G.AutoFarmRunning do
if os.time() - startTime > 45 then
break
end
local currentObjPosition = getObjectPosition(nearestObj)
if currentObjPosition then
smoothAimAtObject(currentObjPosition)
end
simulateClick()
clicked = true
if not nearestObj or not nearestObj.Parent or nearestObj.Parent ~= spawnedFolder then
break
end
task.wait(0.5)
end
task.wait(0.2)
end
end
end)
end
local function stopAutoFarm()
if not _G.AutoFarmRunning then return end
_G.AutoFarmRunning = false
if _G.AutoFarmTask then
task.cancel(_G.AutoFarmTask)
_G.AutoFarmTask = nil
end
end
local function toggleESP()
if _G.ESPRunning then
_G.ESPRunning = false
for _, esp in pairs(_G.ESPObjects) do
removeESP(esp)
end
_G.ESPObjects = {}
if _G.ESPConnection then
_G.ESPConnection:Disconnect()
_G.ESPConnection = nil
end
return
end
_G.ESPRunning = true
local function onChildAdded(child)
if not _G.ESPRunning then return end
task.wait(0.1)
if child:IsA("BasePart") or child:IsA("Model") then
if _G.SelectedObjects[child.Name] then
local esp = createESP(child, false, false)
if esp then
_G.ESPObjects[child] = esp
end
end
end
end
local function onChildRemoved(child)
if _G.ESPObjects[child] then
removeESP(_G.ESPObjects[child])
_G.ESPObjects[child] = nil
end
end
local spawnedFolder = workspace:FindFirstChild("Spawned")
if spawnedFolder then
refreshResourceESP()
_G.ESPConnection = spawnedFolder.ChildAdded:Connect(onChildAdded)
spawnedFolder.ChildRemoved:Connect(onChildRemoved)
end
local updateConnection
updateConnection = RunService.RenderStepped:Connect(function()
if not _G.ESPRunning then
updateConnection:Disconnect()
return
end
for obj, esp in pairs(_G.ESPObjects) do
if obj and obj.Parent and obj.Parent == workspace.Spawned then
updateESP(esp)
else
removeESP(esp)
_G.ESPObjects[obj] = nil
end
end
end)
end
local function toggleEnemyESP()
if _G.EnemyESPRunning then
_G.EnemyESPRunning = false
for _, esp in pairs(_G.EnemyESPObjects) do
removeESP(esp)
end
_G.EnemyESPObjects = {}
if _G.EnemyESPConnection then
_G.EnemyESPConnection:Disconnect()
_G.EnemyESPConnection = nil
end
return
end
_G.EnemyESPRunning = true
local function onEnemyAdded(child)
if not _G.EnemyESPRunning then return end
task.wait(0.1)
if child:IsA("BasePart") or child:IsA("Model") then
local enemyType, customName = getEnemyType(child.Name)
if _G.SelectedEnemies[enemyType] then
local esp = createESP(child, true, false, enemyType, customName)
if esp then
_G.EnemyESPObjects[child] = esp
end
end
end
end
local function onEnemyRemoved(child)
if _G.EnemyESPObjects[child] then
removeESP(_G.EnemyESPObjects[child])
_G.EnemyESPObjects[child] = nil
end
end
local enemiesFolder = workspace:FindFirstChild("Enemies")
if enemiesFolder then
refreshEnemyESP()
_G.EnemyESPConnection = enemiesFolder.ChildAdded:Connect(onEnemyAdded)
enemiesFolder.ChildRemoved:Connect(onEnemyRemoved)
end
local updateConnection
updateConnection = RunService.RenderStepped:Connect(function()
if not _G.EnemyESPRunning then
updateConnection:Disconnect()
return
end
for enemy, esp in pairs(_G.EnemyESPObjects) do
if enemy and enemy.Parent and enemy.Parent == workspace.Enemies then
updateESP(esp)
else
removeESP(esp)
_G.EnemyESPObjects[enemy] = nil
end
end
end)
end
local function togglePlayerESP()
if _G.PlayerESPRunning then
_G.PlayerESPRunning = false
for _, esp in pairs(_G.PlayerESPObjects) do
removeESP(esp)
end
_G.PlayerESPObjects = {}
if _G.PlayerESPConnection then
_G.PlayerESPConnection:Disconnect()
_G.PlayerESPConnection = nil
end
return
end
_G.PlayerESPRunning = true
local function onPlayerAdded(otherPlayer)
if not _G.PlayerESPRunning then return end
otherPlayer.CharacterAdded:Connect(function(character)
task.wait(0.5)
if _G.PlayerESPRunning and character then
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if humanoidRootPart then
local esp = createESP(character, false, true, nil, nil, otherPlayer.Name)
if esp then
_G.PlayerESPObjects[otherPlayer] = esp
end
end
end
end)
if otherPlayer.Character then
task.wait(0.5)
local character = otherPlayer.Character
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
if humanoidRootPart then
local esp = createESP(character, false, true, nil, nil, otherPlayer.Name)
if esp then
_G.PlayerESPObjects[otherPlayer] = esp
end
end
end
end
local function onPlayerRemoved(otherPlayer)
if _G.PlayerESPObjects[otherPlayer] then
removeESP(_G.PlayerESPObjects[otherPlayer])
_G.PlayerESPObjects[otherPlayer] = nil
end
end
refreshPlayerESP()
_G.PlayerESPConnection = Players.PlayerAdded:Connect(onPlayerAdded)
Players.PlayerRemoving:Connect(onPlayerRemoved)
local updateConnection
updateConnection = RunService.RenderStepped:Connect(function()
if not _G.PlayerESPRunning then
updateConnection:Disconnect()
return
end
for otherPlayer, esp in pairs(_G.PlayerESPObjects) do
if otherPlayer and otherPlayer.Character and otherPlayer.Character.Parent then
updateESP(esp)
else
removeESP(esp)
_G.PlayerESPObjects[otherPlayer] = nil
end
end
end)
end
local function toggleSpeed()
if Toggles.SpeedToggle then
Toggles.SpeedToggle:SetValue(not Toggles.SpeedToggle.Value)
end
end
local Window = Library:CreateWindow({
Title = "RobloxMAN",
Footer = "AutoFarm + ESP + Красивые хитбоксы + Телепорт + Waypoints + Невидимость",
Icon = 95816097006870,
NotifySide = "Right",
ShowCustomCursor = true,
})
local Tabs = {
Main = Window:AddTab("Главная", "home"),
Player = Window:AddTab("Игрок", "user"),
Teleport = Window:AddTab("Телепорт", "move"),
ESP = Window:AddTab("ESP", "eye"),
Hitbox = Window:AddTab("Hitbox", "target"),
}
local AutoFarmGroup = Tabs.Main:AddLeftGroupbox("AutoFarm Ресурсы")
AutoFarmGroup:AddToggle("AutoFarmToggle", {
Text = "Включить AutoFarm Ресурсов",
Default = false,
Tooltip = "Плавное движение к выбранным ресурсам с авто-прицелом",
Callback = function(Value)
if Value then
startAutoFarm()
else
stopAutoFarm()
end
end,
})
AutoFarmGroup:AddSlider("FarmFlySpeed", {
Text = "Скорость AutoFarm",
Default = 50,
Min = 20,
Max = 100,
Rounding = 0,
Callback = function(Value)
_G.FarmFlySpeed = Value
end
})
AutoFarmGroup:AddSlider("AimSmoothness", {
Text = "Плавность прицела",
Default = 0.3,
Min = 0.01,
Max = 0.9,
Rounding = 2,
Tooltip = "Чем меньше значение, тем быстрее камера поворачивается на объект",
Callback = function(Value)
_G.AimSmoothness = Value
end
})
AutoFarmGroup:AddDivider()
AutoFarmGroup:AddButton("Выбрать все ресурсы для фарма", function()
toggleAllObjects(true)
Library:Notify("Все ресурсы выбраны для фарма!", 3)
end)
AutoFarmGroup:AddButton("Отменить все ресурсы для фарма", function()
toggleAllObjects(false)
Library:Notify("Все ресурсы отменены для фарма!", 3)
end)
AutoFarmGroup:AddDivider()
AutoFarmGroup:AddLabel("Выбор ресурсов:")
for _, objName in pairs(_G.AvailableObjects) do
AutoFarmGroup:AddToggle("FarmObject_" .. objName, {
Text = objName,
Default = true,
Callback = function(Value)
_G.SelectedObjects[objName] = Value
end,
})
end
local MovementGroup = Tabs.Main:AddRightGroupbox("Движение")
MovementGroup:AddToggle("FlyToggle", {
Text = "Включить Fly",
Default = false,
Tooltip = "WASD - движение, Q/E - вниз/вверх",
Callback = function(Value)
toggleFly()
end,
})
MovementGroup:AddToggle("NoClipToggle", {
Text = "Включить NoClip",
Default = false,
Tooltip = "Проходить сквозь стены",
Callback = function(Value)
toggleNoClip()
end,
})
MovementGroup:AddToggle("InfJumpToggle", {
Text = "Включить InfJump",
Default = false,
Tooltip = "Бесконечный прыжок (пробел)",
Callback = function(Value)
toggleInfJump()
end,
})
local FlySettingsGroup = Tabs.Main:AddLeftGroupbox("Настройки Fly")
FlySettingsGroup:AddSlider("FlySpeed", {
Text = "Скорость Fly",
Default = 50,
Min = 10,
Max = 200,
Rounding = 0,
})
local CameraGroup = Tabs.Main:AddRightGroupbox("Настройки камеры")
CameraGroup:AddButton("Отключить тряску камеры", function()
disableCameraShake()
Library:Notify("Тряска камеры отключена!", 3)
end)
local PlayerGroup = Tabs.Player:AddLeftGroupbox("Характеристики")
PlayerGroup:AddToggle("SpeedToggle", {
Text = "Изменить скорость",
Default = false,
Callback = function(Value)
if Value then
startSpeedLoop()
else
if _G.SpeedLoop then
_G.SpeedLoop:Disconnect()
_G.SpeedLoop = nil
end
local character = player.Character
if character then
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.WalkSpeed = 16
end
end
end
end,
})
PlayerGroup:AddSlider("SpeedValue", {
Text = "Скорость бега",
Default = 50,
Min = 16,
Max = 200,
Rounding = 0,
})
PlayerGroup:AddToggle("InvisibleToggle", {
Text = "Включить невидимость",
Default = false,
Tooltip = "Сделает вашего персонажа невидимым",
Callback = function(Value)
toggleInvisible()
end,
})
local TeleportGroup = Tabs.Teleport:AddLeftGroupbox("Телепорт")
TeleportGroup:AddToggle("ClickTPToggle", {
Text = "Включить ClickTP",
Default = false,
Callback = function(Value)
if Value then
setupClickTP()
Library:Notify("ClickTP включен! Кликайте ЛКМ для телепортации", 3)
end
end,
})
TeleportGroup:AddButton("Телепорт к ближайшему игроку", function()
teleportToNearestPlayer()
end)
local WaypointsGroup = Tabs.Teleport:AddRightGroupbox("Waypoints")
local waypointNameInput = WaypointsGroup:AddInput("WaypointNameInput", {
Text = "Название Waypoint",
Default = "Waypoint",
Tooltip = "Введите название для сохранения позиции",
Placeholder = "Введите название",
})
WaypointsGroup:AddButton("Сохранить Waypoint", function()
local name = Options.WaypointNameInput.Value or "Waypoint"
saveWaypoint(name)
end)
WaypointsGroup:AddDivider()
local waypointsList = WaypointsGroup:AddDropdown("WaypointsList", {
Text = "Сохраненные Waypoints",
Default = 1,
Values = {},
Tooltip = "Выберите waypoint для телепортации",
Callback = function(Value)
_G.SelectedWaypoint = Value
end,
})
local function updateWaypointsList()
local waypointValues = {}
for id, waypoint in pairs(_G.Waypoints) do
table.insert(waypointValues, id)
end
waypointsList:SetValues(waypointValues)
if #waypointValues > 0 then
local displayValues = {}
for id, waypoint in pairs(_G.Waypoints) do
table.insert(displayValues, waypoint.name .. " (" .. math.floor(waypoint.position.X) .. ", " .. math.floor(waypoint.position.Y) .. ", " .. math.floor(waypoint.position.Z) .. ")")
end
waypointsList:SetValues(displayValues)
end
end
WaypointsGroup:AddButton("Телепорт к выбранному Waypoint", function()
if _G.SelectedWaypoint then
for id, waypoint in pairs(_G.Waypoints) do
local displayName = waypoint.name .. " (" .. math.floor(waypoint.position.X) .. ", " .. math.floor(waypoint.position.Y) .. ", " .. math.floor(waypoint.position.Z) .. ")"
if displayName == _G.SelectedWaypoint then
teleportToWaypoint(id)
return
end
end
end
Library:Notify("Выберите waypoint из списка!", 3)
end)
WaypointsGroup:AddButton("Удалить выбранный Waypoint", function()
if _G.SelectedWaypoint then
for id, waypoint in pairs(_G.Waypoints) do
local displayName = waypoint.name .. " (" .. math.floor(waypoint.position.X) .. ", " .. math.floor(waypoint.position.Y) .. ", " .. math.floor(waypoint.position.Z) .. ")"
if displayName == _G.SelectedWaypoint then
deleteWaypoint(id)
updateWaypointsList()
return
end
end
end
Library:Notify("Выберите waypoint из списка!", 3)
end)
WaypointsGroup:AddButton("Обновить список Waypoints", function()
updateWaypointsList()
Library:Notify("Список waypoints обновлен!", 3)
end)
local HitboxGroup = Tabs.Hitbox:AddLeftGroupbox("Hitbox Multiplier")
HitboxGroup:AddToggle("AutoHitboxToggle", {
Text = "Включить авто-хитбокс",
Default = false,
Tooltip = "Автоматически применяет хитбокс ко всем врагам",
Callback = function(Value)
toggleHitbox()
end
})
HitboxGroup:AddSlider("HitboxMultiplier", {
Text = "Множитель хитбокса",
Default = 5,
Min = 1,
Max = 20,
Rounding = 0,
Tooltip = "Изменяет размер хитбокса врагов (Head.Size)",
Callback = function(Value)
if _G.HitboxEnabled then
updateAllHitboxes(Value)
end
end
})
HitboxGroup:AddDivider()
local HeadHitboxGroup = Tabs.Hitbox:AddRightGroupbox("Красивые хитбоксы голов")
HeadHitboxGroup:AddLabel("Стильные фиолетовые хитбоксы")
HeadHitboxGroup:AddLabel("Яркие и прозрачные")
HeadHitboxGroup:AddToggle("ShowHeadHitboxToggle", {
Text = "Включить красивые хитбоксы",
Default = false,
Tooltip = "Показывает стильные фиолетовые хитбоксы голов врагов",
Callback = function(Value)
toggleShowHeadHitbox()
end
})
local ESPResourcesGroup = Tabs.ESP:AddLeftGroupbox("ESP Ресурсы")
ESPResourcesGroup:AddToggle("ESPToggle", {
Text = "Включить ESP для ресурсов",
Default = false,
Tooltip = "Показывает выбранные ресурсы из папки Spawned",
Callback = function(Value)
toggleESP()
end,
})
ESPResourcesGroup:AddDivider()
for _, objName in pairs(_G.AvailableObjects) do
ESPResourcesGroup:AddToggle("ResourceESP_" .. objName, {
Text = objName,
Default = true,
Callback = function(Value)
_G.SelectedObjects[objName] = Value
if _G.ESPRunning then
refreshResourceESP()
end
end,
})
end
ESPResourcesGroup:AddDivider()
ESPResourcesGroup:AddButton("Выбрать все ресурсы", function()
toggleAllResources(true)
Library:Notify("Все ресурсы выбраны для ESP!", 3)
end)
ESPResourcesGroup:AddButton("Отменить все ресурсы", function()
toggleAllResources(false)
Library:Notify("Все ресурсы отменены для ESP!", 3)
end)
local ESPEnemiesGroup = Tabs.ESP:AddRightGroupbox("ESP Враги")
ESPEnemiesGroup:AddToggle("EnemyESPToggle", {
Text = "Включить ESP для врагов",
Default = false,
Tooltip = "Показывает выбранных врагов из папки Enemies",
Callback = function(Value)
toggleEnemyESP()
end,
})
ESPEnemiesGroup:AddDivider()
for _, enemyName in pairs(_G.KnownEnemies) do
ESPEnemiesGroup:AddToggle("EnemyESP_" .. enemyName, {
Text = enemyName,
Default = true,
Callback = function(Value)
_G.SelectedEnemies[enemyName] = Value
if _G.EnemyESPRunning then
refreshEnemyESP()
end
end,
})
end
ESPEnemiesGroup:AddDivider()
ESPEnemiesGroup:AddButton("Выбрать всех врагов", function()
toggleAllEnemies(true)
Library:Notify("Все враги выбраны для ESP!", 3)
end)
ESPEnemiesGroup:AddButton("Отменить всех врагов", function()
toggleAllEnemies(false)
Library:Notify("Все враги отменены для ESP!", 3)
end)
local ESPPlayersGroup = Tabs.ESP:AddLeftGroupbox("ESP Игроков")
ESPPlayersGroup:AddToggle("PlayerESPToggle", {
Text = "Включить ESP для игроков",
Default = false,
Tooltip = "Показывает всех игроков на сервере",
Callback = function(Value)
togglePlayerESP()
end,
})
local SettingsTab = Window:AddTab("Настройки UI", "settings")
local UIGroup = SettingsTab:AddLeftGroupbox("Управление")
UIGroup:AddToggle("KeybindMenuOpen", {
Default = Library.KeybindFrame.Visible,
Text = "Показать меню клавиш",
Callback = function(value)
Library.KeybindFrame.Visible = value
end,
})
UIGroup:AddLabel("Клавиша меню"):AddKeyPicker("MenuKeybind", {
Default = "RightShift",
NoUI = true,
Text = "Клавиша меню"
})
Library.ToggleKeybind = Options.MenuKeybind
UIGroup:AddDivider()
UIGroup:AddButton("Выгрузить скрипт", function()
stopAutoFarm()
_G.Flying = false
if _G.FlyBodyVelocity then
_G.FlyBodyVelocity:Destroy()
end
_G.NoClipEnabled = false
if _G.NoClipConnection then
_G.NoClipConnection:Disconnect()
end
_G.InfJumpEnabled = false
if _G.InfJumpConnection then
_G.InfJumpConnection:Disconnect()
end
if _G.SpeedLoop then
_G.SpeedLoop:Disconnect()
_G.SpeedLoop = nil
end
_G.HitboxEnabled = false
if _G.HitboxConnection then
_G.HitboxConnection:Disconnect()
end
resetEnemyHitboxes()
_G.ShowHeadHitboxEnabled = false
if _G.HeadHitboxConnection then
_G.HeadHitboxConnection:Disconnect()
end
for enemy, hitboxData in pairs(_G.HeadHitboxParts) do
removeHeadHitbox(hitboxData)
end
_G.HeadHitboxParts = {}
_G.ESPRunning = false
for _, esp in pairs(_G.ESPObjects) do
removeESP(esp)
end
_G.ESPObjects = {}
_G.EnemyESPRunning = false
for _, esp in pairs(_G.EnemyESPObjects) do
removeESP(esp)
end
_G.EnemyESPObjects = {}
_G.PlayerESPRunning = false
for _, esp in pairs(_G.PlayerESPObjects) do
removeESP(esp)
end
_G.PlayerESPObjects = {}
_G.Invisible = false
if _G.InvisibilityConnection then
_G.InvisibilityConnection:Disconnect()
_G.InvisibilityConnection = nil
end
Library:Unload()
end)
player.CharacterAdded:Connect(function(character)
task.wait(1)
if Toggles.SpeedToggle and Toggles.SpeedToggle.Value then
startSpeedLoop()
end
end)
if ThemeManager and SaveManager then
ThemeManager:SetLibrary(Library)
SaveManager:SetLibrary(Library)
SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({ "MenuKeybind" })
ThemeManager:SetFolder("RobloxMAN")
SaveManager:SetFolder("RobloxMAN/configs")
SaveManager:BuildConfigSection(SettingsTab)
ThemeManager:ApplyToTab(SettingsTab)
SaveManager:LoadAutoloadConfig()
end
updateWaypointsList()
Library:OnUnload(function()
stopAutoFarm()
_G.Flying = false
if _G.FlyBodyVelocity then
_G.FlyBodyVelocity:Destroy()
end
_G.NoClipEnabled = false
if _G.NoClipConnection then
_G.NoClipConnection:Disconnect()
end
_G.InfJumpEnabled = false
if _G.InfJumpConnection then
_G.InfJumpConnection:Disconnect()
end
if _G.SpeedLoop then
_G.SpeedLoop:Disconnect()
_G.SpeedLoop = nil
end
_G.HitboxEnabled = false
if _G.HitboxConnection then
_G.HitboxConnection:Disconnect()
end
resetEnemyHitboxes()
_G.ShowHeadHitboxEnabled = false
if _G.HeadHitboxConnection then
_G.HeadHitboxConnection:Disconnect()
end
for enemy, hitboxData in pairs(_G.HeadHitboxParts) do
removeHeadHitbox(hitboxData)
end
_G.HeadHitboxParts = {}
_G.ESPRunning = false
for _, esp in pairs(_G.ESPObjects) do
removeESP(esp)
end
_G.ESPObjects = {}
_G.EnemyESPRunning = false
for _, esp in pairs(_G.EnemyESPObjects) do
removeESP(esp)
end
_G.EnemyESPObjects = {}
_G.PlayerESPRunning = false
for _, esp in pairs(_G.PlayerESPObjects) do
removeESP(esp)
end
_G.PlayerESPObjects = {}
_G.Invisible = false
if _G.InvisibilityConnection then
_G.InvisibilityConnection:Disconnect()
_G.InvisibilityConnection = nil
end
end)
task.wait(1)
disableCameraShake()No comments yet for this script.



