docs: WaHappy 开发文档

孤儿分支,只含 docs/。内容包括:
- 项目总览 / 主脚本编写指南 / 日志指南
- 上传成绩开发文档 / UpsertUserAll 踩坑清单(28 条)
- 真机 Hook 对照报告 / 实跑验证记录
- 购买功能票流程(含被服务端拒绝的排查过程)
  · 扫码登录协议技术规范
This commit is contained in:
Txiaochen
2026-10-06 14:42:32 +08:00
commit 41909b9169
15 changed files with 34059 additions and 0 deletions
@@ -0,0 +1,46 @@
{
"user_id": 12345678,
"login": {
"loginId": 7693120247791879616,
"loginDateTime": 1791222938,
"lastLoginDate": "2026-10-05 17:53:49",
"loginCount": 184,
"consecutiveLoginCount": 3,
"token": "HcXOwSdDwBSEPzngjdfp"
},
"auth_date_time": 1791194138,
"snapshot_summary": {
"userData": 1,
"userExtend": 1,
"userOption": 1,
"userCharacterList": 312,
"userMapList": 104,
"userLoginBonusList": 38,
"userRatingList": 1,
"userItemList": 1070,
"userMusicDetailList": 1037,
"userCourseList": 16,
"userChargeList": 3,
"userFavoriteList": 5,
"userActivityList": 1,
"userMissionDataList": 6,
"userIntimateList": 2,
"userFavoritemusicList": 27,
"userKaleidxScopeList": 7,
"userGhost": 15
},
"snapshot_failed": [],
"preview": {
"userName": "☆Astral☆",
"playerRating": 15000,
"isLogin": false,
"banState": 0,
"errorId": 0,
"lastLoginDate": "1970-01-01 00:00:00",
"lastPlayDate": "1970-01-01 00:00:00",
"totalAwake": 184,
"iconId": 559501,
"frameId": 0
},
"qr_run_at": "2026-10-05 17:53"
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+626
View File
@@ -0,0 +1,626 @@
## 顶层字段对比
| 字段 | 真机 | 本次实跑 | 一致 |
|---|---|---|---|
| `userId` | 12345678 | 12345678 | 一致 |
| `playlogId` | 7692848101484135861 | 7693120247791879616 | **不同** |
| `isEventMode` | False | False | 一致 |
| `isFreePlay` | False | False | 一致 |
| `loginDateTime` | 1791159576 | 1791222938 | **不同** |
| `userPlaylogList` | 1 条 | 1 条 | 一致 |
| `upsertUserAll` | 36 节点 | 36 节点 | 一致 |
## 36 个节点逐节点对比
| # | 节点 | 真机 | 实跑 | 形态一致 |
|---|---|---|---|---|
| 1 | `userData` | 1 条 | 1 条 | 一致 |
| 2 | `userExtend` | 1 条 | 1 条 | 一致 |
| 3 | `userOption` | 1 条 | 1 条 | 一致 |
| 4 | `userCharacterList` | 5 条 | 5 条 | 一致 |
| 5 | `userGhost` | 0 条 | 0 条 | 一致 |
| 6 | `userMapList` | 1 条 | 1 条 | 一致 |
| 7 | `userLoginBonusList` | 0 条 | 0 条 | 一致 |
| 8 | `userRatingList` | 1 条 | 1 条 | 一致 |
| 9 | `userItemList` | 0 条 | 0 条 | 一致 |
| 10 | `userMusicDetailList` | 1 条 | 1 条 | 一致 |
| 11 | `userCourseList` | 0 条 | 0 条 | 一致 |
| 12 | `userFriendSeasonRankingList` | 0 条 | 0 条 | 一致 |
| 13 | `userChargeList` | 3 条 | 3 条 | 一致 |
| 14 | `userFavoriteList` | 5 条 | 5 条 | 一致 |
| 15 | `userActivityList` | 1 条 | 1 条 | 一致 |
| 16 | `userMissionDataList` | 6 条 | 6 条 | 一致 |
| 17 | `userWeeklyData` | 对象(3 键) | 对象(3 键) | 一致 |
| 18 | `userGamePlaylogList` | 1 条 | 1 条 | 一致 |
| 19 | `user2pPlaylog` | 对象(7 键) | 对象(7 键) | 一致 |
| 20 | `userIntimateList` | 0 条 | 0 条 | 一致 |
| 21 | `userShopItemStockList` | 0 条 | 0 条 | 一致 |
| 22 | `userGetPointList` | 0 条 | 0 条 | 一致 |
| 23 | `userTradeItemList` | 0 条 | 0 条 | 一致 |
| 24 | `userFavoritemusicList` | 0 条 | 0 条 | 一致 |
| 25 | `userKaleidxScopeList` | 0 条 | 0 条 | 一致 |
| 26 | `isNewCharacterList` | 位串 '00000' | 位串 '00000' | 一致 |
| 27 | `isNewMapList` | 位串 '0' | 位串 '0' | 一致 |
| 28 | `isNewLoginBonusList` | 位串 '' | 位串 '' | 一致 |
| 29 | `isNewItemList` | 位串 '' | 位串 '' | 一致 |
| 30 | `isNewMusicDetailList` | 位串 '0' | 位串 '0' | 一致 |
| 31 | `isNewCourseList` | 位串 '' | 位串 '' | 一致 |
| 32 | `isNewFavoriteList` | 位串 '22212' | 位串 '22212' | 一致 |
| 33 | `isNewFriendSeasonRankingList` | 位串 '' | 位串 '' | 一致 |
| 34 | `isNewUserIntimateList` | 位串 '' | 位串 '' | 一致 |
| 35 | `isNewFavoritemusicList` | 位串 '' | 位串 '' | 一致 |
| 36 | `isNewKaleidxScopeList` | 位串 '' | 位串 '' | 一致 |
## 11 条位串对比
| 位串 | 真机 | 实跑 | 一致 |
|---|---|---|---|
| `isNewCharacterList` | `00000` | `00000` | 一致 |
| `isNewMapList` | `0` | `0` | 一致 |
| `isNewLoginBonusList` | `` | `` | 一致 |
| `isNewItemList` | `` | `` | 一致 |
| `isNewMusicDetailList` | `0` | `0` | 一致 |
| `isNewCourseList` | `` | `` | 一致 |
| `isNewFavoriteList` | `22212` | `22212` | 一致 |
| `isNewFriendSeasonRankingList` | `` | `` | 一致 |
| `isNewUserIntimateList` | `` | `` | 一致 |
| `isNewFavoritemusicList` | `` | `` | 一致 |
| `isNewKaleidxScopeList` | `` | `` | 一致 |
## userData[0] 逐字段对比
| 字段 | 真机 | 实跑 | 一致 |
|---|---|---|---|
| `accessCode` | "" | "" | 一致 |
| `userName` | "☆Astral☆" | "☆Astral☆" | 一致 |
| `isNetMember` | 1 | 1 | 一致 |
| `point` | 4110 | 4110 | 一致 |
| `totalPoint` | 52620 | 52620 | 一致 |
| `iconId` | 559501 | 559501 | 一致 |
| `plateId` | 458001 | 458001 | 一致 |
| `titleId` | 55502 | 55502 | 一致 |
| `partnerId` | 1 | 1 | 一致 |
| `frameId` | 209504 | 209504 | 一致 |
| `selectMapId` | 550003 | 550003 | 一致 |
| `totalAwake` | 184 | 184 | 一致 |
| `gradeRating` | 0 | 0 | 一致 |
| `musicRating` | 15000 | 15000 | 一致 |
| `playerRating` | 15000 | 15000 | 一致 |
| `highestRating` | 15000 | 15000 | 一致 |
| `gradeRank` | 0 | 0 | 一致 |
| `classRank` | 1 | 1 | 一致 |
| `courseRank` | 10 | 10 | 一致 |
| `charaSlot` | [395, 101, 400402, 400401, 200401] | [395, 101, 400402, 400401, 200401] | 一致 |
| `charaLockSlot` | [395, 101, 0, 0, 0] | [395, 101, 0, 0, 0] | 一致 |
| `contentBit` | 2145488608 | 2145488608 | 一致 |
| `playCount` | 1258 | 1259 | **不同** |
| `currentPlayCount` | 186 | 187 | **不同** |
| `renameCredit` | 0 | 0 | 一致 |
| `mapStock` | 0 | 0 | 一致 |
| `eventWatchedDate` | "2026-10-05 00:19:37.0" | "2026-10-05 17:55:38.0" | **不同** |
| `lastGameId` | "SDGB" | "SDGB" | 一致 |
| `lastRomVersion` | "1.56.00" | "1.56.00" | 一致 |
| `lastDataVersion` | "1.55.05" | "1.55.05" | 一致 |
| `lastLoginDate` | "2026-10-05 00:19:37.0" | "2026-10-05 17:55:38.0" | **不同** |
| `lastPlayDate` | "2026-10-05 00:20:57.0" | "2026-10-05 17:55:38.0" | **不同** |
| `lastPlayCredit` | 1 | 1 | 一致 |
| `lastPlayMode` | 0 | 0 | 一致 |
| `lastPlaceId` | 1000 | 1000 | 一致 |
| `lastPlaceName` | "测试店铺" | "测试店铺" | 一致 |
| `lastAllNetId` | 0 | 0 | 一致 |
| `lastRegionId` | 5 | 5 | 一致 |
| `lastRegionName` | "测试区域" | "测试区域" | 一致 |
| `lastClientId` | "TESTCLIENT1" | "TESTCLIENT1" | 一致 |
| `lastCountryCode` | "CHN" | "CHN" | 一致 |
| `lastSelectEMoney` | 0 | 0 | 一致 |
| `lastSelectTicket` | 0 | 0 | 一致 |
| `lastSelectCourse` | 552304 | 552304 | 一致 |
| `lastCountCourse` | 0 | 0 | 一致 |
| `firstGameId` | "SDGB" | "SDGB" | 一致 |
| `firstRomVersion` | "1.41.00" | "1.41.00" | 一致 |
| `firstDataVersion` | "1.40.08" | "1.40.08" | 一致 |
| `firstPlayDate` | "2024-12-31 21:25:58" | "2024-12-31 21:25:58" | 一致 |
| `compatibleCmVersion` | "1.55.00" | "1.55.00" | 一致 |
| `dailyBonusDate` | "1970-01-01 08:00:00" | "1970-01-01 08:00:00" | 一致 |
| `dailyCourseBonusDate` | "2026-07-13 00:00:00" | "2026-07-13 00:00:00" | 一致 |
| `lastPairLoginDate` | "2026-10-04 18:05:18" | "2026-10-04 18:05:18" | 一致 |
| `lastTrialPlayDate` | "2026-10-03 21:07:50" | "2026-10-03 21:07:50" | 一致 |
| `playVsCount` | 0 | 0 | 一致 |
| `playSyncCount` | 0 | 0 | 一致 |
| `winCount` | 0 | 0 | 一致 |
| `helpCount` | 0 | 0 | 一致 |
| `comboCount` | 0 | 0 | 一致 |
| `totalDeluxscore` | 1869771 | 1869771 | 一致 |
| `totalBasicDeluxscore` | 1274 | 1274 | 一致 |
| `totalAdvancedDeluxscore` | 6566 | 6566 | 一致 |
| `totalExpertDeluxscore` | 470976 | 470976 | 一致 |
| `totalMasterDeluxscore` | 1236693 | 1236693 | 一致 |
| `totalReMasterDeluxscore` | 154262 | 154262 | 一致 |
| `totalSync` | 1112 | 1112 | 一致 |
| `totalBasicSync` | 5 | 5 | 一致 |
| `totalAdvancedSync` | 5 | 5 | 一致 |
| `totalExpertSync` | 425 | 425 | 一致 |
| `totalMasterSync` | 604 | 604 | 一致 |
| `totalReMasterSync` | 73 | 73 | 一致 |
| `totalAchievement` | 975613200 | 975613200 | 一致 |
| `totalBasicAchievement` | 2984753 | 2984753 | 一致 |
| `totalAdvancedAchievement` | 7755815 | 7755815 | 一致 |
| `totalExpertAchievement` | 315483810 | 315483810 | 一致 |
| `totalMasterAchievement` | 578226016 | 578226016 | 一致 |
| `totalReMasterAchievement` | 71162806 | 71162806 | 一致 |
| `playerOldRating` | 10927 | 10927 | 一致 |
| `playerNewRating` | 4606 | 4606 | 一致 |
| `banState` | 0 | 0 | 一致 |
| `friendRegistSkip` | 0 | 0 | 一致 |
| `dateTime` | 1791134329 | 1791194138 | **不同** |
真机 82 字段,实跑 82 字段,命中 76/82
## 差分节点明细
### `userMusicDetailList`
真机:
```json
[
{
"musicId": 143,
"level": 4,
"playCount": 8,
"achievement": 0,
"comboStatus": 0,
"syncStatus": 0,
"deluxscoreMax": 0,
"scoreRank": 0,
"extNum1": 0
}
]
```
实跑:
```json
[
{
"musicId": 143,
"level": 4,
"playCount": 9,
"achievement": 0,
"comboStatus": 0,
"syncStatus": 0,
"deluxscoreMax": 0,
"scoreRank": 0,
"extNum1": 0
}
]
```
### `userMapList`
真机:
```json
[
{
"mapId": 550003,
"distance": 1435000,
"isLock": false,
"isClear": false,
"isComplete": false,
"unlockFlag": 0
}
]
```
实跑:
```json
[
{
"mapId": 550003,
"distance": 1446000,
"isLock": false,
"isClear": false,
"isComplete": false,
"unlockFlag": 0
}
]
```
### `userCharacterList`
真机:
```json
[
{
"characterId": 101,
"level": 4456,
"awakening": 5,
"useCount": 0
},
{
"characterId": 395,
"level": 3801,
"awakening": 5,
"useCount": 0
},
{
"characterId": 200401,
"level": 135,
"awakening": 3,
"useCount": 0
},
{
"characterId": 400401,
"level": 135,
"awakening": 3,
"useCount": 0
},
{
"characterId": 400402,
"level": 135,
"awakening": 3,
"useCount": 0
}
]
```
实跑:
```json
[
{
"characterId": 395,
"useCount": 0,
"level": 3802,
"awakening": 5
},
{
"characterId": 101,
"useCount": 0,
"level": 4457,
"awakening": 5
},
{
"characterId": 400402,
"useCount": 0,
"level": 136,
"awakening": 3
},
{
"characterId": 400401,
"useCount": 0,
"level": 136,
"awakening": 3
},
{
"characterId": 200401,
"useCount": 0,
"level": 136,
"awakening": 3
}
]
```
### `userChargeList`
真机:
```json
[
{
"chargeId": 2,
"stock": 0,
"purchaseDate": "2026-07-14 18:33:37",
"validDate": "2026-10-12 04:00:00"
},
{
"chargeId": 3,
"stock": 0,
"purchaseDate": "2026-10-02 10:49:23",
"validDate": "2026-12-31 04:00:00"
},
{
"chargeId": 5,
"stock": 0,
"purchaseDate": "2026-10-04 18:22:10",
"validDate": "2027-01-02 04:00:00"
}
]
```
实跑:
```json
[
{
"chargeId": 2,
"stock": 0,
"purchaseDate": "2026-07-14 18:33:37",
"validDate": "2026-10-12 04:00:00"
},
{
"chargeId": 3,
"stock": 0,
"purchaseDate": "2026-10-02 10:49:23",
"validDate": "2026-12-31 04:00:00"
},
{
"chargeId": 5,
"stock": 0,
"purchaseDate": "2026-10-04 18:22:10",
"validDate": "2027-01-02 04:00:00"
}
]
```
### `userFavoriteList`
真机:
```json
[
{
"itemKind": 3,
"itemIdList": [
559501
]
},
{
"itemKind": 1,
"itemIdList": []
},
{
"itemKind": 2,
"itemIdList": []
},
{
"itemKind": 10,
"itemIdList": []
},
{
"itemKind": 11,
"itemIdList": []
}
]
```
实跑:
```json
[
{
"itemKind": 3,
"itemIdList": [
559501
]
},
{
"itemKind": 1,
"itemIdList": []
},
{
"itemKind": 2,
"itemIdList": []
},
{
"itemKind": 10,
"itemIdList": []
},
{
"itemKind": 11,
"itemIdList": []
}
]
```
## 两个对象节点
### `userWeeklyData`
真机:
```json
{
"lastLoginWeek": "2026-09-28 04:00:00",
"beforeLoginWeek": "2026-09-21 04:00:00",
"friendBonusFlag": true
}
```
实跑:
```json
{
"lastLoginWeek": "2026-09-28 04:00:00",
"beforeLoginWeek": "2026-09-21 04:00:00",
"friendBonusFlag": true
}
```
### `user2pPlaylog`
真机:
```json
{
"userId1": 0,
"userId2": 0,
"userName1": "",
"userName2": "",
"regionId": 0,
"placeId": 0,
"user2pPlaylogDetailList": []
}
```
实跑:
```json
{
"userId1": 0,
"userId2": 0,
"userName1": "",
"userName2": "",
"regionId": 0,
"placeId": 0,
"user2pPlaylogDetailList": []
}
```
## userGamePlaylogList
真机:
```json
[
{
"playlogId": 7692848101484135861,
"version": "1.56.00",
"playDate": "2026-10-05 00:20:57.0",
"playMode": 0,
"useTicketId": -1,
"playCredit": 1,
"playTrack": 1,
"clientId": "TESTCLIENT1",
"isPlayTutorial": false,
"isEventMode": false,
"isNewFree": false,
"playCount": 8,
"playSpecial": 55951502,
"playOtherUserId": 0
}
]
```
实跑:
```json
[
{
"playlogId": 7693120247791879616,
"version": "1.56.00",
"playDate": "2026-10-05 17:55:38.0",
"playMode": 0,
"useTicketId": -1,
"playCredit": 1,
"playTrack": 1,
"clientId": "TESTCLIENT1",
"isPlayTutorial": false,
"isEventMode": false,
"isNewFree": false,
"playCount": 8,
"playSpecial": 16417894,
"playOtherUserId": 0
}
]
```
## userPlaylogList[0] 逐字段对比(110 字段)
| # | 字段 | 真机 | 实跑 | 一致 |
|---|---|---|---|---|
| 1 | `userId` | 0 | 0 | 一致 |
| 2 | `orderId` | 0 | 0 | 一致 |
| 3 | `playlogId` | 7692848101484135861 | 7693120247791879616 | **不同** |
| 4 | `version` | 1056000 | 1056000 | 一致 |
| 5 | `placeId` | 1000 | 1000 | 一致 |
| 6 | `placeName` | "测试店铺" | "测试店铺" | 一致 |
| 7 | `loginDate` | 1791130777 | 1791194138 | **不同** |
| 8 | `playDate` | "2026-10-04" | "2026-10-05" | **不同** |
| 9 | `userPlayDate` | "2026-10-05 00:20:30.0" | "2026-10-05 17:55:38.0" | **不同** |
| 10 | `type` | 0 | 0 | 一致 |
| 11 | `musicId` | 143 | 143 | 一致 |
| 12 | `level` | 4 | 4 | 一致 |
| 13 | `trackNo` | 1 | 1 | 一致 |
| 14 | `vsMode` | 0 | 0 | 一致 |
| 15 | `vsUserName` | "" | "" | 一致 |
| 16 | `vsStatus` | 0 | 0 | 一致 |
| 17 | `vsUserRating` | 0 | 0 | 一致 |
| 18 | `vsUserAchievement` | 0 | 0 | 一致 |
| 19 | `vsUserGradeRank` | 0 | 0 | 一致 |
| 20 | `vsRank` | 0 | 0 | 一致 |
| 21 | `playerNum` | 1 | 1 | 一致 |
| 22 | `playedUserId1` | 0 | 0 | 一致 |
| 23 | `playedUserName1` | "" | "" | 一致 |
| 24 | `playedMusicLevel1` | 0 | 0 | 一致 |
| 25 | `playedUserId2` | 0 | 0 | 一致 |
| 26 | `playedUserName2` | "" | "" | 一致 |
| 27 | `playedMusicLevel2` | 0 | 0 | 一致 |
| 28 | `playedUserId3` | 0 | 0 | 一致 |
| 29 | `playedUserName3` | "" | "" | 一致 |
| 30 | `playedMusicLevel3` | 0 | 0 | 一致 |
| 31 | `characterId1` | 395 | 395 | 一致 |
| 32 | `characterLevel1` | 3800 | 3800 | 一致 |
| 33 | `characterAwakening1` | 5 | 5 | 一致 |
| 34 | `characterId2` | 101 | 101 | 一致 |
| 35 | `characterLevel2` | 4455 | 4455 | 一致 |
| 36 | `characterAwakening2` | 5 | 5 | 一致 |
| 37 | `characterId3` | 400402 | 400402 | 一致 |
| 38 | `characterLevel3` | 134 | 134 | 一致 |
| 39 | `characterAwakening3` | 3 | 3 | 一致 |
| 40 | `characterId4` | 400401 | 400401 | 一致 |
| 41 | `characterLevel4` | 134 | 134 | 一致 |
| 42 | `characterAwakening4` | 3 | 3 | 一致 |
| 43 | `characterId5` | 200401 | 200401 | 一致 |
| 44 | `characterLevel5` | 134 | 134 | 一致 |
| 45 | `characterAwakening5` | 3 | 3 | 一致 |
| 46 | `achievement` | 0 | 0 | 一致 |
| 47 | `deluxscore` | 0 | 0 | 一致 |
| 48 | `scoreRank` | 0 | 0 | 一致 |
| 49 | `maxCombo` | 0 | 0 | 一致 |
| 50 | `totalCombo` | 655 | 655 | 一致 |
| 51 | `maxSync` | 0 | 0 | 一致 |
| 52 | `totalSync` | 0 | 0 | 一致 |
| 53 | `tapCriticalPerfect` | 0 | 0 | 一致 |
| 54 | `tapPerfect` | 0 | 0 | 一致 |
| 55 | `tapGreat` | 0 | 0 | 一致 |
| 56 | `tapGood` | 0 | 0 | 一致 |
| 57 | `tapMiss` | 441 | 441 | 一致 |
| 58 | `holdCriticalPerfect` | 0 | 0 | 一致 |
| 59 | `holdPerfect` | 0 | 0 | 一致 |
| 60 | `holdGreat` | 0 | 0 | 一致 |
| 61 | `holdGood` | 0 | 0 | 一致 |
| 62 | `holdMiss` | 19 | 19 | 一致 |
| 63 | `slideCriticalPerfect` | 0 | 0 | 一致 |
| 64 | `slidePerfect` | 0 | 0 | 一致 |
| 65 | `slideGreat` | 0 | 0 | 一致 |
| 66 | `slideGood` | 0 | 0 | 一致 |
| 67 | `slideMiss` | 192 | 192 | 一致 |
| 68 | `touchCriticalPerfect` | 0 | 0 | 一致 |
| 69 | `touchPerfect` | 0 | 0 | 一致 |
| 70 | `touchGreat` | 0 | 0 | 一致 |
| 71 | `touchGood` | 0 | 0 | 一致 |
| 72 | `touchMiss` | 0 | 0 | 一致 |
| 73 | `breakCriticalPerfect` | 0 | 0 | 一致 |
| 74 | `breakPerfect` | 0 | 0 | 一致 |
| 75 | `breakGreat` | 0 | 0 | 一致 |
| 76 | `breakGood` | 0 | 0 | 一致 |
| 77 | `breakMiss` | 3 | 3 | 一致 |
| 78 | `isTap` | true | true | 一致 |
| 79 | `isHold` | true | true | 一致 |
| 80 | `isSlide` | true | true | 一致 |
| 81 | `isTouch` | false | false | 一致 |
| 82 | `isBreak` | true | true | 一致 |
| 83 | `isCriticalDisp` | true | true | 一致 |
| 84 | `isFastLateDisp` | true | true | 一致 |
| 85 | `fastCount` | 0 | 0 | 一致 |
| 86 | `lateCount` | 0 | 0 | 一致 |
| 87 | `isAchieveNewRecord` | false | false | 一致 |
| 88 | `isDeluxscoreNewRecord` | false | false | 一致 |
| 89 | `comboStatus` | 0 | 0 | 一致 |
| 90 | `syncStatus` | 0 | 0 | 一致 |
| 91 | `isClear` | false | false | 一致 |
| 92 | `beforeRating` | 15000 | 15000 | 一致 |
| 93 | `afterRating` | 15000 | 15000 | 一致 |
| 94 | `beforeGrade` | 0 | 0 | 一致 |
| 95 | `afterGrade` | 0 | 0 | 一致 |
| 96 | `afterGradeRank` | 1 | 1 | 一致 |
| 97 | `beforeDeluxRating` | 15000 | 15000 | 一致 |
| 98 | `afterDeluxRating` | 15000 | 15000 | 一致 |
| 99 | `isPlayTutorial` | false | false | 一致 |
| 100 | `isEventMode` | false | false | 一致 |
| 101 | `isFreedomMode` | false | false | 一致 |
| 102 | `playMode` | 0 | 0 | 一致 |
| 103 | `isNewFree` | false | false | 一致 |
| 104 | `trialPlayAchievement` | -1 | -1 | 一致 |
| 105 | `extNum1` | 0 | 0 | 一致 |
| 106 | `extNum2` | 0 | 0 | 一致 |
| 107 | `extNum4` | 2022 | 2022 | 一致 |
| 108 | `extBool1` | false | false | 一致 |
| 109 | `extBool2` | false | false | 一致 |
| 110 | `extBool3` | false | false | 一致 |
命中 106/110
## 汇总
- userData 字段命中:76/82
- playlog 字段命中:106/110
- 节点形态命中:36/36