--exechack.cc/lua local enable = false print('enable_autoloot - включить/выключить') hook.Add('HUDPaint', 'DrawLoot', function() if !enable then return end local ply = LocalPlayer() for k,v in ipairs(ents.FindInSphere(ply:GetPos(), 800)) do if v.lootList then local pos = v:GetPos():ToScreen() local nextUse = v:GetNWInt("nextSearch") local canLoot = nextUse - CurTime() <= 0 v.canLoot = canLoot draw.SimpleText(v.PrintName..'('.. (canLoot && 'Можно лутать' or math.Round(nextUse-CurTime()) )..')', 'Trebuchet24', pos.x, pos.y, Color(255,255,255), TEXT_ALIGN_CENTER) end end end) local function GetInventory() for k,v in pairs( LocalPlayer():GetWeapons() ) do if v:GetClass() == 'itemstore_pickup' then return v end end return false end local nUse = 0 local function Use(t, inv) local ply = LocalPlayer() if inv && nUse < CurTime() then nUse = CurTime() + .1 local wep = GetInventory() if wep && ply:GetActiveWeapon():GetClass() != 'itemstore_pickup' then input.SelectWeapon(wep) RunConsoleCommand('say', '/pickup') end if ply:GetActiveWeapon():GetClass() == 'itemstore_pickup' then RunConsoleCommand('say', '/pickup') end return end RunConsoleCommand('+use') if !t then return end timer.Simple(t, function() RunConsoleCommand('-use') end) end hook.Add('Think', 'Loot', function() local prev = 800 if !enable then return end local ply = LocalPlayer() local plyPos = ply:GetPos() for k,v in ipairs(ents.FindInSphere(ply:GetPos(), 120)) do local vec1 = v:GetPos() -- Where we're looking at local vec2 = ply:GetShootPos() -- The player's eye pos if v:GetClass():find('ac_') && v:GetPos():DistToSqr(ply:GetPos()) < 70^2 then exechack_api.SetCheatAngle((vec1-vec2):Angle()) Use(nil, true) return end if v.lootList && v.canLoot then local dist = vec1:Distance(plyPos) if dist < prev then prev = vec1:Distance(plyPos) exechack_api.SetCheatAngle((vec1-vec2):Angle()) if v:GetPos():DistToSqr(ply:GetPos()) < 70^2 then Use(v.timeToLoot) end end end end end) concommand.Add('enable_autoloot', function() enable = !enable end)