
Key Required VerifiedUniversal

--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local CoreGui = game:GetService("CoreGui")
local Lighting = game:GetService("Lighting")
local UserInputService = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
-- ========================================================
-- 0. ЭКРАН ЗАГРУЗКИ (LOADING SCREEN)
-- ========================================================
local PreLoadGui = Instance.new("ScreenGui")
PreLoadGui.Name = "c00lhackPreLoad"
PreLoadGui.ResetOnSpawn = false
pcall(function() PreLoadGui.Parent = CoreGui end)
if not PreLoadGui.Parent then PreLoadGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end
local LoaderBg = Instance.new("Frame")
LoaderBg.Size = UDim2.new(1, 0, 1, 0)
LoaderBg.BackgroundColor3 = Color3.fromRGB(20, 26, 38)
LoaderBg.Parent = PreLoadGui
local LoaderGradient = Instance.new("UIGradient")
LoaderGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(18, 24, 35)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(30, 42, 60))
})
LoaderGradient.Rotation = 90
LoaderGradient.Parent = LoaderBg
local LoaderContainer = Instance.new("Frame")
LoaderContainer.Size = UDim2.new(0, 420, 0, 180)
LoaderContainer.Position = UDim2.new(0.5, -210, 0.5, -90)
LoaderContainer.BackgroundTransparency = 1
LoaderContainer.Parent = LoaderBg
local LoaderTitle = Instance.new("TextLabel")
LoaderTitle.Size = UDim2.new(1, 0, 0, 40)
LoaderTitle.Position = UDim2.new(0, 0, 0, 0)
LoaderTitle.BackgroundTransparency = 1
LoaderTitle.Text = "c00lhack loader"
LoaderTitle.TextColor3 = Color3.fromRGB(0, 230, 255)
LoaderTitle.TextSize = 28
LoaderTitle.Font = Enum.Font.GothamBold
LoaderTitle.Parent = LoaderContainer
local LoaderStatus = Instance.new("TextLabel")
LoaderStatus.Size = UDim2.new(1, 0, 0, 25)
LoaderStatus.Position = UDim2.new(0, 0, 0, 45)
LoaderStatus.BackgroundTransparency = 1
LoaderStatus.Text = "Синхронизация сетевых лучей..."
LoaderStatus.TextColor3 = Color3.fromRGB(180, 205, 225)
LoaderStatus.TextSize = 14
LoaderStatus.Font = Enum.Font.GothamMedium
LoaderStatus.Parent = LoaderContainer
local BarBackground = Instance.new("Frame")
BarBackground.Size = UDim2.new(1, 0, 0, 12)
BarBackground.Position = UDim2.new(0, 0, 0, 95)
BarBackground.BackgroundColor3 = Color3.fromRGB(35, 48, 68)
BarBackground.BorderSizePixel = 0
BarBackground.Parent = LoaderContainer
local BarCorner = Instance.new("UICorner")
BarCorner.CornerRadius = UDim.new(1, 0)
BarCorner.Parent = BarBackground
local BarFill = Instance.new("Frame")
BarFill.Size = UDim2.new(0, 0, 1, 0)
BarFill.BackgroundColor3 = Color3.fromRGB(0, 255, 170)
BarFill.BorderSizePixel = 0
BarFill.Parent = BarBackground
local BarFillCorner = Instance.new("UICorner")
BarFillCorner.CornerRadius = UDim.new(1, 0)
BarFillCorner.Parent = BarFill
local PercentText = Instance.new("TextLabel")
PercentText.Size = UDim2.new(1, 0, 0, 25)
PercentText.Position = UDim2.new(0, 0, 0, 118)
PercentText.BackgroundTransparency = 1
PercentText.Text = "0%"
PercentText.TextColor3 = Color3.fromRGB(210, 230, 250)
PercentText.TextSize = 13
PercentText.Font = Enum.Font.GothamBold
PercentText.Parent = LoaderContainer
task.spawn(function()
local steps = {
{text = "Проверка окружения и сервисов...", progress = 0.15, time = 0.3},
{text = "Загрузка модулей Rayfield...", progress = 0.40, time = 0.4},
{text = "Инициализация Gear-систем...", progress = 0.70, time = 0.5},
{text = "Подготовка интерфейса c00lhack...", progress = 0.95, time = 0.3},
{text = "Готово!", progress = 1.0, time = 0.2}
}
for _, step in ipairs(steps) do
LoaderStatus.Text = step.text
TweenService:Create(BarFill, TweenInfo.new(step.time, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
Size = UDim2.new(step.progress, 0, 1, 0)
}):Play()
local startP = tonumber(PercentText.Text:match("%d+")) or 0
local targetP = math.floor(step.progress * 100)
local tDuration = step.time
local tStart = tick()
while tick() - tStart < tDuration do
local alpha = (tick() - tStart) / tDuration
local currentP = math.floor(startP + (targetP - startP) * alpha)
PercentText.Text = currentP .. "%"
task.wait()
end
PercentText.Text = targetP .. "%"
end
task.wait(0.3)
TweenService:Create(LoaderBg, TweenInfo.new(0.5), {BackgroundTransparency = 1}):Play()
for _, child in ipairs(LoaderContainer:GetDescendants()) do
if child:IsA("TextLabel") then
TweenService:Create(child, TweenInfo.new(0.4), {TextTransparency = 1}):Play()
elseif child:IsA("Frame") then
TweenService:Create(child, TweenInfo.new(0.4), {BackgroundTransparency = 1}):Play()
end
end
task.wait(0.5)
PreLoadGui:Destroy()
end)
task.wait(2.2)
-- ========================================================
-- 1. ЗАСТАВОЧНЫЙ ЭКРАН (c00lhack)
-- ========================================================
local SplashGui = Instance.new("ScreenGui")
SplashGui.Name = "c00lhackSplash"
SplashGui.ResetOnSpawn = false
pcall(function() SplashGui.Parent = CoreGui end)
if not SplashGui.Parent then SplashGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end
local Background = Instance.new("Frame")
Background.Size = UDim2.new(1, 0, 1, 0)
Background.BackgroundColor3 = Color3.fromRGB(22, 28, 40)
Background.BackgroundTransparency = 1
Background.Parent = SplashGui
local UIGradient = Instance.new("UIGradient")
UIGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(18, 28, 42)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(28, 42, 60)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(18, 24, 36))
})
UIGradient.Rotation = 45
UIGradient.Parent = Background
local Container = Instance.new("Frame")
Container.Size = UDim2.new(0, 500, 0, 250)
Container.Position = UDim2.new(0.5, -250, 0.5, -125)
Container.BackgroundTransparency = 1
Container.Parent = Background
local LogoIcon = Instance.new("TextLabel")
LogoIcon.Size = UDim2.new(0, 120, 0, 100)
LogoIcon.Position = UDim2.new(0, 0, 0.1, 0)
LogoIcon.BackgroundTransparency = 1
LogoIcon.Text = "CH"
LogoIcon.TextColor3 = Color3.fromRGB(0, 230, 255)
LogoIcon.TextSize = 75
LogoIcon.Font = Enum.Font.GothamBold
LogoIcon.TextTransparency = 1
LogoIcon.Parent = Container
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(0, 400, 0, 70)
Title.Position = UDim2.new(0, 130, 0.15, 0)
Title.BackgroundTransparency = 1
Title.Text = "c00lhack"
Title.TextColor3 = Color3.fromRGB(0, 255, 170)
Title.TextSize = 50
Title.Font = Enum.Font.GothamBold
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.TextTransparency = 1
Title.Parent = Container
local Subtitle = Instance.new("TextLabel")
Subtitle.Size = UDim2.new(0, 350, 0, 30)
Subtitle.Position = UDim2.new(0, 135, 0.55, 0)
Subtitle.BackgroundTransparency = 1
Subtitle.Text = "TECH | SECURITY | CODE"
Subtitle.TextColor3 = Color3.fromRGB(180, 210, 230)
Subtitle.TextSize = 16
Subtitle.Font = Enum.Font.GothamMedium
Subtitle.TextXAlignment = Enum.TextXAlignment.Left
Subtitle.TextTransparency = 1
Subtitle.Parent = Container
TweenService:Create(Background, TweenInfo.new(0.4), {BackgroundTransparency = 0}):Play()
task.wait(0.2)
TweenService:Create(LogoIcon, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
TweenService:Create(Title, TweenInfo.new(0.5), {TextTransparency = 0}):Play()
TweenService:Create(Subtitle, TweenInfo.new(0.6), {TextTransparency = 0.2}):Play()
task.wait(2.0)
TweenService:Create(LogoIcon, TweenInfo.new(0.4), {TextTransparency = 1}):Play()
TweenService:Create(Title, TweenInfo.new(0.4), {TextTransparency = 1}):Play()
TweenService:Create(Subtitle, TweenInfo.new(0.4), {TextTransparency = 1}):Play()
TweenService:Create(Background, TweenInfo.new(0.5), {BackgroundTransparency = 1}):Play()
task.wait(0.5)
SplashGui:Destroy()
-- ========================================================
-- 2. СЕТЕВАЯ РЕПЛИКАЦИЯ
-- ========================================================
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RemoteEventName = "c00lhackUniversalEmoteSync"
local emoteEvent = ReplicatedStorage:FindFirstChild(RemoteEventName)
if not emoteEvent then
if RunService:IsServer() or pcall(function() Instance.new("RemoteEvent").Parent = ReplicatedStorage end) then
if not ReplicatedStorage:FindFirstChild(RemoteEventName) then
local ev = Instance.new("RemoteEvent")
ev.Name = RemoteEventName
ev.Parent = ReplicatedStorage
end
emoteEvent = ReplicatedStorage:FindFirstChild(RemoteEventName)
end
end
local function EnableNetworkBypass(char)
if not char then return end
pcall(function()
for _, part in ipairs(char:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
local hrp = char:FindFirstChild("HumanoidRootPart")
if hrp then
hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
end
end)
end
-- ========================================================
-- 3. ОСНОВНОЙ ИНТЕРФЕЙС RAYFIELD
-- ========================================================
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
local Window = Rayfield:CreateWindow({
Name = "c00lhack",
LoadingTitle = "Show C00lhack",
LoadingSubtitle = "TECH | SECURITY | CODE",
ConfigurationSaving = { Enabled = false }
})
local SelectedPlayerName = ""
local function GetPlayerNames()
local names = {}
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer then table.insert(names, player.Name) end
end
return names
end
local MainTab = Window:CreateTab("Главная", 4483345998)
local VisualTab = Window:CreateTab("Визуал", 4483345998)
local EmotesTab = Window:CreateTab("Эмоции R15 & R6", 4483345998)
local VRTab = Window:CreateTab("VR & Fun", 4483345998)
-- --- MAIN ---
local Dropdown = MainTab:CreateDropdown({
Name = "Выберите игрока",
Options = GetPlayerNames(),
CurrentOption = {""},
MultipleOptions = false,
Flag = "PlayerDropdown",
Callback = function(Option) SelectedPlayerName = type(Option) == "table" and Option[1] or Option end,
})
MainTab:CreateButton({ Name = "Обновить список", Callback = function() Dropdown:Refresh(GetPlayerNames()) end })
MainTab:CreateButton({
Name = "Телепорт к игроку",
Callback = function()
if SelectedPlayerName == "" then return end
local TargetPlayer = Players:FindFirstChild(SelectedPlayerName)
if TargetPlayer and TargetPlayer.Character and TargetPlayer.Character:FindFirstChild("HumanoidRootPart") then
LocalPlayer.Character.HumanoidRootPart.CFrame = TargetPlayer.Character.HumanoidRootPart.CFrame + Vector3.new(0, 2, 0)
Rayfield:Notify({Title = "c00lhack", Content = "Телепортация успешна!", Duration = 2})
end
end
})
local DoingWeirdThings = false
MainTab:CreateToggle({
Name = "Сделать странные вещи (Вкл/Выкл)",
CurrentValue = false,
Flag = "WeirdThingsToggle",
Callback = function(Value)
DoingWeirdThings = Value
if DoingWeirdThings then
if SelectedPlayerName == "" then
Rayfield:Notify({Title = "c00lhack", Content = "Сначала выберите игрока!", Duration = 2})
DoingWeirdThings = false
return
end
Rayfield:Notify({Title = "c00lhack", Content = "Запущено!", Duration = 1.5})
task.spawn(function()
while DoingWeirdThings do
RunService.Heartbeat:Wait()
local char = LocalPlayer.Character
local TargetPlayer = Players:FindFirstChild(SelectedPlayerName)
if char and char:FindFirstChild("HumanoidRootPart") and TargetPlayer and TargetPlayer.Character and TargetPlayer.Character:FindFirstChild("HumanoidRootPart") then
local LocalHR = char.HumanoidRootPart
local TargetHR = TargetPlayer.Character.HumanoidRootPart
for _, part in pairs(char:GetDescendants()) do
if part:IsA("BasePart") then part.CanCollide = false end
end
local speed = 6
local t = tick() * speed
local backDistance = 3.5 + (math.sin(t) * 1.5)
LocalHR.CFrame = TargetHR.CFrame * CFrame.new(0, 0, backDistance)
else
if SelectedPlayerName == "" or not TargetPlayer then
Rayfield:Notify({Title = "c00lhack", Content = "Игрок не найден!", Duration = 2})
DoingWeirdThings = false
break
end
end
end
end)
else
Rayfield:Notify({Title = "c00lhack", Content = "Остановлено!", Duration = 1.5})
end
end,
})
MainTab:CreateButton({
Name = "Bomb Gear",
Callback = function()
local gearId = 11563251
local success, result = pcall(function() return game:GetObjects("rbxassetid://" .. gearId) end)
local tool = nil
local handle = nil
if success and result and result[1] then
tool = result[1]:IsA("Tool") and result[1] or (result[1]:FindFirstChildOfClass("Tool") or Instance.new("Tool"))
tool.Name = "Time Bomb"
handle = tool:FindFirstChild("Handle")
end
if not handle then
tool = Instance.new("Tool")
tool.Name = "Time Bomb"
handle = Instance.new("Part")
handle.Name = "Handle"
handle.Size = Vector3.new(2, 2, 2)
handle.Shape = Enum.PartType.Ball
handle.Material = Enum.Material.Neon
handle.Color = Color3.fromRGB(15, 15, 15)
handle.Parent = tool
end
tool.Parent = LocalPlayer.Backpack
tool.Activated:Connect(function()
local char = LocalPlayer.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local bombClone = handle:Clone()
bombClone.CFrame = char.HumanoidRootPart.CFrame + (char.HumanoidRootPart.CFrame.LookVector * 4)
bombClone.Anchored = false
bombClone.CanCollide = true
bombClone.Parent = workspace
local fire = Instance.new("Fire", bombClone)
fire.Size = 4
task.spawn(function()
for i = 1, 5 do
task.wait(0.2)
end
local explosion = Instance.new("Explosion", workspace)
explosion.Position = bombClone.Position
explosion.BlastRadius = 20
explosion.BlastPressure = 500000
local boomSound = Instance.new("Sound", workspace)
boomSound.SoundId = "rbxassetid://3802269741"
boomSound.Volume = 5
boomSound:Play()
task.spawn(function()
local playerChar = LocalPlayer.Character
local hum = playerChar and playerChar:FindFirstChildOfClass("Humanoid")
if hum then
local duration = 0.8
local intensity = 2.5
local startTime = tick()
while tick() - startTime < duration do
local x = (math.random() - 0.5) * intensity
local y = (math.random() - 0.5) * intensity
local z = (math.random() - 0.5) * intensity
hum.CameraOffset = Vector3.new(x, y, z)
task.wait()
end
hum.CameraOffset = Vector3.new(0, 0, 0)
end
end)
bombClone:Destroy()
task.wait(4)
boomSound:Destroy()
end)
end)
Rayfield:Notify({Title = "c00lhack", Content = "Оригинальная бомба выдана!", Duration = 2})
end
})
MainTab:CreateButton({
Name = "Sword Gear",
Callback = function()
local swordId = 159229806
local success, result = pcall(function() return game:GetObjects("rbxassetid://" .. swordId) end)
local tool = nil
if success and result and result[1] then
tool = result[1]:IsA("Tool") and result[1] or (result[1]:FindFirstChildOfClass("Tool") or Instance.new("Tool"))
tool.Name = "Sword"
else
tool = Instance.new("Tool")
tool.Name = "Sword"
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Size = Vector3.new(1, 1, 4)
handle.Material = Enum.Material.Metal
handle.Color = Color3.fromRGB(200, 200, 200)
handle.Parent = tool
end
tool.Parent = LocalPlayer.Backpack
tool.Activated:Connect(function()
local char = LocalPlayer.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local hrp = char.HumanoidRootPart
hrp.CFrame = hrp.CFrame * CFrame.Angles(0, math.rad(90), 0)
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local targetRoot = player.Character.HumanoidRootPart
if (hrp.Position - targetRoot.Position).Magnitude < 15 then
local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
end
end
end)
Rayfield:Notify({Title = "c00lhack", Content = "Оригинальный меч выдан!", Duration = 2})
end
})
MainTab:CreateButton({
Name = "Rocket Launcher Gear",
Callback = function()
local gearId = 32356064
local success, result = pcall(function() return game:GetObjects("rbxassetid://" .. gearId) end)
local tool = nil
if success and result and #result > 0 then
local item = result[1]
tool = item:IsA("Tool") and item or item:FindFirstChildOfClass("Tool")
if tool then
for _, v in ipairs(tool:GetDescendants()) do
if v:IsA("Script") or v:IsA("LocalScript") then
v:Destroy()
end
end
end
end
if not tool then
tool = Instance.new("Tool")
tool.Name = "Rocket Launcher"
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Size = Vector3.new(1, 1, 4)
handle.Parent = tool
local mesh = Instance.new("SpecialMesh", handle)
mesh.MeshId = "rbxassetid://32354807"
mesh.TextureId = "rbxassetid://32354784"
mesh.Scale = Vector3.new(1, 1, 1)
end
tool.Parent = LocalPlayer.Backpack
tool.Activated:Connect(function()
local char = LocalPlayer.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local lookVector = char.HumanoidRootPart.CFrame.LookVector
local rocketBlock = Instance.new("Part")
rocketBlock.Name = "RocketBlock"
rocketBlock.Size = Vector3.new(0.4, 0.4, 0.8)
rocketBlock.Color = Color3.fromRGB(255, 130, 0)
rocketBlock.Material = Enum.Material.Neon
rocketBlock.CanCollide = true
rocketBlock.CFrame = CFrame.new(char.HumanoidRootPart.Position + lookVector * 5, char.HumanoidRootPart.Position + lookVector * 6)
rocketBlock.Parent = workspace
local bv = Instance.new("BodyVelocity")
bv.Velocity = lookVector * 160
bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
bv.Parent = rocketBlock
local bg = Instance.new("BodyGyro")
bg.CFrame = rocketBlock.CFrame
bg.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
bg.Parent = rocketBlock
local launchSound = Instance.new("Sound")
launchSound.SoundId = "rbxassetid://12222095"
launchSound.Volume = 2
launchSound.Parent = rocketBlock
launchSound:Play()
local exploded = false
rocketBlock.Touched:Connect(function(hit)
if exploded then return end
if hit:IsDescendantOf(char) or hit == rocketBlock or hit.Parent == tool then return end
exploded = true
local expl = Instance.new("Explosion")
expl.Position = rocketBlock.Position
expl.BlastRadius = 15
expl.BlastPressure = 500000
expl.Parent = workspace
local boomSound = Instance.new("Sound")
boomSound.SoundId = "rbxassetid://12221984"
boomSound.Volume = 3
boomSound.Parent = workspace
boomSound:Play()
rocketBlock:Destroy()
task.wait(2)
boomSound:Destroy()
end)
task.delay(5, function()
if rocketBlock and rocketBlock.Parent then rocketBlock:Destroy() end
end)
end)
Rayfield:Notify({Title = "c00lhack", Content = "Оригинальный Rocket Launcher выдан!", Duration = 2})
end
})
-- --- ДРОБОВИК GEAR ---
MainTab:CreateButton({
Name = "Дробовик (Shotgun Gear)",
Callback = function()
local gearId = 42845609
local success, result = pcall(function() return game:GetObjects("rbxassetid://" .. gearId) end)
local tool = nil
if success and result and result[1] then
tool = result[1]:IsA("Tool") and result[1] or (result[1]:FindFirstChildOfClass("Tool") or Instance.new("Tool"))
tool.Name = "Shotgun"
else
tool = Instance.new("Tool")
tool.Name = "Shotgun"
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Size = Vector3.new(1, 1, 3)
handle.Material = Enum.Material.Metal
handle.Color = Color3.fromRGB(40, 40, 40)
handle.Parent = tool
end
tool.Parent = LocalPlayer.Backpack
task.wait(0.1)
LocalPlayer.Character.Humanoid:EquipTool(tool)
LocalPlayer.CameraMinZoomDistance = 0.5
LocalPlayer.CameraMaxZoomDistance = 0.5
tool.Activated:Connect(function()
local char = LocalPlayer.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local hrp = char.HumanoidRootPart
local shotSound = Instance.new("Sound")
shotSound.SoundId = "rbxassetid://2811598570"
shotSound.Volume = 10
shotSound.Parent = workspace
shotSound:Play()
task.delay(3, function()
if shotSound then shotSound:Destroy() end
end)
task.spawn(function()
local hum = char:FindFirstChildOfClass("Humanoid")
if hum then
local duration = 1.2
local intensity = 4.0
local startTime = tick()
while tick() - startTime < duration do
local x = (math.random() - 0.5) * intensity
local y = (math.random() - 0.5) * intensity
local z = (math.random() - 0.5) * intensity
hum.CameraOffset = Vector3.new(x, y, z)
task.wait()
end
hum.CameraOffset = Vector3.new(0, 0, 0)
end
end)
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local targetRoot = player.Character.HumanoidRootPart
if (hrp.Position - targetRoot.Position).Magnitude < 40 then
local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
end
end
end)
Rayfield:Notify({Title = "c00lhack", Content = "Дробовик выдан, включено первое лицо!", Duration = 2})
end
})
MainTab:CreateButton({
Name = "Супер Флинг (Крестик)",
Callback = function()
if SelectedPlayerName == "" then
Rayfield:Notify({Title = "c00lhack", Content = "Сначала выберите игрока!", Duration = 2})
return
end
local TargetPlayer = Players:FindFirstChild(SelectedPlayerName)
local char = LocalPlayer.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local LocalHR = char.HumanoidRootPart
if TargetPlayer and TargetPlayer.Character and TargetPlayer.Character:FindFirstChild("HumanoidRootPart") then
local TargetHR = TargetPlayer.Character.HumanoidRootPart
if not char:FindFirstChildOfClass("ForceField") then Instance.new("ForceField", char) end
local bav = Instance.new("BodyAngularVelocity", LocalHR)
bav.MaxTorque = Vector3.new(1, 1, 1) * math.huge
bav.AngularVelocity = Vector3.new(999999, 999999, 999999)
local bv = Instance.new("BodyVelocity", LocalHR)
bv.MaxForce = Vector3.new(1, 1, 1) * math.huge
bv.Velocity = Vector3.new(0, 999999, 0)
local crossOffsets = {CFrame.new(-5, 0, 0), CFrame.new(5, 0, 0), CFrame.new(0, 5, 0), CFrame.new(0, -5, 0)}
local duration = 1.2
local startTick = tick()
local step = 1
Rayfield:Notify({Title = "c00lhack", Content = "Запущен супер флинг!", Duration = 1.5})
while tick() - startTick < duration do
RunService.Heartbeat:Wait()
for _, part in pairs(char:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end
if TargetPlayer.Character and TargetPlayer.Character:FindFirstChild("HumanoidRootPart") then
LocalHR.CFrame = TargetHR.CFrame * crossOffsets[step] * CFrame.Angles(math.rad(math.random(-180, 180)), math.rad(math.random(-180, 180)), 0)
LocalHR.AssemblyLinearVelocity = Vector3.new(0, 500000, 0)
step = (step % #crossOffsets) + 1
else break end
end
bav:Destroy()
bv:Destroy()
else
Rayfield:Notify({Title = "c00lhack", Content = "Игрок не найден!", Duration = 2})
end
end,
})
-- --- AIMLOCK MM2 ---
local AimLockMM2Enabled = false
local AimLockConnection = nil
local CurrentMurderer = nil
local function FindMurderer()
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
local backpack = player:FindFirstChild("Backpack")
local char = player.Character
local hasKnife = (backpack and backpack:FindFirstChild("Knife")) or (char and char:FindFirstChild("Knife"))
if hasKnife then
return player
end
end
end
return nil
end
local function ApplyMurdererHighlight(player)
if not player or not player.Character then return end
local char = player.Character
local highlight = char:FindFirstChild("c00lMurdererHighlight")
if not highlight then
highlight = Instance.new("Highlight")
highlight.Name = "c00lMurdererHighlight"
highlight.FillColor = Color3.fromRGB(255, 0, 0)
highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
highlight.FillTransparency = 0.3
highlight.OutlineTransparency = 0
highlight.Adornee = char
highlight.Parent = char
end
end
local function RemoveMurdererHighlight()
for _, player in ipairs(Players:GetPlayers()) do
if player.Character then
local hl = player.Character:FindFirstChild("c00lMurdererHighlight")
if hl then hl:Destroy() end
end
end
end
MainTab:CreateToggle({
Name = "AimLock на Мардера (MM2)",
CurrentValue = false,
Flag = "AimLockMM2Toggle",
Callback = function(Value)
AimLockMM2Enabled = Value
if AimLockMM2Enabled then
Rayfield:Notify({Title = "c00lhack", Content = "AimLock & Chams MM2: ВКЛ", Duration = 2})
AimLockConnection = RunService.RenderStepped:Connect(function()
if not AimLockMM2Enabled then return end
CurrentMurderer = FindMurderer()
if CurrentMurderer and CurrentMurderer.Character then
local head = CurrentMurderer.Character:FindFirstChild("Head")
local hum = CurrentMurderer.Character:FindFirstChildOfClass("Humanoid")
ApplyMurdererHighlight(CurrentMurderer)
if head and hum and hum.Health > 0 then
local camera = workspace.CurrentCamera
camera.CFrame = CFrame.new(camera.CFrame.Position, head.Position)
end
else
RemoveMurdererHighlight()
end
end)
else
if AimLockConnection then
AimLockConnection:Disconnect()
AimLockConnection = nil
end
RemoveMurdererHighlight()
CurrentMurderer = nil
Rayfield:Notify({Title = "c00lhack", Content = "AimLock & Chams MM2: ВЫКЛ", Duration = 1.5})
end
end,
})
-- --- SPINBOT & BHOP ---
local SpinBhopEnabled = false
local SpinBhopConnection = nil
local SpinSpeed = 100
MainTab:CreateInput({
Name = "Скорость SpinBot (градусы)",
PlaceholderText = "100",
RemoveTextAfterFocusLost = false,
Callback = function(Text)
local num = tonumber(Text)
if num then
SpinSpeed = num
Rayfield:Notify({Title = "c00lhack", Content = "Скорость вращения: " .. tostring(SpinSpeed), Duration = 1.5})
end
end,
})
MainTab:CreateToggle({
Name = "Кружиться с BHop",
CurrentValue = false,
Flag = "SpinBhopToggle",
Callback = function(Value)
SpinBhopEnabled = Value
if SpinBhopEnabled then
Rayfield:Notify({Title = "c00lhack", Content = "Spin + BHop: ВКЛ", Duration = 1.5})
SpinBhopConnection = RunService.RenderStepped:Connect(function()
if not SpinBhopEnabled then return end
local char = LocalPlayer.Character
if not char then return end
local hum = char:FindFirstChildOfClass("Humanoid")
local hrp = char:FindFirstChild("HumanoidRootPart")
if hum and hrp and hum.Health > 0 then
hrp.CFrame = hrp.CFrame * CFrame.Angles(0, math.rad(SpinSpeed), 0)
hum.WalkSpeed = 80
if hum.FloorMaterial ~= Enum.Material.Air then
hum:ChangeState(Enum.HumanoidStateType.Jumping)
hum.Jump = true
end
end
end)
else
if SpinBhopConnection then
SpinBhopConnection:Disconnect()
SpinBhopConnection = nil
end
local char = LocalPlayer.Character
if char then
local hum = char:FindFirstChildOfClass("Humanoid")
if hum then
hum.WalkSpeed = 16
end
end
Rayfield:Notify({Title = "c00lhack", Content = "Spin + BHop: ВЫКЛ", Duration = 1.5})
end
end,
})
-- --- VISUAL ---
-- --- МЯГКОЕ ТЕМНОЕ НЕБО (СУМЕРКИ) ---
VisualTab:CreateButton({
Name = "Слегка темное небо",
Callback = function()
Lighting.ClockTime = 20
Lighting.Brightness = 0.6
Lighting.GlobalShadows = true
Lighting.OutdoorAmbient = Color3.fromRGB(70, 75, 95)
Lighting.Ambient = Color3.fromRGB(55, 60, 80)
for _, obj in ipairs(Lighting:GetChildren()) do
if obj:IsA("Sky") or obj:IsA("Atmosphere") then
obj:Destroy()
end
end
local darkSky = Instance.new("Sky")
darkSky.Name = "c00lDarkSky"
darkSky.SkyboxBk = "rbxassetid://6444884311"
darkSky.SkyboxDn = "rbxassetid://6444884311"
darkSky.SkyboxFt = "rbxassetid://6444884311"
darkSky.SkyboxLf = "rbxassetid://6444884311"
darkSky.SkyboxRt = "rbxassetid://6444884311"
darkSky.SkyboxUp = "rbxassetid://6444884311"
darkSky.StarCount = 500
darkSky.Parent = Lighting
Rayfield:Notify({Title = "c00lhack", Content = "Слегка темное небо активировано!", Duration = 2})
end,
})
-- --- ЧАМСЫ И ТРЕЙСЕРЫ ---
local ChamsEnabled = false
local Tracers = {}
local function ClearTracers()
for player, tracer in pairs(Tracers) do
if tracer then
tracer:Remove()
end
end
Tracers = {}
end
local function CreateTracer(player)
if Drawing then
local line = Drawing.new("Line")
line.Visible = false
line.Color = Color3.fromRGB(255, 0, 0)
line.Thickness = 1.5
line.Transparency = 1
Tracers[player] = line
end
end
local function ApplyChams(character)
if not character then return end
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
if not part:FindFirstChild("c00lhackChams") then
local box = Instance.new("BoxHandleAdornment")
box.Name = "c00lhackChams"
box.Adornee = part
box.AlwaysOnTop = true
box.ZIndex = 10
box.Size = part.Size + Vector3.new(0.05, 0.05, 0.05)
box.Color3 = Color3.fromRGB(255, 0, 0)
box.Transparency = 0.4
box.Parent = part
box.Visible = ChamsEnabled
else
part.c00lhackChams.Visible = ChamsEnabled
end
end
end
end
VisualTab:CreateToggle({
Name = "Включить Чамсы и Линии (Tracers)",
CurrentValue = false,
Flag = "ChamsToggle",
Callback = function(Value)
ChamsEnabled = Value
if not ChamsEnabled then
ClearTracers()
end
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
if player.Character then
ApplyChams(player.Character)
end
if ChamsEnabled and not Tracers[player] then
CreateTracer(player)
end
end
end
Rayfield:Notify({Title = "c00lhack", Content = "Чамсы и Линии: " .. (Value and "ВКЛ" or "ВЫКЛ"), Duration = 2})
end,
})
RunService.RenderStepped:Connect(function()
if not ChamsEnabled then return end
for player, line in pairs(Tracers) do
if player and player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local hrp = player.Character.HumanoidRootPart
local hum = player.Character:FindFirstChildOfClass("Humanoid")
if hum and hum.Health > 0 then
local screenPos, onScreen = Camera:WorldToViewportPoint(hrp.Position)
if onScreen then
line.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
line.To = Vector2.new(screenPos.X, screenPos.Y)
line.Visible = true
else
line.Visible = false
end
else
line.Visible = false
end
else
if line then line.Visible = false end
end
end
end)
Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(char)
task.wait(1)
if ChamsEnabled then
ApplyChams(char)
if not Tracers[player] then
CreateTracer(player)
end
end
end)
end)
Players.PlayerRemoving:Connect(function(player)
if Tracers[player] then
Tracers[player]:Remove()
Tracers[player] = nil
end
end)
task.spawn(function()
while true do
task.wait(3)
if ChamsEnabled then
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
if player.Character then
ApplyChams(player.Character)
end
if not Tracers[player] then
CreateTracer(player)
end
end
end
end
end
end)
-- --- EMOTES R15 & R6 ---
local activeEmoteConnection = nil
local originalJoints = {}
local currentEmoteType = nil
local function StopEmote()
if activeEmoteConnection then
activeEmoteConnection:Disconnect()
activeEmoteConnection = nil
end
for motor, origC0 in pairs(originalJoints) do
if motor and motor.Parent then
motor.C0 = origC0
end
end
originalJoints = {}
currentEmoteType = nil
pcall(function()
if emoteEvent then
emoteEvent:FireServer("Stop")
end
end)
end
local function PlayEmote(emoteName)
local char = LocalPlayer.Character
if not char then return end
StopEmote()
currentEmoteType = emoteName
EnableNetworkBypass(char)
local rightMotor, leftMotor, rightLegMotor, leftLegMotor, rootMotor
if char:FindFirstChild("Torso") then
rightMotor = char.Torso:FindFirstChild("Right Shoulder")
leftMotor = char.Torso:FindFirstChild("Left Shoulder")
rightLegMotor = char.Torso:FindFirstChild("Right Hip")
leftLegMotor = char.Torso:FindFirstChild("Left Hip")
if char:FindFirstChild("HumanoidRootPart") then
rootMotor = char.HumanoidRootPart:FindFirstChild("RootJoint")
end
elseif char:FindFirstChild("RightUpperArm") then
rightMotor = char.RightUpperArm:FindFirstChild("RightShoulder")
leftMotor = char.LeftUpperArm:FindFirstChild("LeftShoulder")
if char:FindFirstChild("RightUpperLeg") then rightLegMotor = char.RightUpperLeg:FindFirstChild("RightHip") end
if char:FindFirstChild("LeftUpperLeg") then leftLegMotor = char.LeftUpperLeg:FindFirstChild("LeftHip") end
if char:FindFirstChild("LowerTorso") then
rootMotor = char.LowerTorso:FindFirstChild("Root")
end
end
if rightMotor then originalJoints[rightMotor] = rightMotor.C0 end
if leftMotor then originalJoints[leftMotor] = leftMotor.C0 end
if rightLegMotor then originalJoints[rightLegMotor] = rightLegMotor.C0 end
if leftLegMotor then originalJoints[leftLegMotor] = leftLegMotor.C0 end
if rootMotor then originalJoints[rootMotor] = rootMotor.C0 end
local startTime = tick()
activeEmoteConnection = RunService.RenderStepped:Connect(function()
local t = tick() - startTime
if emoteName == "Dance" then
if rightMotor and originalJoints[rightMotor] then
rightMotor.C0 = originalJoints[rightMotor] * CFrame.Angles(math.sin(t * 4) * 0.8, 0, math.cos(t * 4) * 0.5)
end
if leftMotor and originalJoints[leftMotor] then
leftMotor.C0 = originalJoints[leftMotor] * CFrame.Angles(-math.sin(t * 4) * 0.8, 0, -math.cos(t * 4) * 0.5)
end
if rootMotor and originalJoints[rootMotor] then
rootMotor.C0 = originalJoints[rootMotor] * CFrame.new(0, math.sin(t * 8) * 0.2, 0) * CFrame.Angles(0, math.sin(t * 2) * 0.3, 0)
end
elseif emoteName == "Wave" then
if rightMotor and originalJoints[rightMotor] then
rightMotor.C0 = originalJoints[rightMotor] * CFrame.Angles(math.rad(180), math.sin(t * 25) * 0.2, 0)
end
if leftMotor and originalJoints[leftMotor] then
leftMotor.C0 = originalJoints[leftMotor]
end
if rootMotor and originalJoints[rootMotor] then
rootMotor.C0 = originalJoints[rootMotor]
end
elseif emoteName == "DropKick" then
local cycle = math.abs(math.sin(t * 3))
local jumpY = cycle * 2.2
local tilt = math.rad(-75) - (cycle * math.rad(10))
if rootMotor and originalJoints[rootMotor] then
rootMotor.C0 = originalJoints[rootMotor] * CFrame.new(0, jumpY, 1) * CFrame.Angles(tilt, 0, 0)
end
if rightMotor and originalJoints[rightMotor] then
rightMotor.C0 = originalJoints[rightMotor] * CFrame.Angles(math.rad(30), 0, math.rad(30))
end
if leftMotor and originalJoints[leftMotor] then
leftMotor.C0 = originalJoints[leftMotor] * CFrame.Angles(math.rad(30), 0, math.rad(-30))
end
if rightLegMotor and originalJoints[rightLegMotor] then
rightLegMotor.C0 = originalJoints[rightLegMotor] * CFrame.Angles(math.rad(-85), 0, 0)
end
if leftLegMotor and originalJoints[leftLegMotor] then
leftLegMotor.C0 = originalJoints[leftLegMotor] * CFrame.Angles(math.rad(-85), 0, 0)
end
end
end)
pcall(function()
if emoteEvent then
emoteEvent:FireServer("Play", emoteName)
end
end)
Rayfield:Notify({Title = "c00lhack", Content = "Эмоция запущена для всех!", Duration = 2})
end
pcall(function()
if emoteEvent then
emoteEvent.OnClientEvent:Connect(function(player, action, emoteName)
if player == LocalPlayer then return end
local char = player.Character
if not char then return end
local rightMotor, leftMotor, rightLegMotor, leftLegMotor, rootMotor
if char:FindFirstChild("Torso") then
rightMotor = char.Torso:FindFirstChild("Right Shoulder")
leftMotor = char.Torso:FindFirstChild("Left Shoulder")
rightLegMotor = char.Torso:FindFirstChild("Right Hip")
leftLegMotor = char.Torso:FindFirstChild("Left Hip")
if char:FindFirstChild("HumanoidRootPart") then rootMotor = char.HumanoidRootPart:FindFirstChild("RootJoint") end
elseif char:FindFirstChild("RightUpperArm") then
rightMotor = char.RightUpperArm:FindFirstChild("RightShoulder")
leftMotor = char.LeftUpperArm:FindFirstChild("LeftShoulder")
if char:FindFirstChild("RightUpperLeg") then rightLegMotor = char.RightUpperLeg:FindFirstChild("RightHip") end
if char:FindFirstChild("LeftUpperLeg") then leftLegMotor = char.LeftUpperLeg:FindFirstChild("LeftHip") end
if char:FindFirstChild("LowerTorso") then rootMotor = char.LowerTorso:FindFirstChild("Root") end
end
if action == "Stop" then
if char:FindFirstChild("ActiveEmoteConn") then
char.ActiveEmoteConn:Disconnect()
char.ActiveEmoteConn = nil
end
return
end
if action == "Play" then
if char:FindFirstChild("ActiveEmoteConn") then
char.ActiveEmoteConn:Disconnect()
end
local origR = rightMotor and rightMotor.C0
local origL = leftMotor and leftMotor.C0
local origRLeg = rightLegMotor and rightLegMotor.C0
local origLLeg = leftLegMotor and leftLegMotor.C0
local origRoot = rootMotor and rootMotor.C0
local startTime = tick()
local conn = RunService.RenderStepped:Connect(function()
if not char or not char.Parent then return end
local t = tick() - startTime
if emoteName == "Dance" then
if rightMotor and origR then rightMotor.C0 = origR * CFrame.Angles(math.sin(t * 4) * 0.8, 0, math.cos(t * 4) * 0.5) end
if leftMotor and origL then leftMotor.C0 = origL * CFrame.Angles(-math.sin(t * 4) * 0.8, 0, -math.cos(t * 4) * 0.5) end
if rootMotor and origRoot then rootMotor.C0 = origRoot * CFrame.new(0, math.sin(t * 8) * 0.2, 0) * CFrame.Angles(0, math.sin(t * 2) * 0.3, 0) end
elseif emoteName == "Wave" then
if rightMotor and origR then rightMotor.C0 = origR * CFrame.Angles(math.rad(180), math.sin(t * 25) * 0.2, 0) end
elseif emoteName == "DropKick" then
local cycle = math.abs(math.sin(t * 3))
local jumpY = cycle * 2.2
local tilt = math.rad(-75) - (cycle * math.rad(10))
if rootMotor and origRoot then rootMotor.C0 = origRoot * CFrame.new(0, jumpY, 1) * CFrame.Angles(tilt, 0, 0) end
if rightMotor and origR then rightMotor.C0 = origR * CFrame.Angles(math.rad(30), 0, math.rad(30)) end
if leftMotor and origL then leftMotor.C0 = origL * CFrame.Angles(math.rad(30), 0, math.rad(-30)) end
if rightLegMotor and origRLeg then rightLegMotor.C0 = origRLeg * CFrame.Angles(math.rad(-85), 0, 0) end
if leftLegMotor and origLLeg then leftLegMotor.C0 = origLLeg * CFrame.Angles(math.rad(-85), 0, 0) end
end
end)
end
end)
end
end)
EmotesTab:CreateSection("Управление эмоциями (Видны на сервере)")
EmotesTab:CreateButton({
Name = "🕺 Танец (Двигаются руки и тело)",
Callback = function()
PlayEmote("Dance")
end
})
EmotesTab:CreateButton({
Name = "👋 Махать рукой (Строго вверх и быстро в стороны)",
Callback = function()
PlayEmote("Wave")
end
})
EmotesTab:CreateButton({
Name = "💥 Дроп-кик (Удар двумя ногами в полете)",
Callback = function()
PlayEmote("DropKick")
end
})
EmotesTab:CreateButton({
Name = "🛑 Остановить эмоцию",
Callback = function()
StopEmote()
Rayfield:Notify({Title = "c00lhack", Content = "Эмоция остановлена", Duration = 1.5})
end
})
-- ========================================================
-- 4. ВКАДКА FAKE VR (УПРАВЛЕНИЕ РУКАМИ)
-- ========================================================
local VRGui = nil
local VREnabled = false
local vrOriginalJoints = {}
local function CreateVRJoystick(name, position)
local frame = Instance.new("Frame", VRGui)
frame.Name = name
frame.Size = UDim2.new(0, 110, 0, 110)
frame.Position = position
frame.BackgroundColor3 = Color3.fromRGB(20, 25, 35)
frame.BackgroundTransparency = 0.3
frame.Active = true -- Захватывает касания, чтобы не поворачивать персонажа
local corner = Instance.new("UICorner", frame)
corner.CornerRadius = UDim.new(1, 0)
local stroke = Instance.new("UIStroke", frame)
stroke.Color = Color3.fromRGB(0, 230, 255)
stroke.Thickness = 2
local knob = Instance.new("Frame", frame)
knob.Name = "Knob"
knob.Size = UDim2.new(0, 40, 0, 40)
knob.Position = UDim2.new(0.5, -20, 0.5, -20)
knob.BackgroundColor3 = Color3.fromRGB(0, 255, 170)
knob.Active = true
local knobCorner = Instance.new("UICorner", knob)
knobCorner.CornerRadius = UDim.new(1, 0)
return frame, knob
end
local function SaveVROriginalJoints()
local char = LocalPlayer.Character
if not char then return end
local torso = char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso")
if not torso then return end
local rightShoulder = torso:FindFirstChild("Right Shoulder") or torso:FindFirstChild("RightShoulder")
local leftShoulder = torso:FindFirstChild("Left Shoulder") or torso:FindFirstChild("LeftShoulder")
if rightShoulder and not vrOriginalJoints["Right"] then vrOriginalJoints["Right"] = rightShoulder.C0 end
if leftShoulder and not vrOriginalJoints["Left"] then vrOriginalJoints["Left"] = leftShoulder.C0 end
end
local function UpdateArmsVR(leftKnob, rightKnob)
local char = LocalPlayer.Character
if not char then return end
local torso = char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso")
if not torso then return end
local function applyVR(jointName, knob, origKey)
local joint = torso:FindFirstChild(jointName)
if joint and vrOriginalJoints[origKey] then
-- Считаем смещение джойстика от центра (от -1 до 1)
local relX = (knob.Position.X.Offset - 35) / 35
local relY = (knob.Position.Y.Offset - 35) / 35
-- Вычисляем правильные углы поворота плеча ( pitch и yaw )
local pitch = -relY * math.rad(90) -- Вверх / Вниз
local yaw = -relX * math.rad(90) -- Влево / Вправо
joint.C0 = vrOriginalJoints[origKey] * CFrame.Angles(pitch, yaw, 0)
end
end
applyVR("Right Shoulder", rightKnob, "Right")
applyVR("RightShoulder", rightKnob, "Right")
applyVR("Left Shoulder", leftKnob, "Left")
applyVR("LeftShoulder", leftKnob, "Left")
end
VRTab:CreateToggle({
Name = "Fake VR (Джойстики рук)",
CurrentValue = false,
Flag = "FakeVRToggle",
Callback = function(Value)
VREnabled = Value
if VREnabled then
SaveVROriginalJoints()
VRGui = Instance.new("ScreenGui")
VRGui.Name = "c00lhackVRGui"
VRGui.ResetOnSpawn = false
pcall(function() VRGui.Parent = CoreGui end)
if not VRGui.Parent then VRGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end
local leftFrame, leftKnob = CreateVRJoystick("LeftStick", UDim2.new(0, 30, 0.6, 0))
local rightFrame, rightKnob = CreateVRJoystick("RightStick", UDim2.new(1, -140, 0.6, 0))
local function bindJoystickLogic(frame, knob)
local dragging = false
local centerPos = Vector2.new(35, 35)
local maxRadius = 35
local function updateDrag(input)
local framePos = frame.AbsolutePosition
local mousePos = Vector2.new(input.Position.X, input.Position.Y)
local relative = mousePos - framePos - Vector2.new(15, 15)
local delta = relative - centerPos
if delta.Magnitude > maxRadius then
delta = delta.Unit * maxRadius
end
knob.Position = UDim2.new(0, centerPos.X + delta.X, 0, centerPos.Y + delta.Y)
end
knob.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
updateDrag(input)
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
updateDrag(input)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
-- Возврат джойстика в центр при отпускании
TweenService:Create(knob, TweenInfo.new(0.15), {Position = UDim2.new(0, centerPos.X, 0, centerPos.Y)}):Play()
end
end)
end
bindJoystickLogic(leftFrame, leftKnob)
bindJoystickLogic(rightFrame, rightKnob)
RunService.RenderStepped:Connect(function()
if VREnabled then
UpdateArmsVR(leftKnob, rightKnob)
end
end)
Rayfield:Notify({Title = "c00lhack", Content = "Fake VR включен! Двигай джойстики на экране.", Duration = 2.5})
else
if VRGui then VRGui:Destroy() end
-- Возвращаем суставы в исходную позицию
local char = LocalPlayer.Character
if char then
local torso = char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso")
if torso then
local rS = torso:FindFirstChild("Right Shoulder") or torso:FindFirstChild("RightShoulder")
local lS = torso:FindFirstChild("Left Shoulder") or torso:FindFirstChild("LeftShoulder")
if rS and vrOriginalJoints["Right"] then rS.C0 = vrOriginalJoints["Right"] end
if lS and vrOriginalJoints["Left"] then lS.C0 = vrOriginalJoints["Left"] end
end
end
vrOriginalJoints = {}
Rayfield:Notify({Title = "c00lhack", Content = "Fake VR отключен.", Duration = 1.5})
end
end,
})
Rayfield:LoadConfiguration()No comments yet for this script.



