warn("[ROOSTER] v34 START") local Services = { Run = game:GetService("RunService"), Players = game:GetService("Players"), UIS = game:GetService("UserInputService"), Sound = game:GetService("SoundService"), Lighting = game:GetService("Lighting"), RS = game:GetService("ReplicatedStorage") } local Camera = workspace.CurrentCamera local LP = Services.Players.LocalPlayer if not LP then warn("[ROOSTER] FATAL: LocalPlayer nil"); return end if not Camera then Camera = workspace:WaitForChild("Camera", 10); if not Camera then warn("[ROOSTER] Camera nil"); return end end local CONFIG_FILE = "rooster_v34.json" local RENDER_NAME = "RstrLoopV340" local C = { aim=false, alwaysAim=false, shoot=false, head=true, team=true, headFallback=true, fovRatio=0.30, maxDist=800, cps=8, randomDelay=true, aimSmooth=1, targetByDistance=false, aimLockedThreshold=20, visibleCheck=true, aimDelay=0, aimPredict=0.6, hrpHeadMaxDist=4.5, legitMode=false, legitFovRatio=0.12, legitSmooth=0.25, legitNoise=false, legitCps=5, legitAimDelay=80, legitThreshold=15, legitPredict=0.5, boxes=true, espTopLift=0.2, espBottomLift=0.2, espWidthRatio=0.5, highlightTarget=true, fovCircle=true, fovPulse=true, espEnabled=false, espTeam=true, espDist=true, headArrows=true, hitmarker=true, hitmarkerSound=true, showPing=false, showFps=false, watermarkEnabled=true, crosshairEnabled=true, scanlinesEnabled=false, cornerFrameEnabled=true, tracer=true, tracerColor=Color3.fromRGB(0,255,200), tracerDuration=0.4, tracerThickness=2, latchEnabled=false, latchKey=Enum.KeyCode.F, latchDist=3.0, latchRange=0, latchRangeMult=5, latchBehind=true, magnetSmooth=0.5, magnetWallCheck=false, latchAuto=false, latchAutoRange=200, latchAutoAim=false, latchAutoSpin=false, latchAutoSpinSpeed=3.0, bhop=false, bhopBoost=0, tp=false, tpDist=8, spinbot=false, spinSpeed=15, spinOnlyAim=false, fakeAngles=false, fakeAnglesMode="jitter", fakeAnglesJitter=90, fakeAnglesInterval=0.15, fakeAnglesSpinSpeed=15, fakeLag=false, fakeLagIntensity=1.0, attackSound=true, attackVolume=3.0, attackPitch=1.5, killPitch=1.5, attackSoundId="5852470908", killSoundId="5852470908", cockSound=true, hitSounds=false, hitSoundBodyId="6895079853", hitSoundHeadId="8435457150", notifications=true, whitelistEnabled=true, killstreakWindow=4.0, killstreakOnlyMine=true, chickenRain=true, chickenMode=false, killChat=false, killChatMsg="gg", killChatDelay=0.1, deathClicker=false, deathClickCount=3, deathClickInterval=0.1, deathClickRandom=false, deathClickX=0.5, deathClickY=0.5, autoClicker=false, autoClickerInterval=0.1, autoClickerRandom=false, autoClickerX=0.5, autoClickerY=0.5, acHours=0, acMins=0, acSecs=0, acMs=100, acRandomOffset=40, acButton="Left", acClickType="Single", acRepeatUntil=true, acRepeatCount=1, acCursorMode="current", acPickX=0, acPickY=0, envEnabled=false, envClockTime=14, envBrightness=2, envFogEnd=1000, envAmbient=Color3.fromRGB(70,70,70), envOutdoorAmbient=Color3.fromRGB(128,128,128), envAtmosphereDensity=0.3, envAtmosphereHaze=1.0, envAtmosphereGlare=0.5, theme=Color3.fromRGB(165,165,180), targetColor=Color3.fromRGB(220,60,60), bgColor=Color3.fromRGB(14,13,17), cardColor=Color3.fromRGB(24,23,28), onColor=Color3.fromRGB(42,68,48), offColor=Color3.fromRGB(22,21,26), espColorMode="auto", espCustomColor=Color3.fromRGB(180,80,255), espGradientColor1=Color3.fromRGB(180,80,255), espGradientColor2=Color3.fromRGB(0,200,255), espGradientSpeed=1.0, keybindsEnabled=false, keyAim=Enum.KeyCode.E, keyEsp=Enum.KeyCode.Q, keyShoot=Enum.KeyCode.T, } local S = { unloaded = false, target = nil, targetDist = 0, latchTarget = nil, latchSpinAngle = 0, rmb = false, space = false, lastShot = 0, lastShotDelay = 0.125, tpApplied = false, lastTpVis = 0, desiredCFrame = nil, camOffsetFromHead = nil, cachedViewport = Camera.ViewportSize, lastVpUpd = 0, cachedPing = 0.05, lastPingUpd = 0, lastTargetName = nil, weSetScriptable = false, lastAttackSound = 0, lastLostNotify = 0, lastAAApply = 0, fovPulseT = 0, latchKeyDown = false, lastLatchTp = 0, autoLastRepick = 0, autoRotateWasOn = false, spinAngle = 0, fakeAngleYaw = 0, lastFakeAngleChg = 0, lastFakeLagTick = 0, comboCount = 0, comboLastKill = 0, comboHideAt = 0, fpsCounter = 60, fpsFrames = 0, fpsLastTime = os.clock(), whitelist = {}, healthTrack = {}, lastOurShot = 0, hitmarkerHideAt = 0, damagedByUs = {}, chickenedChars = {}, activeTracers = {}, lastChatTime = 0, lastAutoClick = 0, AC = { running=false, currentCount=0, nextClickAt=0, picking=false }, chRainActive = 0, chRainMax = 12, mainErr = 0, candN = 0, candP = {}, candDS = {}, candDist = {}, lastBoxUpd = 0, lastChkUpd = 0, visCache = {}, partCache = {}, hrpCache = {}, lastKC = {} } local UI = { pages = {}, tabs = {}, themeRefs = {}, toggleRegistry = {}, sliderRegistry = {}, currentPage = "AIM", currentColorSetter = nil, currentColorSwatch = nil, currentColorName = nil, _http = nil, _tcs = nil } local hasClick1 = type(mouse1click) == "function" local hasClick2 = type(mouse2click) == "function" local hasPress = type(mouse1press) == "function" and type(mouse1release) == "function" local hasRPress = type(mouse2press) == "function" and type(mouse2release) == "function" local hasMoveAbs = type(mousemoveabs) == "function" local hasMoveRel = type(mousemoverel) == "function" local function safeClick(btn) btn = btn or "Left" if btn == "Right" then if hasClick2 and pcall(mouse2click) then return true end if hasRPress then pcall(mouse2press); task.wait(0.02); pcall(mouse2release); return true end return false elseif btn == "Middle" then return false else if hasClick1 and pcall(mouse1click) then return true end if hasPress then pcall(mouse1press); task.wait(0.02); pcall(mouse1release); return true end return false end end local function safeMoveTo(x, y) if not x or not y then return false end if hasMoveAbs then if pcall(mousemoveabs, x, y) then return true end end if hasMoveRel then local cur = Services.UIS:GetMouseLocation() if math.abs(x - cur.X) > 1 or math.abs(y - cur.Y) > 1 then if pcall(mousemoverel, x - cur.X, y - cur.Y) then return true end end return true end return false end local function getHttp() if UI._http then return UI._http end local ok, svc = pcall(function() return game:GetService("HttpService") end) if ok and svc then UI._http = svc end return UI._http end local function serCfg() local out = {} for k, v in pairs(C) do if k ~= "autoClicker" then local t = typeof(v) if t == "boolean" or t == "number" or t == "string" then out[k] = v elseif t == "Color3" then out[k] = {__col=true, r=v.R, g=v.G, b=v.B} elseif t == "EnumItem" then out[k] = {__enum=true, enum=v.EnumType.Name, name=v.Name} end end end local wl = {} for k, v in pairs(S.whitelist) do if v == true then if type(k) == "string" then wl[k] = true elseif type(k) == "number" then wl["id_"..k] = true end end end out.__whitelist = wl return out end local function deserCfg(data) for k, v in pairs(data) do if k == "__whitelist" then local newWL = {} if type(v) == "table" then for wk, wv in pairs(v) do if wv == true and type(wk) == "string" then newWL[wk] = true end end end S.whitelist = newWL elseif type(v) == "table" and v.__col then if C[k] ~= nil and typeof(C[k]) == "Color3" then C[k] = Color3.new(v.r, v.g, v.b) end elseif type(v) == "table" and v.__enum then if C[k] ~= nil and typeof(C[k]) == "EnumItem" then pcall(function() local tn = v.enum if type(tn) == "string" and tn:sub(1,5) == "Enum." then tn = tn:sub(6) end local et = Enum[tn] if et and et[v.name] then C[k] = et[v.name] end end) end elseif type(v) == "boolean" or type(v) == "number" or type(v) == "string" then if C[k] ~= nil and type(C[k]) == type(v) then C[k] = v end end end end local function saveConfig() if not writefile then return false, "no writefile" end local http = getHttp(); if not http then return false, "no HttpService" end local ok, err = pcall(function() writefile(CONFIG_FILE, http:JSONEncode(serCfg())) end) if not ok then return false, tostring(err) end return true end local function loadConfig() if not (readfile and isfile and isfile(CONFIG_FILE)) then return false, "no file" end local http = getHttp(); if not http then return false, "no HttpService" end local ok, raw = pcall(function() return readfile(CONFIG_FILE) end) if not ok or not raw then return false, "read error" end local ok2, data = pcall(function() return http:JSONDecode(raw) end) if not ok2 or type(data) ~= "table" then return false, "json error" end deserCfg(data) return true end local function acInterval() local total = (C.acHours or 0)*3600 + (C.acMins or 0)*60 + (C.acSecs or 0) + (C.acMs or 0)/1000 if (C.acRandomOffset or 0) > 0 then total = total + (math.random()*2 - 1) * C.acRandomOffset / 1000 end if total < 0.010 then total = 0.010 end return total end local function acDoOneClick() if C.acCursorMode == "pick" then safeMoveTo(C.acPickX, C.acPickY) end if C.acClickType == "Double" then if safeClick(C.acButton) then task.wait(0.03); safeClick(C.acButton) end else safeClick(C.acButton) end end local function doClick(px, py) if px and py then safeMoveTo(px, py) end if safeClick("Left") then return end end local function getClickPos(rnd, relX, relY) local vp = Camera.ViewportSize if not vp or vp.X < 20 or vp.Y < 20 then return 100, 100 end if rnd then return math.random(10, math.floor(vp.X - 10)), math.random(10, math.floor(vp.Y - 10)) end return math.floor(vp.X * relX), math.floor(vp.Y * relY) end local function fireDeathClicks() if not C.deathClicker then return end task.spawn(function() for i = 1, C.deathClickCount do if S.unloaded then break end local px, py = getClickPos(C.deathClickRandom, C.deathClickX, C.deathClickY) doClick(px, py); task.wait(C.deathClickInterval) end end) end local TC_MAP = { ["Bright red"]=Color3.fromRGB(255,80,80), ["Bright green"]=Color3.fromRGB(100,255,100), ["Bright blue"]=Color3.fromRGB(100,150,255), ["Bright yellow"]=Color3.fromRGB(255,240,100), ["Really red"]=Color3.fromRGB(255,60,60), ["Lime green"]=Color3.fromRGB(80,240,80), ["Bright violet"]=Color3.fromRGB(200,100,255), ["Deep blue"]=Color3.fromRGB(60,100,200) } local function getEnemyColor(plr) if C.espColorMode == "custom" then return C.espCustomColor elseif C.espColorMode == "gradient" then local t = (os.clock() * C.espGradientSpeed) % 1 local idx = plr and plr.UserId % 100 or 50 return C.espGradientColor1:Lerp(C.espGradientColor2, (t + idx / 100) % 1) else if plr.TeamColor then return TC_MAP[plr.TeamColor.Name] or plr.TeamColor.Color end if plr.Team then return TC_MAP[plr.Team.Name] or Color3.fromRGB(255,100,80) end return Color3.fromRGB(255,100,80) end end local colorCache, colorCacheTime = {}, 0 local function getEnemyColorCached(plr) local now = os.clock() if now - colorCacheTime > 0.1 then colorCache = {}; colorCacheTime = now end if colorCache[plr] ~= nil then return colorCache[plr] end local c = getEnemyColor(plr); colorCache[plr] = c; return c end local NEUTRAL = {play=1,lobby=1,neutral=1,spectator=1,spec=1,none=1} local function isWL(p) if not C.whitelistEnabled then return false end return S.whitelist[p.Name] == true or S.whitelist[p.UserId] == true or S.whitelist["id_"..tostring(p.UserId)] == true end local function isEnemy(p) if isWL(p) then return false end if not C.team then return true end local mt, pt = LP.Team, p.Team; local mc, pc = LP.TeamColor, p.TeamColor if (not mt or NEUTRAL[string.lower(mt.Name)]) or (not pt or NEUTRAL[string.lower(pt.Name)]) then return true end if mt and pt then return mt ~= pt end if mc and pc then return mc ~= pc end return true end local rayVis = RaycastParams.new(); rayVis.FilterType = Enum.RaycastFilterType.Exclude local rayLatch = RaycastParams.new(); rayLatch.FilterType = Enum.RaycastFilterType.Exclude local trajRay = RaycastParams.new(); trajRay.FilterType = Enum.RaycastFilterType.Exclude; trajRay.IgnoreWater = true local rpTP = RaycastParams.new(); rpTP.FilterType = Enum.RaycastFilterType.Exclude; rpTP.IgnoreWater = true local function safeFilter(list) local out = {} for _, v in ipairs(list) do if v then table.insert(out, v) end end return out end local function getPart(p) local ch = p.Character; if not ch then return nil end local head = ch:FindFirstChild("Head"); local hrp = ch:FindFirstChild("HumanoidRootPart") if C.head then return head or hrp end if C.headFallback then local c = S.hrpCache[ch] if c == nil then if not hrp then c = false elseif not head then c = true else c = (hrp.Position - head.Position).Magnitude <= C.hrpHeadMaxDist end S.hrpCache[ch] = c end if not c then return head or hrp end end return hrp or head end local function getPartCached(p) local c = S.partCache[p] if c ~= nil then return c or nil end local r = getPart(p); S.partCache[p] = r or false; return r end local function visible(p) if not C.visibleCheck then return true end local ch = p.Character; if not ch then return false end local tp = getPart(p); if not tp then return false end local head = ch:FindFirstChild("Head"); local origin = Camera.CFrame.Position rayVis.FilterDescendantsInstances = safeFilter({ LP.Character }) local pts = { tp.Position }; if head and head ~= tp then table.insert(pts, head.Position) end for _, pt in ipairs(pts) do local d = pt - origin if d.Magnitude >= 1 then local hit = workspace:Raycast(origin, d, rayVis) if hit and not hit.Instance:IsDescendantOf(ch) and hit.Instance.CanCollide ~= false then return false end end end return true end local function visibleCached(p) if S.visCache[p] == nil then S.visCache[p] = visible(p) end return S.visCache[p] end local function contrastText(bg, isOn, soft) local lum = bg.R * 0.299 + bg.G * 0.587 + bg.B * 0.114 if isOn then return soft and (lum > 0.55 and Color3.fromRGB(30,90,30) or Color3.fromRGB(140,230,140)) or (lum > 0.55 and Color3.fromRGB(30,30,35) or Color3.fromRGB(225,230,225)) end return soft and Color3.fromRGB(120,120,135) or Color3.fromRGB(190,190,205) end local KEY_MAP = { ["E"]=Enum.KeyCode.E, ["Q"]=Enum.KeyCode.Q, ["T"]=Enum.KeyCode.T, ["R"]=Enum.KeyCode.R, ["G"]=Enum.KeyCode.G, ["V"]=Enum.KeyCode.V, ["B"]=Enum.KeyCode.B, ["X"]=Enum.KeyCode.X, ["Z"]=Enum.KeyCode.Z, ["C"]=Enum.KeyCode.C, ["1"]=Enum.KeyCode.One, ["2"]=Enum.KeyCode.Two, ["3"]=Enum.KeyCode.Three, ["4"]=Enum.KeyCode.Four } local KEY_ORDER = {"E","Q","T","R","G","V","B","X","Z","C","1","2","3","4"} local function nameOfKey(k) for _, n in ipairs(KEY_ORDER) do if KEY_MAP[n] == k then return n end end return k and k.Name or "?" end local function getTCS() if UI._tcs then return UI._tcs end local ok, svc = pcall(function() return game:GetService("TextChatService") end) if ok and svc then UI._tcs = svc end return UI._tcs end local function sendChatMessage(text) if os.clock() - S.lastChatTime < 0.5 then return end S.lastChatTime = os.clock() text = tostring(text or ""):sub(1, 200); if text == "" then return end local tcs = getTCS() if tcs then pcall(function() if tcs.ChatVersion ~= Enum.ChatVersion.TextChatService then return end local g = tcs:FindFirstChild("TextChannels") and (tcs.TextChannels:FindFirstChild("RBXGeneral") or tcs.TextChannels:FindFirstChildWhichIsA("TextChannel")) if g then g:SendAsync(text) end end) end pcall(function() local ev = Services.RS:FindFirstChild("DefaultChatSystemChatEvents") local sm = ev and ev:FindFirstChild("SayMessageRequest") if sm then sm:FireServer(text, "All") end end) end local function playLocal(id, vol, pitch) pcall(function() local s = Instance.new("Sound") s.SoundId = "rbxassetid://"..tostring(id); s.Volume = vol or 3 if pitch then s.PlaybackSpeed = pitch end s.Parent = Services.Sound; Services.Sound:PlayLocalSound(s) task.delay(6, function() pcall(function() s:Destroy() end) end) end) end local function playAtk() if not C.attackSound then return end local now = os.clock(); if now - S.lastAttackSound < 0.03 then return end S.lastAttackSound = now local id = tostring(C.attackSoundId or ""):gsub("%D",""); if id == "" then id = "5852470908" end playLocal(id, C.attackVolume, C.attackPitch) end local function playKill() if not C.cockSound then return end local id = tostring(C.killSoundId or ""):gsub("%D",""); if id == "" then id = "5852470908" end playLocal(id, math.min(C.attackVolume*1.5, 5), C.killPitch) end local function playHit(head) if C.hitSounds then local id = tostring(head and C.hitSoundHeadId or C.hitSoundBodyId):gsub("%D","") if id == "" then id = head and "8435457150" or "6895079853" end playLocal(id, head and 3.5 or 2.0, 1.0) elseif C.hitmarkerSound then playLocal("6895079853", 2.5, 1.0) end end local function releaseCam() S.weSetScriptable = false pcall(function() if Camera.CameraType == Enum.CameraType.Scriptable then Camera.CameraType = Enum.CameraType.Custom end end) end Services.UIS.InputBegan:Connect(function(i, gp) if i.UserInputType == Enum.UserInputType.MouseButton2 then S.rmb = true end if i.KeyCode == Enum.KeyCode.Space then S.space = true end if i.KeyCode == Enum.KeyCode.Escape then if S.AC.picking then S.AC.picking = false elseif UI.colorModal and UI.colorModal.Visible then UI.colorModal.Visible = false end return end if i.KeyCode == Enum.KeyCode.RightAlt and not gp then local ok, err = saveConfig() if not ok then warn("[ROOSTER] Save: "..tostring(err)) end return end if C.keybindsEnabled and not gp then if i.KeyCode == C.keyAim then C.aim = not C.aim; pcall(UI.refreshAll); return end if i.KeyCode == C.keyEsp then C.espEnabled = not C.espEnabled; pcall(UI.refreshAll); return end if i.KeyCode == C.keyShoot then C.shoot = not C.shoot; pcall(UI.refreshAll); return end end if gp then return end if S.AC.picking and i.UserInputType == Enum.UserInputType.MouseButton1 then local pos = Services.UIS:GetMouseLocation() C.acPickX = pos.X; C.acPickY = pos.Y; C.acCursorMode = "pick"; S.AC.picking = false; return end if i.UserInputType == Enum.UserInputType.MouseButton1 then playAtk(); if UI.spawnTracer then UI.spawnTracer() end; S.lastOurShot = os.clock() end if i.KeyCode == Enum.KeyCode.RightShift then releaseCam() end if i.KeyCode == C.latchKey and C.latchEnabled then S.latchKeyDown = true end end) Services.UIS.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton2 then S.rmb = false end if i.KeyCode == Enum.KeyCode.Space then S.space = false end if i.KeyCode == C.latchKey then S.latchKeyDown = false end end) pcall(function() game:BindToClose(function() pcall(saveConfig) end) end) task.spawn(function() while not S.unloaded do task.wait(120); if not S.unloaded then pcall(saveConfig) end end end) local pg = LP:WaitForChild("PlayerGui", 15) if not pg then warn("[ROOSTER] PlayerGui nil"); return end for _, n in ipairs({"RstrUI","RstrOV"}) do local o = pg:FindFirstChild(n); if o then o:Destroy() end end local ov = Instance.new("ScreenGui") ov.Name = "RstrOV"; ov.IgnoreGuiInset = true; ov.ResetOnSpawn = false ov.DisplayOrder = 100; ov.Parent = pg local testLbl = Instance.new("TextLabel", ov) testLbl.Size = UDim2.new(0, 320, 0, 50); testLbl.Position = UDim2.new(0, 10, 0, 10) testLbl.BackgroundColor3 = Color3.fromRGB(30,30,40); testLbl.BackgroundTransparency = 0.15 testLbl.BorderSizePixel = 0; testLbl.Text = "ROOSTER v34 — ЗАГРУЗКА..." testLbl.TextColor3 = Color3.fromRGB(200,255,200); testLbl.Font = Enum.Font.GothamBold testLbl.TextSize = 12; testLbl.ZIndex = 9999 Instance.new("UICorner", testLbl).CornerRadius = UDim.new(0,4) local boxesF, arrowF, tracersF = Instance.new("Folder", ov), Instance.new("Folder", ov), Instance.new("Folder", ov) local notifF = Instance.new("Frame", ov) notifF.BackgroundTransparency = 1; notifF.Size = UDim2.new(0,300,0,240); notifF.Position = UDim2.new(0,20,0,100) Instance.new("UIListLayout", notifF).Padding = UDim.new(0,4) local comboLbl = Instance.new("TextLabel", ov) comboLbl.Size = UDim2.new(1,0,0,80); comboLbl.Position = UDim2.new(0,0,0.38,0) comboLbl.BackgroundTransparency = 1; comboLbl.Text = ""; comboLbl.TextColor3 = Color3.fromRGB(255,220,80) comboLbl.Font = Enum.Font.GothamBlack; comboLbl.TextSize = 48 comboLbl.TextStrokeTransparency = 0; comboLbl.TextStrokeColor3 = Color3.new(0,0,0); comboLbl.TextTransparency = 1; comboLbl.ZIndex = 300 local wm = Instance.new("TextLabel", ov) wm.Size = UDim2.new(0,500,0,22); wm.Position = UDim2.new(0,10,0,74) wm.BackgroundTransparency = 1; wm.Text = ""; wm.TextColor3 = C.theme; wm.Font = Enum.Font.Code wm.TextSize = 12; wm.TextXAlignment = Enum.TextXAlignment.Left wm.TextStrokeTransparency = 0.3; wm.TextStrokeColor3 = Color3.new(0,0,0); wm.ZIndex = 60 local activeHud = Instance.new("TextLabel", ov) activeHud.Size = UDim2.new(0,300,0,90); activeHud.Position = UDim2.new(0,10,1,-100) activeHud.BackgroundTransparency = 1; activeHud.Text = ""; activeHud.TextColor3 = C.theme activeHud.Font = Enum.Font.Code; activeHud.TextSize = 11; activeHud.TextXAlignment = Enum.TextXAlignment.Left; activeHud.TextYAlignment = Enum.TextYAlignment.Bottom; activeHud.ZIndex = 60 local chGUI = Instance.new("Frame", ov) chGUI.Size = UDim2.new(0,22,0,22); chGUI.AnchorPoint = Vector2.new(0.5,0.5) chGUI.BackgroundTransparency = 1; chGUI.ZIndex = 55; chGUI.Visible = false local ch1 = Instance.new("Frame", chGUI); ch1.Size = UDim2.new(0,10,0,1); ch1.Position = UDim2.new(0.5,0,0.5,0) ch1.AnchorPoint = Vector2.new(0.5,0.5); ch1.BackgroundColor3 = C.theme; ch1.BorderSizePixel = 0 local ch2 = Instance.new("Frame", chGUI); ch2.Size = UDim2.new(0,1,0,10); ch2.Position = UDim2.new(0.5,0,0.5,0) ch2.AnchorPoint = Vector2.new(0.5,0.5); ch2.BackgroundColor3 = C.theme; ch2.BorderSizePixel = 0 local cf = Instance.new("Frame", ov); cf.Size = UDim2.new(1,-20,1,-20); cf.Position = UDim2.new(0,10,0,10) cf.BackgroundTransparency = 1; cf.ZIndex = 1; cf.Visible = false Instance.new("UICorner", cf).CornerRadius = UDim.new(0,6) local cfS = Instance.new("UIStroke", cf); cfS.Color = C.theme; cfS.Thickness = 1; cfS.Transparency = 0.7 local sln = Instance.new("Frame", ov); sln.Size = UDim2.new(1,0,1,0); sln.BackgroundTransparency = 1; sln.ZIndex = 0; sln.Visible = false for i = 1, 30 do local l = Instance.new("Frame", sln) l.Size = UDim2.new(1,0,0,1); l.Position = UDim2.new(0,0,i/30,0) l.BackgroundColor3 = Color3.new(0,0,0); l.BackgroundTransparency = 0.85 end local hm = Instance.new("TextLabel", ov) hm.Size = UDim2.new(0,60,0,60); hm.AnchorPoint = Vector2.new(0.5,0.5) hm.BackgroundTransparency = 1; hm.Text = "X"; hm.TextColor3 = Color3.fromRGB(255,60,60) hm.TextScaled = true; hm.Font = Enum.Font.GothamBlack; hm.TextStrokeTransparency = 0; hm.TextStrokeColor3 = Color3.new(0,0,0) hm.ZIndex = 200; hm.Visible = false local hud = Instance.new("Frame", ov) hud.Size = UDim2.new(0,190,0,22); hud.Position = UDim2.new(0,10,0,10) hud.BackgroundColor3 = C.bgColor; hud.BackgroundTransparency = 0.4; hud.BorderSizePixel = 0; hud.ZIndex = 60; hud.Visible = false Instance.new("UICorner", hud).CornerRadius = UDim.new(0,3) local hudT = Instance.new("TextLabel", hud) hudT.Size = UDim2.new(1,-6,1,0); hudT.Position = UDim2.new(0,3,0,0) hudT.BackgroundTransparency = 1; hudT.Text = ""; hudT.TextColor3 = Color3.fromRGB(220,220,230) hudT.Font = Enum.Font.Code; hudT.TextSize = 11; hudT.TextXAlignment = Enum.TextXAlignment.Left; hudT.ZIndex = 61 local fovC = Instance.new("Frame", ov) fovC.AnchorPoint = Vector2.new(0.5,0.5); fovC.BackgroundTransparency = 1; fovC.ZIndex = 1; fovC.Visible = false Instance.new("UICorner", fovC).CornerRadius = UDim.new(1,0) local fovS = Instance.new("UIStroke", fovC); fovS.Color = C.theme; fovS.Thickness = 1; fovS.Transparency = 0.4 local function notify(text, color) if not C.notifications then return end pcall(function() local kids = notifF:GetChildren(); local count = 0 for _, k in ipairs(kids) do if k:IsA("Frame") then count = count + 1 end end if count >= 5 then for _, k in ipairs(kids) do if k:IsA("Frame") then k:Destroy(); break end end end local n = Instance.new("Frame", notifF) n.Size = UDim2.new(0,260,0,24); n.BackgroundColor3 = C.cardColor n.BorderSizePixel = 0; n.ZIndex = 51 Instance.new("UICorner", n).CornerRadius = UDim.new(0,3) local s = Instance.new("UIStroke", n); s.Color = color or C.theme; s.Thickness = 1 local lbl = Instance.new("TextLabel", n) lbl.Size = UDim2.new(1,-12,1,0); lbl.Position = UDim2.new(0,8,0,0) lbl.BackgroundTransparency = 1; lbl.Text = text; lbl.TextColor3 = Color3.fromRGB(230,230,240) lbl.TextXAlignment = Enum.TextXAlignment.Left; lbl.Font = Enum.Font.GothamMedium; lbl.TextSize = 12; lbl.ZIndex = 52 task.delay(2.5, function() pcall(function() if n then n:Destroy() end end) end) end) end UI.notify = notify local function showCombo(c) comboLbl.Text = "СЕРИЯ x"..c local h = math.clamp(0.12 - c*0.01, 0, 0.12) if c >= 5 then h = 0.85 + (c-5)*0.02 end comboLbl.TextColor3 = Color3.fromHSV(h%1, 0.85, 1) comboLbl.TextTransparency = 0; comboLbl.TextStrokeTransparency = 0 comboLbl.TextSize = 48 + math.min(c*4, 40); S.comboHideAt = os.clock() + 1.5 end local function playCombo(lvl) playLocal("6895079853", 4, 1.0 + math.min(lvl,8)*0.1) end local function regKill() local now = os.clock() if now - S.comboLastKill > C.killstreakWindow then S.comboCount = 1 else S.comboCount = S.comboCount + 1 end S.comboLastKill = now if S.comboCount >= 2 then showCombo(S.comboCount); playCombo(S.comboCount) end end UI.spawnTracer = function() if not C.tracer then return end local cam = workspace.CurrentCamera; if not cam then return end local vp = cam.ViewportSize; if not vp or vp.X <= 0 then return end local fx = vp.X/2 + (math.random() - 0.5) * 15; local fy = vp.Y - 25 local endX, endY, hitFound = nil, nil, false trajRay.FilterDescendantsInstances = safeFilter({ LP.Character }) local hit = workspace:Raycast(cam.CFrame.Position, cam.CFrame.LookVector*3000, trajRay) if hit then local toSp, onScreen = cam:WorldToViewportPoint(hit.Position) if onScreen and toSp.Z > 0 and toSp.Y < vp.Y - 50 then endX, endY = toSp.X, toSp.Y; hitFound = true end end if not hitFound then local dx, dy = (vp.X/2 + (math.random()-0.5)*20) - fx, (vp.Y/2 + (math.random()-0.5)*20) - fy local mag = math.sqrt(dx*dx + dy*dy); if mag < 1 then return end endX = fx + (dx/mag) * (mag*3); endY = fy + (dy/mag) * (mag*3) end local dx, dy = endX-fx, endY-fy; local len = math.sqrt(dx*dx+dy*dy); if len < 5 then return end local lf = Instance.new("Frame", tracersF) lf.AnchorPoint = Vector2.new(0.5, 0.5); lf.BorderSizePixel = 0; lf.BackgroundColor3 = C.tracerColor; lf.ZIndex = 6 lf.Position = UDim2.fromOffset((fx+endX)/2, (fy+endY)/2); lf.Size = UDim2.fromOffset(len, C.tracerThickness) lf.Rotation = math.deg(math.atan2(dy, dx)) local dot = Instance.new("Frame", tracersF) dot.AnchorPoint = Vector2.new(0.5, 0.5); dot.BorderSizePixel = 0; dot.BackgroundColor3 = C.tracerColor; dot.ZIndex = 7 dot.Position = UDim2.fromOffset(endX, endY); dot.Size = UDim2.fromOffset(8, 8) Instance.new("UICorner", dot).CornerRadius = UDim.new(1,0) table.insert(S.activeTracers, {line=lf, dot=dot, t=os.clock(), dur=C.tracerDuration, fullThickness=C.tracerThickness}) end local function updTracers() local now = os.clock(); local i = 1 while i <= #S.activeTracers do local tr = S.activeTracers[i]; local alpha = 1 - ((now - tr.t) / tr.dur) if alpha <= 0 or not tr.line or not tr.line.Parent then if tr.line then tr.line:Destroy() end; if tr.dot then tr.dot:Destroy() end table.remove(S.activeTracers, i) else tr.line.BackgroundTransparency = 1 - alpha; tr.dot.BackgroundTransparency = 1 - alpha tr.line.Size = UDim2.fromOffset(tr.line.AbsoluteSize.X, math.max(0.5, tr.fullThickness * alpha)); i = i + 1 end end end local defaultEnv = { ClockTime = Services.Lighting.ClockTime, Brightness = Services.Lighting.Brightness, FogEnd = Services.Lighting.FogEnd, Ambient = Services.Lighting.Ambient, OutdoorAmbient = Services.Lighting.OutdoorAmbient } local atmosphere, atmoDefault do local e = Services.Lighting:FindFirstChildOfClass("Atmosphere") if e then atmosphere = e else atmosphere = Instance.new("Atmosphere"); atmosphere.Parent = Services.Lighting end atmoDefault = { Density = atmosphere.Density, Haze = atmosphere.Haze, Glare = atmosphere.Glare } end local function applyEnv() if not C.envEnabled then Services.Lighting.ClockTime = defaultEnv.ClockTime; Services.Lighting.Brightness = defaultEnv.Brightness Services.Lighting.FogEnd = defaultEnv.FogEnd; Services.Lighting.Ambient = defaultEnv.Ambient; Services.Lighting.OutdoorAmbient = defaultEnv.OutdoorAmbient if atmosphere and atmoDefault then atmosphere.Density = atmoDefault.Density; atmosphere.Haze = atmoDefault.Haze; atmosphere.Glare = atmoDefault.Glare end return end Services.Lighting.ClockTime = C.envClockTime; Services.Lighting.Brightness = C.envBrightness Services.Lighting.FogEnd = C.envFogEnd; Services.Lighting.Ambient = C.envAmbient; Services.Lighting.OutdoorAmbient = C.envOutdoorAmbient if atmosphere then atmosphere.Density = C.envAtmosphereDensity; atmosphere.Haze = C.envAtmosphereHaze; atmosphere.Glare = C.envAtmosphereGlare end end task.spawn(function() while not S.unloaded do task.wait(0.5); if C.envEnabled then applyEnv() end end end) local boxes = {} local function mkBox(p) local f = Instance.new("Folder", boxesF); f.Name = p.Name local L = {} for i=1,4 do local fr = Instance.new("Frame", f); fr.BorderSizePixel = 0; fr.BackgroundColor3 = C.theme; fr.Visible = false; fr.ZIndex = 2; L[i] = fr end boxes[p] = {f=f, L=L} end local function rmBox(p) if boxes[p] and boxes[p].f then boxes[p].f:Destroy() end; boxes[p] = nil end local function drawLine(fr, a, b, t) local dx, dy = b.X-a.X, b.Y-a.Y; local len = math.sqrt(dx*dx+dy*dy) if len ~= len or len < 1 then fr.Visible = false; return end fr.AnchorPoint = Vector2.new(0.5,0.5); fr.Position = UDim2.fromOffset((a.X+b.X)/2, (a.Y+b.Y)/2) fr.Size = UDim2.fromOffset(len, t); fr.Rotation = math.deg(math.atan2(dy, dx)); fr.Visible = true end local function updBox(p) if not boxes[p] then mkBox(p) end local B = boxes[p] if not C.boxes then for i=1,4 do B.L[i].Visible = false end; return end local ch = p.Character; local hum = ch and ch:FindFirstChildOfClass("Humanoid") if not hum or hum.Health <= 0 then for i=1,4 do B.L[i].Visible = false end; return end local head = ch:FindFirstChild("Head"); local hrp = ch:FindFirstChild("HumanoidRootPart") local uH = false if C.headFallback and head and hrp then local c = S.hrpCache[ch] if c == nil then c = (hrp.Position - head.Position).Magnitude <= C.hrpHeadMaxDist S.hrpCache[ch] = c end uH = not c end local topY, botY, cx, cz if uH and head then topY = head.Position.Y + head.Size.Y/2; botY = head.Position.Y - 4.5; cx = head.Position.X; cz = head.Position.Z elseif head and hrp then topY = head.Position.Y + head.Size.Y/2; botY = hrp.Position.Y - (hum.HipHeight or 2); cx = hrp.Position.X; cz = hrp.Position.Z elseif hrp then topY = hrp.Position.Y + 3; botY = hrp.Position.Y - (hum.HipHeight or 2); cx = hrp.Position.X; cz = hrp.Position.Z else for i=1,4 do B.L[i].Visible = false end; return end topY = topY + C.espTopLift; botY = botY + C.espBottomLift; local H = topY - botY if H < 1 or H ~= H then for i=1,4 do B.L[i].Visible = false end; return end local W = H * C.espWidthRatio; local cy = (topY + botY) / 2; local hx, hy, hz = W/2, H/2, W/2 local mnX, mnY, mxX, mxY = math.huge, math.huge, -math.huge, -math.huge; local any = false for sx=-1,1,2 do for sy=-1,1,2 do for sz=-1,1,2 do local sp, on = Camera:WorldToViewportPoint(Vector3.new(cx+sx*hx, cy+sy*hy, cz+sz*hz)) if on and sp.Z > 0 then any = true if sp.X < mnX then mnX = sp.X end; if sp.X > mxX then mxX = sp.X end if sp.Y < mnY then mnY = sp.Y end; if sp.Y > mxY then mxY = sp.Y end end end end end if not any then for i=1,4 do B.L[i].Visible = false end; return end local tl = Vector2.new(mnX, mnY); local br = Vector2.new(mxX, mxY) local col = getEnemyColorCached(p) if C.highlightTarget and (S.target == p or S.latchTarget == p) then col = C.targetColor end for i=1,4 do B.L[i].BackgroundColor3 = col end drawLine(B.L[1], tl, Vector2.new(br.X, tl.Y), 1.5); drawLine(B.L[2], Vector2.new(br.X, tl.Y), br, 1.5) drawLine(B.L[3], br, Vector2.new(tl.X, br.Y), 1.5); drawLine(B.L[4], Vector2.new(tl.X, br.Y), tl, 1.5) end local espO, arrows = {}, {} local function rmESP(char) local d = espO[char]; if not d then return end pcall(function() if d.hl then d.hl:Destroy() end end); pcall(function() if d.bb then d.bb:Destroy() end end) espO[char] = nil end local function clrESP() for c in pairs(espO) do rmESP(c) end espO = {} end local function mkESP(plr) local char = plr.Character; if not char or not char:FindFirstChild("HumanoidRootPart") then return end if espO[char] then return end local hl = Instance.new("Highlight"); hl.FillTransparency = 0.85; hl.OutlineTransparency = 0; hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop; hl.Adornee = char; hl.Parent = char local bb = Instance.new("BillboardGui"); bb.Size = UDim2.new(0,200,0,40); bb.StudsOffset = Vector3.new(0,2.5,0); bb.AlwaysOnTop = true; bb.Parent = char; bb.Adornee = char:FindFirstChild("Head") local lbl = Instance.new("TextLabel"); lbl.Size = UDim2.new(1,0,1,0); lbl.BackgroundTransparency = 1; lbl.Font = Enum.Font.GothamBold; lbl.TextSize = 14; lbl.TextStrokeTransparency = 0.3; lbl.TextStrokeColor3 = Color3.new(0,0,0); lbl.Text = "..."; lbl.Parent = bb espO[char] = {hl=hl, bb=bb, label=lbl, player=plr} end task.spawn(function() while not S.unloaded do task.wait(0.1) if not C.espEnabled then if next(espO) then clrESP() end else for char in pairs(espO) do local hum = char:FindFirstChildOfClass("Humanoid"); if not char.Parent or not hum or hum.Health <= 0 then rmESP(char) end end local lp = LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") for _, plr in ipairs(Services.Players:GetPlayers()) do if plr ~= LP and plr.Character and not isWL(plr) then local char = plr.Character; local data = espO[char] if not data then pcall(mkESP, plr); data = espO[char] end if data then local root = char:FindFirstChild("HumanoidRootPart"); local hum = char:FindFirstChildOfClass("Humanoid"); local head = char:FindFirstChild("Head") if root and hum and head and hum.Health > 0 then local col = getEnemyColorCached(plr) if C.highlightTarget and (S.target == plr or S.latchTarget == plr) then col = C.targetColor end if data.hl then data.hl.OutlineColor = col; data.hl.FillColor = col; data.hl.Enabled = true end local parts = {}; if C.espTeam then table.insert(parts, plr.Team and plr.Team.Name or "-") end if C.espDist and lp then table.insert(parts, math.floor((root.Position - lp.Position).Magnitude).."м") end table.insert(parts, plr.Name); data.label.Text = table.concat(parts, " | "); data.label.TextColor3 = col; data.bb.Adornee = head end end end end end end end) local function mkArrow(p) local c = Instance.new("Frame", arrowF); c.Name = p.Name; c.Size = UDim2.new(0,30,0,30); c.AnchorPoint = Vector2.new(0.5,0.5); c.BackgroundTransparency = 1; c.Visible = false; c.ZIndex = 8 local l1 = Instance.new("Frame", c); l1.Size = UDim2.new(0,18,0,3); l1.Position = UDim2.new(0.5,0,0.5,0); l1.AnchorPoint = Vector2.new(1,0.5); l1.Rotation = -35; l1.BackgroundColor3 = C.espCustomColor; l1.BorderSizePixel = 0; Instance.new("UICorner", l1).CornerRadius = UDim.new(1,0) local l2 = Instance.new("Frame", c); l2.Size = UDim2.new(0,18,0,3); l2.Position = UDim2.new(0.5,0,0.5,0); l2.AnchorPoint = Vector2.new(1,0.5); l2.Rotation = 35; l2.BackgroundColor3 = C.espCustomColor; l2.BorderSizePixel = 0; Instance.new("UICorner", l2).CornerRadius = UDim.new(1,0) arrows[p] = c; return c end task.spawn(function() while not S.unloaded do task.wait(0.05) if not C.headArrows then for _, f in pairs(arrows) do f.Visible = false end else local vp = Camera.ViewportSize; if not vp or vp.X <= 0 then task.wait(0.1) else local cx, cy = vp.X/2, vp.Y/2; local alive = {} for _, p in ipairs(Services.Players:GetPlayers()) do if p ~= LP and isEnemy(p) and p.Character then local hum = p.Character:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 then local head = p.Character:FindFirstChild("Head") if head then local f = arrows[p] or mkArrow(p); local col = getEnemyColorCached(p) for _, l in ipairs(f:GetChildren()) do if l:IsA("Frame") then l.BackgroundColor3 = col end end local sp, onS = Camera:WorldToViewportPoint(head.Position) if onS and sp.Z > 0 then f.Visible = false else local dx, dy = sp.X-cx, sp.Y-cy; if sp.Z < 0 then dx, dy = -dx, -dy end local mag = math.sqrt(dx*dx+dy*dy) if mag > 1 then dx, dy = dx/mag, dy/mag; local ed = math.min(vp.X, vp.Y) * 0.4 f.Position = UDim2.fromOffset(math.clamp(cx+dx*ed,25,vp.X-25), math.clamp(cy+dy*ed,25,vp.Y-25)) f.Rotation = math.deg(math.atan2(dy, dx)); f.Visible = true else f.Visible = false end end alive[p] = true end end end end for p in pairs(arrows) do if not alive[p] then arrows[p].Visible = false end end end end end end) local CC = {Color3.fromRGB(255,220,100),Color3.fromRGB(255,180,80),Color3.fromRGB(255,240,180),Color3.fromRGB(250,200,120)} local COMBS = {Color3.fromRGB(220,40,40),Color3.fromRGB(255,60,60)} local function rstChk(char) local d = S.chickenedChars[char]; if not d then return end if d.folder then d.folder:Destroy() end if d.originals then for part, c in pairs(d.originals) do pcall(function() if part and part.Parent then part.Color = c end end) end end S.chickenedChars[char] = nil end local function chknz(char) if not char or S.chickenedChars[char] then return end local head = char:FindFirstChild("Head"); if not head then return end local d = {originals={}, folder=Instance.new("Folder", char)}; d.folder.Name = "ChickenFolder"; local col = CC[math.random(1,#CC)] for _, obj in ipairs(char:GetDescendants()) do if obj:IsA("BasePart") and not obj:FindFirstChildOfClass("BillboardGui") then d.originals[obj] = obj.Color; pcall(function() obj.Color = col end) end end pcall(function() local comb = Instance.new("Part"); comb.Shape = Enum.PartType.Ball; comb.Size = Vector3.new(0.4,0.8,0.4); comb.Color = COMBS[math.random(1,#COMBS)] comb.CanCollide = false; comb.Massless = true; comb.Parent = d.folder local w = Instance.new("WeldConstraint"); w.Part0 = comb; w.Part1 = head; w.Parent = comb; comb.CFrame = head.CFrame * CFrame.new(0,0.4,0) end) S.chickenedChars[char] = d end local function updChk() if not C.chickenMode then for c in pairs(S.chickenedChars) do rstChk(c) end; return end for _, p in ipairs(Services.Players:GetPlayers()) do if p ~= LP and p.Character then pcall(chknz, p.Character) end end end local function effAimSmooth() return C.legitMode and C.legitSmooth or C.aimSmooth end local function effAimDelay() return C.legitMode and C.legitAimDelay or C.aimDelay end local function effCps() return C.legitMode and C.legitCps or C.cps end local function effThreshold() return C.legitMode and C.legitThreshold or C.aimLockedThreshold end local function effFovRatio() return C.legitMode and C.legitFovRatio or C.fovRatio end local function effPredict() return C.legitMode and C.legitPredict or C.aimPredict end local function calcAim(dt) S.desiredCFrame = nil if not S.target or not S.target.Character then return end local part = getPart(S.target); if not part then return end local lch = LP.Character; local lhead = lch and lch:FindFirstChild("Head"); if not lhead then return end if not S.camOffsetFromHead then return end local origin = (lhead.CFrame * S.camOffsetFromHead).Position; if origin ~= origin then return end local aimPt = part.Position; local predict = effPredict() if predict > 0 and part.Velocity then local ping = math.min(S.cachedPing or 0.05, 0.25); aimPt = aimPt + part.Velocity * ping * predict end if C.legitMode and C.legitNoise then local dist = (aimPt - origin).Magnitude; local amp = math.min(dist * 0.0005, 0.15) aimPt = aimPt + Vector3.new((math.random()-0.5)*amp, (math.random()-0.5)*amp, (math.random()-0.5)*amp) end if (aimPt - origin).Magnitude < 2 then return end local newCf = CFrame.new(origin, aimPt); local smooth = effAimSmooth() if smooth >= 1 then S.desiredCFrame = newCf else S.desiredCFrame = Camera.CFrame:Lerp(newCf, math.clamp(1 - math.exp(-smooth * (dt or 0.016) * 60), 0.05, 1)) end end local function doShoot() local d = effAimDelay(); if d > 0 then task.wait(d / 1000) end playAtk(); S.lastOurShot = os.clock(); if UI.spawnTracer then UI.spawnTracer() end if safeClick("Left") then return end local ch = LP.Character; local tool = ch and ch:FindFirstChildOfClass("Tool"); if tool then pcall(function() tool:Activate() end) end end local function shotDelay() local b = 1 / effCps(); if C.randomDelay then return b * (0.7 + math.random()*0.6) end; return b end local function pickLT(maxRange) local lhrp = LP.Character and LP.Character:FindFirstChild("HumanoidRootPart"); if not lhrp then return nil end local myPos = lhrp.Position; local best, bd = nil, math.huge; local limit = maxRange; if not limit or limit <= 0 then limit = C.maxDist end for _, p in ipairs(Services.Players:GetPlayers()) do if p ~= LP and isEnemy(p) and p.Character then local hum = p.Character:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 then local hrp = p.Character:FindFirstChild("HumanoidRootPart") if hrp then local dist = (myPos - hrp.Position).Magnitude if dist <= limit and dist < bd then if not C.magnetWallCheck or visibleCached(p) then best = p; bd = dist end end end end end end return best end local function runLatch(now, dt) local useManual = S.latchKeyDown and C.latchEnabled; local useAuto = C.latchAuto or C.latchAutoSpin if not (useManual or useAuto) then S.latchTarget = nil; return end local targetValid = false if S.latchTarget then local th = S.latchTarget.Character and S.latchTarget.Character:FindFirstChildOfClass("Humanoid") if th and th.Health > 0 and not isWL(S.latchTarget) then targetValid = true end end if not targetValid then if useManual then S.latchTarget = pickLT(C.latchRange) else S.latchTarget = pickLT(C.latchAutoRange) end elseif useAuto and not useManual and now - S.autoLastRepick > 0.4 then S.autoLastRepick = now; local newT = pickLT(C.latchAutoRange); if newT and newT ~= S.latchTarget then S.latchTarget = newT end end if not S.latchTarget or not S.latchTarget.Character then return end local lhrp = LP.Character and LP.Character:FindFirstChild("HumanoidRootPart"); local theirHrp = S.latchTarget.Character:FindFirstChild("HumanoidRootPart") if not lhrp or not theirHrp then return end local standDist = math.max(1.5, C.latchDist); local curDist = (lhrp.Position - theirHrp.Position).Magnitude local maxAllowed if useManual and C.latchRange > 0 then maxAllowed = C.latchRange * C.latchRangeMult elseif useManual then maxAllowed = 99999 else maxAllowed = C.latchAutoRange * C.latchRangeMult end if curDist > maxAllowed then S.latchTarget = nil; S.target = nil; return end local newPos if C.latchAutoSpin then S.latchSpinAngle = S.latchSpinAngle + C.latchAutoSpinSpeed * 3 * (dt or 0.03) if S.latchSpinAngle > math.pi * 2 then S.latchSpinAngle = S.latchSpinAngle - math.pi * 2 end local baseDir if C.latchBehind then local tl = theirHrp.CFrame.LookVector; baseDir = Vector3.new(-tl.X, 0, -tl.Z) if baseDir.Magnitude < 0.1 then baseDir = Vector3.new(0,0,-1) end; baseDir = baseDir.Unit else baseDir = lhrp.Position - theirHrp.Position; baseDir = Vector3.new(baseDir.X, 0, baseDir.Z) if baseDir.Magnitude < 0.1 then baseDir = Vector3.new(0,0,-1) end; baseDir = baseDir.Unit end local right = Vector3.new(-baseDir.Z, 0, baseDir.X); local cosA, sinA = math.cos(S.latchSpinAngle), math.sin(S.latchSpinAngle) newPos = theirHrp.Position + (baseDir * cosA + right * sinA) * standDist elseif C.latchBehind then local tl = theirHrp.CFrame.LookVector; local backDir = Vector3.new(-tl.X, 0, -tl.Z) if backDir.Magnitude < 0.1 then backDir = lhrp.Position - theirHrp.Position; backDir = Vector3.new(backDir.X, 0, backDir.Z) if backDir.Magnitude < 0.1 then backDir = Vector3.new(0,0,-1) end; backDir = backDir.Unit else backDir = backDir.Unit end newPos = theirHrp.Position + backDir * standDist else local dir = lhrp.Position - theirHrp.Position; dir = Vector3.new(dir.X, 0, dir.Z) if dir.Magnitude < 0.1 then dir = Vector3.new(0,0,-1) end; newPos = theirHrp.Position + dir.Unit * standDist end local smooth = C.magnetSmooth or 1.0 if smooth < 1.0 then newPos = lhrp.Position:Lerp(newPos, math.clamp(1 - math.exp(-smooth * (dt or 0.016) * 60), 0.05, 1)) end if C.magnetWallCheck then local dir = newPos - lhrp.Position if dir.Magnitude > 0.5 then rayLatch.FilterDescendantsInstances = safeFilter({ LP.Character, S.latchTarget.Character }) local hit = workspace:Raycast(lhrp.Position, dir, rayLatch) if hit and hit.Instance and hit.Instance.CanCollide ~= false then local safeDist = math.max(0, (hit.Position - lhrp.Position).Magnitude - 1.0) if safeDist > 0.1 then newPos = lhrp.Position + dir.Unit * safeDist else return end end end end if now - S.lastLatchTp < 0.02 then return end; S.lastLatchTp = now local _, currentYaw = lhrp.CFrame:ToEulerAnglesYXZ() pcall(function() lhrp.CFrame = CFrame.new(newPos) * CFrame.Angles(0, currentYaw, 0); lhrp.Velocity = Vector3.new(0, lhrp.Velocity.Y, 0) end) end local function chRain(pos) if not C.chickenRain or S.chRainActive >= S.chRainMax then return end S.chRainActive = S.chRainActive + 1; task.delay(2, function() S.chRainActive = math.max(0, S.chRainActive - 1) end) pcall(function() for i = 1, 6 do task.spawn(function() local sp = pos + Vector3.new(math.random(-4,4), 8+i*0.5, math.random(-4,4)) local part = Instance.new("Part"); part.Size = Vector3.new(0.6,0.6,0.6); part.Position = sp; part.Anchored = true; part.CanCollide = false; part.CanQuery = false; part.CanTouch = false; part.Material = Enum.Material.Neon; part.Color = Color3.fromRGB(255,200,100); part.Parent = workspace local bb = Instance.new("BillboardGui", part); bb.Size = UDim2.new(0,50,0,50); bb.AlwaysOnTop = true local txt = Instance.new("TextLabel", bb); txt.Size = UDim2.new(1,0,1,0); txt.BackgroundTransparency = 1; txt.Text = "КУРИЦА"; txt.TextScaled = true for t = 0, 1, 0.05 do if not part or not part.Parent then break end; part.CFrame = CFrame.new(sp + Vector3.new(0, -15*t, 0)); part.Transparency = t; task.wait(0.05) end if part then part:Destroy() end end) end end) end local function trackKills() local now = os.clock() for _, p in ipairs(Services.Players:GetPlayers()) do if p ~= LP then local hum = p.Character and p.Character:FindFirstChildOfClass("Humanoid") if hum then local prev = S.lastKC[p]; local hp = hum.Health if prev and prev > hp and (now - S.lastOurShot) < 0.5 and (S.target == p or S.damagedByUs[p]) then S.damagedByUs[p] = now end if prev and prev > 0 and hp <= 0 then local mine = false if not C.killstreakOnlyMine then mine = true elseif S.damagedByUs[p] and (now - S.damagedByUs[p]) < 3.0 then mine = true end if mine then playKill(); local root = p.Character and p.Character:FindFirstChild("HumanoidRootPart"); if root then chRain(root.Position) end regKill(); if C.deathClicker then fireDeathClicks() end if C.killChat then task.delay(C.killChatDelay or 0.1, function() sendChatMessage((C.killChatMsg or "gg") .. " " .. p.Name) end) end end S.damagedByUs[p] = nil end S.lastKC[p] = hp end end end end local function runMovement(now, dt) local ch = LP.Character; if not ch then return end if C.bhop and S.space then local hum = ch:FindFirstChildOfClass("Humanoid"); local hrp = ch:FindFirstChild("HumanoidRootPart") if hum and hrp and hum.Health > 0 then local grounded = hum.FloorMaterial ~= Enum.Material.Air if grounded then hum.Jump = true end if C.bhopBoost > 0 and not grounded then local v = hrp.Velocity; local flat = Vector3.new(v.X, 0, v.Z) if flat.Magnitude > 0.5 then local boost = flat.Unit * C.bhopBoost * dt; hrp.Velocity = Vector3.new(v.X+boost.X, v.Y, v.Z+boost.Z) end end end end if C.tp then S.tpApplied = true; pcall(function() if Camera.CameraMode ~= Enum.CameraMode.Classic then Camera.CameraMode = Enum.CameraMode.Classic end end) if now - S.lastTpVis > 0.05 then S.lastTpVis = now for _, o in ipairs(ch:GetDescendants()) do if o:IsA("BasePart") or o:IsA("Decal") then pcall(function() o.LocalTransparencyModifier = 0 end) end end end local hum = ch:FindFirstChildOfClass("Humanoid"); if hum and Camera.CameraSubject ~= hum then pcall(function() Camera.CameraSubject = hum end) end local cam = Camera.CFrame; local look = cam.LookVector; local orig = cam.Position rpTP.FilterDescendantsInstances = safeFilter({ ch }); local hit = workspace:Raycast(orig, -look*C.tpDist, rpTP) local d = C.tpDist; if hit then d = (hit.Position - orig).Magnitude - 0.5; if d < 1 then d = 1 end end pcall(function() Camera.CFrame = CFrame.new(orig - look*d, (orig - look*d) + look) end) elseif S.tpApplied then S.tpApplied = false for _, o in ipairs(ch:GetDescendants()) do if o:IsA("BasePart") or o:IsA("Decal") then pcall(function() o.LocalTransparencyModifier = 1 end) end end end end local function runAA(now, dt, aimActive) local ch = LP.Character; if not ch then return end local hum = ch:FindFirstChildOfClass("Humanoid"); local hrp = ch:FindFirstChild("HumanoidRootPart") if not hum or not hrp then return end if not (C.spinbot or C.fakeAngles or C.fakeLag) then if S.autoRotateWasOn then hum.AutoRotate = true; S.autoRotateWasOn = false end; return end if now - S.lastAAApply < 0.02 then return end; S.lastAAApply = now if hum.AutoRotate then hum.AutoRotate = false; S.autoRotateWasOn = true end local yaw = nil; local baseYaw = math.atan2(-hrp.CFrame.LookVector.X, -hrp.CFrame.LookVector.Z) if C.spinbot then local shouldSpin = true; if C.spinOnlyAim and not aimActive then shouldSpin = false end if shouldSpin then S.spinAngle = (S.spinAngle + C.spinSpeed*math.pi*2*dt) % (math.pi*2); yaw = S.spinAngle end end if C.fakeAngles then if C.fakeAnglesMode == "jitter" then if now - S.lastFakeAngleChg > C.fakeAnglesInterval then S.lastFakeAngleChg = now; yaw = math.pi + math.rad(math.random(-C.fakeAnglesJitter, C.fakeAnglesJitter)) else yaw = S.fakeAngleYaw end else S.fakeAngleYaw = (S.fakeAngleYaw + C.fakeAnglesSpinSpeed*math.pi*2*dt) % (math.pi*2); yaw = S.fakeAngleYaw end end if C.fakeLag and yaw == nil then if now - S.lastFakeLagTick > 0.03 then S.lastFakeLagTick = now; yaw = baseYaw + math.rad((math.random()*2-1)*180*C.fakeLagIntensity) else yaw = S.fakeAngleYaw end end if yaw then S.fakeAngleYaw = yaw; pcall(function() hrp.CFrame = CFrame.new(hrp.Position) * CFrame.Angles(0, yaw, 0) end) end end local function detectHits() for _, p in ipairs(Services.Players:GetPlayers()) do if p ~= LP then local hum = p.Character and p.Character:FindFirstChildOfClass("Humanoid") if hum then local prev = S.healthTrack[p]; local curr = hum.Health if prev and curr < prev and (os.clock() - S.lastOurShot) < 0.5 and (S.target == p or S.damagedByUs[p]) then local hs = (prev - curr) >= 25 if C.hitmarker then local vp = Camera.ViewportSize if vp then hm.Position = UDim2.fromOffset(vp.X/2, vp.Y/2); hm.TextColor3 = hs and Color3.fromRGB(255,200,40) or Color3.fromRGB(255,60,60); hm.Visible = true; hm.TextTransparency = 0; S.hitmarkerHideAt = os.clock() + 0.15 end end playHit(hs) end S.healthTrack[p] = curr end end end end local function pickBest() if S.candN == 0 then return nil end local bi, bv = nil, math.huge for i = 1, S.candN do if S.candDist[i] <= C.maxDist then local score = C.targetByDistance and S.candDist[i] or S.candDS[i]; if score < bv then bv = score; bi = i end end end return bi end local function updateCand(cx, cy, fovPx, lhrpPos) for i = 1, S.candN do S.candP[i] = nil; S.candDS[i] = nil; S.candDist[i] = nil end; S.candN = 0 if not lhrpPos then return end for _, p in ipairs(Services.Players:GetPlayers()) do if p ~= LP and isEnemy(p) then local ch = p.Character; local hum = ch and ch:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 then local part = getPartCached(p) if part then local sp, onScr = Camera:WorldToViewportPoint(part.Position) if onScr and sp.Z > 0 then local dx, dy = sp.X-cx, sp.Y-cy; local dS = math.sqrt(dx*dx+dy*dy) if dS <= fovPx then S.candN = S.candN + 1; S.candP[S.candN] = p; S.candDS[S.candN] = dS; S.candDist[S.candN] = (lhrpPos - part.Position).Magnitude end end end end end end end local function updateTarget(aimActive, shootActive, now, lhrpPos) if C.latchAuto and C.latchAutoAim and S.latchTarget then S.target = S.latchTarget if not S.targetDist or S.targetDist == 0 then local theirHrp = S.latchTarget.Character and S.latchTarget.Character:FindFirstChild("HumanoidRootPart") if theirHrp and lhrpPos then S.targetDist = math.floor((lhrpPos - theirHrp.Position).Magnitude) end end end if S.target then local th = S.target.Character and S.target.Character:FindFirstChildOfClass("Humanoid") if not th or th.Health <= 0 or isWL(S.target) then S.target = nil else local found, idx = false, 0 for i = 1, S.candN do if S.candP[i] == S.target then found, idx = true, i; break end end if not found or not visibleCached(S.target) then S.target = nil else S.targetDist = math.floor(S.candDist[idx]) local bi = pickBest() if bi then local i = bi if S.candP[i] ~= S.target and S.candDist[i] <= C.maxDist and visibleCached(S.candP[i]) then local sw = false if C.targetByDistance then if S.candDist[i] < S.candDist[idx]-30 then sw = true end else if S.candDS[i] < S.candDS[idx]-40 then sw = true end end if sw then S.target = S.candP[i]; S.targetDist = math.floor(S.candDist[i]) end end end end end end if not S.target and S.candN > 0 and (aimActive or shootActive) then local bi = pickBest() if bi then local i = bi if S.candDist[i] <= C.maxDist and visibleCached(S.candP[i]) then S.target = S.candP[i]; S.targetDist = math.floor(S.candDist[i]) end end end end local function applyAimCam(dt, aimActive, now) if S.target and aimActive then _G.__rstrAim = now if Camera.CameraType ~= Enum.CameraType.Scriptable then local lch = LP.Character; local lhead = lch and lch:FindFirstChild("Head") if lhead then S.camOffsetFromHead = lhead.CFrame:Inverse() * Camera.CFrame end pcall(function() Camera.CameraType = Enum.CameraType.Scriptable end) end S.weSetScriptable = (Camera.CameraType == Enum.CameraType.Scriptable) if S.weSetScriptable then calcAim(dt) if S.desiredCFrame then pcall(function() Camera.CFrame = S.desiredCFrame end) end end else if S.weSetScriptable or Camera.CameraType == Enum.CameraType.Scriptable then releaseCam(); S.camOffsetFromHead = nil; S.desiredCFrame = nil end end end local function tryFire(now, shootActive, cx, cy, fovPx) if not (S.target and shootActive and now - S.lastShot >= S.lastShotDelay) then return end if not visibleCached(S.target) then return end local canShoot = true; local thr = math.min(effThreshold(), fovPx * 0.5) if thr > 0 then local tp = getPartCached(S.target) if tp then local sp, onScr = Camera:WorldToViewportPoint(tp.Position) if onScr and sp.Z > 0 then if math.sqrt((sp.X-cx)^2 + (sp.Y-cy)^2) > thr then canShoot = false end else canShoot = false end else canShoot = false end end if canShoot then S.lastShot = now; S.lastShotDelay = shotDelay(); task.spawn(doShoot) end end local function mainStep(dt) if S.unloaded then return end Camera = workspace.CurrentCamera; if not Camera then return end local now = os.clock(); local vp = Camera.ViewportSize; if not vp or vp.X <= 0 then return end local cx, cy = vp.X/2, vp.Y/2 S.visCache = {}; S.partCache = {} S.fpsFrames = S.fpsFrames + 1 if now - S.fpsLastTime >= 1 then S.fpsCounter = S.fpsFrames / (now - S.fpsLastTime); S.fpsFrames = 0; S.fpsLastTime = now end if now - S.lastVpUpd > 0.5 then S.lastVpUpd = now; S.cachedViewport = vp end if now - S.lastPingUpd > 1 then S.lastPingUpd = now; pcall(function() if LP.GetNetworkPing then local p = LP:GetNetworkPing(); if p and p == p and p > 0 then S.cachedPing = p > 1 and p / 1000 or p end end end) end if C.autoClicker and now - S.lastAutoClick >= C.autoClickerInterval then S.lastAutoClick = now; local px, py = getClickPos(C.autoClickerRandom, C.autoClickerX, C.autoClickerY); task.spawn(doClick, px, py) end if S.AC.running then local guard = 0 while now >= S.AC.nextClickAt and guard < 3 do task.spawn(acDoOneClick); S.AC.currentCount = S.AC.currentCount + 1 if not C.acRepeatUntil and S.AC.currentCount >= (C.acRepeatCount or 1) then S.AC.running = false; break end S.AC.nextClickAt = S.AC.nextClickAt + acInterval(); guard = guard + 1 end if S.AC.nextClickAt < now then S.AC.nextClickAt = now + acInterval() end end if comboLbl.TextTransparency < 1 and now > S.comboHideAt then local t = math.min(1, comboLbl.TextTransparency + 0.04); comboLbl.TextTransparency = t; comboLbl.TextStrokeTransparency = t end if S.comboCount > 0 and now - S.comboLastKill > C.killstreakWindow then S.comboCount = 0 end local lhrp = LP.Character and LP.Character:FindFirstChild("HumanoidRootPart"); local lhrpPos = lhrp and lhrp.Position local fovPx = math.min(vp.X, vp.Y) * 0.5 * effFovRatio() if now - S.lastBoxUpd >= 0.033 then S.lastBoxUpd = now for _, p in ipairs(Services.Players:GetPlayers()) do if p ~= LP and isEnemy(p) then pcall(updBox, p) elseif boxes[p] then for i=1,4 do boxes[p].L[i].Visible = false end end end end if now - S.lastChkUpd > 1 then S.lastChkUpd = now; updChk() end if C.fovCircle then fovC.Position = UDim2.fromOffset(cx, cy); fovC.Size = UDim2.fromOffset(fovPx*2, fovPx*2) if S.target then fovS.Transparency = 0.2; fovS.Color = C.targetColor; if C.fovPulse then S.fovPulseT = S.fovPulseT + 0.15; fovS.Thickness = 1 + math.sin(S.fovPulseT) * 0.9 else fovS.Thickness = 1 end else fovS.Transparency = 0.7; fovS.Color = C.theme; fovS.Thickness = 1 end fovC.Visible = true else fovC.Visible = false end trackKills(); detectHits(); updTracers() if hm.Visible then if now > S.hitmarkerHideAt then hm.Visible = false else hm.TextTransparency = 1 - (S.hitmarkerHideAt - now)/0.15 end end updateCand(cx, cy, fovPx, lhrpPos) local aimActive = ((C.aim or C.legitMode) and S.rmb) or C.alwaysAim or (C.latchAuto and C.latchAutoAim and S.latchTarget ~= nil) local shootActive = C.shoot and not C.legitMode updateTarget(aimActive, shootActive, now, lhrpPos) runLatch(now, dt); runAA(now, dt, aimActive); runMovement(now, dt) applyAimCam(dt, aimActive, now) tryFire(now, shootActive, cx, cy, fovPx) end pcall(function() Services.Run:UnbindFromRenderStep(RENDER_NAME) end) Services.Run:BindToRenderStep(RENDER_NAME, 999, function(dt) local ok, err = pcall(mainStep, dt) if not ok then S.mainErr = S.mainErr + 1 if S.mainErr <= 3 or S.mainErr % 200 == 0 then warn("[ROOSTER] #"..S.mainErr.." "..tostring(err)) end if S.mainErr > 500 then S.unloaded = true; pcall(function() Services.Run:UnbindFromRenderStep(RENDER_NAME) end); releaseCam() end end end) warn("[ROOSTER] Render loop bound") task.spawn(function() while not S.unloaded do task.wait(0.2) if S.weSetScriptable and Camera.CameraType == Enum.CameraType.Scriptable and os.clock() - (_G.__rstrAim or 0) > 0.5 then releaseCam(); S.camOffsetFromHead = nil; S.desiredCFrame = nil end end end) Services.Players.PlayerRemoving:Connect(function(p) S.healthTrack[p] = nil; S.lastKC[p] = nil; S.damagedByUs[p] = nil; S.partCache[p] = nil if boxes[p] then pcall(rmBox, p) end; if arrows[p] then pcall(function() arrows[p]:Destroy() end); arrows[p] = nil end local char = p.Character; if char and espO[char] then pcall(rmESP, char) end; if char and S.chickenedChars[char] then pcall(rstChk, char) end for k in pairs(S.hrpCache) do if not k.Parent then S.hrpCache[k] = nil end end pcall(function() UI.refreshWL() end) end) Services.Players.PlayerAdded:Connect(function(p) task.delay(0.5, function() pcall(function() UI.refreshWL() end) end) end) -- ===== UI ===== local function bindTheme(inst, prop, kind) if not inst then return end; table.insert(UI.themeRefs, {inst=inst, prop=prop, kind=kind}) end local function pageOrder(page) return (#page:GetChildren())*10 + 5 end local function addH(page, txt, col) local h = Instance.new("TextLabel", page); h.Size = UDim2.new(1,-3,0,18); h.BackgroundColor3 = col or Color3.fromRGB(28,28,34) h.BorderSizePixel = 0; h.Text = txt; h.TextColor3 = C.theme; h.Font = Enum.Font.GothamBold; h.TextSize = 10 h.TextXAlignment = Enum.TextXAlignment.Left; h.LayoutOrder = pageOrder(page) Instance.new("UICorner", h).CornerRadius = UDim.new(0,3); Instance.new("UIPadding", h).PaddingLeft = UDim.new(0,8); bindTheme(h, "TextColor3") end local function addT(page, name, key, init, cb) local b = Instance.new("TextButton", page); b.Size = UDim2.new(1,-3,0,24); b.BackgroundColor3 = init and C.onColor or C.offColor b.BorderSizePixel = 0; b.Text = ""; b.AutoButtonColor = false; b.LayoutOrder = pageOrder(page) Instance.new("UICorner", b).CornerRadius = UDim.new(0,3); b:SetAttribute("isOn", init); bindTheme(b, "BackgroundColor3", "toggle_bg") local ind = Instance.new("Frame", b); ind.Size = UDim2.new(0,2,1,-8); ind.Position = UDim2.new(0,5,0,4); ind.BackgroundColor3 = init and C.theme or Color3.fromRGB(55,55,65); ind.BorderSizePixel = 0; ind.Active = false; bindTheme(ind, "BackgroundColor3", "toggle_ind") local lbl = Instance.new("TextLabel", b); lbl.Size = UDim2.new(1,-60,1,0); lbl.Position = UDim2.new(0,14,0,0); lbl.BackgroundTransparency = 1; lbl.Text = name; lbl.TextColor3 = contrastText(init and C.onColor or C.offColor, init, false); lbl.TextXAlignment = Enum.TextXAlignment.Left; lbl.Font = Enum.Font.GothamMedium; lbl.TextSize = 10; lbl.Active = false; bindTheme(lbl, "TextColor3", "toggle_lbl") local st = Instance.new("TextLabel", b); st.Size = UDim2.new(0,32,1,0); st.Position = UDim2.new(1,-36,0,0); st.BackgroundTransparency = 1; st.Text = init and "ВКЛ" or "ВЫКЛ"; st.TextColor3 = contrastText(init and C.onColor or C.offColor, init, true); st.Font = Enum.Font.GothamBold; st.TextSize = 9; st.Active = false; bindTheme(st, "TextColor3", "toggle_st") table.insert(UI.toggleRegistry, {btn=b, ind=ind, lbl=lbl, st=st, key=key}) b.MouseButton1Click:Connect(function() local v = cb(); if v == nil then return end b:SetAttribute("isOn", v); b.BackgroundColor3 = v and C.onColor or C.offColor; ind.BackgroundColor3 = v and C.theme or Color3.fromRGB(55,55,65) lbl.TextColor3 = contrastText(v and C.onColor or C.offColor, v, false); st.Text = v and "ВКЛ" or "ВЫКЛ"; st.TextColor3 = contrastText(v and C.onColor or C.offColor, v, true) end) end local function addS(page, name, cur, mn, mx, step, cb, key) local row = Instance.new("Frame", page); row.Size = UDim2.new(1,-3,0,34); row.BackgroundColor3 = C.offColor; row.BorderSizePixel = 0; row.LayoutOrder = pageOrder(page); Instance.new("UICorner", row).CornerRadius = UDim.new(0,3); bindTheme(row, "BackgroundColor3", "off_bg") local ttl = Instance.new("TextLabel", row); ttl.Size = UDim2.new(1,-70,0,13); ttl.Position = UDim2.new(0,10,0,3); ttl.BackgroundTransparency = 1; ttl.Text = name; ttl.TextColor3 = Color3.fromRGB(190,190,205); ttl.TextXAlignment = Enum.TextXAlignment.Left; ttl.Font = Enum.Font.GothamMedium; ttl.TextSize = 10 local val = Instance.new("TextLabel", row); val.Size = UDim2.new(0,55,0,13); val.Position = UDim2.new(1,-60,0,3); val.BackgroundTransparency = 1; val.TextColor3 = C.theme; val.TextXAlignment = Enum.TextXAlignment.Right; val.Font = Enum.Font.GothamBold; val.TextSize = 10 local sld = Instance.new("Frame", row); sld.Size = UDim2.new(1,-20,0,5); sld.Position = UDim2.new(0,10,0,23); sld.BackgroundColor3 = Color3.fromRGB(10,10,13); sld.BorderSizePixel = 0 local fill = Instance.new("Frame", sld); fill.BackgroundColor3 = C.theme; fill.BorderSizePixel = 0; bindTheme(fill, "BackgroundColor3"); bindTheme(val, "TextColor3") local function setDisplay(v) v = math.clamp(v, mn, mx); val.Text = (step < 1) and string.format("%.2f", v) or tostring(v); fill.Size = UDim2.new((v-mn)/(mx-mn),0,1,0) end setDisplay(cur) if key then table.insert(UI.sliderRegistry, {refresh = function() setDisplay(C[key]) end}) end local dr = false; local updConnC, updConnE local function upd(x) local rel = math.clamp((x - sld.AbsolutePosition.X) / sld.AbsoluteSize.X, 0, 1); local v = math.clamp(math.floor((mn + rel*(mx-mn))/step + 0.5)*step, mn, mx); setDisplay(v); cb(v) end sld.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dr = true; upd(i.Position.X); if updConnC then updConnC:Disconnect() end; if updConnE then updConnE:Disconnect() end updConnC = Services.UIS.InputChanged:Connect(function(inp) if dr and (inp.UserInputType == Enum.UserInputType.MouseMovement or inp.UserInputType == Enum.UserInputType.Touch) then upd(inp.Position.X) end end) updConnE = Services.UIS.InputEnded:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then dr = false; if updConnC then updConnC:Disconnect() end; if updConnE then updConnE:Disconnect() end end end) end end) end local function addTb(page, name, current, ph, cb, testFn) local row = Instance.new("Frame", page); row.Size = UDim2.new(1,-3,0,48); row.BackgroundColor3 = C.offColor; row.BorderSizePixel = 0; row.LayoutOrder = pageOrder(page); Instance.new("UICorner", row).CornerRadius = UDim.new(0,3); bindTheme(row, "BackgroundColor3", "off_bg") local ttl = Instance.new("TextLabel", row); ttl.Size = UDim2.new(1,-20,0,13); ttl.Position = UDim2.new(0,10,0,3); ttl.BackgroundTransparency = 1; ttl.Text = name; ttl.TextColor3 = Color3.fromRGB(190,190,205); ttl.TextXAlignment = Enum.TextXAlignment.Left; ttl.Font = Enum.Font.GothamMedium; ttl.TextSize = 10 local tbW = testFn and UDim2.new(1,-80,0,22) or UDim2.new(1,-20,0,22) local tb = Instance.new("TextBox", row); tb.Size = tbW; tb.Position = UDim2.new(0,10,0,21); tb.BackgroundColor3 = Color3.fromRGB(10,10,13); tb.BorderSizePixel = 0; tb.Text = tostring(current); tb.PlaceholderText = ph or ""; tb.TextColor3 = Color3.fromRGB(220,220,230); tb.PlaceholderColor3 = Color3.fromRGB(100,100,110); tb.Font = Enum.Font.Code; tb.TextSize = 12; tb.ClearTextOnFocus = false; Instance.new("UICorner", tb).CornerRadius = UDim.new(0,3); Instance.new("UIPadding", tb).PaddingLeft = UDim.new(0,6); tb.FocusLost:Connect(function() cb(tb.Text) end) if testFn then local testBtn = Instance.new("TextButton", row); testBtn.Size = UDim2.new(0,60,0,22); testBtn.Position = UDim2.new(1,-70,0,21); testBtn.BackgroundColor3 = Color3.fromRGB(35,55,80); testBtn.BorderSizePixel = 0; testBtn.Text = "Тест"; testBtn.TextColor3 = Color3.fromRGB(220,230,240); testBtn.Font = Enum.Font.GothamBold; testBtn.TextSize = 10; testBtn.AutoButtonColor = false; Instance.new("UICorner", testBtn).CornerRadius = UDim.new(0,3); testBtn.MouseButton1Click:Connect(function() pcall(testFn) end) end end local function addB(page, name, cb, col) local b = Instance.new("TextButton", page); b.Size = UDim2.new(1,-3,0,24); b.BackgroundColor3 = col or Color3.fromRGB(45,70,50); b.BorderSizePixel = 0; b.Text = name; b.TextColor3 = Color3.fromRGB(220,230,220); b.Font = Enum.Font.GothamBold; b.TextSize = 10; b.AutoButtonColor = false; b.LayoutOrder = pageOrder(page) Instance.new("UICorner", b).CornerRadius = UDim.new(0,3); local origColor = b.BackgroundColor3; local lastClick = 0 b.MouseButton1Click:Connect(function() local now = os.clock(); if now - lastClick < 0.2 then b.BackgroundColor3 = Color3.fromRGB(80,80,90); task.delay(0.1, function() if b and b.Parent then b.BackgroundColor3 = origColor end end); return end; lastClick = now; cb() end) end local function addCycle(page, label, getter, cb, col) local b = Instance.new("TextButton", page); b.Size = UDim2.new(1,-3,0,24); b.BackgroundColor3 = col or Color3.fromRGB(40,40,50); b.BorderSizePixel = 0; b.Text = label .. ": " .. tostring(getter()); b.TextColor3 = Color3.fromRGB(220,230,220); b.Font = Enum.Font.GothamBold; b.TextSize = 10; b.AutoButtonColor = false; b.LayoutOrder = pageOrder(page) Instance.new("UICorner", b).CornerRadius = UDim.new(0,3); b.MouseButton1Click:Connect(function() cb(); b.Text = label .. ": " .. tostring(getter()) end); return b end local function addColor(page, name, getter, setter, defaultVal) local row = Instance.new("Frame", page); row.Size = UDim2.new(1,-3,0,26); row.BackgroundColor3 = C.offColor; row.BorderSizePixel = 0; row.LayoutOrder = pageOrder(page); Instance.new("UICorner", row).CornerRadius = UDim.new(0,3); bindTheme(row, "BackgroundColor3", "off_bg") local lbl = Instance.new("TextLabel", row); lbl.Size = UDim2.new(1,-60,1,0); lbl.Position = UDim2.new(0,10,0,0); lbl.BackgroundTransparency = 1; lbl.Text = name; lbl.TextColor3 = Color3.fromRGB(190,190,205); lbl.TextXAlignment = Enum.TextXAlignment.Left; lbl.Font = Enum.Font.GothamMedium; lbl.TextSize = 10 local swatch = Instance.new("TextButton", row); swatch.Size = UDim2.new(0,24,0,18); swatch.Position = UDim2.new(1,-54,0,4); swatch.BackgroundColor3 = getter(); swatch.BorderSizePixel = 0; swatch.Text = ""; swatch.AutoButtonColor = false; Instance.new("UICorner", swatch).CornerRadius = UDim.new(0,2) if defaultVal then local resetC = Instance.new("TextButton", row); resetC.Size = UDim2.new(0,18,0,18); resetC.Position = UDim2.new(1,-26,0,4); resetC.BackgroundColor3 = Color3.fromRGB(40,40,48); resetC.BorderSizePixel = 0; resetC.Text = "↺"; resetC.TextColor3 = Color3.fromRGB(200,200,210); resetC.Font = Enum.Font.GothamBold; resetC.TextSize = 12; resetC.AutoButtonColor = false; Instance.new("UICorner", resetC).CornerRadius = UDim.new(0,2); resetC.MouseButton1Click:Connect(function() setter(defaultVal); swatch.BackgroundColor3 = defaultVal end) end swatch.MouseButton1Click:Connect(function() UI.currentColorSetter = setter; UI.currentColorSwatch = swatch; UI.currentColorName = name; if UI.cmTitle then UI.cmTitle.Text = name end; if UI.cmStr then UI.cmStr.Color = C.theme end; if UI.cmTitle then UI.cmTitle.TextColor3 = C.theme end; if UI.colorBtnPool then for _, c in ipairs(UI.colorBtnPool) do c.Visible = true end end; if UI.colorModal then UI.colorModal.Visible = true end end) end UI.refreshTheme = function() for i = #UI.themeRefs, 1, -1 do local r = UI.themeRefs[i] if r.inst and r.inst.Parent then if r.kind == "toggle_bg" then local isOn = r.inst:GetAttribute("isOn"); r.inst.BackgroundColor3 = isOn and C.onColor or C.offColor elseif r.kind == "toggle_ind" then local par = r.inst.Parent; local isOn = par and par:GetAttribute("isOn"); r.inst.BackgroundColor3 = isOn and C.theme or Color3.fromRGB(55,55,65) elseif r.kind == "toggle_lbl" then local par = r.inst.Parent; local isOn = par and par:GetAttribute("isOn"); r.inst.TextColor3 = contrastText(isOn and C.onColor or C.offColor, isOn, false) elseif r.kind == "toggle_st" then local par = r.inst.Parent; local isOn = par and par:GetAttribute("isOn"); r.inst.TextColor3 = contrastText(isOn and C.onColor or C.offColor, isOn, true) elseif r.kind == "off_bg" then r.inst.BackgroundColor3 = C.offColor else r.inst[r.prop] = C.theme end else table.remove(UI.themeRefs, i) end end wm.TextColor3 = C.theme; ch1.BackgroundColor3 = C.theme; ch2.BackgroundColor3 = C.theme; cfS.Color = C.theme; fovS.Color = C.theme if UI.stroke then UI.stroke.Color = C.theme end; if UI.hTitle then UI.hTitle.TextColor3 = C.theme end if UI.tabsScroll then UI.tabsScroll.ScrollBarImageColor3 = C.theme end; if UI.contentList then UI.contentList.ScrollBarImageColor3 = C.theme end hud.BackgroundColor3 = C.bgColor; if UI.mainFrame then UI.mainFrame.BackgroundColor3 = C.bgColor end local lum = (C.bgColor.R + C.bgColor.G + C.bgColor.B) / 3; hudT.TextColor3 = lum > 0.5 and Color3.fromRGB(20,20,20) or Color3.fromRGB(220,220,230) if UI.tabs then for k, b in pairs(UI.tabs) do if k == UI.currentPage then b.BackgroundColor3 = C.theme; b.TextColor3 = contrastText(C.theme, true, false) end end end end UI.refreshAll = function() for _, t in ipairs(UI.toggleRegistry) do if t.btn and t.btn.Parent then local v = C[t.key]; t.btn:SetAttribute("isOn", v); t.btn.BackgroundColor3 = v and C.onColor or C.offColor; t.ind.BackgroundColor3 = v and C.theme or Color3.fromRGB(55,55,65); t.lbl.TextColor3 = contrastText(v and C.onColor or C.offColor, v, false); t.st.Text = v and "ВКЛ" or "ВЫКЛ"; t.st.TextColor3 = contrastText(v and C.onColor or C.offColor, v, true) end end for _, s in ipairs(UI.sliderRegistry) do if s.refresh then pcall(s.refresh) end end end local function buildSkeleton() UI.sg = Instance.new("ScreenGui"); UI.sg.Name = "RstrUI"; UI.sg.DisplayOrder = 10; UI.sg.ResetOnSpawn = false; UI.sg.Parent = pg local uiScale = Instance.new("UIScale", UI.sg) local function updUIScale() local vp = workspace.CurrentCamera and workspace.CurrentCamera.ViewportSize; if not vp then return end; uiScale.Scale = math.clamp(math.min(vp.X / 800, vp.Y / 600), 0.75, 1.2) end updUIScale(); task.spawn(function() while not S.unloaded do task.wait(1); updUIScale() end end) UI.mainFrame = Instance.new("Frame", UI.sg); UI.mainFrame.Size = UDim2.new(0,420,0,580); UI.mainFrame.Position = UDim2.new(1,-435,0,60); UI.mainFrame.BackgroundColor3 = C.bgColor; UI.mainFrame.BorderSizePixel = 0; UI.mainFrame.Active = false; UI.mainFrame.ClipsDescendants = true Instance.new("UICorner", UI.mainFrame).CornerRadius = UDim.new(0,6) UI.stroke = Instance.new("UIStroke", UI.mainFrame); UI.stroke.Color = C.theme; UI.stroke.Thickness = 1; UI.stroke.Transparency = 0.6 local header = Instance.new("Frame", UI.mainFrame); header.Size = UDim2.new(1,0,0,42); header.Position = UDim2.new(0,0,0,0); header.BackgroundColor3 = Color3.fromRGB(20,20,25); header.BorderSizePixel = 0; Instance.new("UICorner", header).CornerRadius = UDim.new(0,6) UI.hTitle = Instance.new("TextLabel", header); UI.hTitle.Size = UDim2.new(1,-160,1,0); UI.hTitle.Position = UDim2.new(0,14,0,0); UI.hTitle.BackgroundTransparency = 1; UI.hTitle.Text = "ROOSTER v34"; UI.hTitle.TextColor3 = C.theme; UI.hTitle.Font = Enum.Font.GothamBold; UI.hTitle.TextSize = 13; UI.hTitle.TextXAlignment = Enum.TextXAlignment.Left local collapseBtn = Instance.new("TextButton", header); collapseBtn.Size = UDim2.new(0,28,0,28); collapseBtn.Position = UDim2.new(1,-36,0,7); collapseBtn.BackgroundColor3 = Color3.fromRGB(32,32,38); collapseBtn.BorderSizePixel = 0; collapseBtn.Text = "-"; collapseBtn.TextColor3 = Color3.fromRGB(210,210,220); collapseBtn.Font = Enum.Font.GothamBold; collapseBtn.TextSize = 14; collapseBtn.AutoButtonColor = false; Instance.new("UICorner", collapseBtn).CornerRadius = UDim.new(0,3) local releaseBtn = Instance.new("TextButton", header); releaseBtn.Size = UDim2.new(0,28,0,28); releaseBtn.Position = UDim2.new(1,-70,0,7); releaseBtn.BackgroundColor3 = Color3.fromRGB(32,32,38); releaseBtn.BorderSizePixel = 0; releaseBtn.Text = "К"; releaseBtn.TextColor3 = Color3.fromRGB(210,210,220); releaseBtn.Font = Enum.Font.GothamBold; releaseBtn.TextSize = 11; releaseBtn.AutoButtonColor = false; Instance.new("UICorner", releaseBtn).CornerRadius = UDim.new(0,3); releaseBtn.MouseButton1Click:Connect(function() releaseCam(); S.camOffsetFromHead = nil; S.desiredCFrame = nil end) local resetBtn = Instance.new("TextButton", header); resetBtn.Size = UDim2.new(0,28,0,28); resetBtn.Position = UDim2.new(1,-104,0,7); resetBtn.BackgroundColor3 = Color3.fromRGB(90,30,30); resetBtn.BorderSizePixel = 0; resetBtn.Text = "Х"; resetBtn.TextColor3 = Color3.fromRGB(240,220,220); resetBtn.Font = Enum.Font.GothamBold; resetBtn.TextSize = 12; resetBtn.AutoButtonColor = false; Instance.new("UICorner", resetBtn).CornerRadius = UDim.new(0,3) resetBtn.MouseButton1Click:Connect(function() S.AC.running = false; pcall(function() Services.Run:UnbindFromRenderStep(RENDER_NAME) end); releaseCam() local ch = LP.Character; if ch then for _, o in ipairs(ch:GetDescendants()) do if o:IsA("BasePart") or o:IsA("Decal") then pcall(function() o.LocalTransparencyModifier = 1 end) end end; local hum = ch:FindFirstChildOfClass("Humanoid"); if hum and S.autoRotateWasOn then hum.AutoRotate = true end end C.envEnabled = false; pcall(applyEnv); pcall(clrESP) for k in pairs(boxes) do pcall(rmBox, k) end; for k in pairs(S.chickenedChars) do pcall(rstChk, k) end for _, tr in ipairs(S.activeTracers) do if tr.line then tr.line:Destroy() end; if tr.dot then tr.dot:Destroy() end end S.activeTracers = {}; S.unloaded = true for _, n in ipairs({"RstrUI","RstrOV"}) do local g = pg:FindFirstChild(n); if g then pcall(function() g:Destroy() end) end end end) local dragging = false; local dragStart, startPos; local dragConnC, dragConnE header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true; dragStart = input.Position; startPos = UI.mainFrame.Position; if dragConnC then dragConnC:Disconnect() end; if dragConnE then dragConnE:Disconnect() end dragConnC = Services.UIS.InputChanged:Connect(function(inp) if dragging and (inp.UserInputType == Enum.UserInputType.MouseMovement or inp.UserInputType == Enum.UserInputType.Touch) then local d = inp.Position - dragStart; UI.mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset+d.X, startPos.Y.Scale, startPos.Y.Offset+d.Y) end end) dragConnE = Services.UIS.InputEnded:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then dragging = false; if dragConnC then dragConnC:Disconnect() end; if dragConnE then dragConnE:Disconnect() end end end) end end) Services.UIS.InputBegan:Connect(function(i, gp) if gp then return end; if i.KeyCode == Enum.KeyCode.RightControl then UI.mainFrame.Visible = not UI.mainFrame.Visible end end) local bodyC = Instance.new("Frame", UI.mainFrame); bodyC.Size = UDim2.new(1,0,1,-42); bodyC.Position = UDim2.new(0,0,0,42); bodyC.BackgroundTransparency = 1 local collapsed = false; local savedSize = UI.mainFrame.Size collapseBtn.MouseButton1Click:Connect(function() collapsed = not collapsed; if collapsed then savedSize = UI.mainFrame.Size; UI.mainFrame.Size = UDim2.new(0,420,0,42); bodyC.Visible = false; collapseBtn.Text = "+" else UI.mainFrame.Size = savedSize; bodyC.Visible = true; collapseBtn.Text = "-" end end) local tabsF = Instance.new("Frame", bodyC); tabsF.Size = UDim2.new(1,-14,0,30); tabsF.Position = UDim2.new(0,7,0,7); tabsF.BackgroundColor3 = Color3.fromRGB(18,18,22); tabsF.BorderSizePixel = 0; Instance.new("UICorner", tabsF).CornerRadius = UDim.new(0,3) local contentF = Instance.new("Frame", bodyC); contentF.Size = UDim2.new(1,-14,1,-44); contentF.Position = UDim2.new(0,7,0,42); contentF.BackgroundColor3 = Color3.fromRGB(18,18,22); contentF.BorderSizePixel = 0; Instance.new("UICorner", contentF).CornerRadius = UDim.new(0,3) local leftArrow = Instance.new("TextButton", tabsF) leftArrow.Size = UDim2.new(0,16,1,-6); leftArrow.Position = UDim2.new(0,3,0,3); leftArrow.BackgroundColor3 = Color3.fromRGB(32,32,38); leftArrow.BorderSizePixel = 0; leftArrow.Text = "<"; leftArrow.TextColor3 = Color3.fromRGB(200,200,210); leftArrow.Font = Enum.Font.GothamBold; leftArrow.TextSize = 11; leftArrow.AutoButtonColor = false; leftArrow.ZIndex = 5; Instance.new("UICorner", leftArrow).CornerRadius = UDim.new(0,2) local rightArrow = Instance.new("TextButton", tabsF) rightArrow.Size = UDim2.new(0,16,1,-6); rightArrow.Position = UDim2.new(1,-19,0,3); rightArrow.BackgroundColor3 = Color3.fromRGB(32,32,38); rightArrow.BorderSizePixel = 0; rightArrow.Text = ">"; rightArrow.TextColor3 = Color3.fromRGB(200,200,210); rightArrow.Font = Enum.Font.GothamBold; rightArrow.TextSize = 11; rightArrow.AutoButtonColor = false; rightArrow.ZIndex = 5; Instance.new("UICorner", rightArrow).CornerRadius = UDim.new(0,2) UI.tabsScroll = Instance.new("ScrollingFrame", tabsF); UI.tabsScroll.Size = UDim2.new(1,-50,1,-6); UI.tabsScroll.Position = UDim2.new(0,25,0,3); UI.tabsScroll.BackgroundTransparency = 1; UI.tabsScroll.BorderSizePixel = 0; UI.tabsScroll.ScrollBarThickness = 2; UI.tabsScroll.ScrollBarImageColor3 = C.theme; UI.tabsScroll.ScrollBarImageTransparency = 0.6; UI.tabsScroll.ScrollingDirection = Enum.ScrollingDirection.X; UI.tabsScroll.CanvasSize = UDim2.new(0,0,0,0); UI.tabsScroll.AutomaticCanvasSize = Enum.AutomaticSize.X local function scrollTabs(dir) local canvas = UI.tabsScroll.AbsoluteCanvasSize.X; local view = UI.tabsScroll.AbsoluteWindowSize.X if canvas <= view then return end UI.tabsScroll.CanvasPosition = Vector2.new(math.clamp(UI.tabsScroll.CanvasPosition.X + dir*100, 0, canvas - view), 0) end leftArrow.MouseButton1Click:Connect(function() scrollTabs(-1) end) rightArrow.MouseButton1Click:Connect(function() scrollTabs(1) end) UI.tabsScroll.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseWheel then scrollTabs(input.Position.Z > 0 and -1 or 1) end end) local tabsList = Instance.new("Frame", UI.tabsScroll); tabsList.Size = UDim2.new(0,0,1,0); tabsList.AutomaticSize = Enum.AutomaticSize.X; tabsList.BackgroundTransparency = 1 local tabsL = Instance.new("UIListLayout", tabsList); tabsL.FillDirection = Enum.FillDirection.Horizontal; tabsL.Padding = UDim.new(0,2); tabsL.SortOrder = Enum.SortOrder.LayoutOrder UI.contentList = Instance.new("ScrollingFrame", contentF); UI.contentList.Size = UDim2.new(1,-8,1,-8); UI.contentList.Position = UDim2.new(0,4,0,4); UI.contentList.BackgroundTransparency = 1; UI.contentList.BorderSizePixel = 0; UI.contentList.ScrollBarThickness = 3; UI.contentList.ScrollBarImageColor3 = C.theme; UI.contentList.CanvasSize = UDim2.new(0,0,0,0); UI.contentList.AutomaticCanvasSize = Enum.AutomaticSize.Y local clL = Instance.new("UIListLayout", UI.contentList); clL.Padding = UDim.new(0,3); clL.SortOrder = Enum.SortOrder.LayoutOrder local function mkPage(n) local p = Instance.new("Frame", UI.contentList); p.Size = UDim2.new(1,0,0,0); p.AutomaticSize = Enum.AutomaticSize.Y; p.BackgroundTransparency = 1; p.Visible = false; local l = Instance.new("UIListLayout", p); l.Padding = UDim.new(0,3); l.SortOrder = Enum.SortOrder.LayoutOrder; UI.pages[n] = p end UI.switchTo = function(n) UI.currentPage = n for k, p in pairs(UI.pages) do p.Visible = (k == n) end for k, b in pairs(UI.tabs) do if k == n then b.BackgroundColor3 = C.theme; b.TextColor3 = contrastText(C.theme, true, false) else b.BackgroundColor3 = Color3.fromRGB(28,28,34); b.TextColor3 = Color3.fromRGB(190,190,205) end end if n == "WL" then pcall(UI.refreshWL) end end local tabIdx = 0 local function mkTab(key, name, w) tabIdx = tabIdx + 1; local b = Instance.new("TextButton", tabsList); b.Size = UDim2.new(0,w or 60,1,0); b.BackgroundColor3 = Color3.fromRGB(28,28,34); b.BorderSizePixel = 0; b.Text = name; b.TextColor3 = Color3.fromRGB(190,190,205); b.Font = Enum.Font.GothamBold; b.TextSize = 10; b.AutoButtonColor = false; b.LayoutOrder = tabIdx * 10; Instance.new("UICorner", b).CornerRadius = UDim.new(0,3); b.MouseButton1Click:Connect(function() UI.switchTo(key) end); UI.tabs[key] = b end mkPage("AIM"); mkPage("LEGIT"); mkPage("VISUAL"); mkPage("MOVE"); mkPage("ANTIAIM"); mkPage("CLICK"); mkPage("SOUNDS"); mkPage("MISC"); mkPage("WL"); mkPage("ROFL"); mkPage("COLOR"); mkPage("ENV"); mkPage("CFG") mkTab("AIM","АИМ",40); mkTab("LEGIT","ЛЕГИТ",46); mkTab("VISUAL","ВИЗУАЛ",54); mkTab("MOVE","ДВИЖЕНИЕ",64); mkTab("ANTIAIM","АНТИ-АИМ",64); mkTab("CLICK","КЛИКИ",48); mkTab("SOUNDS","ЗВУКИ",48); mkTab("MISC","РАЗНОЕ",54); mkTab("WL","WHITELIST",70); mkTab("ROFL","РОФЛ",44); mkTab("COLOR","ЦВЕТА",50); mkTab("ENV","МИР",36); mkTab("CFG","КОНФИГ",50) UI.colorModal = Instance.new("Frame", UI.sg); UI.colorModal.Size = UDim2.new(0,260,0,240); UI.colorModal.Position = UDim2.new(0.5,-130,0.5,-120); UI.colorModal.BackgroundColor3 = Color3.fromRGB(20,20,26); UI.colorModal.BorderSizePixel = 0; UI.colorModal.Visible = false; UI.colorModal.Active = true; UI.colorModal.ZIndex = 900 Instance.new("UICorner", UI.colorModal).CornerRadius = UDim.new(0,4) UI.cmStr = Instance.new("UIStroke", UI.colorModal); UI.cmStr.Color = C.theme; UI.cmStr.Thickness = 1; bindTheme(UI.cmStr, "Color") UI.cmTitle = Instance.new("TextLabel", UI.colorModal); UI.cmTitle.Size = UDim2.new(1,-40,0,26); UI.cmTitle.Position = UDim2.new(0,12,0,6); UI.cmTitle.BackgroundTransparency = 1; UI.cmTitle.TextColor3 = C.theme; UI.cmTitle.Font = Enum.Font.GothamBold; UI.cmTitle.TextSize = 11; UI.cmTitle.TextXAlignment = Enum.TextXAlignment.Left; UI.cmTitle.ZIndex = 901; bindTheme(UI.cmTitle, "TextColor3") local cmClose = Instance.new("TextButton", UI.colorModal); cmClose.Size = UDim2.new(0,22,0,22); cmClose.Position = UDim2.new(1,-28,0,8); cmClose.BackgroundColor3 = Color3.fromRGB(60,25,25); cmClose.BorderSizePixel = 0; cmClose.Text = "X"; cmClose.TextColor3 = Color3.fromRGB(240,220,220); cmClose.Font = Enum.Font.GothamBold; cmClose.TextSize = 10; cmClose.AutoButtonColor = false; cmClose.ZIndex = 902; Instance.new("UICorner", cmClose).CornerRadius = UDim.new(0,2); cmClose.MouseButton1Click:Connect(function() UI.colorModal.Visible = false end) UI.cmGrid = Instance.new("Frame", UI.colorModal); UI.cmGrid.Size = UDim2.new(1,-20,1,-46); UI.cmGrid.Position = UDim2.new(0,10,0,38); UI.cmGrid.BackgroundTransparency = 1; UI.cmGrid.ZIndex = 901 local cmGL = Instance.new("UIGridLayout", UI.cmGrid); cmGL.CellSize = UDim2.new(0,44,0,32); cmGL.CellPadding = UDim2.new(0,4,0,4); cmGL.SortOrder = Enum.SortOrder.LayoutOrder local COLOR_LIST = { Color3.fromRGB(255,40,40), Color3.fromRGB(255,100,40), Color3.fromRGB(255,180,40), Color3.fromRGB(255,240,80), Color3.fromRGB(180,255,80), Color3.fromRGB(80,255,120), Color3.fromRGB(0,255,180), Color3.fromRGB(0,220,255), Color3.fromRGB(100,180,255), Color3.fromRGB(150,120,255), Color3.fromRGB(200,80,255), Color3.fromRGB(255,80,200), Color3.fromRGB(255,150,200), Color3.fromRGB(255,255,255), Color3.fromRGB(200,200,200), Color3.fromRGB(100,100,100), Color3.fromRGB(50,50,50), Color3.fromRGB(20,20,20), Color3.fromRGB(255,0,100), Color3.fromRGB(0,255,100), Color3.fromRGB(100,0,255), Color3.fromRGB(255,255,0), Color3.fromRGB(0,255,255), Color3.fromRGB(255,0,255) } UI.colorBtnPool = {} for i, col in ipairs(COLOR_LIST) do local c = Instance.new("TextButton", UI.cmGrid); c.Size = UDim2.new(0,44,0,32); c.BackgroundColor3 = col; c.BorderSizePixel = 0; c.Text = ""; c.AutoButtonColor = false; c.ZIndex = 902; Instance.new("UICorner", c).CornerRadius = UDim.new(0,3); c.Visible = false; UI.colorBtnPool[i] = c end for _, c in ipairs(UI.colorBtnPool) do c.MouseButton1Click:Connect(function() if UI.currentColorSetter then UI.currentColorSetter(c.BackgroundColor3); if UI.currentColorSwatch then UI.currentColorSwatch.BackgroundColor3 = c.BackgroundColor3 end; UI.colorModal.Visible = false end end) end end local function buildPages() local pA = UI.pages["AIM"] addT(pA, "Аим по ПКМ", "aim", C.aim, function() C.aim = not C.aim; return C.aim end) addT(pA, "Постоянный аим", "alwaysAim", C.alwaysAim, function() C.alwaysAim = not C.alwaysAim; return C.alwaysAim end) addT(pA, "Автострельба", "shoot", C.shoot, function() C.shoot = not C.shoot; return C.shoot end) addT(pA, "Целиться в голову", "head", C.head, function() C.head = not C.head; return C.head end) addT(pA, "Авто-голова", "headFallback", C.headFallback, function() C.headFallback = not C.headFallback; return C.headFallback end) addT(pA, "Проверка стен", "visibleCheck", C.visibleCheck, function() C.visibleCheck = not C.visibleCheck; return C.visibleCheck end) addT(pA, "Ближайший по дистанции", "targetByDistance", C.targetByDistance, function() C.targetByDistance = not C.targetByDistance; return C.targetByDistance end) addT(pA, "Проверка команды", "team", C.team, function() C.team = not C.team; return C.team end) addS(pA, "FOV радиус", C.fovRatio, 0.05, 1.0, 0.05, function(v) C.fovRatio = v end, "fovRatio") addS(pA, "Макс. дистанция", C.maxDist, 100, 2000, 50, function(v) C.maxDist = v end, "maxDist") addS(pA, "Выстрелов в секунду", C.cps, 1, 30, 1, function(v) C.cps = v end, "cps") addS(pA, "Задержка (мс)", C.aimDelay, 0, 500, 10, function(v) C.aimDelay = v end, "aimDelay") addS(pA, "Плавность", C.aimSmooth, 0.05, 1.0, 0.05, function(v) C.aimSmooth = v end, "aimSmooth") addS(pA, "Порог захвата (пикс)", C.aimLockedThreshold, 0, 100, 5, function(v) C.aimLockedThreshold = v end, "aimLockedThreshold") addS(pA, "Упреждение", C.aimPredict, 0, 1.5, 0.1, function(v) C.aimPredict = v end, "aimPredict") addS(pA, "Макс. HRP-Head", C.hrpHeadMaxDist, 2, 8, 0.5, function(v) C.hrpHeadMaxDist = v end, "hrpHeadMaxDist") local pL = UI.pages["LEGIT"] addH(pL, "ЛЕГИТ-БОТ", Color3.fromRGB(35,45,55)) addT(pL, "Легит (по ПКМ)", "legitMode", C.legitMode, function() C.legitMode = not C.legitMode; return C.legitMode end) addT(pL, "Человеческий шум", "legitNoise", C.legitNoise, function() C.legitNoise = not C.legitNoise; return C.legitNoise end) addS(pL, "FOV легита", C.legitFovRatio, 0.05, 0.5, 0.01, function(v) C.legitFovRatio = v end, "legitFovRatio") addS(pL, "Плавность", C.legitSmooth, 0.05, 1.0, 0.05, function(v) C.legitSmooth = v end, "legitSmooth") addS(pL, "CPS легита", C.legitCps, 1, 15, 1, function(v) C.legitCps = v end, "legitCps") addS(pL, "Задержка (мс)", C.legitAimDelay, 0, 500, 10, function(v) C.legitAimDelay = v end, "legitAimDelay") addS(pL, "Порог захвата", C.legitThreshold, 0, 60, 5, function(v) C.legitThreshold = v end, "legitThreshold") addS(pL, "Упреждение", C.legitPredict, 0, 1.5, 0.1, function(v) C.legitPredict = v end, "legitPredict") addH(pL, "СОВЕТЫ") local tips = Instance.new("TextLabel", pL); tips.Size = UDim2.new(1,-3,0,90); tips.BackgroundColor3 = C.offColor; tips.BorderSizePixel = 0; tips.Text = "• Плавность 0.20-0.30\n• FOV 0.10-0.15\n• Задержка 80-150 мс\n• CPS 4-6\n• Автострельба в легите отключена\n• Активация: удерживать ПКМ"; tips.TextColor3 = Color3.fromRGB(150,150,160); tips.TextXAlignment = Enum.TextXAlignment.Left; tips.TextYAlignment = Enum.TextYAlignment.Top; tips.Font = Enum.Font.GothamMedium; tips.TextSize = 10; tips.LayoutOrder = pageOrder(pL); Instance.new("UICorner", tips).CornerRadius = UDim.new(0,3); Instance.new("UIPadding", tips).PaddingLeft = UDim.new(0,10); Instance.new("UIPadding", tips).PaddingTop = UDim.new(0,6); bindTheme(tips, "BackgroundColor3", "off_bg") local pV = UI.pages["VISUAL"] addH(pV, "ESP / БОКСЫ") addT(pV, "ESP", "espEnabled", C.espEnabled, function() C.espEnabled = not C.espEnabled; return C.espEnabled end) addT(pV, "ESP: команда", "espTeam", C.espTeam, function() C.espTeam = not C.espTeam; return C.espTeam end) addT(pV, "ESP: дистанция", "espDist", C.espDist, function() C.espDist = not C.espDist; return C.espDist end) addT(pV, "Боксы", "boxes", C.boxes, function() C.boxes = not C.boxes; return C.boxes end) addT(pV, "Подсветка цели", "highlightTarget", C.highlightTarget, function() C.highlightTarget = not C.highlightTarget; return C.highlightTarget end) addS(pV, "Ширина бокса", C.espWidthRatio, 0.3, 1.0, 0.05, function(v) C.espWidthRatio = v end, "espWidthRatio") addS(pV, "Сдвиг верха", C.espTopLift, -1, 2, 0.1, function(v) C.espTopLift = v end, "espTopLift") addS(pV, "Сдвиг низа", C.espBottomLift, -1, 2, 0.1, function(v) C.espBottomLift = v end, "espBottomLift") addT(pV, "Стрелки", "headArrows", C.headArrows, function() C.headArrows = not C.headArrows; return C.headArrows end) addH(pV, "FOV / ПРИЦЕЛ") addT(pV, "Круг FOV", "fovCircle", C.fovCircle, function() C.fovCircle = not C.fovCircle; return C.fovCircle end) addT(pV, "Пульсация FOV", "fovPulse", C.fovPulse, function() C.fovPulse = not C.fovPulse; return C.fovPulse end) addT(pV, "Прицел", "crosshairEnabled", C.crosshairEnabled, function() C.crosshairEnabled = not C.crosshairEnabled; return C.crosshairEnabled end) addH(pV, "ИНТЕРФЕЙС") addT(pV, "Watermark", "watermarkEnabled", C.watermarkEnabled, function() C.watermarkEnabled = not C.watermarkEnabled; return C.watermarkEnabled end) addT(pV, "Пинг", "showPing", C.showPing, function() C.showPing = not C.showPing; return C.showPing end) addT(pV, "FPS", "showFps", C.showFps, function() C.showFps = not C.showFps; return C.showFps end) addT(pV, "Рамка", "cornerFrameEnabled", C.cornerFrameEnabled, function() C.cornerFrameEnabled = not C.cornerFrameEnabled; return C.cornerFrameEnabled end) addT(pV, "Сканлайны", "scanlinesEnabled", C.scanlinesEnabled, function() C.scanlinesEnabled = not C.scanlinesEnabled; return C.scanlinesEnabled end) addT(pV, "Хитмаркер", "hitmarker", C.hitmarker, function() C.hitmarker = not C.hitmarker; return C.hitmarker end) addH(pV, "ТРАССЕР", Color3.fromRGB(30,40,50)) addT(pV, "Трассер", "tracer", C.tracer, function() C.tracer = not C.tracer; return C.tracer end) addS(pV, "Время жизни (сек)", C.tracerDuration, 0.1, 2.0, 0.05, function(v) C.tracerDuration = v end, "tracerDuration") addS(pV, "Толщина", C.tracerThickness, 1, 6, 0.5, function(v) C.tracerThickness = v end, "tracerThickness") local pM = UI.pages["MOVE"] addH(pM, "МАГНИТ (F)", Color3.fromRGB(45,35,60)) addT(pM, "Магнит", "latchEnabled", C.latchEnabled, function() C.latchEnabled = not C.latchEnabled; return C.latchEnabled end) addS(pM, "Дистанция", C.latchDist, 0.5, 15, 0.5, function(v) C.latchDist = v end, "latchDist") addS(pM, "Радиус поиска", C.latchRange, 0, 1000, 10, function(v) C.latchRange = v end, "latchRange") addS(pM, "Множитель", C.latchRangeMult, 1, 10, 1, function(v) C.latchRangeMult = v end, "latchRangeMult") addT(pM, "К спине", "latchBehind", C.latchBehind, function() C.latchBehind = not C.latchBehind; return C.latchBehind end) addT(pM, "Проверка стен", "magnetWallCheck", C.magnetWallCheck, function() C.magnetWallCheck = not C.magnetWallCheck; return C.magnetWallCheck end) addS(pM, "Плавность магнита", C.magnetSmooth, 0.1, 1.0, 0.05, function(v) C.magnetSmooth = v end, "magnetSmooth") addH(pM, "АВТОМАГНИТ", Color3.fromRGB(45,35,60)) addT(pM, "Автомагнит", "latchAuto", C.latchAuto, function() C.latchAuto = not C.latchAuto; return C.latchAuto end) addS(pM, "Радиус", C.latchAutoRange, 20, 1000, 10, function(v) C.latchAutoRange = v end, "latchAutoRange") addT(pM, "Автоаим с магнитом", "latchAutoAim", C.latchAutoAim, function() C.latchAutoAim = not C.latchAutoAim; return C.latchAutoAim end) addT(pM, "Вращение вокруг", "latchAutoSpin", C.latchAutoSpin, function() C.latchAutoSpin = not C.latchAutoSpin; return C.latchAutoSpin end) addS(pM, "Скорость вращения", C.latchAutoSpinSpeed, 0.5, 15.0, 0.5, function(v) C.latchAutoSpinSpeed = v end, "latchAutoSpinSpeed") addH(pM, "ДВИЖЕНИЕ", Color3.fromRGB(30,45,35)) addT(pM, "Бхоп", "bhop", C.bhop, function() C.bhop = not C.bhop; return C.bhop end) addS(pM, "Усиление бхопа", C.bhopBoost, 0, 30, 1, function(v) C.bhopBoost = v end, "bhopBoost") addT(pM, "Третье лицо", "tp", C.tp, function() C.tp = not C.tp; if not C.tp then local ch = LP.Character; if ch then for _, o in ipairs(ch:GetDescendants()) do if o:IsA("BasePart") or o:IsA("Decal") then pcall(function() o.LocalTransparencyModifier = 1 end) end end end end; return C.tp end) addS(pM, "Дистанция 3-го", C.tpDist, 2, 20, 1, function(v) C.tpDist = v end, "tpDist") local pAA = UI.pages["ANTIAIM"] addH(pAA, "СПИНБОТ", Color3.fromRGB(45,25,45)) addT(pAA, "Спинбот", "spinbot", C.spinbot, function() C.spinbot = not C.spinbot; return C.spinbot end) addS(pAA, "Скорость", C.spinSpeed, 1, 50, 1, function(v) C.spinSpeed = v end, "spinSpeed") addT(pAA, "Только при аиме", "spinOnlyAim", C.spinOnlyAim, function() C.spinOnlyAim = not C.spinOnlyAim; return C.spinOnlyAim end) addH(pAA, "ФЕЙК-УГЛЫ", Color3.fromRGB(50,25,30)) addT(pAA, "Фейк-углы", "fakeAngles", C.fakeAngles, function() C.fakeAngles = not C.fakeAngles; return C.fakeAngles end) addCycle(pAA, "Режим", function() return string.upper(C.fakeAnglesMode) end, function() local modes = {"jitter","spin"}; for i, m in ipairs(modes) do if m == C.fakeAnglesMode then C.fakeAnglesMode = modes[(i % #modes) + 1]; break end end end, Color3.fromRGB(45,30,35)) addS(pAA, "Разброс (град)", C.fakeAnglesJitter, 10, 180, 10, function(v) C.fakeAnglesJitter = v end, "fakeAnglesJitter") addS(pAA, "Интервал", C.fakeAnglesInterval, 0.05, 1.0, 0.05, function(v) C.fakeAnglesInterval = v end, "fakeAnglesInterval") addS(pAA, "Скорость спина", C.fakeAnglesSpinSpeed, 1, 50, 1, function(v) C.fakeAnglesSpinSpeed = v end, "fakeAnglesSpinSpeed") addH(pAA, "ФЕЙК-ЛАГ", Color3.fromRGB(25,35,50)) addT(pAA, "Фейк-лаг", "fakeLag", C.fakeLag, function() C.fakeLag = not C.fakeLag; return C.fakeLag end) addS(pAA, "Интенсивность", C.fakeLagIntensity, 0.1, 3.0, 0.1, function(v) C.fakeLagIntensity = v end, "fakeLagIntensity") local pC = UI.pages["CLICK"] addH(pC, "КЛИКИ ПРИ УБИЙСТВЕ", Color3.fromRGB(50,25,25)) addT(pC, "Кликать при убийстве", "deathClicker", C.deathClicker, function() C.deathClicker = not C.deathClicker; return C.deathClicker end) addS(pC, "Кол-во кликов", C.deathClickCount, 1, 20, 1, function(v) C.deathClickCount = v end, "deathClickCount") addS(pC, "Интервал (сек)", C.deathClickInterval, 0.02, 1.0, 0.02, function(v) C.deathClickInterval = v end, "deathClickInterval") addT(pC, "Случайная позиция", "deathClickRandom", C.deathClickRandom, function() C.deathClickRandom = not C.deathClickRandom; return C.deathClickRandom end) addS(pC, "X (0-1)", C.deathClickX, 0, 1, 0.05, function(v) C.deathClickX = v end, "deathClickX") addS(pC, "Y (0-1)", C.deathClickY, 0, 1, 0.05, function(v) C.deathClickY = v end, "deathClickY") addH(pC, "ПРОСТОЙ АВТОКЛИКЕР", Color3.fromRGB(30,42,55)) addB(pC, "Автокликер: СТАРТ", function() C.autoClicker = true end, Color3.fromRGB(35,80,35)) addB(pC, "Автокликер: СТОП", function() C.autoClicker = false end, Color3.fromRGB(90,30,30)) addS(pC, "Интервал (сек)", C.autoClickerInterval, 0.05, 2.0, 0.05, function(v) C.autoClickerInterval = v end, "autoClickerInterval") addT(pC, "Случайная позиция", "autoClickerRandom", C.autoClickerRandom, function() C.autoClickerRandom = not C.autoClickerRandom; return C.autoClickerRandom end) addS(pC, "X (0-1)", C.autoClickerX, 0, 1, 0.05, function(v) C.autoClickerX = v end, "autoClickerX") addS(pC, "Y (0-1)", C.autoClickerY, 0, 1, 0.05, function(v) C.autoClickerY = v end, "autoClickerY") addH(pC, "OP АВТОКЛИКЕР", Color3.fromRGB(25,35,50)) addS(pC, "Часы", C.acHours, 0, 23, 1, function(v) C.acHours = v end, "acHours") addS(pC, "Минуты", C.acMins, 0, 59, 1, function(v) C.acMins = v end, "acMins") addS(pC, "Секунды", C.acSecs, 0, 59, 1, function(v) C.acSecs = v end, "acSecs") addS(pC, "Мс (мин 10)", C.acMs, 10, 999, 5, function(v) C.acMs = v end, "acMs") addS(pC, "Случайный разброс (мс)", C.acRandomOffset, 0, 500, 5, function(v) C.acRandomOffset = v end, "acRandomOffset") addCycle(pC, "Кнопка мыши", function() local r = {Left="Левая", Right="Правая", Middle="Средняя"}; return r[C.acButton] or C.acButton end, function() local list = {"Left","Right","Middle"}; for i, v in ipairs(list) do if v == C.acButton then C.acButton = list[(i % #list) + 1]; break end end end) addCycle(pC, "Тип клика", function() return C.acClickType == "Single" and "Одиночный" or "Двойной" end, function() C.acClickType = (C.acClickType == "Single") and "Double" or "Single" end) addT(pC, "Повторять до остановки", "acRepeatUntil", C.acRepeatUntil, function() C.acRepeatUntil = not C.acRepeatUntil; return C.acRepeatUntil end) addS(pC, "Кол-во повторов", C.acRepeatCount, 1, 1000, 1, function(v) C.acRepeatCount = v end, "acRepeatCount") addCycle(pC, "Курсор", function() return (C.acCursorMode == "pick") and "Указанный" or "Текущий" end, function() C.acCursorMode = (C.acCursorMode == "pick") and "current" or "pick"; if C.acCursorMode == "current" then S.AC.picking = false end end) addB(pC, "Указать позицию (Esc)", function() if not hasMoveAbs and not hasMoveRel then return end; S.AC.picking = true end, Color3.fromRGB(35,55,80)) addB(pC, "СТАРТ OP", function() S.AC.running = true; S.AC.currentCount = 0; S.AC.nextClickAt = os.clock() end, Color3.fromRGB(35,80,35)) addB(pC, "СТОП OP", function() S.AC.running = false end, Color3.fromRGB(90,30,30)) local pSnd = UI.pages["SOUNDS"] addH(pSnd, "ЗВУК АТАКИ", Color3.fromRGB(30,45,30)) addT(pSnd, "Звук при атаке", "attackSound", C.attackSound, function() C.attackSound = not C.attackSound; return C.attackSound end) addTb(pSnd, "Sound ID (атака)", C.attackSoundId, "5852470908", function(v) local c = tostring(v):gsub("%D",""); if c == "" then c = "5852470908" end; C.attackSoundId = c end, function() playAtk() end) addS(pSnd, "Громкость", C.attackVolume, 0.3, 5.0, 0.1, function(v) C.attackVolume = v end, "attackVolume") addS(pSnd, "Pitch", C.attackPitch, 0.3, 3.0, 0.1, function(v) C.attackPitch = v end, "attackPitch") addH(pSnd, "ЗВУК УБИЙСТВА", Color3.fromRGB(45,30,30)) addT(pSnd, "Звук при убийстве", "cockSound", C.cockSound, function() C.cockSound = not C.cockSound; return C.cockSound end) addTb(pSnd, "Sound ID (убийство)", C.killSoundId, "5852470908", function(v) local c = tostring(v):gsub("%D",""); if c == "" then c = "5852470908" end; C.killSoundId = c end, function() playKill() end) addS(pSnd, "Pitch убийства", C.killPitch, 0.3, 3.0, 0.1, function(v) C.killPitch = v end, "killPitch") addH(pSnd, "ЗВУКИ ПОПАДАНИЙ", Color3.fromRGB(30,30,50)) addT(pSnd, "Разные body/head", "hitSounds", C.hitSounds, function() C.hitSounds = not C.hitSounds; return C.hitSounds end) addT(pSnd, "Хитмаркер", "hitmarkerSound", C.hitmarkerSound, function() C.hitmarkerSound = not C.hitmarkerSound; return C.hitmarkerSound end) addTb(pSnd, "Sound ID (тело)", C.hitSoundBodyId, "6895079853", function(v) local c = tostring(v):gsub("%D",""); if c == "" then c = "6895079853" end; C.hitSoundBodyId = c end, function() playLocal("6895079853", 3, 1) end) addTb(pSnd, "Sound ID (голова)", C.hitSoundHeadId, "8435457150", function(v) local c = tostring(v):gsub("%D",""); if c == "" then c = "8435457150" end; C.hitSoundHeadId = c end, function() playLocal("8435457150", 3, 1) end) local pMisc = UI.pages["MISC"] addH(pMisc, "ОБЩИЕ") addT(pMisc, "Вайтлист", "whitelistEnabled", C.whitelistEnabled, function() C.whitelistEnabled = not C.whitelistEnabled; return C.whitelistEnabled end) addT(pMisc, "Уведомления", "notifications", C.notifications, function() C.notifications = not C.notifications; return C.notifications end) addH(pMisc, "СЕРИЯ", Color3.fromRGB(45,30,22)) addT(pMisc, "Только мои убийства", "killstreakOnlyMine", C.killstreakOnlyMine, function() C.killstreakOnlyMine = not C.killstreakOnlyMine; return C.killstreakOnlyMine end) addS(pMisc, "Окно (сек)", C.killstreakWindow, 1, 10, 0.5, function(v) C.killstreakWindow = v end, "killstreakWindow") addH(pMisc, "KEYBINDS", Color3.fromRGB(35,35,55)) addT(pMisc, "Включить хоткеи", "keybindsEnabled", C.keybindsEnabled, function() C.keybindsEnabled = not C.keybindsEnabled; return C.keybindsEnabled end) addCycle(pMisc, "Клавиша AIM", function() return nameOfKey(C.keyAim) end, function() local cur = nameOfKey(C.keyAim); local idx = 1; for i, n in ipairs(KEY_ORDER) do if n == cur then idx = i break end end; idx = (idx % #KEY_ORDER) + 1; C.keyAim = KEY_MAP[KEY_ORDER[idx]] or Enum.KeyCode.E end) addCycle(pMisc, "Клавиша ESP", function() return nameOfKey(C.keyEsp) end, function() local cur = nameOfKey(C.keyEsp); local idx = 1; for i, n in ipairs(KEY_ORDER) do if n == cur then idx = i break end end; idx = (idx % #KEY_ORDER) + 1; C.keyEsp = KEY_MAP[KEY_ORDER[idx]] or Enum.KeyCode.Q end) addCycle(pMisc, "Клавиша SHOOT", function() return nameOfKey(C.keyShoot) end, function() local cur = nameOfKey(C.keyShoot); local idx = 1; for i, n in ipairs(KEY_ORDER) do if n == cur then idx = i break end end; idx = (idx % #KEY_ORDER) + 1; C.keyShoot = KEY_MAP[KEY_ORDER[idx]] or Enum.KeyCode.T end) local pWL = UI.pages["WL"] addH(pWL, "БЕЛЫЙ СПИСОК", Color3.fromRGB(30,40,50)) local wlList = Instance.new("Frame", pWL); wlList.Size = UDim2.new(1,-3,0,0); wlList.AutomaticSize = Enum.AutomaticSize.Y; wlList.BackgroundTransparency = 1; wlList.LayoutOrder = pageOrder(pWL) local wlL = Instance.new("UIListLayout", wlList); wlL.Padding = UDim.new(0,3); wlL.SortOrder = Enum.SortOrder.LayoutOrder local manualRow = Instance.new("Frame", pWL); manualRow.Size = UDim2.new(1,-3,0,48); manualRow.BackgroundColor3 = C.offColor; manualRow.BorderSizePixel = 0; manualRow.LayoutOrder = pageOrder(pWL); Instance.new("UICorner", manualRow).CornerRadius = UDim.new(0,3); bindTheme(manualRow, "BackgroundColor3", "off_bg") local mTtl = Instance.new("TextLabel", manualRow); mTtl.Size = UDim2.new(1,-20,0,13); mTtl.Position = UDim2.new(0,10,0,3); mTtl.BackgroundTransparency = 1; mTtl.Text = "Добавить вручную"; mTtl.TextColor3 = Color3.fromRGB(190,190,205); mTtl.TextXAlignment = Enum.TextXAlignment.Left; mTtl.Font = Enum.Font.GothamMedium; mTtl.TextSize = 10 local mTb = Instance.new("TextBox", manualRow); mTb.Size = UDim2.new(1,-80,0,22); mTb.Position = UDim2.new(0,10,0,21); mTb.BackgroundColor3 = Color3.fromRGB(10,10,13); mTb.BorderSizePixel = 0; mTb.Text = ""; mTb.PlaceholderText = "Имя или UserId"; mTb.TextColor3 = Color3.fromRGB(220,220,230); mTb.PlaceholderColor3 = Color3.fromRGB(100,100,110); mTb.Font = Enum.Font.Code; mTb.TextSize = 12; mTb.ClearTextOnFocus = false; Instance.new("UICorner", mTb).CornerRadius = UDim.new(0,3); Instance.new("UIPadding", mTb).PaddingLeft = UDim.new(0,6) local mAdd = Instance.new("TextButton", manualRow); mAdd.Size = UDim2.new(0,60,0,22); mAdd.Position = UDim2.new(1,-70,0,21); mAdd.BackgroundColor3 = Color3.fromRGB(35,60,40); mAdd.BorderSizePixel = 0; mAdd.Text = "Доб."; mAdd.TextColor3 = Color3.fromRGB(220,230,220); mAdd.Font = Enum.Font.GothamBold; mAdd.TextSize = 10; mAdd.AutoButtonColor = false; Instance.new("UICorner", mAdd).CornerRadius = UDim.new(0,3) mAdd.MouseButton1Click:Connect(function() local n = tostring(mTb.Text):gsub("^%s+",""):gsub("%s+$",""); if n ~= "" then if tonumber(n) then S.whitelist["id_"..n] = true else S.whitelist[n] = true end; mTb.Text = ""; pcall(UI.refreshWL) end end) local wlClear = Instance.new("TextButton", pWL); wlClear.Size = UDim2.new(1,-3,0,24); wlClear.BackgroundColor3 = Color3.fromRGB(70,30,30); wlClear.BorderSizePixel = 0; wlClear.Text = "Очистить весь список"; wlClear.TextColor3 = Color3.fromRGB(230,210,210); wlClear.Font = Enum.Font.GothamBold; wlClear.TextSize = 10; wlClear.AutoButtonColor = false; wlClear.LayoutOrder = pageOrder(pWL); Instance.new("UICorner", wlClear).CornerRadius = UDim.new(0,3); wlClear.MouseButton1Click:Connect(function() S.whitelist = {}; pcall(UI.refreshWL) end) UI.refreshWL = function() if not wlList or not wlList.Parent then return end for _, c in ipairs(wlList:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end local order = 0; local any = false for _, plr in ipairs(Services.Players:GetPlayers()) do if plr ~= LP then any = true; order = order + 1; local isW = isWL(plr) local btn = Instance.new("TextButton", wlList); btn.Size = UDim2.new(1,0,0,24); btn.BackgroundColor3 = isW and Color3.fromRGB(45,75,50) or C.offColor; btn.BorderSizePixel = 0 btn.Text = (isW and "[V] " or "[ ] ") .. plr.Name .. " | id:" .. plr.UserId; btn.TextColor3 = isW and Color3.fromRGB(200,255,200) or Color3.fromRGB(190,190,205); btn.TextXAlignment = Enum.TextXAlignment.Left; btn.Font = Enum.Font.GothamMedium; btn.TextSize = 10; btn.AutoButtonColor = false; btn.LayoutOrder = order * 10; Instance.new("UICorner", btn).CornerRadius = UDim.new(0,3); Instance.new("UIPadding", btn).PaddingLeft = UDim.new(0,8) btn.MouseButton1Click:Connect(function() if isWL(plr) then S.whitelist[plr.Name] = nil; S.whitelist[plr.UserId] = nil; S.whitelist["id_"..tostring(plr.UserId)] = nil else S.whitelist[plr.UserId] = true; S.whitelist["id_"..tostring(plr.UserId)] = true end; pcall(UI.refreshWL) end) end end local seen = {} for name, v in pairs(S.whitelist) do if v then local skip = false; if type(name) == "number" and S.whitelist["id_"..tostring(name)] then skip = true end if not skip then local found = false; for _, plr in ipairs(Services.Players:GetPlayers()) do if plr.Name == name or plr.UserId == name or ("id_"..tostring(plr.UserId)) == name then found = true; break end end local key = tostring(name) if not found and not seen[key] then seen[key] = true; order = order + 1 local btn = Instance.new("TextButton", wlList); btn.Size = UDim2.new(1,0,0,24); btn.BackgroundColor3 = Color3.fromRGB(45,75,50); btn.BorderSizePixel = 0; btn.Text = "[V] " .. key .. " (нет на сервере)"; btn.TextColor3 = Color3.fromRGB(200,255,200); btn.TextXAlignment = Enum.TextXAlignment.Left; btn.Font = Enum.Font.GothamMedium; btn.TextSize = 10; btn.AutoButtonColor = false; btn.LayoutOrder = order * 10; Instance.new("UICorner", btn).CornerRadius = UDim.new(0,3); Instance.new("UIPadding", btn).PaddingLeft = UDim.new(0,8) btn.MouseButton1Click:Connect(function() S.whitelist[name] = nil; if type(name) == "string" then local uid = tonumber(name:match("^id_(%d+)$")); if uid then S.whitelist[uid] = nil end end; if type(name) == "number" then S.whitelist["id_"..tostring(name)] = nil end; pcall(UI.refreshWL) end) end end end end end local pRo = UI.pages["ROFL"] addH(pRo, "КУРИЦА", Color3.fromRGB(50,45,20)) addT(pRo, "Режим курицы", "chickenMode", C.chickenMode, function() C.chickenMode = not C.chickenMode; return C.chickenMode end) addT(pRo, "Куриный дождь", "chickenRain", C.chickenRain, function() C.chickenRain = not C.chickenRain; return C.chickenRain end) addH(pRo, "KILL CHAT", Color3.fromRGB(35,30,45)) addT(pRo, "Писать в чат", "killChat", C.killChat, function() C.killChat = not C.killChat; return C.killChat end) addTb(pRo, "Сообщение", C.killChatMsg, "gg", function(v) C.killChatMsg = v end) addS(pRo, "Задержка (сек)", C.killChatDelay, 0, 2, 0.05, function(v) C.killChatDelay = v end, "killChatDelay") local pCol = UI.pages["COLOR"] addH(pCol, "ЦВЕТ ВРАГОВ", Color3.fromRGB(45,25,60)) addCycle(pCol, "Режим", function() local r = {auto="АВТО", custom="СВОЙ", gradient="ГРАДИЕНТ"}; return r[C.espColorMode] or C.espColorMode end, function() local modes = {"auto","custom","gradient"}; for i, m in ipairs(modes) do if m == C.espColorMode then C.espColorMode = modes[(i % #modes) + 1]; break end end end) addColor(pCol, "Свой цвет", function() return C.espCustomColor end, function(c) C.espCustomColor = c end, Color3.fromRGB(180,80,255)) addColor(pCol, "Градиент 1", function() return C.espGradientColor1 end, function(c) C.espGradientColor1 = c end, Color3.fromRGB(180,80,255)) addColor(pCol, "Градиент 2", function() return C.espGradientColor2 end, function(c) C.espGradientColor2 = c end, Color3.fromRGB(0,200,255)) addS(pCol, "Скорость градиента", C.espGradientSpeed, 0.1, 5.0, 0.1, function(v) C.espGradientSpeed = v end, "espGradientSpeed") addH(pCol, "ИНТЕРФЕЙС", Color3.fromRGB(45,25,60)) addColor(pCol, "Тема", function() return C.theme end, function(c) C.theme = c; pcall(UI.refreshTheme) end, Color3.fromRGB(165,165,180)) addColor(pCol, "Цвет цели", function() return C.targetColor end, function(c) C.targetColor = c end, Color3.fromRGB(220,60,60)) addColor(pCol, "Фон меню", function() return C.bgColor end, function(c) C.bgColor = c; if UI.mainFrame then UI.mainFrame.BackgroundColor3 = c end; pcall(UI.refreshTheme) end, Color3.fromRGB(14,13,17)) addColor(pCol, "Карточки", function() return C.cardColor end, function(c) C.cardColor = c end, Color3.fromRGB(24,23,28)) addColor(pCol, "ВКЛ", function() return C.onColor end, function(c) C.onColor = c; pcall(UI.refreshTheme); pcall(UI.refreshAll) end, Color3.fromRGB(42,68,48)) addColor(pCol, "ВЫКЛ", function() return C.offColor end, function(c) C.offColor = c; pcall(UI.refreshTheme); pcall(UI.refreshAll) end, Color3.fromRGB(22,21,26)) addColor(pCol, "Трассер", function() return C.tracerColor end, function(c) C.tracerColor = c end, Color3.fromRGB(0,255,200)) local pEnv = UI.pages["ENV"] addT(pEnv, "Включить изменение", "envEnabled", C.envEnabled, function() C.envEnabled = not C.envEnabled; applyEnv(); return C.envEnabled end) addH(pEnv, "ВРЕМЯ / СВЕТ", Color3.fromRGB(45,38,22)) addS(pEnv, "Время суток", C.envClockTime, 0, 24, 0.5, function(v) C.envClockTime = v; if C.envEnabled then applyEnv() end end, "envClockTime") addS(pEnv, "Яркость", C.envBrightness, 0, 5, 0.1, function(v) C.envBrightness = v; if C.envEnabled then applyEnv() end end, "envBrightness") addS(pEnv, "Туман", C.envFogEnd, 0, 5000, 50, function(v) C.envFogEnd = v; if C.envEnabled then applyEnv() end end, "envFogEnd") addH(pEnv, "АТМОСФЕРА", Color3.fromRGB(22,35,50)) addS(pEnv, "Плотность", C.envAtmosphereDensity, 0, 1, 0.05, function(v) C.envAtmosphereDensity = v; if C.envEnabled then applyEnv() end end, "envAtmosphereDensity") addS(pEnv, "Дымка", C.envAtmosphereHaze, 0, 5, 0.1, function(v) C.envAtmosphereHaze = v; if C.envEnabled then applyEnv() end end, "envAtmosphereHaze") addS(pEnv, "Свечение", C.envAtmosphereGlare, 0, 5, 0.1, function(v) C.envAtmosphereGlare = v; if C.envEnabled then applyEnv() end end, "envAtmosphereGlare") local pCfg = UI.pages["CFG"] addH(pCfg, "КОНФИГ", Color3.fromRGB(30,35,45)) addB(pCfg, "Сохранить (RightAlt)", function() local ok, err = saveConfig(); if not ok then warn(err) end end, Color3.fromRGB(35,60,40)) addB(pCfg, "Загрузить", function() local ok, err = loadConfig(); if ok then pcall(UI.refreshTheme); pcall(UI.refreshAll) else warn(err) end end, Color3.fromRGB(35,55,80)) addB(pCfg, "Удалить файл", function() if delfile and isfile and isfile(CONFIG_FILE) then pcall(function() delfile(CONFIG_FILE) end) end end, Color3.fromRGB(60,30,30)) end local buildOk, buildErr = pcall(function() buildSkeleton() buildPages() UI.switchTo("AIM") if testLbl then testLbl:Destroy() end notify("ROOSTER v34 | RightCtrl | RightAlt", C.theme) end) if not buildOk then warn("[ROOSTER] buildUI FAILED: "..tostring(buildErr)) testLbl.Text = "ROOSTER v34 — UI ОШИБКА\n"..tostring(buildErr):sub(1, 120) testLbl.TextColor3 = Color3.fromRGB(255,150,150) else warn("[ROOSTER] buildUI OK") end local loadOk, loadErr = pcall(loadConfig) if not loadOk then warn("[ROOSTER] loadConfig: "..tostring(loadErr)) end warn("[ROOSTER] ALL STAGES PASSED")