M
Description
TESTING TESTINGTESTINGTESTINGTESTINGTESTINGTESTINGTESTINGTESTINGTESTINGTESTINGTESTINGTESTINGTESTINGTESTING
GAMEDrill to Earth’s Core
UPDATEDOct 26, 2026
ACCESSKeyless
PLATFORMDesktop & Mobile
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
--[[
STUDIO TEST TOOLKIT (LocalScript)
WHERE: StarterPlayer > StarterPlayerScripts (insert a LocalScript, paste this in)
RUN: Roblox Studio > Test tab > Play
USE: your own place file / private copy in Studio only.
HOW TO READ IT: every feature is one small function (setFly, setNoclip, ...).
Start with CONFIG below, then read the functions one at a time.
Open the Output window (View > Output) to see print() messages.
]]
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Lighting = game:GetService("Lighting")
local Workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
--------------------------------------------------------------------
-- CONFIG: change these to match the names you see in Explorer
--------------------------------------------------------------------
local CONFIG = {
FlySpeed = 60,
WalkSpeed = 40,
-- Instant prompts + auto-open only touch prompts whose name (or a parent's
-- name) contains this word. Use "" to affect every prompt.
ChestKeyword = "chest",
AutoOpenRange = 200, -- studs
-- ESP: name keyword -> highlight color. Keywords match anywhere in a name,
-- so "ore" also matches "core". Make them more specific if you get noise.
ESP = {
ore = Color3.fromRGB(255, 200, 0),
chest = Color3.fromRGB(80, 255, 120),
mine = Color3.fromRGB(120, 180, 255),
},
KillAuraRange = 25,
EnemyFolderName = "Enemies", -- TODO: the Workspace folder that holds enemies in your copy
}
--------------------------------------------------------------------
-- HELPERS
--------------------------------------------------------------------
local function getChar()
local char = player.Character
if not char then
return nil
end
local hum = char:FindFirstChildOfClass("Humanoid")
local hrp = char:FindFirstChild("HumanoidRootPart")
if hum and hrp then
return char, hum, hrp
end
return nil
end
-- Does this instance, or one of its 3 parents, have the keyword in its name?
local function nameMatches(inst, keyword)
if keyword == "" then
return true
end
local current = inst
for _ = 1, 4 do
if not current or current == Workspace then
break
end
if string.find(string.lower(current.Name), keyword, 1, true) then
return true
end
current = current.Parent
end
return false
end
local function promptPosition(prompt)
local p = prompt.Parent
if not p then
return nil
end
if p:IsA("BasePart") then
return p.Position
elseif p:IsA("Attachment") then
return p.WorldPosition
elseif p:IsA("Model") then
return p:GetPivot().Position
end
return nil
end
--------------------------------------------------------------------
-- STATE (declared up here so the respawn handler at the bottom can use it)
--------------------------------------------------------------------
local flying = false
local speedOn = false
--------------------------------------------------------------------
-- INSTANT PROMPTS: HoldDuration = 0 means "no holding needed"
--------------------------------------------------------------------
local instantOn = false
local originalHold = {} -- prompt -> its original HoldDuration
local function applyInstant(prompt)
if instantOn and nameMatches(prompt, CONFIG.ChestKeyword) then
if originalHold[prompt] == nil then
originalHold[prompt] = prompt.HoldDuration
end
prompt.HoldDuration = 0
end
end
Workspace.DescendantAdded:Connect(function(d)
if d:IsA("ProximityPrompt") then
applyInstant(d)
end
end)
local function setInstant(on)
instantOn = on
if on then
for _, d in ipairs(Workspace:GetDescendants()) do
if d:IsA("ProximityPrompt") then
applyInstant(d)
end
end
else
for prompt, original in pairs(originalHold) do
if prompt.Parent then
prompt.HoldDuration = original
end
end
originalHold = {}
end
end
--------------------------------------------------------------------
-- FLY: set our own velocity every frame, steered by the camera
--------------------------------------------------------------------
local flyConn
local controls
pcall(function()
local playerModule = require(player:WaitForChild("PlayerScripts"):WaitForChild("PlayerModule"))
controls = playerModule:GetControls()
end)
local function setFly(on)
flying = on
if flyConn then
flyConn:Disconnect()
flyConn = nil
end
local _, hum = getChar()
if hum then
hum.PlatformStand = on
end
if not on then
return
end
flyConn = RunService.Heartbeat:Connect(function()
local char, _, root = getChar()
if not char then
return
end
local cam = Workspace.CurrentCamera
local move = controls and controls:GetMoveVector() or Vector3.zero
-- move.Z is negative when pushing forward, so this points where the camera looks
local dir = cam.CFrame:VectorToWorldSpace(Vector3.new(move.X, 0, move.Z))
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
dir = dir + Vector3.yAxis
end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then
dir = dir - Vector3.yAxis
end
root.AssemblyLinearVelocity = dir * CONFIG.FlySpeed -- zero input = hover
end)
end
--------------------------------------------------------------------
-- NOCLIP: turn CanCollide off on every character part, every physics step
--------------------------------------------------------------------
local noclipConn
local savedCollide = {} -- part -> original CanCollide
local function setNoclip(on)
if noclipConn then
noclipConn:Disconnect()
noclipConn = nil
end
if on then
noclipConn = RunService.Stepped:Connect(function()
local char = getChar()
if not char then
return
end
for _, part in ipairs(char:GetDescendants()) do
if part:IsA("BasePart") then
if savedCollide[part] == nil then
savedCollide[part] = part.CanCollide
end
part.CanCollide = false
end
end
end)
else
for part, original in pairs(savedCollide) do
if part.Parent then
part.CanCollide = original
end
end
savedCollide = {}
end
end
--------------------------------------------------------------------
-- SPEED
--------------------------------------------------------------------
local function setSpeed(on)
speedOn = on
local _, hum = getChar()
if hum then
hum.WalkSpeed = on and CONFIG.WalkSpeed or 16
end
end
--------------------------------------------------------------------
-- FULLBRIGHT: back up the lighting settings, then restore them when off
--------------------------------------------------------------------
local lightingBackup = {}
local function setFullbright(on)
if on then
lightingBackup = {
Brightness = Lighting.Brightness,
ClockTime = Lighting.ClockTime,
FogEnd = Lighting.FogEnd,
Ambient = Lighting.Ambient,
GlobalShadows = Lighting.GlobalShadows,
}
Lighting.Brightness = 2
Lighting.ClockTime = 14
Lighting.FogEnd = 1e6
Lighting.Ambient = Color3.new(1, 1, 1)
Lighting.GlobalShadows = false
else
for prop, value in pairs(lightingBackup) do
Lighting[prop] = value
end
end
end
--------------------------------------------------------------------
-- ESP: put a Highlight on anything whose name contains a CONFIG.ESP keyword
-- (Roblox only draws about 31 Highlights at once)
--------------------------------------------------------------------
local espOn = false
local espObjects = setmetatable({}, { __mode = "k" }) -- target -> Highlight
local function espColorFor(inst)
local lowered = string.lower(inst.Name)
for keyword, color in pairs(CONFIG.ESP) do
if string.find(lowered, keyword, 1, true) then
return color
end
end
return nil
end
local function tryAddESP(inst)
if not espOn or espObjects[inst] then
return
end
if not (inst:IsA("Model") or inst:IsA("BasePart")) then
return
end
if Players:GetPlayerFromCharacter(inst) then
return
end
-- skip if a parent already has a highlight
local p = inst.Parent
while p and p ~= Workspace do
if espObjects[p] then
return
end
p = p.Parent
end
local color = espColorFor(inst)
if not color then
return
end
local hl = Instance.new("Highlight")
hl.Name = "StudioTestESP"
hl.Adornee = inst
hl.FillColor = color
hl.FillTransparency = 0.6
hl.OutlineColor = color
hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
hl.Parent = inst
espObjects[inst] = hl
end
Workspace.DescendantAdded:Connect(tryAddESP)
local function setESP(on)
espOn = on
if on then
for _, d in ipairs(Workspace:GetDescendants()) do
tryAddESP(d)
end
else
for _, hl in pairs(espObjects) do
hl:Destroy()
end
table.clear(espObjects)
end
end
--------------------------------------------------------------------
-- AUTO-OPEN CHESTS: teleport next to the nearest matching prompt and trigger it.
-- prompt:InputHoldBegin() / InputHoldEnd() is the official way to "press" a prompt.
--------------------------------------------------------------------
local autoOpenOn = false
local opened = setmetatable({}, { __mode = "k" })
local function setAutoOpen(on)
autoOpenOn = on
if not on then
table.clear(opened)
return
end
task.spawn(function()
while autoOpenOn do
local _, _, root = getChar()
if root then
local bestPrompt, bestPos, bestDist
for _, d in ipairs(Workspace:GetDescendants()) do
if d:IsA("ProximityPrompt") and d.Enabled and not opened[d] and nameMatches(d, CONFIG.ChestKeyword) then
local pos = promptPosition(d)
if pos then
local dist = (pos - root.Position).Magnitude
if dist <= CONFIG.AutoOpenRange and (not bestDist or dist < bestDist) then
bestPrompt, bestPos, bestDist = d, pos, dist
end
end
end
end
if bestPrompt then
opened[bestPrompt] = true
root.CFrame = CFrame.new(bestPos + Vector3.new(0, 3, 0))
task.wait(0.2)
bestPrompt:InputHoldBegin()
task.wait(bestPrompt.HoldDuration + 0.1)
bestPrompt:InputHoldEnd()
end
end
task.wait(1) -- scanning the whole Workspace is slow, so don't do it every frame
end
end)
end
--------------------------------------------------------------------
-- KILL AURA (skeleton): finds enemies in range, then calls dealDamage().
-- YOU fill in dealDamage() for your copy.
--------------------------------------------------------------------
local killAuraOn = false
local function dealDamage(enemy)
-- TODO: replace with however your copy deals damage.
-- In Explorer, open the sword/pickaxe Tool and read its scripts. They usually
-- fire a RemoteEvent, e.g.:
-- game.ReplicatedStorage.Remotes.Hit:FireServer(enemy)
-- Changing Humanoid.Health from a client only changes YOUR view, not the server's.
print("would damage:", enemy.Name)
end
local function setKillAura(on)
killAuraOn = on
if not on then
return
end
task.spawn(function()
while killAuraOn do
local _, _, root = getChar()
local folder = Workspace:FindFirstChild(CONFIG.EnemyFolderName)
if root and folder then
for _, enemy in ipairs(folder:GetChildren()) do
local eRoot = enemy:IsA("Model") and (enemy.PrimaryPart or enemy:FindFirstChild("HumanoidRootPart"))
if eRoot and (eRoot.Position - root.Position).Magnitude <= CONFIG.KillAuraRange then
dealDamage(enemy)
end
end
end
task.wait(0.25)
end
end)
end
--------------------------------------------------------------------
-- RESPAWN: re-apply settings that live on the character
--------------------------------------------------------------------
player.CharacterAdded:Connect(function(char)
local hum = char:WaitForChild("Humanoid")
if flying then
hum.PlatformStand = true
end
if speedOn then
hum.WalkSpeed = CONFIG.WalkSpeed
end
end)
--------------------------------------------------------------------
-- GUI: one toggle button per feature, plus a keyboard shortcut
--------------------------------------------------------------------
local gui = Instance.new("ScreenGui")
gui.Name = "StudioTestToolkit"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")
local frame = Instance.new("Frame")
frame.Position = UDim2.fromOffset(10, 80)
frame.Size = UDim2.fromOffset(190, 0)
frame.AutomaticSize = Enum.AutomaticSize.Y
frame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
frame.BackgroundTransparency = 0.3
frame.Parent = gui
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 4)
layout.Parent = frame
local function addToggle(label, setter, key)
local state = false
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 0, 30)
btn.Font = Enum.Font.GothamMedium
btn.TextSize = 14
btn.TextColor3 = Color3.new(1, 1, 1)
btn.Parent = frame
local function refresh()
btn.Text = label .. (state and ": ON" or ": OFF") .. " [" .. key.Name .. "]"
btn.BackgroundColor3 = state and Color3.fromRGB(40, 140, 80) or Color3.fromRGB(60, 60, 60)
end
local function toggle()
state = not state
setter(state)
refresh()
end
btn.Activated:Connect(toggle) -- works for mouse and touch
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if not gameProcessed and input.KeyCode == key then
toggle()
end
end)
refresh()
end
addToggle("Fly", setFly, Enum.KeyCode.F)
addToggle("Noclip", setNoclip, Enum.KeyCode.N)
addToggle("Speed", setSpeed, Enum.KeyCode.G)
addToggle("Fullbright", setFullbright, Enum.KeyCode.B)
addToggle("ESP", setESP, Enum.KeyCode.V)
addToggle("Instant prompts", setInstant, Enum.KeyCode.H)
addToggle("Auto-open chests", setAutoOpen, Enum.KeyCode.J)
addToggle("Kill aura (skeleton)", setKillAura, Enum.KeyCode.K)
print("Studio Test Toolkit loaded.")
Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place