mình đang viết tool auto cho 1 game dạng client-server , client sẽ gửi 1 packet yêu cầu về server để yêu cầu server thực thi việc di chuyển cho nhân vật , mình mò và tìm được thuật toán giải mã packet tại server , và bây giờ mình cần là từ thuật toán này tìm được thuật toán mà client tạo ra mã để gửi về server
- mỗi điểm trong game đều có tọa độ dạng x,y , vd : 123,22
- packet gửi từ client về server sẽ được đổi sang byte , vd : tọa độ x = 174 , y = 104 , thì trong packet sẽ tương ứng AE , 68 (https://www.rapidtables.com/convert/number/hex-to-decimal.html)
đây là phần code giải mã ở server
short stepDirections[] = {-1, -1, 0, -1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 1, -1, 0};
byte[] data1 = PacketUtils.hex2Bytes("A1 0A D4 AE 68 48 55 55 54 44");
int offset = 5;
int pack = data1[offset];
int stepCount = (pack & 0x0F) + 1; // ... seriously now ...
int heading = (pack & 0xF0) >> 4;
int x = Short.valueOf("AE", 16).byteValue(); // ở đây sẽ lấy theo offset nhưng mình làm vd nên lấy trưc tiếp cho dễ hiểu
int y = Short.valueOf("68", 16).byteValue();
int TableIndex = 0;
for (int i = 1; i < stepCount; i++) {
if ((i % 2) == 1) {
TableIndex = data1[offset + (i + 1) / 2] >> 4;
} else {
TableIndex = data1[offset + (i + 1) / 2] & 0x0F;
}
x += stepDirections[TableIndex * 2];
y += stepDirections[TableIndex * 2 + 1];
}
- packet mà client gửi về server : A1 0A D4 AE 68 48 55 55 54 44
byte tại vị trí 3,4 sẽ cho biết vị trí hiện tại của nhân vật (AE,68) , còn các byte trước thì ko liên quan đến việc tính toán di chuyển chỉ quan tâm từ vị trí thứ 3,4 trở về sau - sau khi chạy thuật toán thì ta nhận được x,y mới của nhân vật , x,y mới này chính là tọa độ mới mà nhân vật muốn di chuyển đến
- mình muốn các bạn giúp mình tìm thuật toán mà client tạo ra packet này , mình đọc code thì thấy nó chỉ liên quan từ byte thứ 3 trở đi , ví dụ mình muốn đi từ vị trí (x1,y1) đến (x2,y2) thì sẽ phải sinh ra packet như thế nào để khi server đọc packet đó thì sẽ tìm ra x2,y2 đúng như client muốn , trong vd là di chuyển từ (174,104)>(177,112)

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?