import pymem
import pymem.process
import ctypes
import time
dwLocalPlayer = 0x10F4F4
dwEntityList = 0x10F5B0
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)
gdi32.SelectObject(hdc, brush)
gdi32.Rectangle(hdc, x, y, x + w, y + h)
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 (int(sx), int(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
hdc = user32.GetDC(hwnd)
screen_w = 800
screen_h = 600
print(f"Чит запущен. Client base: {hex(client_base)}")
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)
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)
# Упрощённая проекция (без матрицы, рисуем в центре экрана для теста)
draw_rect(hdc, 400, 300, 20, 30, 0x0000FF)
except:
pass
time.sleep(0.03)
if __name__ == "__main__":
main()