Keyy
Key RequiredUniversal

Keyy

Universal Script12541254 400 views 131 executesUpdated Oct 16, 2025
0.0/ 5(1 votes)
010% Positive
Lua Script•412 lines (12072 chars)
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
})

Features & Information

Jsjs

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts