Загрузка данных
-- // BoatHelper | Premium Script
-- // Создано для Roblox
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
-- // Функции, которые будут отключаться при уничтожении GUI
local ActiveFunctions = {
ESP = {
Enabled = false,
Connection = nil,
PlayersData = {},
Name = "ESP Игроков",
Description = "Подсвечивает игроков через стены. Красный - Knife, Синий - Dodge, Белый - ничего."
},
Aimbot = {
Enabled = false,
Connection = nil,
IgnoredPlayers = {},
AimMode = "Closest",
Name = "Aimbot",
Description = "Автоматически наводится на игрока. Режимы: Ближайший или По взгляду."
},
BallsESP = {
Enabled = false,
Connection = nil,
BallsData = {},
Name = "ESP Шариков",
Description = "Подсвечивает упавшие шарики желтым цветом."
}
}
-- // Окно выбора игроков для игнорирования
local IgnoreListFrame = nil
-- // Функция проверки инвентаря игрока
local function CheckPlayerInventory(player)
local hasKnife = false
local hasDodge = false
local backpack = player:FindFirstChild("Backpack")
if backpack then
for _, item in pairs(backpack:GetChildren()) do
local itemName = item.Name:lower()
if itemName:find("knife") or itemName:find("нож") then
hasKnife = true
end
if itemName:find("dodge") or itemName:find("уклон") then
hasDodge = true
end
end
end
local character = player.Character
if character then
for _, item in pairs(character:GetChildren()) do
if item:IsA("Tool") then
local itemName = item.Name:lower()
if itemName:find("knife") or itemName:find("нож") then
hasKnife = true
end
if itemName:find("dodge") or itemName:find("уклон") then
hasDodge = true
end
end
end
end
return hasKnife, hasDodge
end
-- // Функция поиска шариков (оптимизированная)
local function FindBalls()
local balls = {}
local foundBalls = {}
-- Ищем только в определенных местах, где могут быть шарики
local searchLocations = {
Workspace,
Workspace:FindFirstChild("Balls"),
Workspace:FindFirstChild("Items"),
Workspace:FindFirstChild("Drops"),
Workspace:FindFirstChild("Loot")
}
for _, location in pairs(searchLocations) do
if location then
local descendants = location:GetDescendants()
for _, object in pairs(descendants) do
if object:IsA("BasePart") and not object.Anchored then
local objectName = object.Name:lower()
if objectName:find("ball")
or objectName:find("orb")
or objectName:find("sphere")
or objectName:find("шар")
or objectName:find("мяч") then
-- Проверяем, что шарик упал (низко)
if object.Position.Y < 20 and not foundBalls[object] then
table.insert(balls, object)
foundBalls[object] = true
end
end
end
end
end
end
return balls
end
-- // Очистка ESP для конкретного игрока
local function CleanupPlayerESP(player)
local data = ActiveFunctions.ESP.PlayersData[player]
if not data then return end
if data.Highlight then
data.Highlight:Destroy()
data.Highlight = nil
end
if data.Billboard then
data.Billboard:Destroy()
data.Billboard = nil
end
if data.UpdateConnection then
data.UpdateConnection:Disconnect()
data.UpdateConnection = nil
end
if data.CharacterConnection then
data.Character