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 })