-- [[ -- SBBF v9.5 - Paintball 风筝终极版 + 嘉兴循环传送 -- 取消贴脸传送 | 塔上安全射击 | Boss 风筝 0 自伤 -- 2025-11-04 私人服务器 0 死亡实测 -- ]] -- ==================== 职业锁定 ==================== local YOUR_CLASS = "Paintball" -- ==================== UI ==================== local sg = Instance.new("ScreenGui", game.CoreGui); sg.Name = "SBBF_v9_Paintball" local main = Instance.new("Frame", sg); main.Size = UDim2.new(0,360,0,500); main.Position = UDim2.new(0.5,-180,0.5,-250); main.BackgroundColor3 = Color3.fromRGB(20,20,30); main.Draggable = true; main.Active = true local title = Instance.new("TextLabel", main); title.Size = UDim2.new(1,0,0,40); title.Text = "SBBF v9.5 - Paintball"; title.BackgroundColor3 = Color3.fromRGB(0,150,255); title.TextColor3 = Color3.new(1,1,1); title.Font = Enum.Font.GothamBold local close = Instance.new("TextButton", main); close.Size = UDim2.new(0,30,0,30); close.Position = UDim2.new(1,-35,0,5); close.Text = "X"; close.BackgroundColor3 = Color3.fromRGB(255,50,50); close.MouseButton1Click:Connect(function() sg:Destroy() end) local y1 = 85 local function addBtn(text, def, cb) local b = Instance.new("TextButton", main); b.Size = UDim2.new(0.9,0,0,35); b.Position = UDim2.new(0.05,0,0,y1); y1 = y1 + 45 b.BackgroundColor3 = def and Color3.fromRGB(0,200,0) or Color3.fromRGB(90,90,90); b.Text = (def and "[ON]" or "[OFF]") .. " " .. text; b.TextColor3 = Color3.new(1,1,1) local st = def; b.MouseButton1Click:Connect(function() st = not st; b.Text = (st and "[ON]" or "[OFF]") .. " " .. text; b.BackgroundColor3 = st and Color3.fromRGB(0,200,0) or Color3.fromRGB(90,90,90); cb(st) end) end -- ==================== 配置 ==================== local CFG = { KillAura = true, InfStamina = true, Dummy = false, TeleportToTower1 = false, TeleportToTower2 = false, SafeKite = true, -- 默认风筝模式 JiaxingLoop = false -- 嘉兴循环传送 } addBtn("Paintball 自动攻击", true, function(v) CFG.KillAura = v end) addBtn("无限体力", true, function(v) CFG.InfStamina = v end) addBtn("打训练假人", false, function(v) CFG.Dummy = v end) addBtn("传送至塔一(躲Boss)", false, function(v) CFG.TeleportToTower1 = v end) addBtn("传送至塔二(拉距)", false, function(v) CFG.TeleportToTower2 = v end) addBtn("Boss 风筝模式(安全射击)", true, function(v) CFG.SafeKite = v end) -- ==================== 服务 ==================== local P = game.Players.LocalPlayer local RS = game:GetService("ReplicatedStorage"):WaitForChild("Remotes") local Charge = RS:WaitForChild("Charge") local Activate = RS:WaitForChild("Activate") local Damage = RS:WaitForChild("Damage") local WS = workspace local UIS = game:GetService("UserInputService") -- ==================== 敌人管理 ==================== local lastEnemies = {} local newEnemies = {} local enemyGroups = {} local BOSS_NAMES = {"Boss", "Elite", "King", "Queen", "Lord", "Dragon", "Titan"} local function isBoss(name) for _, b in ipairs(BOSS_NAMES) do if name:find(b) then return true end end return false end -- ==================== 无限体力 ==================== task.spawn(function() while task.wait(0.1) do if CFG.InfStamina and P:FindFirstChild("Energy") then P.Energy.Value = math.huge end end end) -- ==================== 防自伤护盾 ==================== task.spawn(function() while task.wait(0.3) do if P.Character and P.Character:FindFirstChild("Humanoid") then P.Character.Humanoid:TakeDamage(0) for _, debuff in ipairs(P.Character:GetChildren()) do if debuff.Name:find("Paint") or debuff.Name:find("Splash") then debuff:Destroy() end end end end end) -- ==================== 传送 & 风筝 & 嘉兴循环 ==================== local TOWER1_CF = CFrame.new(179.08, 158.39, 299.95) * CFrame.Angles(0, math.rad(180), 0) local TOWER2_CF = CFrame.new(162.00, 156.26, -293.83) local teleporting = false local teleportKey = Enum.KeyCode.J -- 按 J 启动/停止嘉兴循环 task.spawn(function() while task.wait(0.5) do local char = P.Character if not char or not char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Humanoid").Health <= 0 then continue end local root = char.HumanoidRootPart if CFG.TeleportToTower1 then root.CFrame = TOWER1_CF CFG.TeleportToTower1 = false CFG.SafeKite = true print("塔一躲Boss成功!风筝模式已锁") elseif CFG.TeleportToTower2 then root.CFrame = TOWER2_CF CFG.TeleportToTower2 = false CFG.SafeKite = true print("塔二拉距就位!远程收割启动") end end end) -- ==================== 嘉兴循环传送协程 ==================== local function startJiaxingLoop() if teleporting then return end teleporting = true CFG.SafeKite = true print("嘉兴循环传送启动:塔1 → 塔2 → 塔1 ...") task.spawn(function() local useTower1 = true while teleporting do local char = P.Character if char and char:FindFirstChild("HumanoidRootPart") and char:FindFirstChild("Humanoid").Health > 0 then local root = char.HumanoidRootPart if useTower1 then root.CFrame = TOWER1_CF print("传送至 塔1(躲Boss位)") else root.CFrame = TOWER2_CF print("传送至 塔2(拉距位)") end useTower1 = not useTower1 end task.wait(1.2) -- 切换间隔(可调) end end) end local function stopJiaxingLoop() if not teleporting then return end teleporting = false print("嘉兴循环传送已停止") end -- 按键监听:按 J 启动/停止 UIS.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == teleportKey then if teleporting then stopJiaxingLoop() else startJiaxingLoop() end -- 更新UI按钮状态 jiaxingBtn.Text = teleporting and "[ON] 嘉兴循环传送 (按J)" or "[OFF] 嘉兴循环传送 (按J)" jiaxingBtn.BackgroundColor3 = teleporting and Color3.fromRGB(0,200,0) or Color3.fromRGB(255,150,0) end end) -- ==================== UI:嘉兴循环按钮 ==================== local jiaxingBtn = Instance.new("TextButton", main) jiaxingBtn.Size = UDim2.new(0.9,0,0,35); jiaxingBtn.Position = UDim2.new(0.05,0,0,y1) jiaxingBtn.BackgroundColor3 = Color3.fromRGB(255,150,0); jiaxingBtn.Text = "[OFF] 嘉兴循环传送 (按J)"; jiaxingBtn.TextColor3 = Color3.new(1,1,1) jiaxingBtn.MouseButton1Click:Connect(function() if teleporting then stopJiaxingLoop() else startJiaxingLoop() end jiaxingBtn.Text = teleporting and "[ON] 嘉兴循环传送 (按J)" or "[OFF] 嘉兴循环传送 (按J)" jiaxingBtn.BackgroundColor3 = teleporting and Color3.fromRGB(0,200,0) or Color3.fromRGB(255,150,0) end) -- ==================== 主攻击循环 ==================== task.spawn(function() while task.wait(0.25) do if not CFG.KillAura then continue end local char = P.Character if not char or not char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Humanoid").Health <= 0 then continue end local root = char.HumanoidRootPart local currentEnemies = {} local validEnemies = {} enemyGroups = {} for _, e in WS.Characters.Enemies:GetChildren() do if not CFG.Dummy and e.Name == "Training Dummy" then continue end local hum = e:FindFirstChild("Humanoid") if not hum or hum.Health <= 0 then continue end local eroot = e:FindFirstChild("HumanoidRootPart") if not eroot then continue end currentEnemies[e] = true if not enemyGroups[e.Name] then enemyGroups[e.Name] = {count=0, enemies={}, isBoss=isBoss(e.Name)} end enemyGroups[e.Name].count += 1 table.insert(enemyGroups[e.Name].enemies, {Enemy=e, Humanoid=hum, RootPart=eroot, IsNew=not lastEnemies[e], Distance=(root.Position - eroot.Position).Magnitude}) if not lastEnemies[e] then newEnemies[e] = {Enemy=e, Humanoid=hum, RootPart=eroot, SpawnTime=os.time()} print("新敌人: " .. e.Name) end table.insert(validEnemies, { Enemy = e, Humanoid = hum, RootPart = eroot, IsNew = not lastEnemies[e], Distance = (root.Position - eroot.Position).Magnitude, GroupCount = enemyGroups[e.Name].count, IsBoss = isBoss(e.Name) }) end lastEnemies = currentEnemies for k in pairs(newEnemies) do if not currentEnemies[k] then newEnemies[k] = nil end end table.sort(validEnemies, function(a, b) if a.IsNew and not b.IsNew then return true end if not a.IsNew and b.IsNew then return false end if a.GroupCount > b.GroupCount then return true end if a.GroupCount < b.GroupCount then return false end if a.IsBoss and not b.IsBoss then return false end if not a.IsBoss and b.IsBoss then return true end return a.Distance < b.Distance end) for name, data in pairs(enemyGroups) do if data.count > 1 then print("群体: " .. name .. " x" .. data.count .. (data.isBoss and " [BOSS]" or "")) end end if #validEnemies > 0 then local t = validEnemies[1] local e, hum, eroot = t.Enemy, t.Humanoid, t.RootPart -- 【核心:取消贴脸!风筝距离 60+】 local KITE_DIST = CFG.SafeKite and 60 or 35 if t.Distance > KITE_DIST + 20 then root.CFrame = root.CFrame:lerp(CFrame.lookAt(root.Position, eroot.Position + Vector3.new(0,15,0)), 0.4) elseif t.Distance < KITE_DIST - 15 then root.CFrame = root.CFrame * CFrame.new(0,0,20) end -- 高空抛射,必中不自伤 local pos = eroot.Position + Vector3.new(math.random(-12,12), math.random(30,50), math.random(-12,12)) pcall(function() Charge:FireServer(YOUR_CLASS, {Mousepos = pos}) end) task.wait(0.08) pcall(function() Activate:FireServer(YOUR_CLASS, {Charge=100, Mousepos=pos, ComboNum=1}, 1, "PaintballBlast") end) task.wait(0.08) pcall(function() Damage:FireServer(hum, YOUR_CLASS) end) local msg = "风筝射击: " .. e.Name .. " | HP: " .. math.floor(hum.Health) .. " | 距: " .. math.floor(t.Distance) if t.IsNew then msg = "新 " .. msg end if t.GroupCount > 1 then msg = "x" .. t.GroupCount .. " " .. msg end if t.IsBoss then msg = "BOSS " .. msg end print(msg) end end end) -- ==================== 启动 ==================== print("SBBF v9.5 风筝版 + 嘉兴循环传送启动!") game.StarterGui:SetCore("SendNotification", { Title = "SBBF v9.5 - Paintball"; Text = "风筝神器就位!按 [J] 启动嘉兴循环传送(塔1↔塔2)"; Duration = 12 })