04/04/2019

[Tài liệu máy chủ] Tập tin .rec

[Tài liệu máy chủ] Tập tin .rec


Lưu ý

Bài viết này dựa vào cấu trúc tệp của phiên bản 0.3d. Có một số chi tiết có thể sẽ không trùng khớp với các phiên bản khác.
Tất cả dữ liệu được thu thập bởi người dùng Mauzen và không thể tránh khỏi sai sót. Hãy cung cấp nếu bạn có bất cứ bản vá lỗi nào.

Tập tin .rec

Các tệp .rec là các tệp SA-MP cho các tác vụ và hành động của NPC được record lại. Thông thường các tệp được tạo ingame bằng cách ghi lại hành động của người chơi. Sau đó, chúng có thể được sử dụng bởi các script NPC để phát lại, do đó NPC sẽ lặp lại chính xác các hành động đã record. Chỉ các tệp trong thư mục npcmodes / records / có thể được truy cập bởi các script NPC, trong khi các tệp đã ghi ingame được lưu trữ vào thư mục scriptfiles.

Cấu trúc chung

Định dạng tệp .rec bao gồm một tiêu đề, theo sau là một chuỗi các khối dữ liệu không tách rời. Mỗi khối dữ liệu mô tả hoàn toàn trạng thái của người chơi tại một thời điểm cụ thể vì vậy các hành động của NPC được lưu trữ một cách trôi chảy. Dữ liệu được lưu trữ dưới dạng byte theo thứ tự little endian. Các giá trị dữ liệu đơn lẻ có thể dài 1, 2 hoặc 4 byte và do đó byte, short, integers hoặc float ở định dạng IEEE-754. Một số nên được đánh dấu hoặc không, nó phụ thuộc vào cách bạn đang sử dụng chúng và không quan trọng đối với cấu trúc chung (việc đánh / không đánh dấu được liệt kê, định hướng theo cách sử dụng PAWN chung). Ngoài ra, để làm việc với các tệp .rec, bạn cần phải có trình soạn thảo hex.
HEADER[8]DATABLOCK[72]DATABLOCK[72]...

Tệp tiêu đề

Tiêu đề tệp .rec có cùng cấu trúc cho cả record khi sử dụng vehicle và on-foot. Nó dài 8 byte, trong đó 4 byte đầu tiên là một số nguyên. Vì dường như nó luôn có giá trị 1000, có thể là định danh nên SA-MP biết đó là record NPC. 4 byte còn lại là một số nguyên khác, "1" cho record khi sử dụng vehicle hoặc "2" cho record on-foot, vì vậy chỉ các byte thấp nhất của nó được sử dụng, phần còn lại luôn là 0.

Offset* Loại Ý nghĩa
0 - 3
integer
Tệp định danh, luôn là 0xE8030000 / 0d1000
4 - 7
integer
 "1" cho record khi sử dụng vehicle hoặc "2" cho record on-foot
*: Offset liên quan đến sự khởi đầu của tập tin

Khối dữ liệu

Dữ liệu on-foot

