-- Carregar a biblioteca Rayfield local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() -- ===== Serviços ===== local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Players = game:GetService("Players") local HttpService = game:GetService("HttpService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local rootPart = character:WaitForChild("HumanoidRootPart") -- ===== Configurações Globais ===== local settings = { infiniteJump = false, flyEnabled = false, flySpeed = 50, walkSpeed = 16, jumpPower = 50, hitboxEnabled = false, hitboxSize = 1.5, hitboxTransparency = 0.5, invisible = false, } -- ===== Variáveis Internas ===== local flyBodyVelocity = nil local flyConnection = nil local floatTime = 0 -- ===== Infinite Jump (UserInputService) ===== UIS.JumpRequest:Connect(function() if settings.infiniteJump then local char = player.Character if char then local hum = char:FindFirstChildOfClass("Humanoid") if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end end end) -- ===== Fly (com suavização e animações) ===== local function toggleFly(state) settings.flyEnabled = state if state then if not flyBodyVelocity then flyBodyVelocity = Instance.new("BodyVelocity") flyBodyVelocity.MaxForce = Vector3.new(1e9, 1e9, 1e9) flyBodyVelocity.Velocity = Vector3.new(0, 0, 0) flyBodyVelocity.Parent = rootPart end if not flyConnection then flyConnection = RunService.Heartbeat:Connect(function(deltaTime) if not settings.flyEnabled or not flyBodyVelocity then return end local moveDir = humanoid.MoveDirection local vertical = Vector3.new(0, 0, 0) -- Subir (Espaço) e descer (Shift/Control) if UIS:IsKeyDown(Enum.KeyCode.Space) then vertical = Vector3.new(0, 1, 0) elseif UIS:IsKeyDown(Enum.KeyCode.LeftControl) or UIS:IsKeyDown(Enum.KeyCode.LeftShift) then vertical = Vector3.new(0, -1, 0) end local velocity = Vector3.new(0, 0, 0) if moveDir.Magnitude > 0 or vertical.Magnitude > 0 then local camera = workspace.CurrentCamera local forward = camera.CFrame.LookVector local right = camera.CFrame.RightVector local up = camera.CFrame.UpVector local horizontal = (forward * -moveDir.Z + right * moveDir.X) * settings.flySpeed local verticalVelocity = vertical * settings.flySpeed velocity = horizontal + verticalVelocity end -- Suavização (interpolação) local smoothFactor = 1 - math.exp(-0.2 * deltaTime * 60) local newVel = flyBodyVelocity.Velocity:Lerp(velocity, smoothFactor) flyBodyVelocity.Velocity = newVel -- Efeito de flutuação (apenas quando parado) if velocity.Magnitude == 0 and vertical.Magnitude == 0 then floatTime = floatTime + deltaTime * 2 local floatOffset = math.sin(floatTime) * 0.5 flyBodyVelocity.Velocity = flyBodyVelocity.Velocity + Vector3.new(0, floatOffset * deltaTime, 0) end end) end Rayfield:Notify("Fly", "Ativado! Velocidade: " .. settings.flySpeed, 3) else if flyBodyVelocity then flyBodyVelocity:Destroy() flyBodyVelocity = nil end if flyConnection then flyConnection:Disconnect() flyConnection = nil end Rayfield:Notify("Fly", "Desativado!", 3) end end -- ===== WalkSpeed e JumpPower ===== local function setWalkSpeed(value) settings.walkSpeed = value if humanoid then humanoid.WalkSpeed = value end end local function setJumpPower(value) settings.jumpPower = value if humanoid then humanoid.JumpPower = value end end -- ===== Invisibility ===== local function setInvisible(state) settings.invisible = state local char = player.Character if not char then return end for _, part in pairs(char:GetDescendants()) do if part:IsA("BasePart") then part.Transparency = state and 1 or 0 end end -- Acessórios for _, acc in pairs(char:GetChildren()) do if acc:IsA("Accessory") and acc:FindFirstChild("Handle") then acc.Handle.Transparency = state and 1 or 0 end end end -- ===== Hitbox Expander ===== local function toggleHitbox(state) settings.hitboxEnabled = state local char = player.Character if not char then return end if state then for _, part in pairs(char:GetDescendants()) do if part:IsA("BasePart") then part.Size = part.Size * settings.hitboxSize part.Transparency = settings.hitboxTransparency end end else for _, part in pairs(char:GetDescendants()) do if part:IsA("BasePart") then part.Size = part.Size / settings.hitboxSize part.Transparency = 0 end end if settings.invisible then setInvisible(true) end end end local function setHitboxSize(value) settings.hitboxSize = value if settings.hitboxEnabled then toggleHitbox(false) toggleHitbox(true) end end local function setHitboxTransparency(value) settings.hitboxTransparency = value if settings.hitboxEnabled then local char = player.Character if char then for _, part in pairs(char:GetDescendants()) do if part:IsA("BasePart") then part.Transparency = value end end end end end -- ===== Salvar / Carregar Configurações ===== local function saveSettings() local json = HttpService:JSONEncode(settings) local success, err = pcall(function() writefile("nitarymenu_settings.json", json) end) if success then Rayfield:Notify("Settings Saved", "Configurações salvas com sucesso!", 3) else Rayfield:Notify("Save Failed", "Erro ao salvar: " .. tostring(err), 3) end end local function loadSettings() local success, data = pcall(function() return readfile("nitarymenu_settings.json") end) if success then local decoded = HttpService:JSONDecode(data) if decoded then for k, v in pairs(decoded) do settings[k] = v end -- Aplicar configurações setWalkSpeed(settings.walkSpeed) setJumpPower(settings.jumpPower) toggleFly(settings.flyEnabled) toggleHitbox(settings.hitboxEnabled) setInvisible(settings.invisible) Rayfield:Notify("Settings Loaded", "Configurações carregadas!", 3) else Rayfield:Notify("Load Failed", "Arquivo inválido", 3) end else Rayfield:Notify("Load Failed", "Nenhum arquivo salvo", 3) end end local function resetSettings() settings = { infiniteJump = false, flyEnabled = false, flySpeed = 50, walkSpeed = 16, jumpPower = 50, hitboxEnabled = false, hitboxSize = 1.5, hitboxTransparency = 0.5, invisible = false, } setWalkSpeed(settings.walkSpeed) setJumpPower(settings.jumpPower) toggleFly(false) toggleHitbox(false) setInvisible(false) Rayfield:Notify("Settings Reset", "Todas as configurações foram resetadas", 3) end -- ===== Interface Rayfield ===== local Window = Rayfield:CreateWindow({ Name = "nitary menu", LoadingTitle = "Carregando...", Theme = "Default", ConfigurationSaving = { Enabled = true, FolderName = "nitarymenu", FileName = "Settings" }, KeySystem = false, }) -- Abas local playerTab = Window:CreateTab("Player", 4483362458) local hitboxTab = Window:CreateTab("Hitbox", 4483362458) local configTab = Window:CreateTab("Configurações", 4483362458) -- ===== Player Tab ===== playerTab:CreateSection("Movement") playerTab:CreateToggle({ Name = "Infinite Jump", CurrentValue = false, Callback = function(value) settings.infiniteJump = value end, }) playerTab:CreateSlider({ Name = "Walk Speed", Range = {0, 100}, Increment = 1, Suffix = "Speed", CurrentValue = settings.walkSpeed, Callback = function(value) setWalkSpeed(value) end, }) playerTab:CreateSlider({ Name = "Jump Power", Range = {0, 200}, Increment = 1, Suffix = "Power", CurrentValue = settings.jumpPower, Callback = function(value) setJumpPower(value) end, }) playerTab:CreateSection("Fly System") playerTab:CreateToggle({ Name = "Enable Fly", CurrentValue = false, Callback = function(value) toggleFly(value) end, }) playerTab:CreateSlider({ Name = "Fly Speed", Range = {10, 200}, Increment = 1, Suffix = "Speed", CurrentValue = settings.flySpeed, Callback = function(value) settings.flySpeed = value if settings.flyEnabled then Rayfield:Notify("Fly Speed", "Velocidade ajustada para " .. value, 2) end end, }) playerTab:CreateSection("Visual") playerTab:CreateToggle({ Name = "Invisibility", CurrentValue = false, Callback = function(value) setInvisible(value) end, }) -- ===== Hitbox Tab ===== hitboxTab:CreateSection("Hitbox Expander") hitboxTab:CreateToggle({ Name = "Enable Hitbox Expander", CurrentValue = false, Callback = function(value) toggleHitbox(value) end, }) hitboxTab:CreateSlider({ Name = "Hitbox Size", Range = {0.5, 3}, Increment = 0.1, Suffix = "x", CurrentValue = settings.hitboxSize, Callback = function(value) setHitboxSize(value) end, }) hitboxTab:CreateSlider({ Name = "Hitbox Transparency", Range = {0, 1}, Increment = 0.05, Suffix = "Alpha", CurrentValue = settings.hitboxTransparency, Callback = function(value) setHitboxTransparency(value) end, }) -- ===== Configurações Tab ===== configTab:CreateSection("Save / Load") configTab:CreateButton({ Name = "Save Settings", Callback = function() saveSettings() end, }) configTab:CreateButton({ Name = "Load Settings", Callback = function() loadSettings() end, }) configTab:CreateButton({ Name = "Reset Settings", Callback = function() resetSettings() end, }) configTab:CreateButton({ Name = "Test Notification", Callback = function() Rayfield:Notify("Notification", "Teste de notificação!", 3) end, }) -- ===== Inicialização ===== setWalkSpeed(settings.walkSpeed) setJumpPower(settings.jumpPower) -- Reaplicar configurações ao renascer player.CharacterAdded:Connect(function(newChar) character = newChar humanoid = character:WaitForChild("Humanoid") rootPart = character:WaitForChild("HumanoidRootPart") setWalkSpeed(settings.walkSpeed) setJumpPower(settings.jumpPower) if settings.flyEnabled then toggleFly(true) end if settings.hitboxEnabled then toggleHitbox(true) end if settings.invisible then setInvisible(true) end end) -- Notificação inicial Rayfield:Notify("nitary menu", "Carregado com sucesso! Use Espaço para subir e Shift para descer no Fly.", 5)