From 11dcb3fb7ee80c8be3e0b87f45402ca1c317e371 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 30 Jul 2025 20:31:50 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerMod.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/PlayerMod.go b/src/server/game/PlayerMod.go index cc192824..0fc866b4 100644 --- a/src/server/game/PlayerMod.go +++ b/src/server/game/PlayerMod.go @@ -144,8 +144,8 @@ func (p *PlayerModData) InitMod(player *Player) (bool, error) { PlayerBaseMod := player.GetPlayerBaseMod() BaseMod.Uid = PlayerBaseMod.Data.DwUin BaseMod.SetAccount(PlayerBaseMod.Data.UserName) - BaseMod.SetLevel(int(PlayerBaseMod.Data.Level)) - BaseMod.SetExp(int(PlayerBaseMod.Data.Exp)) + BaseMod.SetLevel(1) + BaseMod.SetExp(0) BaseMod.SetEnergy(userCfg.GetInitEnergy()) BaseMod.SetStar(userCfg.GetInitStar()) BaseMod.SetDiamond(userCfg.GetInitDiamond()) From 8e0947b0541231020346d750c412664a63033ca5 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 30 Jul 2025 20:31:50 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerMod.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/PlayerMod.go b/src/server/game/PlayerMod.go index cc192824..0fc866b4 100644 --- a/src/server/game/PlayerMod.go +++ b/src/server/game/PlayerMod.go @@ -144,8 +144,8 @@ func (p *PlayerModData) InitMod(player *Player) (bool, error) { PlayerBaseMod := player.GetPlayerBaseMod() BaseMod.Uid = PlayerBaseMod.Data.DwUin BaseMod.SetAccount(PlayerBaseMod.Data.UserName) - BaseMod.SetLevel(int(PlayerBaseMod.Data.Level)) - BaseMod.SetExp(int(PlayerBaseMod.Data.Exp)) + BaseMod.SetLevel(1) + BaseMod.SetExp(0) BaseMod.SetEnergy(userCfg.GetInitEnergy()) BaseMod.SetStar(userCfg.GetInitStar()) BaseMod.SetDiamond(userCfg.GetInitDiamond()) From 8c002f709236186d06f8cfec4ba7d01480be133f Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 4 Aug 2025 10:45:53 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=BC=80=E5=8C=85bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerChessMod.go | 2 +- src/server/game/UnitTest.go | 4 ++-- src/server/game/mod/card/Card.go | 6 ++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/server/game/PlayerChessMod.go b/src/server/game/PlayerChessMod.go index 94ddcbbd..a142ff40 100644 --- a/src/server/game/PlayerChessMod.go +++ b/src/server/game/PlayerChessMod.go @@ -71,7 +71,7 @@ func (p *PlayerChessData) UpdatePlayerChessData(player *Player, buf []byte) erro for _, v := range update.MChessHandle { HandleStr += fmt.Sprintf("%v-%v-%v,", v.Id, v.ChessId, v.Type) } - log.Debug("棋子操作队列错误, %v===%v===%v===%v", HandleStr, LastMap, p.Data.MChessData, player.PlayMod.getChessMod().GetChessList()) + log.Debug("棋子操作队列错误, %v===%v===%v===%v", HandleStr, LastMap, update.MChessData, player.PlayMod.getChessMod().GetChessList()) player.SendErrClienRes(res) return err } diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 32b4cfb5..e46c88b7 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -119,8 +119,8 @@ func UnitLimitedTimeEvent(p *Player) error { func UnitCard(p *Player) error { CardMod := p.PlayMod.getCardMod() - for i := 0; i < 1000; i++ { - CardMod.OpenCardPack(4) + for i := 0; i < 10000; i++ { + CardMod.OpenCardPack(5) } return nil } diff --git a/src/server/game/mod/card/Card.go b/src/server/game/mod/card/Card.go index 11afc885..f2514a7a 100644 --- a/src/server/game/mod/card/Card.go +++ b/src/server/game/mod/card/Card.go @@ -196,9 +196,11 @@ func (c *CardMod) OpenCardPack(Star int) ([]int, error) { for i := 0; i < cnt; i++ { CardStar := GoUtil.RandMap(randList) switch CardStar { - case 5: + case 5: // 四星金 cardId = randCard(c.Round, 4, 1, newCard) - case 6: + case 6: // 五星 + cardId = randCard(c.Round, 5, 0, newCard) + case 7: // 五星金 cardId = randCard(c.Round, 5, 1, newCard) default: cardId = randCard(c.Round, CardStar, 0, newCard) From b4871dba2eff2049762e09ef8bcfc98fca80baf4 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 4 Aug 2025 10:45:53 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E5=BC=80=E5=8C=85bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerChessMod.go | 2 +- src/server/game/UnitTest.go | 4 ++-- src/server/game/mod/card/Card.go | 6 ++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/server/game/PlayerChessMod.go b/src/server/game/PlayerChessMod.go index 94ddcbbd..a142ff40 100644 --- a/src/server/game/PlayerChessMod.go +++ b/src/server/game/PlayerChessMod.go @@ -71,7 +71,7 @@ func (p *PlayerChessData) UpdatePlayerChessData(player *Player, buf []byte) erro for _, v := range update.MChessHandle { HandleStr += fmt.Sprintf("%v-%v-%v,", v.Id, v.ChessId, v.Type) } - log.Debug("棋子操作队列错误, %v===%v===%v===%v", HandleStr, LastMap, p.Data.MChessData, player.PlayMod.getChessMod().GetChessList()) + log.Debug("棋子操作队列错误, %v===%v===%v===%v", HandleStr, LastMap, update.MChessData, player.PlayMod.getChessMod().GetChessList()) player.SendErrClienRes(res) return err } diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 32b4cfb5..e46c88b7 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -119,8 +119,8 @@ func UnitLimitedTimeEvent(p *Player) error { func UnitCard(p *Player) error { CardMod := p.PlayMod.getCardMod() - for i := 0; i < 1000; i++ { - CardMod.OpenCardPack(4) + for i := 0; i < 10000; i++ { + CardMod.OpenCardPack(5) } return nil } diff --git a/src/server/game/mod/card/Card.go b/src/server/game/mod/card/Card.go index 11afc885..f2514a7a 100644 --- a/src/server/game/mod/card/Card.go +++ b/src/server/game/mod/card/Card.go @@ -196,9 +196,11 @@ func (c *CardMod) OpenCardPack(Star int) ([]int, error) { for i := 0; i < cnt; i++ { CardStar := GoUtil.RandMap(randList) switch CardStar { - case 5: + case 5: // 四星金 cardId = randCard(c.Round, 4, 1, newCard) - case 6: + case 6: // 五星 + cardId = randCard(c.Round, 5, 0, newCard) + case 7: // 五星金 cardId = randCard(c.Round, 5, 1, newCard) default: cardId = randCard(c.Round, CardStar, 0, newCard) From f8d4ee070c7921296053f8f94f57f9dd5eeb70f3 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 11 Aug 2025 15:52:43 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/GoUtil/mapUtil.go | 15 ++ src/server/conf/emoji/emojiCfg.go | 8 ++ .../limitedTimeEvent/LimitedTimeEventCfg.go | 9 ++ src/server/conf/playroom/playroomCfg.go | 43 ++++++ src/server/game/ChargeFunc.go | 18 ++- src/server/game/Player.go | 34 ++++- src/server/game/PlayerBaseMod.go | 4 +- src/server/game/PlayerLog.go | 94 +++++++++++++ src/server/game/RegisterNetworkFunc.go | 128 ++++++++++-------- src/server/game/mod/card/Card.go | 8 +- src/server/game/mod/item/Item.go | 1 + .../mod/limitedTimeEvent/LimitedTimeEvent.go | 7 +- src/server/game/mod/playroom/playroom.go | 28 +++- 13 files changed, 318 insertions(+), 79 deletions(-) create mode 100644 src/server/game/PlayerLog.go diff --git a/src/server/GoUtil/mapUtil.go b/src/server/GoUtil/mapUtil.go index 18998825..6025547a 100644 --- a/src/server/GoUtil/mapUtil.go +++ b/src/server/GoUtil/mapUtil.go @@ -80,3 +80,18 @@ func GetMapKey(v any) []int { } return []int{} } + +func DiffMap(a, b map[int]int) map[int]int { + diff := make(map[int]int) + for k, v := range a { + if v2, ok := b[k]; !ok || v != v2 { + diff[k] = v + } + } + for k, v := range b { + if _, ok := a[k]; !ok { + diff[k] = v + } + } + return diff +} diff --git a/src/server/conf/emoji/emojiCfg.go b/src/server/conf/emoji/emojiCfg.go index f61b092a..5bbc7308 100644 --- a/src/server/conf/emoji/emojiCfg.go +++ b/src/server/conf/emoji/emojiCfg.go @@ -39,3 +39,11 @@ func GetAllList() []int { } return ret } + +func GetEmojiName(Id int) string { + data, err := gamedata.GetDataByIntKey(CFG_EMOJI, Id) + if err != nil { + return "" + } + return gamedata.GetStringValue(data, "Name") +} diff --git a/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go b/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go index 2f0c3dfd..42a61e38 100644 --- a/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go +++ b/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go @@ -47,6 +47,15 @@ func GetLimitedTimeEventCfg() []*gamedata.LimitedTimeEventData { return nil } +func GetEventName(Id int) string { + data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT, Id) + if err != nil { + log.Debug("GetEventName err:%v", err) + return "" + } + return gamedata.GetStringValue(data, "Name") +} + // 获取流星雨加成 func GetMeteorAdd(ChessLv int) int { data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_METEOR, ChessLv) diff --git a/src/server/conf/playroom/playroomCfg.go b/src/server/conf/playroom/playroomCfg.go index ba7dd4a3..788ef430 100644 --- a/src/server/conf/playroom/playroomCfg.go +++ b/src/server/conf/playroom/playroomCfg.go @@ -431,6 +431,14 @@ func GetDressPart(Id int) int { return gamedata.GetIntValue(data, "IPart") } +func GetDressName(Id int) int { + data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_DRESS, Id) + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "Name") +} + func GetUnlockNeed(Type int) int { data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_LOCK, Type) if err != nil { @@ -439,6 +447,14 @@ func GetUnlockNeed(Type int) int { return gamedata.GetIntValue(data, "Need") } +func GetUnlockName(Type int) string { + data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_LOCK, Type) + if err != nil { + return "" + } + return gamedata.GetStringValue(data, "Name") +} + func GetDailyTask(Type int) map[int]string { data, err := gamedata.GetData(CFG_PLAYROOM_DAILYTASK) if err != nil { @@ -597,3 +613,30 @@ func GetShopItemAdNum(Id int) int { } return 0 } + +func GetDecoInfo(Id int) (int, string) { + data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_DECORATE, Id) + if err != nil { + log.Debug("GetDecoInfo err:%v", err) + return 0, "" + } + Type := gamedata.GetIntValue(data, "TypeEnum") + Name := gamedata.GetStringValue(data, "Chinese") + return Type, Name +} + +func GetDailyTaskListById(Id int) []int { + data, err := gamedata.GetData(CFG_PLAYROOM_DAILYTASK) + if err != nil { + log.Debug("GetDailyTaskListById err:%v", err) + return nil + } + Type := GetDailyTaskType(Id) + r := make([]int, 0) + for k, v := range data { + if gamedata.GetIntValue(v, "Type") == Type { + r = append(r, GoUtil.Int(k)) + } + } + return r +} diff --git a/src/server/game/ChargeFunc.go b/src/server/game/ChargeFunc.go index 085f0298..6985bd6f 100644 --- a/src/server/game/ChargeFunc.go +++ b/src/server/game/ChargeFunc.go @@ -41,6 +41,9 @@ func ActivityFire(p *Player, ChargeId int) { log.Debug("ActivityFire err : %s", err) return } + if Item == nil { + return + } err = p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String()) if err != nil { log.Debug("ChargeFire err : %s", err) @@ -54,33 +57,46 @@ func ActivityFire(p *Player, ChargeId int) { func PlayroomFire(p *Player, ChargeId int) { PlayroomMod := p.PlayMod.getPlayroomMod() Item := PlayroomMod.Fire(ChargeId) + if Item == nil { + return + } err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Playroom.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } + p.TeLog("get_assist_battery", map[string]interface{}{ + "assist_battery _type": "charge", + }) p.PlayMod.save() } func PiggyBankFire(p *Player, ChargeId int) { PiggyBankMod := p.PlayMod.getPiggyBankMod() Item := PiggyBankMod.Fire(ChargeId) + if Item == nil { + return + } err := p.HandleItem(Item, msg.ITEM_POP_LABEL_PiggyBank.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } LimitedTimePiggyBankTrigger(p) - p.PlayMod.save() p.TeLog("piggy_bank_open", map[string]interface{}{ "piggy_bank_type": piggyBank.PIGGY_BANK_TYPE_CHARGE, "item_list": Item, "open_cost": ChargeId, }) + p.PlayMod.save() + } // 处理玩家充值 func ChargeFire(p *Player, ChargeId int) { ChargeMod := p.PlayMod.getChargeMod() Item := ChargeMod.Fire(ChargeId) + if Item == nil { + return + } err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Charge.String()) if err != nil { log.Debug("ChargeFire err : %s", err) diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 461672e1..8abf1ec6 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -14,6 +14,7 @@ import ( cardCfg "server/conf/card" guesscolorCfg "server/conf/guessColor" itemCfg "server/conf/item" + limitedTimeEventCfg "server/conf/limitedTimeEvent" mergeDataCfg "server/conf/mergeData" miningCfg "server/conf/mining" "server/db" @@ -612,7 +613,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { // 触发订单事件 生成超级订单 卡牌节 LimitedTimeEventTrigger(p, EffectList[0]) p.TeLog("time_limited_event_enable", map[string]interface{}{ - "event_type": EffectList[0], + "event_type": limitedTimeEventCfg.GetEventName(EffectList[0]), "enable_type": Label, }) case item.ITEM_TYPE_PIGGY_BANK: // 猪猪银行 @@ -622,8 +623,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { LimitedTimePiggyBankTrigger(p) p.PushClientRes(PiggyBankMod.BackData()) p.TeLog("piggy_bank_income", map[string]interface{}{ - "piggy_bank_id": Effect, - "income_from": Label, + "piggy_bank_type": Effect, + "income_from": Label, }) case item.ITEM_TYPE_AVATAR: // 头像框 Effect := itemCfg.GetItemEffectList(v.Id) @@ -632,6 +633,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { "avatar_id": Effect[0], "income_from": Label, }) + p.PlayerDecoLog("avatar", Effect[0], Label) BackDataType[item.ITEM_TYPE_AVATAR] = struct{}{} case item.ITEM_TYPE_EMOJI: // 表情 Effect := itemCfg.GetItemEffectList(v.Id) @@ -640,6 +642,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { "emoji_id": Effect[0], "income_from": Label, }) + p.PlayerDecoLog("emoji", Effect[0], Label) BackDataType[item.ITEM_TYPE_EMOJI] = struct{}{} case item.ITEM_TYPE_FACE: // 头像 Effect := itemCfg.GetItemEffectList(v.Id) @@ -648,6 +651,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { "face_id": Effect[0], "income_from": Label, }) + p.PlayerDecoLog("face", Effect[0], Label) BackDataType[item.ITEM_TYPE_FACE] = struct{}{} case item.ITEM_TYPE_ACTIVITY_RACE: // 活动竞速 ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_RACE) @@ -669,11 +673,24 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod.AddCollect(Effect) BackDataType[item.ITEM_TYPE_PLAYROOM_DECORATION] = struct{}{} + Type, Name := playroomCfg.GetDecoInfo(Effect) + p.TeLog("room_deco_get", map[string]interface{}{ + "room_deco_type": Type, + "room_deco_name": Name, + "room_deco_get_type": Label, + }) case item.ITEM_TYPE_PLAYROOM_DRESS: // playroom服饰 Effect := itemCfg.GetItemEffect(v.Id) PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod.AddDress(Effect) BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS] = struct{}{} + Type := playroomCfg.GetDressPart(Effect) + Name := playroomCfg.GetDressName(Effect) + p.TeLog("pet_deco_get", map[string]interface{}{ + "pet_deco_type": Type, + "pet_deco_name": Name, + "pet_deco_get_type": Label, + }) case item.ITEM_TYPE_PLAYROOM_DECORATION_SET: // playroom装饰套装 Effect := itemCfg.GetItemEffectList(v.Id) PlayroomMod := p.PlayMod.getPlayroomMod() @@ -682,12 +699,15 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { continue } PlayroomMod.AddCollect(v) + Type, Name := playroomCfg.GetDecoInfo(v) + p.TeLog("room_deco_get", map[string]interface{}{ + "room_deco_type": Type, + "room_deco_name": Name, + "room_deco_get_type": Label, + }) } BackDataType[item.ITEM_TYPE_PLAYROOM_DECORATION_SET] = struct{}{} - p.TeLog("playroom_decoration_set", map[string]interface{}{ - "decoration_set_id": Effect, - "income_from": Label, - }) + default: err := ItemMod.AddItem(v.Id, v.Num) p.TeLog("asset_change", map[string]interface{}{ diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index f616e136..1ec53b17 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -236,7 +236,7 @@ func (p *PlayerBaseData) ReqBindFacebookAccount(player *Player, buf []byte) { p.Data.FaceBookId = req.BindAccountId res.BindAccountId = req.BindAccountId player.TeLog("platform_connect", map[string]interface{}{ - "platform_type": "facebook", + "platform_type": "Facebook", "platform_id": req.BindAccountId, "is_reward": false, }) @@ -313,7 +313,7 @@ func (p *PlayerBaseData) ReqOnlyBindFacebook(player *Player, buf []byte) { p.Data.FaceBookId = req.BindAccountId res.BindAccountId = req.BindAccountId player.TeLog("platform_connect", map[string]interface{}{ - "platform_type": "facebook", + "platform_type": "Facebook", "platform_id": req.BindAccountId, "is_reward": false, }) diff --git a/src/server/game/PlayerLog.go b/src/server/game/PlayerLog.go new file mode 100644 index 00000000..f666249e --- /dev/null +++ b/src/server/game/PlayerLog.go @@ -0,0 +1,94 @@ +package game + +import ( + itemCfg "server/conf/item" + playroomCfg "server/conf/playroom" + "server/game/mod/item" +) + +func (p *Player) PlayerDecoLog(Type string, Id int, Label string) { + p.TeLog("playerdeco_income", map[string]interface{}{ + "playerdeco_type": Type, + "playerdeco_id": Id, + "income_from": Label, + }) +} + +func (p *Player) PlayerDecoSetLog(Type string, Id int, Set string) { + p.TeLog("playerdeco_set", map[string]interface{}{ + "playerdeco_type": Type, + "playerdeco_id": Id, + "set_function": Set, + }) +} + +func (p *Player) PetItemGetLog(Item []*item.Item, Cost []*item.Item, Label string) { + CostType := "" + CostNum := 0 + if len(Cost) > 0 { + switch Cost[0].Id { + case item.ITEM_TYPE_DIAMOND: + CostType = "diamond" + case item.ITEM_STAR_ID: + CostType = "star" + case 0: + CostType = "ad" + default: + CostType = "unknown" + } + CostNum = Cost[0].Num + } + for _, v := range Item { + Type := itemCfg.GetItemType(v.Id) + if Type == item.ITEM_TYPE_PLAYROOM_PET { + Name, _ := itemCfg.GetItemName(v.Id) + Effect := itemCfg.GetItemEffect(v.Id) + p.PetItemGetLog_(Effect, Name, Label, CostType, CostNum) + } + } +} + +func (p *Player) PetItemGetLog_(Type int, Name string, Label string, CostType string, CostNum int) { + p.TeLog("pet_item_get", map[string]interface{}{ + "pet_item_type": Type, + "pet_item_name": Name, + "pet_item_get_type": Label, + "pet_item_cost_type": CostType, + "pet_item_cost": CostNum, + }) +} + +func (p *Player) PetItemUseLog(Item []*item.Item) { + for _, v := range Item { + Type := itemCfg.GetItemType(v.Id) + if Type == item.ITEM_TYPE_PLAYROOM_PET { + Name, _ := itemCfg.GetItemName(v.Id) + Effect := itemCfg.GetItemEffect(v.Id) + p.TeLog("pet_item_use", map[string]interface{}{ + "pet_item_type": Effect, + "pet_item_name": Name, + }) + } + } +} + +func (p *Player) RoomDecoSetLog(Diff map[int]int) { + for _, v := range Diff { + Type, Name := playroomCfg.GetDecoInfo(v) + p.TeLog("room_deco_set", map[string]interface{}{ + "room_deco_type": Type, + "room_deco_name": Name, + }) + } +} + +func (p *Player) PetDecoSetLog(Diff map[int]int) { + for _, v := range Diff { + Type := playroomCfg.GetDressPart(v) + Name := playroomCfg.GetDressName(v) + p.TeLog("pet_deco_set", map[string]interface{}{ + "pet_deco_type": Type, + "pet_deco_name": Name, + }) + } +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index ac002716..6b3737ca 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -9,7 +9,9 @@ import ( cardCfg "server/conf/card" collectCfg "server/conf/collect" decorateCfg "server/conf/decorate" + emojiCfg "server/conf/emoji" handbookCfg "server/conf/handbook" + limitedTimeEventCfg "server/conf/limitedTimeEvent" mergeDataCfg "server/conf/mergeData" miningCfg "server/conf/mining" playroomCfg "server/conf/playroom" @@ -213,9 +215,9 @@ func RegHandbookAllReward(player *Player, buf []byte) error { Type: req.Type, }, }) - player.TeLog("collection_all_reward", map[string]interface{}{ - "type": req.Type, - "item_list": Items, + player.TeLog("collection_like", map[string]interface{}{ + "collection_type": req.Type, + "collection_reward": Items, }) player.PushClientRes(player.PlayMod.getHandbookMod().BackData()) player.PlayMod.save() @@ -260,7 +262,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { AddItem := LimitedTimeEventMod.GetMeteorReward(mergeList) if len(AddItem) > 0 { player.TeLog("time_limited_event_action", map[string]interface{}{ - "event_type": "meteor_show", + "event_type": limitedTimeEventCfg.GetEventName(limitedTimeEvent.EVENT_TYPE_METEOR_SHOW), "item_list": AddItem, }) } @@ -271,7 +273,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { AddItem := LimitedTimeEventMod.GetMoneyCatReward(mergeList) if len(AddItem) > 0 { player.TeLog("time_limited_event_action", map[string]interface{}{ - "event_type": "money_cat", + "event_type": limitedTimeEventCfg.GetEventName(limitedTimeEvent.EVENT_TYPE_MONEY_CAT), "item_list": AddItem, }) } @@ -322,7 +324,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { Id: 0, }) player.TeLog("time_limited_event_action", map[string]interface{}{ - "event_type": "chest_rain", + "event_type": limitedTimeEventCfg.GetEventName(limitedTimeEvent.EVENT_TYPE_CHEST_RAIN), "item_list": ChestRainItems, }) } @@ -345,6 +347,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { "order_type": OrderType, "order_star_reward": Star, }) + player.PetItemGetLog(Item, nil, "Order") EmitRetireTrigger2(player) Lv := player.GetPlayerBaseMod().GetLevel() EnergyMul := player.PlayMod.getBaseMod().GetEnergyMul() @@ -463,7 +466,7 @@ func ReqDecorate(player *Player, buf []byte) error { }) } player.TeLog("finish_deco", map[string]interface{}{ - "deco_step_id": DecorateId, + "deco_step_id": fmt.Sprintf("%d_%d", AreaId, DecorateId), }) player.PlayMod.save() @@ -482,6 +485,7 @@ func ReqDecorateAll(player *Player, buf []byte) error { req := &msg.ReqDecorateAll{} proto.Unmarshal(buf, req) DecorateMod := player.PlayMod.getDecorateMod() + AreaId := DecorateMod.GetAreaId() UnLockLv := decorateCfg.GetOneKeyDecorateUnlockLv() if player.GetPlayerBaseMod().GetLevel() < UnLockLv { player.SendErrClienRes(&msg.ResDecorateAll{ @@ -519,16 +523,18 @@ func ReqDecorateAll(player *Player, buf []byte) error { }) return err } - + deco_step_id := []string{} + for _, v := range DecorateList { + deco_step_id = append(deco_step_id, fmt.Sprintf("%d_%d", AreaId, v)) + } player.TeLog("one_click_decoration", map[string]interface{}{ - "deco_step_id": DecorateList, + "deco_step_id": fmt.Sprintf("%v", deco_step_id), }) if len(Log) > 0 { for _, v := range Log { player.TeLog("scene_reward", v.(map[string]interface{})) } - } player.PlayMod.save() @@ -1033,7 +1039,7 @@ func ReqExStarReward(player *Player, buf []byte) error { req := &msg.ReqExStarReward{} proto.Unmarshal(buf, req) CardMod := player.PlayMod.getCardMod() - itemList, err := CardMod.ExStarReward(int(req.Id)) + itemList, CostStar, err := CardMod.ExStarReward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResExStarReward{ Code: msg.RES_CODE_FAIL, @@ -1050,9 +1056,10 @@ func ReqExStarReward(player *Player, buf []byte) error { }) return err } - player.TeLog("ReqExStarReward", map[string]interface{}{ - "ex_star_id": int(req.Id), - "item_list": itemList, + player.TeLog("sticker_exchange", map[string]interface{}{ + // "pack_id": int(req.Id), + "sticker_cost": CostStar, + "item_list": itemList, }) player.PlayMod.save() player.PushClientRes(&msg.ResExStarReward{ @@ -1247,6 +1254,7 @@ func ReqSetAvatar(player *Player, buf []byte) error { "avatar_id": req.Avatar, "is_platform": b, }) + player.PlayerDecoSetLog("avatar", int(req.Avatar), "") return nil } @@ -1270,6 +1278,7 @@ func ReqSetFace(player *Player, buf []byte) error { player.TeLog("face_set", map[string]interface{}{ "face_id": int(req.Face), }) + player.PlayerDecoSetLog("face", int(req.Face), "") BackUserInfo(player) player.UpdateUserInfo() return nil @@ -1880,6 +1889,7 @@ func ReqCardSend(player *Player, buf []byte) error { "card_id": CardId, "player_id_target": int(req.Uid), }) + player.PlayerDecoSetLog("emoji", int(req.Emoji), "card_send") player.PushClientRes(CardMod.NotifyCard()) player.PlayMod.save() player.PushClientRes(CardMod.NotifyTimes()) @@ -2352,7 +2362,7 @@ func ReqBuyChessShop(player *Player, buf []byte) error { "item_id": int(req.Id), "change_num": 1, "cost_type": "diamond", - "cost_num": Item[0].Num, + "cost_num": LostItem[0].Num, }) player.PlayMod.save() player.PushClientRes(ChargeMod.BackData()) @@ -2360,7 +2370,7 @@ func ReqBuyChessShop(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, }) player.TeLog("buy_product_diamond", map[string]interface{}{ - "diamond_cost": Item[0].Num, + "diamond_cost": LostItem[0].Num, "product_id": int(req.Id), "product_name": mergeDataCfg.GetNameById(int(req.Id)), }) @@ -2951,7 +2961,7 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error { proto.Unmarshal(buf, req) LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() BaseMod := player.PlayMod.getBaseMod() - Items, slot_reward, slot_order_number, err := LimitedTimeEventMod.SelectProgressReward(int(req.Id), BaseMod.GetLevel(), BaseMod.GetEnergy()) + Items, EventName, slot_order_number, err := LimitedTimeEventMod.SelectProgressReward(int(req.Id), BaseMod.GetLevel(), BaseMod.GetEnergy()) if err != nil { player.SendErrClienRes(&msg.ResSelectLimitEvent{ Code: msg.RES_CODE_FAIL, @@ -2969,8 +2979,8 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error { } player.TeLog("time_limited_slot", map[string]interface{}{ "slot_order_number": slot_order_number, - "slot_reward_list": slot_reward, - "slot_reward": slot_reward[int(req.Id)], + "slot_reward_list": EventName, + "slot_reward": EventName, }) player.PlayMod.save() player.PushClientRes(LimitedTimeEventMod.BackData()) @@ -3328,7 +3338,7 @@ func ReqPlayroomSetRoom(player *Player, buf []byte) error { req := &msg.ReqPlayroomSetRoom{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() - err := PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom)) + Diff, err := PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomSetRoom{ Code: msg.RES_CODE_FAIL, @@ -3338,6 +3348,7 @@ func ReqPlayroomSetRoom(player *Player, buf []byte) error { } player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_ROOMDEC}) player.PlayMod.save() + player.RoomDecoSetLog(Diff) player.PushClientRes(&msg.ResPlayroomSetRoom{ Code: msg.RES_CODE_SUCCESS, }) @@ -3385,12 +3396,12 @@ func ReqPlayroomGame(player *Player, buf []byte) error { Num: int32(v.Num), } } - player.TeLog("playroom_game", map[string]interface{}{ - "game_id": PlayroomMod.GetGameId(), - "emoji_id": req.EmojiId, - "game_type": req.Type, - "reward": Items, + player.TeLog("finish_mini_game", map[string]interface{}{ + "mini_game_type": PlayroomMod.GetGameId(), + "is_chip": false, + "item_list": Items, }) + player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_game") player.PushClientRes(&msg.ResPlayroomGame{ Code: msg.RES_CODE_SUCCESS, Type: req.Type, @@ -3436,13 +3447,12 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error { G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1) PlayroomMod.ResetGame() player.PlayMod.save() - player.TeLog("playroom_select_reward", map[string]interface{}{ - "reward_id": req.Id, - "emoji_id": req.EmojiId, - "game_id": PlayroomMod.GetGameId(), - "reward": Items, - "target_id": Target, + player.TeLog("finish_mini_game", map[string]interface{}{ + "mini_game_type": PlayroomMod.GetGameId(), + "is_chip": true, + "item_list": Items, }) + player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_select_reward") PlayroomBackData(player) PlayroomVisit(player, PlayroomMod.GetTarget()) player.PushClientRes(&msg.ResPlayroomSelectReward{ @@ -3486,8 +3496,8 @@ func ReqPlayroomWork(player *Player, buf []byte) error { return err } player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETWORK}) - player.TeLog("playroom_work", map[string]interface{}{ - "work_item": Items, + player.TeLog("pet_assist_active", map[string]interface{}{ + "assist_time_left": PlayroomMod.Endtime - GoUtil.Now(), }) player.PlayMod.save() player.PushClientRes(PlayroomMod.NotifyWork()) @@ -3505,6 +3515,7 @@ func ReqPlayroomRest(player *Player, buf []byte) error { player.PlayMod.save() player.TeLog("playroom_rest", map[string]interface{}{}) player.PushClientRes(PlayroomMod.NotifyWork()) + player.TeLog("pet_assist_callback", map[string]interface{}{}) return nil } @@ -3563,9 +3574,8 @@ func ReqPlayroomChip(player *Player, buf []byte) error { }) return err } - player.TeLog("playroom_chip", map[string]interface{}{ - "chip_num": ChipNum, - "uid": req.Uid, + player.TeLog("remove_chip", map[string]interface{}{ + "remove_chip_number": ChipNum, }) G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_CHIP_SET, len(PlayroomMod.ChipList)) @@ -3642,12 +3652,12 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { Emoji: int(req.EmojiId), }, }) - player.TeLog("playroom_flip_reward", map[string]interface{}{ - "reward": Items, - "target_id": Target, - "emoji_id": req.EmojiId, - "game_id": playroom.GAME_TYPE_FILP, + player.TeLog("finish_mini_game", map[string]interface{}{ + "mini_game_type": PlayroomMod.GetGameId(), + "is_chip": false, + "item_list": Items, }) + player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_flip_reward") player.PlayMod.save() PlayroomBackData(player) player.PushClientRes(&msg.ResPlayroomFlipReward{ @@ -3729,8 +3739,8 @@ func ReqPlayroomUpvote(player *Player, buf []byte) error { }) G_GameLogicPtr.SetUserData(int(req.Id), VAR_OP_UPVOTE, 1) G_GameLogicPtr.SetUserData(int(req.Id), VAR_OP_KISS, 1) - player.TeLog("playroom_upvote", map[string]interface{}{ - "player_id": req.Id, + player.TeLog("visit_like", map[string]interface{}{ + "user_id": req.Id, }) player.PlayMod.save() player.PushClientRes(&msg.ResPlayroomUpvote{ @@ -3751,8 +3761,8 @@ func ReqPlayroomUnlock(player *Player, buf []byte) error { }) return err } - player.TeLog("playroom_unlock", map[string]interface{}{ - "unlock_id": req.Id, + player.TeLog("room_unlcok", map[string]interface{}{ + "room_type": playroomCfg.GetUnlockName(int(req.Id)), }) player.PlayMod.save() player.PushClientRes(&msg.ResPlayroomUnlock{ @@ -3783,9 +3793,9 @@ func ReqPlayroomTask(player *Player, buf []byte) error { }) return err } - player.TeLog("playroom_task", map[string]interface{}{ - "task_id": req.Id, - "reward": Items, + player.TeLog("room_daily_task", map[string]interface{}{ + "task_id": req.Id, + "is_reward": PlayroomMod.DailyTaskCanReward(int(req.Id)), }) player.PlayMod.save() player.PushClientRes(&msg.ResPlayroomTask{ @@ -3956,6 +3966,7 @@ func ReqPlayroomShop(player *Player, buf []byte) error { "num": req.Num, "reward": AddItems, }) + player.PetItemGetLog(AddItems, LoseItem, "Shop") player.PlayMod.save() player.PushClientRes(PlayroomMod.NotifyMood()) player.PushClientRes(&msg.ResPlayroomShop{ @@ -4145,9 +4156,10 @@ func ReqSetEmoji(player *Player, buf []byte) error { }) return err } - player.TeLog("set_emoji", map[string]interface{}{ - "Id": int(req.Id), - "Type": int(req.Type), + player.TeLog("playerdeco_emoji_set", map[string]interface{}{ + "emoji_name": emojiCfg.GetEmojiName(int(req.Id)), + "emoji_id": int(req.Id), + "emoji_setplace": int(req.Type), }) player.PlayMod.save() player.PushClientRes(&msg.ResSetEmoji{ @@ -4171,12 +4183,16 @@ func ReqCollect(player *Player, buf []byte) error { CollectMod := player.PlayMod.getCollectMod() Type := collectCfg.GetRewardType(int(req.Id)) Num := 0 + AreaType := "" switch Type { case collect.COLLECT_TYPE_EMOJI: + AreaType = "emoji" Num = player.PlayMod.getEmojiMod().GetEmojiNum() case collect.COLLECT_TYPE_FACE: + AreaType = "face" Num = player.PlayMod.getFaceMod().GetFaceNum() case collect.COLLECT_TYPE_AVATAR: + AreaType = "avatar" Num = player.PlayMod.getAvatarMod().GetAvatarNum() } Items, err := CollectMod.GetReward(int(req.Id), Num) @@ -4200,9 +4216,10 @@ func ReqCollect(player *Player, buf []byte) error { player.PushClientRes(&msg.ResCollect{ Code: msg.RES_CODE_SUCCESS, }) - player.TeLog("collect", map[string]interface{}{ - "Id": int(req.Id), - "Items": Items, + player.TeLog("playerdeco_warehouse_unlock", map[string]interface{}{ + "area_type": AreaType, + "Id": int(req.Id), + "Items": Items, }) return nil } @@ -4229,7 +4246,7 @@ func ReqPlayroomDressSet(player *Player, buf []byte) error { req := &msg.ReqPlayroomDressSet{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() - Parts, error := PlayroomMod.PlayroomDressSet(GoUtil.MapInt32ToInt(req.DressSet)) + Parts, Diff, error := PlayroomMod.PlayroomDressSet(GoUtil.MapInt32ToInt(req.DressSet)) if error != nil { player.SendErrClienRes(&msg.ResPlayroomDressSet{ Code: msg.RES_CODE_FAIL, @@ -4239,6 +4256,7 @@ func ReqPlayroomDressSet(player *Player, buf []byte) error { } player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETDRESS, A: []interface{}{Parts}}) player.PlayMod.save() + player.PetDecoSetLog(Diff) PlayroomBackData(player) player.PushClientRes(&msg.ResPlayroomDressSet{ Code: msg.RES_CODE_SUCCESS, diff --git a/src/server/game/mod/card/Card.go b/src/server/game/mod/card/Card.go index f2514a7a..a83d3ff8 100644 --- a/src/server/game/mod/card/Card.go +++ b/src/server/game/mod/card/Card.go @@ -280,17 +280,17 @@ func (c *CardMod) GetCollectReward(Id int) ([]*item.Item, int, error) { } // 兑换星星奖励 -func (c *CardMod) ExStarReward(Id int) ([]*item.Item, error) { +func (c *CardMod) ExStarReward(Id int) ([]*item.Item, int, error) { if c.ExchangeStar < Id { - return nil, fmt.Errorf("ExStarReward star not enough") + return nil, 0, fmt.Errorf("ExStarReward star not enough") } CostStar, itemList := cardCfg.GetExchangeCfg(Id) if c.ExchangeStar < CostStar { - return nil, fmt.Errorf("ExStarReward star not enough") + return nil, 0, fmt.Errorf("ExStarReward star not enough") } c.ExchangeStar -= CostStar c.Cache.ExStar -= CostStar - return itemList, nil + return itemList, CostStar, nil } // 领取全收集奖励 diff --git a/src/server/game/mod/item/Item.go b/src/server/game/mod/item/Item.go index 6e0f4f82..b79a2763 100644 --- a/src/server/game/mod/item/Item.go +++ b/src/server/game/mod/item/Item.go @@ -30,6 +30,7 @@ const ( ITEM_TYPE_DIAMOND = 3 // 物品类型 + ITEM_TYPE_PLAYROOM_PET = 97 // 宠物道具 ITEM_TYPE_CARD = 98 // 卡牌 ITEM_TYPE_BAG = 99 // 背包 ITEM_TYPE_CHESS = 100 // 棋子 diff --git a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go index dbab3014..7094ae48 100644 --- a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go +++ b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go @@ -350,12 +350,11 @@ func (l *LimitedTimeEventMod) AddProgress(Lv int) { } // 选择进度奖励 -func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item.Item, map[int]int, int, error) { +func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item.Item, int, int, error) { RewardId, ok := l.ProgressReward[Id] if !ok { - return nil, nil, 0, fmt.Errorf("RewardId not exist") + return nil, 0, 0, fmt.Errorf("RewardId not exist") } - r1 := l.ProgressReward r2 := l.ProgressMax Item := limitedTimeEventCfg.GetProgressReward(RewardId) l.LastSelect = RewardId @@ -390,7 +389,7 @@ func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item. } l.LastOption = r l.FirstReward = true - return Item, r1, r2, nil + return Item, limitedTimeEventCfg.GetProgressRewardType(RewardId), r2, nil } func (l *LimitedTimeEventMod) RemoveSuperOrder() bool { diff --git a/src/server/game/mod/playroom/playroom.go b/src/server/game/mod/playroom/playroom.go index 7cc50b54..341e4e57 100644 --- a/src/server/game/mod/playroom/playroom.go +++ b/src/server/game/mod/playroom/playroom.go @@ -269,6 +269,20 @@ func (p *PlayroomMod) QuestTrigger(Tr *quest.Trigger) bool { return update } +func (p *PlayroomMod) DailyTaskCanReward(Id int) bool { + IdList := playroomCfg.GetDailyTaskListById(Id) + for _, v := range IdList { + v, ok := p.DailyTask[v] + if !ok { + return false + } + if v.Status != quest.QUEST_STATUS_FINISH { + return false + } + } + return true +} + func (p *PlayroomMod) GetDailyTaskReward(Id int) ([]*item.Item, error) { v, ok := p.DailyTask[Id] if !ok { @@ -459,9 +473,10 @@ func (p *PlayroomMod) AddVisitor(Id int, Time int64) { v.Time = Time } -func (p *PlayroomMod) SetRoom(Room map[int]int) error { +func (p *PlayroomMod) SetRoom(Room map[int]int) (map[int]int, error) { + diff := GoUtil.DiffMap(p.Room, Room) p.Room = Room - return nil + return diff, nil } func (p *PlayroomMod) AddCollect(Id int) { @@ -812,26 +827,27 @@ func (p *PlayroomMod) UnlockPetAir(Id int) { p.PetAir = append(p.PetAir, Id) } -func (p *PlayroomMod) PlayroomDressSet(DressSet map[int]int) ([]int, error) { +func (p *PlayroomMod) PlayroomDressSet(DressSet map[int]int) ([]int, map[int]int, error) { // 判断服装是否存在 Part := make([]int, 0) + Diff := GoUtil.DiffMap(DressSet, p.DressSet) for Type, Id := range DressSet { dresses, ok := p.Dress[Type] if Id == 0 { continue } if !ok { - return nil, fmt.Errorf("dress type not found") + return nil, nil, fmt.Errorf("dress type not found") } if !GoUtil.InArray(Id, dresses) { - return nil, fmt.Errorf("dress not found") + return nil, nil, fmt.Errorf("dress not found") } if p.DressSet[Type] == 0 && Id != 0 { Part = append(Part, Type) } } p.DressSet = DressSet - return Part, nil + return Part, Diff, nil } func (p *PlayroomMod) GiveUpvote(Uid int) ([]*item.Item, error) { From 6679f1638bee56cfce2c3430a6938811d6d326df Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 11 Aug 2025 15:55:07 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Player.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 8abf1ec6..08b9bf6c 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -17,6 +17,7 @@ import ( limitedTimeEventCfg "server/conf/limitedTimeEvent" mergeDataCfg "server/conf/mergeData" miningCfg "server/conf/mining" + playroomCfg "server/conf/playroom" "server/db" "server/game/mod/activity" "server/game/mod/item"