if not game:IsLoaded() then game.Loaded:Wait() end
-- Защита от ошибок Disconnect
local function fixDisconnect()
-- Сохраняем оригинальные методы
local backup = {}
-- Защищаем Connection:Disconnect()
backup.Disconnect = getrenv().Disconnect or nil
getrenv().Disconnect = function(self, ...)
if self == nil then
return nil
end
if typeof(self) ~= "RBXScriptConnection" then
return nil
end
return backup.Disconnect and backup.Disconnect(self, ...)
end
end
-- Вызываем защиту
pcall(fixDisconnect)
-- ЗВУК ДЛЯ ВСЕХ КНОПОК (С КЭШИРОВАНИЕМ)
local cachedSound = nil
local function playButtonSound()
-- Пробуем воспроизвести кэшированный звук
if cachedSound then
local success = pcall(function()
cachedSound:Stop()
cachedSound.TimePosition = 0
cachedSound:Play()
end)
if success then
return
else
cachedSound = nil
end
end
-- Создаем новый звук
local success, sound = pcall(function()
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://17161216230"
sound.Volume = 1.8
sound.Looped = false
-- Пробуем разные родители
local parent = game:GetService("SoundService")
if not parent then
parent = workspace
end
sound.Parent = parent
sound:Play()
return sound
end)
if success and sound then
cachedSound = sound
-- Автоматическая очистка если звук закончил играть
if sound.Loaded then
sound.Ended:Once(function()
cachedSound = nil
end)
end
-- Резервная очистка через 2 секунды
task.delay(2, function()
if cachedSound == sound then
cachedSound = nil
end
end)
end
end
-- Службы
local Services = {
Players = game:GetService("Players"),
UserInputService = game:GetService("UserInputService"),
TeleportService = game:GetService("TeleportService"),
HttpService = game:GetService("HttpService"),
VirtualUser = game:GetService("VirtualUser"),
SoundService = game:GetService("SoundService"),
TweenService = game:GetService("TweenService"),
Workspace = game:GetService("Workspace"),
RunService = game:GetService("RunService"),
ReplicatedStorage = game:GetService("ReplicatedStorage"),
CollectionService = game:GetService("CollectionService"),
CoreGui = game:GetService("CoreGui"),
Debris = game:GetService("Debris"),
MarketplaceService = game:GetService("MarketplaceService")
}
local Player = Services.Players.LocalPlayer
local LP = Player
local CoinCollected = Services.ReplicatedStorage.Remotes.Gameplay.CoinCollected
local RoundStart = Services.ReplicatedStorage.Remotes.Gameplay.RoundStart
local RoundEnd = Services.ReplicatedStorage.Remotes.Gameplay.RoundEndFade
-- Состояния
local States = {
autoResetEnabled = false,
bag_full = false,
resetting = false,
start_position = nil,
farming = false,
gunDropESPToggled = false,
shootMurdererEnabled = false,
shootMurdererFrameSize = 10 -- Размер фрейма от 5 до 20, по умолчанию 10
}
-- Цвета для Highlight
local COLORS = {
ESP_MURDER = Color3.fromRGB(225, 0, 0),
ESP_SHERIFF = Color3.fromRGB(0, 0, 225),
ESP_HERO = Color3.fromRGB(255, 250, 0),
ESP_INNOCENT = Color3.fromRGB(0, 225, 0)
}
local StateManagers = {
ESP = {
Enabled = false,
Murder = true,
Sheriff = true,
Hero = true,
Innocent = true
}
}
local Cache = {
Highlights = {},
HumanoidConnections = {},
Players = {},
Visibility = {},
Roles = {}
}
local Connections = {
Players = {},
RunService = {}
}
-- Получение цвета Highlight по роли
local function GetHighlightColor(role)
if role == "Murderer" then
return COLORS.ESP_MURDER
elseif role == "Sheriff" then
return COLORS.ESP_SHERIFF
elseif role == "Hero" then
return COLORS.ESP_HERO
else
return COLORS.ESP_INNOCENT
end
end
-- Безопасное удаление объектов
local function SafeDestroy(obj)
pcall(function()
if obj and obj.Parent then
obj:Destroy()
end
end)
end
-- Проверка жив ли игрок
local function IsAlive(player)
if not player or not player.Character then
return false
end
local humanoid = player.Character:FindFirstChild("Humanoid")
if not humanoid then
return false
end
return humanoid.Health > 0 and humanoid.Parent ~= nil
end
-- Получение роли игрока
local function GetPlayerRole(player)
if not player then return "Innocent" end
-- Проверяем наличие оружия в инвентаре или персонаже
local hasKnife = false
local hasGun = false
-- Проверяем Backpack
if player.Backpack then
if player.Backpack:FindFirstChild("Knife") then
hasKnife = true
end
if player.Backpack:FindFirstChild("Gun") then
hasGun = true
end
end
-- Проверяем Character
if player.Character then
if player.Character:FindFirstChild("Knife") then
hasKnife = true
end
if player.Character:FindFirstChild("Gun") then
hasGun = true
end
end
if hasKnife then
return "Murderer"
elseif hasGun then
return "Sheriff"
else
return "Innocent"
end
end
-- ESP функции
local function CreateHighlight(player)
if not StateManagers.ESP.Enabled or player == LP then
return nil
end
if not player or not player.Parent then
return nil
end
local character = player.Character
if not character or not character.Parent then
return nil
end
-- Проверка существующего Highlight
local existing = Cache.Highlights[player]
if existing and existing.Parent then
if existing.Adornee ~= character then
existing.Adornee = character
end
existing.Enabled = true
return existing
end
-- Удаление старого Highlight если он есть
if existing then
SafeDestroy(existing)
end
-- Проверка, жив ли игрок
if not IsAlive(player) then
return nil
end
-- Создание нового Highlight
local highlight = Instance.new("Highlight")
highlight.Name = "OnyxHighlight_" .. player.UserId
highlight.Adornee = character
highlight.FillTransparency = 0.7
highlight.OutlineTransparency = 0.3
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Enabled = true
-- Установка цвета в зависимости от роли
local role = GetPlayerRole(player)
highlight.FillColor = GetHighlightColor(role)
highlight.OutlineColor = GetHighlightColor(role)
highlight.Parent = Services.Workspace
Cache.Highlights[player] = highlight
-- Очистка кэша при уничтожении
highlight.Destroying:Once(function()
Cache.Highlights[player] = nil
end)
return highlight
end
local function UpdateHighlightColor(player)
local highlight = Cache.Highlights[player]
if not highlight or not highlight.Parent or highlight.Adornee == nil then
return false
end
-- Проверяем, жив ли игрок
if not IsAlive(player) then
highlight.Enabled = false
return false
end
local role = GetPlayerRole(player)
highlight.FillColor = GetHighlightColor(role)
highlight.OutlineColor = GetHighlightColor(role)
highlight.Enabled = true
return true
end
local function UpdateAllHighlights()
-- Создаем копию игроков для безопасной итерации
local playersToUpdate = {}
for _, player in ipairs(Services.Players:GetPlayers()) do
if player ~= LP then
playersToUpdate[player] = true
end
end
-- Обновление Highlight элементов
for player in pairs(playersToUpdate) do
if player and player.Parent then
local isAlive = IsAlive(player)
-- Highlight
if StateManagers.ESP.Enabled and isAlive then
local highlight = Cache.Highlights[player]
if highlight and highlight.Parent then
-- Проверяем, нужно ли показывать этого игрока
local role = GetPlayerRole(player)
local shouldShow = false
if role == "Murderer" and StateManagers.ESP.Murder then
shouldShow = true
elseif role == "Sheriff" and StateManagers.ESP.Sheriff then
shouldShow = true
elseif role == "Hero" and StateManagers.ESP.Hero then
shouldShow = true
elseif role == "Innocent" and StateManagers.ESP.Innocent then
shouldShow = true
end
if shouldShow then
-- Обновляем цвет и видимость
UpdateHighlightColor(player)
else
highlight.Enabled = false
end
elseif player.Character then
-- Создаем новый Highlight
CreateHighlight(player)
end
else
-- Если ESP выключен или игрок мертв, скрываем Highlight если он есть
local highlight = Cache.Highlights[player]
if highlight then
highlight.Enabled = false
end
end
end
end
end
-- Очистка всех Highlight
local function CleanupAllHighlights()
for player, highlight in pairs(Cache.Highlights) do
SafeDestroy(highlight)
end
Cache.Highlights = {}
end
-- Создание элементов интерфейса
local function createElement(className, properties)
local element = Instance.new(className)
for prop, value in pairs(properties) do
if prop ~= "Parent" then
element[prop] = value
end
end
return element
end
-- Создание UI элементов с общими свойствами
local function createUIElement(className, parent, properties)
local element = createElement(className, properties)
element.Parent = parent
return element
end
-- Основной GUI
local ScreenGui = createUIElement("ScreenGui", Services.CoreGui, {
Name = "ShadowUI",
ResetOnSpawn = false,
ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
DisplayOrder = 10 -- Высокий DisplayOrder для основного UI
})
local MainFrame = createUIElement("Frame", ScreenGui, {
BackgroundColor3 = Color3.fromRGB(15, 15, 15),
BackgroundTransparency = 0.08,
BorderSizePixel = 0,
Size = UDim2.new(0, 500, 0, 300),
AnchorPoint = Vector2.new(0.5, 0.5),
Position = UDim2.new(0.5, 0, 0.5, 0)
})
createUIElement("UICorner", MainFrame, {CornerRadius = UDim.new(0, 10)})
createUIElement("UIStroke", MainFrame, {
Color = Color3.fromRGB(230, 57, 51),
Thickness = 1.8,
Transparency = 0.05
})
-- Заголовок
local TitleContainer = createUIElement("Frame", MainFrame, {
BackgroundTransparency = 1,
Position = UDim2.new(0.04, 0, 0.05, 0),
Size = UDim2.new(0.9, 0, 0, 25)
})
local TitleIcon = createUIElement("ImageLabel", TitleContainer, {
Size = UDim2.new(0, 25, 0, 25),
BackgroundTransparency = 1,
Image = "rbxthumb://type=Asset&id=93388705336185&w=420&h=420",
ImageColor3 = Color3.fromRGB(230, 57, 51)
})
local Title = createUIElement("TextLabel", TitleContainer, {
BackgroundTransparency = 1,
Position = UDim2.new(0, 30, 0, 0),
Size = UDim2.new(1, -30, 1, 0),
Font = Enum.Font.GothamBold,
Text = "Shadow Script | Murder Mystery 2",
TextColor3 = Color3.fromRGB(230, 57, 51),
TextSize = 15,
TextXAlignment = Enum.TextXAlignment.Left
})
createUIElement("Frame", MainFrame, {
BackgroundColor3 = Color3.fromRGB(230, 57, 51),
BorderSizePixel = 0,
Size = UDim2.new(0.92, 0, 0, 1),
Position = UDim2.new(0.04, 0, 0.155, 0)
})
-- Вкладки
local Tabs = {"Main", "Visual", "Combat", "Emotes", "Teleport", "Auto Farm", "Misc"}
local TabButtons = {}
local TabPages = {}
local PageScrollFrame = createUIElement("ScrollingFrame", MainFrame, {
BackgroundTransparency = 1,
Position = UDim2.new(0.04, 0, 0.19, 0),
Size = UDim2.new(0.6, 0, 0.75, 0),
ScrollBarThickness = 4,
ScrollBarImageColor3 = Color3.fromRGB(230, 57, 51),
CanvasSize = UDim2.new(0, 0, 0, 0),
AutomaticCanvasSize = Enum.AutomaticSize.Y
})
local TabsScrollFrame = createUIElement("ScrollingFrame", MainFrame, {
BackgroundTransparency = 1,
Position = UDim2.new(0.70, 0, 0.19, 0),
Size = UDim2.new(0.27, 0, 0.75, 0),
ScrollBarThickness = 4,
ScrollBarImageColor3 = Color3.fromRGB(230, 57, 51),
CanvasSize = UDim2.new(0, 0, 0, 0),
AutomaticCanvasSize = Enum.AutomaticSize.Y
})
local TabsContainer = createUIElement("Frame", TabsScrollFrame, {
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 0, 0),
AutomaticSize = Enum.AutomaticSize.Y
})
createUIElement("UIListLayout", TabsContainer, {
Padding = UDim.new(0, 8),
SortOrder = Enum.SortOrder.LayoutOrder
})
-- Функция обновления вида кнопок
local function UpdateButtonVisual(button, isActive)
button.BackgroundTransparency = isActive and 0 or 0.1
button.BackgroundColor3 = isActive and Color3.fromRGB(20,20,20) or Color3.fromRGB(15,15,15)
local stroke = button:FindFirstChild("ButtonStroke")
if stroke then
stroke.Thickness = isActive and 3 or 2
stroke.Color = isActive and Color3.fromRGB(230,57,51) or Color3.fromRGB(200,50,47)
end
end
-- Таблица иконок для вкладок
local tabIcons = {
["Main"] = "rbxthumb://type=Asset&id=72808987642452&w=420&h=420",
["Visual"] = "rbxthumb://type=Asset&id=134788157396683&w=420&h=420",
["Combat"] = "rbxthumb://type=Asset&id=125724093327848&w=420&h=420",
["Emotes"] = "rbxthumb://type=Asset&id=133473827960783&w=420&h=420",
["Teleport"] = "rbxthumb://type=Asset&id=115511057783647&w=420&h=420",
["Auto Farm"] = "rbxthumb://type=Asset&id=114528728360623&w=420&h=420",
["Misc"] = "rbxthumb://type=Asset&id=118821455550069&w=420&h=420"
}
-- Создание кнопок вкладок
for i, tabName in ipairs(Tabs) do
local Button = createUIElement("TextButton", TabsContainer, {
Name = tabName .. "_TabButton",
Size = UDim2.new(1, 0, 0, 38),
BackgroundColor3 = Color3.fromRGB(15, 15, 15),
BackgroundTransparency = 0.1,
BorderSizePixel = 0,
Text = tabName,
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextSize = 14,
RichText = false,
AutoButtonColor = false,
LayoutOrder = i
})
Button.MouseButton1Click:Connect(playButtonSound)
-- Добавление иконки
local iconId = tabIcons[tabName]
if iconId then
createUIElement("ImageLabel", Button, {
Size = UDim2.new(0, 20, 0, 20),
Position = UDim2.new(0, 5, 0.5, -10),
BackgroundTransparency = 1,
Image = iconId
})
end
-- Стилизация кнопки
createUIElement("UICorner", Button, {CornerRadius = UDim.new(0, 15)})
createUIElement("UIStroke", Button, {
Name = "ButtonStroke",
Color = Color3.fromRGB(200,50,47),
Thickness = 2,
ApplyStrokeMode = Enum.ApplyStrokeMode.Border
})
-- Создание страницы
local Page = createUIElement("Frame", PageScrollFrame, {
Size = UDim2.new(1, 0, 0, 0),
BackgroundTransparency = 1,
Visible = false,
AutomaticSize = Enum.AutomaticSize.Y
})
TabButtons[tabName] = Button
TabPages[tabName] = Page
end
-- Переключение вкладок
local function SwitchTab(tab)
for name, page in pairs(TabPages) do
page.Visible = false
end
for name, btn in pairs(TabButtons) do
UpdateButtonVisual(btn, false)
end
if TabPages[tab] then
TabPages[tab].Visible = true
end
if TabButtons[tab] then
UpdateButtonVisual(TabButtons[tab], true)
end
end
SwitchTab("Main")
-- Обработчики кнопок вкладок
for tabName, button in pairs(TabButtons) do
button.MouseButton1Click:Connect(function()
SwitchTab(tabName)
end)
button.MouseEnter:Connect(function()
if TabPages[tabName] and not TabPages[tabName].Visible then
button.BackgroundTransparency = 0
button.BackgroundColor3 = Color3.fromRGB(18,18,18)
end
end)
button.MouseLeave:Connect(function()
if TabPages[tabName] and not TabPages[tabName].Visible then
button.BackgroundTransparency = 0.1
button.BackgroundColor3 = Color3.fromRGB(15,15,15)
end
end)
end
-- Страница Main
local MainPage = TabPages["Main"]
-- Заголовок для Main страницы
createUIElement("TextLabel", MainPage, {
Size = UDim2.new(1, 0, 0, 30),
BackgroundTransparency = 1,
Text = "Main Page",
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextSize = 18,
Position = UDim2.new(0, 0, 0, 0)
})
local ProfileContainer = createUIElement("Frame", MainPage, {
BackgroundColor3 = Color3.fromRGB(20,20,20),
BackgroundTransparency = 0.1,
Size = UDim2.new(1, -10, 0, 120),
Position = UDim2.new(0, 0, 0, 40)
})
createUIElement("UICorner", ProfileContainer, {CornerRadius = UDim.new(0, 10)})
createUIElement("UIStroke", ProfileContainer, {
Color = Color3.fromRGB(230,57,51),
Thickness = 1.8
})
local Avatar = createUIElement("ImageLabel", ProfileContainer, {
BackgroundTransparency = 1,
Size = UDim2.new(0, 90, 0, 90),
Position = UDim2.new(0, 10, 0, 15),
Image = "rbxthumb://type=AvatarHeadShot&id="..Player.UserId.."&w=420&h=420"
})
createUIElement("UICorner", Avatar, {CornerRadius = UDim.new(0, 8)})
local Info = createUIElement("Frame", ProfileContainer, {
Size = UDim2.new(1, -120, 1, -20),
Position = UDim2.new(0, 110, 0, 10),
BackgroundTransparency = 1
})
-- Функция добавления информации
local function NewInfo(name, value, order)
return createUIElement("TextLabel", Info, {
Size = UDim2.new(1, 0, 0, 20),
Position = UDim2.new(0, 0, 0, order * 22),
BackgroundTransparency = 1,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left,
TextColor3 = Color3.fromRGB(255, 255, 255),
TextSize = 14,
Text = name .. ": " .. value
})
end
-- Информация об исполнителе
local executor = "Unknown"
pcall(function()
local executors = {
{func = identifyexecutor, type = "function"},
{func = getexecutorname, type = "function"},
{check = syn, name = "Synapse X"},
{check = PROTOSMASHER_LOADED, name = "ProtoSmasher"},
{check = KRNL_LOADED, name = "Krnl"}
}
for _, exec in ipairs(executors) do
if exec.func and type(exec.func) == exec.type then
executor = exec.func()
break
elseif exec.check then
executor = exec.name
break
end
end
end)
local robloxVersion = "Unknown"
pcall(function()
robloxVersion = tostring(version())
end)
NewInfo("Username", Player.Name, 0)
NewInfo("Display Name", Player.DisplayName, 1)
NewInfo("Roblox Version", robloxVersion, 2)
NewInfo("Executor", executor, 3)
-- Speed and Jump Sliders Container
local SpeedJumpContainer = createUIElement("Frame", MainPage, {
BackgroundColor3 = Color3.fromRGB(20,20,20),
BackgroundTransparency = 0.1,
Size = UDim2.new(1, -10, 0, 170),
Position = UDim2.new(0, 0, 0, 170)
})
createUIElement("UICorner", SpeedJumpContainer, {CornerRadius = UDim.new(0, 10)})
createUIElement("UIStroke", SpeedJumpContainer, {
Color = Color3.fromRGB(230,57,51),
Thickness = 1.8
})
-- Speed Slider
local SpeedContainer = createUIElement("Frame", SpeedJumpContainer, {
BackgroundColor3 = Color3.fromRGB(25,25,25),
BackgroundTransparency = 0.1,
Size = UDim2.new(1, -20, 0, 45),
Position = UDim2.new(0, 10, 0, 10)
})
createUIElement("UICorner", SpeedContainer, {CornerRadius = UDim.new(0, 8)})
local SpeedLabel = createUIElement("TextLabel", SpeedContainer, {
Size = UDim2.new(0.6, 0, 0, 20),
Position = UDim2.new(0, 10, 0, 5),
BackgroundTransparency = 1,
Font = Enum.Font.GothamBold,
Text = "Speed: 16",
TextColor3 = Color3.fromRGB(255, 255, 255),
TextSize = 14,
TextXAlignment = Enum.TextXAlignment.Left
})
local speedSliderFrame = createUIElement("Frame", SpeedContainer, {
Size = UDim2.new(0.9, 0, 0, 15),
Position = UDim2.new(0.05, 0, 0, 25),
BackgroundColor3 = Color3.fromRGB(50, 50, 50),
BorderSizePixel = 0
})
createUIElement("UICorner", speedSliderFrame, {CornerRadius = UDim.new(0, 7)})
local speedSliderTrack = createUIElement("Frame", speedSliderFrame, {
Size = UDim2.new(0.08, 0, 1, 0),
BackgroundColor3 = Color3.fromRGB(230, 57, 51),
BorderSizePixel = 0
})
createUIElement("UICorner", speedSliderTrack, {CornerRadius = UDim.new(0, 7)})
local speedSliderButton = createUIElement("TextButton", speedSliderFrame, {
Size = UDim2.new(0, 20, 0, 20),
Position = UDim2.new(0.08, -10, 0.5, -10),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
BorderSizePixel = 0,
Text = "",
AutoButtonColor = false
})
createUIElement("UICorner", speedSliderButton, {CornerRadius = UDim.new(0, 10)})
createUIElement("UIStroke", speedSliderButton, {
Color = Color3.fromRGB(200, 200, 200),
Thickness = 2
})
-- Jump Slider
local JumpContainer = createUIElement("Frame", SpeedJumpContainer, {
BackgroundColor3 = Color3.fromRGB(25,25,25),
BackgroundTransparency = 0.1,
Size = UDim2.new(1, -20, 0, 45),
Position = UDim2.new(0, 10, 0, 65)
})
createUIElement("UICorner", JumpContainer, {CornerRadius = UDim.new(0, 8)})
local JumpLabel = createUIElement("TextLabel", JumpContainer, {
Size = UDim2.new(0.6, 0, 0, 20),
Position = UDim2.new(0, 10, 0, 5),
BackgroundTransparency = 1,
Font = Enum.Font.GothamBold,
Text = "Jump: 50",
TextColor3 = Color3.fromRGB(255, 255, 255),
TextSize = 14,
TextXAlignment = Enum.TextXAlignment.Left
})
local jumpSliderFrame = createUIElement("Frame", JumpContainer, {
Size = UDim2.new(0.9, 0, 0, 15),
Position = UDim2.new(0.05, 0, 0, 25),
BackgroundColor3 = Color3.fromRGB(50, 50, 50),
BorderSizePixel = 0
})
createUIElement("UICorner", jumpSliderFrame, {CornerRadius = UDim.new(0, 7)})
local jumpSliderTrack = createUIElement("Frame", jumpSliderFrame, {
Size = UDim2.new(0.25, 0, 1, 0),
BackgroundColor3 = Color3.fromRGB(230, 57, 51),
BorderSizePixel = 0
})
createUIElement("UICorner", jumpSliderTrack, {CornerRadius = UDim.new(0, 7)})
local jumpSliderButton = createUIElement("TextButton", jumpSliderFrame, {
Size = UDim2.new(0, 20, 0, 20),
Position = UDim2.new(0.25, -10, 0.5, -10),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
BorderSizePixel = 0,
Text = "",
AutoButtonColor = false
})
createUIElement("UICorner", jumpSliderButton, {CornerRadius = UDim.new(0, 10)})
createUIElement("UIStroke", jumpSliderButton, {
Color = Color3.fromRGB(200, 200, 200),
Thickness = 2
})
-- Reset Button
local ResetButton = createUIElement("TextButton", SpeedJumpContainer, {
Size = UDim2.new(0.9, 0, 0, 35),
Position = UDim2.new(0.05, 0, 0, 120),
BackgroundColor3 = Color3.fromRGB(230, 57, 51),
BackgroundTransparency = 0,
BorderSizePixel = 0,
Text = "Reset",
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextSize = 14,
AutoButtonColor = false
})
ResetButton.MouseButton1Click:Connect(playButtonSound)
createUIElement("UICorner", ResetButton, {CornerRadius = UDim.new(0, 8)})
createUIElement("UIStroke", ResetButton, {
Color = Color3.fromRGB(200, 50, 47),
Thickness = 2
})
-- Hover эффекты для Reset Button
ResetButton.MouseEnter:Connect(function()
ResetButton.BackgroundColor3 = Color3.fromRGB(210, 47, 41)
end)
ResetButton.MouseLeave:Connect(function()
ResetButton.BackgroundColor3 = Color3.fromRGB(230, 57, 51)
end)
-- Функции для обновления значений слайдеров
local function updateSpeedSlider(value)
-- Ограничиваем значение от 0 до 1
local normalizedValue = math.clamp(value, 0, 1)
-- Обновляем визуальные элементы
speedSliderTrack.Size = UDim2.new(normalizedValue, 0, 1, 0)
speedSliderButton.Position = UDim2.new(normalizedValue, -10, 0.5, -10)
-- Обновляем текст (от 1 до 200)
local speedValue = math.floor(1 + normalizedValue * 199)
SpeedLabel.Text = "Speed: " .. speedValue
-- ЛОГИКА ИЗ ПРИВЕДЕННОГО КОДА: Изменяем скорость персонажа
if Player.Character then
local humanoid = Player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.WalkSpeed = speedValue
end
end
end
local function updateJumpSlider(value)
-- Ограничиваем значение от 0 до 1
local normalizedValue = math.clamp(value, 0, 1)
-- Обновляем визуальные элементы
jumpSliderTrack.Size = UDim2.new(normalizedValue, 0, 1, 0)
jumpSliderButton.Position = UDim2.new(normalizedValue, -10, 0.5, -10)
-- Обновляем текст (от 1 до 200)
local jumpValue = math.floor(1 + normalizedValue * 199)
JumpLabel.Text = "Jump: " .. jumpValue
-- ЛОГИКА ИЗ ПРИВЕДЕННОГО КОДА: Изменяем прыжок персонажа
if Player.Character then
local humanoid = Player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.JumpPower = jumpValue
end
end
end
-- Переменные для отслеживания перетаскивания
local draggingSpeed = false
local draggingJump = false
local currentTouchId = nil
-- Функции для работы со слайдерами (работают на ПК и телефоне)
local function beginDrag(sliderType, input)
-- Проверяем тип ввода
if input.UserInputType == Enum.UserInputType.MouseButton1 then
-- Для мыши
if sliderType == "speed" then
draggingSpeed = true
else
draggingJump = true
end
return true
elseif input.UserInputType == Enum.UserInputType.Touch then
-- Для телефона
if currentTouchId == nil then
currentTouchId = input
if sliderType == "speed" then
draggingSpeed = true
else
draggingJump = true
end
return true
end
end
return false
end
local function endDrag(sliderType, input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
if sliderType == "speed" then
draggingSpeed = false
else
draggingJump = false
end
currentTouchId = nil
elseif input.UserInputType == Enum.UserInputType.Touch then
-- Проверяем, что это тот же тач
if currentTouchId == input then
if sliderType == "speed" then
draggingSpeed = false
else
draggingJump = false
end
currentTouchId = nil
end
end
end
local function updateSliderPosition(sliderType, input)
-- Проверяем, какой слайдер активен
local isDragging = false
local sliderFrame = nil
local updateFunction = nil
if sliderType == "speed" then
isDragging = draggingSpeed
sliderFrame = speedSliderFrame
updateFunction = updateSpeedSlider
else
isDragging = draggingJump
sliderFrame = jumpSliderFrame
updateFunction = updateJumpSlider
end
if not isDragging then return end
-- Для тача проверяем, что это тот же тач
if input.UserInputType == Enum.UserInputType.Touch and currentTouchId ~= input then
return
end
-- Вычисляем относительную позицию
local relativeX = (input.Position.X - sliderFrame.AbsolutePosition.X) / sliderFrame.AbsoluteSize.X
updateFunction(relativeX)
end
-- Обработчики для Speed Slider
speedSliderButton.InputBegan:Connect(function(input)
if beginDrag("speed", input) then
playButtonSound()
end
end)
speedSliderButton.InputEnded:Connect(function(input)
endDrag("speed", input)
end)
speedSliderFrame.InputBegan:Connect(function(input)
if beginDrag("speed", input) then
playButtonSound()
updateSliderPosition("speed", input)
end
end)
speedSliderFrame.InputEnded:Connect(function(input)
endDrag("speed", input)
end)
-- Обработчики для Jump Slider
jumpSliderButton.InputBegan:Connect(function(input)
if beginDrag("jump", input) then
playButtonSound()
end
end)
jumpSliderButton.InputEnded:Connect(function(input)
endDrag("jump", input)
end)
jumpSliderFrame.InputBegan:Connect(function(input)
if beginDrag("jump", input) then
playButtonSound()
updateSliderPosition("jump", input)
end
end)
jumpSliderFrame.InputEnded:Connect(function(input)
endDrag("jump", input)
end)
-- Обработка перемещения
Services.UserInputService.InputChanged:Connect(function(input)
if draggingSpeed then
updateSliderPosition("speed", input)
end
if draggingJump then
updateSliderPosition("jump", input)
end
end)
-- Обработка окончания тача
Services.UserInputService.TouchEnded:Connect(function(input)
if currentTouchId == input then
if draggingSpeed then
endDrag("speed", input)
end
if draggingJump then
endDrag("jump", input)
end
end
end)
-- Улучшаем отзывчивость для телефона
speedSliderButton.Active = true
speedSliderButton.Selectable = true
speedSliderFrame.Active = true
jumpSliderButton.Active = true
jumpSliderButton.Selectable = true
jumpSliderFrame.Active = true
-- Функция сброса слайдеров
ResetButton.MouseButton1Click:Connect(function()
-- Сброс Speed слайдера
updateSpeedSlider(0.075) -- 16/200 ≈ 0.08
updateJumpSlider(0.246) -- 50/200 ≈ 0.25
end)
-- Эффекты при наведении на кнопки слайдеров (только для ПК)
speedSliderButton.MouseEnter:Connect(function()
if not draggingSpeed then
speedSliderButton.BackgroundColor3 = Color3.fromRGB(230, 230, 230)
end
end)
speedSliderButton.MouseLeave:Connect(function()
if not draggingSpeed then
speedSliderButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
end
end)
jumpSliderButton.MouseEnter:Connect(function()
if not draggingJump then
jumpSliderButton.BackgroundColor3 = Color3.fromRGB(230, 230, 230)
end
end)
jumpSliderButton.MouseLeave:Connect(function()
if not draggingJump then
jumpSliderButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
end
end)
-- Применяем настройки при появлении нового персонажа (ЛОГИКА ИЗ ПРИВЕДЕННОГО КОДА)
Player.CharacterAdded:Connect(function(character)
task.wait(0.5) -- Ждем загрузки персонажа
-- Восстанавливаем сохраненные значения скорости и прыжка
local speedValue = tonumber(SpeedLabel.Text:match("%d+")) or 16
local jumpValue = tonumber(JumpLabel.Text:match("%d+")) or 50
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.WalkSpeed = speedValue
humanoid.JumpPower = jumpValue
end
end)
-- Инициализация текущего персонажа
if Player.Character then
local speedValue = tonumber(SpeedLabel.Text:match("%d+")) or 16
local jumpValue = tonumber(JumpLabel.Text:match("%d+")) or 50
local humanoid = Player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.WalkSpeed = speedValue
humanoid.JumpPower = jumpValue
end
end
-- Fly Toggle Container
local FlyContainer = createUIElement("Frame", MainPage, {
BackgroundColor3 = Color3.fromRGB(20,20,20),
BackgroundTransparency = 0.1,
Size = UDim2.new(1, -10, 0, 50),
Position = UDim2.new(0, 0, 0, 350)
})
createUIElement("UICorner", FlyContainer, {CornerRadius = UDim.new(0, 10)})
createUIElement("UIStroke", FlyContainer, {
Color = Color3.fromRGB(230,57,51),
Thickness = 1.8
})
-- Заголовок Fly
createUIElement("TextLabel", FlyContainer, {
Size = UDim2.new(0.6, 0, 1, 0),
Position = UDim2.new(0, 10, 0, 0),
BackgroundTransparency = 1,
Font = Enum.Font.GothamBold,
Text = "Fly",
TextColor3 = Color3.fromRGB(255, 255, 255),
TextSize = 16,
TextXAlignment = Enum.TextXAlignment.Left
})
-- Логика полета как в примере
local FLY_ENABLED = false
local FLY_SPEED = 1
local FLY_CTRL = {f = 0, b = 0, l = 0, r = 0}
local FLY_LAST_CTRL = {f = 0, b = 0, l = 0, r = 0}
local FLY_BG = nil
local FLY_BV = nil
local FLY_CURRENT_SPEED = 0
local FLY_MAX_SPEED = 50
local FLY_TP_WALKING = false
local FLY_HB_CONNECTIONS = {}
-- Тоггл Fly
local FlyToggle = createUIElement("TextButton", FlyContainer, {
Size = UDim2.new(0, 60, 0, 30),
Position = UDim2.new(1, -70, 0.5, -15),
BackgroundColor3 = Color3.fromRGB(50, 50, 50),
BorderSizePixel = 0,
Text = "OFF",
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextSize = 12,
AutoButtonColor = false
})
FlyToggle.MouseButton1Click:Connect(playButtonSound)
createUIElement("UICorner", FlyToggle, {CornerRadius = UDim.new(0, 15)})
local FlyToggleStroke = createUIElement("UIStroke", FlyToggle, {
Color = Color3.fromRGB(100, 100, 100),
Thickness = 2
})
-- Функция включения полета (логика из примера)
local function startFly()
FLY_ENABLED = true
local player = Player
local character = player.Character
if not character then
FLY_ENABLED = false
return
end
-- Отключаем анимации
local animate = character:FindFirstChild("Animate")
if animate then
animate.Disabled = true
end
-- Отключаем все анимационные треки
local humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid then
FLY_ENABLED = false
return
end
for _, track in next, humanoid:GetPlayingAnimationTracks() do
track:AdjustSpeed(0)
end
-- Отключаем все состояния как в примере
humanoid:SetStateEnabled(Enum.HumanoidStateType.Climbing, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.FallingDown, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Flying, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Freefall, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.GettingUp, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Landed, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Physics, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.PlatformStanding, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Running, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.RunningNoPhysics, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.StrafingNoPhysics, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Swimming, false)
humanoid:ChangeState(Enum.HumanoidStateType.Swimming)
humanoid.PlatformStand = true
-- Создаем телепорт-ходьбу как в примере
for i = 1, FLY_SPEED do
local conn = Services.RunService.Heartbeat:Connect(function()
if FLY_TP_WALKING and character and humanoid and humanoid.Parent then
if humanoid.MoveDirection.Magnitude > 0 then
character:TranslateBy(humanoid.MoveDirection)
end
end
end)
table.insert(FLY_HB_CONNECTIONS, conn)
end
FLY_TP_WALKING = true
-- Определяем часть тела для R6/R15
local bodyPart = nil
if humanoid.RigType == Enum.HumanoidRigType.R6 then
bodyPart = character:FindFirstChild("Torso")
else
bodyPart = character:FindFirstChild("UpperTorso") or character:FindFirstChild("HumanoidRootPart")
end
if not bodyPart then
FLY_ENABLED = false
return
end
-- Создаём BodyGyro
FLY_BG = Instance.new("BodyGyro")
FLY_BG.P = 9e4
FLY_BG.maxTorque = Vector3.new(9e9, 9e9, 9e9)
FLY_BG.cframe = bodyPart.CFrame
FLY_BG.Parent = bodyPart
-- Создаём BodyVelocity
FLY_BV = Instance.new("BodyVelocity")
FLY_BV.velocity = Vector3.new(0, 0.1, 0)
FLY_BV.maxForce = Vector3.new(9e9, 9e9, 9e9)
FLY_BV.Parent = bodyPart
-- Основной цикл полета
task.spawn(function()
FLY_CURRENT_SPEED = 0
while FLY_ENABLED and character and humanoid and humanoid.Health > 0 do
Services.RunService.RenderStepped:Wait()
-- Проверяем, что FLY_BV все еще существует
if not FLY_BV or not FLY_BV.Parent then
break -- Выходим из цикла если BodyVelocity был удален
end
-- Обновляем управление
local moveX, moveZ = 0, 0
if Services.UserInputService:IsKeyDown(Enum.KeyCode.W) then
moveZ = moveZ + 1
end
if Services.UserInputService:IsKeyDown(Enum.KeyCode.S) then
moveZ = moveZ - 1
end
if Services.UserInputService:IsKeyDown(Enum.KeyCode.A) then
moveX = moveX - 1
end
if Services.UserInputService:IsKeyDown(Enum.KeyCode.D) then
moveX = moveX + 1
end
FLY_CTRL = {f = moveZ > 0 and 1 or 0, b = moveZ < 0 and 1 or 0,
l = moveX < 0 and 1 or 0, r = moveX > 0 and 1 or 0}
-- Логика скорости
local ctrlSum = FLY_CTRL.l + FLY_CTRL.r + FLY_CTRL.f + FLY_CTRL.b
if ctrlSum ~= 0 then
FLY_CURRENT_SPEED = FLY_CURRENT_SPEED + 0.5 + (FLY_CURRENT_SPEED / FLY_MAX_SPEED)
if FLY_CURRENT_SPEED > FLY_MAX_SPEED then
FLY_CURRENT_SPEED = FLY_MAX_SPEED
end
elseif FLY_CURRENT_SPEED > 0 then
FLY_CURRENT_SPEED = FLY_CURRENT_SPEED - 1
if FLY_CURRENT_SPEED < 0 then
FLY_CURRENT_SPEED = 0
end
end
-- Применяем движение (только если FLY_BV существует)
if FLY_BV and FLY_BV.Parent then
if (FLY_CTRL.l + FLY_CTRL.r) ~= 0 or (FLY_CTRL.f + FLY_CTRL.b) ~= 0 then
local camera = workspace.CurrentCamera
if camera then
FLY_BV.velocity = ((camera.CoordinateFrame.lookVector * (FLY_CTRL.f + FLY_CTRL.b)) +
((camera.CoordinateFrame * CFrame.new(FLY_CTRL.l + FLY_CTRL.r,
(FLY_CTRL.f + FLY_CTRL.b) * 0.2, 0).p) -
camera.CoordinateFrame.p)) * FLY_CURRENT_SPEED
FLY_LAST_CTRL = {f = FLY_CTRL.f, b = FLY_CTRL.b, l = FLY_CTRL.l, r = FLY_CTRL.r}
end
elseif (FLY_CTRL.l + FLY_CTRL.r) == 0 and (FLY_CTRL.f + FLY_CTRL.b) == 0 and FLY_CURRENT_SPEED > 0 then
local camera = workspace.CurrentCamera
if camera then
FLY_BV.velocity = ((camera.CoordinateFrame.lookVector * (FLY_LAST_CTRL.f + FLY_LAST_CTRL.b)) +
((camera.CoordinateFrame * CFrame.new(FLY_LAST_CTRL.l + FLY_LAST_CTRL.r,
(FLY_LAST_CTRL.f + FLY_LAST_CTRL.b) * 0.2, 0).p) -
camera.CoordinateFrame.p)) * FLY_CURRENT_SPEED
end
else
FLY_BV.velocity = Vector3.new(0, 0, 0)
end
end
-- Обновляем BodyGyro (только если существует)
if FLY_BG and FLY_BG.Parent then
local camera = workspace.CurrentCamera
if camera then
FLY_BG.cframe = camera.CoordinateFrame *
CFrame.Angles(-math.rad((FLY_CTRL.f + FLY_CTRL.b) * 50 * FLY_CURRENT_SPEED / FLY_MAX_SPEED), 0, 0)
end
end
end
-- Если цикл завершился, но FLY_ENABLED еще true, отключаем полет
if FLY_ENABLED then
FLY_ENABLED = false
FlyToggle.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
FlyToggle.Text = "OFF"
FlyToggleStroke.Color = Color3.fromRGB(100, 100, 100)
end
end)
end
-- Функция выключения полета
local function stopFly()
FLY_ENABLED = false
FLY_TP_WALKING = false
-- Отключаем все Heartbeat соединения
for _, conn in ipairs(FLY_HB_CONNECTIONS) do
pcall(function() conn:Disconnect() end)
end
FLY_HB_CONNECTIONS = {}
-- Удаляем BodyGyro и BodyVelocity
if FLY_BG then
pcall(function()
if FLY_BG.Parent then
FLY_BG:Destroy()
end
end)
FLY_BG = nil
end
if FLY_BV then
pcall(function()
if FLY_BV.Parent then
FLY_BV:Destroy()
end
end)
FLY_BV = nil
end
-- Восстанавливаем персонажа
local player = Player
local character = player.Character
if character then
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
pcall(function()
-- Включаем все состояния обратно
humanoid:SetStateEnabled(Enum.HumanoidStateType.Climbing, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.FallingDown, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Flying, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Freefall, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.GettingUp, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Landed, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Physics, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.PlatformStanding, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Running, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.RunningNoPhysics, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.StrafingNoPhysics, true)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Swimming, true)
humanoid:ChangeState(Enum.HumanoidStateType.RunningNoPhysics)
humanoid.PlatformStand = false
end)
end
-- Включаем анимации
local animate = character:FindFirstChild("Animate")
if animate then
animate.Disabled = false
end
end
-- Сбрасываем переменные
FLY_CTRL = {f = 0, b = 0, l = 0, r = 0}
FLY_LAST_CTRL = {f = 0, b = 0, l = 0, r = 0}
FLY_CURRENT_SPEED = 0
end
-- Обработчик тоггла
FlyToggle.MouseButton1Click:Connect(function()
if FLY_ENABLED then
FlyToggle.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
FlyToggle.Text = "OFF"
FlyToggleStroke.Color = Color3.fromRGB(100, 100, 100)
stopFly()
else
FlyToggle.BackgroundColor3 = Color3.fromRGB(230, 57, 51)
FlyToggle.Text = "ON"
FlyToggleStroke.Color = Color3.fromRGB(200, 50, 47)
startFly()
end
end)
-- Обработчик клавиш для движения вверх/вниз
local upPressed = false
local downPressed = false
Services.UserInputService.InputBegan:Connect(function(input, gameProcessed)
if not gameProcessed and FLY_ENABLED and Player.Character then
local rootPart = Player.Character:FindFirstChild("HumanoidRootPart")
if not rootPart then return end
if input.KeyCode == Enum.KeyCode.Space then
upPressed = true
-- Движение вверх
while upPressed and FLY_ENABLED do
if rootPart and rootPart.Parent then
rootPart.CFrame = rootPart.CFrame * CFrame.new(0, 3, 0)
end
task.wait()
end
elseif input.KeyCode == Enum.KeyCode.LeftControl or input.KeyCode == Enum.KeyCode.LeftShift then
downPressed = true
-- Движение вниз
while downPressed and FLY_ENABLED do
if rootPart and rootPart.Parent then
rootPart.CFrame = rootPart.CFrame * CFrame.new(0, -3, 0)
end
task.wait()
end
end
end
end)
Services.UserInputService.InputEnded:Connect(function(input)
if input.KeyCode == Enum.KeyCode.Space then
upPressed = false
elseif input.KeyCode == Enum.KeyCode.LeftControl or input.KeyCode == Enum.KeyCode.LeftShift then
downPressed = false
end
end)
-- Обработчик для персонажа
Player.CharacterAdded:Connect(function(character)
task.wait(0.7)
-- Автоматически выключаем полет при респавне
if FLY_ENABLED then
FLY_ENABLED = false
FlyToggle.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
FlyToggle.Text = "OFF"
FlyToggleStroke.Color = Color3.fromRGB(100, 100, 100)
stopFly()
end
-- Восстанавливаем нормальное состояние
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.PlatformStand = false
end
local animate = character:FindFirstChild("Animate")
if animate then
animate.Disabled = false
end
end)
-- Hover эффекты
FlyToggle.MouseEnter:Connect(function()
if not FLY_ENABLED then
FlyToggle.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
end
end)
FlyToggle.MouseLeave:Connect(function()
if not FLY_ENABLED then
FlyToggle.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
end
end)
-- Обработчик смерти персонажа
Player.CharacterAdded:Connect(function(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.Died:Connect(function()
if FLY_ENABLED then
FLY_ENABLED = false
FlyToggle.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
FlyToggle.Text = "OFF"
FlyToggleStroke.Color = Color3.fromRGB(100, 100, 100)
stopFly()
end
end)
end)
-- Очистка при выходе
Player:GetPropertyChangedSignal("Parent"):Connect(function()
if Player.Parent == nil then
stopFly()
end
end)
-- Auto Farm Page
local AutoFarmPage = TabPages["Auto Farm"]
-- Заголовок для Auto Farm страницы
createUIElement("TextLabel", AutoFarmPage, {
Size = UDim2.new(1, 0, 0, 30),
BackgroundTransparency = 1,
Text = "Auto Farm Features",
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextSize = 18,
Position = UDim2.new(0, 0, 0, 0)
})
-- Вспомогательные функции для персонажа
local function getCharacter()
return Player.Character or Player.CharacterAdded:Wait()
end
local function getHRP()
return getCharacter():WaitForChild("HumanoidRootPart")
end
-- Обработчики событий
CoinCollected.OnClientEvent:Connect(function(_, current, max)
if current == max and not States.resetting and States.autoResetEnabled then
States.resetting = true
States.bag_full = true
local hrp = getHRP()
if States.start_position then
local tween = Services.TweenService:Create(
hrp,
TweenInfo.new(2, Enum.EasingStyle.Linear),
{CFrame = States.start_position}
)
tween:Play()
tween.Completed:Wait()
end
task.wait(0.5)
Player.Character.Humanoid.Health = 0
Player.CharacterAdded:Wait()
task.wait(1.5)
States.resetting = false
States.bag_full = false
end
end)
RoundStart.OnClientEvent:Connect(function()
States.farming = true
if Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") then
States.start_position = Player.Character.HumanoidRootPart.CFrame
end
end)
RoundEnd.OnClientEvent:Connect(function()
States.farming = false
end)
-- Создание переключателей
local function createToggle(parent, name, position, defaultState, callback)
local Container = createUIElement("Frame", parent, {
BackgroundColor3 = Color3.fromRGB(20,20,20),
BackgroundTransparency = 0.1,
Size = UDim2.new(1, -10, 0, 50),
Position = position
})
createUIElement("UICorner", Container, {CornerRadius = UDim.new(0, 10)})
createUIElement("UIStroke", Container, {
Color = Color3.fromRGB(230,57,51),
Thickness = 1.8
})
createUIElement("TextLabel", Container, {
Size = UDim2.new(0.6, 0, 1, 0),
Position = UDim2.new(0, 10, 0, 0),
BackgroundTransparency = 1,
Font = Enum.Font.GothamBold,
Text = name,
TextColor3 = Color3.fromRGB(255, 255, 255),
TextSize = 16,
TextXAlignment = Enum.TextXAlignment.Left
})
local Toggle = createUIElement("TextButton", Container, {
Size = UDim2.new(0, 60, 0, 30),
Position = UDim2.new(1, -70, 0.5, -15),
BackgroundColor3 = Color3.fromRGB(50, 50, 50),
BorderSizePixel = 0,
Text = "OFF",
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextSize = 12,
AutoButtonColor = false
})
Toggle.MouseButton1Click:Connect(playButtonSound)
createUIElement("UICorner", Toggle, {CornerRadius = UDim.new(0, 15)})
local ToggleStroke = createUIElement("UIStroke", Toggle, {
Color = Color3.fromRGB(100, 100, 100),
Thickness = 2
})
local state = defaultState or false
local function updateToggle()
if state then
Toggle.BackgroundColor3 = Color3.fromRGB(230, 57, 51)
Toggle.Text = "ON"
ToggleStroke.Color = Color3.fromRGB(200, 50, 47)
else
Toggle.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
Toggle.Text = "OFF"
ToggleStroke.Color = Color3.fromRGB(100, 100, 100)
end
end
updateToggle()
Toggle.MouseButton1Click:Connect(function()
state = not state
updateToggle()
if callback then callback(state) end
end)
Toggle.MouseEnter:Connect(function()
if not state then
Toggle.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
end
end)
Toggle.MouseLeave:Connect(function()
if not state then
Toggle.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
end
end)
return Toggle, function() return state end
end
-- Coin Autofarm
local CoinAutofarmToggle, getCoinAutofarmState = createToggle(AutoFarmPage, "Coin Autofarm", UDim2.new(0, 0, 0, 40), false)
-- Auto Reset
local AutoResetToggle, getAutoResetState = createToggle(AutoFarmPage, "Auto Reset", UDim2.new(0, 0, 0, 100), false, function(state)
States.autoResetEnabled = state
end)
-- Auto Farm логика
local AutoFarmRunning = false
local farmConnection
local function get_nearest_coin()
local hrp = getHRP()
local closest, dist = nil, math.huge
for _, m in pairs(Services.Workspace:GetChildren()) do
if m:FindFirstChild("CoinContainer") then
for _, coin in pairs(m.CoinContainer:GetChildren()) do
if coin:IsA("BasePart") and coin:FindFirstChild("TouchInterest") then
local d = (hrp.Position - coin.Position).Magnitude
if d < dist then
closest, dist = coin, d
end
end
end
end
end
return closest, dist
end
local function StartAutoFarm()
if AutoFarmRunning then return end
AutoFarmRunning = true
farmConnection = task.spawn(function()
while getCoinAutofarmState() and AutoFarmRunning do
if States.farming and not States.bag_full then
local coin, dist = get_nearest_coin()
if coin then
local hrp = getHRP()
if dist > 150 then
hrp.CFrame = coin.CFrame
else
local tween = Services.TweenService:Create(hrp, TweenInfo.new(dist / 20, Enum.EasingStyle.Linear), {CFrame = coin.CFrame})
tween:Play()
repeat
task.wait(0.1)
until not coin:FindFirstChild("TouchInterest") or not States.farming or not getCoinAutofarmState()
tween:Cancel()
end
end
end
task.wait(0.2)
end
end)
end
local function StopAutoFarm()
AutoFarmRunning = false
if farmConnection then
task.cancel(farmConnection)
farmConnection = nil
end
end
-- Обновление состояния Coin Autofarm
CoinAutofarmToggle:GetPropertyChangedSignal("Text"):Connect(function()
if getCoinAutofarmState() then
StartAutoFarm()
else
StopAutoFarm()
end
end)
-- Anti-AFK
Player.Idled:Connect(function()
Services.VirtualUser:CaptureController()
Services.VirtualUser:ClickButton2(Vector2.new())
end)
-- Обработчики персонажа
Player.CharacterAdded:Connect(function()
task.wait(1)
if getCoinAutofarmState() and AutoFarmRunning then
StopAutoFarm()
task.wait(0.5)
if getCoinAutofarmState() then
StartAutoFarm()
end
end
States.resetting = false
States.bag_full = false
end)
-- Обработчики фокуса окна
Services.UserInputService.WindowFocusReleased:Connect(function()
if getCoinAutofarmState() then
StopAutoFarm()
end
end)
Services.UserInputService.WindowFocused:Connect(function()
if getCoinAutofarmState() and not AutoFarmRunning then
StartAutoFarm()
end
end)
-- Visual Page
local VisualPage = TabPages["Visual"]
-- Заголовок для Visual страницы
createUIElement("TextLabel", VisualPage, {
Size = UDim2.new(1, 0, 0, 30),
BackgroundTransparency = 1,
Text = "Visual Features",
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextSize = 18,
Position = UDim2.new(0, 0, 0, 0)
})
-- ESP Highlight
local EspHighlightContainer = createUIElement("Frame", VisualPage, {
BackgroundColor3 = Color3.fromRGB(20,20,20),
BackgroundTransparency = 0.1,
Size = UDim2.new(1, -10, 0, 240),
Position = UDim2.new(0, 0, 0, 40)
})
createUIElement("UICorner", EspHighlightContainer, {CornerRadius = UDim.new(0, 10)})
createUIElement("UIStroke", EspHighlightContainer, {
Color = Color3.fromRGB(230,57,51),
Thickness = 1.8
})
createUIElement("TextLabel", EspHighlightContainer, {
Size = UDim2.new(1, -20, 0, 30),
Position = UDim2.new(0, 10, 0, 0),
BackgroundTransparency = 1,
Font = Enum.Font.GothamBold,
Text = "ESP Highlight",
TextColor3 = Color3.fromRGB(255, 255, 255),
TextSize = 16,
TextXAlignment = Enum.TextXAlignment.Left
})
-- Функция создания переключателей ESP
local function createESPToggle(name, position, roleKey)
local Container = createUIElement("Frame", EspHighlightContainer, {
BackgroundColor3 = Color3.fromRGB(25,25,25),
BackgroundTransparency = 0.1,
Size = UDim2.new(1, -20, 0, 35),
Position = position
})
createUIElement("UICorner", Container, {CornerRadius = UDim.new(0, 8)})
createUIElement("UIStroke", Container, {
Color = Color3.fromRGB(60,60,60),
Thickness = 1
})
createUIElement("TextLabel", Container, {
Size = UDim2.new(0.6, 0, 1, 0),
Position = UDim2.new(0, 10, 0, 0),
BackgroundTransparency = 1,
Font = Enum.Font.GothamBold,
Text = name,
TextColor3 = Color3.fromRGB(255, 255, 255),
TextSize = 14,
TextXAlignment = Enum.TextXAlignment.Left
})
local Toggle = createUIElement("TextButton", Container, {
Size = UDim2.new(0, 60, 0, 25),
Position = UDim2.new(1, -70, 0.5, -12.5),
BackgroundColor3 = StateManagers.ESP[roleKey] and Color3.fromRGB(230, 57, 51) or Color3.fromRGB(50, 50, 50),
BorderSizePixel = 0,
Text = StateManagers.ESP[roleKey] and "ON" or "OFF",
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextSize = 12,
AutoButtonColor = false
})
Toggle.MouseButton1Click:Connect(playButtonSound)
createUIElement("UICorner", Toggle, {CornerRadius = UDim.new(0, 12)})
local ToggleStroke = createUIElement("UIStroke", Toggle, {
Color = StateManagers.ESP[roleKey] and Color3.fromRGB(200, 50, 47) or Color3.fromRGB(100, 100, 100),
Thickness = 2
})
Toggle.MouseButton1Click:Connect(function()
StateManagers.ESP[roleKey] = not StateManagers.ESP[roleKey]
Toggle.BackgroundColor3 = StateManagers.ESP[roleKey] and Color3.fromRGB(230, 57, 51) or Color3.fromRGB(50, 50, 50)
Toggle.Text = StateManagers.ESP[roleKey] and "ON" or "OFF"
ToggleStroke.Color = StateManagers.ESP[roleKey] and Color3.fromRGB(200, 50, 47) or Color3.fromRGB(100, 100, 100)
if StateManagers.ESP.Enabled then
UpdateAllHighlights()
end
end)
return Toggle
end
-- Создание всех ESP переключателей
createESPToggle("Innocent", UDim2.new(0, 0, 0, 40), "Innocent")
createESPToggle("Murder", UDim2.new(0, 0, 0, 80), "Murder")
createESPToggle("Sheriff", UDim2.new(0, 0, 0, 120), "Sheriff")
createESPToggle("Hero", UDim2.new(0, 0, 0, 160), "Hero")
-- Главный переключатель ESP
local MainToggleContainer = createUIElement("Frame", EspHighlightContainer, {
BackgroundColor3 = Color3.fromRGB(25,25,25),
BackgroundTransparency = 0.1,
Size = UDim2.new(1, -20, 0, 35),
Position = UDim2.new(0, 0, 0, 200)
})
createUIElement("UICorner", MainToggleContainer, {CornerRadius = UDim.new(0, 8)})
createUIElement("UIStroke", MainToggleContainer, {
Color = Color3.fromRGB(60,60,60),
Thickness = 1
})
createUIElement("TextLabel", MainToggleContainer, {
Size = UDim2.new(0.6, 0, 1, 0),
Position = UDim2.new(0, 10, 0, 0),
BackgroundTransparency = 1,
Font = Enum.Font.GothamBold,
Text = "Enable ESP",
TextColor3 = Color3.fromRGB(255, 255, 255),
TextSize = 14,
TextXAlignment = Enum.TextXAlignment.Left
})
local MainToggle = createUIElement("TextButton", MainToggleContainer, {
Size = UDim2.new(0, 60, 0, 25),
Position = UDim2.new(1, -70, 0.5, -12.5),
BackgroundColor3 = Color3.fromRGB(50, 50, 50),
BorderSizePixel = 0,
Text = "OFF",
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextSize = 12,
AutoButtonColor = false
})
MainToggle.MouseButton1Click:Connect(playButtonSound)
createUIElement("UICorner", MainToggle, {CornerRadius = UDim.new(0, 12)})
local MainToggleStroke = createUIElement("UIStroke", MainToggle, {
Color = Color3.fromRGB(100, 100, 100),
Thickness = 2
})
MainToggle.MouseButton1Click:Connect(function()
StateManagers.ESP.Enabled = not StateManagers.ESP.Enabled
MainToggle.BackgroundColor3 = StateManagers.ESP.Enabled and Color3.fromRGB(230, 57, 51) or Color3.fromRGB(50, 50, 50)
MainToggle.Text = StateManagers.ESP.Enabled and "ON" or "OFF"
MainToggleStroke.Color = StateManagers.ESP.Enabled and Color3.fromRGB(200, 50, 47) or Color3.fromRGB(100, 100, 100)
if StateManagers.ESP.Enabled then
-- Запускаем ESP систему
UpdateAllHighlights()
else
-- Очищае