孤儿分支,只含 docs/。内容包括: - 项目总览 / 主脚本编写指南 / 日志指南 - 上传成绩开发文档 / UpsertUserAll 踩坑清单(28 条) - 真机 Hook 对照报告 / 实跑验证记录 - 购买功能票流程(含被服务端拒绝的排查过程) · 扫码登录协议技术规范
17 KiB
17 KiB
顶层字段对比
| 字段 | 真机 | 本次实跑 | 一致 |
|---|---|---|---|
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
真机:
[
{
"musicId": 143,
"level": 4,
"playCount": 8,
"achievement": 0,
"comboStatus": 0,
"syncStatus": 0,
"deluxscoreMax": 0,
"scoreRank": 0,
"extNum1": 0
}
]
实跑:
[
{
"musicId": 143,
"level": 4,
"playCount": 9,
"achievement": 0,
"comboStatus": 0,
"syncStatus": 0,
"deluxscoreMax": 0,
"scoreRank": 0,
"extNum1": 0
}
]
userMapList
真机:
[
{
"mapId": 550003,
"distance": 1435000,
"isLock": false,
"isClear": false,
"isComplete": false,
"unlockFlag": 0
}
]
实跑:
[
{
"mapId": 550003,
"distance": 1446000,
"isLock": false,
"isClear": false,
"isComplete": false,
"unlockFlag": 0
}
]
userCharacterList
真机:
[
{
"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
}
]
实跑:
[
{
"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
真机:
[
{
"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"
}
]
实跑:
[
{
"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
真机:
[
{
"itemKind": 3,
"itemIdList": [
559501
]
},
{
"itemKind": 1,
"itemIdList": []
},
{
"itemKind": 2,
"itemIdList": []
},
{
"itemKind": 10,
"itemIdList": []
},
{
"itemKind": 11,
"itemIdList": []
}
]
实跑:
[
{
"itemKind": 3,
"itemIdList": [
559501
]
},
{
"itemKind": 1,
"itemIdList": []
},
{
"itemKind": 2,
"itemIdList": []
},
{
"itemKind": 10,
"itemIdList": []
},
{
"itemKind": 11,
"itemIdList": []
}
]
两个对象节点
userWeeklyData
真机:
{
"lastLoginWeek": "2026-09-28 04:00:00",
"beforeLoginWeek": "2026-09-21 04:00:00",
"friendBonusFlag": true
}
实跑:
{
"lastLoginWeek": "2026-09-28 04:00:00",
"beforeLoginWeek": "2026-09-21 04:00:00",
"friendBonusFlag": true
}
user2pPlaylog
真机:
{
"userId1": 0,
"userId2": 0,
"userName1": "",
"userName2": "",
"regionId": 0,
"placeId": 0,
"user2pPlaylogDetailList": []
}
实跑:
{
"userId1": 0,
"userId2": 0,
"userName1": "",
"userName2": "",
"regionId": 0,
"placeId": 0,
"user2pPlaylogDetailList": []
}
userGamePlaylogList
真机:
[
{
"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
}
]
实跑:
[
{
"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