Made By H0ckergang ( beta ) MEGA UPDATE !!!
Key RequiredUniversal

Made By H0ckergang ( beta ) MEGA UPDATE !!!

Universal Scriptc00lkiddgang1deletec00lkiddgang1delete 42 views 111 executesUpdated Aug 11, 2026
Unrated
00
Lua Script•1431 lines (54683 chars)
--[[
	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()

Features & Information

Just Made By Me

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts