R 77  Premium Fling gui
Key RequiredUniversal

R 77 Premium Fling gui

Universal ScriptRemygelbwurstRemygelbwurst 1.6K views 1.2K executesUpdated Dec 13, 2025
5.0/ 5(1 votes)
10100% Positive
Lua Script•426 lines (15540 chars)
--[[
    MODERNIZED FLING GUI
    Original Logic by: R-77
    UI & Animation Overhaul by: Gemini AI
]]

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local CoreGui = game:GetService("CoreGui")

local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera

-- // Configuration
local Config = {
    Theme = {
        MainColor = Color3.fromRGB(25, 25, 30),
        AccentColor = Color3.fromRGB(0, 255, 170), -- Neon Cyan
        TextColor = Color3.fromRGB(240, 240, 240),
        SecondaryColor = Color3.fromRGB(35, 35, 40),
        HoverColor = Color3.fromRGB(45, 45, 50)
    },
    Speed = 0.3 -- Animation speed
}

-- // Logic Variables
local Targets = {}
local AllBool = false
local noclipEnabled = false
local noclipConnection = nil
local originalCanCollide = {}
local antiFallEnabled = false
local antiFallConnection = nil

-- // UI Creation Helper
local UI = {}

function UI.Create(instanceType, properties)
    local instance = Instance.new(instanceType)
    for k, v in pairs(properties) do
        instance[k] = v
    end
    return instance
end

function UI.MakeDraggable(frame, dragHandle)
    local dragging, dragInput, dragStart, startPos
    dragHandle.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            dragging = true
            dragStart = input.Position
            startPos = frame.Position
            
            input.Changed:Connect(function()
                if input.UserInputState == Enum.UserInputState.End then dragging = false end
            end)
        end
    end)
    dragHandle.InputChanged:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end
    end)
    UserInputService.InputChanged:Connect(function(input)
        if input == dragInput and dragging then
            local delta = input.Position - dragStart
            local targetPos = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
            TweenService:Create(frame, TweenInfo.new(0.05), {Position = targetPos}):Play()
        end
    end)
end

function UI.AnimateButton(btn)
    btn.MouseEnter:Connect(function()
        TweenService:Create(btn, TweenInfo.new(Config.Speed), {BackgroundColor3 = Config.Theme.AccentColor, TextColor3 = Color3.new(0,0,0)}):Play()
    end)
    btn.MouseLeave:Connect(function()
        TweenService:Create(btn, TweenInfo.new(Config.Speed), {BackgroundColor3 = Config.Theme.SecondaryColor, TextColor3 = Config.Theme.TextColor}):Play()
    end)
    btn.MouseButton1Down:Connect(function()
        TweenService:Create(btn, TweenInfo.new(0.1), {Size = UDim2.new(Config.Theme.SecondaryColor == UDim2.fromScale(1,1) and UDim2.fromScale(0.95, 0.95) or UDim2.new(0.48, -4, 0, 32))}):Play()
    end)
    btn.MouseButton1Up:Connect(function()
        TweenService:Create(btn, TweenInfo.new(0.1), {Size = UDim2.new(0.48, 0, 0, 35)}):Play() -- Reset specific to layout, generalized here
    end)
end

-- // Logic Functions
local function Notify(title, text, duration)
    -- Custom Notification UI could go here, for now using StarterGui for reliability
    game:GetService("StarterGui"):SetCore("SendNotification", {
        Title = title;
        Text = text;
        Duration = duration or 3;
    })
end

