local WindUI = loadstring(game:HttpGet("https://raw.githubusercontent.com/SUNXIAOCHUAN-DEV/-/refs/heads/main/乱码牛逼"))() local AimConfig = { Enabled = false, FOV = 100, Smoothness = 10, WallCheck = true, TeamCheck = true, TargetPart = "Head", PartsList = {"Head", "HumanoidRootPart", "UpperTorso"}, CurrentPartIndex = 1 } -- FOV圆圈显示 local Circle = Drawing.new("Circle") Circle.Visible = false Circle.Thickness = 1 Circle.NumSides = 100 Circle.Radius = AimConfig.FOV Circle.Filled = false Circle.Color = Color3.fromRGB(255, 0, 0) Circle.Position = Vector2.new(workspace.CurrentCamera.ViewportSize.X / 2, workspace.CurrentCamera.ViewportSize.Y / 2) -- 更新FOV圆圈 local function updateFOVCircle() Circle.Radius = AimConfig.FOV Circle.Visible = AimConfig.Enabled Circle.Position = Vector2.new(workspace.CurrentCamera.ViewportSize.X / 2, workspace.CurrentCamera.ViewportSize.Y / 2) end -- 游戏窗口大小变化时更新FOV圆圈位置 game:GetService("RunService").RenderStepped:Connect(function() Circle.Position = Vector2.new(workspace.CurrentCamera.ViewportSize.X / 2, workspace.CurrentCamera.ViewportSize.Y / 2) end) -- 墙壁检测函数 local function canSeeTarget(targetPos, localChar) if not AimConfig.WallCheck then return true end local camera = workspace.CurrentCamera local origin = camera.CFrame.Position local direction = (targetPos - origin).Unit local raycastParams = RaycastParams.new() -- 设置射线参数 raycastParams.FilterType = Enum.RaycastFilterType.Blacklist raycastParams.FilterDescendantsInstances = {localChar} raycastParams.IgnoreWater = true -- 发射射线 local raycastResult = workspace:Raycast(origin, direction * 1000, raycastParams) if raycastResult then -- 检查是否击中了目标 local hitPart = raycastResult.Instance local hitCharacter = hitPart:FindFirstAncestorOfClass("Model") -- 如果击中的是目标角色,则视为可见 if hitCharacter and hitCharacter:FindFirstChild(AimConfig.TargetPart) then local targetPartPos = hitCharacter[AimConfig.TargetPart].Position local distanceToTarget = (targetPartPos - origin).Magnitude local distanceToHit = (raycastResult.Position - origin).Magnitude -- 如果击中点距离目标很近(在误差范围内),视为可见 return math.abs(distanceToTarget - distanceToHit) < 1 end -- 击中了其他物体,不可见 return false end -- 没有击中任何物体,可见 return true end -- 队伍检测函数 local function isEnemy(player, localPlayer) if not AimConfig.TeamCheck then return true end -- 检查是否为同一队伍 if player.Team and localPlayer.Team then return player.Team ~= localPlayer.Team end -- 检查是否为同一队伍颜色(适用于某些游戏) if player.TeamColor and localPlayer.TeamColor then return player.TeamColor ~= localPlayer.TeamColor end -- 默认为敌人 return true end -- 获取最近玩家 local function getClosestPlayerToCursor() local nearest = nil local last = math.huge local localPlayer = LocalPlayer local localChar = localPlayer.Character if not localChar or not localChar:FindFirstChild("HumanoidRootPart") then return nil end for _, player in pairs(game.Players:GetPlayers()) do if player ~= localPlayer and player.Character and player.Character:FindFirstChild(AimConfig.TargetPart) then -- 队伍检测 if not isEnemy(player, localPlayer) then continue end local targetChar = player.Character local targetPos = targetChar[AimConfig.TargetPart].Position -- 墙壁检测 if not canSeeTarget(targetPos, localChar) then continue end -- 计算屏幕距离 local ePos, visible = workspace.CurrentCamera:WorldToViewportPoint(targetPos) if visible then local AccPos = Vector2.new(ePos.x, ePos.y) local mousePos = Vector2.new(workspace.CurrentCamera.ViewportSize.x / 2, workspace.CurrentCamera.ViewportSize.y / 2) local distance = (AccPos - mousePos).magnitude -- 检查是否在FOV范围内 if distance < last and distance < AimConfig.FOV then last = distance nearest = player end end end end return nearest end -- 平滑瞄准函数 local function smoothAim(targetPosition) local camera = workspace.CurrentCamera local currentCFrame = camera.CFrame local targetDirection = (targetPosition - currentCFrame.Position).Unit -- 计算目标朝向 local targetCFrame = CFrame.new(currentCFrame.Position, currentCFrame.Position + targetDirection) -- 应用平滑度 local smoothnessFactor = math.clamp(AimConfig.Smoothness, 1, 100) local lerpFactor = 1 / smoothnessFactor -- 插值计算新的CFrame local newCFrame = currentCFrame:Lerp(targetCFrame, lerpFactor) camera.CFrame = newCFrame end -- 自瞄主循环 local aimLoop = nil local function startAimLoop() if aimLoop then return end aimLoop = game:GetService("RunService").RenderStepped:Connect(function() if AimConfig.Enabled then local closest = getClosestPlayerToCursor() if closest and closest.Character and closest.Character:FindFirstChild(AimConfig.TargetPart) then local targetPosition = closest.Character[AimConfig.TargetPart].Position if AimConfig.Smoothness > 1 then smoothAim(targetPosition) else camera.CFrame = CFrame.new(camera.CFrame.Position, targetPosition) end end end end) end local function stopAimLoop() if aimLoop then aimLoop:Disconnect() aimLoop = nil end end local LocalPlayer = game:GetService("Players").LocalPlayer local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local camera = workspace.CurrentCamera local HumanoidRootPart = Character:WaitForChild("HumanoidRootPart") local function getDeviceType() local UserInputService = game:GetService("UserInputService") if UserInputService.TouchEnabled then if UserInputService.KeyboardEnabled then return "平板" else return "手机" end else return "电脑" end end local deviceType = getDeviceType() local uiSize, uiPosition if deviceType == "手机" then uiSize = UDim2.fromOffset(500, 400) elseif deviceType == "平板" then uiSize = UDim2.fromOffset(550, 450) else uiSize = UDim2.fromOffset(600, 500) end uiPosition = UDim2.new(0.5, 0, 0.5, 0) WindUI.TransparencyValue = 0.2 WindUI:SetTheme("Dark") local playerName = LocalPlayer.Name local displayName = LocalPlayer.DisplayName WindUI:Notify({ Title = "德与中山", Content = "德与中山--传奇塔防加载完成", Duration = 2 }) local Window = WindUI:CreateWindow({ Title = "德与中山--传奇塔防", Icon = "crown", Author = "作者:汉堡", Folder = "OrangeCHub", Size = uiSize, Position = uiPosition, Theme = "Dark", Transparent = true, User = { Enabled = true, Anonymous = false, Username = playerName, DisplayName = displayName, UserId = LocalPlayer.UserId, ThumbnailType = "AvatarBust", Callback = function() WindUI:Notify({ Title = "用户信息", Content = "玩家:" .. LocalPlayer.Name, Duration = 3 }) end }, SideBarWidth = deviceType == "手机" and 150 or 180, ScrollBarEnabled = true }) Window:CreateTopbarButton("theme-switcher", "moon", function() WindUI:SetTheme(WindUI:GetCurrentTheme() == "Dark" and "Light" or "Dark") WindUI:Notify({ Title = "提示", Content = "当前主题: "..WindUI:GetCurrentTheme(), Duration = 2 }) end, 990) Window:EditOpenButton({ Title = "打开德与中山--传奇塔防", Icon = "crown", }) Window:SetToggleKey(Enum.KeyCode.N) local Tabs = { Pl = Window:Section({ Title = "玩家", Opened = false, Icon = "user"}), Block = Window:Section({ Title = "塔", Opened = false, Icon = "hand-fist"}), } local TabHandles = { Announcement = Tabs.Pl:Tab({ Title = "公告", Icon = "folder"}), Player = Tabs.Pl:Tab({ Title = "玩家", Icon = "folder"}), Block1 = Tabs.Block:Tab({ Title = "放置", Icon = "folder"}), Block2 = Tabs.Block:Tab({ Title = "升级", Icon = "folder"}), } TabHandles.Announcement:Paragraph({ Title = "欢迎尊贵的用户", Desc = "此脚本会一直更新 感谢白名单使用者", Image = "info", ImageSize = 15 }) TabHandles.Announcement:Paragraph({ Title = "玩家", Desc = "尊敬的用户: " .. LocalPlayer.Name .. "欢迎使用", Image = "user", ImageSize = 12 }) TabHandles.Announcement:Paragraph({ Title = "设备", Desc = "你的使用设备: " .. deviceType, Image = "gamepad", ImageSize = 12 }) TabHandles.Announcement:Paragraph({ Title = "设备", Desc = "你的注入器: " .. identifyexecutor(), Image = "syringe", ImageSize = 12 }) TabHandles.Player:Button({ Title = "开启自瞄", Desc = "启用/禁用自瞄功能", Icon = "crosshair", Value = AimConfig.Enabled, Callback = function(enabled) AimConfig.Enabled = enabled if enabled then WindUI:Notify({ Title = "陌染自瞄", Content = "自瞄已开启", Duration = 2 }) Circle.Visible = true startAimLoop() else WindUI:Notify({ Title = "陌染自瞄", Content = "自瞄已关闭", Duration = 2 }) Circle.Visible = false stopAimLoop() end end }) TabHandles.Player:Slider({ Title = "玩家跳跃高度", Desc = "玩家的跳跃高度", Step = 1, Value = { Min = 50, Max = 200, Default = 50, }, Callback = function(value) if Character and Character:FindFirstChild("Humanoid") then Character.Humanoid.JumpHeight = value end end }) TabHandles.Player:Slider({ Title = "玩家镜头FOV", Desc = "玩家的镜头", Step = 1, Value = { Min = 70, Max = 120, Default = 70, }, Callback = function(value) if camera then camera.FieldOfView = value end end }) local Tower TabHandles.Block1:Dropdown({ Title = "选择塔", Desc = "选择", Values = {'007', '大卫', '农场主', 'roblox最快玩家', '99天鹿', '鱿鱼守卫', '鱿鱼黑衣人', 'Noob', '蜗牛', '黑枪王', '你自己'}, Value = "选择", Multi = false, AllowNone = false, Callback = function(Item) local GetItemList = { ['007'] = 'Incrementer Kylin', ['大卫'] = 'Moderator Dave', ['农场主'] = 'Farmer David', ['roblox最快玩家'] = 'Speedy Egor', ['99天鹿'] = 'Night Deer', ['鱿鱼守卫'] = 'Assault Soldier', ['鱿鱼黑衣人'] = 'Commando Shadow', ['Noob'] = 'Hidden Noob', ['蜗牛'] = 'Loco Miller', ['黑枪王'] = 'Sniper Fez', ['你自己'] = 'Omnius Donator', } Tower = GetItemList[Item] end }) TabHandles.Block1:Button({ Title = "在自身位置放置塔", Icon = "放置", Callback = function() if Tower == "" then WindUI:Notify({ Title = "德与中山", Content = "请你选择塔", Icon = "crown", Duration = 2 }) return end game:GetService("ReplicatedStorage"):WaitForChild("Functions"):WaitForChild("SpawnTower"):InvokeServer(Tower, HumanoidRootPart.CFrame) end }) TabHandles.Block2:Button({ Title = "一键升级所有塔", Icon = "放置", Callback = function() for _, Tower in pairs(game.workspace.Towers:GetChildren()) do game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui"):WaitForChild("GameGui"):WaitForChild("Events"):WaitForChild("UpgradeTower"):InvokeServer(Tower) end end }) TabHandles.Block2:Divider() local UpdateTower TabHandles.Block2:Dropdown({ Title = "选择塔", Desc = "选择", Values = {'007', '大卫', '农场主', 'roblox最快玩家', '99天鹿', '鱿鱼守卫', '鱿鱼黑衣人', 'Noob', '蜗牛', '黑枪王', '你自己'}, Value = "选择", Multi = false, AllowNone = false, Callback = function(Item) local GetItemList = { ['007'] = 'Incrementer Kylin', ['大卫'] = 'Moderator Dave', ['农场主'] = 'Farmer David', ['roblox最快玩家'] = 'Speedy Egor', ['99天鹿'] = 'Night Deer', ['鱿鱼守卫'] = 'Assault Soldier', ['鱿鱼黑衣人'] = 'Commando Shadow', ['Noob'] = 'Hidden Noob', ['蜗牛'] = 'Loco Miller', ['黑枪王'] = 'Sniper Fez', ['你自己'] = 'Omnius Donator', } UpdateTower = GetItemList[Item] end }) TabHandles.Block2:Button({ Title = "一键升级所有选择塔", Icon = "放置", Callback = function() if Tower == "" then WindUI:Notify({ Title = "德与中山", Content = "请你选择塔", Icon = "crown", Duration = 2 }) return end for _, Tower in pairs(game.workspace.Towers:GetChildren()) do if Tower.Name == UpdateTower then game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui"):WaitForChild("GameGui"):WaitForChild("Events"):WaitForChild("UpgradeTower"):InvokeServer(Tower) else WindUI:Notify({ Title = "德与中山", Content = "未找到此塔", Icon = "crown", Duration = 2 }) end end end }) Window:OnClose(function() if game:GetService("UserInputService").KeyboardEnabled then WindUI:Notify({ Title = "通知", Content = "按下N键再次打开", Duration = 3 }) end end)