From f638547f322ca873bf942be152d8559306829e41 Mon Sep 17 00:00:00 2001 From: giteaadmin Date: Fri, 3 Jul 2026 17:09:52 +0000 Subject: [PATCH] fixed3 5 7 --- www/html/Admin/private/store.json | 160 +- www/html/Game/data/game-timing.json | 6 +- www/html/Game/public/js/play.js | 22 + www/html/Game/public/play.html | 2 +- www/html/Game/server.js | 37 +- www/html/gamelog/data/log.jsonl | 3514 +++++++++++++++++ www/html/testcase/data/bugs.json | 20 + .../data/bugs.json.bak-20260703-tc172-173 | 1332 +++++++ www/html/testcase/data/verify.json | 876 ++-- .../data/verify.json.bak-20260703-tc172173 | 434 ++ 10 files changed, 5912 insertions(+), 491 deletions(-) create mode 100644 www/html/testcase/data/bugs.json.bak-20260703-tc172-173 create mode 100755 www/html/testcase/data/verify.json.bak-20260703-tc172173 diff --git a/www/html/Admin/private/store.json b/www/html/Admin/private/store.json index 26fac9d..834e5ef 100644 --- a/www/html/Admin/private/store.json +++ b/www/html/Admin/private/store.json @@ -51,9 +51,9 @@ "providerUserId": "p_1775109142385_wq7wfy1p32j", "notes": "auto: player-coins", "blocked": false, - "coins": 3082, + "coins": 3090, "createdAt": "2026-04-02T05:52:21+00:00", - "updatedAt": "2026-07-03T10:29:39+00:00", + "updatedAt": "2026-07-03T16:31:03+00:00", "daily": { "anchorMs": 1781197200000, "claimedDays": [ @@ -67,10 +67,10 @@ ], "lockUntilMs": 0 }, - "score": 1008, + "score": 1016, "scoreByCase": { "1": 26, - "10": 970, + "10": 978, "8": 306, "11": 20, "13": 368, @@ -106,9 +106,9 @@ "providerUserId": "p_1775128666204_xzgg2n6x8h", "notes": "auto: player-coins", "blocked": false, - "coins": 291, + "coins": 363, "createdAt": "2026-04-02T11:17:46+00:00", - "updatedAt": "2026-07-02T07:39:38+00:00", + "updatedAt": "2026-07-03T11:54:27+00:00", "lobbyColorThemeIndex": 1, "lobbySkinToneIndex": 3, "daily": { @@ -124,22 +124,27 @@ ], "lockUntilMs": 0 }, - "score": 246, + "score": 318, "scoreByCase": { - "6": 30, + "6": 56, "13": 50, "5": 8, "12": 6, - "10": 78, + "10": 106, "3": 10, "2": 26, - "7": 38 + "7": 38, + "1": 18 }, "lbName": "บอท 888", "achievements": { "d1_minigame_solver": 20, "a1_first_deduction": 1, - "a5_truth_hunter": 3 + "a5_truth_hunter": 3, + "e2_the_impostor": 1, + "e4_agent_of_chaos": 1, + "e3_master_of_doubt": 1, + "e5_slippery_eel": 1 } }, { @@ -150,21 +155,21 @@ "providerUserId": "p_1777015659667_xqfjh247bgp", "notes": "auto: player-coins", "blocked": false, - "coins": 348, + "coins": 382, "createdAt": "2026-04-24T07:28:02+00:00", - "updatedAt": "2026-06-21T09:15:13+00:00", - "score": 348, + "updatedAt": "2026-07-03T16:38:57+00:00", + "score": 382, "scoreByCase": { "8": 220, "5": 30, "7": 60, "2": 10, "9": 10, - "10": 18 + "10": 52 }, - "lbName": "MONE", + "lbName": "Q", "achievements": { - "d1_minigame_solver": 4 + "d1_minigame_solver": 8 }, "lobbyColorThemeIndex": 6, "lobbySkinToneIndex": 1 @@ -235,25 +240,25 @@ "providerUserId": "p_1780400804441_lsc3lqqvs0i", "notes": "auto: player-coins", "blocked": false, - "coins": 193, + "coins": 224, "createdAt": "2026-06-02T11:46:46+00:00", - "updatedAt": "2026-06-26T12:12:46+00:00", + "updatedAt": "2026-07-03T12:00:58+00:00", "daily": { "anchorMs": 1781802000000, "claimedDays": [ true, true, true, - false, + true, false, false, false ], - "lockUntilMs": 0 + "lockUntilMs": 1783098000000 }, - "score": 148, + "score": 154, "scoreByCase": { - "1": 4, + "1": 10, "7": 2, "10": 52, "6": 24, @@ -266,7 +271,7 @@ "achievements": { "d1_minigame_solver": 20, "a1_first_deduction": 1, - "a5_truth_hunter": 2 + "a5_truth_hunter": 3 }, "lobbyColorThemeIndex": 8, "lobbySkinToneIndex": 3 @@ -334,7 +339,7 @@ "blocked": false, "coins": 169, "createdAt": "2026-06-19T06:14:02+00:00", - "updatedAt": "2026-07-01T11:44:24+00:00", + "updatedAt": "2026-07-03T11:55:41+00:00", "daily": { "anchorMs": 1781802000000, "claimedDays": [ @@ -346,7 +351,7 @@ false, false ], - "lockUntilMs": 1782925200000 + "lockUntilMs": 0 }, "score": 144, "scoreByCase": { @@ -479,9 +484,9 @@ "providerUserId": "p_1781851275186_szcmp5pu3s", "notes": "auto: player-coins", "blocked": false, - "coins": 242, + "coins": 254, "createdAt": "2026-06-19T06:41:15+00:00", - "updatedAt": "2026-06-27T19:28:03+00:00", + "updatedAt": "2026-07-03T16:31:03+00:00", "daily": { "anchorMs": 1781802000000, "claimedDays": [ @@ -495,9 +500,9 @@ ], "lockUntilMs": 0 }, - "score": 222, + "score": 234, "scoreByCase": { - "10": 58, + "10": 70, "13": 36, "12": 82, "4": 28, @@ -712,14 +717,14 @@ "providerUserId": "p_1782122326943_7p2fnvivscm", "notes": "auto: player-coins", "blocked": false, - "coins": 202, + "coins": 216, "createdAt": "2026-06-22T09:58:46+00:00", - "updatedAt": "2026-06-23T15:32:42+00:00", + "updatedAt": "2026-07-03T16:31:03+00:00", "lobbyColorThemeIndex": 3, "lobbySkinToneIndex": 1, - "score": 192, + "score": 206, "scoreByCase": { - "10": 20, + "10": 34, "12": 108, "3": 54, "13": 10 @@ -739,7 +744,7 @@ false, false ], - "lockUntilMs": 1782234000000 + "lockUntilMs": 0 } }, { @@ -750,20 +755,20 @@ "providerUserId": "p_1782122328583_4mqrfx5txyo", "notes": "auto: player-coins", "blocked": false, - "coins": 34, + "coins": 46, "createdAt": "2026-06-22T09:58:48+00:00", - "updatedAt": "2026-07-03T04:30:33+00:00", + "updatedAt": "2026-07-03T16:31:03+00:00", "lobbyColorThemeIndex": 1, "lobbySkinToneIndex": 1, - "score": 34, + "score": 46, "scoreByCase": { - "10": 8, + "10": 20, "8": 18, "13": 8 }, "lbName": "MONE", "achievements": { - "d1_minigame_solver": 2 + "d1_minigame_solver": 4 } }, { @@ -930,18 +935,18 @@ "providerUserId": "p_1782327780535_twosoa33hsr", "notes": "auto: player-coins", "blocked": false, - "coins": 70, + "coins": 74, "createdAt": "2026-06-24T19:03:00+00:00", - "updatedAt": "2026-07-01T01:03:57+00:00", - "score": 70, + "updatedAt": "2026-07-03T11:36:05+00:00", + "score": 74, "scoreByCase": { - "10": 40, + "10": 44, "8": 20, "3": 10 }, - "lbName": "ผู้เล่น", + "lbName": "Q phone", "achievements": { - "d1_minigame_solver": 7 + "d1_minigame_solver": 8 } }, { @@ -1048,19 +1053,26 @@ "providerUserId": "p_1778156246099_lbrni0cvx8", "notes": "auto: player-coins", "blocked": false, - "coins": 64, + "coins": 116, "createdAt": "2026-06-29T07:25:24+00:00", - "updatedAt": "2026-07-01T12:00:46+00:00", - "score": 64, + "updatedAt": "2026-07-03T11:58:39+00:00", + "score": 116, "scoreByCase": { - "10": 42, + "10": 58, "8": 10, "7": 2, - "1": 10 + "1": 18, + "6": 28 }, - "lbName": "บอท 1 (เกือบฉลาด)", + "lbName": "บอท 666", "achievements": { - "d1_minigame_solver": 9 + "d1_minigame_solver": 15, + "e2_the_impostor": 1, + "e4_agent_of_chaos": 2, + "e3_master_of_doubt": 1, + "e5_slippery_eel": 1, + "a1_first_deduction": 1, + "a5_truth_hunter": 1 } }, { @@ -1225,6 +1237,48 @@ "12": 10 }, "lbName": "MONE" + }, + { + "id": "d2eeb9c6dd97b4fcf92cafa8", + "email": "", + "displayName": "PP", + "loginType": "guest", + "providerUserId": "p_1783077173525_ex7248nv4pj", + "notes": "auto: player-coins", + "blocked": false, + "coins": 56, + "createdAt": "2026-07-03T11:12:53+00:00", + "updatedAt": "2026-07-03T11:54:27+00:00", + "agentDisplayId": "986716", + "linkCode": "5HUN6FRB", + "linkCodeLastUsedAt": "2026-07-03T11:13:50+00:00", + "daily": { + "anchorMs": 1783011600000, + "claimedDays": [ + true, + false, + false, + false, + false, + false, + false + ], + "lockUntilMs": 1783098000000 + }, + "lobbyColorThemeIndex": 4, + "lobbySkinToneIndex": 3, + "score": 46, + "scoreByCase": { + "6": 18, + "10": 14, + "1": 14 + }, + "lbName": "PP", + "achievements": { + "d1_minigame_solver": 7, + "a1_first_deduction": 1, + "a5_truth_hunter": 1 + } } ] } \ No newline at end of file diff --git a/www/html/Game/data/game-timing.json b/www/html/Game/data/game-timing.json index ae06ede..aa9f3bd 100644 --- a/www/html/Game/data/game-timing.json +++ b/www/html/Game/data/game-timing.json @@ -97,9 +97,9 @@ "balloonBossPlayerBalloonFallbackUrl": "/Game/img/MegaVirus/Artboard%209.png", "balloonBossBalloonsPerPlayer": 3, "forcedMinigameKeys": [ - "quiz", - "gauntlet", - "quiz_carry" + "stack", + "jump_survive", + "balloon_boss" ], "testSpecialCardByMap": {}, "troublesomeForceOffer": false, diff --git a/www/html/Game/public/js/play.js b/www/html/Game/public/js/play.js index df8e815..570f29c 100644 --- a/www/html/Game/public/js/play.js +++ b/www/html/Game/public/js/play.js @@ -6726,6 +6726,19 @@ return zDraw; } let gauntletCrownHowtoVisible = false; + /* rejoin กลางเกมที่ live แล้ว (server ส่ง res.missionLive=true) → ข้าม how-to เข้าเล่นต่อทันที + กันเคส refresh กลางเกม แล้วค้างหน้า how-to กดต่อไม่ได้ (handshake ready→countdown ผ่านไปแล้ว) */ + let playRejoinLiveResume = false; + /** ปิด how-to/countdown overlay ทั้งหมด (ใช้ตอน resume เข้าเกม live หลัง reconnect) */ + function hideHowtoOverlaysForLiveResumePlay() { + try { + const ho = document.getElementById('gauntlet-crown-howto-overlay'); + if (ho) ho.classList.add('is-hidden'); + const cd = document.getElementById('gauntlet-crown-countdown'); + if (cd) cd.classList.add('is-hidden'); + gauntletCrownHowtoVisible = false; + } catch (_e) { /* ignore */ } + } function isGauntletCrownPregameBlockingPlay() { if (!usesCrownLobbyShellPlay()) return false; if (gauntletCrownRunHeldRemote) return true; @@ -7647,6 +7660,7 @@ function showStackTowerMissionHowtoOverlay() { if (!isStackTowerMissionUiMapPlay()) return; + if (playRejoinLiveResume) { stackTowerMissionPhase = 'live'; hideHowtoOverlaysForLiveResumePlay(); return; } hideConflictingOverlaysForGauntletCrown(); applyStackTowerMissionPanelImages(); if (stackTowerMissionCountdownTimer) { @@ -8015,6 +8029,7 @@ function showJumpSurviveMissionHowtoOverlay() { if (!isJumpSurviveMissionUiMapPlay()) return; + if (playRejoinLiveResume) { jumpSurviveMissionPhase = 'live'; hideHowtoOverlaysForLiveResumePlay(); return; } hideConflictingOverlaysForJumpSurviveMission(); applyJumpSurviveJumperPanelImages(); if (jumperMissionCountdownTimer) { @@ -8395,6 +8410,7 @@ function showSpaceShooterMissionHowtoOverlay() { if (!isSpaceShooterMissionUiMapPlay()) return; + if (playRejoinLiveResume) { spaceShooterMissionPhase = 'live'; hideHowtoOverlaysForLiveResumePlay(); return; } hideConflictingOverlaysForGauntletCrown(); applySpaceShooterMissionPanelImages(); if (spaceShooterMissionCountdownTimer) { @@ -8973,6 +8989,7 @@ function showQuizQuestionMissionHowtoOverlay() { if (!isQuizQuestionMissionUiMapPlay()) return; + if (playRejoinLiveResume) { quizQuestionMissionPhase = 'live'; hideHowtoOverlaysForLiveResumePlay(); return; } hideConflictingOverlaysForGauntletCrown(); applyQuizQuestionMissionPanelImages(); if (quizQuestionMissionCountdownTimer) { @@ -14123,6 +14140,7 @@ function showGauntletCrownHowtoOverlay() { if (!usesCrownLobbyShellPlay()) return; + if (playRejoinLiveResume) { gauntletCrownPregamePhase = 'live'; hideHowtoOverlaysForLiveResumePlay(); try { trySnapGauntletCrownRunwayScrollToSpawnsPlay(); } catch (_s) { /* ignore */ } return; } hideConflictingOverlaysForGauntletCrown(); if (isGauntletCrownHeistMapPlay()) applyGauntletCrownHeistMissionPanelImages(); else if (isMegaVirusMissionShellMapPlay()) applyMegaVirusMissionPanelImages(); @@ -20053,6 +20071,9 @@ } function applyMapAndStart(gameMapData, res) { + /* reconnect กลางเกมที่ live แล้ว (server join callback ส่ง res.missionLive) → ข้าม how-to เข้าเล่นต่อ + (fresh game-start ไม่มี res.missionLive → false = โชว์ how-to ปกติ) · reset ทุกครั้งที่เรียก */ + playRejoinLiveResume = !!(res && res.missionLive); const prevWasSpaceShooter = mapData && mapData.gameType === 'space_shooter'; const prevWasBalloonBoss = mapData && mapData.gameType === 'balloon_boss'; mapData = gameMapData; @@ -22540,6 +22561,7 @@ const applySnap = (md) => { mapData = md; playEmbedUserZoomMul = 1; + playRejoinLiveResume = false; /* game-start = เริ่มเกมใหม่จริง → โชว์ how-to ปกติ (กัน flag ค้างจาก reconnect รอบก่อน) */ specialQuizArmSent = false; /* รอบมินิเกมใหม่ — รีเซ็ตให้ส่งสัญญาณ arm ไอคอนคำถามพิเศษได้อีกครั้ง */ if (ev.mapId != null && String(ev.mapId).trim() !== '') { playSessionMapId = String(ev.mapId).trim(); diff --git a/www/html/Game/public/play.html b/www/html/Game/public/play.html index 7d64b79..5d76f6e 100644 --- a/www/html/Game/public/play.html +++ b/www/html/Game/public/play.html @@ -5462,7 +5462,7 @@ - +
v —