import ctypes, struct
kernel32 = ctypes.windll.kernel32

pid = 43084
h = kernel32.OpenProcess(0x0010, False, pid)
player_ptr = 0x2AF791A0010

buf = ctypes.create_string_buffer(0x300)
br = ctypes.c_size_t()
kernel32.ReadProcessMemory(h, ctypes.c_void_p(player_ptr + 0x450), buf, 0x300, ctypes.byref(br))
kernel32.CloseHandle(h)

data = buf.raw
print("Scanning floats in Player + [0x450 .. 0x750]:")
for off in range(0, 0x300 - 12, 4):
    f1, f2, f3 = struct.unpack('<fff', data[off:off+12])
    # Check if reasonable XYZ floats (-10000 to 10000, not 0, not nan)
    if -5000 < f1 < 5000 and -5000 < f2 < 5000 and -5000 < f3 < 5000:
        if abs(f1) > 0.1 or abs(f2) > 0.1:
            print(f"Offset +0x{0x450 + off:03X}: ({f1:.3f}, {f2:.3f}, {f3:.3f})")
