From 2b54cd128f7aee1a5595ff5c6977735b0aac83b7 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 10 Dec 2025 11:59:55 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7=E4=BD=9C?= =?UTF-8?q?=E6=88=98=E3=80=91-=E8=BD=AC=E7=9B=98=E9=80=BB=E8=BE=91bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/catnip/CatnipCfg.go | 16 ++++++++++++++++ src/server/game/PlayerChessMod.go | 18 ++++++++++++++++++ src/server/game/mod/catnip/Catnip.go | 7 +++++-- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/server/conf/catnip/CatnipCfg.go b/src/server/conf/catnip/CatnipCfg.go index bfb12708..ff388e17 100644 --- a/src/server/conf/catnip/CatnipCfg.go +++ b/src/server/conf/catnip/CatnipCfg.go @@ -34,6 +34,22 @@ func GetGameNum(Id int) int { return gamedata.GetIntValue(data, "PassNum") } +func GetGameMaxProgress(Id int) int { + TemplateId := GetTemplateId(Id) + data, err := gamedata.GetData(CATNIP_GAME_CFG_NAME) + if err != nil { + return 0 + } + MaxProgress := 0 + for _, v := range data { + if gamedata.GetIntValue(v, "Template") != TemplateId { + continue + } + MaxProgress = max(MaxProgress, gamedata.GetIntValue(v, "Need")) + } + return MaxProgress +} + func GetJackpotItem(Mul int) (int, []*item.Item, int, int) { data, err := gamedata.GetData(CATNIP_JACKPOT_CFG_NAME) if err != nil { diff --git a/src/server/game/PlayerChessMod.go b/src/server/game/PlayerChessMod.go index 81c0c049..b875d1e0 100644 --- a/src/server/game/PlayerChessMod.go +++ b/src/server/game/PlayerChessMod.go @@ -129,6 +129,24 @@ func (p *PlayerChessData) UpdateChessData(player *Player, MChessData map[string] return nil } +func (p *PlayerChessData) UpdateChessDataTest(player *Player, MChessData map[string]int32) error { + p.Data.MChessData = MChessData + if true { + res := &msg.ResUpdatePlayerChessData{ + Code: msg.RES_CODE_FAIL, + Msg: "棋子数据不一致", + } + log.Debug("棋子数据不一致, %v---%v", p.Data.MChessData, player.PlayMod.getChessMod().GetChessList()) + player.SendErrClienRes(res) + player.TeLog("outsync_event", map[string]interface{}{ + "outsync_event": "UpdatePlayerChessDataFunc", + }) + return fmt.Errorf("棋子数据不一致") + } + player.PlayMod.getChessMod().ChessMap = MChessData + return nil +} + // 检查棋子数据是否一致 func (p *PlayerChessData) checkChessEqual(player *Player) bool { if len(p.Data.MChessData) == 0 && conf.Server.GameName == "Merge_Pet_Local" { diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index ac8a9663..ab86953d 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -170,6 +170,9 @@ func (c *CatnipMod) Play(Id int) (int, int, int, []*item.Item, []*item.Item, int if !ok { return 0, 0, 0, nil, nil, 0, fmt.Errorf("game with ID %d does not exist", Id) } + if GameInfo.Status != GAME_STATUS_IN_PROGRESS { + return 0, 0, 0, nil, nil, 0, fmt.Errorf("game with ID %d is not in progress", Id) + } Id, Items, Growth, FriendItems := catnipCfg.GetJackpotItem(c.Mul) Growth = Growth * c.Mul if Growth > 0 { @@ -215,7 +218,7 @@ func (c *CatnipMod) Growth(Id, Growth int) { return // Game is not in progress } GameInfo.Progress += Growth - if GameInfo.Progress >= catnipCfg.GetGameNum(Id) { // Assuming the game ends when progress reaches a certain threshold + if GameInfo.Progress >= catnipCfg.GetGameMaxProgress(c.Id) { // Assuming the game ends when progress reaches a certain threshold GameInfo.Status = GAME_STATUS_COMPLETED } } @@ -225,7 +228,7 @@ func (c *CatnipMod) GrowthByUid(Uid, Growth int) { if v.Partner == Uid { v.Progress += Growth v.PartnerAdd += Growth - if v.Progress >= catnipCfg.GetGameNum(v.Id) { // Assuming the game ends when progress reaches a certain threshold + if v.Progress >= catnipCfg.GetGameMaxProgress(c.Id) { // Assuming the game ends when progress reaches a certain threshold v.Status = GAME_STATUS_COMPLETED } }