diff --git a/api_vi.md b/api_vi.md new file mode 100644 index 0000000..7db03ca --- /dev/null +++ b/api_vi.md @@ -0,0 +1,112 @@ +# Enka.Network - API + +## Tài liệu API Game +- [Genshin Impact](docs/gi/api_vi.md) +- [Zenless Zone Zero](docs/zzz/api_vi.md) + +## Bắt đầu + +Bạn có thể sử dụng các wrapper được tạo bởi người khác, hoặc sử dụng API trực tiếp. Nó rất đơn giản, vì vậy không khó để tự xây dựng logic dữ liệu của riêng bạn dựa trên các phản hồi. Thách thức lớn nhất là điều hướng dữ liệu game được khai thác (datamined) và gắn nó với dữ liệu trả về một cách chính xác. + +Xem phần [Wrappers](#wrappers) cho ngôn ngữ lập trình bạn chọn. + +## Trước khi bạn yêu cầu + +Một vài quy tắc khi sử dụng API: + +1. Vui lòng không cố gắng liệt kê UID hoặc thực hiện các tác vụ truy vấn lớn để lấp đầy cơ sở dữ liệu. Có hàng trăm triệu UID và bạn đơn giản là sẽ không thể làm điều này thông qua API này. Tôi có thể cung cấp dữ liệu hàng loạt vào một thời điểm sau này. + +2. Vui lòng đặt header `User-Agent` tùy chỉnh với các yêu cầu của bạn để tôi có thể theo dõi chúng tốt hơn và giúp bạn nếu cần. + +3. Có các giới hạn tốc độ (ratelimit) động trên các endpoint UID - nếu bạn yêu cầu quá nhanh, bạn sẽ gặp thời gian phản hồi chậm hơn và cuối cùng là trả về mã 429. Điều này có nghĩa là bạn cần giảm tốc độ hoặc liên hệ với tôi để xem liệu có thể tăng giới hạn tốc độ cho bạn hay không. Trong hầu hết các trường hợp, điều này là không cần thiết và là kết quả của mã chưa được tối ưu hóa. + +4. Về lưu ý này, tất cả các yêu cầu UID đều trả về trường `ttl` - trường này là "số giây cho đến khi yêu cầu Showcase tiếp theo được thực hiện cho UID này". Cho đến khi nó hết hạn, endpoint sẽ trả về dữ liệu được cache, nhưng bạn vẫn sẽ tiêu tốn giới hạn tốc độ của mình nếu bạn liên tục truy cập nó. Hãy cố gắng cache dữ liệu với thời gian chờ là `ttl` khi yêu cầu, hoặc ngăn chặn các yêu cầu đến UID cho đến khi `ttl` của nó hết hạn. Tôi khuyên dùng Redis cho việc này. + +Nếu bạn gặp khó khăn khi làm việc với dữ liệu, hãy tham gia [Discord server](https://discord.gg/PcSZr5sbn3) để được trợ giúp. + +## Danh sách các API + +### Endpoint UID + +#### Lấy dữ liệu Showcase với đầy đủ thông tin người chơi + +> https://enka.network/api/uid/618285856/ + +Phản hồi sẽ chứa `playerInfo` và `avatarInfoList`. `playerInfo` là dữ liệu cơ bản về tài khoản game. Nếu thiếu `avatarInfoList`, điều đó có nghĩa là Showcase của tài khoản này đã bị đóng hoặc chưa được thêm nhân vật. + + +#### Chỉ lấy thông tin người chơi + +> https://enka.network/api/uid/618285856/?info + +Bằng cách thêm `?info` vào yêu cầu, bạn chỉ yêu cầu `playerInfo`. Yêu cầu chính luôn cố gắng lấy cả `avatarInfoList`; nếu bạn chỉ cần `playerInfo`, vui lòng sử dụng endpoint này - nó sẽ nhanh hơn nhiều so với việc lấy đầy đủ dữ liệu. + +Ngoài ra, cả hai phản hồi sẽ chứa đối tượng `owner` nếu: + +1. Người dùng có tài khoản trên trang web +2. Người dùng đã thêm UID vào hồ sơ của họ +3. Người dùng đã xác minh nó +4. Người dùng đặt chế độ hiển thị là "công khai" + +Thông tin thêm về tài khoản người dùng bên dưới. + +#### Mã phản hồi HTTP + +Hãy đảm bảo xử lý những mã này trong ứng dụng của bạn một cách thích hợp. +``` +400 = Sai định dạng UID +404 = Người chơi không tồn tại (Server MHY báo vậy) +424 = Bảo trì game / mọi thứ bị hỏng sau khi cập nhật game +429 = Bị giới hạn tốc độ (bởi server của tôi hoặc server MHY) +500 = Lỗi server chung +503 = Tôi đã làm hỏng nghiêm trọng +``` + +### Endpoint Hồ sơ (Profile) + +Có thể tạo một tài khoản (hồ sơ) trên trang web và gắn nhiều tài khoản game vào đó. Người dùng sau đó được yêu cầu xác minh rằng tài khoản thuộc về họ thông qua mã xác minh được đặt trong chữ ký (signature) - bằng cách này chúng tôi có thể đảm bảo tài khoản thuộc về họ. + +Người dùng có thể "snapshot" (lưu nhanh) các build dưới tên tùy chỉnh, được gọi là "saved builds" (build đã lưu). + +> https://enka.network/api/profile/Algoinde/ + +Lấy thông tin người dùng. + +> https://enka.network/api/profile/Algoinde/hoyos/ + +Lấy danh sách các "hoyos" - tài khoản Genshin và metadata của chúng. Cái này chỉ trả về các tài khoản `verified` (đã xác minh) và `public` (công khai) (người dùng có thể ẩn tài khoản; tài khoản chưa xác minh được ẩn theo mặc định). Mỗi khóa trong phản hồi là một định danh duy nhất của một hoyo mà bạn cần sử dụng cho các yêu cầu tiếp theo để thực sự lấy thông tin nhân vật/build. + +> https://enka.network/api/profile/Algoinde/hoyos/4Wjv2e/ + +Trả về metadata cho một hoyo đơn lẻ. + +> https://enka.network/api/profile/Algoinde/hoyos/4Wjv2e/builds/ + +Trả về các build đã lưu cho một hoyo nhất định. Đây là một đối tượng chứa các mảng, trong đó khóa là `avatarId` của nhân vật, và các đối tượng trong mảng là các build khác nhau cho một nhân vật nhất định, không theo thứ tự cụ thể (nhưng bạn có thể dựa vào trường `order` để sắp xếp khi hiển thị). + +Nếu một build có trường `live: true`, điều đó có nghĩa là nó không phải là một build "đã lưu", mà đơn giản là những gì được lấy từ showcase của họ khi họ nhấp vào "làm mới". Khi được làm mới, tất cả các build `live` cũ sẽ biến mất và các build mới được tạo ra. Chỉ người dùng mới quyết định khi nào thực hiện việc làm mới này - dữ liệu này sẽ KHÔNG được cập nhật tự động. + +Như đã nêu trong [UID endpoints](#uid-endpoints), khi bạn thực hiện yêu cầu UID, bạn có thể nhận được một đối tượng `owner`. Bạn có thể xây dựng URL bằng cách sử dụng các trường này trong đối tượng: + +`https://enka.network/api/profile/{owner.username}/hoyos/{owner.hash}/builds/` + + +## Wrappers + +TS/JS - https://www.npmjs.com/package/enkanetwork.js - [Jelosus1](https://github.com/Jelosus2) + +TS/JS - https://github.com/yuko1101/enka-network-api - [yuko1101](https://github.com/yuko1101) + +Rust - https://github.com/eratou/enkanetwork-rs - [eratou](https://github.com/eratou) + +Python - https://github.com/mrwan200/enkanetwork.py - [mrwan200](https://github.com/mrwan200) + +Python - https://github.com/seriaati/enka-py - [seriaati](https://github.com/seriaati) + +Java - https://github.com/kazuryyx/EnkaNetworkAPI - [kazury](https://github.com/kazuryyx) + +C# - https://github.com/aliafuji/EnkaDotnet - [aliafuji](https://github.com/aliafuji) + +C# - https://github.com/Carried520/EnkaSharp - [Carried520](https://github.com/Carried520) + +Go - https://github.com/kirinyoku/enkanetwork-go - [kirinyoku](https://github.com/kirinyoku) diff --git a/docs/gi/api_vi.md b/docs/gi/api_vi.md new file mode 100644 index 0000000..12e6d8b --- /dev/null +++ b/docs/gi/api_vi.md @@ -0,0 +1,295 @@ +# Enka.Network API - Genshin Impact + +## Mục lục + +- [Thông tin Cấu trúc Dữ liệu](#cấu-trúc-dữ-liệu) +- [Định nghĩa](#định-nghĩa) +- [Biểu tượng và Hình ảnh](#biểu-tượng-và-hình-ảnh) +- [Bản địa hóa](#bản-địa-hóa) + + +## Cấu trúc Dữ liệu + +| Tên | Mô tả | +| :--- | :---------- | +| [playerInfo](#playerinfo) | Thông tin Hồ sơ | +| [avatarInfoList](#avatarinfolist) | Danh sách thông tin chi tiết cho mỗi nhân vật từ showcase | + +### playerInfo + +Để lấy dữ liệu cơ bản của nhân vật theo ID, hãy truy cập [store/characters.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/characters.json).
+Để biết thêm thông tin bổ sung, hãy kiểm tra [Dữ liệu Nhân vật](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/AvatarExcelConfigData.json). + +| Tên | Mô tả | +| :--- | :--------- | +| nickname | Biệt danh Người chơi | +| signature | Chữ ký Hồ sơ | +| worldLevel | Cấp Thế giới của Người chơi | +| namecardId | ID Danh thiếp Hồ sơ | +| finishAchievementNum | Số lượng Thành tựu Đã hoàn thành | +| towerFloorIndex | Tầng La Hoàn | +| towerLevelIndex | Phòng của Tầng La Hoàn | +| [showAvatarInfoList](#showavatarinfolist) | Danh sách ID và Cấp độ Nhân vật | +| showNameCardIdList | Danh sách ID Danh thiếp | +| profilePicture.avatarId | ID Nhân vật của Ảnh đại diện | + +#### showAvatarInfoList + +| Tên | Mô tả | +| :--- | :--------- | +| avatarId | ID Nhân vật | +| level | Cấp độ Nhân vật | +| costumeId | ID trang phục của nhân vật. Kiểm tra `"Costumes"` trong [store/characters.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/characters.json) | + +### avatarInfoList + +Để lấy dữ liệu cơ bản của nhân vật theo ID, hãy truy cập [store/characters.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/characters.json).
+Để biết thêm thông tin bổ sung, hãy kiểm tra [Dữ liệu Nhân vật](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/AvatarExcelConfigData.json). + +| Tên | Mô tả | +| :--- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| avatarID | ID Nhân vật | +| talentIdList | Danh sách ID Cung mệnh
Không có dữ liệu nếu 0 Cung mệnh | +| [propMap](#propmap) | Danh sách Thuộc tính Thông tin Nhân vật | +| fightPropMap -> `{id: value}` | Map các Thuộc tính Chiến đấu của Nhân vật.
Kiểm tra [Định nghĩa cho ID](#fightprop) | +| skillDepotId | ID Bộ Kỹ năng Nhân vật
[Dữ liệu Kỹ năng](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/AvatarSkillDepotExcelConfigData.json) -> `"id"` | +| inherentProudSkillList | Danh sách ID Kỹ năng Đã mở khóa
[Dữ liệu Kỹ năng](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/AvatarSkillDepotExcelConfigData.json) -> `"inherentProudSkillOpens"` | +| skillLevelMap -> `{skill_id: level}`| Map các Cấp độ Kỹ năng
[Dữ liệu Kỹ năng](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/AvatarSkillDepotExcelConfigData.json) -> `"inherentProudSkillOpens"` | +| [equipList](#equiplist) | Danh sách Trang bị: Vũ khí, Thánh di vật | +| fetterInfo.expLevel | Cấp độ Yêu thích Nhân vật | + +#### propMap + +| Tên | Mô tả | +| :--- | :--------- | +| type | ID Loại Thuộc tính, Kiểm tra [Định nghĩa cho ID](#prop) | +| ival | Bỏ qua nó | +| val | Giá trị của Thuộc tính | + +#### equipList + +| Tên | Mô tả | +| :--- | :--------- | +| itemId | ID Trang bị
[Dữ liệu Thánh di vật](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/ReliquaryExcelConfigData.json) -> `"id"`
[Dữ liệu Vũ khí](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/WeaponExcelConfigData.json) -> `"id"` | +| [weapon](#weapon) `[Chỉ Vũ khí]` | Thông tin Cơ bản Vũ khí | +| [reliquary](#reliquary) `[Chỉ Thánh di vật]` | Thông tin Cơ bản Thánh di vật | +| [flat](#flat) | Thông tin Chi tiết của Trang bị | + +#### weapon + +Để biết thêm thông tin bổ sung về vũ khí, kiểm tra [Dữ liệu Vũ khí](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/WeaponExcelConfigData.json) + +| Tên | Mô tả | +| :--- | :---------- | +| level | Cấp độ Vũ khí | +| promoteLevel | Cấp độ Đột phá Vũ khí | +| affixMap | Cấp độ Tinh luyện Vũ khí `[0-4]` | + + +#### reliquary + +Để biết thêm thông tin bổ sung về thánh di vật, kiểm tra [Dữ liệu Thánh di vật](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/ReliquaryExcelConfigData.json) + +| Tên | Mô tả | +| :--- | :---------- | +| level | Cấp độ Thánh di vật `[1-21]` | +| mainPropId | ID Dòng chính Thánh di vật
[Dữ liệu MainProps](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/ReliquaryMainPropExcelConfigData.json) | +| appendPropIdList | Danh sách ID các dòng phụ của thánh di vật
[Dữ liệu AppendProp](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/ReliquaryAffixExcelConfigData.json) | + +#### flat + +| Tên | Mô tả | +| :--- | :---------- | +| nameTextHashMap | Hash cho Tên Trang bị
Kiểm tra [Bản địa hóa](#bản-địa-hóa) | +| setNameTextHashMap `[Chỉ Thánh di vật]`| Hash cho Tên Bộ Thánh di vật
Kiểm tra [Bản địa hóa](#bản-địa-hóa)| +| rankLevel | Cấp độ Hiếm của Trang bị | +| [reliquaryMainstat](#reliquarymainstat-reliquarysubstats-weaponstats) `[Chỉ Thánh di vật]` | Dòng chính Thánh di vật | +| [reliquarySubstats](#reliquarymainstat-reliquarysubstats-weaponstats) `[Chỉ Thánh di vật]` | Danh sách Dòng phụ Thánh di vật | +| [weaponStats](#reliquarymainstat-reliquarysubstats-weaponstats) `[Chỉ Vũ khí]`| Danh sách Chỉ số Vũ khí: Tấn công Căn bản, Dòng phụ | +| [itemType](#itemtype) | Loại Trang bị: Vũ khí hoặc Thánh di vật | +| icon | Tên Biểu tượng Trang bị
[Cách dùng tên biểu tượng](#biểu-tượng-và-hình-ảnh)| +| [equipType](#equiptype) `[Chỉ Thánh di vật]` | Loại Thánh di vật | + +#### reliquaryMainstat, reliquarySubstats, weaponStats + +| Tên | Mô tả | +| :--- | :---------- | +| mainPropId / appendPropID | Tên Thuộc tính Bổ sung Trang bị. Kiểm tra [Định nghĩa cho Tên](#appendprop)| +| propValue | Giá trị Thuộc tính | + +## Định nghĩa + +### Prop + +| Loại | Mô tả | +| :--: | :---------- | +| 1001 | XP | +| 1002 | Đột phá | +| 4001 | Cấp độ | + +### FightProp + +| Loại | Mô tả | +| :--: |:--------------------------------------------------| +| 1 | HP Căn bản | +| 2 | HP | +| 3 | HP% | +| 4 | Tấn công Căn bản | +| 5 | Tấn công | +| 6 | Tấn công% | +| 7 | Phòng thủ Căn bản | +| 8 | Phòng thủ | +| 9 | Phòng thủ% | +| 10 | Tốc độ Căn bản | +| 11 | Tốc độ% | +| 20 | Tỷ lệ Bạo kích | +| 22 | Sát thương Bạo kích | +| 23 | Hiệu quả Nạp Nguyên tố | +| 26 | Tăng Trị liệu | +| 27 | Tăng Trị liệu Nhận vào | +| 28 | Tinh thông Nguyên tố | +| 29 | Kháng Vật lý | +| 30 | Tăng Sát thương Vật lý | +| 40 | Tăng Sát thương Hỏa | +| 41 | Tăng Sát thương Lôi | +| 42 | Tăng Sát thương Thủy | +| 43 | Tăng Sát thương Thảo | +| 44 | Tăng Sát thương Phong | +| 45 | Tăng Sát thương Nham | +| 46 | Tăng Sát thương Băng | +| 50 | Kháng Hỏa | +| 51 | Kháng Lôi | +| 52 | Kháng Thủy | +| 53 | Kháng Thảo | +| 54 | Kháng Phong | +| 55 | Kháng Nham | +| 56 | Kháng Băng | +| 70 | Tiêu hao Năng lượng Hỏa | +| 71 | Tiêu hao Năng lượng Lôi | +| 72 | Tiêu hao Năng lượng Thủy | +| 73 | Tiêu hao Năng lượng Thảo | +| 74 | Tiêu hao Năng lượng Phong | +| 75 | Tiêu hao Năng lượng Băng | +| 76 | Tiêu hao Năng lượng Nham | +| 77 | Năng lượng Đặc biệt Tối đa | +| 78 | Tiêu hao Năng lượng Đặc biệt | +| 80 | Giảm thời gian hồi chiêu | +| 81 | Hiệu quả Khiên | +| 1000 | Năng lượng Hỏa Hiện tại | +| 1001 | Năng lượng Lôi Hiện tại | +| 1002 | Năng lượng Thủy Hiện tại | +| 1003 | Năng lượng Thảo Hiện tại | +| 1004 | Năng lượng Phong Hiện tại | +| 1005 | Năng lượng Băng Hiện tại | +| 1006 | Năng lượng Nham Hiện tại | +| 1007 | Năng lượng Đặc biệt Hiện tại | +| 1010 | HP Hiện tại | +| 2000 | HP Tối đa | +| 2001 | Tấn công | +| 2002 | Phòng thủ | +| 2003 | Tốc độ | +| 3025 | Tỷ lệ Bạo kích phản ứng nguyên tố | +| 3026 | Sát thương Bạo kích phản ứng nguyên tố | +| 3027 | Tỷ lệ Bạo kích phản ứng nguyên tố (Quá tải) | +| 3028 | Sát thương Bạo kích phản ứng nguyên tố (Quá tải) | +| 3029 | Tỷ lệ Bạo kích phản ứng nguyên tố (Khuếch tán) | +| 3030 | Sát thương Bạo kích phản ứng nguyên tố (Khuếch tán) | +| 3031 | Tỷ lệ Bạo kích phản ứng nguyên tố (Điện cảm) | +| 3032 | Sát thương Bạo kích phản ứng nguyên tố (Điện cảm) | +| 3033 | Tỷ lệ Bạo kích phản ứng nguyên tố (Siêu dẫn) | +| 3034 | Sát thương Bạo kích phản ứng nguyên tố (Siêu dẫn) | +| 3035 | Tỷ lệ Bạo kích phản ứng nguyên tố (Thiêu đốt) | +| 3036 | Sát thương Bạo kích phản ứng nguyên tố (Thiêu đốt) | +| 3037 | Tỷ lệ Bạo kích phản ứng nguyên tố (Đóng băng (Phá băng)) | +| 3038 | Sát thương Bạo kích phản ứng nguyên tố (Đóng băng (Phá băng)) | +| 3039 | Tỷ lệ Bạo kích phản ứng nguyên tố (Sum suê) | +| 3040 | Sát thương Bạo kích phản ứng nguyên tố (Sum suê) | +| 3041 | Tỷ lệ Bạo kích phản ứng nguyên tố (Bung tỏa) | +| 3042 | Sát thương Bạo kích phản ứng nguyên tố (Bung tỏa) | +| 3043 | Tỷ lệ Bạo kích phản ứng nguyên tố (Nở rộ) | +| 3044 | Sát thương Bạo kích phản ứng nguyên tố (Nở rộ) | +| 3045 | Tỷ lệ Bạo kích phản ứng nguyên tố Căn bản | +| 3046 | Sát thương Bạo kích phản ứng nguyên tố Căn bản | + +### ItemType + +| Tên | Mô tả | +| :--- | :---------- | +| ITEM_WEAPON | Vũ khí | +| ITEM_RELIQUARY | Thánh di vật | + +### EquipType + +| Tên | Mô tả | +| :--- | :---------- | +| EQUIP_BRACER | Hoa | +| EQUIP_NECKLACE | Lông | +| EQUIP_SHOES | Đồng hồ | +| EQUIP_RING | Ly | +| EQUIP_DRESS | Nón | + +### AppendProp + +| Tên | Mô tả | +| :--- |:-------------------| +| FIGHT_PROP_BASE_ATTACK `[Vũ khí]` | Tấn công Căn bản | +| FIGHT_PROP_HP | HP Cộng thẳng | +| FIGHT_PROP_ATTACK | Tấn công Cộng thẳng | +| FIGHT_PROP_DEFENSE | Phòng thủ Cộng thẳng | +| FIGHT_PROP_HP_PERCENT | HP% | +| FIGHT_PROP_ATTACK_PERCENT | Tấn công% | +| FIGHT_PROP_DEFENSE_PERCENT | Phòng thủ% | +| FIGHT_PROP_CRITICAL | Tỷ lệ Bạo kích | +| FIGHT_PROP_CRITICAL_HURT | Sát thương Bạo kích | +| FIGHT_PROP_CHARGE_EFFICIENCY | Hiệu quả Nạp Nguyên tố | +| FIGHT_PROP_HEAL_ADD | Tăng Trị liệu | +| FIGHT_PROP_ELEMENT_MASTERY | Tinh thông Nguyên tố | +| FIGHT_PROP_PHYSICAL_ADD_HURT | Tăng Sát thương Vật lý | +| FIGHT_PROP_FIRE_ADD_HURT | Tăng Sát thương Hỏa | +| FIGHT_PROP_ELEC_ADD_HURT | Tăng Sát thương Lôi | +| FIGHT_PROP_WATER_ADD_HURT | Tăng Sát thương Thủy | +| FIGHT_PROP_WIND_ADD_HURT | Tăng Sát thương Phong | +| FIGHT_PROP_ICE_ADD_HURT | Tăng Sát thương Băng | +| FIGHT_PROP_ROCK_ADD_HURT | Tăng Sát thương Nham | +| FIGHT_PROP_GRASS_ADD_HURT | Tăng Sát thương Thảo | + +## Biểu tượng và Hình ảnh + +Bạn có thể lấy biểu tượng của nhân vật, vũ khí và thánh di vật thông qua Enka, bằng URL `https://enka.network/ui/[icon_name].png`. +Thông thường tên biểu tượng bắt đầu bằng `"UI_"` hoặc `"Skill_"` cho [thiên phú và cung mệnh nhân vật](#characters-talents-and-consts). +Ví dụ https://enka.network/ui/UI_AvatarIcon_Side_Ambor.png. + +### Vũ khí và Thánh di vật + +Đi tới [flat](#flat) và tìm kiếm `icon`. + +### Nhân vật, Thiên phú và Cung mệnh + +Đi tới [store/characters.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/characters.json) và tìm kiếm bất kỳ thứ gì liên quan đến "UI_XXXXXX" hoặc "Skill_XXXXXX" theo ID nhân vật. + +## Bản địa hóa + +Bạn có thể nhận thấy `"NameTextMapHash"` trong [store/characters.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/characters.json), `"nameTextHashMap"` và `"setNameTextHashMap"` tại [flat](#flat) có thể được sử dụng làm khóa để lấy dữ liệu bản địa hóa cơ bản của nhân vật, vũ khí và thánh di vật từ [store/loc.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/loc.json). +Bạn cũng có thể lấy dữ liệu bản địa hóa của [AppendProp](#appendprop) bằng cách sử dụng tên thuộc tính làm khóa - `"FIGHT_PROP_HP"`, `"FIGHT_PROP_HEAL_ADD"`, v.v. + +Để biết thêm thông tin bổ sung về tên, mô tả và v.v., hãy kiểm tra [Dữ liệu TextMap](https://gitlab.com/Dimbreath/AnimeGameData/-/tree/master/TextMap), chỉ bao gồm các ngôn ngữ được hỗ trợ bởi game. + +## Wrappers + +TS/JS - https://www.npmjs.com/package/enkanetwork.js - [Jelosus1](https://github.com/Jelosus2) + +TS/JS - https://github.com/yuko1101/enka-network-api - [yuko1101](https://github.com/yuko1101) + +Rust - https://github.com/eratou/enkanetwork-rs - [eratou](https://github.com/eratou) + +Python - https://github.com/mrwan200/enkanetwork.py - [mrwan200](https://github.com/mrwan200) + +Python - https://github.com/seriaati/enka-py - [seriaati](https://github.com/seriaati) + +Java - https://github.com/kazuryyx/EnkaNetworkAPI - [kazury](https://github.com/kazuryyx) + +C# - https://github.com/aliafuji/EnkaDotnet - [aliafuji](https://github.com/aliafuji) + +C# - https://github.com/Carried520/EnkaSharp - [Carried520](https://github.com/Carried520) + +Go - https://github.com/kirinyoku/enkanetwork-go - [kirinyoku](https://github.com/kirinyoku) diff --git a/docs/zzz/api_vi.md b/docs/zzz/api_vi.md new file mode 100644 index 0000000..d9f5db7 --- /dev/null +++ b/docs/zzz/api_vi.md @@ -0,0 +1,311 @@ +# Enka.Network API - Zenless Zone Zero + +## Mục lục + +- [Ghi chú Quan trọng](#ghi-chú-quan-trọng) +- [Cấu trúc Dữ liệu](#cấu-trúc-dữ-liệu) +- [Định nghĩa](#định-nghĩa) +- [Công thức](#công-thức) +- [Biểu tượng và Hình ảnh](#biểu-tượng-và-hình-ảnh) +- [Bản địa hóa](#bản-địa-hóa) + +## Ghi chú Quan trọng + +- UID cho vũ khí và đĩa là duy nhất cho vật phẩm cụ thể đó trong một tài khoản game. Chúng sẽ tồn tại qua các lần nâng cấp đĩa/vũ khí và có thể được sử dụng để loại bỏ trùng lặp trên nhiều truy vấn nếu bạn muốn theo dõi tất cả trang bị trên tài khoản đã được nhìn thấy trong showcase. + +- Phản hồi sẽ luôn chứa một lượng dữ liệu tối thiểu. Để lấy một số thông tin cơ bản, bạn phải làm việc với các file JSON đã phân tích trong [API-docs/store/zzz](https://github.com/EnkaNetwork/API-docs/tree/master/store/zzz). Nếu bạn cần nhiều dữ liệu hơn để làm việc, vui lòng tham khảo kho lưu trữ [ZenlessData](https://git.mero.moe/dimbreath/ZenlessData) được duy trì bởi Dimbreath. + +- Trong khi làm việc với chỉ số nhân vật, vũ khí và đĩa, bạn nên tham khảo [Công thức](#công-thức). Cảm ơn rất nhiều đến Mero vì đã đảo ngược kỹ thuật và lấy được các công thức thực tế được sử dụng trong game. + +--- + +## Cấu trúc Dữ liệu + +| Tên | Mô tả | +| :--- | :---------- | +| uid | UID Người chơi | +| ttl | Số giây cho đến lần cập nhật tiếp theo | +| [PlayerInfo](#playerinfo) | Thông tin Hồ sơ | + +#### PlayerInfo + +| Tên | Mô tả | +| :--- | :--------- | +| [SocialDetail](#socialdetail) | Chi tiết thông tin xã hội | +| [ShowcaseDetail](#showcasedetail) | Chi tiết Showcase | + +#### SocialDetail + +| Tên | Mô tả | +| :--- | :--------- | +| Desc | Chữ ký hồ sơ | +| [ProfileDetail](#profiledetail) | Chi tiết hồ sơ | +| [MedalList](#medallist) | Danh sách Huy hiệu | + +#### MedalList +| Tên | Mô tả | +| :--- | :--------- | +| MedalType | [Loại Huy hiệu](#loại-huy-hiệu) | +| Value | Số Tiến độ | +| MedalIcon | ID Biểu tượng | + +### ProfileDetail + +| Tên | Mô tả | +| :--- | :--------- | +| Uid | UID Người chơi | +| Nickname | Biệt danh Người chơi | +| ProfileId | ID Ảnh đại diện | +| Level | Cấp Inter-Knot | +| Title | ID Danh hiệu | +| CallingCardId | ID Danh thiếp | +| AvatarId | ID Nhân vật Chính (Wise hoặc Belle) | + +#### ShowcaseDetail + +| Tên | Mô tả | +| :--- | :--------- | +| [AvatarList](#AvatarList) | Danh sách Nhân vật | + +### AvatarList + +| Tên | Mô tả | +| :--- | :--------- | +| Id | ID Người đại diện | +| Exp | Exp Người đại diện | +| Level | Cấp độ Người đại diện | +| PromotionLevel | Cấp độ Đột phá Người đại diện | +| TalentLevel | Cấp độ Mindscape (Ảnh Động) | +| SkinId | ID Trang phục Người đại diện | +| CoreSkillEnhancement | Nâng cấp Kỹ năng Cốt lõi đã mở khóa - A, B, C, D, E, F | +| TalentToggleList | Bật tắt hiển thị Mindscape Cinema (Rạp Phim Ảnh Động) | +| WeaponEffectState | Trạng thái hiệu ứng đặc biệt chữ ký W-Engine `[0: Không, 1: TẮT, 2: BẬT]` | +| IsHidden | Trạng thái ẩn của Người đại diện | +| ClaimedRewardList | Phần thưởng đột phá Người đại diện | +| ObtainmentTimestamp | Thời gian nhận Người đại diện | +| [Weapon](#weapon) | W-Engine đã trang bị | +| SkillLevelList | Dict cấp độ kỹ năng Người đại diện, kiểm tra [định nghĩa](#kỹ-năng) cho các chỉ mục | +| [EquippedList](#EquippedList) | Danh sách Đĩa | + +Lưu ý: Nếu người đại diện đã mở khóa mindscape 3, tăng tất cả cấp độ kỹ năng lên 2. Nếu người đại diện đã mở khóa mindscape 5, tăng tất cả cấp độ kỹ năng lên 2 trên cơ sở của lần tăng trước đó (tổng cộng 4). + +#### Weapon + +Kiểm tra [Công thức](#công-thức) để xem cách lấy giá trị thực tế từ giá trị cơ bản +Để biết thêm thông tin, tham khảo [store/zzz/weapons.json](https://raw.githubusercontent.com/EnkaNetwork/API-docs/refs/heads/master/store/zzz/weapons.json) + +| Tên | Mô tả | +| :--- | :--------- | +| Uid | UID W-Engine | +| Id | ID W-Engine | +| Exp | Exp W-Engine | +| Level | Cấp độ W-Engine | +| BreakLevel | Cấp độ sửa đổi W-Engine | +| UpgradeLevel | Cấp độ Giai đoạn W-Engine | +| IsAvailable | Trạng thái khả dụng của W-Engine | +| IsLocked | Trạng thái khóa của W-Engine | + +#### EquippedList +| Tên | Mô tả | +| :--- | :--------- | +| Slot | Chỉ mục khe cắm | +| [Equipment](#equipment) | Dữ liệu trang bị | + +#### Equipment + +| Tên | Mô tả | +| :--- | :--------- | +| Uid | UID Đĩa | +| Id | ID Đĩa | +| Exp | Exp | +| Level | Cấp độ Đĩa `[0-15]` | +| BreakLevel | Số lần nhảy chỉ số ngẫu nhiên | +| IsLocked | Trạng thái đánh dấu khóa của Đĩa | +| IsAvailable | Trạng thái khả dụng của Đĩa | +| IsTrash | Trạng thái đánh dấu rác của Đĩa | +| MainStatList | Dòng chính Đĩa, kiểm tra [Stat](#Stat) để biết thêm thông tin | +| RandomPropertyList | Danh sách Dòng phụ Đĩa, kiểm tra [Stat](#Stat) để biết thêm thông tin | + +Lưu ý: Độ hiếm của Đĩa có thể được tìm thấy trong [store/zzz/equipment.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/zzz/equipments.json). + +#### Stat + +Kiểm tra [Công thức](#công-thức) để xem cách lấy giá trị thực tế từ giá trị cơ bản + +| Tên | Mô tả | +| :--- | :---------- | +| PropertyValue | Giá trị Cơ bản Thuộc tính | +| PropertyId | ID Thuộc tính, kiểm tra [định nghĩa](#property-id) cho các ID | +| PropertyLevel | Số lần nhảy (roll), chỉ quan trọng nếu là dòng phụ | + +--- + +## Định nghĩa + +### Property Id + +Tham khảo bảng dưới đây và [store/zzz/property.json](https://raw.githubusercontent.com/EnkaNetwork/API-docs/refs/heads/master/store/zzz/property.json) để biết thêm thông tin. + +| Loại | Mô tả| +| :--- | :--------- | +| 11101 | HP `[Cơ bản]` | +| 11102 | HP% | +| 11103 | HP `[Cộng thẳng]` | +| 12101 | Tấn công `[Cơ bản]` | +| 12102 | Tấn công% | +| 12103 | Tấn công `[Cộng thẳng]` | +| 12201 | Xung kích `[Cơ bản]` | +| 12202 | Xung kích% | +| 13101 | Phòng thủ `[Cơ bản]` | +| 13102 | Phòng thủ% | +| 13103 | Phòng thủ `[Cộng thẳng]` | +| 20101 | Tỷ lệ Bạo kích `[Cơ bản]` | +| 20103 | Tỷ lệ Bạo kích `[Cộng thẳng]` | +| 21101 | Sát thương Bạo kích `[Cơ bản]` | +| 21103 | Sát thương Bạo kích `[Cộng thẳng]` | +| 23101 | Tỷ lệ Xuyên thấu `[Cơ bản]` | +| 23103 | Tỷ lệ Xuyên thấu `[Cộng thẳng]` | +| 23201 | Xuyên thấu `[Cơ bản]` | +| 23203 | Xuyên thấu `[Cộng thẳng]` | +| 30501 | Tự hồi Năng lượng `[Cơ bản]` | +| 30502 | Tự hồi Năng lượng% | +| 30503 | Tự hồi Năng lượng `[Cộng thẳng]` | +| 31201 | Khống chế Bất thường `[Cơ bản]` | +| 31203 | Khống chế Bất thường `[Cộng thẳng]` | +| 31401 | Tinh thông Bất thường `[Cơ bản]` | +| 31402 | Tinh thông Bất thường% | +| 31403 | Tinh thông Bất thường `[Cộng thẳng]` | +| 31501 | Tăng Sát thương Vật lý `[Cơ bản]` | +| 31503 | Tăng Sát thương Vật lý `[Cộng thẳng]` | +| 31601 | Tăng Sát thương Hỏa `[Cơ bản]` | +| 31603 | Tăng Sát thương Hỏa `[Cộng thẳng]` | +| 31701 | Tăng Sát thương Băng `[Cơ bản]` | +| 31703 | Tăng Sát thương Băng `[Cộng thẳng]` | +| 31801 | Tăng Sát thương Điện `[Cơ bản]` | +| 31803 | Tăng Sát thương Điện `[Cộng thẳng]` | +| 31901 | Tăng Sát thương Ether `[Cơ bản]` | +| 31903 | Tăng Sát thương Ether `[Cộng thẳng]` | + +### Độ hiếm + +| Loại | Mô tả | +| :--- | :---------- | +| 4 | S | +| 3 | A | +| 2 | B | + +### Loại Huy hiệu + +| Loại | Mô tả | +| :--- | :---------- | +| 1 | Bảo Vệ Trụ Shiyu | +| 2 | Tòa Tháp Bất Tận | +| 3 | Tập Kích Nguy Cấp | +| 4 | Tòa Tháp Bất Tận: Đường Cùng | + +### Kỹ năng + +| Chỉ mục | Mô tả| +| :--- | :--------- | +| 0 | Tấn công Thường | +| 1 | Chiến kỹ | +| 2 | Né tránh | +| 3 | Tuyệt kỹ | +| 5 | Kỹ năng Cốt lõi | +| 6 | Hỗ trợ | + +--- + +## Công thức + +#### Chỉ số Người đại diện + +Để tính toán các chỉ số cơ bản của một Người đại diện, bạn cần sử dụng +[store/zzz/avatars.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/zzz/avatars.json). + +- **Tổng Cơ bản:** + `BaseTotalValue = BaseProps[PropertyId] + GrowthValue + PromotionValue + CoreEnhancementValue` +- **Tăng trưởng:** + `GrowthValue = (GrowthProps[PropertyId] * (Avatar.Level - 1)) / 10000` +- **Đột phá:** + `PromotionValue = PromotionProps[Avatar.PromotionLevel - 1][PropertyId]` +- **Nâng cấp Cốt lõi:** + `CoreEnhancementValue = CoreEnhancementProps[Avatar.CoreSkillEnhancement][PropertyId]` + +**LƯU Ý:** Nên làm tròn xuống (floor) kết quả trước khi cộng tổng chúng với các chỉ số từ các nguồn khác, bao gồm cả những chỉ số từ các nguồn khác. + +### Chính xác theo Game + +#### W-Engine + +Để làm việc với chỉ số W-Engine, bạn cần sử dụng: + \- [WeaponLevelTemplateTb.json](https://git.mero.moe/dimbreath/ZenlessData/src/branch/master/FileCfg/WeaponLevelTemplateTb.json) + \- [WeaponStarTemplateTb.json](https://git.mero.moe/dimbreath/ZenlessData/src/branch/master/FileCfg/WeaponStarTemplateTb.json) + + +- **Dòng Chính:** + `Result = MainStat.PropertyValue * (1 + WeaponLevel.FIELD_XXX / 10000 + WeaponStar.FIELD_YYY / 10000)` + **Ví dụ (Cấp 60, BreakLevel 5):** + `684 = 46 * (1 + 94090 / 10000 + 44610 / 10000)` + +- **Dòng Phụ:** + `Result = SecondaryStat.PropertyValue * (1 + WeaponStar.FIELD_ZZZ / 10000)` + **Ví dụ (BreakLevel 5):** + `2400 = 960 * (1 + 15000 / 10000)` + +**LƯU Ý:** W-Engine **Đệm Thịt Thép** `[14102]` đã được sử dụng trong ví dụ. + +#### Đĩa + +Để làm việc với chỉ số Đĩa, bạn cần sử dụng [EquipmentLevelTemplateTb.json](https://git.mero.moe/dimbreath/ZenlessData/src/branch/master/FileCfg/EquipmentLevelTemplateTb.json) +File này xác định giá trị Đĩa dựa trên cấp độ và độ hiếm của nó. + +- **Dòng Chính:** + `Result = MainStat.PropertyValue * (1 + EquipmentLevel.Field_XXX / 10000)` + **Ví dụ (Cấp 14, Độ hiếm 4):** + `2090 = 550 * (1 + 28000 / 10000)` + +### Xấp xỉ + +#### W-Engine + +- **Dòng Chính:** + `Result = MainStat.PropertyValue * (1 + 0.1568166666666667 * Level + 0.8922 * BreakLevel)` + +- **Dòng Phụ:** + `Result = SecondaryStat.PropertyValue * (1 + 0.3 * BreakLevel)` + +#### Đĩa + +- **Dòng Chính:** +`Result = MainStat.PropertyValue + (MainStat.PropertyValue * Level * RarityScale)` +- **Thang đo Độ hiếm** +| Độ hiếm | Thang đo | +| :----- | :------ | +| 4 | 0.2 | +| 3 | 0.25 | +| 2 | 0.3 | + +--- + +## Biểu tượng và Hình ảnh + +Tất cả tên biểu tượng được bao gồm trong dữ liệu đã phân tích tại [API-docs/store/zzz](https://github.com/EnkaNetwork/API-docs/tree/master/store/zzz). + +Để biết thêm thông tin bổ sung, hãy kiểm tra kho lưu trữ [ZenlessData](https://git.mero.moe/dimbreath/ZenlessData/src/branch/master/). + +## Bản địa hóa + +Đối với các tên được sử dụng trong Enka.Network, tham khảo [store/zzz/locs.json](https://raw.githubusercontent.com/EnkaNetwork/API-docs/refs/heads/master/store/zzz/locs.json) + +Để biết thêm thông tin bổ sung về tên, mô tả, v.v., hãy kiểm tra [Dữ liệu TextMap](https://git.mero.moe/dimbreath/ZenlessData/src/branch/master/TextMap), chỉ bao gồm các ngôn ngữ được hỗ trợ bởi game. + +--- + +## Wrappers + +Python - https://github.com/seriaati/enka-py - [seriaati](https://github.com/seriaati) + +C# - https://github.com/aliafuji/EnkaDotnet - [aliafuji](https://github.com/aliafuji) + +Go - https://github.com/kirinyoku/enkanetwork-go - [kirinyoku](https://github.com/kirinyoku)