
Keyless

-- Sistema de volar para Evolve 3D (mantener posición al quedarse quieto)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
-- Variables
local speed = 50
local enabled = false
local keysDown = {}
local lastPos = nil -- última posición guardada
-- Actualizar referencias al respawn
local function setupCharacter(char)
character = char
humanoidRootPart = character:WaitForChild("HumanoidRootPart")
lastPos = humanoidRootPart.Position
end
player.CharacterAdded:Connect(setupCharacter)
-- Crear GUI
local ScreenGui = Instance.new("ScreenGui", game:GetService("CoreGui"))
ScreenGui.Name = "SistemaDeVolarEvolve3D"
local Frame = Instance.new("Frame", ScreenGui)
Frame.Size = UDim2.new(0.25, 0, 0.25, 0)
Frame.Position = UDim2.new(0.05, 0, 0.05, 0)
Frame.BackgroundColor3 = Color3.fromRGB(30,30,30)
local Title = Instance.new("TextLabel", Frame)
Title.Size = UDim2.new(1,0,0.2,0)
Title.Text = "Sistema de volar para Evolve 3D"
Title.TextColor3 = Color3.new(1,1,1)
Title.BackgroundTransparency = 1
Title.Font = Enum.Font.SourceSansBold
Title.TextScaled = true
local ToggleButton = Instance.new("TextButton", Frame)
ToggleButton.Size = UDim2.new(0.4,0,0.25,0)
ToggleButton.Position = UDim2.new(0.05,0,0.3,0)
ToggleButton.Text = "OFF"
ToggleButton.BackgroundColor3 = Color3.fromRGB(200,50,50)
ToggleButton.TextScaled = true
local SpeedBox = Instance.new("TextBox", Frame)
SpeedBox.Size = UDim2.new(0.4,0,0.25,0)
SpeedBox.Position = UDim2.new(0.55,0,0.3,0)
SpeedBox.Text = tostring(speed)
SpeedBox.PlaceholderText = "Velocidad"
SpeedBox.BackgroundColor3 = Color3.fromRGB(50,50,50)
SpeedBox.TextColor3 = Color3.new(1,1,1)
SpeedBox.TextScaled = true
local Status = Instance.new("TextLabel", Frame)
Status.Size = UDim2.new(1,0,0.2,0)
Status.Position = UDim2.new(0,0,0.7,0)
Status.Text = "Desactivado"
Status.TextColor3 = Color3.new(1,1,1)
Status.BackgroundTransparency = 1
Status.TextScaled = true
-- Hacer la GUI arrastrable
local dragToggle, dragStart, startPos
local dragSpeed = 0.1
local function updateInput(input)
local delta = input.Position - dragStart
local pos = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y)
TweenService:Create(Frame, TweenInfo.new(dragSpeed), {Position = pos}):Play()
end
Frame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragToggle = true
dragStart = input.Position
startPos = Frame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragToggle = false
end
end)
end
end)
UserInputService.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
if dragToggle then
updateInput(input)
end
end
end)
-- Eventos GUI
ToggleButton.MouseButton1Click:Connect(function()
enabled = not enabled
if enabled then
ToggleButton.Text = "ON"
ToggleButton.BackgroundColor3 = Color3.fromRGB(50,200,50)
Status.Text = "Activado"
lastPos = humanoidRootPart.Position
else
ToggleButton.Text = "OFF"
ToggleButton.BackgroundColor3 = Color3.fromRGB(200,50,50)
Status.Text = "Desactivado"
keysDown = {}
end
end)
SpeedBox.FocusLost:Connect(function()
local val = tonumber(SpeedBox.Text)
if val then
speed = val
end
end)
-- Control de teclas
UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if not enabled then return end
keysDown[input.KeyCode] = true
end)
UserInputService.InputEnded:Connect(function(input, gp)
if gp then return end
if not enabled then return end
keysDown[input.KeyCode] = nil
end)
-- Movimiento continuo ajustado a la cámara
RunService.Heartbeat:Connect(function(dt)
if enabled and humanoidRootPart and character then
local cam = workspace.CurrentCamera
local forward = cam.CFrame.LookVector
local right = cam.CFrame.RightVector
local dir = Vector3.new(0,0,0)
if keysDown[Enum.KeyCode.W] then
dir = dir + Vector3.new(forward.X, 0, forward.Z)
end
if keysDown[Enum.KeyCode.S] then
dir = dir - Vector3.new(forward.X, 0, forward.Z)
end
if keysDown[Enum.KeyCode.A] then
dir = dir - Vector3.new(right.X, 0, right.Z)
end
if keysDown[Enum.KeyCode.D] then
dir = dir + Vector3.new(right.X, 0, right.Z)
end
if keysDown[Enum.KeyCode.Space] then
dir = dir + Vector3.new(0,1,0) -- subir
end
if keysDown[Enum.KeyCode.LeftShift] then
dir = dir + Vector3.new(0,-1,0) -- bajar
end
if dir.Magnitude > 0 then
dir = dir.Unit
local step = dir * speed * dt
lastPos = humanoidRootPart.Position + step
character:PivotTo(CFrame.new(lastPos, lastPos + cam.CFrame.LookVector))
else
-- Mantener posición fija cuando no hay movimiento
if lastPos then
character:PivotTo(CFrame.new(lastPos, lastPos + cam.CFrame.LookVector))
end
end
end
end)
why paid
total mente gratis
perdon
:)