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


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

dwLocalPlayer = 0x10F4F4
dwEntityList = 0x10F5B0
dwViewMatrix = 0x10F5D0
m_iTeamNum = 0xF0
m_iHealth = 0xF8
m_vecOrigin = 0x130

user32 = ctypes.windll.user32
gdi32 = ctypes.windll.gdi32

def draw_rect(hdc, x, y, w, h, color):
    brush = gdi32.CreateSolidBrush(color)
    old_brush = gdi32.SelectObject(hdc, brush)
    gdi32.Rectangle(hdc, int(x), int(y), int(x + w), int(y + h))
    gdi32.SelectObject(hdc, old_brush)
    gdi32.DeleteObject(brush)

def world_to_screen(x, y, z, view_matrix, screen_w, screen_h):
    w = view_matrix[12]*x + view_matrix[13]*y + view_matrix[14]*z + view_matrix[15]
    if w < 0.01:
        return None
    sx = view_matrix[0]*x + view_matrix[1]*y + view_matrix[2]*z + view_matrix[3]
    sy = view_matrix[4]*x + view_matrix[5]*y + view_matrix[6]*z + view_matrix[7]
    sx = (screen_w / 2) * (1 + sx / w)
    sy = (screen_h / 2) * (1 - sy / w)
    return (sx, sy)

def main():
    try:
        pm = pymem.Pymem("hl.exe")
    except:
        print("hl.exe не найден. Запустите CS 1.6")
        input()
        return
    
    client = pymem.process.module_from_name(pm.process_handle, "hw.dll")
    client_base = client.lpBaseOfDll
    
    hwnd = user32.FindWindowW(None, "Counter-Strike")
    if not hwnd:
        print("Окно Counter-Strike не найдено")
        input()
        return
    
    rect = ctypes.wintypes.RECT()
    user32.GetWindowRect(hwnd, ctypes.byref(rect))
    screen_w = rect.right - rect.left
    screen_h = rect.bottom - rect.top
    hdc = user32.GetDC(hwnd)
    
    print(f"Чит запущен. Client base: {hex(client_base)}")
    print(f"Размер окна: {screen_w}x{screen_h}")
    
    while True:
        try:
            local_player = pm.read_int(client_base + dwLocalPlayer)
            if local_player == 0:
                time.sleep(0.05)
                continue
            
            local_team = pm.read_int(local_player + m_iTeamNum)
            
            view_matrix = [pm.read_float(client_base + dwViewMatrix + i*4) for i in range(16)]
            
            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
                
                x = pm.read_float(entity + m_vecOrigin)
                y = pm.read_float(entity + m_vecOrigin + 4)
                z = pm.read_float(entity + m_vecOrigin + 8)
                
                screen_pos = world_to_screen(x, y, z, view_matrix, screen_w, screen_h)
                if screen_pos:
                    draw_rect(hdc, screen_pos[0]-10, screen_pos[1]-20, 20, 30, 0x0000FF)
                    
        except Exception as e:
            pass
        
        time.sleep(0.03)

if __name__ == "__main__":
    main()