Các khối dữ liệu của on-foot có độ dài 72 byte, do đó offset +72 sẽ đề cập đến phần đầu của khối dữ liệu tiếp theo. Nó chứa đựng tất cả mọi thứ mà một người chơi bình thường có thể làm.
Offset*LoạiÝ nghĩa
0 - 3
integer không đánh dấu
thời gian để áp dụng các thuộc tính khối [ms]
4 - 5
short đánh dấu
mã khóa trái/phải (ví dụ: 0x00FF trái, 0xFF00 phải)
6 - 7
short đánh dấu
mã khóa lên/xuống
8 - 9
short không đánh dấu
mã khóa bổ sung (mã KEY_HANDBRAKE, v.v.)
10 - 13
float
vị trí x
14 - 17
float
vị trí y
18 - 21
float
vị trí z
22 - 25
float
thành phần quaternion 1 cho các góc đối diện **
26 - 29
float
thành phần quaternion 2 cho các góc đối diện **
30 - 33
float
thành phần quaternion 3 cho các góc đối diện **
34 - 37
float
thành phần quaternion 4 cho các góc đối diện **
38
1 byte
máu
39
1 byte
giáp
40
byte không đánh dấu
ID vũ khí đang sử dụng
41
byte không đánh dấu
áp dụng các hành động đặc biệt, không phải tất cả đều hoạt động với NPC
42 - 45
float
vận tốc x hiện tại
46 - 49
float
vận tốc y hiện tại
50 - 53
float
vận tốc z hiện tại
54 - 57
float
surfing x hiện tại
58 - 61
float
surfing y hiện tại
62 - 65
float
surfing z hiện tại
66 - 67
short không đánh dấu
ID phương tiện surfing hiện tại
68 - 69
short không đánh dấu
hiển thị chỉ số hành động được áp dụng
70 - 71
short
một số thông số về animation cần tìm hiểu thêm
[*] Offset liên quan đến sự khởi đầu của khối dữ liệu.
[**] Quaternions là góc nhìn 4D để có thể tham chiếu nhân vật

Dữ liệu vehicle

Các khối dữ liệu record vehicle ngắn hơn một chút và chỉ dài 67 byte.
Offset*LoạiÝ nghĩa
0 - 3
integer không đánh dấu
thời gian để áp dụng các thuộc tính khối
4 - 5
short
ID phương tiện (không quan trọng)
6 - 7
short không đánh dấu
mã khóa trái/phải
8 - 9
short không đánh dấu
mã khóa lên/xuống**
10 - 11
short đánh dấu
mã khóa bổ sung**
12 - 15
float
thành phần quaternion 1 cho các góc phương tiện
16 - 19
float
thành phần quaternion 2 cho các góc phương tiện
20 - 23
float
thành phần quaternion 3 cho các góc phương tiện
24 - 27
float
thành phần quaternion 4 cho các góc phương tiện
28 - 31
float
vị trí x
32 - 35
float
vị trí y
36 - 39
float
vị trí z
40 - 43
float
vận tốc x
44 - 47
float
vận tốc y
48 - 51
float
vận tốc z
52 - 55
float
máu của phương tiện
56
byte
máu tài xế
57
byte
giáp tài xế
58
byte
ID vũ khí đang sử dụng
59
byte
tiếng còi báo động
60
byte
trạng thái bánh xe
61 - 62
short không đánh dấu
ID thùng kéo (thùng phía sau xe container)
62 - 66
-
chưa xác định
[*] Offset liên quan đến sự khởi đầu của khối dữ liệu.
[**] Sắp xếp có sai sót nhất định.

Phần kết

Vậy là bài tìm hiểu về tập tin .rec thuộc chuyên đề Tài liệu máy chủ của chuyên mục Wiki đã hoàn thành! Ở phần này có một số từ vựng tiếng Anh kết hợp với nhau khá lạ nên việc dịch thuật tương đối khó khăn một chút. Có thể sẽ có một số lỗi liên quan đến chính tả hoặc ngữ pháp tồn đọng. Nếu phát hiện hãy liên hệ trực tiếp với team tại đây. Cảm ơn các bạn đã theo dõi. 
Một lời khuyên nhỏ từ team đến những bạn có ý định tìm hiểu sâu về SA-MP: "những bài viết khởi đầu có thể sẽ dài dòng và khô khan nhưng nó lại là tiền đề và là hành trang cơ bản để bạn thuận lợi hơn cho việc khai phá nó."
Chúc các bạn thành công!

Lưu ý

» Không chửi tục, nói bậy, quảng cáo thông qua khung bình luận.
» Không spam liên kết, chia sẻ các liên kết không liên quan đến bài Blog.
» Không xuyên tạc, bôi nhọ tổ chức hay cá nhân nào.
» Mọi bình luận sai nội quy sẽ bị xóa mà không cần báo trước.


Emoticon
Parser
😊
😉
😀
😁
😎
😍
😜
😑
😇
💖
😯
😱
😭
👍
🍻