local GetPlayer = function(Name)
    Name = Name:lower()
    if Name == "all" or Name == "others" then
        AllBool = true
        return
    elseif Name == "random" then
        local GetPlayers = Players:GetPlayers()
        if table.find(GetPlayers, LocalPlayer) then
            table.remove(GetPlayers, table.find(GetPlayers, LocalPlayer))
        end
        return GetPlayers[math.random(#GetPlayers)]
    else
        for _, x in next, Players:GetPlayers() do
            if x ~= LocalPlayer then
                if x.Name:lower():match("^" .. Name) or x.DisplayName:lower():match("^" .. Name) then
                    return x
                end
            end
        end
    end
end

local function toggleNoclip()
    noclipEnabled = not noclipEnabled
    if noclipEnabled then
        noclipConnection = RunService.Stepped:Connect(function()
            if LocalPlayer.Character then
                for _, part in pairs(LocalPlayer.Character:GetDescendants()) do
                    if part:IsA("BasePart") and part.CanCollide then
                        part.CanCollide = false
                    end
                end
            end
        end)
        Notify("System", "Noclip Enabled", 2)
    else
        if noclipConnection then noclipConnection:Disconnect() end
        Notify("System", "Noclip Disabled", 2)
    end
end

local function toggleAntiFallDamage()
    antiFallEnabled = not antiFallEnabled
    if antiFallEnabled then
        if game.PlaceId ~= 189707 then
            Notify("Warning", "Only works in Natural Disaster Survival!", 3)
            antiFallEnabled = false
            return
        end
        
        local function preventFall(char)
            local root = char:WaitForChild("HumanoidRootPart", 5)
            if root then
                antiFallConnection = RunService.Heartbeat:Connect(function()
                    if not antiFallEnabled then return end
                    local oldVel = root.AssemblyLinearVelocity
                    root.AssemblyLinearVelocity = Vector3.zero
                    RunService.RenderStepped:Wait()
                    root.AssemblyLinearVelocity = oldVel
                end)
            end
        end
        
        if LocalPlayer.Character then preventFall(LocalPlayer.Character) end
        LocalPlayer.CharacterAdded:Connect(preventFall)
        Notify("System", "Anti-Fall Enabled (NDS)", 2)
    else
        if antiFallConnection then antiFallConnection:Disconnect() end
        Notify("System", "Anti-Fall Disabled", 2)
    end
end

local SkidFling = function(TargetPlayer)
    if not TargetPlayer or not TargetPlayer.Character then return end
    
    local Character = LocalPlayer.Character
    local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid")
    local RootPart = Humanoid and Humanoid.RootPart
    
    local TCharacter = TargetPlayer.Character
    local THumanoid = TCharacter:FindFirstChildOfClass("Humanoid")
    local TRootPart = THumanoid and THumanoid.RootPart
    
    if not Character or not Humanoid or not RootPart then return end
    if not TCharacter or not THumanoid or not TRootPart then return end
    
    if THumanoid.Sit and not AllBool then
        return Notify("Error", "Target is sitting", 3)
    end

    local OldPos = RootPart.CFrame
    workspace.CurrentCamera.CameraSubject = THumanoid
    
    local FPos = function(BasePart, Pos, Ang)
        RootPart.CFrame = CFrame.new(BasePart.Position) * Pos * Ang
        Character:PivotTo(CFrame.new(BasePart.Position) * Pos * Ang)
        RootPart.AssemblyLinearVelocity = Vector3.new(9e7, 9e7 * 10, 9e7)
        RootPart.AssemblyAngularVelocity = Vector3.new(9e8, 9e8, 9e8)
    end
    
    -- Safety break
    local Time = tick()
    local Angle = 0
    
    workspace.FallenPartsDestroyHeight = 0/0 -- Infinity
    
    local BV = Instance.new("BodyVelocity")
    BV.Parent = RootPart
    BV.Velocity = Vector3.new(9e8, 9e8, 9e8)
    BV.MaxForce = Vector3.new(1/0, 1/0, 1/0)
    
    Humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, false)
    
    repeat
        if RootPart and THumanoid then
             if TRootPart.AssemblyLinearVelocity.Magnitude < 50 then
                Angle = Angle + 100
                FPos(TRootPart, CFrame.new(0, 1.5, 0) + THumanoid.MoveDirection * TRootPart.AssemblyLinearVelocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle),0 ,0))
                task.wait()
                FPos(TRootPart, CFrame.new(0, -1.5, 0) + THumanoid.MoveDirection * TRootPart.AssemblyLinearVelocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle), 0, 0))
                task.wait()
                FPos(TRootPart, CFrame.new(2.25, 1.5, -2.25) + THumanoid.MoveDirection * TRootPart.AssemblyLinearVelocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle), 0, 0))
                task.wait()
                FPos(TRootPart, CFrame.new(-2.25, -1.5, 2.25) + THumanoid.MoveDirection * TRootPart.AssemblyLinearVelocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle), 0, 0))
                task.wait()
                FPos(TRootPart, CFrame.new(0, 1.5, 0) + THumanoid.MoveDirection,CFrame.Angles(math.rad(Angle), 0, 0))
                task.wait()
                FPos(TRootPart, CFrame.new(0, -1.5, 0) + THumanoid.MoveDirection,CFrame.Angles(math.rad(Angle), 0, 0))
                task.wait()
            else
                FPos(TRootPart, CFrame.new(0, 1.5, THumanoid.WalkSpeed), CFrame.Angles(math.rad(90), 0, 0))
                task.wait()
                FPos(TRootPart, CFrame.new(0, -1.5, -THumanoid.WalkSpeed), CFrame.Angles(0, 0, 0))
                task.wait()
            end
        else
            break
        end
    until not TargetPlayer.Parent or not LocalPlayer.Character or tick() > Time + 2 or Humanoid.Health <= 0
    
    BV:Destroy()
    Humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, true)
    workspace.CurrentCamera.CameraSubject = Humanoid
    workspace.FallenPartsDestroyHeight = -500 -- Reset
    
    RootPart.CFrame = OldPos
    Character:PivotTo(OldPos)
    RootPart.AssemblyLinearVelocity = Vector3.zero
    RootPart.AssemblyAngularVelocity = Vector3.zero
