Загрузка данных


import pymem
import pymem.process
import time
import math
import ctypes

# Смещения для версии 1.1.2.7
dwLocalPlayer = 0x1A29B8
dwEntityList = 0x1A2A78
m_iHealth = 0xF8
m_iTeamNum = 0xF0
m_vecOrigin = 0x130
m_vecViewOffset = 0x104
m_angRotation = 0x110
dwForceAttack = 0x1B8A0C

# Настройки Aimbot
FOV = 30          # угол обзора (градусы)
SMOOTH = 5.0      # плавность (1 = мгновенно, больше = плавнее)
AIM_KEY = 0x04    # средняя кнопка мыши (0x02 = правая, 0x04 = средняя)
AIM_HEAD = True   # True = в голову, False = в тело

def get_angle(source, destination):
    """Вычисляет углы для наведения из source в destination"""
    delta_x = source[0] - destination[0]
    delta_y = source[1] - destination[1]
    delta_z = source[2] - destination[2]
    
    hyp = math.sqrt(delta_x * delta_x + delta_y * delta_y)
    angle_x = math.atan(delta_z / hyp) * (180.0 / math.pi)
    angle_y = math.atan(delta_y / delta_x) * (180.0 / math.pi)
    
    if delta_x >= 0.0:
        angle_y += 180.0
    
    return [angle_x, angle_y]

def normalize_angles(angles):
    """Нормализует углы"""
    if angles[0] > 89.0:
        angles[0] = 89.0
    if angles[0] < -89.0:
        angles[0] = -89.0
    while angles[1] > 180.0:
        angles[1] -= 360.0
    while angles[1] < -180.0:
        angles[1] += 360.0
    return angles

def smooth_angles(current, target, smooth_value):
    """Плавное наведение"""
    delta_x = target[0] - current[0]
    delta_y = target[1] - current[1]
    
    if smooth_value > 0:
        return [current[0] + delta_x / smooth_value, current[1] + delta_y / smooth_value]
    return target

def get_key_state(key_code):
    """Проверка нажатия клавиши"""
    return ctypes.windll.user32.GetAsyncKeyState(key_code) & 0x8000

def main():
    try:
        pm = pymem.Pymem("hl.exe")
    except:
        print("CS 1.6 не запущен!")
        return
    
    client = pymem.process.module_from_name(pm.process_handle, "hw.dll")
    client_base = client.lpBaseOfDll
    
    print(f"[+] Aimbot запущен. Client base: {hex(client_base)}")
    print("[+] Зажмите среднюю кнопку мыши для наведения на врага")
    
    while True:
        try:
            # Проверка нажатия клавиши аима
            if not get_key_state(AIM_KEY):
                time.sleep(0.01)
                continue
            
            # Получаем локального игрока
            local_player = pm.read_int(client_base + dwLocalPlayer)
            if local_player == 0:
                time.sleep(0.01)
                continue
            
            local_team = pm.read_int(local_player + m_iTeamNum)
            
            # Координаты локального игрока (глаза)
            origin = [
                pm.read_float(local_player + m_vecOrigin),
                pm.read_float(local_player + m_vecOrigin + 4),
                pm.read_float(local_player + m_vecOrigin + 8)
            ]
            view_offset = [
                pm.read_float(local_player + m_vecViewOffset),
                pm.read_float(local_player + m_vecViewOffset + 4),
                pm.read_float(local_player + m_vecViewOffset + 8)
            ]
            local_eye = [origin[0] + view_offset[0], origin[1] + view_offset[1], origin[2] + view_offset[2]]
            
            # Текущие углы
            current_angles = [
                pm.read_float(local_player + m_angRotation),
                pm.read_float(local_player + m_angRotation + 4)
            ]
            
            best_target = None
            best_fov = FOV
            
            # Поиск ближайшего врага в поле зрения
            for i in range(1, 33):
                entity = pm.read_int(client_base + dwEntityList + i * 4)
                if entity == 0:
                    continue
                
                entity_team = pm.read_int(entity + m_iTeamNum)
                if entity_team == local_team:
                    continue
                
                health = pm.read_int(entity + m_iHealth)
                if health <= 0:
                    continue
                
                # Координаты цели (голова или тело)
                target_pos = [
                    pm.read_float(entity + m_vecOrigin),
                    pm.read_float(entity + m_vecOrigin + 4),
                    pm.read_float(entity + m_vecOrigin + 8)
                ]
                if AIM_HEAD:
                    target_pos[2] += 60.0  # примерная высота головы
                else:
                    target_pos[2] += 30.0  # центр тела
                
                # Вычисляем углы до цели
                angles = get_angle(local_eye, target_pos)
                angles = normalize_angles(angles)
                
                # Вычисляем разницу углов
                delta_angle_x = abs(angles[0] - current_angles[0])
                delta_angle_y = abs(angles[1] - current_angles[1])
                
                fov = math.sqrt(delta_angle_x**2 + delta_angle_y**2)
                
                if fov < best_fov:
                    best_fov = fov
                    best_target = angles
            
            # Наводим на цель
            if best_target:
                smoothed = smooth_angles(current_angles, best_target, SMOOTH)
                smoothed = normalize_angles(smoothed)
                
                # Записываем углы в память
                pm.write_float(local_player + m_angRotation, smoothed[0])
                pm.write_float(local_player + m_angRotation + 4, smoothed[1])
                
                # Опционально: автоматический выстрел
                # force_attack = client_base + dwForceAttack
                # pm.write_int(force_attack, 5)
                # time.sleep(0.01)
                # pm.write_int(force_attack, 4)
            
            time.sleep(0.01)
            
        except Exception as e:
            pass

if __name__ == "__main__":
    main()