# ชุดข้อมูล Client Beta สำหรับ GLM อัปเดต 24 ตุลาคม 2026 (Asia/Bangkok) ## เริ่มอ่านตรงนี้ ผู้ใช้ขอให้ช่วยหา event ของ Beta ที่ใช้จริง และส่งข้อมูลที่มีพร้อมวิธีเพิ่มตู้กาชาให้ GLM งานนี้จึงจัดทำ **ดัชนีและชุดส่งต่อข้อมูล** ไม่ได้เปิด event เพิ่ม เปลี่ยน backend หรือรีสตาร์ตเซิร์ฟเวอร์ - [ข้อมูลกิจกรรมและวิธีเชื่อม schedule](GLM-BETA-EVENTS.md) - [ข้อมูลและวิธีเพิ่มตู้กาชา](GLM-GACHA-GUIDE.md) - [งานค้าง/ข้อกำหนดเดิม](ZCODE-HANDOFF.md) ### ไฟล์ชุดส่งต่อ - โฟลเดอร์: [glm-beta-handoff-20261024](../.runtime/glm-beta-handoff-20261024/) - ZIP: [glm-beta-handoff-20261024.zip](../.runtime/glm-beta-handoff-20261024.zip) - [manifest.json](../.runtime/glm-beta-handoff-20261024/manifest.json): รายการทุกไฟล์ในชุด พร้อม SHA-256 ขนาด ที่มา และขอบเขตการยืนยัน - [event-index.json](../.runtime/glm-beta-handoff-20261024/derived/event-index.json) / [CSV](../.runtime/glm-beta-handoff-20261024/derived/event-index.csv) - [preview-schedules.json](../.runtime/glm-beta-handoff-20261024/derived/preview-schedules.json) - [gacha-index.json](../.runtime/glm-beta-handoff-20261024/derived/gacha-index.json) `.runtime/` ถูก ignore ถ้า GLM อยู่คนละเครื่องต้องส่ง ZIP ให้ด้วย การส่งเฉพาะ Git diff จะไม่มีชุดข้อมูลและ evidence เหล่านี้ ## 1. รุ่นและขอบเขต ตรวจโปรเซสที่รันจริงและ hash `GameAssembly.dll` ซ้ำในรอบนี้แล้ว Client ปัจจุบันเป็น Beta .54: ```text 4aa08a0706f27d2cf9951b61920c179140ece9ea94f7e34422c18e46922939b6 ``` ข้อมูล CW เดิมหลายชุดมาจาก Beta .53: ```text c5e02e6e984f7e5577c78b995a8efeee2d06ee22e67d484ad5e859c8bf21e144 ``` **ชุดนี้รวมข้อมูลที่มีอยู่ในโปรเจกต์และ capture ที่ระบุที่มาได้ ไม่ใช่การ dump ทุกตาราง/ทุก asset/ทุก script จาก Beta ทั้งเกมครบแล้ว** ไฟล์ที่ไม่มี provenance ไม่ถูกเปลี่ยนชื่อหรือรับรองเป็น .54 เนื่องจากวางอยู่ในโปรเจกต์เดียวกัน ข้อมูลดิบถูกคัดลอกเป็น bytes เดิม Python ใช้ integer ที่ไม่เสียความละเอียดในการสร้างดัชนี จึงเก็บ `hash64` ได้ตรง ห้าม parse/re-serialize TextID hash64 ผ่าน JavaScript `Number` โดยไม่ใช้วิธีรักษาเลข 64-bit ## 2. ข้อมูลที่ตรงกับ capture ของ Client .54 | ชุด | จำนวน/ขอบเขต | ไฟล์ต้นทาง | | --- | --- | --- | | ActivityPanelRow | 181 หน้า รวม condition, prefab, icon, TextID และ display items | `resources/PreviewGameplayCatalog.json` → `tables.panels` | | ActivityConfigRow | 361 รายการ รวม module/resident/panel/early-access mapping | ไฟล์เดียวกัน → `tables.activities` | | GachaBasicInfoConfigRow | 6 แถวของตารางปัจจุบัน | ไฟล์เดียวกัน → `tables.gacha` | | ParkourLevelConfigRow | 13 แถว; ไม่ใช่ Stella Jump ด้านข้าง | ไฟล์เดียวกัน → `tables.parkour` | | ChenLingGameBoyCaseRow | 16 cases | `resources/StellaJumpConfig.json` | | CW role flat config | 140 rows; ไม่ใช่ทุกตารางของ CW | `resources/CurrencyWarsCurrentRoles.json` | | Event asset observations | 290 prefab/icon paths; 146/181 panels มีทั้งสอง path | `resources/PreviewAssetAvailability.json` | | GachaGroupDataRow | ดึง flat GetAll จบครบ **0 แถว** ในรอบนี้ | `battle_diagnostics/glm-gacha-groups-current.json` | | Group presentation asset observations | 3 path จาก Lua จริง ตรวจแล้วไม่มีทั้ง 3 | `battle_diagnostics/glm-gacha-group-assets.json` | CW role compatibility .53→.54 แยกอยู่ใน `resources/CurrencyWarsRoleCompatibility.json` เป็น overlay หนึ่ง family/สาม star variants ไม่ใช่การ recapture CW ทั้งหมด ### ระวัง ActivityConfig ชื่อคล้ายกัน `resources/ActivityConfig.json` เดิมมี 360 รายการและไม่มี provenance .54 ของตัวเอง ส่วน `PreviewGameplayCatalog.json.tables.activities` มี 361 รายการที่ capture ตรงรุ่น เปรียบเทียบ key ได้ว่าใน capture ปัจจุบันมี ActivityID `10196`, `50157` เพิ่ม และไม่มี `50136` ที่อยู่ในไฟล์เดิม ใน ID ร่วมกัน main/resident module lists ตรงกันจากการเทียบครั้งนี้ แต่ไม่ได้ทำให้ไฟล์เก่ากลายเป็น current native dump ให้เริ่มหา event ใหม่จาก **PreviewGameplayCatalog** อย่ายึดเฉพาะ ActivityConfig เดิมหรือค้น type ที่เดาชื่อแล้วสรุปว่าไม่มีข้อมูล ## 3. Event ที่หาเจอแล้ว ตัวอย่างด้านล่างใช้ **ชื่อเทคนิคจาก prefab** ยังไม่ใช่ localized title ที่ถอดแล้ว และไม่ได้พิสูจน์ว่าเป็น official active schedule ของวันนี้ | Panel | ระบบ/Prefab | Main modules | Resident modules | Prefab + icon | | ---: | --- | --- | --- | --- | | 50132 | QuestMechCraftPanel | 5013201 | 5013202 | มี | | 50142 | QuestComicDessertPanel | 5014201 | 5014202 | มี | | 50143 | QuestRealityShowPanel | 5014301–5014305 | 5014311–5014315 | มี | | 50125 | QuestFinalityBattlePanel | 5012501–5012505 | — | มี | | 50114 | QuestTeamTowerPanel | 5011401 | 5011402 | มี | | 50112 | QuestPixAirPanel | 5011201 | 5011202 | มี | | 50111 | QuestB51RacingPanel | 5011101 | 5011102 | มี | | 50107 | QuestChenLingFesPanel | 5010701 | — | มี | | 50092 | QuestChenLingBattlePanel | 5009201 | 5009202 | มี | | 50134 | QuestBlindBoxPanel | ดู raw mapping | ดู raw mapping | prefab ไม่มี | Source ปัจจุบันเปิดเพียง policy-selected families และตัดหน้าที่มี dependencies/handler ยังไม่ครบ จึงต่างจาก “Beta ไม่มี event” รายละเอียดและแนวทางต่อ callback อยู่ใน `GLM-BETA-EVENTS.md` จุดเชื่อมสำคัญ: ใน wire `ActivityScheduleData.ActivityId` ใช้ **moduleID** ส่วน `PanelId` ใช้ **panelID** ห้ามนำ ActivityConfig.ActivityID ใส่แทน moduleID โดยไม่ตรวจ ## 4. ข้อมูลเก่าและข้อมูลที่ยังไม่ยืนยัน revision ชุด ZIP รวม resources ทั้งหมดที่มีและไฟล์ข้อมูล root ที่เกี่ยวข้อง โดยแยก provenance ไว้ใน manifest: - CW .53/reference: divisions/routes/role defaults/variants/camps/levels/equipment/spotlights/monster recipes/rewards/craft/initial runs/node transitions/trials - .53-identified scene, navigation, cosmetics, technique/world-battle resources - External data: Eidolon/Inventory จาก Dimbreath, BattleRules/Profile จาก PearlSR, ทีม Prydwen, AhaHelp จากภาพที่ผู้ใช้ให้ ไม่ใช่ native .54 dump - Unversioned/server data: Avatar/SkillTree/Quest/MainMission/Stage/Map/Tutorial ฯลฯ ซึ่งห้ามรับรองว่าทุก ID ใช้ได้กับ .54 - Root `res.json` กับ `resources/res.json` เป็นคนละ schema และคนละชุด ห้ามทับหรือย้ายแทนกันเพราะชื่อเหมือนกัน - `mission_unlocks.json` เป็นรายการที่ server เปิดให้ ไม่ใช่หลักฐานว่า Client มี config ทุก ID; ดู MissionCompatibility และ missing-config evidence ประกอบ ## 5. Protocol และเครื่องมือ รวม `.proto`, named command maps/pairs และ source revision ไว้ใน bundle โดยไม่รวม `.pb.go` ซ้ำทั้งชุด Command source revision ที่ใช้อยู่: ```text 005d2c12db4781071f4b5b68e8f364587886a710 ``` นี่ไม่ใช่ full native protocol dump ของ .54 ทุก packet บางคำสั่งถูกตรวจซ้ำกับ Client แล้ว แต่ส่วนที่ยัง obfuscated/ไม่ตรวจต้องเก็บข้อจำกัดไว้ ใช้ name resolver ของ repository อย่าฝัง CmdID หรือส่งหลาย aliases เพื่อเดา callback เครื่องมือที่รวมเป็น source สำหรับอ่านต่อ **ไม่ได้ถูกรันโดย packaging helper**: - `preview_flat_tables.js`: สี่ named flat tables; ตรวจ prologue/ขอบเขต; 16 rows ต่อ managed marker - `preview_gameboy_tables.js`: ChenLing GameBoy flat table - `glm_beta_gacha_groups.js`: named gacha group GetAll; 8 rows ต่อ marker; เก็บกรณีตารางว่างอย่างชัดเจน - named metadata probes และ bounded trigger ที่พักเมื่ออยู่ Battle - `inspect_luau_v4.py` และ GachaMainPage bytecode/parsed prototypes - static PE range/call-reference readers และ protocol tooling ที่เกี่ยวข้อง ก่อนใช้ native tools ต้องตรวจ **process path/hash ใหม่** เพราะ PID, MethodHandle และ base address เปลี่ยนหลัง restart การอ่าน metadata ครั้งนี้พบว่า `RPG.Client.TextID` อยู่ใน assembly **RPG.GameCore.Foundation** ไม่ใช่ Assembly-CSharp; lookup ใน assembly ผิดแล้วได้ nil ไม่ได้แปลว่า type หาย ## 6. ส่งต่อให้ GLM ทำต่อ ข้อความพร้อมใช้: > อ่าน `docs/GLM-BETA-DATA.md`, `docs/GLM-BETA-EVENTS.md` และ `docs/GLM-GACHA-GUIDE.md` ก่อน ข้อมูล event ของ Beta มีแล้ว 181 panels/361 activities ใน PreviewGameplayCatalog ไม่ใช่ไม่มี event ให้ใช้ event-index เชื่อม panel/module/conditions/assets และต่อ named data handlers ตามแต่ละระบบ กาชามีตารางจริง 6 แถว แต่ limited 4 prefab และ generic group 3 prefab ไม่มีใน manifest; flat GachaGroupDataRow ดึงครบได้ 0 แถว จึงยังไม่มี GroupIDs ให้ใช้ อย่าเดาตัวเลขหรือเปิด path ที่ไม่มีเพื่อกลบอาการ ต้องสร้าง compatible custom presentation จาก asset ที่มีจริงและให้ผลสุ่มตรงภาพตู้ รักษาเซฟ/rank/EX/Traces และอย่ารบกวน Battle ที่กำลังเล่น อ่าน manifest เพื่อแยก .54, .53/reference, external policy และ unversioned ห้ามอ้างว่าชุดนี้เป็น dump ทุกอย่างของ Beta ครบแล้ว สิ่งที่ยังต้องหาเพิ่ม: localized title text, config/asset dependencies และ data/proxy callbacks ของ event ใหม่, ตารางอื่นของ Client ที่ยังไม่ได้ capture, gacha presentation/binding และ semantics ของ grouping fields ที่ยัง obfuscated ## 7. ขอบเขตการทำงานรอบนี้ - อ่าน source/resource และวิเคราะห์ config/capture เพื่อส่งต่อ - ตรวจ hash ของ module จริง และอ่าน named gacha group table/metadata กับ asset existence เฉพาะ path ที่มีหลักฐานจาก Lua - ถอด probe ที่เพิ่มในรอบนี้แล้ว และปิด Frida sessions ของรอบนี้ - ไม่แตะ probes ของ GLM ที่มีอยู่ ไม่แก้ gameplay backend ไม่เปลี่ยนเซฟ ไม่ build/deploy/restart และไม่รัน tests - ชุดข้อมูลไม่รวม `persistent`, `freesr-data.json`, `server.local.json`, บัญชี/token logs หรือ game binaries ของผู้ใช้ - Snapshot เป็นการอ่านไฟล์ทีละไฟล์ขณะที่มีงานอื่นทำอยู่ ไม่ใช่ atomic snapshot ของ repository ทุกไฟล์ ณ nanosecond เดียว ค่า SHA ใน manifest อ้างอิง bytes ที่คัดลอกเข้าชุดจริง