Trước khi bước vào con đường VH chính thức. Mình muốn nói về
String Couter, về
HEX, DEX.Hai phần mềm quan trọng trong vấn đề VH nâng cao đó là
CLASS EDITOR(CE) và
LANG EDITOR(LE).
CEcó thể xem tất cả các file duới dạng
Hex, Dex.
LEcó thể đọc file
.lngcó
String couter.Bài viết này mình sẽ hướng dẫn các bạn cách thức hoạt động của
LEvà cách thức quy định
Hex, Dextrong
CE.Nó sẽ rất quan trọng cho các bạn VH sau này. Chúng ta phải nắm rõ căn bản cho chặc chẽ.
Tìm hiểu về String counterSTRING COUTER(SC) đó là
2 byte Hex, Dexmà
CEđọc ra trong các file chứa ngôn ngữ của game VH. Nó quy định độ dài ký tự của đoạn ngôn ngữ theo sau nó.
Nó giúp cho các class thực thi hiểu được đoạn ngôn ngữ cần thể hiện khi chạy game.
Vấn đề chúng ta đề cập ở đây là cách nhận biết chúng.
Cách cộng trừ chúng ra sao khi ta VH.
Một đoạn ngôn ngữ cho các class thực thi không được vượt quá:
65535ký tự. Điều này dễ hiểu vì sao string couter có 2 byte.
Chúng ta mổ xẻ một đoạn ngôn ngữ để xem thử nhé!.
Các bạn chú ý rằng
1bytechỉ được tối đa là
255ký tự.
Chúng ta hãy xem đoạn ngôn ngữ tiếng
Engtrước nhé! Sau đó đến
Trung Quốc.Xem hình
Theo hình ta thấy đoạn ngôn ngữ đầu là: "
Age Of Empires III Mobile" có
25ký tự. Ở đầu chúng có 2byte
000 025. Đây chính là
string coutercủa đoạn ngôn ngữ này.
Tiếp theo đoạn ngôn ngữ "
Main Menu" có 9 ký tự. Có string couter là
000 009ở đầu đoạn ngôn ngữ.
Bây giờ các bạn đã biết xác định string couter rồi chứ!Tiếp theo chúng ta xem thử 1 ngôn ngữ game
Trung Quốcnào!
Ta thấy đoạn ngôn ngữ có 7 ký tự. String couter là
000 007Đoạn ngôn ngữ kế tiếp có 52 ký tự. String couter là
000 052Chúng ta chú ý
string couterluôn là
2byte đứng trước đoạn ngôn ngữ.Đây là điều cốt yếu để
LEcó thể dịch được.
Lang Editorchỉ dịch được đoạn ngôn ngữ dạng sau:
[String couter]đoạn ngôn ngữ 1
[String couter]đoạn ngôn ngữ 2
[String couter]đoạn ngôn ngữ 3...
Các đoạn ngôn ngữ có string couter phải liên tục nằm kề nhau không được tách nhau.
Như vậy, ta có thể copy đoạn ngôn ngữ tiếng
Engnhư sau:
Là
LEcó thể dịch được. Sau khi VH Lang sẽ tự động chỉnh sửa string couter cho chúng ta. Xem hình:
Tới đây các bạn có thể hiểu sơ được cách thức làm việc của
LErồi đấy.
Bây giờ chúng ta sẽ tìm hiểu cao hơn đối vơí những ngôn ngữ dài và phức tạp.
Các bạn down file này về để xem.
Test file ltp.wxtĐối vởi file
ltp.wxtta thấy đoạn ngôn ngữ dài tơí
452ký tự. 2byte string couter là
001 196chứ
không phảilà
000 452.Vì sao?Như lúc đầu mình đã nói
1 bytechỉ thể hiện
255ký tự thôi. Nếu vượt quá
255ký tự thì nó sẽ chuyên thành 1 ở byte trước. Thì byte phía sau phải
giảm 1.Cụ thể như sau:Đoạn ngôn ngữ 255 ký tự thì SC là 000 255.
Đoạn ngôn ngữ dài 256 ký tự thì SC là 001 000
Tương tự, 257 ký tự là 001 001Vì vậy theo đoạn ngôn ngữ ở file
ltp.wxtcó
452ký tự thì nó chuyển
255từ byte sau thành
1 ở byte trướcvà
trừ đi 1thì sẽ còn: 452-255-1=196. Vì thế string couter của đoạn ngôn ngữ thể hiện là:
001 196.Các bạn chú ý:nếu chuyển 1 lần 255 thì trừ 1, chuyển 2 lần thì trừ 2...
Cụ thế, với đoạn ngôn ngữ dài
4000ký tự thì string couter là:
015 160.Ta chuyển
15 lần 255 lên byte trước thì phải trừ đi 15.Đây là công thức đổỉ cho nhanh từ ký tự sang string couter và ngược lại.Như trên, ngôn ngữ dài 4000 ký tự thì ta tính:
4000 : 255 = 15 dư 175. Lấy 175-15=160. Vậy string couter cua 4000 ký tự là 015 160.Ngược lại, string couter là
015 160thì ta tính đoạn ngôn ngữ này dài bao nhiêu?
Ta lấy: 255x15+(160+15)=4000. Vậy đoạn ngôn ngữ đó dài 4000 ký tự.Rẩt dễ phải không? Nếu các bạn hiểu rõ về
Hex, Dextrong
CEthì VH
game EAva ảnh mã hóa sẽ trở nên dễ dàng.