M
Description
Key system has basic hacks. Enjoy.
GAMEUniversal
UPDATEDOct 25, 2026
ACCESSKey System
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 ]]
-- LUNA ULTIMATE V4
-- Place in StarterPlayer > StarterPlayerScripts
-- Website is displayed on the key screen.
-- Internal key validation remains enabled.
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Lighting = game:GetService("Lighting")
local GuiService = game:GetService("GuiService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local INTERNAL_KEY = "123"
local WEBSITE = "https://glistening-crepe-667f24.netlify.app/"
local PURPLE = Color3.fromRGB(133, 70, 205)
local BG = Color3.fromRGB(23, 13, 41)
local PANEL = Color3.fromRGB(43, 28, 62)
local WHITE = Color3.fromRGB(245, 235, 255)
local MUTED = Color3.fromRGB(194, 169, 220)
local old = playerGui:FindFirstChild("LunaUltimate")
if old then old:Destroy() end
local gui = Instance.new("ScreenGui")
gui.Name = "LunaUltimate"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.DisplayOrder = 50
gui.Parent = playerGui
local function create(class, props, parent)
local obj = Instance.new(class)
for k, v in pairs(props) do obj[k] = v end
obj.Parent = parent
return obj
end
local function round(obj, radius)
create("UICorner", {
CornerRadius = UDim.new(0, radius or 9)
}, obj)
end
local function outline(obj, color)
create("UIStroke", {
Color = color or PURPLE,
Thickness = 1.5
}, obj)
end
local function makeLabel(parent, text, size, pos, textSize, color)
return create("TextLabel", {
BackgroundTransparency = 1,
Text = text,
Size = size,
Position = pos,
TextColor3 = color or WHITE,
Font = Enum.Font.Gotham,
TextSize = textSize or 14,
TextWrapped = true,
TextXAlignment = Enum.TextXAlignment.Left,
TextYAlignment = Enum.TextYAlignment.Center
}, parent)
end
local function makeButton(parent, text, size, pos, callback)
local b = create("TextButton", {
Size = size,
Position = pos,
BackgroundColor3 = PANEL,
Text = text,
TextColor3 = WHITE,
Font = Enum.Font.GothamSemibold,
TextSize = 13,
AutoButtonColor = true
}, parent)
round(b)
outline(b)
b.Activated:Connect(callback)
return b
end
local function makeBox(parent, placeholder, size, pos)
local b = create("TextBox", {
Size = size,
Position = pos,
BackgroundColor3 = BG,
Text = "",
PlaceholderText = placeholder,
PlaceholderColor3 = MUTED,
TextColor3 = WHITE,
Font = Enum.Font.Gotham,
TextSize = 13,
ClearTextOnFocus = false
}, parent)
round(b)
outline(b)
return b
end
local function makePanel(parent, name, size, pos)
local f = create("Frame", {
Name = name,
Size = size,
Position = pos,
BackgroundColor3 = PANEL,
BorderSizePixel = 0
}, parent)
round(f, 11)
outline(f)
return f
end
local function makeDraggable(handle, target)
local dragging, start, origin = false, nil, nil
handle.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
start = input.Position
origin = target.Position
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and (
input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch
) then
local delta = input.Position - start
target.Position = UDim2.new(
origin.X.Scale, origin.X.Offset + delta.X,
origin.Y.Scale, origin.Y.Offset + delta.Y
)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
end
-- Access-key screen
local keyScreen = create("Frame", {
Name = "KeyScreen",
Size = UDim2.fromScale(1, 1),
BackgroundColor3 = BG,
BorderSizePixel = 0
}, gui)
local keyCard = makePanel(
keyScreen,
"KeyCard",
UDim2.new(0.9, 0, 0, 400),
UDim2.new(0.05, 0, 0.5, -200)
)
keyCard.AnchorPoint = Vector2.new(0, 0)
create("UISizeConstraint", {
MinSize = Vector2.new(280, 400),
MaxSize = Vector2.new(430, 400)
}, keyCard)
makeLabel(
keyCard,
"☾ LUNA ULTIMATE",
UDim2.new(1, -30, 0, 38),
UDim2.new(0, 15, 0, 12),
21
)
makeLabel(
keyCard,
"ACCESS GATE",
UDim2.new(1, -30, 0, 22),
UDim2.new(0, 15, 0, 48),
12,
MUTED
)
makeLabel(
keyCard,
"Visit our website to get your access key.",
UDim2.new(1, -30, 0, 38),
UDim2.new(0, 15, 0, 75),
13
)
local keyInput = makeBox(
keyCard,
"Enter access key",
UDim2.new(1, -30, 0, 40),
UDim2.new(0, 15, 0, 119)
)
local keyError = makeLabel(
keyCard,
"",
UDim2.new(1, -30, 0, 22),
UDim2.new(0, 15, 0, 161),
12,
Color3.fromRGB(255, 110, 120)
)
local websitePanel = makePanel(
keyCard,
"WebsitePanel",
UDim2.new(1, -30, 0, 135),
UDim2.new(0, 15, 0, 192)
)
makeLabel(
websitePanel,
"GET YOUR ACCESS KEY",
UDim2.new(1, -20, 0, 25),
UDim2.new(0, 10, 0, 5),
13
)
makeLabel(
websitePanel,
"Open this address in Safari or your browser:",
UDim2.new(1, -20, 0, 25),
UDim2.new(0, 10, 0, 31),
11,
MUTED
)
local websiteBox = makeBox(
websitePanel,
"Website address",
UDim2.new(1, -20, 0, 34),
UDim2.new(0, 10, 0, 58)
)
websiteBox.Text = WEBSITE
websiteBox.TextEditable = false
websiteBox.TextSize = 11
makeButton(
websitePanel,
"OPEN WEBSITE",
UDim2.new(1, -20, 0, 30),
UDim2.new(0, 10, 0, 98),
function()
local success = pcall(function()
GuiService:OpenBrowserWindow(WEBSITE)
end)
if not success then
websiteBox.TextEditable = true
websiteBox:CaptureFocus()
websiteBox.SelectionStart = 1
websiteBox.CursorPosition = #websiteBox.Text + 1
keyError.Text = "If the site didn't open, copy the address above."
end
end
)
-- Main menu (hidden until the key is accepted)
local main = makePanel(
gui,
"MainWindow",
UDim2.new(0.92, 0, 0.78, 0),
UDim2.new(0.04, 0, 0.11, 0)
)
main.Visible = false
create("UISizeConstraint", {
MinSize = Vector2.new(290, 390),
MaxSize = Vector2.new(650, 620)
}, main)
local header = create("Frame", {
Size = UDim2.new(1, 0, 0, 48),
BackgroundColor3 = BG,
BorderSizePixel = 0
}, main)
round(header, 10)
makeLabel(
header,
"☾ LUNA ULTIMATE",
UDim2.new(0.65, 0, 1, 0),
UDim2.new(0, 12, 0, 0),
17
)
local closeButton = makeButton(
header,
"✕",
UDim2.new(0, 38, 0, 32),
UDim2.new(1, -46, 0, 8),
function()
main.Visible = false
reopen.Visible = true
end
)
local tabs = create("Frame", {
Size = UDim2.new(1, -16, 0, 38),
Position = UDim2.new(0, 8, 0, 54),
BackgroundTransparency = 1
}, main)
local tabNames = {"Mods", "Visuals", "Settings", "Admin"}
local tabButtons = {}
local pages = {}
local pageHolder = create("Frame", {
Size = UDim2.new(1, -16, 1, -102),
Position = UDim2.new(0, 8, 0, 96),
BackgroundTransparency = 1
}, main)
for i, name in ipairs(tabNames) do
local tab = makeButton(
tabs,
name,
UDim2.new(0.25, -4, 1, 0),
UDim2.new((i - 1) * 0.25, 0, 0, 0),
function()
for pageName, page in pairs(pages) do
page.Visible = pageName == name
end
for tabName, b in pairs(tabButtons) do
b.BackgroundColor3 = tabName == name and PURPLE or PANEL
end
end
)
tabButtons[name] = tab
local page = create("ScrollingFrame", {
Name = name .. "Page",
Size = UDim2.fromScale(1, 1),
BackgroundTransparency = 1,
BorderSizePixel = 0,
ScrollBarThickness = 4,
ScrollBarImageColor3 = PURPLE,
CanvasSize = UDim2.new(0, 0, 0, 0),
AutomaticCanvasSize = Enum.AutomaticSize.Y,
Visible = name == "Mods"
}, pageHolder)
create("UIListLayout", {
Padding = UDim.new(0, 7),
SortOrder = Enum.SortOrder.LayoutOrder
}, page)
create("UIPadding", {
PaddingTop = UDim.new(0, 4),
PaddingBottom = UDim.new(0, 8),
PaddingLeft = UDim.new(0, 3),
PaddingRight = UDim.new(0, 3)
}, page)
pages[name] = page
end
local function showPage(name)
for pageName, page in pairs(pages) do
page.Visible = pageName == name
end
for tabName, b in pairs(tabButtons) do
b.BackgroundColor3 = tabName == name and PURPLE or PANEL
end
end
local reopen = makeButton(
gui,
"☾ Open Luna",
UDim2.new(0, 130, 0, 40),
UDim2.new(0, 15, 0.7, 0),
function()
main.Visible = true
reopen.Visible = false
end
)
reopen.Visible = false
makeDraggable(header, main)
-- Movement controls
local function stopFlight()
local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if root then
local bv = root:FindFirstChild("LunaFlyVelocity")
local bg = root:FindFirstChild("LunaFlyGyro")
if bv then bv:Destroy() end
if bg then bg:Destroy() end
end
end
local function setFly(enabled)
state.Fly = enabled
if not enabled then
stopFlight()
return
end
local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if not root then
state.Fly = false
notify("Character not ready.")
return
end
local bv = Instance.new("BodyVelocity")
bv.Name = "LunaFlyVelocity"
bv.MaxForce = Vector3.new(1e6, 1e6, 1e6)
bv.Velocity = Vector3.zero
bv.Parent = root
local bg = Instance.new("BodyGyro")
bg.Name = "LunaFlyGyro"
bg.MaxTorque = Vector3.new(1e6, 1e6, 1e6)
bg.P = 9000
bg.CFrame = workspace.CurrentCamera.CFrame
bg.Parent = root
end
local function toggleNoclip(enabled)
state.Noclip = enabled
end
local function clearHighlights()
for _, h in ipairs(highlights) do
if h and h.Parent then h:Destroy() end
end
table.clear(highlights)
end
local function setESP(enabled)
state.ESP = enabled
clearHighlights()
if not enabled then return end
for _, other in ipairs(Players:GetPlayers()) do
if other ~= player and other.Character then
local h = Instance.new("Highlight")
h.Name = "LunaHighlight"
h.FillColor = currentTheme
h.OutlineColor = WHITE
h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
h.Parent = other.Character
table.insert(highlights, h)
end
end
end
local function toggleNightVision(enabled)
state.NightVision = enabled
if enabled then
Lighting.Brightness = 3
Lighting.ClockTime = 14
Lighting.FogEnd = 100000
else
Lighting.Brightness = originalLighting.Brightness
Lighting.ClockTime = originalLighting.ClockTime
Lighting.FogEnd = originalLighting.FogEnd
end
end
local function addToggle(pageName, title, callback)
local page = pages[pageName]
local active = false
local b = makeButton(
page,
title .. ": OFF",
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
active = not active
b.Text = title .. (active and ": ON" or ": OFF")
callback(active)
end
)
return b
end
-- Mods page
addToggle("Mods", "Fly", setFly)
addToggle("Mods", "Noclip", function(enabled)
toggleNoclip(enabled)
end)
addToggle("Mods", "Infinite Jump", function(enabled)
state.InfiniteJump = enabled
end)
addToggle("Mods", "Spin Mode", function(enabled)
state.Spin = enabled
end)
addToggle("Mods", "Speed Boost", function(enabled)
state.SpeedBoost = enabled
local hum = getHumanoid()
if hum then
if enabled then
savedWalkSpeed = hum.WalkSpeed
hum.WalkSpeed = speedLevel
else
hum.WalkSpeed = 16
end
end
end)
makeButton(
pages.Mods,
"Change Speed Boost: " .. speedLevel,
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
speedLevel += 8
if speedLevel > 100 then speedLevel = 16 end
if state.SpeedBoost then
local hum = getHumanoid()
if hum then hum.WalkSpeed = speedLevel end
end
notify("Speed boost set to " .. speedLevel)
end
).Name = "SpeedBoostValue"
addToggle("Mods", "High Jump", function(enabled)
state.HighJump = enabled
local hum = getHumanoid()
if hum then
hum.UseJumpPower = true
hum.JumpPower = enabled and jumpLevel or 50
end
end)
makeButton(
pages.Mods,
"Change Jump: " .. jumpLevel,
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
jumpLevel = jumpLevel == 50 and 100 or 50
local hum = getHumanoid()
if hum and state.HighJump then hum.JumpPower = jumpLevel end
notify("Jump power set to " .. jumpLevel)
end
)
makeButton(
pages.Mods,
"Reset Movement",
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
state.Fly = false
state.Noclip = false
state.InfiniteJump = false
state.Spin = false
state.SpeedBoost = false
state.HighJump = false
stopFlight()
local hum = getHumanoid()
if hum then
hum.WalkSpeed = 16
hum.JumpPower = 50
end
notify("Movement reset.")
showPage("Mods")
end
)
-- Visuals page
addToggle("Visuals", "Player Highlights", setESP)
makeButton(
pages.Visuals,
"Clear Player Highlights",
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
state.ESP = false
clearHighlights()
notify("Highlights cleared.")
end
)
addToggle("Visuals", "Night Vision", toggleNightVision)
makeButton(
pages.Visuals,
"Reset Field of View",
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
if workspace.CurrentCamera then
workspace.CurrentCamera.FieldOfView = 70
end
end
)
makeButton(
pages.Visuals,
"Increase Field of View",
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
local camera = workspace.CurrentCamera
if camera then
camera.FieldOfView = math.clamp(camera.FieldOfView + 10, 40, 120)
end
end
)
-- Settings page
local themeNames = {
Purple = Color3.fromRGB(133, 70, 205),
Blue = Color3.fromRGB(60, 120, 255),
Red = Color3.fromRGB(225, 55, 75),
Green = Color3.fromRGB(60, 200, 120),
Black = Color3.fromRGB(90, 80, 105)
}
local function setTheme(color)
currentTheme = color
for _, obj in ipairs(gui:GetDescendants()) do
if obj:IsA("UIStroke") then
obj.Color = color
end
end
clearHighlights()
if state.ESP then setESP(true) end
end
for name, color in pairs(themeNames) do
makeButton(
pages.Settings,
"Theme: " .. name,
UDim2.new(1, -6, 0, 36),
UDim2.new(),
function()
setTheme(color)
notify(name .. " theme selected.")
end
)
end
local redBox = makeBox(
pages.Settings,
"Red (0-255)",
UDim2.new(1, -6, 0, 36),
UDim2.new()
)
redBox.Text = "133"
local greenBox = makeBox(
pages.Settings,
"Green (0-255)",
UDim2.new(1, -6, 0, 36),
UDim2.new()
)
greenBox.Text = "70"
local blueBox = makeBox(
pages.Settings,
"Blue (0-255)",
UDim2.new(1, -6, 0, 36),
UDim2.new()
)
blueBox.Text = "205"
makeButton(
pages.Settings,
"Apply Custom RGB Theme",
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
local r = math.clamp(tonumber(redBox.Text) or 133, 0, 255)
local g = math.clamp(tonumber(greenBox.Text) or 70, 0, 255)
local b = math.clamp(tonumber(blueBox.Text) or 205, 0, 255)
setTheme(Color3.fromRGB(r, g, b))
notify("Custom theme applied.")
end
)
local imageBox = makeBox(
pages.Settings,
"Background image asset ID",
UDim2.new(1, -6, 0, 36),
UDim2.new()
)
makeButton(
pages.Settings,
"Apply Background Image",
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
local assetId = imageBox.Text:match("%d+")
if not assetId then
notify("Enter a valid image asset ID.")
return
end
local background = main:FindFirstChild("CustomBackground")
if not background then
background = Instance.new("ImageLabel")
background.Name = "CustomBackground"
background.Size = UDim2.fromScale(1, 1)
background.BackgroundTransparency = 1
background.ImageTransparency = 0.35
background.ScaleType = Enum.ScaleType.Crop
background.ZIndex = 0
background.Parent = main
background.SendToBack = nil
end
background.Image = "rbxassetid://" .. assetId
background.ZIndex = 0
notify("Background image set.")
end
)
addToggle("Settings", "Low Gravity", function(enabled)
workspace.Gravity = enabled and 90 or 196.2
end)
makeButton(
pages.Settings,
"Reset Graphics",
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
Lighting.Brightness = originalLighting.Brightness
Lighting.ClockTime = originalLighting.ClockTime
Lighting.FogEnd = originalLighting.FogEnd
workspace.Gravity = 196.2
if workspace.CurrentCamera then
workspace.CurrentCamera.FieldOfView = 70
end
notify("Graphics reset.")
end
)
makeButton(
pages.Settings,
"Open Luna Website",
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
pcall(function()
GuiService:OpenBrowserWindow(WEBSITE)
end)
notify("If the browser did not open, use the website on the key screen.")
end
)
-- Admin page
makeLabel(
pages.Admin,
"Admin tools for your own experience",
UDim2.new(1, -6, 0, 35),
UDim2.new(),
13,
MUTED
)
local targetBox = makeBox(
pages.Admin,
"Player username",
UDim2.new(1, -6, 0, 38),
UDim2.new()
)
makeButton(
pages.Admin,
"Find Player",
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
local query = string.lower(targetBox.Text)
if query == "" then
notify("Enter a username first.")
return
end
for _, target in ipairs(Players:GetPlayers()) do
if string.lower(target.Name) == query
or string.lower(target.DisplayName) == query then
notify("Found player: " .. target.Name)
return
end
end
notify("Player not found in this server.")
end
)
makeButton(
pages.Admin,
"Return to Mods",
UDim2.new(1, -6, 0, 38),
UDim2.new(),
function()
showPage("Mods")
end
)
-- Runtime movement behavior
RunService.Stepped:Connect(function()
if state.Noclip then
local character = player.Character
if character then
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end
end
if state.Fly then
local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
local camera = workspace.CurrentCamera
local hum = getHumanoid()
if root and camera and hum then
local bv = root:FindFirstChild("LunaFlyVelocity")
local bg = root:FindFirstChild("LunaFlyGyro")
if bv and bg then
local move = hum.MoveDirection
local vertical = 0
if UIS:IsKeyDown(Enum.KeyCode.Space) then
vertical = 1
elseif UIS:IsKeyDown(Enum.KeyCode.LeftControl) then
vertical = -1
elseif UIS.TouchEnabled then
-- Mobile vertical flight follows the camera's pitch.
vertical = camera.CFrame.LookVector.Y
end
local horizontal = Vector3.new(move.X, 0, move.Z)
bv.Velocity = horizontal * flySpeed + Vector3.new(0, vertical * flySpeed, 0)
bg.CFrame = camera.CFrame
end
end
end
if state.Spin then
local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = root.CFrame * CFrame.Angles(0, math.rad(8), 0)
end
end
end)
UIS.JumpRequest:Connect(function()
if state.InfiniteJump then
local hum = getHumanoid()
if hum then
hum:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end)
Players.PlayerAdded:Connect(function()
if state.ESP then
task.wait(1)
setESP(true)
end
end)
player.CharacterAdded:Connect(function()
task.wait(1)
local hum = getHumanoid()
if hum then
if state.SpeedBoost then hum.WalkSpeed = speedLevel end
if state.HighJump then hum.JumpPower = jumpLevel end
end
if state.Fly then setFly(true) end
if state.ESP then setESP(true) end
end)
-- Unlock: the key is validated internally, not displayed in the UI.
local keySubmit = makeButton(
keyCard,
"UNLOCK LUNA",
UDim2.new(1, -30, 0, 40),
UDim2.new(0, 15, 1, -52),
function()
if keyInput.Text == INTERNAL_KEY then
keyError.Text = ""
keyScreen.Visible = false
main.Visible = true
showPage("Mods")
notify("Luna Ultimate unlocked.")
else
keyError.Text = "Incorrect key. Try again."
keyInput.Text = ""
end
end
)
keyInput.FocusLost:Connect(function(enterPressed)
if enterPressed then
keySubmit:Activate()
end
end)
main.Visible = false
keyScreen.Visible = true
showPage("Mods")
print("LUNA ULTIMATE V4 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