Update README.md

This commit is contained in:
GaCy committed 2026-11-01 00:24:24 +07:00
1 parent bb55c2f395
commit 72f310a68d
1 file changed
+9 -9
+9 -9
View File
@@ -1,9 +1,9 @@
# 🚂 GaC hkrpg GO
# 🚂 GaCy GO
<div align="center">
**เซิร์ฟเวอร์จำลอง Honkai: Star Rail ประสิทธิภาพสูง พัฒนาด้วยภาษา Go**
พอร์ตจาก `GaC-hkrpg-ps` พร้อมอ้างอิงโปรโตคอลจาก `PearlSR` และ `Currency-War-SR`
พอร์ตจาก [`GaC-hkrpg-ps`](https://github.com/CAtlas0784/GaC-hkrpg-rust) พร้อมอ้างอิงโปรโตคอลจาก `PearlSR` และ `Currency-War-SR`
[English](docs/README_EN.md) | [ภาษาไทย](README.md)
@@ -16,7 +16,7 @@
## 🇹🇭 ภาษาไทย
เซิร์ฟเวอร์จำลอง Honkai: Star Rail ภาษา Go พอร์ตจาก `GaC-hkrpg-ps` และอ้างอิงการทำงานจาก [PearlSR](https://git.xeondev.com/HonkaiSlopRail/pearl-sr) ประกอบด้วย game server, SDK/dispatch server และ REST API สำหรับ GaC-Srtool
เซิร์ฟเวอร์จำลอง Honkai: Star Rail ภาษา Go พอร์ตจาก `GaC-hkrpg-ps` และอ้างอิงการทำงานจาก [PearlSR](https://git.xeondev.com/HonkaiSlopRail/pearl-sr) ประกอบด้วย game server, SDK/dispatch server และ REST API สำหรับ GaCy-Srtool
โปรเจกต์อยู่ระหว่างพัฒนา โดยกำลังตรวจการใช้งานกับ Client **4.6.53 OS** ตารางคำสั่งและ handler ที่แก้ล่าสุดอ้างอิง PearlSR commit `005d2c12db4781071f4b5b68e8f364587886a710` รายละเอียดอยู่ใน [บันทึกอัปเดต protocol](docs/protocol-update.md) การตรงกันของ schema ไม่ได้ยืนยันว่าเกมทุกระบบทำงานครบ
@@ -48,7 +48,7 @@ Catalog มีตารางเส้นทางจาก Client ครบช
ผู้ใช้ยืนยันแล้วว่าเข้า CW ถึงหน้า Investment Environment ได้ เพิ่มการตอบ Confirm จาก `GridFightHandleBonfireHealHpCsReq` ไปยัง `GridFightHandlePendingActionScRsp` พร้อม sync สถานะและบันทึกรอบก่อนตอบกลับ ขณะนี้ใช้ผลเริ่มต้นที่จับจาก reference สำหรับสามตัวเลือกของด่านแรกทั้งสองโหมดใน `resources/CurrencyWarsEntryTransitions.json` ยังเป็นผลเริ่มต้นคงที่ และยังไม่ได้ต่อคำสั่งรอบถัดไป/ร้าน/การต่อสู้ครบ ค่าเอฟเฟกต์บางอย่างของ reference ต่างจาก Client ปัจจุบัน จึงยังไม่ถือว่าเอฟเฟกต์หรือ CW เล่นครบแล้ว
### Unstuck จาก GaC srtool
### Unstuck จาก GaCy srtool
ปุ่ม **Unstuck** ใน GM Command Console ส่ง `POST /api/client/unstuck` ให้เกมเรียกฟังก์ชันปลดการบล็อกขณะรอแพ็กเก็ตใน heartbeat ถัดไป เว็บรอผลยืนยันจาก Client ผ่าน `/api/client/unstuck/result` ก่อนแสดงว่าสำเร็จ ใช้คำสั่ง `/unstuck` ใน console ได้ด้วย การกู้ UI นี้ไม่ลบเซฟ CW ไม่ย้ายแมพ และไม่สร้างผลสำเร็จปลอมให้คำสั่งเล่นเกม หากเซิร์ฟเวอร์หรือเกมไม่เชื่อมต่อจะยังปลดไม่ได้ และยังต้องแก้ handler ที่ทำให้ค้างด้วย
@@ -129,7 +129,7 @@ SDK และ game server เปิดหน้าต่างคอนโซล
## มอนในฉากและการเชื่อมต่อ Srtool
- เมื่อไม่ได้เชื่อมต่อ GaC-Srtool เซิร์ฟเวอร์จับคู่ EventID ของมอนในฉากกับ PlaneEvent ของ Client แล้วใช้ StageConfig ของด่านนั้น ทั้งตอนโจมตีมอนและตอนมอนโจมตีผู้เล่น ไม่มีการใช้รายการมอน Custom จากไฟล์เก่าเป็น fallback หากไม่มีข้อมูลตรงรุ่นจะคืน error พร้อม log
- เมื่อไม่ได้เชื่อมต่อ GaCy-Srtool เซิร์ฟเวอร์จับคู่ EventID ของมอนในฉากกับ PlaneEvent ของ Client แล้วใช้ StageConfig ของด่านนั้น ทั้งตอนโจมตีมอนและตอนมอนโจมตีผู้เล่น ไม่มีการใช้รายการมอน Custom จากไฟล์เก่าเป็น fallback หากไม่มีข้อมูลตรงรุ่นจะคืน error พร้อม log
- `resources/WorldBattleConfig.json` เก็บ PlaneEvent/Cocoon ที่อ่านจาก Client พร้อมเวอร์ชันและ hash ของ assembly; `world_level` เป็นระดับบัญชีที่ใช้งานร่วมกันใน login/ฉาก/Battle ตารางนี้ต้องส่งออกใหม่เมื่อเปลี่ยน Client หรือชุด resource
- GaC-Srtool ส่ง `POST /api/tool-session` พร้อม `client: "GaC-Srtool"` และ `connected: true` แล้วต่ออายุตาม `srtool.lease_seconds` จึงเปิดใช้ Custom monsters ได้ การปิดเว็บ/ขาดการเชื่อมต่อทำให้ lease หมดอายุ โดยเก็บไฟล์ชั่วคราวตาม `srtool.lease_file` ต้องใช้เว็บฉบับที่รองรับการต่ออายุนี้และ reload เว็บหลังอัปเดต
- หน้า Monster Setting แสดงชื่อกลุ่ม/มอนสเตอร์และรูปจาก Nanoka โดยดึงข้อมูลตาม `client_version` ใน runtime config พร้อม stage และ wave จาก `challenge_data.json`/`resources/StageConfig.json`; metadata จะรีเฟรชเป็นระยะและไม่สลับไปใช้ข้อมูล Client เวอร์ชันอื่นเมื่อแหล่งข้อมูลไม่พร้อม
@@ -144,7 +144,7 @@ Hide UI ใช้ปุ่ม Backslash เพื่อซ่อน HUD รว
Ping colors อยู่ใน `scripts/ping_rainbow.lua` เปลี่ยนสีทั้งแท่งสัญญาณและตัวเลขโดยใช้ค่า ping จริง ภาพหลอดใช้ alpha จาก sprite เดิมและสีพื้นขาวเพื่อไม่ให้สีเพี้ยน ส่วนตัวเลขลงสีที่ glyph โดยไม่เขียนข้อความทับ จึงไม่กะพริบเมื่อค่าเปลี่ยน ผู้ใช้ยืนยันผลหน้าเดินแล้ว รายละเอียดและขอบเขตอยู่ใน `docs/ping-colors.md`
Freecam และ FaceCam เลือกได้จากหน้า **สวิตช์ระบบพิเศษของ GaC** ใน [GaCy Srtool](https://gacy-srtool.vercel.app/) โดยตั้งระยะเริ่มต้นของ FaceCam แล้วกด Tab ในเกมเพื่อเปิดหรือปิด Freecam ใช้ปุ่มลูกศรและ Page Up / Page Down เคลื่อนกล้อง พร้อมคลิกขวาค้างเพื่อหมุน ส่วน FaceCam ยึดกล้องกับหัวตัวละครที่ควบคุมหรือกำลังแอ็กชันใน Battle ลูกกลิ้งปรับระยะชั่วคราว และเมื่อปิด–เปิดใหม่จะกลับเป็นระยะที่ตั้งไว้ ข้อความสถานะกล้องแสดงเมื่อปรับและหายหลังหยุดปรับ 3 วินาที ผู้ใช้ยืนยันมุม Battle และร่าง Khaslana แล้ว
Freecam และ FaceCam เลือกได้จากหน้า **สวิตช์ระบบพิเศษของ GaCy** ใน [GaCy Srtool](https://gacy-srtool.vercel.app/) โดยตั้งระยะเริ่มต้นของ FaceCam แล้วกด Tab ในเกมเพื่อเปิดหรือปิด Freecam ใช้ปุ่มลูกศรและ Page Up / Page Down เคลื่อนกล้อง พร้อมคลิกขวาค้างเพื่อหมุน ส่วน FaceCam ยึดกล้องกับหัวตัวละครที่ควบคุมหรือกำลังแอ็กชันใน Battle ลูกกลิ้งปรับระยะชั่วคราว และเมื่อปิด–เปิดใหม่จะกลับเป็นระยะที่ตั้งไว้ ข้อความสถานะกล้องแสดงเมื่อปรับและหายหลังหยุดปรับ 3 วินาที ผู้ใช้ยืนยันมุม Battle และร่าง Khaslana แล้ว
`scripts/fps_settings_120.lua` เพิ่มตัวเลือก 120 FPS ลงในรายการ Graphics ของเกมเมื่อ Client ซ่อนตัวเลือกตามเงื่อนไข `IsSupport120FPS` โดยใช้ TextID และตัวจัดการค่าของ Client เอง การเลือกค่ายังขึ้นกับจอและฮาร์ดแวร์ที่รองรับ; ต้องเปิดหน้า Graphics ใหม่หลังสคริปต์ถูกโหลด
@@ -404,7 +404,7 @@ python tools/audit_protocol_handlers.py "<path-to-pearl-sr-checkout>"
### Freecam
- `Tab`: เปิด/ปิด Freecam; ลูกศร: เลื่อนกล้อง; กดเมาส์ขวาค้างแล้วขยับเมาส์เพื่อหันกล้อง
- `Tab`: เปิด/ปิด Freecam; FaceCam; ลูกศร: เลื่อนกล้อง; กดเมาส์ขวาค้างแล้วขยับเมาส์เพื่อหันกล้อง
- `Page Up` / `Page Down`: ขึ้น/ลง; `+` / `-`: เพิ่ม/ลดความเร็ว ไม่ใช้ E/Q หรือ I/J/K/L คุมกล้อง
- ขณะเปิด Freecam ใน Battle ซ่อนการรับคลิก UI ด้วย `InControlInputModule.allowMouseInput` และพักเฉพาะ mouse binding ซ้าย/ขวาของคำสั่งเกมในหน่วยความจำ คีย์บอร์ดยังกดสกิลได้ ส่วนกล้องอ่านเมาส์ผ่าน Unity Input โดยตรง
- คืนค่าตอนปิด Freecam/ออก Battle หลังปล่อยปุ่มเมาส์ และก่อนปิด Client ไม่มีการลบ/เพิ่ม binding ผ่าน OnBindingsChanged ชื่อ field ตรวจจาก Client โดยตรง ผลป้องกันคลิกใน Battle ยังรอยืนยันการเล่นจริง
@@ -512,7 +512,7 @@ CW ล่าสุด: ผู้ใช้ยืนยัน Battle ห้อง
## 💖 แหล่งที่มาและเครดิต (Credits & Acknowledgments)
โปรเจกต์ `GaC-hkrpg-go` พัฒนาขึ้นโดยต่อยอดและนำองค์ประกอบ/ข้อมูลอ้างอิงจากโครงการและชุมชนวิจัยเกมต่าง ๆ ขอขอบคุณเจ้าของผลงานและทีมพัฒนาต้นทางทุกท่านดังนี้:
โปรเจกต์ `GaCy GO` พัฒนาขึ้นโดยต่อยอดและนำองค์ประกอบ/ข้อมูลอ้างอิงจากโครงการและชุมชนวิจัยเกมต่าง ๆ ขอขอบคุณเจ้าของผลงานและทีมพัฒนาต้นทางทุกท่านดังนี้:
<details open>
<summary><b>🏛️ สถาปัตยกรรมเซิร์ฟเวอร์และโครงสร้างโปรโตคอล (Server Architecture & Protocol)</b></summary>
@@ -544,7 +544,7 @@ CW ล่าสุด: ผู้ใช้ยืนยัน Battle ห้อง
- โค้ดต้นแบบระบบจำลอง Currency Wars (Grid Fight / Autochess) 4.6.53
- ตารางจับคู่ความสัมพันธ์ Role/Traits, การสร้าง Encounter หลังเลือก Supply, การคำนวณความยากและ EXP ต่อรอบ (`internal/common/currency_wars_xaodev.go`, `internal/gameserver/currency_wars_xaodev.go`, `resources/CurrencyWarsXaodev.json`)
- **minatoSR**:
- **minatoSR ([haltinggoalies/minatoSR](https://github.com/haltinggoalies/minatoSR))**:
- ข้อมูลตำแหน่ง NPC และ Overrides ด่าน Challenge Peak / Anomaly Arbitration (AA) 40 โหนด ใน `resources/ChallengePeakSceneOverrides.json`
</details>