-- ======================
-- LOAD RAYFIELD
-- ======================
local Rayfield = loadstring(game:HttpGet("https://sirius.menu/rayfield"))()
local Window = Rayfield:CreateWindow({
Name = "BCN Hub",
LoadingTitle = "BCN Hub",
LoadingSubtitle = "Safe Features + Snake Head",
ConfigurationSaving = {
Enabled = true,
FolderName = "BCNHub_Config",
FileName = "Main"
}
})
-- ======================
-- SERVICES
-- ======================
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local GuiService = game:GetService("GuiService")
local player = Players.LocalPlayer
-- ======================
-- PLAYER TAB
-- ======================
local PlayerTab = Window:CreateTab("Player", 4483362458)
-- Walk Speed
PlayerTab:CreateSlider({
Name = "Walk Speed",
Range = {16, 300},
Increment = 1,
CurrentValue = 16,
Callback = function(v)
local hum = player.Character and player.Character:FindFirstChild("Humanoid")
if hum then hum.WalkSpeed = v end
end
})
-- Infinite Jump
local infiniteJump = false
PlayerTab:CreateToggle({
Name = "Infinite Jump",
CurrentValue = false,
Callback = function(v)
infiniteJump = v
end
})
UIS.JumpRequest:Connect(function()
if infiniteJump then
local hum = player.Character and player.Character:FindFirstChild("Humanoid")
if hum then
hum:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end)
-- ======================
-- 🐍 SNAKE HEAD
-- ======================
local snakeEnabled = false
local snakeConn
local snakeAmplitude = 0.6
local snakeSpeed = 4
local function startSnake()
if snakeConn then snakeConn:Disconnect() end
local char = player.Character or player.CharacterAdded:Wait()
local torso = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso")
if not torso then return end
local neck = torso:FindFirstChild("Neck")
if not neck then return end
local baseC0 = neck.C0
local t = 0
snakeConn = RunService.RenderStepped:Connect(function(dt)
if not snakeEnabled then return end
t += dt
local xOffset = math.sin(t * snakeSpeed) * snakeAmplitude
neck.C0 = neck.C0:Lerp(baseC0 * CFrame.new(xOffset, 0, 0), 0.25)
end)
end
local function stopSnake()
if snakeConn then
snakeConn:Disconnect()
snakeConn = nil
end
end
PlayerTab:CreateToggle({
Name = "Snake Head",
CurrentValue = false,
Callback = function(v)
snakeEnabled = v
if v then startSnake() else stopSnake() end
end
})
PlayerTab:CreateSlider({
Name = "Snake Amplitude",
Range = {0, 2},
Increment = 0.1,
CurrentValue = snakeAmplitude,
Callback = function(v)
snakeAmplitude = v
end
})
PlayerTab:CreateSlider({
Name = "Snake Speed",
Range = {1, 10},
Increment = 0.5,
CurrentValue = snakeSpeed,
Callback = function(v)
snakeSpeed = v
end
})
player.CharacterAdded:Connect(function()
if snakeEnabled then
task.wait(0.3)
startSnake()
end
end)
-- ======================
-- 📸 SCREENSHOT (SAFE)
-- ======================
PlayerTab:CreateButton({
Name = "📸 Screenshot (Safe)",
Callback = function()
pcall(function()
GuiService:TakeScreenshot()
end)
Rayfield:Notify({
Title = "Screenshot",
Content = "Screenshot diambil (fitur Roblox)",
Duration = 2
})
end
})
-- ======================
-- 🚨 REPORT PLAYER (SAFE & MANUAL)
-- ======================
PlayerTab:CreateButton({
Name = "🚨 Report Player (Safe)",
Callback = function()
pcall(function()
GuiService:OpenReportDialog()
end)
Rayfield:Notify({
Title = "Report",
Content = "Menu report Roblox dibuka (manual & aman)",
Duration = 3
})
end
})
-- ======================
-- 🖥 DEV CONSOLE (RAYFIELD)
-- ======================
local GuiService = game:GetService("GuiService")
local UIS = game:GetService("UserInputService")
local consoleEnabled = false
local consoleKeybind = Enum.KeyCode.RightShift
-- 🔘 BUTTON: Open Console
PlayerTab:CreateButton({
Name = "🖥 Open Console",
Callback = function()
pcall(function()
GuiService:ToggleDevConsole()
end)
Rayfield:Notify({
Title = "Console",
Content = "Developer Console dibuka",
Duration = 2
})
end
})
-- 🔁 TOGGLE: Auto Open Console
PlayerTab:CreateToggle({
Name = "🖥 Console Toggle",
CurrentValue = false,
Callback = function(v)
consoleEnabled = v
if v then
pcall(function()
GuiService:ToggleDevConsole()
end)
end
end
})
-- ⌨️ KEYBIND: RightShift
UIS.InputBegan:Connect(function(input, gp)
if gp then return end
if input.KeyCode == consoleKeybind and consoleEnabled then
pcall(function()
GuiService:ToggleDevConsole()
end)
end
end)
-- ======================
-- FLASHBACK TELEPORT GUI (WITH RESET TOGGLE)
-- ======================
local FlashbackTab = Window:CreateTab("Flashback", 4483362458)
local savedPositions = {} -- table untuk simpan posisi player
local totalSlots = 3
local resetSlots = false -- toggle reset
-- Toggle reset slot
FlashbackTab:CreateToggle({
Name = "Reset Slots",
CurrentValue = false,
Callback = function(v)
resetSlots = v
if resetSlots then
savedPositions = {} -- bersihin semua slot
Rayfield:Notify({
Title = "Flashback",
Content = "Semua slot di-reset!",
Duration = 2
})
end
end
})
-- Buat tombol save dan teleport
for i = 1, totalSlots do
-- Save Position
FlashbackTab:CreateButton({
Name = "Save Position Slot "..i,
Callback = function()
local char = player.Character
if char and char:FindFirstChild("HumanoidRootPart") then
savedPositions[i] = char.HumanoidRootPart.Position
Rayfield:Notify({
Title = "Flashback",
Content = "Posisi Slot "..i.." tersimpan!",
Duration = 2
})
end
end
})
-- Teleport
FlashbackTab:CreateButton({
Name = "Teleport to Slot "..i,
Callback = function()
local char = player.Character
if char and char:FindFirstChild("HumanoidRootPart") and savedPositions[i] then
char.HumanoidRootPart.CFrame = CFrame.new(savedPositions[i])
Rayfield:Notify({
Title = "Flashback",
Content = "Teleported ke Slot "..i,
Duration = 2
})
elseif not savedPositions[i] then
Rayfield:Notify({
Title = "Flashback",
Content = "Slot "..i.." kosong!",
Duration = 2
})
end
end
})
end
-- ======================
-- RESET SCRIPT BUTTON
-- ======================
PlayerTab:CreateButton({
Name = "⚠️ Reset All Scripts",
Callback = function()
-- Stop Snake Head
if snakeConn then
snakeConn:Disconnect()
snakeConn = nil
end
snakeEnabled = false
snakeAmplitude = 0.6
snakeSpeed = 4
-- Reset WalkSpeed
local hum = player.Character and player.Character:FindFirstChild("Humanoid")
if hum then
hum.WalkSpeed = 16
end
-- Disable Infinite Jump
infiniteJump = false
-- Reset Flashback positions
savedPositions = {}
-- Reset toggles (Console, Snake, Flashback) kalau perlu
consoleEnabled = false
resetSlots = false
-- Notifikasi
Rayfield:Notify({
Title = "Reset",
Content = "Semua fitur telah di-reset!",
Duration = 3
})
end
})
-- ======================
-- COPY REPORT TEMPLATE
-- ======================
local Clipboard = setclipboard or toclipboard -- support multiple executors
PlayerTab:CreateButton({
Name = "Copy Report Template",
Callback = function()
local username = player.Name
local time = os.date("%H:%M") -- server time format HH:MM
local reportText = [[
Player ]] .. username .. [[ is using a sexually suggestive or NSFW accessory on their avatar.
Time: ]] .. time .. [[ server time
Context: The accessory appears sexual in nature and is not appropriate for a general audience.
Details: [describe clearly what is visible]
Player ]] .. username .. [[ is wearing inappropriate accessories that violate Roblox’s community standards.
Time: ]] .. time .. [[ server time
Context: The player’s avatar contains inappropriate or suggestive accessories visible in-game.
Details: [briefly describe the accessory]
Player ]] .. username .. [[ sent racist/toxic messages and left the server shortly after.
Time: ]] .. time .. [[ server time
Context: The behavior occurred before the player left the game.
Example message: "[PASTE EXACT CHAT MESSAGE HERE]"
Player ]] .. username .. [[ engaged in hate speech in chat.
Time: ]] .. time .. [[ server time
Context: The message contained hate speech and discriminatory language directed at another player.
Example message: "[PASTE EXACT CHAT MESSAGE HERE]"
Player ]] .. username .. [[ was harassing and verbally abusing another player in chat.
Time: ]] .. time .. [[ server time
Context: The player used toxic language and insults intended to provoke or demean others.
Example message: "[PASTE EXACT CHAT MESSAGE HERE]"
Player ]] .. username .. [[ used racist and offensive language in public chat.
Time: ]] .. time .. [[ server time
Context: The player directed racist remarks toward another player based on race or ethnicity.
Example message: "[PASTE EXACT CHAT MESSAGE HERE]"
]]
-- Copy to clipboard
pcall(function()
if Clipboard then
Clipboard(reportText)
end
end)
-- Notify user
Rayfield:Notify({
Title = "Report Template",
Content = "Report template copied to clipboard!",
Duration = 3
})
end
})