end


-- // BUILD GUI
local ScreenGui = UI.Create("ScreenGui", {
    Name = "ModernFlingUI",
    Parent = CoreGui,
    ResetOnSpawn = false
})

local MainFrame = UI.Create("Frame", {
    Name = "Main",
    Parent = ScreenGui,
    Size = UDim2.new(0, 320, 0, 0), -- Start height 0 for animation
    Position = UDim2.new(0.5, -160, 0.4, -100),
    BackgroundColor3 = Config.Theme.MainColor,
    BorderSizePixel = 0,
    ClipsDescendants = true
})

local Corner = UI.Create("UICorner", {Parent = MainFrame, CornerRadius = UDim.new(0, 12)})
local Stroke = UI.Create("UIStroke", {Parent = MainFrame, Color = Config.Theme.SecondaryColor, Thickness = 2})

-- Title Bar
local TitleLabel = UI.Create("TextLabel", {
    Parent = MainFrame,
    Size = UDim2.new(1, -40, 0, 40),
    Position = UDim2.new(0, 15, 0, 0),
    BackgroundTransparency = 1,
    Text = "R-77 <font color=\"rgb(0,255,170)\">PREMIUM</font>",
    RichText = true,
    Font = Enum.Font.GothamBold,
    TextSize = 18,
    TextColor3 = Config.Theme.TextColor,
    TextXAlignment = Enum.TextXAlignment.Left
})

local CloseBtn = UI.Create("TextButton", {
    Parent = MainFrame,
    Size = UDim2.new(0, 30, 0, 30),
    Position = UDim2.new(1, -35, 0, 5),
    BackgroundTransparency = 1,
    Text = "×",
    Font = Enum.Font.GothamMedium,
    TextSize = 24,
    TextColor3 = Color3.fromRGB(200, 50, 50)
})

-- Content Container
local Container = UI.Create("Frame", {
    Parent = MainFrame,
    Size = UDim2.new(1, -20, 1, -50),
    Position = UDim2.new(0, 10, 0, 45),
    BackgroundTransparency = 1
})

-- Input
local InputBox = UI.Create("TextBox", {
    Parent = Container,
    Size = UDim2.new(1, 0, 0, 35),
    BackgroundColor3 = Config.Theme.SecondaryColor,
    Text = "",
    PlaceholderText = "Target Name (All/Random)",
    TextColor3 = Config.Theme.TextColor,
    PlaceholderColor3 = Color3.fromRGB(150, 150, 150),
    Font = Enum.Font.Gotham,
    TextSize = 14
})
UI.Create("UICorner", {Parent = InputBox, CornerRadius = UDim.new(0, 8)})

-- Buttons Grid
local ButtonGrid = UI.Create("ScrollingFrame", {
    Parent = Container,
    Size = UDim2.new(1, 0, 0, 140),
    Position = UDim2.new(0, 0, 0, 45),
    BackgroundTransparency = 1,
    ScrollBarThickness = 0
})
local GridL = UI.Create("UIGridLayout", {
    Parent = ButtonGrid,
    CellSize = UDim2.new(0.48, 0, 0, 35),
    CellPadding = UDim2.new(0.04, 0, 0, 10),
    SortOrder = Enum.SortOrder.LayoutOrder
})

