
KeylessUniversal

-- Meteor Boost – Zero-Gravity Click-to-Fly Script
if script:GetAttribute("Running") then return end
script:SetAttribute("Running", true)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local TweenService = game:GetService("TweenService")
local LocalizationService = game:GetService("LocalizationService")
local LocalPlayer = Players.LocalPlayer
local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")
local HRP = Character:WaitForChild("HumanoidRootPart")
local userLocale = string.lower(LocalizationService.RobloxLocaleId)
local isRussian = string.find(userLocale, "ru") ~= nil
local L = {
title = isRussian and "Метеорит" or "Meteor Boost",
force = isRussian and "Сила" or "Force",
clickMode = isRussian and "Клик-режим" or "Click Mode",
on = isRussian and "ВКЛ" or "ON",
off = isRussian and "ВЫКЛ" or "OFF",
start = isRussian and "СТАРТ" or "START",
}
local boostForce = 50
local clickModeEnabled = true
local isBoostActive = true
local needStart = false
local activeBlockTarget = nil
local activeAirDirection = nil
local residualSpin = Vector3.zero
local isInResidualSpin = false
local bodyVelocity
local bodyAngular
local safeDistance = 6
local savedProperties = {}
local function saveCurrentProperties()
table.clear(savedProperties)
if Character then
for _, part in ipairs(Character:GetDescendants()) do
if part:IsA("BasePart") then
savedProperties[part] = {
canCollide = part.CanCollide,
massless = part.Massless
}
end
end
end
end
local function restoreProperties()
if Character then
for _, part in ipairs(Character:GetDescendants()) do
if part:IsA("BasePart") and savedProperties[part] and part.Parent then
local orig = savedProperties[part]
part.CanCollide = orig.canCollide
part.Massless = orig.massless
end
end
end
table.clear(savedProperties)
end
local function removePhysics()
if bodyVelocity then
bodyVelocity:Destroy()
bodyVelocity = nil
end
if bodyAngular then
bodyAngular:Destroy()
bodyAngular = nil
end
if Humanoid and Humanoid.Parent then
Humanoid.PlatformStand = false
Humanoid.AutoRotate = true
end
restoreProperties()
activeBlockTarget = nil
activeAirDirection = nil
residualSpin = Vector3.zero
isInResidualSpin = false
end
local function setupPhysics()
removePhysics()
Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
Humanoid = Character:WaitForChild("Humanoid")
HRP = Character:WaitForChild("HumanoidRootPart")
saveCurrentProperties()
for _, part in ipairs(Character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
part.Massless = true
end
end
Humanoid.PlatformStand = true
Humanoid.AutoRotate = false
bodyVelocity = Instance.new("BodyVelocity")
bodyVelocity.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
bodyVelocity.Velocity = Vector3.zero
bodyVelocity.Parent = HRP
bodyAngular = Instance.new("BodyAngularVelocity")
bodyAngular.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
bodyAngular.AngularVelocity = Vector3.zero
bodyAngular.Parent = HRP
end
setupPhysics()
local function boostToward(targetPos, isBlock)
if not bodyVelocity or not bodyAngular then return end
if not HRP or not HRP.Parent then return end
local direction = (targetPos - HRP.Position).Unit
if direction.Magnitude < 0.01 then direction = Vector3.new(0, 1, 0) end
local speed = boostForce * 2
bodyVelocity.Velocity = direction * speed
local angularStrength = boostForce / 30
local randAngular = Vector3.new(
math.random(-100, 100) / 100,
math.random(-100, 100) / 100,
math.random(-100, 100) / 100
).Unit * angularStrength
bodyAngular.AngularVelocity = randAngular
residualSpin = randAngular * 0.3
if isBlock then
activeBlockTarget = targetPos
activeAirDirection = nil
isInResidualSpin = false
else
activeAirDirection = true
activeBlockTarget = nil
isInResidualSpin = false
end
end
local function stopAllBoost()
activeBlockTarget = nil
activeAirDirection = nil
if bodyVelocity then
bodyVelocity.Velocity = Vector3.zero
end
end
local function handleClick(hitPos, target, normal)
if not isBoostActive then return end
if not HRP or not HRP.Parent then return end
if isDragging then return end
if activeBlockTarget then
if (HRP.Position - activeBlockTarget).Magnitude < safeDistance then
return
end
end
local isBlock = false
local safeTargetPos = hitPos
if target and target:IsA("BasePart") and not target:IsDescendantOf(Character) then
local surfNormal = normal or (HRP.Position - hitPos).Unit
if surfNormal.Magnitude == 0 then surfNormal = Vector3.new(0,1,0) end
safeTargetPos = hitPos + surfNormal * safeDistance
isBlock = true
end
boostToward(safeTargetPos, isBlock)
end
local mouse = LocalPlayer:GetMouse()
mouse.Button1Down:Connect(function()
if UserInputService.TouchEnabled then return end
if UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then return end
local target = mouse.Target
local hitPos = mouse.Hit.Position
local normal = target and target:IsA("BasePart") and Vector3.FromNormalId(mouse.TargetSurface)
handleClick(hitPos, target, normal)
end)
local touchStartPos = nil
local touchMoved = false
local touchStartTime = 0
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.Touch then
touchStartPos = input.Position
touchMoved = false
touchStartTime = tick()
end
end)
UserInputService.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch and touchStartPos then
local delta = (input.Position - touchStartPos).Magnitude
if delta > 15 then
touchMoved = true
end
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
if not touchMoved and (tick() - touchStartTime) < 0.4 then
local mousePos = UserInputService:GetMouseLocation()
local ray = workspace.CurrentCamera:ScreenPointToRay(mousePos.X, mousePos.Y)
local raycastParams = RaycastParams.new()
raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
raycastParams.FilterDescendantsInstances = {Character}
local rayResult = workspace:Raycast(ray.Origin, ray.Direction * 1000, raycastParams)
local hitPos = rayResult and rayResult.Position or (ray.Origin + ray.Direction * 1000)
local target = rayResult and rayResult.Instance
local normal = rayResult and rayResult.Normal
handleClick(hitPos, target, normal)
end
touchStartPos = nil
touchMoved = false
end
end)
RunService.Heartbeat:Connect(function(dt)
if not HRP or not HRP.Parent then return end
if not bodyVelocity or not bodyAngular then return end
if activeBlockTarget then
local dir = (activeBlockTarget - HRP.Position)
local distance = dir.Magnitude
if distance < 0.01 then
stopAllBoost()
isInResidualSpin = true
bodyAngular.AngularVelocity = residualSpin
return
end
local direction = dir.Unit
local maxSpeed = boostForce * 2
local speed = maxSpeed
if distance < safeDistance + 10 then
local t = math.clamp((distance - safeDistance) / 10, 0, 1)
speed = maxSpeed * t
end
bodyVelocity.Velocity = direction * speed
bodyAngular.AngularVelocity = bodyAngular.AngularVelocity * 0.97
if speed < 0.5 and bodyAngular.AngularVelocity.Magnitude < 0.5 then
stopAllBoost()
isInResidualSpin = true
bodyAngular.AngularVelocity = residualSpin
end
elseif activeAirDirection then
bodyVelocity.Velocity = bodyVelocity.Velocity * 0.98
bodyAngular.AngularVelocity = bodyAngular.AngularVelocity * 0.97
if bodyVelocity.Velocity.Magnitude < 0.5 and bodyAngular.AngularVelocity.Magnitude < 0.5 then
stopAllBoost()
bodyAngular.AngularVelocity = Vector3.zero
end
elseif isInResidualSpin then
bodyAngular.AngularVelocity = bodyAngular.AngularVelocity * 0.995
bodyVelocity.Velocity = Vector3.zero
if bodyAngular.AngularVelocity.Magnitude < 0.05 then
bodyAngular.AngularVelocity = Vector3.zero
isInResidualSpin = false
end
else
bodyVelocity.Velocity = Vector3.zero
bodyAngular.AngularVelocity = Vector3.zero
end
end)
if CoreGui:FindFirstChild("MeteorBoostUI") then CoreGui.MeteorBoostUI:Destroy() end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "MeteorBoostUI"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true
screenGui.Parent = CoreGui
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 240, 0, 140)
mainFrame.Position = UDim2.new(0.5, -120, 0, 50)
mainFrame.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
mainFrame.BorderSizePixel = 0
mainFrame.ZIndex = 100
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui
local function addBorder(parent)
local t = 1
local l = Instance.new("Frame"); l.Size = UDim2.new(0, t, 1, 0); l.BackgroundColor3 = Color3.fromRGB(50,50,50); l.BorderSizePixel=0; l.ZIndex=200; l.Parent=parent
local tp = Instance.new("Frame"); tp.Size = UDim2.new(1,0,0,t); tp.BackgroundColor3 = Color3.fromRGB(50,50,50); tp.BorderSizePixel=0; tp.ZIndex=200; tp.Parent=parent
local r = Instance.new("Frame"); r.Size = UDim2.new(0, t, 1, 0); r.Position=UDim2.new(1,-t,0,0); r.BackgroundColor3 = Color3.fromRGB(50,50,50); r.BorderSizePixel=0; r.ZIndex=200; r.Parent=parent
local b = Instance.new("Frame"); b.Size = UDim2.new(1,0,0,t); b.Position=UDim2.new(0,0,1,-t); b.BackgroundColor3 = Color3.fromRGB(50,50,50); b.BorderSizePixel=0; b.ZIndex=200; b.Parent=parent
end
addBorder(mainFrame)
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, -2, 0, 22)
titleBar.Position = UDim2.new(0, 1, 0, 1)
titleBar.BackgroundColor3 = Color3.fromRGB(12,12,12)
titleBar.BorderSizePixel = 0
titleBar.ZIndex = 101
titleBar.Parent = mainFrame
local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -30, 1, 0)
titleLabel.Position = UDim2.new(0, 8, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = L.title
titleLabel.TextColor3 = Color3.fromRGB(200,200,200)
titleLabel.Font = Enum.Font.Code
titleLabel.TextSize = 12
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.ZIndex = 102
titleLabel.Parent = titleBar
local collapseButton = Instance.new("TextButton")
collapseButton.Size = UDim2.new(0, 22, 0, 22)
collapseButton.Position = UDim2.new(1, -22, 0, 0)
collapseButton.BackgroundColor3 = Color3.fromRGB(25,25,25)
collapseButton.BorderSizePixel = 0
collapseButton.Text = "-"
collapseButton.TextColor3 = Color3.fromRGB(200,200,200)
collapseButton.Font = Enum.Font.Code
collapseButton.TextSize = 14
collapseButton.ZIndex = 102
collapseButton.Parent = titleBar
addBorder(collapseButton)
local titleDivider = Instance.new("Frame")
titleDivider.Size = UDim2.new(1, -2, 0, 1)
titleDivider.Position = UDim2.new(0, 1, 0, 23)
titleDivider.BackgroundColor3 = Color3.fromRGB(50,50,50)
titleDivider.BorderSizePixel = 0
titleDivider.ZIndex = 200
titleDivider.Parent = mainFrame
local contentFrame = Instance.new("Frame")
contentFrame.Size = UDim2.new(1, -2, 1, -25)
contentFrame.Position = UDim2.new(0, 1, 0, 24)
contentFrame.BackgroundTransparency = 1
contentFrame.ZIndex = 101
contentFrame.Visible = true
contentFrame.Parent = mainFrame
local isDragging = false
local dragStartPos = nil
local frameStartPos = nil
local function startDrag(input)
isDragging = true
dragStartPos = input.Position
frameStartPos = mainFrame.Position
end
local function stopDrag()
isDragging = false
end
titleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
startDrag(input)
end
end)
titleBar.InputEnded:Connect(stopDrag)
titleLabel.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
startDrag(input)
end
end)
titleLabel.InputEnded:Connect(stopDrag)
UserInputService.InputChanged:Connect(function(input)
if isDragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStartPos
mainFrame.Position = UDim2.new(frameStartPos.X.Scale, frameStartPos.X.Offset + delta.X, frameStartPos.Y.Scale, frameStartPos.Y.Offset + delta.Y)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then stopDrag() end
end)
local menuCollapsed = false
collapseButton.MouseButton1Click:Connect(function()
menuCollapsed = not menuCollapsed
if menuCollapsed then
mainFrame:TweenSize(UDim2.new(0, 240, 0, 24), "Out", "Quad", 0.2, true)
collapseButton.Text = "+"
contentFrame.Visible = false
else
mainFrame:TweenSize(UDim2.new(0, 240, 0, 140), "Out", "Quad", 0.2, true)
collapseButton.Text = "-"
contentFrame.Visible = true
end
end)
local function createButton(text, yPos, callback)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0, 210, 0, 22)
btn.Position = UDim2.new(0.5, -105, 0, yPos)
btn.BackgroundColor3 = Color3.fromRGB(30,30,30)
btn.Text = text
btn.TextColor3 = Color3.fromRGB(200,200,200)
btn.Font = Enum.Font.Code
btn.TextSize = 11
btn.BorderSizePixel = 0
btn.ZIndex = 150
btn.Parent = contentFrame
addBorder(btn)
btn.Activated:Connect(callback)
return btn
end
local function createToggle(text, yPos, default, callback)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0, 210, 0, 22)
btn.Position = UDim2.new(0.5, -105, 0, yPos)
btn.BackgroundColor3 = default and Color3.fromRGB(25,45,25) or Color3.fromRGB(30,30,30)
btn.Text = text .. ": " .. (default and L.on or L.off)
btn.TextColor3 = Color3.fromRGB(200,200,200)
btn.Font = Enum.Font.Code
btn.TextSize = 11
btn.BorderSizePixel = 0
btn.ZIndex = 150
btn.Parent = contentFrame
addBorder(btn)
local state = default
local debounce = false
btn.Activated:Connect(function()
if debounce then return end
debounce = true
state = not state
btn.Text = text .. ": " .. (state and L.on or L.off)
btn.BackgroundColor3 = state and Color3.fromRGB(25,45,25) or Color3.fromRGB(30,30,30)
callback(state)
task.delay(0.3, function() debounce = false end)
end)
return btn
end
local forceLabel = Instance.new("TextLabel")
forceLabel.Size = UDim2.new(0, 210, 0, 18)
forceLabel.Position = UDim2.new(0.5, -105, 0, 5)
forceLabel.BackgroundTransparency = 1
forceLabel.Text = L.force .. ": 50"
forceLabel.TextColor3 = Color3.fromRGB(200,200,200)
forceLabel.Font = Enum.Font.Code
forceLabel.TextSize = 11
forceLabel.ZIndex = 150
forceLabel.Parent = contentFrame
local forceInput = Instance.new("TextBox")
forceInput.Size = UDim2.new(0, 100, 0, 20)
forceInput.Position = UDim2.new(0.5, -50, 0, 24)
forceInput.BackgroundColor3 = Color3.fromRGB(30,30,30)
forceInput.TextColor3 = Color3.fromRGB(200,200,200)
forceInput.PlaceholderText = "1 / 500"
forceInput.PlaceholderColor3 = Color3.fromRGB(100,100,100)
forceInput.Text = ""
forceInput.Font = Enum.Font.Code
forceInput.TextSize = 11
forceInput.BorderSizePixel = 0
forceInput.ZIndex = 150
forceInput.Parent = contentFrame
addBorder(forceInput)
forceInput.FocusLost:Connect(function()
local num = tonumber(forceInput.Text)
if num and num >= 1 and num <= 500 then
boostForce = num
forceLabel.Text = L.force .. ": " .. num
forceInput.Text = ""
else
forceInput.Text = ""
end
end)
createToggle(L.clickMode, 52, true, function(state)
clickModeEnabled = state
if not needStart then
isBoostActive = state
end
end)
local startBtn = Instance.new("TextButton")
startBtn.Size = UDim2.new(0, 210, 0, 30)
startBtn.Position = UDim2.new(0.5, -105, 0, 80)
startBtn.BackgroundColor3 = Color3.fromRGB(46, 204, 113)
startBtn.Text = L.start
startBtn.TextColor3 = Color3.fromRGB(255,255,255)
startBtn.Font = Enum.Font.Code
startBtn.TextSize = 14
startBtn.BorderSizePixel = 0
startBtn.ZIndex = 160
startBtn.Visible = false
startBtn.Parent = contentFrame
addBorder(startBtn)
startBtn.MouseButton1Click:Connect(function()
Character = LocalPlayer.Character
if Character then
Humanoid = Character:WaitForChild("Humanoid")
HRP = Character:WaitForChild("HumanoidRootPart")
setupPhysics()
end
local tweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local goals = { BackgroundTransparency = 1, TextTransparency = 1, Size = UDim2.new(0, 0, 0, 0) }
local tween = TweenService:Create(startBtn, tweenInfo, goals)
tween:Play()
tween.Completed:Connect(function()
startBtn.Visible = false
startBtn.BackgroundTransparency = 0
startBtn.TextTransparency = 0
startBtn.Size = UDim2.new(0, 210, 0, 30)
end)
needStart = false
isBoostActive = clickModeEnabled
end)
Humanoid.Died:Connect(function()
needStart = true
isBoostActive = false
removePhysics()
if startBtn then
startBtn.Visible = true
end
end)
LocalPlayer.CharacterAdded:Connect(function(newChar)
Character = newChar
Humanoid = newChar:WaitForChild("Humanoid")
HRP = newChar:WaitForChild("HumanoidRootPart")
removePhysics()
isInResidualSpin = false
needStart = true
isBoostActive = false
if startBtn then
startBtn.Visible = true
end
Humanoid.Died:Connect(function()
needStart = true
isBoostActive = false
removePhysics()
if startBtn then
startBtn.Visible = true
end
end)
end)
script.Destroying:Connect(function()
script:SetAttribute("Running", false)
if screenGui then screenGui:Destroy() end
removePhysics()
end)No comments yet for this script.



