-- [[ WesterLua — ULTRA UNIFIED SYSTEM VERSION 3.2 (WALLBANG AUTO-TRIGGER UPDATE + FIXED MORPH) ]] -- Клавиша активации: INSERT или Кнопка сверху экрана local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local Lighting = game:GetService("Lighting") local LocalPlayer = Players.LocalPlayer local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local Humanoid = Character:WaitForChild("Humanoid", 5) local RootPart = Character:WaitForChild("HumanoidRootPart", 5) local Camera = workspace.CurrentCamera local SpinAngle = 0 local IsSpawning = false local OriginalAppearance = {} local OriginalAppearancesAll = {} -- Кэш для других игроков local TabButtons = {} local PageFrames = {} local MenuElements = {} local RegisteredFeatures = {} local CurrentActivePage = "Combat" local ChamsStorage = workspace:FindFirstChild("WesterLua_Chams_Storage") or Instance.new("Folder", workspace) ChamsStorage.Name = "WesterLua_Chams_Storage" local Palette = { ["Red"] = Color3.fromRGB(255, 65, 65), ["Green"] = Color3.fromRGB(65, 255, 65), ["Blue"] = Color3.fromRGB(65, 65, 255), ["Cyan"] = Color3.fromRGB(65, 255, 255), ["Magenta"] = Color3.fromRGB(255, 65, 255), ["Yellow"] = Color3.fromRGB(255, 255, 65), ["Purple"] = Color3.fromRGB(150, 65, 255), ["Black"] = Color3.fromRGB(25, 25, 25), ["White"] = Color3.fromRGB(255, 255, 255) } local SkyboxPresets = { ["Purple Nebula"] = { SkyboxBk = "rbxassetid://1595494833", SkyboxDn = "rbxassetid://1595494593", SkyboxFt = "rbxassetid://1595494723", SkyboxLf = "rbxassetid://1595494665", SkyboxRt = "rbxassetid://1595494488", SkyboxUp = "rbxassetid://1595494791" }, ["Midnight City"] = { SkyboxBk = "rbxassetid://386343105", SkyboxDn = "rbxassetid://386342893", SkyboxFt = "rbxassetid://386343046", SkyboxLf = "rbxassetid://386344243", SkyboxRt = "rbxassetid://386343947", SkyboxUp = "rbxassetid://386343710" }, ["Red Void"] = { SkyboxBk = "rbxassetid://3034934645", SkyboxDn = "rbxassetid://3034935402", SkyboxFt = "rbxassetid://3034934045", SkyboxLf = "rbxassetid://3034934351", SkyboxRt = "rbxassetid://3034934914", SkyboxUp = "rbxassetid://3034935174" }, ["Anime Sunset"] = { SkyboxBk = "rbxassetid://264923311", SkyboxDn = "rbxassetid://264924294", SkyboxFt = "rbxassetid://264923616", SkyboxLf = "rbxassetid://264923838", SkyboxRt = "rbxassetid://264922123", SkyboxUp = "rbxassetid://264924559" }, ["Matrix Grid"] = { SkyboxBk = "rbxassetid://10034441", SkyboxDn = "rbxassetid://10034441", SkyboxFt = "rbxassetid://10034441", SkyboxLf = "rbxassetid://10034441", SkyboxRt = "rbxassetid://10034441", SkyboxUp = "rbxassetid://10034441" } } local ArmsColorOptions = {"Link to Map"} for name, _ in pairs(Palette) do table.insert(ArmsColorOptions, "Custom " .. name) end local SkyOptions = {} for name, _ in pairs(SkyboxPresets) do table.insert(SkyOptions, name) end local Config = { AutoTriggerEnabled = false, AutoTriggerTarget = "Head & Torso", AutoTriggerDistance = 15, MorphEnabled = false, MorphAllEnabled = false, SelectedMorph = "Tun Tun Sahur", Morphs = { ["Tun Tun Sahur"] = 112342985897325, ["Житель (Minecraft)"] = 90405905565781 }, SahurPulse = false, SpeedEnabled = true, SpeedMultiplier = 3.5, WallHopEnabled = false, AntiAimEnabled = false, AntiAimPitch = "Down", AntiAimYaw = "Static", FlyEnabled = false, FlySpeed = 75, ChamsEsp = false, StealthESP = false, HealthBarEsp = false, AimbotEnabled = false, WallCheck = false, AimbotFOV = 180, AimbotSmoothness = 0.15, FOVCircleVisible = false, FOVCircleColor = Color3.fromRGB(255, 255, 255), HeadSize = 2, CameraFOV = 70, ThirdPersonEnabled = false, ThirdPersonDistance = 12, MenuVisible = true, CurrentTheme = "Midnight", ArmsChamsEnabled = false, ArmsColorSource = "Link to Map", MapColorEnabled = false, SelectedMapColor = "Red", SkyChangerEnabled = false, SelectedSky = "Purple Nebula" } local ThemesList = { ["Midnight"] = { WindowBg = Color3.fromRGB(11, 12, 18), SidebarBg = Color3.fromRGB(16, 18, 26), ElementBg = Color3.fromRGB(22, 25, 35), ElementHover = Color3.fromRGB(28, 32, 45), Border = Color3.fromRGB(35, 40, 55), Accent = Color3.fromRGB(90, 120, 240), AccentGlow = Color3.fromRGB(40, 60, 160), Text = Color3.fromRGB(240, 240, 245) }, ["Dark Cherry"] = { WindowBg = Color3.fromRGB(16, 12, 12), SidebarBg = Color3.fromRGB(22, 16, 16), ElementBg = Color3.fromRGB(30, 22, 22), ElementHover = Color3.fromRGB(38, 28, 28), Border = Color3.fromRGB(48, 32, 32), Accent = Color3.fromRGB(255, 60, 60), AccentGlow = Color3.fromRGB(150, 20, 20), Text = Color3.fromRGB(250, 240, 240) }, ["Emerald"] = { WindowBg = Color3.fromRGB(8, 14, 11), SidebarBg = Color3.fromRGB(13, 20, 16), ElementBg = Color3.fromRGB(18, 28, 22), ElementHover = Color3.fromRGB(24, 38, 30), Border = Color3.fromRGB(28, 44, 35), Accent = Color3.fromRGB(45, 200, 130), AccentGlow = Color3.fromRGB(15, 100, 60), Text = Color3.fromRGB(235, 245, 240) }, ["Toxic Vapor"] = { WindowBg = Color3.fromRGB(14, 8, 18), SidebarBg = Color3.fromRGB(20, 12, 26), ElementBg = Color3.fromRGB(28, 16, 36), ElementHover = Color3.fromRGB(36, 22, 46), Border = Color3.fromRGB(44, 24, 55), Accent = Color3.fromRGB(170, 60, 200), AccentGlow = Color3.fromRGB(95, 20, 120), Text = Color3.fromRGB(245, 235, 250) } } local ActiveTheme = ThemesList[Config.CurrentTheme] local MainNeck = nil local NeckOriginC0 = nil local LockedTargetCharacter = nil local function FindAndCacheNeck() if not Character then return end local torso = Character:FindFirstChild("Torso") or Character:FindFirstChild("UpperTorso") local neck = torso and (torso:FindFirstChild("Neck") or torso:FindFirstChild("NeckJoint")) if not neck then local head = Character:FindFirstChild("Head") neck = head and head:FindFirstChild("Neck") end if neck and neck:IsA("Motor6D") then MainNeck = neck if not neck:GetAttribute("OrigC0") then neck:SetAttribute("OrigC0", neck.C0) end NeckOriginC0 = neck:GetAttribute("OrigC0") end end local function ApplyUgcMorph(enable) if not Character or not Humanoid or not RootPart then return end if enable then local currentAssetID = Config.Morphs[Config.SelectedMorph] if not currentAssetID then return end for _, obj in ipairs(Character:GetDescendants()) do if (obj:IsA("BasePart") or obj:IsA("Decal")) and obj.Name ~= "HumanoidRootPart" then if not obj:GetAttribute("WesterLuaMorphPart") then if not obj:GetAttribute("WesterLuaDefTrans") then obj:SetAttribute("WesterLuaDefTrans", obj.Transparency) end obj.Transparency = 1 end end end for _, obj in ipairs(Character:GetChildren()) do if obj:IsA("Accessory") and not obj:GetAttribute("WesterLuaMorphAccessory") then table.insert(OriginalAppearance, obj:Clone()) obj:Destroy() end end task.spawn(function() local success, objects = pcall(function() return game:GetObjects("rbxassetid://" .. currentAssetID) end) if success and objects and #objects > 0 then local activeMorph = Character:FindFirstChild("WesterLua_Active_Morph") or Instance.new("Folder", Character) activeMorph.Name = "WesterLua_Active_Morph" local loadedObj = objects[1]:Clone() loadedObj.Parent = activeMorph for _, subObj in ipairs(loadedObj:GetDescendants()) do if subObj:IsA("Humanoid") or subObj:IsA("Animator") or subObj:IsA("Script") or subObj:IsA("LocalScript") then subObj:Destroy() end end local targetPart = nil if loadedObj:IsA("Model") then targetPart = loadedObj.PrimaryPart or loadedObj:FindFirstChildOfClass("BasePart") elseif loadedObj:IsA("BasePart") then targetPart = loadedObj elseif loadedObj:IsA("Accessory") then targetPart = loadedObj:FindFirstChild("Handle") end if targetPart then targetPart.CFrame = RootPart.CFrame local mainWeld = Instance.new("WeldConstraint", targetPart) mainWeld.Part0 = RootPart mainWeld.Part1 = targetPart end for _, part in ipairs(loadedObj:GetDescendants()) do if part:IsA("BasePart") then part.Anchored = false part.CanCollide = false part.Massless = true part:SetAttribute("WesterLuaMorphPart", true) if part.Transparency > 0.7 then part.Transparency = 0 end end end end end) else for _, obj in ipairs(Character:GetDescendants()) do if obj:IsA("BasePart") or obj:IsA("Decal") then local defTrans = obj:GetAttribute("WesterLuaDefTrans") if defTrans then obj.Transparency = defTrans end end end local activeMorph = Character:FindFirstChild("WesterLua_Active_Morph") if activeMorph then activeMorph:Destroy() end for _, accClone in ipairs(OriginalAppearance) do accClone.Parent = Character end OriginalAppearance = {} end end -- ФУНКЦИЯ ДЛЯ МОРФИНГА ВСЕХ ИГРОКОВ local function ApplyUgcMorphToAll(enable) local currentAssetID = Config.Morphs[Config.SelectedMorph] if enable and not currentAssetID then return end for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end local char = player.Character if not char then continue end local root = char:FindFirstChild("HumanoidRootPart") local hum = char:FindFirstChild("Humanoid") if not root or not hum then continue end if enable then for _, obj in ipairs(char:GetDescendants()) do if (obj:IsA("BasePart") or obj:IsA("Decal")) and obj.Name ~= "HumanoidRootPart" then if not obj:GetAttribute("WesterLuaMorphPart") then if not obj:GetAttribute("WesterLuaDefTrans") then obj:SetAttribute("WesterLuaDefTrans", obj.Transparency) end obj.Transparency = 1 end end end if not OriginalAppearancesAll[player.Name] then OriginalAppearancesAll[player.Name] = {} end for _, obj in ipairs(char:GetChildren()) do if obj:IsA("Accessory") and not obj:GetAttribute("WesterLuaMorphAccessory") then table.insert(OriginalAppearancesAll[player.Name], obj:Clone()) obj:Destroy() end end task.spawn(function() local success, objects = pcall(function() return game:GetObjects("rbxassetid://" .. currentAssetID) end) if success and objects and #objects > 0 then local activeMorph = char:FindFirstChild("WesterLua_Active_Morph") or Instance.new("Folder", char) activeMorph.Name = "WesterLua_Active_Morph" local loadedObj = objects[1]:Clone() loadedObj.Parent = activeMorph for _, subObj in ipairs(loadedObj:GetDescendants()) do if subObj:IsA("Humanoid") or subObj:IsA("Animator") or subObj:IsA("Script") or subObj:IsA("LocalScript") then subObj:Destroy() end end local targetPart = nil if loadedObj:IsA("Model") then targetPart = loadedObj.PrimaryPart or loadedObj:FindFirstChildOfClass("BasePart") elseif loadedObj:IsA("BasePart") then targetPart = loadedObj elseif loadedObj:IsA("Accessory") then targetPart = loadedObj:FindFirstChild("Handle") end if targetPart then targetPart.CFrame = root.CFrame local mainWeld = Instance.new("WeldConstraint", targetPart) mainWeld.Part0 = root mainWeld.Part1 = targetPart end for _, part in ipairs(loadedObj:GetDescendants()) do if part:IsA("BasePart") then part.Anchored = false part.CanCollide = false part.Massless = true part:SetAttribute("WesterLuaMorphPart", true) if part.Transparency > 0.7 then part.Transparency = 0 end end end end end) else for _, obj in ipairs(char:GetDescendants()) do if obj:IsA("BasePart") or obj:IsA("Decal") then local defTrans = obj:GetAttribute("WesterLuaDefTrans") if defTrans then obj.Transparency = defTrans end end end local activeMorph = char:FindFirstChild("WesterLua_Active_Morph") if activeMorph then activeMorph:Destroy() end if OriginalAppearancesAll[player.Name] then for _, accClone in ipairs(OriginalAppearancesAll[player.Name]) do accClone.Parent = char end OriginalAppearancesAll[player.Name] = {} end end end end if Humanoid then pcall(function() Humanoid.RequiresNeck = false end) end FindAndCacheNeck() LocalPlayer.CharacterAdded:Connect(function(newChar) IsSpawning = true; Character = newChar Humanoid = newChar:WaitForChild("Humanoid", 10) RootPart = newChar:WaitForChild("HumanoidRootPart", 10) if Humanoid then pcall(function() Humanoid.RequiresNeck = false end) end task.wait(0.5); IsSpawning = false; FindAndCacheNeck() if Config.MorphEnabled then ApplyUgcMorph(true) end end) -- ИНИЦИАЛИЗАЦИЯ ИНТЕРФЕЙСА local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "WesterLuaGuiCore" ScreenGui.ResetOnSpawn = false ScreenGui.IgnoreGuiInset = true local SafeCoreGui = nil pcall(function() SafeCoreGui = game:GetService("CoreGui") end) ScreenGui.Parent = (typeof(gethui) == "function" and gethui()) or SafeCoreGui or LocalPlayer:WaitForChild("PlayerGui") local BlurEffect = Instance.new("BlurEffect", Lighting) BlurEffect.Size = 12 BlurEffect.Enabled = true local BackgroundDim = Instance.new("Frame", ScreenGui) BackgroundDim.Size = UDim2.new(1, 0, 1, 0) BackgroundDim.BackgroundColor3 = Color3.fromRGB(0, 0, 0) BackgroundDim.BackgroundTransparency = 0.4 BackgroundDim.ZIndex = 0 local AimFOVCircle = Instance.new("Frame", ScreenGui) AimFOVCircle.AnchorPoint = Vector2.new(0.5, 0.5) AimFOVCircle.Position = UDim2.new(0.5, 0, 0.5, 0) AimFOVCircle.Size = UDim2.new(0, Config.AimbotFOV * 2, 0, Config.AimbotFOV * 2) AimFOVCircle.BackgroundTransparency = 1 Instance.new("UICorner", AimFOVCircle).CornerRadius = UDim.new(1, 0) local FOVStroke = Instance.new("UIStroke", AimFOVCircle) FOVStroke.Color = Config.FOVCircleColor; FOVStroke.Thickness = 1.5; FOVStroke.Transparency = 0.6 local Watermark = Instance.new("CanvasGroup", ScreenGui) Watermark.Name = "WesterLuaWatermark" Watermark.Size = UDim2.new(0, 210, 0, 30) Watermark.Position = UDim2.new(0, 16, 0, 16) Watermark.BackgroundColor3 = ActiveTheme.SidebarBg Instance.new("UICorner", Watermark).CornerRadius = UDim.new(0, 6) local WStroke = Instance.new("UIStroke", Watermark) WStroke.Color = ActiveTheme.Border; WStroke.Thickness = 1 local WLabel = Instance.new("TextLabel", Watermark) WLabel.Size = UDim2.new(1, 0, 1, 0) WLabel.BackgroundTransparency = 1 WLabel.Text = " WesterLua | FPS: -- | ping: 14ms" WLabel.TextColor3 = ActiveTheme.Text WLabel.Font = Enum.Font.GothamMedium WLabel.TextSize = 10.5 WLabel.TextXAlignment = Enum.TextXAlignment.Left local fpsCount = 0 RunService.RenderStepped:Connect(function(dt) fpsCount = math.round(1 / dt) end) task.spawn(function() while true do task.wait(1) WLabel.Text = string.format(" WesterLua | FPS: %s | Client: v3.2 Wallbang", tostring(fpsCount)) end end) local NotifyContainer = Instance.new("Frame", ScreenGui) NotifyContainer.Size = UDim2.new(0, 260, 1, -40) NotifyContainer.Position = UDim2.new(1, -280, 0, 20) NotifyContainer.BackgroundTransparency = 1 local NotifyLayout = Instance.new("UIListLayout", NotifyContainer) NotifyLayout.VerticalAlignment = Enum.VerticalAlignment.Bottom NotifyLayout.Padding = UDim.new(0, 8) local function ShowNotification(text, duration) local Toast = Instance.new("CanvasGroup", NotifyContainer) Toast.Size = UDim2.new(1, 0, 0, 42) Toast.BackgroundColor3 = ActiveTheme.SidebarBg Toast.GroupTransparency = 1 Instance.new("UICorner", Toast).CornerRadius = UDim.new(0, 8) local TStroke = Instance.new("UIStroke", Toast) TStroke.Color = ActiveTheme.Border; TStroke.Thickness = 1 local AccentBar = Instance.new("Frame", Toast) AccentBar.Size = UDim2.new(0, 4, 1, 0) AccentBar.BackgroundColor3 = ActiveTheme.Accent AccentBar.BorderSizePixel = 0 local Label = Instance.new("TextLabel", Toast) Label.Size = UDim2.new(1, -16, 1, 0) Label.Position = UDim2.new(0, 12, 0, 0) Label.BackgroundTransparency = 1 Label.Text = text Label.TextColor3 = ActiveTheme.Text Label.Font = Enum.Font.GothamMedium Label.TextSize = 11 Label.TextXAlignment = Enum.TextXAlignment.Left TweenService:Create(Toast, TweenInfo.new(0.25, Enum.EasingStyle.Quad), {GroupTransparency = 0}):Play() task.delay(duration or 3, function() local tw = TweenService:Create(Toast, TweenInfo.new(0.25, Enum.EasingStyle.Quad), {GroupTransparency = 1}) tw:Play() tw.Completed:Connect(function() Toast:Destroy() end) end) end local MainDashboard = Instance.new("CanvasGroup", ScreenGui) MainDashboard.Name = "WesterLuaMainDashboard" MainDashboard.Size = UDim2.new(0, 560, 0, 400) MainDashboard.Position = UDim2.new(0.5, -280, 0.5, -200) MainDashboard.BackgroundColor3 = ActiveTheme.WindowBg MainDashboard.BorderSizePixel = 0 Instance.new("UICorner", MainDashboard).CornerRadius = UDim.new(0, 14) local MasterStroke = Instance.new("UIStroke", MainDashboard) MasterStroke.Color = ActiveTheme.Border; MasterStroke.Thickness = 1.5 local MenuScale = Instance.new("UIScale", MainDashboard) local Sidebar = Instance.new("Frame", MainDashboard) Sidebar.Size = UDim2.new(0, 145, 1, 0) Sidebar.BackgroundColor3 = ActiveTheme.SidebarBg Sidebar.BorderSizePixel = 0 local SidebarLine = Instance.new("Frame", MainDashboard) SidebarLine.Size = UDim2.new(0, 1, 1, 0) SidebarLine.Position = UDim2.new(0, 145, 0, 0) SidebarLine.BackgroundColor3 = ActiveTheme.Border SidebarLine.BorderSizePixel = 0 local LogoLabel = Instance.new("TextLabel", Sidebar) LogoLabel.Size = UDim2.new(1, 0, 0, 50) LogoLabel.BackgroundTransparency = 1 LogoLabel.Text = "WESTER LUA" LogoLabel.TextColor3 = ActiveTheme.Accent LogoLabel.Font = Enum.Font.GothamBold LogoLabel.TextSize = 15 local TabContainer = Instance.new("Frame", Sidebar) TabContainer.Size = UDim2.new(1, -16, 1, -95) -- Немного уменьшили для TG-текста TabContainer.Position = UDim2.new(0, 8, 0, 55) TabContainer.BackgroundTransparency = 1 local TabLayout = Instance.new("UIListLayout", TabContainer) TabLayout.Padding = UDim.new(0, 5) -- ДОБАВЛЕНИЕ TG-КАНАЛА local TgLabel = Instance.new("TextLabel", Sidebar) TgLabel.Size = UDim2.new(1, 0, 0, 25) TgLabel.Position = UDim2.new(0, 0, 1, -30) TgLabel.BackgroundTransparency = 1 TgLabel.Text = "TG: @prostrike_2" TgLabel.TextColor3 = ActiveTheme.Accent TgLabel.Font = Enum.Font.GothamMedium TgLabel.TextSize = 11 local SearchBarFrame = Instance.new("Frame", MainDashboard) SearchBarFrame.Size = UDim2.new(1, -165, 0, 32) SearchBarFrame.Position = UDim2.new(0, 155, 0, 12) SearchBarFrame.BackgroundColor3 = ActiveTheme.SidebarBg Instance.new("UICorner", SearchBarFrame).CornerRadius = UDim.new(0, 8) local SBS = Instance.new("UIStroke", SearchBarFrame) SBS.Color = ActiveTheme.Border; SBS.Thickness = 1 local SearchIcon = Instance.new("TextLabel", SearchBarFrame) SearchIcon.Size = UDim2.new(0, 26, 1, 0) SearchIcon.BackgroundTransparency = 1 SearchIcon.Text = "🔍" SearchIcon.TextSize = 11 SearchIcon.TextColor3 = Color3.fromRGB(120, 125, 140) local SearchBox = Instance.new("TextBox", SearchBarFrame) SearchBox.Size = UDim2.new(1, -32, 1, 0) SearchBox.Position = UDim2.new(0, 26, 0, 0) SearchBox.BackgroundTransparency = 1 SearchBox.Text = "" SearchBox.PlaceholderText = "Search features..." SearchBox.PlaceholderColor3 = Color3.fromRGB(90, 95, 110) SearchBox.TextColor3 = ActiveTheme.Text SearchBox.Font = Enum.Font.Gotham SearchBox.TextSize = 11.5 SearchBox.TextXAlignment = Enum.TextXAlignment.Left local ContentArea = Instance.new("Frame", MainDashboard) ContentArea.Size = UDim2.new(1, -165, 1, -64) ContentArea.Position = UDim2.new(0, 155, 0, 52) ContentArea.BackgroundTransparency = 1 local function FilterActivePageFeatures() local text = string.lower(SearchBox.Text) for _, feature in ipairs(RegisteredFeatures) do if feature.Page == CurrentActivePage then feature.Frame.Visible = (text == "" or string.find(string.lower(feature.Title), text)) end end end SearchBox:GetPropertyChangedSignal("Text"):Connect(FilterActivePageFeatures) local function UpdateUITheme(themeName) local theme = ThemesList[themeName] if not theme then return end ActiveTheme = theme Config.CurrentTheme = themeName MainDashboard.BackgroundColor3 = theme.WindowBg Sidebar.BackgroundColor3 = theme.SidebarBg SidebarLine.BackgroundColor3 = theme.Border MasterStroke.Color = theme.Border LogoLabel.TextColor3 = theme.Accent TgLabel.TextColor3 = theme.Accent -- Обновляем цвет TG-лейбла SearchBarFrame.BackgroundColor3 = theme.SidebarBg SBS.Color = theme.Border SearchBox.TextColor3 = theme.Text Watermark.BackgroundColor3 = theme.SidebarBg WStroke.Color = theme.Border WLabel.TextColor3 = theme.Text for _, el in ipairs(MenuElements) do if el:IsA("Frame") or el:IsA("TextButton") then if el.Name == "SliderFill" or el.Name == "TglIndicator" then el.BackgroundColor3 = theme.Accent elseif el.Name == "ModuleToggle" or el.Name == "SliderTrack" or el.Name == "CycleBtn" then el.BackgroundColor3 = theme.ElementBg end end if el:IsA("TextLabel") or el:IsA("TextButton") then if el.Name == "TabButton" then el.TextColor3 = el:GetAttribute("Active") and theme.Accent or theme.Text else el.TextColor3 = theme.Text end end if el:IsA("UIGradient") then el.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, theme.Accent), ColorSequenceKeypoint.new(1, theme.AccentGlow) }) end end end local function CreateTabPage(name) local PageFrame = Instance.new("ScrollingFrame", ContentArea) PageFrame.Name = name .. "Page" PageFrame.Size = UDim2.new(1, 0, 1, 0) PageFrame.BackgroundTransparency = 1 PageFrame.Visible = false PageFrame.BorderSizePixel = 0 PageFrame.ScrollBarThickness = 0 PageFrame.CanvasSize = UDim2.new(0, 0, 0, 0) local PageLayout = Instance.new("UIListLayout", PageFrame) PageLayout.Padding = UDim.new(0, 6) PageLayout.SortOrder = Enum.SortOrder.LayoutOrder PageLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() PageFrame.CanvasSize = UDim2.new(0, 0, 0, PageLayout.AbsoluteContentSize.Y + 10) end) local TabBtn = Instance.new("TextButton", TabContainer) TabBtn.Name = "TabButton" TabBtn.Size = UDim2.new(1, 0, 0, 34) TabBtn.BackgroundColor3 = ActiveTheme.ElementBg TabBtn.BackgroundTransparency = 1 TabBtn.Text = " " .. name TabBtn.TextColor3 = ActiveTheme.Text TabBtn.Font = Enum.Font.GothamMedium TabBtn.TextSize = 12 TabBtn.TextXAlignment = Enum.TextXAlignment.Left Instance.new("UICorner", TabBtn).CornerRadius = UDim.new(0, 8) table.insert(MenuElements, TabBtn) TabButtons[name] = TabBtn PageFrames[name] = PageFrame TabBtn.MouseEnter:Connect(function() if not TabBtn:GetAttribute("Active") then TweenService:Create(TabBtn, TweenInfo.new(0.15), {BackgroundTransparency = 0.8}):Play() end end) TabBtn.MouseLeave:Connect(function() if not TabBtn:GetAttribute("Active") then TweenService:Create(TabBtn, TweenInfo.new(0.15), {BackgroundTransparency = 1}):Play() end end) TabBtn.MouseButton1Click:Connect(function() SearchBox.Text = "" CurrentActivePage = name for tName, btn in pairs(TabButtons) do btn:SetAttribute("Active", false) TweenService:Create(btn, TweenInfo.new(0.2), {BackgroundTransparency = 1, TextColor3 = ActiveTheme.Text}):Play() PageFrames[tName].Visible = false end TabBtn:SetAttribute("Active", true) TweenService:Create(TabBtn, TweenInfo.new(0.2), {BackgroundTransparency = 0.5, TextColor3 = ActiveTheme.Accent}):Play() PageFrame.Visible = true FilterActivePageFeatures() end) return PageFrame end local function AddModuleToggle(parent, title, configKey, callback) local Frame = Instance.new("Frame", parent) Frame.Name = "ModuleToggle" Frame.Size = UDim2.new(1, -6, 0, 38) Frame.BackgroundColor3 = ActiveTheme.ElementBg Instance.new("UICorner", Frame).CornerRadius = UDim.new(0, 8) table.insert(MenuElements, Frame) local Label = Instance.new("TextLabel", Frame) Label.Size = UDim2.new(1, -60, 1, 0) Label.Position = UDim2.new(0, 14, 0, 0) Label.BackgroundTransparency = 1 Label.Text = title Label.TextColor3 = ActiveTheme.Text Label.Font = Enum.Font.Gotham Label.TextSize = 11.5 Label.TextXAlignment = Enum.TextXAlignment.Left local SwitchBox = Instance.new("TextButton", Frame) SwitchBox.Size = UDim2.new(0, 36, 0, 20) SwitchBox.Position = UDim2.new(1, -48, 0.5, -10) SwitchBox.BackgroundColor3 = Config[configKey] and ActiveTheme.Accent or Color3.fromRGB(38, 41, 54) SwitchBox.Text = "" Instance.new("UICorner", SwitchBox).CornerRadius = UDim.new(1, 0) local Grad = Instance.new("UIGradient", SwitchBox) Grad.Color = ColorSequence.new(ActiveTheme.Accent, ActiveTheme.AccentGlow) Grad.Enabled = Config[configKey] table.insert(MenuElements, Grad) local Indicator = Instance.new("Frame", SwitchBox) Indicator.Name = "TglIndicator" Indicator.Size = UDim2.new(0, 14, 0, 14) Indicator.Position = Config[configKey] and UDim2.new(1, -17, 0.5, -7) or UDim2.new(0, 3, 0.5, -7) Indicator.BackgroundColor3 = Color3.fromRGB(255,255,255) Instance.new("UICorner", Indicator).CornerRadius = UDim.new(1, 0) Frame.MouseEnter:Connect(function() TweenService:Create(Frame, TweenInfo.new(0.15), {BackgroundColor3 = ActiveTheme.ElementHover}):Play() end) Frame.MouseLeave:Connect(function() TweenService:Create(Frame, TweenInfo.new(0.15), {BackgroundColor3 = ActiveTheme.ElementBg}):Play() end) SwitchBox.MouseButton1Click:Connect(function() Config[configKey] = not Config[configKey] Grad.Enabled = Config[configKey] local targetPos = Config[configKey] and UDim2.new(1, -17, 0.5, -7) or UDim2.new(0, 3, 0.5, -7) if not Config[configKey] then SwitchBox.BackgroundColor3 = Color3.fromRGB(38, 41, 54) end TweenService:Create(Indicator, TweenInfo.new(0.2, Enum.EasingStyle.Back), {Position = targetPos}):Play() ShowNotification(title .. (Config[configKey] and ": ENABLED" or ": DISABLED"), 2) if callback then callback() end end) table.insert(RegisteredFeatures, {Page = parent.Name:gsub("Page", ""), Title = title, Frame = Frame}) end local function AddModuleSlider(parent, title, configKey, min, max, isFloat, callback) local Frame = Instance.new("Frame", parent) Frame.Name = "SliderTrack" Frame.Size = UDim2.new(1, -6, 0, 48) Frame.BackgroundColor3 = ActiveTheme.ElementBg Instance.new("UICorner", Frame).CornerRadius = UDim.new(0, 8) table.insert(MenuElements, Frame) local Label = Instance.new("TextLabel", Frame) Label.Size = UDim2.new(1, -20, 0, 24) Label.Position = UDim2.new(0, 14, 0, 4) Label.BackgroundTransparency = 1 Label.Text = string.format("%s: %s", title, tostring(Config[configKey])) Label.TextColor3 = ActiveTheme.Text Label.Font = Enum.Font.Gotham Label.TextSize = 11.5 Label.TextXAlignment = Enum.TextXAlignment.Left local SliderBar = Instance.new("TextButton", Frame) SliderBar.Size = UDim2.new(1, -28, 0, 6) SliderBar.Position = UDim2.new(0, 14, 0, 32) SliderBar.BackgroundColor3 = Color3.fromRGB(38, 41, 54) SliderBar.Text = "" Instance.new("UICorner", SliderBar).CornerRadius = UDim.new(1, 0) local Fill = Instance.new("Frame", SliderBar) Fill.Name = "SliderFill" Fill.Size = UDim2.new((Config[configKey] - min) / (max - min), 0, 1, 0) Fill.BackgroundColor3 = ActiveTheme.Accent Instance.new("UICorner", Fill).CornerRadius = UDim.new(1, 0) table.insert(MenuElements, Fill) local Grad = Instance.new("UIGradient", Fill) Grad.Color = ColorSequence.new(ActiveTheme.Accent, ActiveTheme.AccentGlow) table.insert(MenuElements, Grad) Frame.MouseEnter:Connect(function() TweenService:Create(Frame, TweenInfo.new(0.15), {BackgroundColor3 = ActiveTheme.ElementHover}):Play() end) Frame.MouseLeave:Connect(function() TweenService:Create(Frame, TweenInfo.new(0.15), {BackgroundColor3 = ActiveTheme.ElementBg}):Play() end) local function update(input) local pct = math.clamp((input.Position.X - SliderBar.AbsolutePosition.X) / SliderBar.AbsoluteSize.X, 0, 1) TweenService:Create(Fill, TweenInfo.new(0.1, Enum.EasingStyle.Quad), {Size = UDim2.new(pct, 0, 1, 0)}):Play() local val = min + (pct * (max - min)) Config[configKey] = isFloat and math.round(val * 10) / 10 or math.round(val) Label.Text = string.format("%s: %s", title, tostring(Config[configKey])) if callback then callback() end end local holding = false SliderBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then holding = true; update(input) end end) UserInputService.InputChanged:Connect(function(input) if holding and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then update(input) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then holding = false end end) table.insert(RegisteredFeatures, {Page = parent.Name:gsub("Page", ""), Title = title, Frame = Frame}) end local function AddModuleCycle(parent, title, configKey, options, callback) local Btn = Instance.new("TextButton", parent) Btn.Name = "CycleBtn" Btn.Size = UDim2.new(1, -6, 0, 38) Btn.BackgroundColor3 = ActiveTheme.ElementBg Btn.Text = string.format(" %s: %s", title, tostring(Config[configKey])) Btn.TextColor3 = ActiveTheme.Text Btn.Font = Enum.Font.Gotham Btn.TextSize = 11.5 Btn.TextXAlignment = Enum.TextXAlignment.Left Instance.new("UICorner", Btn).CornerRadius = UDim.new(0, 8) table.insert(MenuElements, Btn) Btn.MouseEnter:Connect(function() TweenService:Create(Btn, TweenInfo.new(0.15), {BackgroundColor3 = ActiveTheme.ElementHover}):Play() end) Btn.MouseLeave:Connect(function() TweenService:Create(Btn, TweenInfo.new(0.15), {BackgroundColor3 = ActiveTheme.ElementBg}):Play() end) Btn.MouseButton1Click:Connect(function() local currentIndex = table.find(options, Config[configKey]) or 1 local nextIndex = currentIndex % #options + 1 Config[configKey] = options[nextIndex] Btn.Text = string.format(" %s: %s", title, tostring(Config[configKey])) if callback then callback() end end) table.insert(RegisteredFeatures, {Page = parent.Name:gsub("Page", ""), Title = title, Frame = Btn}) end local CombatCol = CreateTabPage("Combat") local MoveCol = CreateTabPage("Movement") local RenderCol = CreateTabPage("Render") local PlayerCol = CreateTabPage("Player") local MiscCol = CreateTabPage("Misc") local ThemesCol = CreateTabPage("UI Themes") local dragging, dragStart, startPos Sidebar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true; dragStart = input.Position; startPos = MainDashboard.Position end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local delta = input.Position - dragStart MainDashboard.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) AddModuleToggle(CombatCol, "Auto Trigger Wallbang", "AutoTriggerEnabled", function() if not Config.AutoTriggerEnabled and LockedTargetCharacter then local root = LockedTargetCharacter:FindFirstChild("HumanoidRootPart") if root then root.Anchored = false end LockedTargetCharacter = nil end end) AddModuleCycle(CombatCol, "Trigger Body Part", "AutoTriggerTarget", {"Head", "Torso", "Head & Torso"}) AddModuleSlider(CombatCol, "Teleport Distance", "AutoTriggerDistance", 5, 50, false) AddModuleToggle(CombatCol, "Aimbot Assist", "AimbotEnabled") AddModuleToggle(CombatCol, "Raycast WallCheck", "WallCheck") AddModuleToggle(CombatCol, "Draw FOV Scope", "FOVCircleVisible") AddModuleSlider(CombatCol, "FOV Range", "AimbotFOV", 40, 350, false) AddModuleSlider(CombatCol, "Smooth Sync", "AimbotSmoothness", 0.1, 1.0, true) AddModuleToggle(MoveCol, "Speed Multiplier", "SpeedEnabled") AddModuleSlider(MoveCol, "Speed Scale", "SpeedMultiplier", 1.5, 8.0, true) AddModuleToggle(MoveCol, "Parkour WallHop", "WallHopEnabled") AddModuleToggle(MoveCol, "Noclip Flight", "FlyEnabled") AddModuleSlider(MoveCol, "Fly Velocity", "FlySpeed", 30, 200, false) AddModuleToggle(RenderCol, "Purple Glass ESP", "ChamsEsp") AddModuleToggle(RenderCol, "Stealth ESP (Wallhack)", "StealthESP") AddModuleToggle(RenderCol, "Enemy HP Bar", "HealthBarEsp") AddModuleSlider(RenderCol, "Hitbox Head", "HeadSize", 2, 67, false) AddModuleToggle(RenderCol, "Sahur Beat Pulse", "SahurPulse") AddModuleSlider(RenderCol, "Camera FOV", "CameraFOV", 60, 120, false) AddModuleToggle(RenderCol, "Arms Effect", "ArmsChamsEnabled", function() for _, obj in ipairs(workspace:GetDescendants()) do ApplyArmsLogic(obj) end for _, obj in ipairs(Camera:GetDescendants()) do ApplyArmsLogic(obj) end end) AddModuleCycle(RenderCol, "Arms Color Source", "ArmsColorSource", ArmsColorOptions, function() for _, obj in ipairs(workspace:GetDescendants()) do ApplyArmsLogic(obj) end for _, obj in ipairs(Camera:GetDescendants()) do ApplyArmsLogic(obj) end end) AddModuleToggle(RenderCol, "Map Coloring", "MapColorEnabled", function() UpdateMapColor() end) AddModuleCycle(RenderCol, "Map Color", "SelectedMapColor", {"Red", "Green", "Blue", "Cyan", "Magenta", "Yellow", "Purple", "Black", "White"}, function() UpdateMapColor() end) local function UpdateSkybox() for _, child in ipairs(Lighting:GetChildren()) do if child:IsA("Sky") and child:GetAttribute("WesterLuaCustomSky") then child:Destroy() end end if Config.SkyChangerEnabled then local textures = SkyboxPresets[Config.SelectedSky] if textures then local customSky = Instance.new("Sky") customSky.Name = "WesterLua_Custom_Sky" customSky:SetAttribute("WesterLuaCustomSky", true) customSky.SkyboxBk = textures.SkyboxBk; customSky.SkyboxDn = textures.SkyboxDn; customSky.SkyboxFt = textures.SkyboxFt customSky.SkyboxLf = textures.SkyboxLf; customSky.SkyboxRt = textures.SkyboxRt; customSky.SkyboxUp = textures.SkyboxUp customSky.SunVisible = false; customSky.MoonVisible = false customSky.Parent = Lighting end end end AddModuleToggle(RenderCol, "Sky Changer", "SkyChangerEnabled", UpdateSkybox) AddModuleCycle(RenderCol, "Select Sky", "SelectedSky", SkyOptions, UpdateSkybox) AddModuleToggle(PlayerCol, "Override View", "ThirdPersonEnabled") AddModuleSlider(PlayerCol, "Cam Dist", "ThirdPersonDistance", 5, 100, false) AddModuleToggle(PlayerCol, "Activate Morph", "MorphEnabled", function() ApplyUgcMorph(Config.MorphEnabled) end) AddModuleToggle(PlayerCol, "Morph All Players", "MorphAllEnabled", function() ApplyUgcMorphToAll(Config.MorphAllEnabled) end) AddModuleCycle(PlayerCol, "Model", "SelectedMorph", {"Tun Tun Sahur", "Житель (Minecraft)"}, function() if Config.MorphEnabled then ApplyUgcMorph(false); task.wait(0.05); ApplyUgcMorph(true) end if Config.MorphAllEnabled then ApplyUgcMorphToAll(false); task.wait(0.05); ApplyUgcMorphToAll(true) end end) AddModuleToggle(MiscCol, "Enable Anti-Aim", "AntiAimEnabled") AddModuleCycle(MiscCol, "AA Pitch", "AntiAimPitch", {"Off", "Down", "Up", "Fake Down"}) AddModuleCycle(MiscCol, "AA Yaw", "AntiAimYaw", {"Off", "Static", "Spin", "Jitter", "Sway", "Freestanding"}) AddModuleCycle(ThemesCol, "Select Preset", "CurrentTheme", {"Midnight", "Dark Cherry", "Emerald", "Toxic Vapor"}, function() UpdateUITheme(Config.CurrentTheme) end) local TopControlsFrame = Instance.new("Frame", ScreenGui) TopControlsFrame.Size = UDim2.new(0, 150, 0, 36) TopControlsFrame.Position = UDim2.new(0.5, -75, 0, 12) TopControlsFrame.BackgroundTransparency = 1 local MasterToggleBtn = Instance.new("TextButton", TopControlsFrame) MasterToggleBtn.Size = UDim2.new(1, 0, 1, 0) MasterToggleBtn.BackgroundColor3 = ActiveTheme.SidebarBg MasterToggleBtn.Text = "CLOSE MENU" MasterToggleBtn.TextColor3 = Color3.fromRGB(255,255,255) MasterToggleBtn.Font = Enum.Font.GothamMedium MasterToggleBtn.TextSize = 11 Instance.new("UICorner", MasterToggleBtn).CornerRadius = UDim.new(0, 8) local BtnStroke = Instance.new("UIStroke", MasterToggleBtn) BtnStroke.Color = ActiveTheme.Border; BtnStroke.Thickness = 1 local FadeAnimationActive = false local function ToggleEntireMenu() if FadeAnimationActive then return end FadeAnimationActive = true Config.MenuVisible = not Config.MenuVisible MasterToggleBtn.Text = Config.MenuVisible and "CLOSE MENU" or "OPEN MENU" local targetTransparency = Config.MenuVisible and 0 or 1 local targetScale = Config.MenuVisible and 1 or 0.88 local targetDim = Config.MenuVisible and 0.4 or 1 local targetBlur = Config.MenuVisible and 12 or 0 if Config.MenuVisible then BackgroundDim.Visible = true; BlurEffect.Enabled = true; MainDashboard.Visible = true; Watermark.Visible = true end TweenService:Create(BlurEffect, TweenInfo.new(0.25, Enum.EasingStyle.Quad), {Size = targetBlur}):Play() TweenService:Create(BackgroundDim, TweenInfo.new(0.25, Enum.EasingStyle.Quad), {BackgroundTransparency = targetDim}):Play() TweenService:Create(MenuScale, TweenInfo.new(0.25, Enum.EasingStyle.Back), {Scale = targetScale}):Play() local mainTween = TweenService:Create(MainDashboard, TweenInfo.new(0.25, Enum.EasingStyle.Quad), {GroupTransparency = targetTransparency}) mainTween:Play() mainTween.Completed:Connect(function() if not Config.MenuVisible then BackgroundDim.Visible = false; BlurEffect.Enabled = false; MainDashboard.Visible = false; Watermark.Visible = false end FadeAnimationActive = false end) end MasterToggleBtn.MouseButton1Click:Connect(ToggleEntireMenu) UserInputService.InputBegan:Connect(function(input, gp) if not gp and input.KeyCode == Enum.KeyCode.Insert then ToggleEntireMenu() end end) TabButtons["Combat"].BackgroundTransparency = 0.5 TabButtons["Combat"].TextColor3 = ActiveTheme.Accent PageFrames["Combat"].Visible = true UpdateUITheme(Config.CurrentTheme) ShowNotification("WESTER LUA LOADED SUCCESFULLY", 3.5) function ApplyArmsLogic(obj) if not obj or not obj:IsA("BasePart") then return false end local nameLower = obj.Name:lower() local parentNameLower = obj.Parent and obj.Parent.Name:lower() or "" local isArmOrViewModel = obj:IsDescendantOf(Camera) or nameLower:find("arm") or nameLower:find("hand") or nameLower:find("viewmodel") or parentNameLower:find("viewmodel") if isArmOrViewModel and obj.Name ~= "HumanoidRootPart" then if not obj:GetAttribute("WesterLuaOrigColor") then obj:SetAttribute("WesterLuaOrigColor", obj.Color) end if not obj:GetAttribute("WesterLuaOrigTrans") then obj:SetAttribute("WesterLuaOrigTrans", obj.Transparency) end if Config.ArmsChamsEnabled then obj.Transparency = 0.35 if Config.ArmsColorSource == "Link to Map" then obj.Color = Config.MapColorEnabled and (Palette[Config.SelectedMapColor] or Color3.fromRGB(255,255,255)) or obj:GetAttribute("WesterLuaOrigColor") elseif Config.ArmsColorSource:find("Custom") then obj.Color = Palette[Config.ArmsColorSource:gsub("Custom ", "")] or Color3.fromRGB(255,255,255) end else obj.Color = obj:GetAttribute("WesterLuaOrigColor") or obj.Color obj.Transparency = obj:GetAttribute("WesterLuaOrigTrans") or obj.Transparency end return true end return false end workspace.DescendantAdded:Connect(function(obj) task.wait(0.02); ApplyArmsLogic(obj) end) Camera.DescendantAdded:Connect(function(obj) task.wait(0.02); ApplyArmsLogic(obj) end) local MapColorConnection = nil function UpdateMapColor() if Config.MapColorEnabled then local targetColor = Palette[Config.SelectedMapColor] or Color3.fromRGB(255, 255, 255) for _, o in ipairs(workspace:GetDescendants()) do ApplyArmsLogic(o) end if not MapColorConnection then MapColorConnection = workspace.DescendantAdded:Connect(function(obj) task.wait(0.05) if not obj or not obj.Parent or obj:IsDescendantOf(Camera) or obj.Name:lower():find("arm") or obj:IsDescendantOf(ChamsStorage) then return end if obj:IsA("BasePart") and obj.Name ~= "HumanoidRootPart" and obj.Name ~= "Terrain" then obj:SetAttribute("WesterLuaOrigColor", obj.Color) obj.Color = Palette[Config.SelectedMapColor] end end) end for _, obj in ipairs(workspace:GetDescendants()) do if obj:IsA("BasePart") and obj.Name ~= "HumanoidRootPart" and not obj:IsDescendantOf(ChamsStorage) and obj.Name ~= "Terrain" and not obj:IsDescendantOf(Camera) and not obj:IsDescendantOf(Camera) and not obj.Name:lower():find("arm") then if not obj:GetAttribute("WesterLuaOrigColor") then obj:SetAttribute("WesterLuaOrigColor", obj.Color) end obj.Color = targetColor end end else if MapColorConnection then MapColorConnection:Disconnect(); MapColorConnection = nil end for _, obj in ipairs(workspace:GetDescendants()) do if obj:IsA("BasePart") then local orig = obj:GetAttribute("WesterLuaOrigColor") if orig then obj.Color = orig; obj:SetAttribute("WesterLuaOrigColor", nil) end end end end end local function isPlayerVisible(targetHead, targetCharacter) local raycastParams = RaycastParams.new() raycastParams.FilterDescendantsInstances = {Character, Camera} raycastParams.FilterType = Enum.RaycastFilterType.Exclude local res = workspace:Raycast(Camera.CFrame.Position, targetHead.Position - Camera.CFrame.Position, raycastParams) return not res or res.Instance:IsDescendantOf(targetCharacter) end local function getClosestPlayerInFOV() local closestPlayer = nil; local shortestDistance = Config.AimbotFOV local screenCenter = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("Head") and p.Character:FindFirstChild("Humanoid") and p.Character.Humanoid.Health > 0 then local vector, onScreen = Camera:WorldToViewportPoint(p.Character.Head.Position) if onScreen then local dist = (Vector2.new(vector.X, vector.Y) - screenCenter).Magnitude if dist < shortestDistance and (not Config.WallCheck or isPlayerVisible(p.Character.Head, p.Character)) then closestPlayer = p; shortestDistance = dist end end end end return closestPlayer end local function GetFreestandingYaw(rootPart) if not rootPart then return 0 end local maxOpenDistance = -1; local openSpaceDirection = Vector3.new(0, 0, 1) local raycastParams = RaycastParams.new() raycastParams.FilterType = Enum.RaycastFilterType.Exclude if rootPart.Parent then raycastParams.FilterDescendantsInstances = {rootPart.Parent, ChamsStorage} end for i = 1, 8 do local angle = (i - 1) * (math.pi * 2 / 8) local sendDirection = Vector3.new(math.sin(angle), 0, math.cos(angle)) local res = workspace:Raycast(rootPart.Position, sendDirection * 30, raycastParams) local dist = res and (res.Position - rootPart.Position).Magnitude or 30 if dist > maxOpenDistance then maxOpenDistance = dist; openSpaceDirection = sendDirection end end return math.atan2(openSpaceDirection.X, openSpaceDirection.Z) + math.pi end local function GetCharacterUnderCrosshair() local centerMouse = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) local unitRay = Camera:ViewportPointToRay(centerMouse.X, centerMouse.Y) local enemyCharacters = {} for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer and p.Character then table.insert(enemyCharacters, p.Character) end end if #enemyCharacters == 0 then return nil end local params = RaycastParams.new() params.FilterDescendantsInstances = enemyCharacters params.FilterType = Enum.RaycastFilterType.Include local result = workspace:Raycast(unitRay.Origin, unitRay.Direction * 1000, params) if result and result.Instance then local hitPart = result.Instance local hitParent = hitPart.Parent local hum = hitParent and hitParent:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 then local pName = hitPart.Name local validTarget = false if Config.AutoTriggerTarget == "Head" and pName == "Head" then validTarget = true elseif Config.AutoTriggerTarget == "Torso" and (pName == "Torso" or pName == "UpperTorso" or pName == "LowerTorso") then validTarget = true elseif Config.AutoTriggerTarget == "Head & Torso" and (pName == "Head" or pName == "Torso" or pName == "UpperTorso" or pName == "LowerTorso") then validTarget = true end if validTarget then return hitParent end end end return nil end task.spawn(function() while true do task.wait(0.25) for _, player in ipairs(Players:GetPlayers()) do if player.Character then local humanoid = player.Character:FindFirstChild("Humanoid") local head = player.Character:FindFirstChild("Head") -- ИГНОРИРОВАТЬ СЕБЯ if player == LocalPlayer then local localHl = ChamsStorage:FindFirstChild(player.Name .. "_WesterLuaChams") if localHl then localHl:Destroy() end continue end local isAlive = humanoid and humanoid.Health > 0 local nameTag = "_WesterLuaChams" local hl = ChamsStorage:FindFirstChild(player.Name .. nameTag) -- ЛОГИКА ESP И STEALTH ESP if isAlive and (Config.ChamsEsp or Config.StealthESP) then if not hl then hl = Instance.new("Highlight", ChamsStorage); hl.Name = player.Name .. nameTag end hl.Adornee = player.Character hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop if Config.StealthESP then hl.FillTransparency = 1 hl.OutlineTransparency = 0.2 hl.OutlineColor = Color3.fromRGB(255, 255, 255) else hl.FillColor = Color3.fromRGB(152, 115, 255) hl.OutlineColor = Color3.fromRGB(215, 195, 255) hl.FillTransparency = 0.55 hl.OutlineTransparency = 0.2 end else if hl then hl:Destroy() end end -- ЛОГИКА ПОЛОСКИ ЗДОРОВЬЯ (HP BAR) if head and head:IsA("BasePart") then local hpTag = "WesterLua_HPBar" local hpGui = head:FindFirstChild(hpTag) if isAlive and Config.HealthBarEsp then if not hpGui then hpGui = Instance.new("BillboardGui") hpGui.Name = hpTag hpGui.Adornee = head hpGui.Parent = head hpGui.Size = UDim2.new(4, 0, 0.4, 0) hpGui.StudsOffset = Vector3.new(0, 2.5, 0) hpGui.AlwaysOnTop = true local bgFrame = Instance.new("Frame", hpGui) bgFrame.Name = "BG" bgFrame.Size = UDim2.new(1, 0, 1, 0) bgFrame.BackgroundColor3 = Color3.fromRGB(0, 0, 0) bgFrame.BorderSizePixel = 1 bgFrame.BorderColor3 = Color3.fromRGB(0, 0, 0) local hpFrame = Instance.new("Frame", bgFrame) hpFrame.Name = "HP" hpFrame.Size = UDim2.new(1, 0, 1, 0) hpFrame.BackgroundColor3 = Color3.fromRGB(0, 255, 0) hpFrame.BorderSizePixel = 0 end local maxHp = humanoid.MaxHealth if maxHp > 0 then local fraction = math.clamp(humanoid.Health / maxHp, 0, 1) hpGui.BG.HP.Size = UDim2.new(fraction, 0, 1, 0) hpGui.BG.HP.BackgroundColor3 = fraction < 0.3 and Color3.fromRGB(255, 0, 0) or Color3.fromRGB(0, 255, 0) end else if hpGui then hpGui:Destroy() end end -- ХИТБОКСЫ if not head:GetAttribute("WesterLua_OrigSize") then head:SetAttribute("WesterLua_OrigSize", head.Size) end if Config.HeadSize > 2 and isAlive then head.Size = Vector3.new(Config.HeadSize, Config.HeadSize, Config.HeadSize) head.Transparency = 0.5; head.CanCollide = false; head.Massless = true else local origSize = head:GetAttribute("WesterLua_OrigSize") if origSize then head.Size = origSize end head.Transparency = 0; head.CanCollide = true; head.Massless = false end end end end end end) RunService.Heartbeat:Connect(function(deltaTime) if IsSpawning then return end AimFOVCircle.Visible = Config.FOVCircleVisible if Config.AutoTriggerEnabled then if not LockedTargetCharacter then local targetChar = GetCharacterUnderCrosshair() if targetChar then LockedTargetCharacter = targetChar ShowNotification("WALLBANG TARGET LOCKED", 2) end end if LockedTargetCharacter then local targetRoot = LockedTargetCharacter:FindFirstChild("HumanoidRootPart") local targetHum = LockedTargetCharacter:FindFirstChildOfClass("Humanoid") if targetRoot and targetHum and targetHum.Health > 0 then targetRoot.Anchored = true local targetPos = Camera.CFrame.Position + (Camera.CFrame.LookVector * Config.AutoTriggerDistance) targetRoot.CFrame = targetRoot.CFrame:Lerp(CFrame.new(targetPos, Camera.CFrame.Position), 0.35) else LockedTargetCharacter = nil end end else if LockedTargetCharacter then local root = LockedTargetCharacter:FindFirstChild("HumanoidRootPart") if root then root.Anchored = false end LockedTargetCharacter = nil end end if Humanoid and Humanoid.Health > 0 then local isAirborne = Humanoid.FloorMaterial == Enum.Material.Air if Config.SpeedEnabled and isAirborne and Humanoid.MoveDirection.Magnitude > 0 and RootPart then RootPart.CFrame = RootPart.CFrame + (Humanoid.MoveDirection * (Config.SpeedMultiplier * 0.12)) end end if Config.SahurPulse then Camera.FieldOfView = Config.CameraFOV + (math.abs(math.sin(os.clock() * 9.5)) * 7.5) else Camera.FieldOfView = Config.CameraFOV end if Config.ThirdPersonEnabled then LocalPlayer.CameraMode = Enum.CameraMode.Classic LocalPlayer.CameraMaxZoomDistance = Config.ThirdPersonDistance; LocalPlayer.CameraMinZoomDistance = Config.ThirdPersonDistance else LocalPlayer.CameraMaxZoomDistance = 400; LocalPlayer.CameraMinZoomDistance = 0.5 end if Config.AntiAimEnabled and RootPart and Humanoid and Humanoid.Health > 0 then Humanoid.AutoRotate = false local yawAngle = math.atan2(Camera.CFrame.LookVector.X, Camera.CFrame.LookVector.Z) local targetYaw = yawAngle if Config.AntiAimYaw == "Static" then targetYaw = yawAngle + math.pi elseif Config.AntiAimYaw == "Spin" then SpinAngle = (SpinAngle + deltaTime * 52) % (math.pi * 2); targetYaw = SpinAngle elseif Config.AntiAimYaw == "Jitter" then targetYaw = yawAngle + math.pi + ((math.random() > 0.5 and 1 or -1) * math.rad(45)) elseif Config.AntiAimYaw == "Sway" then targetYaw = yawAngle + math.pi + math.sin(os.clock() * 11) * math.rad(45) elseif Config.AntiAimYaw == "Freestanding" then targetYaw = GetFreestandingYaw(RootPart) end if Config.AntiAimYaw ~= "Off" then RootPart.CFrame = CFrame.new(RootPart.Position) * CFrame.Angles(0, targetYaw, 0) end if MainNeck and NeckOriginC0 then if Config.AntiAimPitch == "Down" then MainNeck.C0 = NeckOriginC0 * CFrame.Angles(math.rad(-85), 0, 0) elseif Config.AntiAimPitch == "Up" then MainNeck.C0 = NeckOriginC0 * CFrame.Angles(math.rad(85), 0, 0) elseif Config.AntiAimPitch == "Fake Down" then MainNeck.C0 = NeckOriginC0; RootPart.AssemblyLinearVelocity = Vector3.new(RootPart.AssemblyLinearVelocity.X, math.sin(os.clock() * 60) * 12, RootPart.AssemblyLinearVelocity.Z) elseif Config.AntiAimPitch == "Off" then MainNeck.C0 = NeckOriginC0 end else FindAndCacheNeck() end else if Humanoid then Humanoid.AutoRotate = true end if MainNeck and NeckOriginC0 then MainNeck.C0 = NeckOriginC0 end end if Config.AimbotEnabled then local target = getClosestPlayerInFOV() if target and target.Character and target.Character:FindFirstChild("Head") then Camera.CFrame = Camera.CFrame:Lerp(CFrame.new(Camera.CFrame.Position, target.Character.Head.Position), Config.AimbotSmoothness) end end end)