
Key RequiredUniversal

-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- NaN FLING v2 | Patched script :(
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local CONFIG = {
-- Fling
FLING_DURATION = 1.5,
TOUCH_DISTANCE = 3,
TOUCH_COOLDOWN = 3,
-- GUI
WIDTH = 380,
HEIGHT = 260,
BG = Color3.fromRGB(10, 10, 10),
PANEL = Color3.fromRGB(18, 18, 18),
TITLE = Color3.fromRGB(30, 30, 30),
STROKE = Color3.fromRGB(60, 60, 60),
WHITE = Color3.fromRGB(240, 240, 240),
GREY = Color3.fromRGB(140, 140, 140),
DIM = Color3.fromRGB(60, 60, 60),
ACCENT = Color3.fromRGB(220, 220, 220),
}
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- SERVICES
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local camera = workspace.CurrentCamera
local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- STATE
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local activeFlings = {}
local touchFlingEnabled = false
local touchConnections = {}
local magnitudeConns = {}
local touchCooldowns = {}
local isMinimized = false
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- HELPERS
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function getChar()
return player.Character
end
local function getHRP()
local c = getChar()
return c and c:FindFirstChild("HumanoidRootPart")
end
local function getHum()
local c = getChar()
return c and c:FindFirstChildOfClass("Humanoid")
end
local function getPlayerByName(name)
name = name:lower()
local exact, partial = {}, {}
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= player then
local n = plr.Name:lower()
local d = plr.DisplayName:lower()
if n == name or d == name then
table.insert(exact, plr)
elseif n:find(name, 1, true) or d:find(name, 1, true) then
table.insert(partial, plr)
end
end
end
return #exact > 0 and exact or partial
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- GUI FACTORY
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
if player.PlayerGui:FindFirstChild("NaNFlingGUI") then
player.PlayerGui.NaNFlingGUI:Destroy()
end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "NaNFlingGUI"
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = player.PlayerGui
local function makeCorner(r, p)
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(0, r or 8)
c.Parent = p
return c
end
local function makeStroke(col, thick, p)
local s = Instance.new("UIStroke")
s.Color = col or CONFIG.STROKE
s.Thickness = thick or 1
s.Parent = p
return s
end
local function makeGradient(c0, c1, rot, p)
local g = Instance.new("UIGradient")
g.Color = ColorSequence.new(c0, c1)
g.Rotation = rot or 90
g.Parent = p
return g
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- WARNING OVERLAY
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local warningFrame = Instance.new("Frame")
warningFrame.Size = UDim2.new(0, 500, 0, 160)
warningFrame.Position = UDim2.new(0.5, -250, 0.5, -80)
warningFrame.BackgroundColor3 = Color3.fromRGB(180, 0, 0)
warningFrame.BorderSizePixel = 0
warningFrame.ZIndex = 10
warningFrame.Parent = screenGui
local uiCorner = Instance.new("UICorner")
uiCorner.CornerRadius = UDim.new(0, 12)
uiCorner.Parent = warningFrame
local uiStroke = Instance.new("UIStroke")
uiStroke.Color = Color3.fromRGB(255, 80, 80)
uiStroke.Thickness = 4
uiStroke.Parent = warningFrame
local warningIcon = Instance.new("TextLabel")
warningIcon.Size = UDim2.new(1, 0, 0, 50)
warningIcon.Position = UDim2.new(0, 0, 0, 10)
warningIcon.BackgroundTransparency = 1
warningIcon.Text = "β οΈ WARNING β οΈ"
warningIcon.TextColor3 = Color3.fromRGB(255, 255, 0)
warningIcon.Font = Enum.Font.SourceSansBold
warningIcon.TextSize = 36
warningIcon.ZIndex = 11
warningIcon.Parent = warningFrame
local warningText = Instance.new("TextLabel")
warningText.Size = UDim2.new(1, -20, 0, 60)
warningText.Position = UDim2.new(0, 10, 0, 60)
warningText.BackgroundTransparency = 1
warningText.Text = "THIS SCRIPT NO LONGER WORKS!\nIt has been patched by Roblox :("
warningText.TextColor3 = Color3.fromRGB(255, 255, 255)
warningText.Font = Enum.Font.SourceSansBold
warningText.TextSize = 22
warningText.TextWrapped = true
warningText.ZIndex = 11
warningText.Parent = warningFrame
local closeButton = Instance.new("TextButton")
closeButton.Size = UDim2.new(0, 140, 0, 36)
closeButton.Position = UDim2.new(0.5, -70, 1, -46)
closeButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
closeButton.Text = "Close"
closeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
closeButton.Font = Enum.Font.SourceSansBold
closeButton.TextSize = 18
closeButton.ZIndex = 12
closeButton.Parent = warningFrame
local closeBtnCorner = Instance.new("UICorner")
closeBtnCorner.CornerRadius = UDim.new(0, 8)
closeBtnCorner.Parent = closeButton
closeButton.MouseButton1Click:Connect(function()
warningFrame:Destroy()
end)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- MAIN FRAME
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, CONFIG.WIDTH, 0, CONFIG.HEIGHT)
mainFrame.Position = UDim2.new(0.5, -CONFIG.WIDTH/2, -0.5, 0)
mainFrame.BackgroundColor3 = CONFIG.BG
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Parent = screenGui
makeCorner(10, mainFrame)
makeStroke(CONFIG.STROKE, 1, mainFrame)
TweenService:Create(mainFrame, TweenInfo.new(0.45, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
Position = UDim2.new(0.5, -CONFIG.WIDTH/2, 0.5, -CONFIG.HEIGHT/2)
}):Play()
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- TITLE BAR
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 44)
titleBar.BackgroundColor3 = CONFIG.TITLE
titleBar.BorderSizePixel = 0
titleBar.Parent = mainFrame
makeCorner(10, titleBar)
makeGradient(Color3.fromRGB(25, 25, 25), Color3.fromRGB(12, 12, 12), 90, titleBar)
local titleFix = Instance.new("Frame")
titleFix.Size = UDim2.new(1, 0, 0.5, 0)
titleFix.Position = UDim2.new(0, 0, 0.5, 0)
titleFix.BackgroundColor3 = CONFIG.TITLE
titleFix.BorderSizePixel = 0
titleFix.Parent = titleBar
local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -80, 1, 0)
titleLabel.Position = UDim2.new(0, 14, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "NaN FLING"
titleLabel.TextColor3 = CONFIG.WHITE
titleLabel.TextSize = 16
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Parent = titleBar
coroutine.wrap(function()
while titleLabel and titleLabel.Parent do
TweenService:Create(titleLabel, TweenInfo.new(1.2, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), {
TextColor3 = CONFIG.GREY
}):Play()
task.wait(1.2)
TweenService:Create(titleLabel, TweenInfo.new(1.2, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), {
TextColor3 = CONFIG.WHITE
}):Play()
task.wait(1.2)
end
end)()
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 30, 0, 30)
closeBtn.Position = UDim2.new(1, -40, 0, 7)
closeBtn.BackgroundColor3 = CONFIG.PANEL
closeBtn.Text = "β"
closeBtn.TextColor3 = CONFIG.GREY
closeBtn.TextSize = 18
closeBtn.Font = Enum.Font.GothamBold
closeBtn.BorderSizePixel = 0
closeBtn.Parent = titleBar
makeCorner(6, closeBtn)
makeStroke(CONFIG.STROKE, 1, closeBtn)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- CONTENT
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local content = Instance.new("Frame")
content.Size = UDim2.new(1, -24, 1, -56)
content.Position = UDim2.new(0, 12, 0, 50)
content.BackgroundTransparency = 1
content.Parent = mainFrame
local inputLabel = Instance.new("TextLabel")
inputLabel.Size = UDim2.new(1, 0, 0, 20)
inputLabel.BackgroundTransparency = 1
inputLabel.Text = "PLAYER"
inputLabel.TextColor3 = CONFIG.GREY
inputLabel.TextSize = 11
inputLabel.Font = Enum.Font.GothamBold
inputLabel.TextXAlignment = Enum.TextXAlignment.Left
inputLabel.Parent = content
local playerBox = Instance.new("TextBox")
playerBox.Size = UDim2.new(1, 0, 0, 38)
playerBox.Position = UDim2.new(0, 0, 0, 22)
playerBox.BackgroundColor3 = CONFIG.PANEL
playerBox.BorderSizePixel = 0
playerBox.PlaceholderText = "nome do player..."
playerBox.PlaceholderColor3 = CONFIG.DIM
playerBox.Text = ""
playerBox.TextColor3 = CONFIG.WHITE
playerBox.TextSize = 14
playerBox.Font = Enum.Font.Gotham
playerBox.ClearTextOnFocus = false
playerBox.Parent = content
makeCorner(6, playerBox)
makeStroke(CONFIG.STROKE, 1, playerBox)
playerBox.Focused:Connect(function()
TweenService:Create(playerBox:FindFirstChildOfClass("UIStroke"), TweenInfo.new(0.2), {
Color = CONFIG.ACCENT
}):Play()
end)
playerBox.FocusLost:Connect(function()
TweenService:Create(playerBox:FindFirstChildOfClass("UIStroke"), TweenInfo.new(0.2), {
Color = CONFIG.STROKE
}):Play()
end)
local function makeBtn(txt, xScale, xOff, yPos)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(xScale, -4, 0, 36)
btn.Position = UDim2.new(xOff, xOff == 0 and 0 or 4, 0, yPos)
btn.BackgroundColor3 = CONFIG.PANEL
btn.Text = txt
btn.TextColor3 = CONFIG.WHITE
btn.TextSize = 13
btn.Font = Enum.Font.GothamBold
btn.BorderSizePixel = 0
btn.Parent = content
makeCorner(6, btn)
makeStroke(CONFIG.STROKE, 1, btn)
btn.MouseEnter:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = CONFIG.DIM}):Play()
end)
btn.MouseLeave:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = CONFIG.PANEL}):Play()
end)
return btn
end
local viewBtn = makeBtn("VIEW", 0.5, 0, 70)
local flingBtn = makeBtn("FLING", 0.5, 0.5, 70)
local function makeToggle(txt, yPos, initOn)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 0, 32)
btn.Position = UDim2.new(0, 0, 0, yPos)
btn.BackgroundColor3 = initOn and CONFIG.DIM or CONFIG.PANEL
btn.Text = txt .. (initOn and " ON" or " OFF")
btn.TextColor3 = initOn and CONFIG.WHITE or CONFIG.GREY
btn.TextSize = 12
btn.Font = Enum.Font.GothamBold
btn.TextXAlignment = Enum.TextXAlignment.Left
btn.BorderSizePixel = 0
btn.Parent = content
makeCorner(6, btn)
local s = makeStroke(initOn and CONFIG.ACCENT or CONFIG.STROKE, 1, btn)
local pad = Instance.new("UIPadding")
pad.PaddingLeft = UDim.new(0, 10)
pad.Parent = btn
local function setState(on)
btn.BackgroundColor3 = on and CONFIG.DIM or CONFIG.PANEL
btn.TextColor3 = on and CONFIG.WHITE or CONFIG.GREY
s.Color = on and CONFIG.ACCENT or CONFIG.STROKE
end
return btn, setState
end
local touchToggle, setTouch = makeToggle("TOUCH FLING", 118, false)
local statusLabel = Instance.new("TextLabel")
statusLabel.Size = UDim2.new(1, 0, 0, 18)
statusLabel.Position = UDim2.new(0, 0, 0, 162)
statusLabel.BackgroundTransparency = 1
statusLabel.Text = "idle"
statusLabel.TextColor3 = CONFIG.DIM
statusLabel.TextSize = 11
statusLabel.Font = Enum.Font.Gotham
statusLabel.TextXAlignment = Enum.TextXAlignment.Left
statusLabel.Parent = content
local function setStatus(txt)
statusLabel.Text = txt
end
local cooldownBG = Instance.new("Frame")
cooldownBG.Size = UDim2.new(1, 0, 0, 4)
cooldownBG.Position = UDim2.new(0, 0, 0, 184)
cooldownBG.BackgroundColor3 = CONFIG.PANEL
cooldownBG.BorderSizePixel = 0
cooldownBG.Parent = content
makeCorner(2, cooldownBG)
local cooldownBar = Instance.new("Frame")
cooldownBar.Size = UDim2.new(0, 0, 1, 0)
cooldownBar.BackgroundColor3 = CONFIG.ACCENT
cooldownBar.BorderSizePixel = 0
cooldownBar.Parent = cooldownBG
makeCorner(2, cooldownBar)
local function animateCooldown(duration)
cooldownBar.Size = UDim2.new(0, 0, 1, 0)
TweenService:Create(cooldownBar, TweenInfo.new(duration, Enum.EasingStyle.Linear), {
Size = UDim2.new(1, 0, 1, 0)
}):Play()
end
local minimizeBtn = Instance.new("TextButton")
minimizeBtn.Size = UDim2.new(0, 80, 0, 30)
minimizeBtn.Position = UDim2.new(1, -90, 1, -40)
minimizeBtn.BackgroundColor3 = CONFIG.PANEL
minimizeBtn.Text = "FLING"
minimizeBtn.TextColor3 = CONFIG.GREY
minimizeBtn.TextSize = 12
minimizeBtn.Font = Enum.Font.GothamBold
minimizeBtn.BorderSizePixel = 0
minimizeBtn.Visible = false
minimizeBtn.ZIndex = 100
minimizeBtn.Parent = screenGui
makeCorner(8, minimizeBtn)
makeStroke(CONFIG.STROKE, 1, minimizeBtn)
local stopViewBtn = Instance.new("TextButton")
stopViewBtn.Size = UDim2.new(0, 70, 0, 28)
stopViewBtn.Position = UDim2.new(1, -80, 0.5, -14)
stopViewBtn.BackgroundColor3 = CONFIG.PANEL
stopViewBtn.Text = "STOP VIEW"
stopViewBtn.TextColor3 = CONFIG.GREY
stopViewBtn.TextSize = 11
stopViewBtn.Font = Enum.Font.GothamBold
stopViewBtn.BorderSizePixel = 0
stopViewBtn.Visible = false
stopViewBtn.ZIndex = 100
stopViewBtn.Parent = screenGui
makeCorner(6, stopViewBtn)
makeStroke(CONFIG.STROKE, 1, stopViewBtn)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- DRAG
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local dragging, dragStart, startPos
titleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or
input.UserInputType == Enum.UserInputType.Touch) then
local d = input.Position - dragStart
mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X,
startPos.Y.Scale, startPos.Y.Offset + d.Y)
end
end)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- NOTIFY
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local notifY = -10
local function notify(title, msg, duration)
duration = duration or 3
local notif = Instance.new("Frame")
notif.Size = UDim2.new(0, 260, 0, 56)
notif.Position = UDim2.new(1, 10, 1, notifY - 56)
notif.BackgroundColor3 = CONFIG.PANEL
notif.BorderSizePixel = 0
notif.ZIndex = 200
notif.Parent = screenGui
makeCorner(6, notif)
makeStroke(CONFIG.STROKE, 1, notif)
local tl = Instance.new("TextLabel")
tl.Size = UDim2.new(1, -12, 0, 20)
tl.Position = UDim2.new(0, 10, 0, 6)
tl.BackgroundTransparency = 1
tl.Text = title
tl.TextColor3 = CONFIG.WHITE
tl.TextSize = 12
tl.Font = Enum.Font.GothamBold
tl.TextXAlignment = Enum.TextXAlignment.Left
tl.ZIndex = 201
tl.Parent = notif
local ml = Instance.new("TextLabel")
ml.Size = UDim2.new(1, -12, 0, 20)
ml.Position = UDim2.new(0, 10, 0, 28)
ml.BackgroundTransparency = 1
ml.Text = msg
ml.TextColor3 = CONFIG.GREY
ml.TextSize = 11
ml.Font = Enum.Font.Gotham
ml.TextXAlignment = Enum.TextXAlignment.Left
ml.TextWrapped = true
ml.ZIndex = 201
ml.Parent = notif
TweenService:Create(notif, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
Position = UDim2.new(1, -270, 1, notifY - 56)
}):Play()
task.delay(duration, function()
TweenService:Create(notif, TweenInfo.new(0.25, Enum.EasingStyle.Back, Enum.EasingDirection.In), {
Position = UDim2.new(1, 10, 1, notifY - 56)
}):Play()
task.wait(0.3)
notif:Destroy()
end)
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- NaN FLING
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function nanFling(targetPlayer, fromTouch)
if not targetPlayer or targetPlayer == player then return end
if activeFlings[targetPlayer] then return end
if not sethiddenproperty then
notify("ERRO", "executor sem sethiddenproperty")
return
end
if fromTouch and touchCooldowns[targetPlayer] then
if tick() - touchCooldowns[targetPlayer] < CONFIG.TOUCH_COOLDOWN then return end
end
local char = getChar()
local trgtChr = targetPlayer.Character
if not char or not trgtChr then return end
local hrp = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildOfClass("Humanoid")
local trgtHRP = trgtChr:FindFirstChild("HumanoidRootPart")
if not hrp or not hum or not trgtHRP then return end
activeFlings[targetPlayer] = true
if fromTouch then touchCooldowns[targetPlayer] = tick() end
local savedPos = hrp.CFrame
local NaN = 0/0
local NaNVec = Vector3.new(NaN, NaN, NaN)
setStatus("flinging " .. targetPlayer.Name)
animateCooldown(CONFIG.FLING_DURATION)
notify("FLING", targetPlayer.Name, 2)
hum.PlatformStand = true
local startTime = tick()
local conn
conn = RunService.Heartbeat:Connect(function()
if (tick() - startTime) >= CONFIG.FLING_DURATION or not char.Parent or not trgtChr.Parent then
conn:Disconnect()
activeFlings[targetPlayer] = nil
if hum then hum.PlatformStand = false end
task.wait()
if hrp and hrp.Parent then
hrp.AssemblyLinearVelocity = Vector3.zero
hrp.AssemblyAngularVelocity = Vector3.zero
pcall(function() hrp.Velocity = Vector3.zero hrp.RotVelocity = Vector3.zero end)
end
pcall(function() sethiddenproperty(hrp, "PhysicsRepRootPart", nil) end)
pcall(function() sethiddenproperty(hum, "MoveDirectionInternal", Vector3.zero) end)
task.wait()
if hrp and hrp.Parent and savedPos then
hrp.CFrame = savedPos
task.wait()
hrp.AssemblyLinearVelocity = Vector3.zero
hrp.AssemblyAngularVelocity = Vector3.zero
notify("RETORNOU", "voltou pra posiΓ§Γ£o original", 1.5)
end
setStatus("idle")
return
end
hrp.CFrame = trgtHRP.CFrame
hrp.AssemblyLinearVelocity = NaNVec
hrp.AssemblyAngularVelocity = NaNVec
pcall(function() hum:Move(NaNVec) end)
pcall(function() sethiddenproperty(hrp, "PhysicsRepRootPart", trgtHRP) end)
pcall(function() sethiddenproperty(hum, "MoveDirectionInternal", NaNVec) end)
end)
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- TOUCH FLING
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function clearTouchConns()
for _, c in pairs(touchConnections) do if c then c:Disconnect() end end
for _, c in pairs(magnitudeConns) do if c then c:Disconnect() end end
touchConnections = {}
magnitudeConns = {}
end
local function setupTouchFling()
clearTouchConns()
if not touchFlingEnabled then return end
local char = getChar()
if not char then return end
local mc = RunService.Heartbeat:Connect(function()
if not touchFlingEnabled then return end
local h = getHRP()
if not h then return end
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= player then
local tc = plr.Character
if tc then
local th = tc:FindFirstChild("HumanoidRootPart")
if th and (h.Position - th.Position).Magnitude < CONFIG.TOUCH_DISTANCE then
nanFling(plr, true)
end
end
end
end
end)
table.insert(magnitudeConns, mc)
for _, part in ipairs(char:GetChildren()) do
if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
local c = part.Touched:Connect(function(hit)
if not touchFlingEnabled then return end
local tp = Players:GetPlayerFromCharacter(hit.Parent)
if tp and tp ~= player then nanFling(tp, true) end
end)
table.insert(touchConnections, c)
end
end
setStatus("touch fling ativo")
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- VIEW
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function viewPlayer(targetPlayer)
if not targetPlayer or targetPlayer == player then
notify("ERRO", "player invΓ‘lido")
return
end
local tc = targetPlayer.Character
if not tc then notify("ERRO", "sem character") return end
local th = tc:FindFirstChild("HumanoidRootPart") or tc:FindFirstChild("Head")
if not th then notify("ERRO", "sem HRP") return end
camera.CameraSubject = th
stopViewBtn.Visible = true
notify("VIEW", "spectando " .. targetPlayer.Name)
end
local function stopViewing()
local h = getHum()
if h then
camera.CameraSubject = h
stopViewBtn.Visible = false
notify("VIEW", "cΓ’mera restaurada", 1.5)
end
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- BUTTON LOGIC
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local function resolveTarget()
local name = playerBox.Text:match("^%s*(.-)%s*$")
if name == "" then notify("AVISO", "escreve o nome do player") return nil end
local results = getPlayerByName(name)
if #results == 0 then notify("ERRO", "player nΓ£o encontrado: " .. name) return nil end
if #results > 1 then notify("AVISO", #results .. " matches β usando o primeiro") end
return results[1]
end
viewBtn.MouseButton1Click:Connect(function()
local t = resolveTarget()
if t then viewPlayer(t) end
end)
flingBtn.MouseButton1Click:Connect(function()
local t = resolveTarget()
if t then nanFling(t, false) end
end)
playerBox.FocusLost:Connect(function(enter)
if enter then flingBtn.MouseButton1Click:Fire() end
end)
stopViewBtn.MouseButton1Click:Connect(stopViewing)
closeBtn.MouseButton1Click:Connect(function()
isMinimized = true
TweenService:Create(mainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.In), {
Position = UDim2.new(0.5, -CONFIG.WIDTH/2, -0.5, 0)
}):Play()
task.wait(0.35)
mainFrame.Visible = false
minimizeBtn.Visible = true
end)
minimizeBtn.MouseButton1Click:Connect(function()
isMinimized = false
mainFrame.Visible = true
mainFrame.Position = UDim2.new(0.5, -CONFIG.WIDTH/2, -0.5, 0)
TweenService:Create(mainFrame, TweenInfo.new(0.4, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
Position = UDim2.new(0.5, -CONFIG.WIDTH/2, 0.5, -CONFIG.HEIGHT/2)
}):Play()
minimizeBtn.Visible = false
end)
touchToggle.MouseButton1Click:Connect(function()
touchFlingEnabled = not touchFlingEnabled
setTouch(touchFlingEnabled)
touchToggle.Text = "TOUCH FLING " .. (touchFlingEnabled and "ON" or "OFF")
if touchFlingEnabled then
setupTouchFling()
notify("TOUCH FLING", "ativo β encosta nos players")
else
clearTouchConns()
setStatus("idle")
notify("TOUCH FLING", "desativado", 2)
end
end)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- KEYBINDS (desktop)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
if not isMobile then
UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if input.KeyCode == Enum.KeyCode.R then stopViewing() end
if input.KeyCode == Enum.KeyCode.X then
isMinimized = not isMinimized
mainFrame.Visible = not isMinimized
minimizeBtn.Visible = isMinimized
end
end)
end
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- RESPAWN
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
player.CharacterAdded:Connect(function()
task.wait(1)
if touchFlingEnabled then setupTouchFling() end
end)
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- INIT
-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
task.wait(0.5)
notify("LOADED", "NaN Fling v2 pronto" .. (isMobile and " [mobile]" or ""), 3)
setStatus("idle")
print("NaN Fling v2 carregado")



Warning: This script DOES NOT work on solara or xeno
genuinely a really good fling script
@dancinman thx
character.Humanoid:Move(Vector3.one * 1e31) would be a better alternative it should support basically every executor + doesnt stutter or cause really any issues at all
@oatssi hmm thank you for the info
@WuzRERBorn ya
@oatssi oh wow, it instantly kills people thats nice
its patched. roblox killed it. goodbye to a month of it being discovered then patched
@skiddityboyyy ty for the info bro
@skiddityboyyy btw this was found way before i made this script
@skiddityboyyy ive had these methods for months if not years lol
Dude this is so easy to fix
@olQX tf? what is it then?
@WuzRERBorn stimulation
@WuzRERBorn just DM me if you wanna see my discord is .tungtungtungsahur_
Not patched we found a new way
@olQX what's the new way?
Same guy who got triggered and threaten me btw
@olQX who π