-- AntiBang v3 (client) | K = вкл/выкл | RightShift = скрыть/показать окно local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UIS = game:GetService("UserInputService") local StarterGui = game:GetService("StarterGui") local lp = Players.LocalPlayer local CFG = { Distance = 4, -- студы: банг держит атакующего в 1-2 студах от тебя HideTime = 0.6, -- секунд под картой (меньше 0.5 он может не успеть уехать следом) Key = Enum.KeyCode.K, HideKey = Enum.KeyCode.RightShift, Whitelist = {}, -- можно вписать сразу: {"Friend1"} } local enabled, busy = true, false local hits, lastName = 0, "-" local updateUI = function() end local function notify(t) pcall(function() StarterGui:SetCore("SendNotification", {Title = "AntiBang", Text = t, Duration = 2}) end) end local function root(plr) local c = plr.Character return c and c:FindFirstChild("HumanoidRootPart") end local function isWhite(name) name = name:lower() for _, n in ipairs(CFG.Whitelist) do if n:lower() == name then return true end end return false end -- ЛОГИКА local function dive(attacker) local me = root(lp) if not me then return end busy = true hits += 1 lastName = attacker.Name updateUI() local home = me.CFrame local y = workspace.FallenPartsDestroyHeight + 25 me.CFrame = CFrame.new(home.X, y, home.Z) me.AssemblyLinearVelocity = Vector3.zero me.Anchored = true notify(attacker.Name .. " рядом: ушёл под карту") task.delay(CFG.HideTime, function() local r = root(lp) if r then r.Anchored = false r.AssemblyLinearVelocity = Vector3.zero r.CFrame = home end busy = false end) end RunService.Heartbeat:Connect(function() if not enabled or busy then return end local me = root(lp) if not me then return end for _, p in ipairs(Players:GetPlayers()) do if p ~= lp and not isWhite(p.Name) then local r = root(p) if r and (r.Position - me.Position).Magnitude < CFG.Distance then dive(p) break end end end end) -- GUI local function mk(class, props, parent) local o = Instance.new(class) for k, v in pairs(props) do o[k] = v end o.Parent = parent return o end local function corner(o, r) mk("UICorner", {CornerRadius = UDim.new(0, r or 8)}, o) end local BG, PANEL, GREEN, RED = Color3.fromRGB(24, 26, 32), Color3.fromRGB(40, 43, 52), Color3.fromRGB(40, 160, 80), Color3.fromRGB(170, 50, 50) local gui = mk("ScreenGui", {Name = "AntiBangGui", ResetOnSpawn = false}, (gethui and gethui()) or lp:WaitForChild("PlayerGui")) local main = mk("Frame", {Size = UDim2.fromOffset(240, 280), Position = UDim2.new(0, 12, 0.3, 0), BackgroundColor3 = BG, BorderSizePixel = 0}, gui) corner(main, 10) local title = mk("Frame", {Size = UDim2.new(1, 0, 0, 32), BackgroundColor3 = PANEL, BorderSizePixel = 0}, main) corner(title, 10) mk("TextLabel", {Size = UDim2.new(1, -40, 1, 0), Position = UDim2.fromOffset(10, 0), BackgroundTransparency = 1, Text = "AntiBang", TextColor3 = Color3.new(1, 1, 1), Font = Enum.Font.GothamBold, TextSize = 15, TextXAlignment = Enum.TextXAlignment.Left}, title) local minBtn = mk("TextButton", {Size = UDim2.fromOffset(28, 24), Position = UDim2.new(1, -34, 0, 4), BackgroundColor3 = BG, Text = "–", TextColor3 = Color3.new(1, 1, 1), Font = Enum.Font.GothamBold, TextSize = 16}, title) corner(minBtn, 6) local body = mk("Frame", {Size = UDim2.new(1, 0, 1, -32), Position = UDim2.fromOffset(0, 32), BackgroundTransparency = 1}, main) mk("UIPadding", {PaddingTop = UDim.new(0, 8), PaddingLeft = UDim.new(0, 8), PaddingRight = UDim.new(0, 8)}, body) mk("UIListLayout", {Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder}, body) local function label(text, h, order) return mk("TextLabel", {Size = UDim2.new(1, 0, 0, h), BackgroundTransparency = 1, Text = text, TextColor3 = Color3.fromRGB(200, 205, 215), Font = Enum.Font.Gotham, TextSize = 12, TextWrapped = true, TextXAlignment = Enum.TextXAlignment.Left, LayoutOrder = order}, body) end local function button(text, w, order, parent) local b = mk("TextButton", {Size = UDim2.new(w, 0, 0, 28), BackgroundColor3 = PANEL, Text = text, TextColor3 = Color3.new(1, 1, 1), Font = Enum.Font.GothamBold, TextSize = 13, LayoutOrder = order}, parent or body) corner(b, 6) return b end -- вкл/выкл local toggleBtn = button("", 1, 1) toggleBtn.Size = UDim2.new(1, 0, 0, 34) -- степперы local function stepper(name, order, key, step, min, max) local row = mk("Frame", {Size = UDim2.new(1, 0, 0, 28), BackgroundTransparency = 1, LayoutOrder = order}, body) mk("TextLabel", {Size = UDim2.new(0.5, 0, 1, 0), BackgroundTransparency = 1, Text = name, TextColor3 = Color3.fromRGB(200, 205, 215), Font = Enum.Font.Gotham, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left}, row) local minus = mk("TextButton", {Size = UDim2.fromOffset(28, 28), Position = UDim2.new(0.5, 0, 0, 0), BackgroundColor3 = PANEL, Text = "-", TextColor3 = Color3.new(1, 1, 1), Font = Enum.Font.GothamBold, TextSize = 16}, row) local val = mk("TextLabel", {Size = UDim2.new(0, 44, 1, 0), Position = UDim2.new(0.5, 32, 0, 0), BackgroundTransparency = 1, TextColor3 = Color3.new(1, 1, 1), Font = Enum.Font.GothamBold, TextSize = 13}, row) local plus = mk("TextButton", {Size = UDim2.fromOffset(28, 28), Position = UDim2.new(1, -28, 0, 0), BackgroundColor3 = PANEL, Text = "+", TextColor3 = Color3.new(1, 1, 1), Font = Enum.Font.GothamBold, TextSize = 16}, row) corner(minus, 6) corner(plus, 6) local function set(v) CFG[key] = math.clamp(math.floor(v * 10 + 0.5) / 10, min, max) val.Text = tostring(CFG[key]) end minus.MouseButton1Click:Connect(function() set(CFG[key] - step) end) plus.MouseButton1Click:Connect(function() set(CFG[key] + step) end) set(CFG[key]) end stepper("Дистанция (студы)", 2, "Distance", 1, 2, 30) stepper("Под картой (сек)", 3, "HideTime", 0.5, 0.5, 5) -- белый список local wlRow = mk("Frame", {Size = UDim2.new(1, 0, 0, 28), BackgroundTransparency = 1, LayoutOrder = 4}, body) local box = mk("TextBox", {Size = UDim2.new(1, -66, 1, 0), BackgroundColor3 = PANEL, PlaceholderText = "ник друга", Text = "", TextColor3 = Color3.new(1, 1, 1), PlaceholderColor3 = Color3.fromRGB(130, 135, 145), Font = Enum.Font.Gotham, TextSize = 12, ClearTextOnFocus = false}, wlRow) corner(box, 6) local addBtn = mk("TextButton", {Size = UDim2.fromOffset(28, 28), Position = UDim2.new(1, -62, 0, 0), BackgroundColor3 = GREEN, Text = "+", TextColor3 = Color3.new(1, 1, 1), Font = Enum.Font.GothamBold, TextSize = 16}, wlRow) local clrBtn = mk("TextButton", {Size = UDim2.fromOffset(28, 28), Position = UDim2.new(1, -28, 0, 0), BackgroundColor3 = RED, Text = "x", TextColor3 = Color3.new(1, 1, 1), Font = Enum.Font.GothamBold, TextSize = 14}, wlRow) corner(addBtn, 6) corner(clrBtn, 6) local wlLabel = label("", 34, 5) local statLabel = label("", 34, 6) function updateUI() toggleBtn.Text = enabled and "ВКЛЮЧЕНО (K)" or "ВЫКЛЮЧЕНО (K)" toggleBtn.BackgroundColor3 = enabled and GREEN or RED wlLabel.Text = "Друзья: " .. (#CFG.Whitelist > 0 and table.concat(CFG.Whitelist, ", ") or "нет") statLabel.Text = "Срабатываний: " .. hits .. "\nПоследний: " .. lastName end local function toggle() enabled = not enabled updateUI() end toggleBtn.MouseButton1Click:Connect(toggle) addBtn.MouseButton1Click:Connect(function() local n = box.Text:gsub("^%s+", ""):gsub("%s+$", "") if n ~= "" and not isWhite(n) then table.insert(CFG.Whitelist, n) end box.Text = "" updateUI() end) clrBtn.MouseButton1Click:Connect(function() CFG.Whitelist = {} updateUI() end) -- сворачивание local collapsed = false minBtn.MouseButton1Click:Connect(function() collapsed = not collapsed body.Visible = not collapsed main.Size = collapsed and UDim2.fromOffset(240, 32) or UDim2.fromOffset(240, 280) minBtn.Text = collapsed and "+" or "–" end) -- перетаскивание за заголовок (мышь и тач) do local dragging, startPos, startInput title.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging, startPos, startInput = true, main.Position, i.Position i.Changed:Connect(function() if i.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UIS.InputChanged:Connect(function(i) if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then local d = i.Position - startInput main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y) end end) end -- горячие клавиши UIS.InputBegan:Connect(function(i, gp) if gp then return end if i.KeyCode == CFG.Key then toggle() elseif i.KeyCode == CFG.HideKey then main.Visible = not main.Visible end end) updateUI()