From 3d5dafe71c540ad49781547b8ecaf802eeb336ab Mon Sep 17 00:00:00 2001 From: keke Date: Fri, 4 Sep 2026 19:50:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=B8=83=E6=97=A5?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E9=81=93=E5=85=B7=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/seven_day_gift/SevenDayGiftApi.ts | 6 ++- assets/seven_day_gift/SevenDayGiftReward.ts | 48 +++++++++++++++++---- docs/seven-day-gift-maintenance.md | 8 ++-- 3 files changed, 49 insertions(+), 13 deletions(-) diff --git a/assets/seven_day_gift/SevenDayGiftApi.ts b/assets/seven_day_gift/SevenDayGiftApi.ts index 8b5a336..a418ea3 100644 --- a/assets/seven_day_gift/SevenDayGiftApi.ts +++ b/assets/seven_day_gift/SevenDayGiftApi.ts @@ -81,7 +81,7 @@ export default class SevenDayGiftApi { }, callback); } - public static saveDebugProps(propData: object, callback: (response: SevenDayResponse) => void) { + public static saveProps(propData: object, callback: (response: SevenDayResponse) => void) { this.post("userProp", { uid: this.getUid(), action: "save", @@ -90,6 +90,10 @@ export default class SevenDayGiftApi { }, callback); } + public static saveDebugProps(propData: object, callback: (response: SevenDayResponse) => void) { + this.saveProps(propData, callback); + } + public static saveDebugPower(userPowerTime: number, callback: (response: SevenDayResponse) => void) { this.post("userPower", { uid: this.getUid(), diff --git a/assets/seven_day_gift/SevenDayGiftReward.ts b/assets/seven_day_gift/SevenDayGiftReward.ts index 712a984..82c5dc6 100644 --- a/assets/seven_day_gift/SevenDayGiftReward.ts +++ b/assets/seven_day_gift/SevenDayGiftReward.ts @@ -35,34 +35,53 @@ export default class SevenDayGiftReward { } }); - this.grantCommonRewards(coin, hammer, freeze, magic, infiniteHealth); - this.saveCats(cats, 0, (success: boolean, message?: string) => { - if (!success) { - callback(false, message); + this.grantCommonRewards(coin, hammer, freeze, magic, infiniteHealth, (commonSuccess: boolean, commonMessage?: string) => { + if (!commonSuccess) { + callback(false, commonMessage); return; } - this.markProcessed(result.claimId); - callback(true); + this.saveCats(cats, 0, (success: boolean, message?: string) => { + if (!success) { + callback(false, message); + return; + } + this.markProcessed(result.claimId); + callback(true); + }); }); } - private static grantCommonRewards(coin: number, hammer: number, freeze: number, magic: number, infiniteHealth: number) { + private static grantCommonRewards( + coin: number, + hammer: number, + freeze: number, + magic: number, + infiniteHealth: number, + callback: (success: boolean, message?: string) => void, + ) { if (coin > 0) { cc.fx.GameTool.changeCoin(coin); } + + let propData = null; if (hammer > 0 || freeze > 0 || magic > 0) { const info = cc.fx.GameConfig.GM_INFO; info.hammerAmount = (Number(info.hammerAmount) || 0) + hammer; info.freezeAmount = (Number(info.freezeAmount) || 0) + freeze; info.magicAmount = (Number(info.magicAmount) || 0) + magic; + propData = { + freeze: info.freezeAmount, + hammer: info.hammerAmount, + magic_wand: info.magicAmount, + }; cc.fx.StorageMessage.setStorage("prop", { hammerAmount: info.hammerAmount, freezeAmount: info.freezeAmount, magicAmount: info.magicAmount, timestamp: Date.now(), }); - cc.fx.GameTool.setUserProp(0, 0, () => { }); } + if (infiniteHealth > 0) { cc.fx.GameTool.setUserPowerTime(infiniteHealth, "seven_day_gift"); } @@ -72,6 +91,19 @@ export default class SevenDayGiftReward { if (home && home.updateCoin) { home.updateCoin(); } + + if (!propData) { + callback(true); + return; + } + + SevenDayGiftApi.saveProps(propData, response => { + if (!response || response.code !== 1) { + callback(false, response && response.msg ? response.msg : "道具同步失败"); + return; + } + callback(true); + }); } private static saveCats(cats: number[], index: number, callback: (success: boolean, message?: string) => void) { diff --git a/docs/seven-day-gift-maintenance.md b/docs/seven-day-gift-maintenance.md index 0dc6e2a..91e256d 100644 --- a/docs/seven-day-gift-maintenance.md +++ b/docs/seven-day-gift-maintenance.md @@ -182,9 +182,9 @@ cc.fx.StorageMessage.getStorage("uid") | 后端类型 | 前端处理 | | --- | --- | | `coin` | `cc.fx.GameTool.changeCoin()` | -| `hammer` | 增加 `GM_INFO.hammerAmount`,保存 `prop`,调用 `setUserProp` | -| `freeze` | 增加 `GM_INFO.freezeAmount`,保存 `prop`,调用 `setUserProp` | -| `magic_wand` | 增加 `GM_INFO.magicAmount`,保存 `prop`,调用 `setUserProp` | +| `hammer` | 增加 `GM_INFO.hammerAmount`,保存 `prop`,通过 `SevenDayGiftApi.saveProps()` 同步 `/userProp` | +| `freeze` | 增加 `GM_INFO.freezeAmount`,保存 `prop`,通过 `SevenDayGiftApi.saveProps()` 同步 `/userProp` | +| `magic_wand` | 增加 `GM_INFO.magicAmount`,保存 `prop`,通过 `SevenDayGiftApi.saveProps()` 同步 `/userProp` | | `infinite_health` | 调用 `setUserPowerTime(seconds, "seven_day_gift")` | | `cat_skin` | 使用 `itemId` 调用 `setCatArr?action=save` | @@ -272,7 +272,7 @@ hammer - `/userProp?action=read`。 - `/userPower?action=read`。 -领取时产生的 `signInClaim` 和 `setCatArr` 请求也会自动进入记录。面板最多保存 120 条记录,按最新记录在上方展示,内容区域支持垂直滚动。 +领取时产生的 `signInClaim`、`userProp` 和 `setCatArr` 请求也会自动进入记录。普通道具必须等待 `userProp` 返回 `code=1` 后,才能将本次 `claimId` 标记为前端处理完成。面板最多保存 120 条记录,按最新记录在上方展示,内容区域支持垂直滚动。 ### 3.8 Prefab 和图片资源