repeat wait() until game:IsLoaded()
-- Сервисы
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local Camera = Workspace.CurrentCamera
local StarterGui = game:GetService("StarterGui")
-- Ждем игрока
local Player = Players.LocalPlayer
if not Player then
Players:GetPropertyChangedSignal("LocalPlayer"):Wait()
Player = Players.LocalPlayer
end
-- Ждем PlayerGui
local PlayerGui = Player:WaitForChild("PlayerGui")
-- Ждем появления персонажа
local Character = Player.Character or Player.CharacterAdded:Wait()
local HumanoidRootPart = Character:WaitForChild("HumanoidRootPart")
local Humanoid = Character:WaitForChild("Humanoid")
-- Состояния
local isFreecam = false
local isFly = false
local isESP = false
local flySpeed = 50
local freecamSpeed = 30
-- Переменные для управления камерой
local cameraYaw = 0
local cameraPitch = 0
local sensitivity = 0.003
-- Хранилище ESP объектов
local ESPObjects = {}
-- Функция уведомлений
local function Notify(text)
pcall(function()
StarterGui:SetCore("SendNotification", {
Title = "[RB] Scripts Hub",
Text = text,
Duration = 3
})
end)
end
-- Создание GUI
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "RBScriptsHub"
ScreenGui.Parent = PlayerGui
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
-- Основной фрейм (увеличенный)
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 350, 0, 500)
MainFrame.Position = UDim2.new(0.5, -175, 0.5, -250)
MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
MainFrame.BackgroundTransparency = 0.1
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Draggable = true
MainFrame.Parent = ScreenGui
-- Сглаживание углов
local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 12)
UICorner.Parent = MainFrame
-- Заголовок
local TitleFrame = Instance.new("Frame")
TitleFrame.Size = UDim2.new(1, 0, 0, 50)
TitleFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
TitleFrame.BorderSizePixel = 0
TitleFrame.Parent = MainFrame
local TitleCorner = Instance.new("UICorner")
TitleCorner.CornerRadius = UDim.new(0, 12)
TitleCorner.Parent = TitleFrame
local TitleLabel = Instance.new("TextLabel")
TitleLabel.Size = UDim2.new(1, 0, 1, 0)
TitleLabel.BackgroundTransparency = 1
TitleLabel.Text = "[RB] Scripts Hub"
TitleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
TitleLabel.TextScaled = true
TitleLabel.Font = Enum.Font.GothamBold
TitleLabel.TextStrokeTransparency = 0.5
TitleLabel.Parent = TitleFrame
-- Кнопка закрытия
local CloseButton = Instance.new("TextButton")
CloseButton.Size = UDim2.new(0, 30, 0, 30)
CloseButton.Position = UDim2.new(1, -40, 0, 10)
CloseButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
CloseButton.BackgroundTransparency = 0.3
CloseButton.Text = "X"
CloseButton.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseButton.TextScaled = true
CloseButton.Font = Enum.Font.GothamBold
CloseButton.Parent = TitleFrame
local CloseCorner = Instance.new("UICorner")
CloseCorner.CornerRadius = UDim.new(0, 6)
CloseCorner.Parent = CloseButton
-- Скроллинг контент
local ScrollingFrame = Instance.new("ScrollingFrame")
ScrollingFrame.Size = UDim2.new(1, -20, 1, -160)
ScrollingFrame.Position = UDim2.new(0, 10, 0, 60)
ScrollingFrame.BackgroundTransparency = 1
ScrollingFrame.ScrollBarThickness = 5
ScrollingFrame.ScrollBarImageColor3 = Color3.fromRGB(100, 100, 120)
ScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
ScrollingFrame.Parent = MainFrame
-- Функция создания кнопки
local function CreateButton(name, position, color, callback)
local Button = Instance.new("TextButton")
Button.Size = UDim2.new(1, -10, 0, 40)
Button.Position = UDim2.new(0, 5, 0, position)
Button.BackgroundColor3 = color
Button.BackgroundTransparency = 0.2
Button.Text = name
Button.TextColor3 = Color3.fromRGB(255, 255, 255)
Button.TextScaled = true
Button.Font = Enum.Font.Gotham
Button.Parent = ScrollingFrame
local ButtonCorner = Instance.new("UICorner")
ButtonCorner.CornerRadius = UDim.new(0, 8)
ButtonCorner.Parent = Button
-- Эффект при наведении
Button.MouseEnter:Connect(function()
Button.BackgroundTransparency = 0
end)
Button.MouseLeave:Connect(function()
Button.BackgroundTransparency = 0.2
end)
Button.MouseButton1Click:Connect(callback)
return Button
end
-- Функция создания текста
local function CreateText(text, position, color)
local Label = Instance.new("TextLabel")
Label.Size = UDim2.new(1, -10, 0, 25)
Label.Position = UDim2.new(0, 5, 0, position)
Label.BackgroundTransparency = 1
Label.Text = text
Label.TextColor3 = color or Color3.fromRGB(200, 200, 200)
Label.TextScaled = true
Label.Font = Enum.Font.Gotham
Label.TextXAlignment = Enum.TextXAlignment.Center
Label.Parent = ScrollingFrame
return Label
end
-- Создаем разделы
CreateText("=== ОСНОВНЫЕ ФУНКЦИИ ===", 0, Color3.fromRGB(150, 150, 200))
local freecamButton = CreateButton("Freecam (F)", 30, Color3.fromRGB(50, 120, 200), function()
ToggleFreecam()
end)
local flyButton = CreateButton("Fly (G)", 80, Color3.fromRGB(50, 180, 100), function()
ToggleFly()
end)
local teleportButton = CreateButton("Teleport к курсору (T)", 130, Color3.fromRGB(200, 150, 50), function()
TeleportToMouse()
end)
-- Раздел телепорта к игрокам
CreateText("=== ТЕЛЕПОРТ К ИГРОКАМ ===", 180, Color3.fromRGB(150, 200, 150))
-- Список игроков
local PlayerListFrame = Instance.new("Frame")
PlayerListFrame.Size = UDim2.new(1, -10, 0, 150)
PlayerListFrame.Position = UDim2.new(0, 5, 0, 210)
PlayerListFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 45)
PlayerListFrame.BackgroundTransparency = 0.3
PlayerListFrame.BorderSizePixel = 0
PlayerListFrame.Parent = ScrollingFrame
local PlayerListCorner = Instance.new("UICorner")
PlayerListCorner.CornerRadius = UDim.new(0, 8)
PlayerListCorner.Parent = PlayerListFrame
local PlayerListScroll = Instance.new("ScrollingFrame")
PlayerListScroll.Size = UDim2.new(1, -10, 1, -10)
PlayerListScroll.Position = UDim2.new(0, 5, 0, 5)
PlayerListScroll.BackgroundTransparency = 1
PlayerListScroll.ScrollBarThickness = 3
PlayerListScroll.ScrollBarImageColor3 = Color3.fromRGB(100, 100, 120)
PlayerListScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
PlayerListScroll.Parent = PlayerListFrame
-- Функция обновления списка игроков
local function UpdatePlayerList()
-- Очищаем старый список
for _, child in pairs(PlayerListScroll:GetChildren()) do
if child:IsA("TextButton") then
child:Destroy()
end
end
local yPos = 0
local playerCount = 0
for _, otherPlayer in pairs(Players:GetPlayers()) do
if otherPlayer ~= Player and otherPlayer.Character and otherPlayer.Character:FindFirstChild("HumanoidRootPart") then
local PlayerButton = Instance.new("TextButton")
PlayerButton.Size = UDim2.new(1, -10, 0, 30)
PlayerButton.Position = UDim2.new(0, 5, 0, yPos)
PlayerButton.BackgroundColor3 = Color3.fromRGB(60, 60, 80)
PlayerButton.BackgroundTransparency = 0.3
PlayerButton.Text = otherPlayer.Name
PlayerButton.TextColor3 = Color3.fromRGB(255, 255, 255)
PlayerButton.TextScaled = true
PlayerButton.Font = Enum.Font.Gotham
PlayerButton.Parent = PlayerListScroll
local PlayerButtonCorner = Instance.new("UICorner")
PlayerButtonCorner.CornerRadius = UDim.new(0, 5)
PlayerButtonCorner.Parent = PlayerButton
-- Эффекты
PlayerButton.MouseEnter:Connect(function()
PlayerButton.BackgroundTransparency = 0
end)
PlayerButton.MouseLeave:Connect(function()
PlayerButton.BackgroundTransparency = 0.3
end)
-- Телепорт к игроку
PlayerButton.MouseButton1Click:Connect(function()
local targetChar = otherPlayer.Character
if targetChar and targetChar:FindFirstChild("HumanoidRootPart") then
HumanoidRootPart.CFrame = targetChar.HumanoidRootPart.CFrame * CFrame.new(0, 3, 0)
Notify("Телепортирован к " .. otherPlayer.Name)
end
end)
yPos = yPos + 35
playerCount = playerCount + 1
end
end
-- Обновляем размер Canvas
PlayerListScroll.CanvasSize = UDim2.new(0, 0, 0, math.max(yPos, 10))
-- Если нет игроков
if playerCount == 0 then
local NoPlayers = Instance.new("TextLabel")
NoPlayers.Size = UDim2.new(1, 0, 1, 0)
NoPlayers.BackgroundTransparency = 1
NoPlayers.Text = "Нет игроков для телепорта"
NoPlayers.TextColor3 = Color3.fromRGB(150, 150, 150)
NoPlayers.TextScaled = true
NoPlayers.Font = Enum.Font.Gotham
NoPlayers.Parent = PlayerListScroll
end
end
-- Раздел ESP
CreateText("=== ESP ===", 370, Color3.fromRGB(200, 150, 200))
local espButton = CreateButton("ESP (Highlight)", 395, Color3.fromRGB(180, 80, 180), function()
ToggleESP()
end)
-- Обновляем CanvasSize
ScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, 450)
-- Нижняя панель с Discord ссылкой
local DiscordFrame = Instance.new("Frame")
DiscordFrame.Size = UDim2.new(1, -20, 0, 50)
DiscordFrame.Position = UDim2.new(0, 10, 1, -60)
DiscordFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 65)
DiscordFrame.BackgroundTransparency = 0.2
DiscordFrame.BorderSizePixel = 0
DiscordFrame.Parent = MainFrame
local DiscordCorner = Instance.new("UICorner")
DiscordCorner.CornerRadius = UDim.new(0, 8)
DiscordCorner.Parent = DiscordFrame
-- Текст с ссылкой
local DiscordLabel = Instance.new("TextLabel")
DiscordLabel.Size = UDim2.new(1, -10, 0, 20)
DiscordLabel.Position = UDim2.new(0, 5, 0, 3)
DiscordLabel.BackgroundTransparency = 1
DiscordLabel.Text = "Наш дискорд канал:"
DiscordLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
DiscordLabel.TextScaled = true
DiscordLabel.Font = Enum.Font.Gotham
DiscordLabel.TextXAlignment = Enum.TextXAlignment.Center
DiscordLabel.Parent = DiscordFrame
-- Кликабельная ссылка
local DiscordLink = Instance.new("TextButton")
DiscordLink.Size = UDim2.new(1, -10, 0, 22)
DiscordLink.Position = UDim2.new(0, 5, 0, 24)
DiscordLink.BackgroundTransparency = 1
DiscordLink.Text = "https://discord.gg/JADNRKjEQz"
DiscordLink.TextColor3 = Color3.fromRGB(100, 180, 255)
DiscordLink.TextScaled = true
DiscordLink.Font = Enum.Font.Gotham
DiscordLink.TextXAlignment = Enum.TextXAlignment.Center
DiscordLink.TextStrokeTransparency = 0.5
DiscordLink.Parent = DiscordFrame
-- Эффект при наведении на ссылку
DiscordLink.MouseEnter:Connect(function()
DiscordLink.TextColor3 = Color3.fromRGB(150, 200, 255)
DiscordLink.TextStrokeTransparency = 0.3
end)
DiscordLink.MouseLeave:Connect(function()
DiscordLink.TextColor3 = Color3.fromRGB(100, 180, 255)
DiscordLink.TextStrokeTransparency = 0.5
end)
-- Копирование ссылки
DiscordLink.MouseButton1Click:Connect(function()
pcall(function()
setclipboard("https://discord.gg/JADNRKjEQz")
end)
DiscordLink.Text = "✓ Скопировано!"
DiscordLink.TextColor3 = Color3.fromRGB(100, 255, 100)
task.wait(2)
DiscordLink.Text = "https://discord.gg/JADNRKjEQz"
DiscordLink.TextColor3 = Color3.fromRGB(100, 180, 255)
end)
-- Закрытие GUI
CloseButton.MouseButton1Click:Connect(function()
ScreenGui:Destroy()
end)
-- Функции
function ToggleFreecam()
isFreecam = not isFreecam
if isFreecam then
if isFly then ToggleFly() end
local lookVector = Camera.CFrame.LookVector
cameraYaw = math.atan2(-lookVector.X, -lookVector.Z)
cameraPitch = math.asin(lookVector.Y)
Camera.CameraType = Enum.CameraType.Scriptable
Humanoid.PlatformStand = true
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
freecamButton.Text = "Freecam (F) ✓"
freecamButton.BackgroundColor3 = Color3.fromRGB(30, 80, 150)
Notify("Freecam включен")
else
Camera.CameraType = Enum.CameraType.Custom
Humanoid.PlatformStand = false
UserInputService.MouseBehavior = Enum.MouseBehavior.Default
freecamButton.Text = "Freecam (F)"
freecamButton.BackgroundColor3 = Color3.fromRGB(50, 120, 200)
Notify("Freecam выключен")
end
end
function ToggleFly()
isFly = not isFly
if isFly then
if isFreecam then ToggleFreecam() end
Humanoid.PlatformStand = true
local bv = Instance.new("BodyVelocity")
bv.Name = "FlyVelocity"
bv.MaxForce = Vector3.new(10000, 10000, 10000)
bv.Velocity = Vector3.new(0, 0, 0)
bv.Parent = HumanoidRootPart
flyButton.Text = "Fly (G) ✓"
flyButton.BackgroundColor3 = Color3.fromRGB(30, 130, 60)
Notify("Fly включен")
else
Humanoid.PlatformStand = false
local bv = HumanoidRootPart:FindFirstChild("FlyVelocity")
if bv then bv:Destroy() end
flyButton.Text = "Fly (G)"
flyButton.BackgroundColor3 = Color3.fromRGB(50, 180, 100)
Notify("Fly выключен")
end
end
function ToggleESP()
isESP = not isESP
if isESP then
-- Создаем ESP для всех игроков
for _, otherPlayer in pairs(Players:GetPlayers()) do
if otherPlayer ~= Player then
CreateESP(otherPlayer)
end
end
-- Отслеживаем новых игроков
Players.PlayerAdded:Connect(function(newPlayer)
if isESP then
CreateESP(newPlayer)
end
end)
espButton.Text = "ESP (Highlight) ✓"
espButton.BackgroundColor3 = Color3.fromRGB(130, 40, 130)
Notify("ESP включен")
else
-- Удаляем все ESP
for _, esp in pairs(ESPObjects) do
if esp and esp.Parent then
esp:Destroy()
end
end
ESPObjects = {}
espButton.Text = "ESP (Highlight)"
espButton.BackgroundColor3 = Color3.fromRGB(180, 80, 180)
Notify("ESP выключен")
end
end
function CreateESP(targetPlayer)
-- Ждем появления персонажа
local function AddESP(character)
if not character then return end
-- Создаем Highlight
local highlight = Instance.new("Highlight")
highlight.Name = "ESP_Highlight"
highlight.FillColor = Color3.fromRGB(255, 50, 50)
highlight.FillTransparency = 0.5
highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
highlight.OutlineTransparency = 0.3
highlight.Parent = character
-- Создаем BillboardGui с именем
local billboard = Instance.new("BillboardGui")
billboard.Name = "ESP_Name"
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.StudsOffset = Vector3.new(0, 3, 0)
billboard.AlwaysOnTop = true
billboard.Parent = character
local nameLabel = Instance.new("TextLabel")
nameLabel.Size = UDim2.new(1, 0, 1, 0)
nameLabel.BackgroundTransparency = 1
nameLabel.Text = targetPlayer.Name
nameLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
nameLabel.TextScaled = true
nameLabel.Font = Enum.Font.GothamBold
nameLabel.TextStrokeTransparency = 0.3
nameLabel.Parent = billboard
-- Сохраняем для удаления
table.insert(ESPObjects, highlight)
table.insert(ESPObjects, billboard)
end
-- Если персонаж уже существует
if targetPlayer.Character then
AddESP(targetPlayer.Character)
end
-- Отслеживаем появление персонажа
targetPlayer.CharacterAdded:Connect(function(character)
if isESP then
AddESP(character)
end
end)
end
function TeleportToMouse()
local mouse = Player:GetMouse()
local target = mouse.Hit
if target then
HumanoidRootPart.CFrame = CFrame.new(target.p + Vector3.new(0, 3, 0))
if isFreecam then
Camera.CFrame = CFrame.new(target.p + Vector3.new(0, 3, 0)) * CFrame.Angles(cameraPitch, cameraYaw, 0)
end
Notify("Телепортирован!")
end
end
-- Обработка клавиш
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.KeyCode == Enum.KeyCode.F then
ToggleFreecam()
end
if input.KeyCode == Enum.KeyCode.G then
ToggleFly()
end
if input.KeyCode == Enum.KeyCode.T then
TeleportToMouse()
end
if input.KeyCode == Enum.KeyCode.Escape and isFreecam then
ToggleFreecam()
end
end)
-- Обработка мыши
UserInputService.InputChanged:Connect(function(input)
if isFreecam and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Delta
cameraYaw = cameraYaw - delta.X * sensitivity
cameraPitch = cameraPitch - delta.Y * sensitivity
cameraPitch = math.clamp(cameraPitch, -math.pi/2 + 0.1, math.pi/2 - 0.1)
end
end)
-- Обновление камеры
RunService.RenderStepped:Connect(function(deltaTime)
if isFreecam then
local move = Vector3.new(0, 0, 0)
if UserInputService:IsKeyDown(Enum.KeyCode.W) then
move = move + Vector3.new(-math.sin(cameraYaw), 0, -math.cos(cameraYaw))
end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then
move = move - Vector3.new(-math.sin(cameraYaw), 0, -math.cos(cameraYaw))
end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then
move = move - Vector3.new(math.cos(cameraYaw), 0, -math.sin(cameraYaw))
end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then
move = move + Vector3.new(math.cos(cameraYaw), 0, -math.sin(cameraYaw))
end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
move = move + Vector3.new(0, 1, 0)
end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then
move = move - Vector3.new(0, 1, 0)
end
local newPosition = Camera.CFrame.Position + (move * freecamSpeed * deltaTime)
Camera.CFrame = CFrame.new(newPosition) * CFrame.Angles(cameraPitch, cameraYaw, 0)
end
end)
-- Обновление Fly
RunService.RenderStepped:Connect(function(deltaTime)
if isFly then
local bv = HumanoidRootPart:FindFirstChild("FlyVelocity")
if bv then
local moveDirection = Vector3.new(0, 0, 0)
if UserInputService:IsKeyDown(Enum.KeyCode.W) then
moveDirection = moveDirection + Camera.CFrame.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then
moveDirection = moveDirection - Camera.CFrame.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then
moveDirection = moveDirection - Camera.CFrame.RightVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then
moveDirection = moveDirection + Camera.CFrame.RightVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
moveDirection = moveDirection + Vector3.new(0, 1, 0)
end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then
moveDirection = moveDirection - Vector3.new(0, 1, 0)
end
bv.Velocity = moveDirection * flySpeed
end
end
end)
-- Защита от падения
Humanoid.StateChanged:Connect(function(oldState, newState)
if isFly and newState == Enum.HumanoidStateType.FallingDown then
Humanoid.PlatformStand = true
end
end)
-- Обновляем список игроков каждые 5 секунд
spawn(function()
while ScreenGui and ScreenGui.Parent do
pcall(UpdatePlayerList)
task.wait(5)
end
end)
-- Уведомление о загрузке
task.wait(1)
Notify("[RB] Scripts Hub v2.0 загружен! F - Freecam, G - Fly, T - Teleport")