
KeylessUniversal

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
local CoreGui = game:GetService("CoreGui")
local TeleportService = game:GetService("TeleportService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera
-- Lighting ayarları
Lighting.Brightness = 1
Lighting.Ambient = Color3.fromRGB(128, 128, 128)
Lighting.OutdoorAmbient = Color3.fromRGB(128, 128, 128)
Lighting.FogEnd = 1000
for _, effect in pairs(Lighting:GetChildren()) do
if effect:IsA("PostEffect") then
effect:Destroy()
end
end
-- Rejoin fonksiyonu
local function rejoin()
TeleportService:Teleport(game.PlaceId, LocalPlayer)
end
CoreGui.ChildAdded:Connect(function(child)
if child:IsA("ScreenGui") and child.Name == "ErrorPrompt" then
task.wait(2)
rejoin()
end
end)
-- Rayfield GUI
local success, Rayfield = pcall(function()
return loadstring(game:HttpGet("https://sirius.menu/rayfield"))()
end)
if not success or not Rayfield then
warn("Failed to load Rayfield")
return
end
-- ✅ PlatoBoost Key System ile GUI
local Window = Rayfield:CreateWindow({
Name = "ZeckHub",
LoadingTitle = "Loading ZeckHub...",
LoadingSubtitle = "by Robertzeck",
ConfigurationSaving = {
Enabled = true,
FileName = "zeckhub_config"
},
KeySystem = true,
KeySettings = {
Title = "Access Required",
Subtitle = "Enter your key",
Note = "Join Discord or PlatoBoost to get a key",
FileName = "zeckhub_key",
SaveKey = true,
GrabKeyFromSite = false,
Key = nil,
API = {
{
Type = "platoboost",
ServiceId = "8865", -- PlatoBoost Service ID
Secret = "b27d4fe0-64ff-4874-8fb6-662bab9c776f", -- PlatoBoost Secret
}
}
},
Theme = "Dark",
ToggleUIKeybind = Enum.KeyCode.K
})
-- ===================== Hitbox Tab =====================
local HitboxTab = Window:CreateTab("Ball", "flame")
local hitboxScale = 5.0
local function findFirstPart(model)
for _, descendant in ipairs(model:GetDescendants()) do
if descendant:IsA("BasePart") then
return descendant
end
end
end
local function updateHitboxes(scale)
for _, model in ipairs(Workspace:GetChildren()) do
if model:IsA("Model") and model.Name:match("^CLIENT_BALL_%d+$") then
local ball = model:FindFirstChild("Ball.001")
if not ball then
local basePart = findFirstPart(model)
if basePart then
ball = Instance.new("Part")
ball.Name = "Ball.001"
ball.Shape = Enum.PartType.Ball
ball.Size = Vector3.new(2, 2, 2) * scale
ball.CFrame = basePart.CFrame
ball.Anchored = true
ball.CanCollide = false
ball.Transparency = 0.7
ball.Material = Enum.Material.ForceField
ball.Color = Color3.fromRGB(0, 255, 0)
ball.Parent = model
end
else
ball.Size = Vector3.new(2, 2, 2) * scale
end
end
end
end
local function removeHitboxes()
for _, model in ipairs(Workspace:GetChildren()) do
if model:IsA("Model") and model.Name:match("^CLIENT_BALL_%d+$") then
local ball = model:FindFirstChild("Ball.001")
if ball then
ball:Destroy()
end
end
end
end
Workspace.ChildAdded:Connect(function(child)
if child:IsA("Model") and child.Name:match("^CLIENT_BALL_%d+$") then
task.wait(0.1)
updateHitboxes(hitboxScale)
end
end)
HitboxTab:CreateSlider({
Name = "Hitbox Size",
Range = {0, 20},
Increment = 0.1,
Suffix = "x",
CurrentValue = hitboxScale,
Callback = function(value)
hitboxScale = value
updateHitboxes(value)
Rayfield:Notify({
Title = "Size Changed",
Content = "Hitbox scale set to " .. value .. "x",
Duration = 2,
Image = "maximize"
})
end
})
HitboxTab:CreateButton({
Name = "Remove Hitboxes",
Callback = function()
removeHitboxes()
Rayfield:Notify({
Title = "Hitboxes Removed",
Content = "All hitboxes cleared",
Duration = 2,
Image = "power-off"
})
end
})
-- ===================== Character Tab =====================
local CharacterTab = Window:CreateTab("Character", "user-round")
local autoShiftLock = true
local airMovement = false
local airMovementSpeed = 16
local bodyVelocity = nil
local function getWalkSpeed()
local humanoid = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid")
return humanoid and humanoid.WalkSpeed or 16
end
local function applyAirControl(rootPart)
if bodyVelocity then return end
bodyVelocity = Instance.new("BodyVelocity")
bodyVelocity.MaxForce = Vector3.new(1e5, 0, 1e5)
bodyVelocity.Velocity = Vector3.zero
bodyVelocity.P = 2500
bodyVelocity.Name = "AirControlVelocity"
bodyVelocity.Parent = rootPart
end
local function removeAirControl()
if bodyVelocity then
bodyVelocity:Destroy()
bodyVelocity = nil
end
end
local function setupCharacter(character)
local humanoid = character:WaitForChild("Humanoid")
local rootPart = character:WaitForChild("HumanoidRootPart")
airMovementSpeed = getWalkSpeed()
humanoid:GetPropertyChangedSignal("Jump"):Connect(function()
if humanoid.Jump then
if autoShiftLock then
task.defer(function()
task.wait(0.03)
local lookVector = Vector3.new(Camera.CFrame.LookVector.X, 0, Camera.CFrame.LookVector.Z)
if lookVector.Magnitude > 0 then
rootPart.CFrame = CFrame.lookAt(rootPart.Position, rootPart.Position + lookVector.Unit)
humanoid.AutoRotate = false
end
end)
else
humanoid.AutoRotate = true
end
end
end)
humanoid.StateChanged:Connect(function(_, newState)
if newState == Enum.HumanoidStateType.Freefall then
if airMovement then
applyAirControl(rootPart)
end
elseif newState == Enum.HumanoidStateType.Landed then
removeAirControl()
humanoid.AutoRotate = true
end
end)
end
if LocalPlayer.Character then
setupCharacter(LocalPlayer.Character)
end
LocalPlayer.CharacterAdded:Connect(setupCharacter)
CharacterTab:CreateToggle({
Name = "Auto Shift Lock",
CurrentValue = true,
Callback = function(value)
autoShiftLock = value
end
})
CharacterTab:CreateToggle({
Name = "Air Movement (Freeflight)",
CurrentValue = false,
Callback = function(value)
airMovement = value
if not value then
removeAirControl()
end
end
})
CharacterTab:CreateSlider({
Name = "Air Movement Speed",
Range = {0, 100},
Increment = 1,
CurrentValue = getWalkSpeed(),
Suffix = " studs/s",
Callback = function(value)
airMovementSpeed = value
end
})
RunService.RenderStepped:Connect(function()
if airMovement and bodyVelocity and LocalPlayer.Character then
local humanoid = LocalPlayer.Character:FindFirstChild("Humanoid")
if humanoid then
bodyVelocity.Velocity = humanoid.MoveDirection * airMovementSpeed
end
end
end)
-- ===================== Lines Tab =====================
local LinesTab = Window:CreateTab("Lines", "eye")
local lineDistance = 50
local lines = {}
local linesEnabled = true
local lineColors = {Color3.fromRGB(255,0,0), Color3.fromRGB(0,255,0), Color3.fromRGB(0,0,255), Color3.fromRGB(255,165,0)}
local function removeLine(player)
local data = lines[player]
if data then
if data.beam then data.beam:Destroy() end
if data.target and data.target.Parent then data.target:Destroy() end
if data.attachment and data.attachment.Parent then data.attachment:Destroy() end
lines[player] = nil
end
end
local function updateLine(player, index)
if not linesEnabled then
removeLine(player)
return
end
local character = player.Character
if not character or not character:FindFirstChild("Head") or not character:FindFirstChild("HumanoidRootPart") then
removeLine(player)
return
end
local head = character.Head
local rootPart = character.HumanoidRootPart
if not lines[player] then
local attachment = Instance.new("Attachment", head)
local target = Instance.new("Part")
target.Anchored = true
target.CanCollide = false
target.Transparency = 1
target.Size = Vector3.new(0.1, 0.1, 0.1)
target.Parent = Workspace
local targetAttachment = Instance.new("Attachment", target)
local beam = Instance.new("Beam")
beam.Attachment0 = attachment
beam.Attachment1 = targetAttachment
beam.Width0 = 0.25
beam.Width1 = 0.25
beam.FaceCamera = true
beam.LightEmission = 1
beam.Transparency = NumberSequence.new(0.3)
beam.Color = ColorSequence.new(lineColors[(index - 1) % #lineColors + 1])
beam.Parent = head
lines[player] = {beam = beam, target = target, attachment = attachment}
end
local data = lines[player]
data.target.Position = head.Position + rootPart.CFrame.LookVector * lineDistance
end
RunService.RenderStepped:Connect(function()
if linesEnabled then
for index, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Team ~= LocalPlayer.Team then
updateLine(player, index)
else
removeLine(player)
end
end
else
for player in pairs(lines) do
removeLine(player)
end
end
end)
Players.PlayerRemoving:Connect(removeLine)
LinesTab:CreateToggle({
Name = "Enable Lines",
CurrentValue = true,
Callback = function(value)
linesEnabled = value
if not value then
for player in pairs(lines) do
removeLine(player)
end
end
end
})
LinesTab:CreateSlider({
Name = "Line Distance",
Range = {0, 100},
Increment = 10,
CurrentValue = lineDistance,
Suffix = " studs",
Callback = function(value)
lineDistance = value
end
})
LinesTab:CreateParagraph({
Title = "Note",
Content = "If the lines do not appear, just turn the toggle off and on."
})
-- ===================== Others Tab (Key Butonu Dahil) =====================
local OthersTab = Window:CreateTab("Others", "alert-triangle")
-- Rejoin button
OthersTab:CreateButton({
Name = "Rejoin",
Callback = rejoin
})
-- Turn off all
OthersTab:CreateButton({
Name = "Turn Off All",
Callback = function()
removeHitboxes()
autoShiftLock = false
airMovement = false
linesEnabled = false
for player in pairs(lines) do
removeLine(player)
end
Rayfield:Notify({
Title = "Panic Mode",
Content = "All features disabled.",
Duration = 3,
Image = "skull"
})
end
})
-- ✅ PlatoBoost Key Alma Butonu
OthersTab:CreateButton({
Name = "Get Key (PlatoBoost)",
Callback = function()
setclipboard("https://platoboost.app/")
Rayfield:Notify({
Title = "Key Link Copied",
Content = "PlatoBoost sitesine gidip key alabilirsiniz.",
Duration = 4,
Image = "link"
})
end
})No comments yet for this script.

![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/sb/0-1753093706828.png)

