
KeylessUniversal

--// Explode All Players - Rayfield GUI
--// Fires ";explode [username]" via HD Admin cmdbar when a player spawns or moves
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
--// Services
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextChatService = game:GetService("TextChatService")
local LocalPlayer = Players.LocalPlayer
--// State
local Enabled = false
local Connections = {} -- store per-player connections
local SingleTargetMode = false -- when true, only target a specific player
local TargetPlayerName = "" -- the name of the player to target
local MovementCooldown = 5 -- configurable cooldown
--// Round Robin State
local RoundRobinEnabled = false
local RoundRobinCooldown = 3 -- seconds between each explosion in the cycle
local RoundRobinThread = nil -- the coroutine/thread running the loop
--// HR Spam State
local HRSpamEnabled = false
local HRSpamCooldown = 3 -- seconds between each ;hr message
local HRSpamThread = nil
local HRSpamMessage = ";hr 清理服务器"
--// ============================================================
--// COMMAND EXECUTION (HD Admin cmdbar)
--// HD Admin cmdbar is opened with the ' key. We find the cmdbar
--// TextBox in PlayerGui, set the command text, and simulate Enter.
--// Falls back to chat-based methods if cmdbar GUI is not found.
--// ============================================================
--// Find the HD Admin cmdbar TextBox in PlayerGui
local function findCmdbarTextBox()
local playerGui = LocalPlayer:FindFirstChild("PlayerGui")
if not playerGui then return nil end
-- Search for HD Admin GUI and its cmdbar TextBox
for _, gui in ipairs(playerGui:GetChildren()) do
if gui:IsA("ScreenGui") then
local guiName = gui.Name:lower()
-- HD Admin GUI names vary: "HDAdmin", "HDAdminGUI", "Cmdbar", etc.
if guiName:find("hdadmin") or guiName:find("hd admin") or guiName:find("cmdbar") then
for _, desc in ipairs(gui:GetDescendants()) do
if desc:IsA("TextBox") then
return desc
end
end
end
end
end
-- Broader search: look for any TextBox named cmdbar-like in PlayerGui
for _, desc in ipairs(playerGui:GetDescendants()) do
if desc:IsA("TextBox") then
local name = desc.Name:lower()
if name:find("cmdbar") or name:find("commandbar") or name:find("cmd_bar") then
return desc
end
end
end
return nil
end
local function sendCommand(command)
local sent = false
-- Method 1: Find HD Admin cmdbar TextBox, set text, simulate Enter
pcall(function()
local cmdbar = findCmdbarTextBox()
if cmdbar then
cmdbar.Text = command
-- Simulate pressing Enter by focusing and then releasing focus
cmdbar:CaptureFocus()
task.wait(0.05)
cmdbar:ReleaseFocus(true) -- true = simulate Enter press
sent = true
end
end)
if sent then return end
-- Method 2: Fire any HD Admin remote found in HDAdminFolder
pcall(function()
local hdFolder = ReplicatedStorage:FindFirstChild("HDAdminFolder")
if hdFolder then
for _, desc in ipairs(hdFolder:GetDescendants()) do
if desc:IsA("RemoteEvent") then
desc:FireServer(command)
sent = true
return
end
end
end
end)
if sent then return end
-- Method 3: TextChatService (modern Roblox chat)
pcall(function()
local textChannels = TextChatService:FindFirstChild("TextChannels")
if textChannels then
local channel = textChannels:FindFirstChild("RBXGeneral")
if channel then
channel:SendAsync(command)
sent = true
end
end
end)
if sent then return end
-- Method 4: Legacy chat (SayMessageRequest)
pcall(function()
local defaultChat = ReplicatedStorage:FindFirstChild("DefaultChatSystemChatEvents")
if defaultChat then
local sayMsg = defaultChat:FindFirstChild("SayMessageRequest")
if sayMsg then
sayMsg:FireServer(command, "All")
sent = true
end
end
end)
if sent then return end
warn("[ExplodeExploit] No method worked to send command: " .. command)
end
--// Explode a target player by sending the chat command
local function explodePlayer(targetPlayer)
if not Enabled then return end
if targetPlayer == LocalPlayer then return end -- don't explode yourself
-- If single target mode is on, only explode the specified player
if SingleTargetMode and TargetPlayerName ~= "" then
if targetPlayer.Name:lower() ~= TargetPlayerName:lower() then
return -- skip, not our target
end
end
local command = ";explode " .. targetPlayer.Name
sendCommand(command)
end
--// Hook into a player's character (spawn & movement detection)
local function hookCharacter(player, character)
-- Clean up old connections for this player
if Connections[player.UserId] then
for _, conn in pairs(Connections[player.UserId]) do
conn:Disconnect()
end
end
Connections[player.UserId] = {}
-- Wait for the HumanoidRootPart
local hrp = character:WaitForChild("HumanoidRootPart", 10)
if not hrp then return end
-- On Spawn: explode immediately
task.defer(function()
if Enabled then
explodePlayer(player)
end
end)
-- On Move: detect position change
local lastExplodeTime = 0
local moveConn
moveConn = hrp:GetPropertyChangedSignal("CFrame"):Connect(function()
if not Enabled then return end
local now = tick()
if now - lastExplodeTime >= MovementCooldown then
lastExplodeTime = now
explodePlayer(player)
end
end)
table.insert(Connections[player.UserId], moveConn)
end
--// Hook into a player (listen for their character spawning)
local function hookPlayer(player)
if player == LocalPlayer then return end
-- If they already have a character, hook it
if player.Character then
task.spawn(function()
hookCharacter(player, player.Character)
end)
end
-- Listen for future respawns
local charConn = player.CharacterAdded:Connect(function(character)
task.spawn(function()
hookCharacter(player, character)
end)
end)
if not Connections[player.UserId] then
Connections[player.UserId] = {}
end
table.insert(Connections[player.UserId], charConn)
end
--// Cleanup all connections
local function cleanupAll()
for userId, conns in pairs(Connections) do
for _, conn in pairs(conns) do
conn:Disconnect()
end
end
Connections = {}
end
--// Start hooking all current & future players
local function startExploit()
for _, player in ipairs(Players:GetPlayers()) do
hookPlayer(player)
end
-- Store the PlayerAdded connection
if not Connections["_playerAdded"] then
Connections["_playerAdded"] = {}
end
local addedConn = Players.PlayerAdded:Connect(function(player)
hookPlayer(player)
end)
table.insert(Connections["_playerAdded"], addedConn)
-- Cleanup when a player leaves
local removingConn = Players.PlayerRemoving:Connect(function(player)
if Connections[player.UserId] then
for _, conn in pairs(Connections[player.UserId]) do
conn:Disconnect()
end
Connections[player.UserId] = nil
end
end)
table.insert(Connections["_playerAdded"], removingConn)
end
--// ============================================================
--// ROUND ROBIN LOGIC
--// Cycles through all players one-by-one, exploding each in turn
--// with a configurable cooldown between explosions.
--// ============================================================
local function stopRoundRobin()
RoundRobinEnabled = false
if RoundRobinThread then
pcall(function() task.cancel(RoundRobinThread) end)
RoundRobinThread = nil
end
end
local function startRoundRobin()
-- Stop any existing round robin loop first
stopRoundRobin()
RoundRobinEnabled = true
RoundRobinThread = task.spawn(function()
while RoundRobinEnabled do
local players = Players:GetPlayers()
for _, player in ipairs(players) do
if not RoundRobinEnabled then break end
if player ~= LocalPlayer then
local command = ";explode " .. player.Name
sendCommand(command)
task.wait(RoundRobinCooldown)
end
end
-- Small safety wait before starting the next cycle
if RoundRobinEnabled then
task.wait(0.5)
end
end
end)
end
--// ============================================================
--// HR SPAM LOGIC
--// Repeatedly sends ;hr message with a configurable cooldown.
--// ============================================================
local function stopHRSpam()
HRSpamEnabled = false
if HRSpamThread then
pcall(function() task.cancel(HRSpamThread) end)
HRSpamThread = nil
end
end
local function startHRSpam()
stopHRSpam()
HRSpamEnabled = true
HRSpamThread = task.spawn(function()
while HRSpamEnabled do
sendCommand(HRSpamMessage)
task.wait(HRSpamCooldown)
end
end)
end
--// ============================================================
--// RAYFIELD GUI
--// ============================================================
local Window = Rayfield:CreateWindow({
Name = "💥 Explode Exploit",
Icon = 0,
LoadingTitle = "Explode Exploit",
LoadingSubtitle = "by Script",
Theme = "Default",
ToggleUIKeybind = "K",
DisableRayfieldPrompts = false,
DisableBuildWarnings = false,
ConfigurationSaving = {
Enabled = true,
FolderName = "ExplodeExploitConfig",
FileName = "ExplodeExploit"
},
KeySystem = false,
})
local MainTab = Window:CreateTab("Main", "bomb")
local SettingsTab = Window:CreateTab("Settings", "settings")
--// Main Tab Elements
MainTab:CreateSection("Explode Control")
local MainToggle = MainTab:CreateToggle({
Name = "Enable Auto Explode",
CurrentValue = false,
Flag = "AutoExplodeToggle",
Callback = function(Value)
Enabled = Value
if Value then
startExploit()
Rayfield:Notify({
Title = "Exploit Enabled",
Content = "Auto explode is now active. Players will be exploded on spawn and movement.",
Duration = 3,
Image = "bomb",
})
else
cleanupAll()
Rayfield:Notify({
Title = "Exploit Disabled",
Content = "Auto explode has been turned off.",
Duration = 3,
Image = "shield",
})
end
end,
})
MainTab:CreateSection("Single Player Target")
--// Helper: get list of player names (excluding local player)
local function getPlayerNames()
local names = {}
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
table.insert(names, player.Name)
end
end
if #names == 0 then
table.insert(names, "No players")
end
return names
end
local TargetToggle = MainTab:CreateToggle({
Name = "Single Player Mode",
CurrentValue = false,
Flag = "SingleTargetToggle",
Callback = function(Value)
SingleTargetMode = Value
if Value then
if TargetPlayerName == "" then
Rayfield:Notify({
Title = "Select a Target",
Content = "Single target mode is ON. Pick a player from the dropdown below.",
Duration = 4,
Image = "crosshair",
})
else
Rayfield:Notify({
Title = "Single Target ON",
Content = "Only targeting: " .. TargetPlayerName,
Duration = 3,
Image = "crosshair",
})
end
else
Rayfield:Notify({
Title = "Single Target OFF",
Content = "All players will be targeted again.",
Duration = 3,
Image = "users",
})
end
end,
})
local TargetDropdown = MainTab:CreateDropdown({
Name = "Select Target Player",
Options = getPlayerNames(),
CurrentOption = {},
MultiSelection = false,
Flag = "TargetPlayerDropdown",
Callback = function(Option)
TargetPlayerName = Option
Rayfield:Notify({
Title = "Target Set",
Content = "Now targeting: " .. Option,
Duration = 3,
Image = "crosshair",
})
end,
})
MainTab:CreateButton({
Name = "🔄 Refresh Player List",
Callback = function()
TargetDropdown:Set("")
TargetDropdown:Refresh(getPlayerNames(), true)
Rayfield:Notify({
Title = "Refreshed",
Content = "Player list updated.",
Duration = 2,
Image = "refresh-cw",
})
end,
})
MainTab:CreateSection("Round Robin")
local RoundRobinToggle = MainTab:CreateToggle({
Name = "Enable Round Robin",
CurrentValue = false,
Flag = "RoundRobinToggle",
Callback = function(Value)
if Value then
startRoundRobin()
Rayfield:Notify({
Title = "Round Robin ON",
Content = "Cycling through all players. Cooldown: " .. RoundRobinCooldown .. "s per player.",
Duration = 4,
Image = "repeat",
})
else
stopRoundRobin()
Rayfield:Notify({
Title = "Round Robin OFF",
Content = "Round robin exploding stopped.",
Duration = 3,
Image = "shield",
})
end
end,
})
MainTab:CreateSection("HR Spam")
local HRSpamToggle = MainTab:CreateToggle({
Name = "Enable HR Spam",
CurrentValue = false,
Flag = "HRSpamToggle",
Callback = function(Value)
if Value then
startHRSpam()
Rayfield:Notify({
Title = "HR Spam ON",
Content = "Spamming ;hr message every " .. HRSpamCooldown .. "s.",
Duration = 4,
Image = "message-circle",
})
else
stopHRSpam()
Rayfield:Notify({
Title = "HR Spam OFF",
Content = "HR spam stopped.",
Duration = 3,
Image = "shield",
})
end
end,
})
MainTab:CreateSection("Manual Actions")
MainTab:CreateButton({
Name = "Explode All Players Now",
Callback = function()
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
local command = ";explode " .. player.Name
sendCommand(command)
task.wait(0.3) -- small delay to avoid throttle
end
end
Rayfield:Notify({
Title = "Exploded All",
Content = "Sent ;explode via HD Admin for all players.",
Duration = 3,
Image = "zap",
})
end,
})
MainTab:CreateButton({
Name = "Explode Nearest Player",
Callback = function()
local myChar = LocalPlayer.Character
if not myChar or not myChar:FindFirstChild("HumanoidRootPart") then
Rayfield:Notify({
Title = "Error",
Content = "Your character is not loaded.",
Duration = 3,
Image = "alert-triangle",
})
return
end
local myPos = myChar.HumanoidRootPart.Position
local nearest = nil
local nearestDist = math.huge
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local dist = (player.Character.HumanoidRootPart.Position - myPos).Magnitude
if dist < nearestDist then
nearestDist = dist
nearest = player
end
end
end
if nearest then
sendCommand(";explode " .. nearest.Name)
Rayfield:Notify({
Title = "Exploded Nearest",
Content = "Sent ;explode for " .. nearest.Name .. " (" .. math.floor(nearestDist) .. " studs away)",
Duration = 3,
Image = "target",
})
else
Rayfield:Notify({
Title = "No Target",
Content = "No other players found.",
Duration = 3,
Image = "alert-triangle",
})
end
end,
})
--// Settings Tab Elements
SettingsTab:CreateSection("Configuration")
local CooldownSlider = SettingsTab:CreateSlider({
Name = "Movement Cooldown (seconds)",
Range = {0.1, 30},
Increment = 0.1,
Suffix = "s",
CurrentValue = 5,
Flag = "CooldownSlider",
Callback = function(Value)
MovementCooldown = Value
Rayfield:Notify({
Title = "Cooldown Updated",
Content = "Movement cooldown set to " .. Value .. "s.",
Duration = 3,
Image = "clock",
})
end,
})
local RoundRobinCooldownSlider = SettingsTab:CreateSlider({
Name = "Round Robin Cooldown (seconds)",
Range = {0.1, 30},
Increment = 0.1,
Suffix = "s",
CurrentValue = 3,
Flag = "RoundRobinCooldownSlider",
Callback = function(Value)
RoundRobinCooldown = Value
Rayfield:Notify({
Title = "RR Cooldown Updated",
Content = "Round robin cooldown set to " .. Value .. "s per player.",
Duration = 3,
Image = "clock",
})
end,
})
local HRSpamCooldownSlider = SettingsTab:CreateSlider({
Name = "HR Spam Cooldown (seconds)",
Range = {0.1, 30},
Increment = 0.1,
Suffix = "s",
CurrentValue = 3,
Flag = "HRSpamCooldownSlider",
Callback = function(Value)
HRSpamCooldown = Value
Rayfield:Notify({
Title = "HR Cooldown Updated",
Content = "HR spam cooldown set to " .. Value .. "s.",
Duration = 3,
Image = "clock",
})
end,
})
SettingsTab:CreateSection("Config Management")
SettingsTab:CreateButton({
Name = "💾 Save Config",
Callback = function()
pcall(function()
Rayfield:SaveConfiguration()
end)
Rayfield:Notify({
Title = "Config Saved",
Content = "All settings have been saved.",
Duration = 3,
Image = "save",
})
end,
})
SettingsTab:CreateButton({
Name = "📂 Load Config",
Callback = function()
pcall(function()
Rayfield:LoadConfiguration()
end)
Rayfield:Notify({
Title = "Config Loaded",
Content = "Settings have been loaded from file.",
Duration = 3,
Image = "download",
})
end,
})
SettingsTab:CreateButton({
Name = "Destroy GUI",
Callback = function()
cleanupAll()
stopRoundRobin()
stopHRSpam()
Enabled = false
Rayfield:Destroy()
end,
})



You need a rank for it to work
Even if devs didn't setup HD (which is very unlikely)
@ScriptKidding HD Mod rank costs like 80 robux and there's some games that have default HD admin with 30-120+ players sometimes like what I'm playing right now
@whoisrempacious if you talk about basic admin games then they aren't worth exploiting at, the games like that offer nothing interesting and with simple cmdbox hijack you can crash servers instantly