From fe0fe15890c6328f495bb0ec79baa6d132c9ee96 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 13 Nov 2025 18:02:01 +0800 Subject: [PATCH] =?UTF-8?q?gm=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Gm.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index e7e48bca..13cd3314 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -1,6 +1,7 @@ package game import ( + "bytes" "encoding/gob" "fmt" "os" @@ -506,7 +507,20 @@ func ReqGmCommand_(player *Player, Command string) error { BaseMod.Uid = player.M_DwUin BaseMod.NickName = player.PlayMod.getBaseMod().NickName BaseMod.LoginTime = GoUtil.Now() - player.PlayMod.mod_list = p1.PlayMod.mod_list + // deep copy p1.PlayMod.mod_list to avoid sharing internal pointers + var modCopy PlayerModList + var buf bytes.Buffer + enc := gob.NewEncoder(&buf) + if err := enc.Encode(p1.PlayMod.mod_list); err != nil { + log.Error("failed to encode mod_list: %v", err) + return err + } + dec := gob.NewDecoder(&buf) + if err := dec.Decode(&modCopy); err != nil { + log.Error("failed to decode mod_list: %v", err) + return err + } + player.PlayMod.mod_list = modCopy player.PlayMod.mod_list.Base = *BaseMod case "orderMerge": // 获取order订单的mergeId OrderMod := player.PlayMod.getOrderMod()