---
id: poe2-dynamic-xyz-playerfinder
trigger: "khi quét hoặc đọc tọa độ người chơi (player XYZ) trong bộ nhớ POE2"
confidence: 0.9
domain: "memory_re"
scope: "project"
summary: "Sử dụng PlayerFinder 16MB pointer chain 4 cấp (<0.051µs); từ chối neo tĩnh 0x290/0x540 và kháng UI Marker 778/779"
---

# Instinct: Quét Bộ Nhớ Tọa Độ Người Chơi POE2

## 1. Bối Cảnh & Hiện Tượng
Trong Path of Exile 2, địa chỉ vùng nhớ lưu trữ struct Người Chơi (`PlayerEntity`) là vùng nhớ động (Heap) và thay đổi mỗi khi đổi map/instance. Một số phiên bản cũ cố gắng neo tĩnh offset `0x290` hoặc `0x540` từ base module, dẫn đến việc đọc trúng con trỏ rác hoặc tọa độ bị kẹt `(0, 0, 0)`.

## 2. Nguyên Nhân Gốc Rễ (RCA)
- Cấu trúc bộ nhớ của POE2 mã hóa con trỏ qua 4 cấp lồng nhau.
- Các UI Marker (như thanh máu, icon bản đồ) có mã định danh `778` hoặc `779` cũng lưu tọa độ màn hình 2D trong cùng không gian địa chỉ, dễ làm các thuật toán quét vi sai nhầm lẫn với tọa độ thực thể 3D trong thế giới.

## 3. Phản Xạ Hành Động Khuyến Nghị (`INV-MEM-DYNAMIC-XYZ`)
1. Sử dụng module `PlayerFinder` với phạm vi quét vi sai 16MB quanh vùng heap của client game.
2. Kiểm tra chuỗi con trỏ 4 cấp và đảm bảo thời gian truy xuất dưới $0.051\mu\text{s}$.
3. Áp dụng bộ lọc kháng UI Marker: Nếu thực thể mang tag `778` hoặc `779`, lập tức loại bỏ.
4. Kiểm tra điều kiện hợp lệ tọa độ: $Z$ (độ cao) phải nằm trong khoảng hợp lý của địa hình, không được bằng $0.0$ tuyệt đối trừ khi nhân vật thực sự ở gốc tọa độ bản đồ.

## 4. Bằng Chứng Thực Nghiệm
- Được kiểm chứng trong `src/core/memory/player_finder.cpp` và bộ dữ liệu dump thật `captures/*_RAM.json`.
- Test harness trong `AutoPOE2_Tests.exe` đạt thời gian giải mã con trỏ trung bình $0.038\mu\text{s}$ trên Windows x64.
