
Key RequiredUniversal

local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local plr = Players.LocalPlayer
local char = plr.Character or plr.CharacterAdded:Wait()
local hum = char:WaitForChild("Humanoid")
local hrp = char:WaitForChild("HumanoidRootPart")
local cam = workspace.CurrentCamera
local mouse = plr:GetMouse()
-- [[ CAMBIAR ANIMACIONES IDLE Y RUN ]] --
local function changeDefaultAnims()
local animate = char:WaitForChild("Animate")
animate.idle.Animation1.AnimationId = "rbxassetid://112724398873969"
animate.idle.Animation2.AnimationId = "rbxassetid://112724398873969"
animate.run.RunAnim.AnimationId = "rbxassetid://90175656540190"
animate.Disabled = true
task.wait()
animate.Disabled = false
end
-- [[ QUITAR BOTÓN DE SALTO ]] --
local function disableJump()
hum:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
local touchJump = plr.PlayerScripts:WaitForChild("PlayerModule"):WaitForChild("ControlModule"):FindFirstChild("TouchJumpController")
if touchJump then touchJump:Destroy() end
end
-- [[ CREAR ANIMACIONES ]] --
local punchAnim = Instance.new("Animation")
punchAnim.AnimationId = "rbxassetid://110361063508944"
local punchTrack = hum:LoadAnimation(punchAnim)
punchTrack.Looped = false
local voidAnim = Instance.new("Animation")
voidAnim.AnimationId = "rbxassetid://119380285634530"
local voidTrack = hum:LoadAnimation(voidAnim)
voidTrack.Looped = true
local novaAnim = Instance.new("Animation")
novaAnim.AnimationId = "rbxassetid://110979677723900"
local novaTrack = hum:LoadAnimation(novaAnim)
novaTrack.Looped = false
local observantAnim = Instance.new("Animation")
observantAnim.AnimationId = "rbxassetid://134878524179035"
local observantTrack = hum:LoadAnimation(observantAnim)
observantTrack.Looped = true
-- [[ GUI PRINCIPAL ]] --
local gui = Instance.new("ScreenGui", plr:WaitForChild("PlayerGui"))
gui.Name = "NoliGUI"
gui.ResetOnSpawn = false
local function createCircleButton(name, pos, color, textColor)
local btn = Instance.new("TextButton")
btn.Name = name
btn.Parent = gui
btn.Size = UDim2.new(0, 70, 0, 70)
btn.Position = pos
btn.BackgroundColor3 = color
btn.Text = name
btn.TextColor3 = textColor or Color3.new(1,1,1)
btn.TextScaled = true
btn.Font = Enum.Font.GothamBlack
btn.BorderSizePixel = 0
local corner = Instance.new("UICorner", btn)
corner.CornerRadius = UDim.new(1, 0)
local stroke = Instance.new("UIStroke", btn)
stroke.Color = Color3.fromRGB(220, 180, 255)
stroke.Thickness = 2
stroke.Transparency = 0.2
return btn
end
local punchBtn = createCircleButton("PUNCH", UDim2.new(1, -90, 0.5, -120), Color3.fromRGB(130, 0, 200))
local voidBtn = createCircleButton("VOID", UDim2.new(1, -90, 0.5, -30), Color3.fromRGB(90, 0, 150))
local novaBtn = createCircleButton("NOVA", UDim2.new(1, -90, 0.5, 60), Color3.fromRGB(160, 50, 255))
local observantBtn = createCircleButton("OBSERVANT", UDim2.new(1, -180, 0.5, -30), Color3.fromRGB(140, 0, 210))
local runBtn = createCircleButton("RUN", UDim2.new(1, -180, 0.5, 60), Color3.fromRGB(255, 255, 255), Color3.new(0,0,0))
-- [[ VARIABLES ]] --
local voidDebounce = false
local punchDebounce = false
local novaDebounce = false
local observantDebounce = false
local isRunning = false
local isVoidRushing = false
local isObserving = false
local waitingForClickTP = false
local oldSpeedBeforeObservant = 16
-- [[ FUNCION NUEVA: AURA MORADA ]] --
local function createTeleportAura()
local aura = Instance.new("Highlight")
aura.Name = "NoliTPAura"
aura.Parent = char
aura.FillColor = Color3.fromRGB(170, 0, 255)
aura.OutlineColor = Color3.fromRGB(220, 180, 255)
aura.FillTransparency = 0.4
aura.OutlineTransparency = 0
-- Efecto de pulso
local pulseTween = TweenService:Create(aura, TweenInfo.new(0.5, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true), {
FillTransparency = 0.1,
OutlineTransparency = 0.5
})
pulseTween:Play()
return aura, pulseTween
end
-- [[ OBSERVANT MENU PRINCIPAL ]] --
local observantMenu = Instance.new("Frame")
observantMenu.Name = "ObservantMenu"
observantMenu.Parent = gui
observantMenu.Size = UDim2.new(0, 400, 0, 300)
observantMenu.Position = UDim2.new(0.5, -200, 0.5, -150)
observantMenu.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
observantMenu.BorderSizePixel = 0
observantMenu.Visible = false
local menuCorner = Instance.new("UICorner", observantMenu)
menuCorner.CornerRadius = UDim.new(0, 12)
local menuStroke = Instance.new("UIStroke", observantMenu)
menuStroke.Color = Color3.fromRGB(170, 0, 255)
menuStroke.Thickness = 3
local titleLabel = Instance.new("TextLabel")
titleLabel.Parent = observantMenu
titleLabel.Size = UDim2.new(1, 0, 0, 60)
titleLabel.Position = UDim2.new(0, 0, 0, 10)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "What action will you take, Noli?"
titleLabel.TextColor3 = Color3.fromRGB(220, 180, 255)
titleLabel.TextScaled = true
titleLabel.Font = Enum.Font.GothamBold
local clickTPBtn = Instance.new("TextButton")
clickTPBtn.Parent = observantMenu
clickTPBtn.Size = UDim2.new(0.8, 0, 0, 50)
clickTPBtn.Position = UDim2.new(0.1, 0, 0, 80)
clickTPBtn.BackgroundColor3 = Color3.fromRGB(130, 0, 200)
clickTPBtn.Text = "Teleport with a click"
clickTPBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
clickTPBtn.TextScaled = true
clickTPBtn.Font = Enum.Font.GothamBlack
Instance.new("UICorner", clickTPBtn).CornerRadius = UDim.new(0, 8)
local spawnTPBtn = Instance.new("TextButton")
spawnTPBtn.Parent = observantMenu
spawnTPBtn.Size = UDim2.new(0.8, 0, 0, 50)
spawnTPBtn.Position = UDim2.new(0.1, 0, 0, 140)
spawnTPBtn.BackgroundColor3 = Color3.fromRGB(90, 0, 150)
spawnTPBtn.Text = "Teleport to the nearest Spawn"
spawnTPBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
spawnTPBtn.TextScaled = true
spawnTPBtn.Font = Enum.Font.GothamBlack
Instance.new("UICorner", spawnTPBtn).CornerRadius = UDim.new(0, 8)
local playerTPBtn = Instance.new("TextButton")
playerTPBtn.Parent = observantMenu
playerTPBtn.Size = UDim2.new(0.8, 0, 0, 50)
playerTPBtn.Position = UDim2.new(0.1, 0, 0, 200)
playerTPBtn.BackgroundColor3 = Color3.fromRGB(180, 0, 220)
playerTPBtn.Text = "TP to Player"
playerTPBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
playerTPBtn.TextScaled = true
playerTPBtn.Font = Enum.Font.GothamBlack
Instance.new("UICorner", playerTPBtn).CornerRadius = UDim.new(0, 8)
local closeBtn = Instance.new("TextButton")
closeBtn.Parent = observantMenu
closeBtn.Size = UDim2.new(0, 30, 0, 30)
closeBtn.Position = UDim2.new(1, -40, 0, 10)
closeBtn.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
closeBtn.Text = "X"
closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
closeBtn.TextScaled = true
closeBtn.Font = Enum.Font.GothamBold
Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(1, 0)
-- [[ PLAYER LIST MENU ]] --
local playerListMenu = Instance.new("Frame")
playerListMenu.Name = "PlayerListMenu"
playerListMenu.Parent = gui
playerListMenu.Size = UDim2.new(0, 400, 0, 350)
playerListMenu.Position = UDim2.new(0.5, -200, 0.5, -175)
playerListMenu.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
playerListMenu.BorderSizePixel = 0
playerListMenu.Visible = false
local playerMenuCorner = Instance.new("UICorner", playerListMenu)
playerMenuCorner.CornerRadius = UDim.new(0, 12)
local playerMenuStroke = Instance.new("UIStroke", playerListMenu)
playerMenuStroke.Color = Color3.fromRGB(170, 0, 255)
playerMenuStroke.Thickness = 3
local playerListTitle = Instance.new("TextLabel")
playerListTitle.Parent = playerListMenu
playerListTitle.Size = UDim2.new(1, 0, 0, 50)
playerListTitle.Position = UDim2.new(0, 0, 0, 10)
playerListTitle.BackgroundTransparency = 1
playerListTitle.Text = "Select a Player"
playerListTitle.TextColor3 = Color3.fromRGB(220, 180, 255)
playerListTitle.TextScaled = true
playerListTitle.Font = Enum.Font.GothamBold
local playerCloseBtn = Instance.new("TextButton")
playerCloseBtn.Parent = playerListMenu
playerCloseBtn.Size = UDim2.new(0, 30, 0, 30)
playerCloseBtn.Position = UDim2.new(1, -40, 0, 10)
playerCloseBtn.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
playerCloseBtn.Text = "X"
playerCloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
playerCloseBtn.TextScaled = true
playerCloseBtn.Font = Enum.Font.GothamBold
Instance.new("UICorner", playerCloseBtn).CornerRadius = UDim.new(1, 0)
local playerScrollFrame = Instance.new("ScrollingFrame")
playerScrollFrame.Parent = playerListMenu
playerScrollFrame.Size = UDim2.new(1, -20, 1, -70)
playerScrollFrame.Position = UDim2.new(0, 10, 0, 60)
playerScrollFrame.BackgroundTransparency = 1
playerScrollFrame.BorderSizePixel = 0
playerScrollFrame.ScrollBarThickness = 8
playerScrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
local playerListLayout = Instance.new("UIListLayout")
playerListLayout.Parent = playerScrollFrame
playerListLayout.SortOrder = Enum.SortOrder.LayoutOrder
playerListLayout.Padding = UDim.new(0, 5)
-- [[ FUNCIONES DE BOTONES ]] --
runBtn.MouseButton1Click:Connect(function()
if isVoidRushing or isObserving then return end
isRunning = not isRunning
if isRunning then
hum.WalkSpeed = 30
runBtn.BackgroundColor3 = Color3.fromRGB(200, 200, 200)
else
hum.WalkSpeed = 16
runBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
end
end)
punchBtn.MouseButton1Click:Connect(function()
if punchDebounce or isVoidRushing then return end
punchDebounce = true
punchTrack:Play()
punchTrack.Stopped:Wait()
punchDebounce = false
end)
local function endVoidRush(bv, connection)
if connection then connection:Disconnect() end
if bv then bv:Destroy() end
voidTrack:Stop()
isVoidRushing = false
hum.WalkSpeed = isRunning and 30 or 16
hum.AutoRotate = true
changeDefaultAnims()
voidDebounce = false
end
voidBtn.MouseButton1Click:Connect(function()
if voidDebounce or isObserving then return end
voidDebounce = true
isVoidRushing = true
voidTrack:Play()
local oldAutoRotate = hum.AutoRotate
hum.WalkSpeed = 50
hum.AutoRotate = false
local bv = Instance.new("BodyVelocity")
bv.MaxForce = Vector3.new(100000, 0, 100000)
bv.Parent = hrp
local hitConnection
local heartbeatConnection
local startTime = tick()
hitConnection = hrp.Touched:Connect(function(hit)
if not isVoidRushing then return end
local hitHum = hit.Parent:FindFirstChild("Humanoid")
if hitHum and hitHum ~= hum then
hitConnection:Disconnect()
endVoidRush(bv, heartbeatConnection)
task.wait(0.1)
punchTrack:Play()
punchTrack.Stopped:Wait()
end
end)
heartbeatConnection = RunService.Heartbeat:Connect(function()
if not isVoidRushing then return end
if tick() - startTime >= 5 then
hitConnection:Disconnect()
endVoidRush(bv, heartbeatConnection)
return
end
if bv and bv.Parent then
local camDir = cam.CFrame.LookVector
bv.Velocity = Vector3.new(camDir.X, 0, camDir.Z).Unit * 50
hrp.CFrame = CFrame.lookAt(hrp.Position, hrp.Position + Vector3.new(camDir.X, 0, camDir.Z))
end
end)
end)
novaBtn.MouseButton1Click:Connect(function()
if novaDebounce or isVoidRushing or isObserving then return end
novaDebounce = true
local oldSpeed = hum.WalkSpeed
hum.WalkSpeed = 5
novaTrack:Play()
novaTrack:AdjustSpeed(6)
novaTrack.Stopped:Wait()
hum.WalkSpeed = isRunning and 30 or oldSpeed
novaDebounce = false
end)
-- [[ OBSERVANT REWORK ]] --
local function closeAllMenus()
observantMenu.Visible = false
playerListMenu.Visible = false
isObserving = false
waitingForClickTP = false
observantTrack:Stop()
observantBtn.BackgroundColor3 = Color3.fromRGB(140, 0, 210)
observantBtn.Text = "OBSERVANT"
hum.WalkSpeed = isRunning and 30 or oldSpeedBeforeObservant
end
local function getNearestSpawn()
local closestSpawn = nil
local shortestDistance = math.huge
for _, spawn in pairs(workspace:GetDescendants()) do
if spawn:IsA("SpawnLocation") then
local distance = (hrp.Position - spawn.Position).Magnitude
if distance < shortestDistance then
shortestDistance = distance
closestSpawn = spawn
end
end
end
return closestSpawn
end
observantBtn.MouseButton1Click:Connect(function()
if observantDebounce or isVoidRushing or waitingForClickTP then return end
observantDebounce = true
if observantMenu.Visible or playerListMenu.Visible then
closeAllMenus()
else
isObserving = true
oldSpeedBeforeObservant = hum.WalkSpeed
hum.WalkSpeed = 5
observantTrack:Play()
observantBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 255)
observantMenu.Visible = true
end
task.wait(0.5)
observantDebounce = false
end)
clickTPBtn.MouseButton1Click:Connect(function()
observantMenu.Visible = false
waitingForClickTP = true
observantBtn.Text = "CLICK TO TP"
observantBtn.BackgroundColor3 = Color3.fromRGB(255, 200, 0)
end)
mouse.Button1Down:Connect(function()
if not waitingForClickTP then return end
if not mouse.Target then return end
waitingForClickTP = false
local targetPos = mouse.Hit.Position
closeAllMenus()
hrp.CFrame = CFrame.new(targetPos + Vector3.new(0, 3, 0))
end)
task.spawn(function()
while true do
task.wait(1)
if waitingForClickTP then
task.wait(9)
if waitingForClickTP then
closeAllMenus()
end
end
end
end)
spawnTPBtn.MouseButton1Click:Connect(function()
closeAllMenus()
punchTrack:Play()
punchTrack.Stopped:Wait()
local nearestSpawn = getNearestSpawn()
if nearestSpawn then
hrp.CFrame = nearestSpawn.CFrame + Vector3.new(0, 3, 0)
end
end)
-- TP TO PLAYER CON AURA - ACTUALIZADO
local function createPlayerButton(targetPlayer)
if targetPlayer == plr then return end
local playerBtn = Instance.new("TextButton")
playerBtn.Parent = playerScrollFrame
playerBtn.Size = UDim2.new(1, -10, 0, 50)
playerBtn.BackgroundColor3 = Color3.fromRGB(50, 0, 80)
playerBtn.BorderSizePixel = 0
playerBtn.Text = ""
Instance.new("UICorner", playerBtn).CornerRadius = UDim.new(0, 8)
local avatar = Instance.new("ImageLabel")
avatar.Parent = playerBtn
avatar.Size = UDim2.new(0, 40, 0, 40)
avatar.Position = UDim2.new(0, 5, 0.5, -20)
avatar.BackgroundTransparency = 1
avatar.Image = "https://www.roblox.com/headshot-thumbnail/image?userId="..targetPlayer.UserId.."&width=420&height=420&format=png"
Instance.new("UICorner", avatar).CornerRadius = UDim.new(1, 0)
local nameLabel = Instance.new("TextLabel")
nameLabel.Parent = playerBtn
nameLabel.Size = UDim2.new(1, -55, 1, 0)
nameLabel.Position = UDim2.new(0, 50, 0, 0)
nameLabel.BackgroundTransparency = 1
nameLabel.Text = targetPlayer.DisplayName.." (@"..targetPlayer.Name..")"
nameLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
nameLabel.TextScaled = true
nameLabel.Font = Enum.Font.GothamBold
nameLabel.TextXAlignment = Enum.TextXAlignment.Left
playerBtn.MouseButton1Click:Connect(function()
if targetPlayer.Character and targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
closeAllMenus()
-- CREAR AURA MORADA ✨
local aura, pulseTween = createTeleportAura()
punchTrack:Play()
punchTrack.Stopped:Wait()
-- TELEPORT
hrp.CFrame = targetPlayer.Character.HumanoidRootPart.CFrame + Vector3.new(0, 3, 0)
-- QUITAR AURA
task.wait(0.2)
if pulseTween then pulseTween:Cancel() end
if aura then aura:Destroy() end
end
end)
return playerBtn
end
local function refreshPlayerList()
for _, child in pairs(playerScrollFrame:GetChildren()) do
if child:IsA("TextButton") then
child:Destroy()
end
end
local playerCount = 0
for _, targetPlayer in pairs(Players:GetPlayers()) do
if targetPlayer ~= plr then
createPlayerButton(targetPlayer)
playerCount = playerCount + 1
end
end
playerScrollFrame.CanvasSize = UDim2.new(0, 0, 0, playerCount * 55)
end
playerTPBtn.MouseButton1Click:Connect(function()
observantMenu.Visible = false
playerListMenu.Visible = true
refreshPlayerList()
end)
playerCloseBtn.MouseButton1Click:Connect(function()
closeAllMenus()
end)
closeBtn.MouseButton1Click:Connect(function()
closeAllMenus()
end)
-- [[ INMORTALIDAD ]] --
hum.HealthChanged:Connect(function()
if hum.Health < hum.MaxHealth then
hum.Health = hum.MaxHealth
end
end)
-- [[ INICIALIZAR ]] --
char:WaitForChild("Animate")
task.wait(1)
changeDefaultAnims()
disableJump()
hum.WalkSpeed = 16
plr.CharacterAdded:Connect(function(newChar)
char = newChar
hum = newChar:WaitForChild("Humanoid")
hrp = newChar:WaitForChild("HumanoidRootPart")
isVoidRushing = false
isRunning = false
closeAllMenus()
task.wait(2)
changeDefaultAnims()
disableJump()
hum.WalkSpeed = 16
punchTrack = hum:LoadAnimation(punchAnim)
punchTrack.Looped = false
voidTrack = hum:LoadAnimation(voidAnim)
voidTrack.Looped = true
novaTrack = hum:LoadAnimation(novaAnim)
novaTrack.Looped = false
observantTrack = hum:LoadAnimation(observantAnim)
observantTrack.Looped = true
end)



best script to use with touch fling to troll in nds