
KeylessUniversal

-- [[ 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)No comments yet for this script.

![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/sb/0-1753093706828.png)