local function CreateToggleBtn(text, callback)
    local btn = UI.Create("TextButton", {
        Parent = ButtonGrid,
        BackgroundColor3 = Config.Theme.SecondaryColor,
        Text = text,
        TextColor3 = Config.Theme.TextColor,
        Font = Enum.Font.GothamBold,
        TextSize = 12
    })
    UI.Create("UICorner", {Parent = btn, CornerRadius = UDim.new(0, 8)})
    UI.Create("UIStroke", {Parent = btn, Color = Config.Theme.MainColor, Thickness = 2, ApplyStrokeMode = Enum.ApplyStrokeMode.Border})
    
    btn.MouseButton1Click:Connect(function()
        local state = callback()
        if state then
            TweenService:Create(btn, TweenInfo.new(0.3), {BackgroundColor3 = Config.Theme.AccentColor, TextColor3 = Color3.new(0,0,0)}):Play()
        else
            TweenService:Create(btn, TweenInfo.new(0.3), {BackgroundColor3 = Config.Theme.SecondaryColor, TextColor3 = Config.Theme.TextColor}):Play()
        end
    end)
    return btn
end

local function CreateActionBtn(text, callback)
    local btn = UI.Create("TextButton", {
        Parent = ButtonGrid,
        BackgroundColor3 = Config.Theme.SecondaryColor,
        Text = text,
        TextColor3 = Config.Theme.TextColor,
        Font = Enum.Font.GothamBold,
        TextSize = 12
    })
    UI.Create("UICorner", {Parent = btn, CornerRadius = UDim.new(0, 8)})
    UI.AnimateButton(btn)
    btn.MouseButton1Click:Connect(callback)
    return btn
end

-- // ADD BUTTONS

-- Attack Button
local AttackBtn = CreateActionBtn("ATTACK TARGET", function()
    local name = InputBox.Text
    if name == "" then return Notify("Error", "Enter a name", 2) end
    
    local target = GetPlayer(name)
    if AllBool then
        for _, pl in next, Players:GetPlayers() do
            if pl ~= LocalPlayer then
                task.spawn(function() SkidFling(pl) end)
            end
        end
        Notify("Attack", "Attacking All", 3)
        AllBool = false -- reset after call
    elseif target then
        Notify("Attack", "Attacking " .. target.DisplayName, 3)
        SkidFling(target)
    else
        Notify("Error", "Player not found", 2)
    end
end)
AttackBtn.Size = UDim2.new(1, 0, 0, 35) -- Make this one full width? No, grid limits it.
-- Grid override for full width is tricky with UIGridLayout, so we keep it split or create a separate container.
-- Let's keep it in grid for simplicity.

-- Toggles
CreateToggleBtn("NOCLIP", function() toggleNoclip(); return noclipEnabled end)
CreateToggleBtn("ANTI-FALL (NDS)", function() toggleAntiFallDamage(); return antiFallEnabled end)

-- Extra Feature for fun
CreateActionBtn("RESET CHAR", function()
    if LocalPlayer.Character then LocalPlayer.Character:BreakJoints() end
end)


-- // INITIALIZATION ANIMATION
UI.MakeDraggable(MainFrame, MainFrame)

-- Intro Animation
MainFrame.Size = UDim2.new(0, 320, 0, 0)
MainFrame.Visible = true
TweenService:Create(MainFrame, TweenInfo.new(0.6, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = UDim2.new(0, 320, 0, 210)}):Play()

-- Close Logic
CloseBtn.MouseButton1Click:Connect(function()
    TweenService:Create(MainFrame, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {Size = UDim2.new(0, 320, 0, 0)}):Play()
    task.wait(0.4)
    ScreenGui:Destroy()
    
    -- Cleanup physics
    if noclipConnection then noclipConnection:Disconnect() end
    if antiFallConnection then antiFallConnection:Disconnect() end
end)

Notify("Loaded", "Script by R-77 (Modernized)", 4)

Features & Information

Display names work You dont even have to type the full display name

Community Comments (6)

RemygelbwurstRemygelbwurstDec 13, 2025

MY gemini THINKING MODE EXPIRED NOW!

RemygelbwurstRemygelbwurstDec 21, 2025

@dvoynoyudar3 uhh bro what?

RemygelbwurstRemygelbwurstDec 21, 2025

@dvoynoyudar3 STOP DOING ADS

Replying to @Remygelbwurst
BunniEXPBunniEXPDec 24, 2025

@Noobbaconfeddv you need to make a dc server for the stuff you make

MoggusMoggusJan 1, 2026

great twin

R_77R_77Jan 3, 2026(edited)

ty for credits

More Scripts for Universal Scripts