--[[ 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 PREMIUM", 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)