local CoreGui = game:GetService("CoreGui") local UserInputService = game:GetService("UserInputService") local Players = game:GetService("Players") local Lighting = game:GetService("Lighting") local Workspace = game:GetService("Workspace") local RunService = game:GetService("RunService") local VirtualInputManager = game:GetService("VirtualInputManager") local player = Players.LocalPlayer if CoreGui:FindFirstChild("UnifiedCityMenu") then CoreGui.UnifiedCityMenu:Destroy() end pcall(function() if gethui and gethui():FindFirstChild("UnifiedCityMenu") then gethui().UnifiedCityMenu:Destroy() end end) local isUnloaded = false local searchRadius = 200 local screenGui = Instance.new("ScreenGui") screenGui.Name = "UnifiedCityMenu" screenGui.ResetOnSpawn = false screenGui.IgnoreGuiInset = true screenGui.DisplayOrder = 999 pcall(function() if gethui then screenGui.Parent = gethui() else screenGui.Parent = CoreGui end end) if not screenGui.Parent then screenGui.Parent = CoreGui end -- AD BANNER (15s timer on copy link, GUI blocked until ad passes) local adFrame = Instance.new("Frame") adFrame.Name = "AdFrame" adFrame.Size = UDim2.new(0, 340, 0, 190) adFrame.Position = UDim2.new(0.5, -170, 0.5, -95) adFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35) adFrame.BorderSizePixel = 1 adFrame.BorderColor3 = Color3.fromRGB(60, 60, 60) adFrame.Active = true adFrame.Draggable = true adFrame.Parent = screenGui local adChannelTitle = Instance.new("TextLabel") adChannelTitle.Size = UDim2.new(1, 0, 0, 30) adChannelTitle.BackgroundTransparency = 1 adChannelTitle.Text = "t.me/NebulaScriptFree" adChannelTitle.TextColor3 = Color3.fromRGB(100, 200, 255) adChannelTitle.Font = Enum.Font.SourceSansBold adChannelTitle.TextSize = 16 adChannelTitle.Parent = adFrame local adText1 = Instance.new("TextLabel") adText1.Size = UDim2.new(1, -20, 0, 22) adText1.Position = UDim2.new(0, 10, 0, 35) adText1.BackgroundTransparency = 1 adText1.Text = "Делаю скрипты по запросам подписчиков:" adText1.TextColor3 = Color3.fromRGB(240, 240, 240) adText1.Font = Enum.Font.SourceSansBold adText1.TextSize = 13 adText1.Parent = adFrame local adText2 = Instance.new("TextLabel") adText2.Size = UDim2.new(1, -20, 0, 20) adText2.Position = UDim2.new(0, 10, 0, 58) adText2.BackgroundTransparency = 1 adText2.Text = "I make scripts upon subscribers' requests:" adText2.TextColor3 = Color3.fromRGB(180, 180, 180) adText2.Font = Enum.Font.SourceSans adText2.TextSize = 12 adText2.Parent = adFrame local copyBtn = Instance.new("TextButton") copyBtn.Size = UDim2.new(1, -40, 0, 34) copyBtn.Position = UDim2.new(0, 20, 0, 85) copyBtn.BackgroundColor3 = Color3.fromRGB(60, 120, 180) copyBtn.TextColor3 = Color3.fromRGB(255, 255, 255) copyBtn.Font = Enum.Font.SourceSansBold copyBtn.TextSize = 13 copyBtn.Text = "Копировать ссылку / Copy Link" copyBtn.Parent = adFrame local timerLabel = Instance.new("TextLabel") timerLabel.Size = UDim2.new(1, 0, 0, 25) timerLabel.Position = UDim2.new(0, 0, 0, 130) timerLabel.BackgroundTransparency = 1 timerLabel.Text = "Нажмите для запуска рекламы (15 сек)" timerLabel.TextColor3 = Color3.fromRGB(220, 220, 100) timerLabel.Font = Enum.Font.SourceSansBold timerLabel.TextSize = 12 timerLabel.Parent = adFrame local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame" mainFrame.Size = UDim2.new(0, 220, 0, 320) mainFrame.Position = UDim2.new(0.5, -110, 0.5, -160) mainFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 45) mainFrame.BorderSizePixel = 1 mainFrame.BorderColor3 = Color3.fromRGB(20, 20, 20) mainFrame.Active = true mainFrame.Draggable = true mainFrame.Visible = false -- GUI не запустится пока не пройдет реклама mainFrame.Parent = screenGui local timerStarted = false copyBtn.MouseButton1Click:Connect(function() pcall(function() if setclipboard then setclipboard("t.me/NebulaScriptFree") elseif toclipboard then toclipboard("t.me/NebulaScriptFree") end end) if not timerStarted then timerStarted = true copyBtn.BackgroundColor3 = Color3.fromRGB(80, 80, 80) copyBtn.Text = "Ссылка скопирована!" task.spawn(function() for i = 15, 1, -1 do timerLabel.Text = "Осталось ждать: " .. i .. " сек." task.wait(1) end timerLabel.Text = "Реклама пройдена!" task.wait(0.5) adFrame:Destroy() mainFrame.Visible = true end) end end) local layout = Instance.new("UIListLayout") layout.Parent = mainFrame layout.SortOrder = Enum.SortOrder.LayoutOrder layout.Padding = UDim.new(0, 5) layout.HorizontalAlignment = Enum.HorizontalAlignment.Center layout.VerticalAlignment = Enum.VerticalAlignment.Center -- Добавлен t.me/NebulaScriptFree в верхней части меню local topChannelLabel = Instance.new("TextLabel") topChannelLabel.Size = UDim2.new(0, 190, 0, 24) topChannelLabel.BackgroundColor3 = Color3.fromRGB(35, 35, 35) topChannelLabel.TextColor3 = Color3.fromRGB(100, 200, 255) topChannelLabel.Font = Enum.Font.SourceSansBold topChannelLabel.TextSize = 13 topChannelLabel.Text = "t.me/NebulaScriptFree" topChannelLabel.LayoutOrder = 0 topChannelLabel.Parent = mainFrame local radiusFrame = Instance.new("Frame") radiusFrame.Size = UDim2.new(0, 190, 0, 28) radiusFrame.BackgroundColor3 = Color3.fromRGB(55, 55, 55) radiusFrame.BorderSizePixel = 0 radiusFrame.LayoutOrder = 1 radiusFrame.Parent = mainFrame local btnRadiusMinus = Instance.new("TextButton") btnRadiusMinus.Size = UDim2.new(0, 35, 1, 0) btnRadiusMinus.Position = UDim2.new(0, 0, 0, 0) btnRadiusMinus.BackgroundColor3 = Color3.fromRGB(75, 75, 75) btnRadiusMinus.Text = "-50" btnRadiusMinus.TextColor3 = Color3.fromRGB(255, 255, 255) btnRadiusMinus.Font = Enum.Font.SourceSansBold btnRadiusMinus.TextSize = 12 btnRadiusMinus.Parent = radiusFrame local radiusLabel = Instance.new("TextLabel") radiusLabel.Size = UDim2.new(0, 120, 1, 0) radiusLabel.Position = UDim2.new(0, 35, 0, 0) radiusLabel.BackgroundTransparency = 1 radiusLabel.Text = "Радиус: " .. searchRadius radiusLabel.TextColor3 = Color3.fromRGB(220, 220, 220) radiusLabel.Font = Enum.Font.SourceSansBold radiusLabel.TextSize = 13 radiusLabel.Parent = radiusFrame local btnRadiusPlus = Instance.new("TextButton") btnRadiusPlus.Size = UDim2.new(0, 35, 1, 0) btnRadiusPlus.Position = UDim2.new(1, -35, 0, 0) btnRadiusPlus.BackgroundColor3 = Color3.fromRGB(75, 75, 75) btnRadiusPlus.Text = "+50" btnRadiusPlus.TextColor3 = Color3.fromRGB(255, 255, 255) btnRadiusPlus.Font = Enum.Font.SourceSansBold btnRadiusPlus.TextSize = 12 btnRadiusPlus.Parent = radiusFrame btnRadiusMinus.MouseButton1Click:Connect(function() searchRadius = math.max(50, searchRadius - 50) radiusLabel.Text = "Радиус: " .. searchRadius end) btnRadiusPlus.MouseButton1Click:Connect(function() searchRadius = math.min(1000, searchRadius + 50) radiusLabel.Text = "Радиус: " .. searchRadius end) local espEnabled = false local itemEspEnabled = false local camNoclipEnabled = false local fullbrightEnabled = false local origOcclusion = player.DevCameraOcclusionMode local origBrightness = Lighting.Brightness local origShadows = Lighting.GlobalShadows local origOutdoorAmbient = Lighting.OutdoorAmbient local activeNpcEsps = {} local activeItemEsps = {} local camNoclipConn = nil local translationMap = { ["medkit"] = "Аптечка", ["med kit"] = "Аптечка", ["bandage"] = "Бинт", ["painkillers"] = "Обезболивающее", ["aseptic"] = "Асептический бинт", ["firstaid"] = "Аптечка", ["syringe"] = "Шприц", ["pills"] = "Таблетки", ["food"] = "Еда", ["apple"] = "Яблоко", ["burger"] = "Бургер", ["drink"] = "Напиток", ["flashlight"] = "Фонарик", ["key"] = "Ключ", ["lockpick"] = "Отмычка", ["armor"] = "Броня", ["helmet"] = "Шлем", ["vest"] = "Жилет", ["bodyarmor"] = "Бронежилет", ["shield"] = "Щит", ["chestplate"] = "Нагрудник", ["kevlar"] = "Кевлар", ["hat"] = "Каска/Шапка", ["mask"] = "Маска", ["boots"] = "Берцы", ["gloves"] = "Перчатки", ["plate"] = "Пластина", ["knife"] = "Нож", ["bat"] = "Бита", ["crowbar"] = "Монтировка", ["sword"] = "Меч", ["axe"] = "Топор", ["hammer"] = "Молоток", ["spear"] = "Копье", ["machete"] = "Мачете", ["katana"] = "Катана", ["dagger"] = "Кинжал", ["pipe"] = "Труба", ["shank"] = "Заточка", ["cleaver"] = "Тесак", ["stick"] = "Палка", ["club"] = "Дубинка", ["pistol"] = "Пистолет", ["shotgun"] = "Дробовик", ["rifle"] = "Винтовка", ["revolver"] = "Револьвер", ["ak47"] = "АК-47", ["m4a1"] = "M4A1", ["glock"] = "Глок", ["deagle"] = "Дигл", ["uzi"] = "Узи", ["mp5"] = "MP5", ["sniper"] = "Снайперка", ["weapon"] = "Оружие", ["gun"] = "Пушка", ["ammo"] = "Патроны", ["bullets"] = "Патроны", ["magazine"] = "Магазин", ["mag"] = "Магазин", ["shell"] = "Гильзы/Дробь", ["round"] = "Патрон", ["9mm"] = "Патроны 9мм", ["556"] = "Патроны 5.56", ["762"] = "Патроны 7.62", ["phone"] = "Телефон", ["smartphone"] = "Смартфон", ["tablet"] = "Планшет", ["ipad"] = "Планшет", ["lavalamp"] = "Лавовая лампа", ["lava lamp"] = "Лавовая лампа", ["lava_lamp"] = "Лавовая лампа", ["vase"] = "Ваза", ["perfume"] = "Духи", ["small perfume"] = "Маленький парфюм", ["large perfume"] = "Большой парфюм", ["cologne"] = "Парфюм", ["fragrance"] = "Парфюм", ["radio"] = "Радио", ["camera"] = "Камера", ["laptop"] = "Ноутбук", ["tv"] = "Телевизор", ["bottle"] = "Бутылка" } local meleeKeywords = {"knife", "bat", "crowbar", "sword", "blade", "axe", "hammer", "spear", "machete", "katana", "dagger", "pipe", "shank", "cleaver", "stick", "club", "нож", "бита", "топор", "меч", "монтировка"} local gunKeywords = {"pistol", "shotgun", "rifle", "revolver", "ak47", "m4a1", "gun", "sniper", "smg", "glock", "deagle", "uzi", "mp5", "ar15", "carbine", "weapon", "blaster", "musket", "пистолет", "винтовка", "дробовик", "пушка"} local ammoKeywords = {"ammo", "bullets", "shell", "magazine", "mag", "round", "9mm", "762", "556", "12gauge", "buckshot", "cartridge", "патроны", "обойма", "гильза"} local gadgetKeywords = {"phone", "tablet", "lavalamp", "lava lamp", "lava_lamp", "vase", "perfume", "fragrance", "cologne", "electronics", "device", "camera", "radio", "laptop", "tv", "bottle", "телефон", "планшет", "лавовая", "ваза", "духи", "парфюм"} local miscKeywords = {"armor", "helmet", "vest", "shield", "bodyarmor", "chestplate", "cap", "hat", "mask", "plate", "kevlar", "boots", "medkit", "bandage", "food", "key", "painkillers", "aseptic", "potion", "heal", "apple", "burger", "drink", "броня", "жилет", "шлем", "аптечка", "бинт", "еда", "ключ", "отмычка", "lockpick", "gloves"} local function translateItemName(originalName) local nameLower = string.lower(originalName) if translationMap[nameLower] then return translationMap[nameLower] end for eng, rus in pairs(translationMap) do if string.find(nameLower, eng) then return rus end end return originalName end local function getItemCategory(toolName) local lower = string.lower(toolName) for _, kw in ipairs(meleeKeywords) do if lower:find(kw) then return "Melee" end end for _, kw in ipairs(gunKeywords) do if lower:find(kw) then return "Gun" end end for _, kw in ipairs(ammoKeywords) do if lower:find(kw) then return "Ammo" end end for _, kw in ipairs(gadgetKeywords) do if lower:find(kw) then return "Gadget" end end for _, kw in ipairs(miscKeywords) do if lower:find(kw) then return "Misc" end end return "Unsorted" end local function getValidTool(part) if not part or not part.Parent then return nil end local partNameLower = string.lower(part.Name) if partNameLower:find("water") or partNameLower:find("glass") or partNameLower:find("window") or partNameLower:find("ocean") or partNameLower:find("river") or partNameLower:find("sea") or partNameLower:find("puddle") or partNameLower:find("ice") then return nil end local tool = part:FindFirstAncestorOfClass("Tool") or (part.Parent:IsA("Tool") and part.Parent) if tool then local toolNameLower = string.lower(tool.Name) if not (toolNameLower:find("water") or toolNameLower:find("glass")) then return tool end end local model = part:FindFirstAncestorOfClass("Model") if model and model ~= Workspace then local nameLower = string.lower(model.Name) if nameLower == "model" or nameLower:find("tree") or nameLower:find("door") or nameLower:find("building") or nameLower:find("house") or nameLower:find("wall") or nameLower:find("folder") or nameLower:find("map") or nameLower:find("terrain") or nameLower:find("street") or nameLower:find("light") or nameLower:find("ceiling") or nameLower:find("water") or nameLower:find("glass") or nameLower:find("window") or nameLower:find("puddle") or (nameLower:find("lamp") and not nameLower:find("lava")) then return nil end local hasInteractivePrompt = model:FindFirstChildWhichIsA("ClickDetector", true) or model:FindFirstChildWhichIsA("ProximityPrompt", true) or model:FindFirstChildWhichIsA("TouchTransporter", true) or model:FindFirstChild("TouchInterest", true) or part:FindFirstChildWhichIsA("TouchTransporter", true) or part:FindFirstChild("TouchInterest", true) local recognizedCategory = getItemCategory(model.Name) if (model:FindFirstChild("Handle") or hasInteractivePrompt) and recognizedCategory ~= "Unsorted" then return model end end return nil end local btnEsp = Instance.new("TextButton") btnEsp.Size = UDim2.new(0, 190, 0, 30) btnEsp.BackgroundColor3 = Color3.fromRGB(65, 65, 65) btnEsp.TextColor3 = Color3.fromRGB(200, 200, 200) btnEsp.Font = Enum.Font.SourceSansBold btnEsp.TextSize = 13 btnEsp.Text = "ESP: [ OFF ]" btnEsp.LayoutOrder = 2 btnEsp.Parent = mainFrame btnEsp.MouseButton1Click:Connect(function() if isUnloaded then return end espEnabled = not espEnabled if espEnabled then btnEsp.Text = "ESP: [ ON ]" btnEsp.BackgroundColor3 = Color3.fromRGB(40, 120, 60) btnEsp.TextColor3 = Color3.fromRGB(255, 255, 255) else btnEsp.Text = "ESP: [ OFF ]" btnEsp.BackgroundColor3 = Color3.fromRGB(65, 65, 65) btnEsp.TextColor3 = Color3.fromRGB(200, 200, 200) for _, bb in pairs(activeNpcEsps) do if bb then bb:Destroy() end end activeNpcEsps = {} end end) task.spawn(function() local overlapParams = OverlapParams.new() overlapParams.RespectCanCollide = false overlapParams.FilterType = Enum.RaycastFilterType.Exclude while not isUnloaded do if espEnabled then local char = player.Character local root = char and char:FindFirstChild("HumanoidRootPart") if root then overlapParams.FilterDescendantsInstances = {char} local partsInRadius = Workspace:GetPartBoundsInRadius(root.Position, searchRadius, overlapParams) local currentNpcs = {} for _, part in ipairs(partsInRadius) do local model = part.Parent if model and model:IsA("Model") then local humanoid = model:FindFirstChildOfClass("Humanoid") local npcRoot = model:FindFirstChild("HumanoidRootPart") if humanoid and npcRoot and humanoid.Health > 0 then local isPlayer = false for _, p in ipairs(Players:GetPlayers()) do if p.Character == model then isPlayer = true break end end if not isPlayer and not currentNpcs[model] then currentNpcs[model] = true local bb = activeNpcEsps[model] if not bb or not bb.Parent then bb = Instance.new("BillboardGui") bb.Name = "OptimizedNpcEsp" bb.Size = UDim2.new(0, 100, 0, 35) bb.StudsOffset = Vector3.new(0, 3, 0) bb.AlwaysOnTop = true bb.Adornee = npcRoot bb.Parent = model local textLabel = Instance.new("TextLabel") textLabel.Name = "Text" textLabel.Size = UDim2.new(1, 0, 0, 18) textLabel.BackgroundTransparency = 1 textLabel.TextColor3 = Color3.fromRGB(255, 255, 255) textLabel.TextStrokeTransparency = 0 textLabel.Font = Enum.Font.SourceSansBold textLabel.TextSize = 12 textLabel.Parent = bb local barBg = Instance.new("Frame") barBg.Name = "BarBg" barBg.Size = UDim2.new(0, 50, 0, 3) barBg.Position = UDim2.new(0.5, -25, 0, 20) barBg.BackgroundColor3 = Color3.fromRGB(30, 30, 30) barBg.BorderSizePixel = 0 barBg.Parent = bb local barFill = Instance.new("Frame") barFill.Name = "BarFill" barFill.Size = UDim2.new(1, 0, 1, 0) barFill.BackgroundColor3 = Color3.fromRGB(0, 255, 0) barFill.BorderSizePixel = 0 barFill.Parent = barBg activeNpcEsps[model] = bb end local textLabel = bb:FindFirstChild("Text") local barBg = bb:FindFirstChild("BarBg") local barFill = barBg and barBg:FindFirstChild("BarFill") if textLabel and barFill then textLabel.Text = math.floor(humanoid.Health) .. "/" .. math.floor(humanoid.MaxHealth) barFill.Size = UDim2.new(math.clamp(humanoid.Health / humanoid.MaxHealth, 0, 1), 0, 1, 0) end end end end end for model, bb in pairs(activeNpcEsps) do if not currentNpcs[model] or not model.Parent then if bb then bb:Destroy() end activeNpcEsps[model] = nil end end end end task.wait(0.6) end end) local btnItemEsp = Instance.new("TextButton") btnItemEsp.Size = UDim2.new(0, 190, 0, 30) btnItemEsp.BackgroundColor3 = Color3.fromRGB(65, 65, 65) btnItemEsp.TextColor3 = Color3.fromRGB(200, 200, 200) btnItemEsp.Font = Enum.Font.SourceSansBold btnItemEsp.TextSize = 13 btnItemEsp.Text = "Item ESP: [ OFF ]" btnItemEsp.LayoutOrder = 3 btnItemEsp.Parent = mainFrame btnItemEsp.MouseButton1Click:Connect(function() if isUnloaded then return end itemEspEnabled = not itemEspEnabled if itemEspEnabled then btnItemEsp.Text = "Item ESP: [ ON ]" btnItemEsp.BackgroundColor3 = Color3.fromRGB(40, 120, 60) btnItemEsp.TextColor3 = Color3.fromRGB(255, 255, 255) else btnItemEsp.Text = "Item ESP: [ OFF ]" btnItemEsp.BackgroundColor3 = Color3.fromRGB(65, 65, 65) btnItemEsp.TextColor3 = Color3.fromRGB(200, 200, 200) for _, bb in pairs(activeItemEsps) do if bb then bb:Destroy() end end activeItemEsps = {} end end) task.spawn(function() local overlapParams = OverlapParams.new() overlapParams.RespectCanCollide = false overlapParams.FilterType = Enum.RaycastFilterType.Exclude while not isUnloaded do if itemEspEnabled then local char = player.Character local root = char and char:FindFirstChild("HumanoidRootPart") if root then overlapParams.FilterDescendantsInstances = {char} local partsInRadius = Workspace:GetPartBoundsInRadius(root.Position, searchRadius, overlapParams) local currentItems = {} for _, part in ipairs(partsInRadius) do local tool = getValidTool(part) if tool and not currentItems[tool] then local itemPart = tool:FindFirstChild("Handle") or tool:FindFirstChildWhichIsA("BasePart", true) or part if itemPart then currentItems[tool] = true local bb = activeItemEsps[tool] if not bb or not bb.Parent then bb = Instance.new("BillboardGui") bb.Name = "OptimizedItemEsp" bb.Size = UDim2.new(0, 90, 0, 20) bb.StudsOffset = Vector3.new(0, 1.5, 0) bb.AlwaysOnTop = true bb.Adornee = itemPart bb.Parent = tool local textLabel = Instance.new("TextLabel") textLabel.Name = "Text" textLabel.Size = UDim2.new(1, 0, 1, 0) textLabel.BackgroundTransparency = 1 textLabel.TextColor3 = Color3.fromRGB(255, 255, 100) textLabel.TextStrokeTransparency = 0 textLabel.Font = Enum.Font.SourceSansBold textLabel.TextSize = 11 textLabel.Text = translateItemName(tool.Name) textLabel.Parent = bb activeItemEsps[tool] = bb end end end end for tool, bb in pairs(activeItemEsps) do if not currentItems[tool] or not tool.Parent then if bb then bb:Destroy() end activeItemEsps[tool] = nil end end end end task.wait(0.8) end end) local btnCamNoclip = Instance.new("TextButton") btnCamNoclip.Size = UDim2.new(0, 190, 0, 30) btnCamNoclip.BackgroundColor3 = Color3.fromRGB(65, 65, 65) btnCamNoclip.TextColor3 = Color3.fromRGB(200, 200, 200) btnCamNoclip.Font = Enum.Font.SourceSansBold btnCamNoclip.TextSize = 13 btnCamNoclip.Text = "CamNoclip: [ OFF ]" btnCamNoclip.LayoutOrder = 4 btnCamNoclip.Parent = mainFrame btnCamNoclip.MouseButton1Click:Connect(function() if isUnloaded then return end camNoclipEnabled = not camNoclipEnabled if camNoclipEnabled then btnCamNoclip.Text = "CamNoclip: [ ON ]" btnCamNoclip.BackgroundColor3 = Color3.fromRGB(40, 120, 60) btnCamNoclip.TextColor3 = Color3.fromRGB(255, 255, 255) if not camNoclipConn then camNoclipConn = RunService.RenderStepped:Connect(function() if camNoclipEnabled then player.DevCameraOcclusionMode = Enum.DevCameraOcclusionMode.Invisicam end end) end else btnCamNoclip.Text = "CamNoclip: [ OFF ]" btnCamNoclip.BackgroundColor3 = Color3.fromRGB(65, 65, 65) btnCamNoclip.TextColor3 = Color3.fromRGB(200, 200, 200) player.DevCameraOcclusionMode = origOcclusion if camNoclipConn then camNoclipConn:Disconnect() camNoclipConn = nil end end end) local btnFullbright = Instance.new("TextButton") btnFullbright.Size = UDim2.new(0, 190, 0, 30) btnFullbright.BackgroundColor3 = Color3.fromRGB(65, 65, 65) btnFullbright.TextColor3 = Color3.fromRGB(200, 200, 200) btnFullbright.Font = Enum.Font.SourceSansBold btnFullbright.TextSize = 13 btnFullbright.Text = "Fullbright: [ OFF ]" btnFullbright.LayoutOrder = 5 btnFullbright.Parent = mainFrame btnFullbright.MouseButton1Click:Connect(function() if isUnloaded then return end fullbrightEnabled = not fullbrightEnabled if fullbrightEnabled then btnFullbright.Text = "Fullbright: [ ON ]" btnFullbright.BackgroundColor3 = Color3.fromRGB(40, 120, 60) btnFullbright.TextColor3 = Color3.fromRGB(255, 255, 255) Lighting.Brightness = 2 Lighting.GlobalShadows = false Lighting.OutdoorAmbient = Color3.fromRGB(255, 255, 255) else btnFullbright.Text = "Fullbright: [ OFF ]" btnFullbright.BackgroundColor3 = Color3.fromRGB(65, 65, 65) btnFullbright.TextColor3 = Color3.fromRGB(200, 200, 200) Lighting.Brightness = origBrightness Lighting.GlobalShadows = origShadows Lighting.OutdoorAmbient = origOutdoorAmbient end end) local btnGetTool = Instance.new("TextButton") btnGetTool.Size = UDim2.new(0, 190, 0, 30) btnGetTool.BackgroundColor3 = Color3.fromRGB(70, 70, 110) btnGetTool.TextColor3 = Color3.fromRGB(255, 255, 255) btnGetTool.Font = Enum.Font.SourceSansBold btnGetTool.TextSize = 13 btnGetTool.Text = "Get Tool (Список лута)" btnGetTool.LayoutOrder = 6 btnGetTool.Parent = mainFrame local toolFrame = Instance.new("Frame") toolFrame.Name = "ToolFrame" toolFrame.Size = UDim2.new(0, 910, 0, 300) toolFrame.Position = UDim2.new(0.5, -220, 0.5, -150) toolFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) toolFrame.BorderSizePixel = 1 toolFrame.BorderColor3 = Color3.fromRGB(20, 20, 20) toolFrame.Visible = false toolFrame.Active = true toolFrame.Draggable = true toolFrame.Parent = screenGui local toolTitle = Instance.new("TextLabel") toolTitle.Size = UDim2.new(1, 0, 0, 25) toolTitle.BackgroundColor3 = Color3.fromRGB(30, 30, 30) toolTitle.Text = "Сортировка лута по 6 категориям" toolTitle.TextColor3 = Color3.fromRGB(255, 255, 255) toolTitle.Font = Enum.Font.SourceSansBold toolTitle.TextSize = 13 toolTitle.Parent = toolFrame local refreshBtn = Instance.new("TextButton") refreshBtn.Size = UDim2.new(0, 75, 0, 20) refreshBtn.Position = UDim2.new(1, -80, 0, 2.5) refreshBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) refreshBtn.Text = "Обновить" refreshBtn.TextColor3 = Color3.fromRGB(220, 220, 220) refreshBtn.Font = Enum.Font.SourceSans refreshBtn.TextSize = 11 refreshBtn.Parent = toolTitle local categories = { {Id = "Melee", Title = "🔪 Холодное", PosX = 5, Width = 145}, {Id = "Gun", Title = "🔫 Огнестрел", PosX = 155, Width = 145}, {Id = "Ammo", Title = "📦 Патроны", PosX = 305, Width = 145}, {Id = "Gadget", Title = "📱 Приборы", PosX = 455, Width = 145}, {Id = "Misc", Title = "🎒 Разное/Броня", PosX = 605, Width = 145}, {Id = "Unsorted", Title = "❓ Не сортир.", PosX = 755, Width = 145} } local columnScrolls = {} for _, cat in ipairs(categories) do local colHeader = Instance.new("TextLabel") colHeader.Size = UDim2.new(0, cat.Width, 0, 20) colHeader.Position = UDim2.new(0, cat.PosX, 0, 30) colHeader.BackgroundColor3 = Color3.fromRGB(50, 50, 50) colHeader.Text = cat.Title colHeader.TextColor3 = Color3.fromRGB(220, 220, 220) colHeader.Font = Enum.Font.SourceSansBold colHeader.TextSize = 12 colHeader.Parent = toolFrame local scroll = Instance.new("ScrollingFrame") scroll.Size = UDim2.new(0, cat.Width, 1, -55) scroll.Position = UDim2.new(0, cat.PosX, 0, 52) scroll.BackgroundTransparency = 1 scroll.ScrollBarThickness = 4 scroll.Parent = toolFrame local layout = Instance.new("UIListLayout") layout.Parent = scroll layout.SortOrder = Enum.SortOrder.LayoutOrder layout.Padding = UDim.new(0, 3) columnScrolls[cat.Id] = {Scroll = scroll, Layout = layout} end local isFetching = false local function fetchTool(tool) if isFetching or not tool or not tool.Parent then return end local char = player.Character local root = char and char:FindFirstChild("HumanoidRootPart") local camera = Workspace.CurrentCamera if not root or not camera then return end local targetPart = (tool:IsA("BasePart") and tool) or tool:FindFirstChild("Handle") or tool:FindFirstChildWhichIsA("BasePart", true) or (tool:IsA("Model") and tool.PrimaryPart) if not targetPart then return end isFetching = true local mainWasVisible = mainFrame.Visible local toolWasVisible = toolFrame.Visible mainFrame.Visible = false toolFrame.Visible = false task.spawn(function() pcall(function() local oldCFrame = root.CFrame local oldCamCFrame = camera.CFrame local oldCamType = camera.CameraType if firetouchinterest then local touchHandle = tool:FindFirstChild("Handle") or targetPart firetouchinterest(root, touchHandle, 0) task.wait(0.01) firetouchinterest(root, touchHandle, 1) end root.CFrame = targetPart.CFrame task.wait(0.04) if tool and tool.Parent and tool.Parent ~= char and tool.Parent ~= player:FindFirstChild("Backpack") then camera.CameraType = Enum.CameraType.Scriptable local camPos = targetPart.Position + Vector3.new(0, 1.2, 1.8) camera.CFrame = CFrame.new(camPos, targetPart.Position) root.CFrame = CFrame.new(targetPart.Position + Vector3.new(0, 0, 1.2), targetPart.Position) task.wait(0.03) local cd = tool:FindFirstChildWhichIsA("ClickDetector", true) or targetPart:FindFirstChildWhichIsA("ClickDetector", true) if cd and fireclickdetector then fireclickdetector(cd) end local prompt = tool:FindFirstChildWhichIsA("ProximityPrompt", true) or targetPart:FindFirstChildWhichIsA("ProximityPrompt", true) if prompt then if fireproximityprompt then fireproximityprompt(prompt) else prompt:InputHoldBegin() task.wait(prompt.HoldDuration > 0 and prompt.HoldDuration or 0.05) prompt:InputHoldEnd() end end local viewportSize = camera.ViewportSize local centerX, centerY = viewportSize.X / 2, viewportSize.Y / 2 VirtualInputManager:SendMouseButtonEvent(centerX, centerY, 0, true, game, 0) task.wait(0.01) VirtualInputManager:SendMouseButtonEvent(centerX, centerY, 0, false, game, 0) if mouse1click then mouse1click() end VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.E, false, game) task.wait(0.01) VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.E, false, game) VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.F, false, game) task.wait(0.01) VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.F, false, game) end task.wait(0.04) root.CFrame = oldCFrame camera.CameraType = oldCamType camera.CFrame = oldCamCFrame end) mainFrame.Visible = mainWasVisible toolFrame.Visible = toolWasVisible isFetching = false end) end local function refreshToolList() for _, col in pairs(columnScrolls) do for _, child in ipairs(col.Scroll:GetChildren()) do if child:IsA("TextButton") then child:Destroy() end end end local char = player.Character local root = char and char:FindFirstChild("HumanoidRootPart") if not root then return end local overlapParams = OverlapParams.new() overlapParams.RespectCanCollide = false overlapParams.FilterType = Enum.RaycastFilterType.Exclude overlapParams.FilterDescendantsInstances = {char} local parts = Workspace:GetPartBoundsInRadius(root.Position, searchRadius, overlapParams) local foundTools = {} for _, part in ipairs(parts) do local tool = getValidTool(part) if tool and not foundTools[tool] then local targetPart = tool:FindFirstChild("Handle") or tool:FindFirstChildWhichIsA("BasePart", true) or part if targetPart then foundTools[tool] = true local catId = getItemCategory(tool.Name) local targetColumn = columnScrolls[catId] or columnScrolls["Unsorted"] local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -6, 0, 24) btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) btn.TextColor3 = Color3.fromRGB(240, 240, 240) btn.Font = Enum.Font.SourceSans btn.TextSize = 11 local dist = math.floor((targetPart.Position - root.Position).Magnitude) local rusName = translateItemName(tool.Name) btn.Text = rusName .. " [" .. dist .. "m]" btn.Parent = targetColumn.Scroll btn.MouseButton1Click:Connect(function() fetchTool(tool) task.wait(0.1) refreshToolList() end) end end end for _, col in pairs(columnScrolls) do col.Scroll.CanvasSize = UDim2.new(0, 0, 0, col.Layout.AbsoluteContentSize.Y) end end btnGetTool.MouseButton1Click:Connect(function() toolFrame.Visible = not toolFrame.Visible if toolFrame.Visible then refreshToolList() end end) refreshBtn.MouseButton1Click:Connect(refreshToolList) local unloadButton = Instance.new("TextButton") unloadButton.Name = "UnloadButton" unloadButton.Size = UDim2.new(0, 190, 0, 26) unloadButton.BackgroundColor3 = Color3.fromRGB(120, 40, 40) unloadButton.TextColor3 = Color3.fromRGB(255, 255, 255) unloadButton.Font = Enum.Font.SourceSansBold unloadButton.TextSize = 13 unloadButton.Text = "Unload Script" unloadButton.LayoutOrder = 7 unloadButton.Parent = mainFrame unloadButton.MouseButton1Click:Connect(function() isUnloaded = true espEnabled = false itemEspEnabled = false camNoclipEnabled = false player.DevCameraOcclusionMode = origOcclusion if camNoclipConn then camNoclipConn:Disconnect() camNoclipConn = nil end if fullbrightEnabled then Lighting.Brightness = origBrightness Lighting.GlobalShadows = origShadows Lighting.OutdoorAmbient = origOutdoorAmbient end for _, bb in pairs(activeNpcEsps) do if bb then bb:Destroy() end end for _, bb in pairs(activeItemEsps) do if bb then bb:Destroy() end end screenGui:Destroy() end) UserInputService.InputBegan:Connect(function(input) if not isUnloaded and input.KeyCode == Enum.KeyCode.RightShift and mainFrame.Parent then mainFrame.Visible = not mainFrame.Visible toolFrame.Visible = false end end)