From 0ac249ad3044e171e6dabe33cbc332df0d4601a2 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 26 Nov 2025 17:14:02 +0800 Subject: [PATCH 01/49] =?UTF-8?q?=E7=8C=AB=E5=92=AA=E9=97=AA=E4=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/ChargeFunc.go | 4 +- src/server/game/Gm.go | 2 +- src/server/game/LimitedTimeTrigger.go | 9 ++ src/server/game/Player.go | 30 +++- src/server/game/PlayerBack.go | 69 ++++++++- src/server/game/PlayerBaseMod.go | 2 +- src/server/game/PlayerFunc.go | 11 +- src/server/game/RegisterNetworkFunc.go | 19 ++- src/server/game/mod/charge/Charge.go | 137 ++++++++++-------- .../mod/limitedTimeEvent/LimitedTimeEvent.go | 11 ++ src/server/game/mod/playroom/playroom.go | 5 +- 11 files changed, 212 insertions(+), 87 deletions(-) diff --git a/src/server/game/ChargeFunc.go b/src/server/game/ChargeFunc.go index fff89eb1..4b6cd5e3 100644 --- a/src/server/game/ChargeFunc.go +++ b/src/server/game/ChargeFunc.go @@ -47,7 +47,7 @@ func ADPetWorkFire(p *Player, ChargeId int) { } } p.PlayMod.save() - p.PushClientRes(ChargeMod.BackData()) + p.ChargeBackData() } func ActivityFire(p *Player, ChargeId int) { @@ -154,7 +154,7 @@ func ChargeFire(p *Player, ChargeId int) { log.Debug("ChargeFire err : %s", err) } p.PlayMod.save() - p.PushClientRes(ChargeMod.BackData()) + p.ChargeBackData() } func ChargeItem(p *Player, ChargeId int) []*item.Item { diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index 13cd3314..2e8cd6d7 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -540,7 +540,7 @@ func ReqGmCommand_(player *Player, Command string) error { case "resetWeekly": ChargeMod := player.PlayMod.getChargeMod() ChargeMod.WeeklyDiscount = make(map[int]int) - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.WeeklyDiscount = make(map[int]int) PlayroomBackData(player) diff --git a/src/server/game/LimitedTimeTrigger.go b/src/server/game/LimitedTimeTrigger.go index 52c2bd27..1e853efe 100644 --- a/src/server/game/LimitedTimeTrigger.go +++ b/src/server/game/LimitedTimeTrigger.go @@ -76,6 +76,15 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) { p.PushClientRes(p.PlayMod.getOrderMod().BackData()) case limitedTimeEvent.EVENT_TYPE_CARD_FESTIVAL: p.PlayMod.getCardMod().CreateCardFestival() + case limitedTimeEvent.EVENT_TYPE_CAT_DAY_SALE: // 猫咪大甩卖 + ChargeMod := p.PlayMod.getChargeMod() + PlayroomMod := p.PlayMod.getPlayroomMod() + if !ChargeMod.IsWeeklyDiscountDay() { + ChargeMod.ResetWeeklyDiscount() + PlayroomMod.ResetWeeklyDiscount() + } + + p.ChargeBackData() } } p.PushClientRes(p.PlayMod.getLimitedTimeEventMod().BackData()) diff --git a/src/server/game/Player.go b/src/server/game/Player.go index ecaa0654..4084d709 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -327,7 +327,7 @@ func (p *Player) ZeroUpdate(a []interface{}) { ChessMod := p.PlayMod.getChessMod() ChargeMod := p.PlayMod.getChargeMod() ChargeMod.ZeroUpdate(ChessMod.GetEmitList()) - p.PushClientRes(p.PlayMod.getChargeMod().BackData()) + p.ChargeBackData() // 无尽礼包 p.PlayMod.getEndlessMod().ZeroUpdate(p.PlayMod.getChargeMod().GetMaxCharge(), p.PlayMod.getBaseMod().GetLevel()) @@ -344,6 +344,9 @@ func (p *Player) ZeroUpdate(a []interface{}) { // playroom PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod.ZeroUpdate() + if ChargeMod.IsWeeklyDiscountDay() { + PlayroomMod.ResetWeeklyDiscount() + } PlayroomBackData(p) p.PlayMod.getChampshipMod().ZeroUpdate() p.initAcitivity() @@ -375,7 +378,7 @@ func (p *Player) NoonUpdate(a []interface{}) { ChessMod := p.PlayMod.getChessMod() // 礼包充值 p.PlayMod.getChargeMod().NoonUpdate(ChessMod.GetEmitList()) - p.PushClientRes(p.PlayMod.getChargeMod().BackData()) + p.ChargeBackData() p.PlayMod.save() } @@ -414,17 +417,30 @@ func (p *Player) Login() { ChargeMod.WeeklyEndTime = WeeklyEndTime } if WeeklyStartTime > now { - go func() { - time.Sleep(time.Duration(WeeklyStartTime-now) * time.Second) + p.CallEvent(time.Duration(WeeklyStartTime-now)*time.Second, func() { ChargeMod.WeeklyEndTime = WeeklyEndTime - p.PushClientRes(ChargeMod.BackData()) + ChargeMod.ResetWeeklyDiscount() + PlayroomMod := p.PlayMod.getPlayroomMod() + PlayroomMod.ResetWeeklyDiscount() + p.ChargeBackData() PlayroomBackData(p) - }() + }, "WeeklyDiscountStart") + } + if WeeklyEndTime > now { + p.CallEvent(time.Duration(WeeklyEndTime-now)*time.Second, func() { + ChargeMod.WeeklyEndTime = 0 + p.ChargeBackData() + PlayroomBackData(p) + LimitEventMod := p.PlayMod.getLimitedTimeEventMod() + LimitEventMod.EndCatDaySale() + p.PushClientRes(LimitEventMod.BackData()) + }, "WeeklyDiscountEnd") } if Duration > 604800 { FriendMod := p.PlayMod.getFriendMod() FriendMod.AddActLog(friend.ACT_LOG_TYPE_LOST_USER_RETURN, "") } + } func (p *Player) Outline() { @@ -879,7 +895,6 @@ func (p *Player) LoginBackData() { p.PushClientRes(p.PlayMod.mod_list.DailyTask.BackData()) p.PushClientRes(p.PlayMod.mod_list.SevenLogin.BackData()) p.PushClientRes(p.PlayMod.mod_list.LimitedTimeEvent.ProgressBackData()) - p.PushClientRes(p.PlayMod.mod_list.Charge.BackData()) p.PushClientRes(p.PlayMod.mod_list.Charge.PetWorkBackData()) p.PushClientRes(p.PlayMod.mod_list.Endless.BackData()) p.PushClientRes(p.PlayMod.mod_list.PiggyBank.BackData()) @@ -890,6 +905,7 @@ func (p *Player) LoginBackData() { p.PushClientRes(p.PlayMod.mod_list.Friend.BubbleBackData()) p.PushClientRes(p.PlayMod.mod_list.Guide.BackData()) p.BackDataActivity() + p.ChargeBackData() BackChampship(p) BackUserInfo(p) } diff --git a/src/server/game/PlayerBack.go b/src/server/game/PlayerBack.go index d38c795c..cdcafad7 100644 --- a/src/server/game/PlayerBack.go +++ b/src/server/game/PlayerBack.go @@ -2,8 +2,10 @@ package game import ( "server/GoUtil" + chargeCfg "server/conf/charge" playroomCfg "server/conf/playroom" "server/game/mod/item" + "server/game/mod/limitedTimeEvent" proto "server/msg" ) @@ -125,7 +127,9 @@ func PlayroomBackData(p *Player) { } weeklyDiscount := make(map[int32]*proto.WeeklyDiscountInfo) ChargeMod := p.PlayMod.getChargeMod() - if ChargeMod.IsWeeklyDiscountDay() { + LimitedEventMod := p.PlayMod.getLimitedTimeEventMod() + // 优惠日开启或者猫咪闪促开启 + if ChargeMod.IsWeeklyDiscountDay() || LimitedEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CAT_DAY_SALE) { w1 := playroomCfg.GetShopWeeklyLimit() for k, v := range w1 { limitNum := PlayroomMod.WeeklyDiscount[k] @@ -196,7 +200,6 @@ func PlayroomVisit(p *Player, Uid int) { r.Chip = int32(data.Chip) r.Kiss = int32(data.Kiss) r.DressSet = GoUtil.MapIntToInt32(PlayerData.DressSet) - p.PushClientRes(r) } @@ -229,3 +232,65 @@ func BackUserInfo(p *Player) { AddCode: BaseMod.AddCode, }) } + +func (p *Player) ChargeBackData() { + c := p.PlayMod.getChargeMod() + LimitedEvnetMod := p.PlayMod.getLimitedTimeEventMod() + SpecialShop := make(map[int32]*proto.ResSpecialShop) + ChessShop := make(map[int32]*proto.ResChessShop) + for k, v := range c.SpecialShop { + SpecialShop[int32(k)] = &proto.ResSpecialShop{ + Grade: int32(v.Grade), + Count: int32(v.Count), + } + } + + for k, v := range c.ChessShop { + ChessShop[int32(k)] = &proto.ResChessShop{ + Diamond: int32(v.Diamond), + Count: int32(v.Count), + ChessId: int32(v.Id), + } + } + resWish := &proto.WishList{} + if c.WishList != nil { + resWish = &proto.WishList{ + Id: int32(c.WishList.ItemId), + Count: int32(c.WishList.Count), + Uid: c.WishList.SendList, + } + } + WeeklyDiscount := make(map[int32]*proto.WeeklyDiscountInfo) + WeeklyDiscountInfo := chargeCfg.GetWeeklyInfoAll() + // 优惠日开启或者猫咪闪促开启 + if c.IsWeeklyDiscountDay() || LimitedEvnetMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CAT_DAY_SALE) { + for k, v := range WeeklyDiscountInfo { + LimitNum := c.WeeklyDiscount[k] + WeeklyDiscount[int32(k)] = &proto.WeeklyDiscountInfo{ + Discount: int32(v.Discount), + Count: int32(v.WeeklyLimit - LimitNum), + Id: int32(k), + } + } + } + CatDaySaleEndTime := LimitedEvnetMod.GetCatDaySaleEndTime() + p.PushClientRes(&proto.ResCharge{ + Charge: float32(c.Charge), + Total: int32(c.Total), + First: GoUtil.MapIntToSlice(c.EnergyShop), + SpecialShop: SpecialShop, + FreeShop: int32(c.FreeShop), + ChessShop: ChessShop, + Gift: GoUtil.MapIntToInt32(c.Gift), + Ad: c.Ad, + SpecialCharge: float32(c.SpecialCharge), + SpecialChargeWeek: int32(GoUtil.FullWeeksSince(c.LastSpecialCharge)), + TodayCharge: float32(c.TodayCharge), + MonthCharge: float32(c.MonthCharge), + Wish: resWish, + AdEndTime: c.AdEndTime, + WeeklyDiscount: WeeklyDiscount, + PetWorkRemainTime: c.PetWorkTime, + WeeklyEndTime: max(c.WeeklyEndTime, CatDaySaleEndTime), + }) +} diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index 2d407bec..9f2692d7 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -524,7 +524,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) } ChargeMod := player.PlayMod.getChargeMod() ChargeMod.TriggerChargeUnlock(int(BaseMod.Level), ChessMod.GetEmitList()) - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() OrderMod := player.PlayMod.getOrderMod() player.TriggerOrder(BaseMod.Level, order.TRIGGER_TYPE_LV, ChessMod.GetOrderEmit(), player.PlayMod.getBaseMod().GetEnergyMul()) player.PushClientRes(OrderMod.BackData()) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index eaffa53a..5f44416e 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -23,6 +23,7 @@ import ( "server/game/mod/card" "server/game/mod/friend" "server/game/mod/item" + "server/game/mod/limitedTimeEvent" "server/game/mod/mail" "server/game/mod/msg" "server/game/mod/order" @@ -320,7 +321,7 @@ func handle(p *Player, m *msg.Msg) error { ChargeMod := p.PlayMod.getChargeMod() ChargeMod.AddWishCount() p.AddLog(m.From, friend.LOG_TYPE_WISH, "", m.SendT) - p.PushClientRes(ChargeMod.BackData()) + p.ChargeBackData() case msg.HANDLE_TYPE_PLAYROOM_KISS: // playroom亲吻 p.NotifyPlayroomKiss() case msg.HANDLE_TYPE_CATNIP_INVITE: // 邀请好友参与猫咪游戏 @@ -953,7 +954,7 @@ func EmitRetireTrigger2(p *Player) { ChessMod.FinishRetire(k) ChargeMod := p.PlayMod.getChargeMod() ChargeMod.InitChessShop(ChessMod.GetEmitList()) - p.PushClientRes(ChargeMod.BackData()) + p.ChargeBackData() continue } OrderMod.CreateCleanOrder(ChessList) @@ -1564,3 +1565,9 @@ func (player *Player) GetPlayroomClean() map[int]int { } return Item } + +func (player *Player) IsWeeklyDiscount() bool { + ChargeMod := player.PlayMod.getChargeMod() + LimitEventMod := player.PlayMod.getLimitedTimeEventMod() + return ChargeMod.IsWeeklyDiscountDay() || LimitEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CAT_DAY_SALE) +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 4d2cc4e1..ca41f6a6 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -1473,7 +1473,7 @@ func ReqBuyEnergy(player *Player, buf []byte) error { proto.Unmarshal(buf, req) BaseMod := player.PlayMod.getBaseMod() ChargeMod := player.PlayMod.getChargeMod() - Item, Energy, Diamond := ChargeMod.BuyEnergy() + Item, Energy, Diamond := ChargeMod.BuyEnergy(player.IsWeeklyDiscount()) err := player.HandleItem(Item, msg.ITEM_POP_LABEL_BuyEnergy.String()) if err != nil { player.SendErrClienRes(&msg.ResBuyEnergy{ @@ -1487,7 +1487,7 @@ func ReqBuyEnergy(player *Player, buf []byte) error { player.PushClientRes(&msg.ResBuyEnergy{ Code: msg.RES_CODE_SUCCESS, }) - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() player.TeLog("buy_energy_diamond", map[string]interface{}{ "diamond_cost": Diamond, "energy_num": Energy, @@ -2529,7 +2529,7 @@ func ReqFreeShop(player *Player, buf []byte) error { return err } player.PlayMod.save() - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() player.PushClientRes(&msg.ResFreeShop{ Code: msg.RES_CODE_SUCCESS, }) @@ -2546,7 +2546,7 @@ func ReqBuyChessShop(player *Player, buf []byte) error { req := &msg.ReqBuyChessShop{} proto.Unmarshal(buf, req) ChargeMod := player.PlayMod.getChargeMod() - LostItem, Item, _, err := ChargeMod.BuyChess(int(req.Id)) + LostItem, Item, _, err := ChargeMod.BuyChess(int(req.Id), player.IsWeeklyDiscount()) if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop{ Code: msg.RES_CODE_FAIL, @@ -2577,7 +2577,7 @@ func ReqBuyChessShop(player *Player, buf []byte) error { "cost_num": -LostItem[0].Num, }) player.PlayMod.save() - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() player.PushClientRes(&msg.ResBuyChessShop{ Code: msg.RES_CODE_SUCCESS, }) @@ -2594,7 +2594,7 @@ func ReqBuyChessShop2(player *Player, buf []byte) error { req := &msg.ReqBuyChessShop2{} proto.Unmarshal(buf, req) ChargeMod := player.PlayMod.getChargeMod() - LostItem, _, ChessId, err := ChargeMod.BuyChess(int(req.Id)) + LostItem, _, ChessId, err := ChargeMod.BuyChess(int(req.Id), player.IsWeeklyDiscount()) if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop2{ Code: msg.RES_CODE_FAIL, @@ -2635,7 +2635,7 @@ func ReqBuyChessShop2(player *Player, buf []byte) error { "cost_num": LostItem[0].Num, }) player.PlayMod.save() - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() player.PushClientRes(&msg.ResBuyChessShop2{ Code: msg.RES_CODE_SUCCESS, }) @@ -2662,7 +2662,7 @@ func ReqRefreshChessShop(player *Player, buf []byte) error { return err } player.PlayMod.save() - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() player.TeLog("refresh_store_diamond", map[string]interface{}{ "diamond_cost": 20, }) @@ -4163,8 +4163,7 @@ func ReqPlayroomShop(player *Player, buf []byte) error { req := &msg.ReqPlayroomShop{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() - ChargeMod := player.PlayMod.getChargeMod() - AddItems, LoseItem, err := PlayroomMod.ShopBuy(int(req.Id), int(req.Num), ChargeMod.IsWeeklyDiscountDay()) + AddItems, LoseItem, err := PlayroomMod.ShopBuy(int(req.Id), int(req.Num), player.IsWeeklyDiscount()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomShop{ Code: msg.RES_CODE_FAIL, diff --git a/src/server/game/mod/charge/Charge.go b/src/server/game/mod/charge/Charge.go index e120c355..189aaf16 100644 --- a/src/server/game/mod/charge/Charge.go +++ b/src/server/game/mod/charge/Charge.go @@ -136,8 +136,8 @@ func (c *ChargeMod) ZeroUpdate(Emit []int) { c.SpecialShop[i] = &SepcialShop{Grade: SpecialGrade, Count: SpecialShopCount} } c.WishList.SendList = make([]int64, 0) - c.WeeklyDiscount = make(map[int]int) if c.IsWeeklyDiscountDay() && c.WeeklyEndTime < Now { + c.WeeklyDiscount = make(map[int]int) c.WeeklyEndTime = GoUtil.ZeroTimestamp() + 7*24*3600 } c.InitChessShop(Emit) @@ -285,63 +285,63 @@ func (c *ChargeMod) FireFreeShop() ([]*item.Item, error) { } // 返回数据 -func (c *ChargeMod) BackData() *msg.ResCharge { - SpecialShop := make(map[int32]*msg.ResSpecialShop) - ChessShop := make(map[int32]*msg.ResChessShop) - for k, v := range c.SpecialShop { - SpecialShop[int32(k)] = &msg.ResSpecialShop{ - Grade: int32(v.Grade), - Count: int32(v.Count), - } - } +// func (c *ChargeMod) BackData() *msg.ResCharge { +// SpecialShop := make(map[int32]*msg.ResSpecialShop) +// ChessShop := make(map[int32]*msg.ResChessShop) +// for k, v := range c.SpecialShop { +// SpecialShop[int32(k)] = &msg.ResSpecialShop{ +// Grade: int32(v.Grade), +// Count: int32(v.Count), +// } +// } - for k, v := range c.ChessShop { - ChessShop[int32(k)] = &msg.ResChessShop{ - Diamond: int32(v.Diamond), - Count: int32(v.Count), - ChessId: int32(v.Id), - } - } - resWish := &msg.WishList{} - if c.WishList != nil { - resWish = &msg.WishList{ - Id: int32(c.WishList.ItemId), - Count: int32(c.WishList.Count), - Uid: c.WishList.SendList, - } - } - WeeklyDiscount := make(map[int32]*msg.WeeklyDiscountInfo) - WeeklyDiscountInfo := chargeCfg.GetWeeklyInfoAll() - if c.IsWeeklyDiscountDay() { - for k, v := range WeeklyDiscountInfo { - LimitNum := c.WeeklyDiscount[k] - WeeklyDiscount[int32(k)] = &msg.WeeklyDiscountInfo{ - Discount: int32(v.Discount), - Count: int32(v.WeeklyLimit - LimitNum), - Id: int32(k), - } - } - } - return &msg.ResCharge{ - Charge: float32(c.Charge), - Total: int32(c.Total), - First: GoUtil.MapIntToSlice(c.EnergyShop), - SpecialShop: SpecialShop, - FreeShop: int32(c.FreeShop), - ChessShop: ChessShop, - Gift: GoUtil.MapIntToInt32(c.Gift), - Ad: c.Ad, - SpecialCharge: float32(c.SpecialCharge), - SpecialChargeWeek: int32(GoUtil.FullWeeksSince(c.LastSpecialCharge)), - TodayCharge: float32(c.TodayCharge), - MonthCharge: float32(c.MonthCharge), - Wish: resWish, - AdEndTime: c.AdEndTime, - WeeklyDiscount: WeeklyDiscount, - PetWorkRemainTime: c.PetWorkTime, - WeeklyEndTime: c.WeeklyEndTime, - } -} +// for k, v := range c.ChessShop { +// ChessShop[int32(k)] = &msg.ResChessShop{ +// Diamond: int32(v.Diamond), +// Count: int32(v.Count), +// ChessId: int32(v.Id), +// } +// } +// resWish := &msg.WishList{} +// if c.WishList != nil { +// resWish = &msg.WishList{ +// Id: int32(c.WishList.ItemId), +// Count: int32(c.WishList.Count), +// Uid: c.WishList.SendList, +// } +// } +// WeeklyDiscount := make(map[int32]*msg.WeeklyDiscountInfo) +// WeeklyDiscountInfo := chargeCfg.GetWeeklyInfoAll() +// if c.IsWeeklyDiscountDay() { +// for k, v := range WeeklyDiscountInfo { +// LimitNum := c.WeeklyDiscount[k] +// WeeklyDiscount[int32(k)] = &msg.WeeklyDiscountInfo{ +// Discount: int32(v.Discount), +// Count: int32(v.WeeklyLimit - LimitNum), +// Id: int32(k), +// } +// } +// } +// return &msg.ResCharge{ +// Charge: float32(c.Charge), +// Total: int32(c.Total), +// First: GoUtil.MapIntToSlice(c.EnergyShop), +// SpecialShop: SpecialShop, +// FreeShop: int32(c.FreeShop), +// ChessShop: ChessShop, +// Gift: GoUtil.MapIntToInt32(c.Gift), +// Ad: c.Ad, +// SpecialCharge: float32(c.SpecialCharge), +// SpecialChargeWeek: int32(GoUtil.FullWeeksSince(c.LastSpecialCharge)), +// TodayCharge: float32(c.TodayCharge), +// MonthCharge: float32(c.MonthCharge), +// Wish: resWish, +// AdEndTime: c.AdEndTime, +// WeeklyDiscount: WeeklyDiscount, +// PetWorkRemainTime: c.PetWorkTime, +// WeeklyEndTime: c.WeeklyEndTime, +// } +// } func (c *ChargeMod) InitChessShop(Emit []int) { if len(Emit) == 0 { @@ -401,9 +401,9 @@ func (c *ChargeMod) InitChessShop(Emit []int) { } } -func (c *ChargeMod) BuyEnergy() ([]*item.Item, []*item.Item, int) { +func (c *ChargeMod) BuyEnergy(IsWeeklyDiscount bool) ([]*item.Item, []*item.Item, int) { diamond := 40 - if c.IsWeeklyDiscountDay() { + if IsWeeklyDiscount { LimitNum := c.WeeklyDiscount[0] Discount, WeeklyLimit := chargeCfg.GetWeeklyInfo(0) if LimitNum < WeeklyLimit { @@ -419,7 +419,7 @@ func (c *ChargeMod) BuyEnergy() ([]*item.Item, []*item.Item, int) { }, diamond } -func (c *ChargeMod) BuyChess(Chess int) ([]*item.Item, []*item.Item, int, error) { +func (c *ChargeMod) BuyChess(Chess int, IsWeeklyDiscount bool) ([]*item.Item, []*item.Item, int, error) { v, ok := c.ChessShop[Chess] if !ok { return nil, nil, 0, fmt.Errorf("BuyChess chess id not exist id:%d", Chess) @@ -430,7 +430,7 @@ func (c *ChargeMod) BuyChess(Chess int) ([]*item.Item, []*item.Item, int, error) } v.Count-- diamond := v.Diamond - if c.IsWeeklyDiscountDay() { + if IsWeeklyDiscount { LimitNum := c.WeeklyDiscount[Chess] Discount, WeeklyLimit := chargeCfg.GetWeeklyInfo(Chess) if LimitNum < WeeklyLimit { @@ -521,6 +521,13 @@ func (c *ChargeMod) IsWeeklyDiscountDay() bool { return Weekday == Day || c.WeeklyEndTime > GoUtil.Now() } +func (c *ChargeMod) ResetWeeklyDiscount() { + if c.IsWeeklyDiscountDay() { + return + } + c.WeeklyDiscount = make(map[int]int) +} + func (c *ChargeMod) PetWorkBackData() *msg.LogoutPetWork { res := &msg.LogoutPetWork{ WorkTime: c.LastWorkTime, @@ -529,3 +536,11 @@ func (c *ChargeMod) PetWorkBackData() *msg.LogoutPetWork { c.LastWorkTime = 0 return res } + +func (c *ChargeMod) GetWeeklyEndTime() int64 { + return c.WeeklyEndTime +} + +func (c *ChargeMod) SetWeeklyEndTime(EndTime int64) { + c.WeeklyEndTime = EndTime +} diff --git a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go index bd40331c..9d65c623 100644 --- a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go +++ b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go @@ -557,3 +557,14 @@ func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent { Param: Param, } } + +func (l LimitedTimeEventMod) EndCatDaySale() { + delete(l.EventList, EVENT_TYPE_CAT_DAY_SALE) +} + +func (l LimitedTimeEventMod) GetCatDaySaleEndTime() int64 { + if l.EventList[EVENT_TYPE_CAT_DAY_SALE] == nil { + return 0 + } + return l.EventList[EVENT_TYPE_CAT_DAY_SALE].StartT + l.EventList[EVENT_TYPE_CAT_DAY_SALE].Remian +} diff --git a/src/server/game/mod/playroom/playroom.go b/src/server/game/mod/playroom/playroom.go index d63c4bfa..2883bc5a 100644 --- a/src/server/game/mod/playroom/playroom.go +++ b/src/server/game/mod/playroom/playroom.go @@ -307,7 +307,6 @@ func (p *PlayroomMod) ZeroUpdate() { p.DailyTaskReward = make([]int, 0) p.TodayVisitedUsers = make([]int, 0) p.ADItem = make(map[int]*ItemInfo) - p.WeeklyDiscount = make(map[int]int) p.InitDailyTask() } @@ -1116,3 +1115,7 @@ func (p *PlayroomMod) AdWatch(Id int) error { } return nil } + +func (p *PlayroomMod) ResetWeeklyDiscount() { + p.WeeklyDiscount = make(map[int]int) +} From f1b0f96c07f2797ba43be00c6ca009f0d3f1193b Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 26 Nov 2025 19:00:13 +0800 Subject: [PATCH 02/49] =?UTF-8?q?=E5=85=B3=E9=97=AD=E6=97=A7=E7=9A=84?= =?UTF-8?q?=E5=8F=91=E8=B4=A7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/RegisterNetworkFunc.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index ca41f6a6..e8eb401f 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -2757,6 +2757,7 @@ func ReqCreateOrderSn(player *Player, buf []byte) error { // 订单发货 func ReqShippingOrder(player *Player, buf []byte) error { + return nil req := &msg.ReqShippingOrder{} proto.Unmarshal(buf, req) From 0c979e7ff133ba222a69e2e4a24cc220ec08d891 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 27 Nov 2025 14:29:11 +0800 Subject: [PATCH 03/49] =?UTF-8?q?=E5=87=8F=E4=BB=B7=E4=B8=8D=E5=87=8F?= =?UTF-8?q?=E9=87=8F=20=E6=96=B0=E9=99=90=E6=97=B6=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../limitedTimeEvent/LimitedTimeEventCfg.go | 20 +++++++++++++++++++ src/server/game/RegisterNetworkFunc.go | 8 ++++++-- src/server/game/UnitTest.go | 2 +- src/server/game/mod/decorate/Decorate.go | 14 +++++++++++-- .../mod/limitedTimeEvent/LimitedTimeEvent.go | 1 + 5 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go b/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go index 6ed133ae..6c4e30b7 100644 --- a/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go +++ b/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go @@ -24,6 +24,7 @@ const ( CFG_LIMITED_TIME_EVENT_MONEY = "LimitedTimeEventMoney" CFG_LIMITED_TIME_EVENT_LUCKY = "LimitedTimeEventLucky" CFG_LIMITED_TIME_EVENT_CAT_TRICK = "LimitedTimeEventCatTrick" + CFG_LIMTTED_TIME_EVENT_DECORATE_OFF = "LimitedTimeEventDecorateOff" ) func init() { @@ -41,6 +42,7 @@ func init() { gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_MONEY) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_LUCKY) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CAT_TRICK) + gamedata.InitCfg(CFG_LIMTTED_TIME_EVENT_DECORATE_OFF) } // 获取限时事件触发列表 @@ -417,3 +419,21 @@ func GetCatTrickDiamond(Type int) (int, int) { } return gamedata.GetIntValue(data, "Diamond"), gamedata.GetIntValue(data, "Energy") } + +func GetDecorateOffDiscount(AreaId, StepId int) int { + data, err := gamedata.GetData(CFG_LIMTTED_TIME_EVENT_DECORATE_OFF) + if err != nil { + log.Debug("GetDecorateOffDiscount err:%v", err) + return 100 + } + for _, v := range data { + StartAreaId := gamedata.GetIntValue(v, "StartArea") + EndAreaId := gamedata.GetIntValue(v, "EndArea") + StartStepId := gamedata.GetIntValue(v, "StartStep") + EndStepId := gamedata.GetIntValue(v, "EndStep") + if AreaId >= StartAreaId && AreaId <= EndAreaId && StepId >= StartStepId && StepId <= EndStepId { + return gamedata.GetIntValue(v, "Off") + } + } + return 100 +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index e8eb401f..406d214a 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -471,7 +471,9 @@ func ReqDecorate(player *Player, buf []byte) error { DecorateMod := player.PlayMod.getDecorateMod() DecorateId := int(req.DecorateId) AreaId := int(req.AreaId) - CostItem, PetExp, PartItem := DecorateMod.GetDecorateCostItem(AreaId, DecorateId) + LimitEventMod := player.PlayMod.getLimitedTimeEventMod() + DecorateOffIsExist := LimitEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_DECORATE_OFF) + CostItem, PetExp, PartItem := DecorateMod.GetDecorateCostItem(AreaId, DecorateId, DecorateOffIsExist) err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 if err != nil { player.SendErrClienRes(&msg.ResDecorate{ @@ -562,7 +564,9 @@ func ReqDecorateAll(player *Player, buf []byte) error { return errors.New("等级不足") } PlayerBaseMod := player.GetPlayerBaseMod() - CostItem, AddItem, DecorateNum, DecorateList, Log, PetExp := DecorateMod.DecorateAll(PlayerBaseMod.GetStar()) + LimitEventMod := player.PlayMod.getLimitedTimeEventMod() + DecorateOffIsExist := LimitEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_DECORATE_OFF) + CostItem, AddItem, DecorateNum, DecorateList, Log, PetExp := DecorateMod.DecorateAll(PlayerBaseMod.GetStar(), DecorateOffIsExist) err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 if err != nil { player.SendErrClienRes(&msg.ResDecorateAll{ diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 513e40b0..a7ada801 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -332,7 +332,7 @@ func UnitDecoratePartCost(p *Player) error { DecorateMod.PartClassPool = []int{} DecorateMod.PartPool = make(map[int]int) DecorateMod.InitData() - Items, _, _ := DecorateMod.GetDecorateCostItem(1, 33) + Items, _, _ := DecorateMod.GetDecorateCostItem(1, 33, false) err := p.HandleLoseItem(Items, "") if err != nil { fmt.Print(err) diff --git a/src/server/game/mod/decorate/Decorate.go b/src/server/game/mod/decorate/Decorate.go index 54867726..a0703315 100644 --- a/src/server/game/mod/decorate/Decorate.go +++ b/src/server/game/mod/decorate/Decorate.go @@ -2,8 +2,10 @@ package decorate import ( "fmt" + "math" "server/GoUtil" decorateCfg "server/conf/decorate" + limitedTimeEventCfg "server/conf/limitedTimeEvent" "server/game/mod/item" "server/msg" "sort" @@ -75,10 +77,14 @@ func (d *Decorate) GetDecorateAddEnergy(cnt int) []*item.Item { } // 获取装饰消耗 -func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int) ([]*item.Item, int, []*item.Item) { +func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int, DecorateOffIsExist bool) ([]*item.Item, int, []*item.Item) { Item := decorateCfg.GetStarCost(AreaId, DecorateId) PetExp := decorateCfg.GetDecoratePExp(AreaId, DecorateId) Id := decorateCfg.GetIdBySenceAndLv(AreaId, DecorateId) + if DecorateOffIsExist { + OffRate := limitedTimeEventCfg.GetDecorateOffDiscount(AreaId, DecorateId) + Item = int(math.Ceil(float64(Item) * float64(OffRate))) + } Items := []*item.Item{item.NewItem(item.ITEM_STAR_ID, Item)} PartItem := d.PartCost[Id] PartItemList := make([]*item.Item, 0) @@ -93,7 +99,7 @@ func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int) ([]*item.Item, in return Items, PetExp, PartItemList } -func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int, []interface{}, int) { +func (d *Decorate) DecorateAll(Star int, DecorateOffIsExist bool) ([]*item.Item, []*item.Item, int, []int, []interface{}, int) { DecorateAll := decorateCfg.GetAllSortIdByAreaId(d.AreaId) SubAlice := GoUtil.SubSlices(DecorateAll, GoUtil.MapIntToIntSlice(d.FinishList)) sort.Ints(SubAlice) @@ -111,6 +117,10 @@ func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int break } NeedStar := decorateCfg.GetStarCost(d.AreaId, v) + if DecorateOffIsExist { + OffRate := limitedTimeEventCfg.GetDecorateOffDiscount(d.AreaId, v) + NeedStar = int(math.Ceil(float64(NeedStar) * float64(OffRate))) + } if Star < NeedStar { break } diff --git a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go index 9d65c623..8bc6f24b 100644 --- a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go +++ b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go @@ -28,6 +28,7 @@ const ( EVENT_TYPE_PAYBACK_DAY = 15 // 回收日 EVENT_TYPE_LITTLE_APPRENTICE = 16 // 小学徒 EVENT_TYPE_CAT_DAY_SALE = 17 // 猫咪大甩卖 + EVENT_TYPE_DECORATE_OFF = 18 // 装饰打折 ) const ( From d85c048d8b122efed154456afd7f76e85534fc31 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 28 Nov 2025 10:20:11 +0800 Subject: [PATCH 04/49] =?UTF-8?q?=E8=91=A1=E8=90=84=E7=89=99=E8=AF=AD?= =?UTF-8?q?=E9=82=AE=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/language/languageCfg.go | 2 + src/server/game/mod/mail/Mail.go | 81 +++++++++++++++---------- src/server/msg/Gameapi.pb.go | 69 +++++++++++++++------ 3 files changed, 102 insertions(+), 50 deletions(-) diff --git a/src/server/conf/language/languageCfg.go b/src/server/conf/language/languageCfg.go index 979bebf9..b6782225 100644 --- a/src/server/conf/language/languageCfg.go +++ b/src/server/conf/language/languageCfg.go @@ -21,6 +21,8 @@ func GetLanguage(lang msg.LANG_TYPE, key string) string { switch lang { case msg.LANG_TYPE_LANG_EN: return gamedata.GetStringValue(data, "English") + case msg.LANG_TYPE_LANG_PTBR: + return gamedata.GetStringValue(data, "pt_BR") default: return key } diff --git a/src/server/game/mod/mail/Mail.go b/src/server/game/mod/mail/Mail.go index 963920f9..aa7bc4cd 100644 --- a/src/server/game/mod/mail/Mail.go +++ b/src/server/game/mod/mail/Mail.go @@ -26,17 +26,22 @@ const ( ) type MailInfo struct { - Title string // 邮件标题 - SubTitle string // 邮件副标题 - Content string // 邮件内容 - TitleEn string // 邮件标题英文 - SubTitleEn string // 邮件副标题英文 - ContentEn string // 邮件内容英文 - Items []*item.Item // 邮件道具 - Type int //邮件类型 - Send int64 // 发送时间 - Del int64 // 删除时间 - Status int + Title string // 邮件标题 + SubTitle string // 邮件副标题 + Content string // 邮件内容 + TitleEn string // 邮件标题英文 + SubTitleEn string // 邮件副标题英文 + ContentEn string // 邮件内容英文 + // 葡萄牙语 巴西 + TitlePtBr string + SubTitlePtBr string + ContentPtBr string + + Items []*item.Item // 邮件道具 + Type int //邮件类型 + Send int64 // 发送时间 + Del int64 // 删除时间 + Status int } func (m *MailMod) InitData() { @@ -46,14 +51,20 @@ func (m *MailMod) InitData() { } type MailStruct struct { - Title string - SubTitle string - Content string + Title string + SubTitle string + Content string + // 英文 TitleEn string SubTitleEn string ContentEn string - Items []*item.Item - Type int + // 葡萄牙语 巴西 + TitlePtBr string + SubTitlePtBr string + ContentPtBr string + + Items []*item.Item + Type int } func (m *MailMod) SendMail(mail *MailStruct) int { @@ -141,17 +152,20 @@ func (m *MailMod) BackData() *msg.ResMailList { continue } res.MailList[int32(k)] = &msg.MailInfo{ - Id: int32(k), - Title: v.Title, - SubTitle: v.SubTitle, - Content: v.Content, - TitleEn: v.TitleEn, - SubTitleEn: v.SubTitleEn, - ContentEn: v.ContentEn, - Items: item.ItemToMsg(v.Items), - Status: int32(v.Status), - Time: int32(v.Send), - Type: int32(v.Type), + Id: int32(k), + Title: v.Title, + SubTitle: v.SubTitle, + Content: v.Content, + TitleEn: v.TitleEn, + SubTitleEn: v.SubTitleEn, + ContentEn: v.ContentEn, + TitlePtBr: v.TitlePtBr, + SubTitlePtBr: v.SubTitlePtBr, + ContentPtBr: v.ContentPtBr, + Items: item.ItemToMsg(v.Items), + Status: int32(v.Status), + Time: int32(v.Send), + Type: int32(v.Type), } } return res @@ -168,10 +182,15 @@ func (m *MailMod) NotifyMail(Id int) *msg.MailNotify { SubTitle: mailInfo.SubTitle, SubTitleEn: mailInfo.SubTitleEn, TitleEn: mailInfo.TitleEn, - Type: int32(mailInfo.Type), - Items: item.ItemToMsg(mailInfo.Items), - Status: int32(mailInfo.Status), - Time: int32(mailInfo.Send), + + TitlePtBr: mailInfo.TitlePtBr, + SubTitlePtBr: mailInfo.SubTitlePtBr, + ContentPtBr: mailInfo.ContentPtBr, + + Type: int32(mailInfo.Type), + Items: item.ItemToMsg(mailInfo.Items), + Status: int32(mailInfo.Status), + Time: int32(mailInfo.Send), }, } } diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index ffa1b440..7b234462 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -866,8 +866,9 @@ func (CHESS_EX_TYPE) EnumDescriptor() ([]byte, []int) { type LANG_TYPE int32 const ( - LANG_TYPE_LANG_CN LANG_TYPE = 0 // 中文 - LANG_TYPE_LANG_EN LANG_TYPE = 1 // 英文 + LANG_TYPE_LANG_CN LANG_TYPE = 0 // 中文 + LANG_TYPE_LANG_EN LANG_TYPE = 1 // 英文 + LANG_TYPE_LANG_PTBR LANG_TYPE = 2 // 葡萄牙语 ) // Enum value maps for LANG_TYPE. @@ -875,10 +876,12 @@ var ( LANG_TYPE_name = map[int32]string{ 0: "LANG_CN", 1: "LANG_EN", + 2: "LANG_PTBR", } LANG_TYPE_value = map[string]int32{ - "LANG_CN": 0, - "LANG_EN": 1, + "LANG_CN": 0, + "LANG_EN": 1, + "LANG_PTBR": 2, } ) @@ -16247,17 +16250,20 @@ func (x *ResMailList) GetMailList() map[int32]*MailInfo { type MailInfo struct { state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 邮件id - Title string `protobuf:"bytes,2,opt,name=Title,proto3" json:"Title,omitempty"` // 标题 - Content string `protobuf:"bytes,3,opt,name=Content,proto3" json:"Content,omitempty"` // 内容 - Time int32 `protobuf:"varint,4,opt,name=Time,proto3" json:"Time,omitempty"` // 时间 - Status int32 `protobuf:"varint,5,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未读 1 已读 2 已领取 3 已删除 - Items []*ItemInfo `protobuf:"bytes,6,rep,name=Items,proto3" json:"Items,omitempty"` // 奖励 - Type int32 `protobuf:"varint,7,opt,name=Type,proto3" json:"Type,omitempty"` //邮件类型 1普通邮件 2节日邮件 3 礼包邮件 - TitleEn string `protobuf:"bytes,8,opt,name=TitleEn,proto3" json:"TitleEn,omitempty"` // 英文标题 - ContentEn string `protobuf:"bytes,9,opt,name=ContentEn,proto3" json:"ContentEn,omitempty"` // 英文内容 - SubTitle string `protobuf:"bytes,10,opt,name=SubTitle,proto3" json:"SubTitle,omitempty"` // 子标题 - SubTitleEn string `protobuf:"bytes,11,opt,name=SubTitleEn,proto3" json:"SubTitleEn,omitempty"` // 英文子标题 + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 邮件id + Title string `protobuf:"bytes,2,opt,name=Title,proto3" json:"Title,omitempty"` // 标题 + Content string `protobuf:"bytes,3,opt,name=Content,proto3" json:"Content,omitempty"` // 内容 + Time int32 `protobuf:"varint,4,opt,name=Time,proto3" json:"Time,omitempty"` // 时间 + Status int32 `protobuf:"varint,5,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未读 1 已读 2 已领取 3 已删除 + Items []*ItemInfo `protobuf:"bytes,6,rep,name=Items,proto3" json:"Items,omitempty"` // 奖励 + Type int32 `protobuf:"varint,7,opt,name=Type,proto3" json:"Type,omitempty"` //邮件类型 1普通邮件 2节日邮件 3 礼包邮件 + TitleEn string `protobuf:"bytes,8,opt,name=TitleEn,proto3" json:"TitleEn,omitempty"` // 英文标题 + ContentEn string `protobuf:"bytes,9,opt,name=ContentEn,proto3" json:"ContentEn,omitempty"` // 英文内容 + SubTitle string `protobuf:"bytes,10,opt,name=SubTitle,proto3" json:"SubTitle,omitempty"` // 子标题 + SubTitleEn string `protobuf:"bytes,11,opt,name=SubTitleEn,proto3" json:"SubTitleEn,omitempty"` // 英文子标题 + TitlePtBr string `protobuf:"bytes,12,opt,name=TitlePtBr,proto3" json:"TitlePtBr,omitempty"` // 葡萄牙标题 + ContentPtBr string `protobuf:"bytes,13,opt,name=ContentPtBr,proto3" json:"ContentPtBr,omitempty"` // 葡萄牙内容 + SubTitlePtBr string `protobuf:"bytes,14,opt,name=SubTitlePtBr,proto3" json:"SubTitlePtBr,omitempty"` // 葡萄牙子标题 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -16369,6 +16375,27 @@ func (x *MailInfo) GetSubTitleEn() string { return "" } +func (x *MailInfo) GetTitlePtBr() string { + if x != nil { + return x.TitlePtBr + } + return "" +} + +func (x *MailInfo) GetContentPtBr() string { + if x != nil { + return x.ContentPtBr + } + return "" +} + +func (x *MailInfo) GetSubTitlePtBr() string { + if x != nil { + return x.SubTitlePtBr + } + return "" +} + type MailNotify struct { state protoimpl.MessageState `protogen:"open.v1"` Info *MailInfo `protobuf:"bytes,1,opt,name=Info,proto3" json:"Info,omitempty"` @@ -28309,7 +28336,7 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\bMailList\x18\x01 \x03(\v2#.tutorial.ResMailList.MailListEntryR\bMailList\x1aO\n" + "\rMailListEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\x05R\x03key\x12(\n" + - "\x05value\x18\x02 \x01(\v2\x12.tutorial.MailInfoR\x05value:\x028\x01\"\xa8\x02\n" + + "\x05value\x18\x02 \x01(\v2\x12.tutorial.MailInfoR\x05value:\x028\x01\"\x8c\x03\n" + "\bMailInfo\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x14\n" + "\x05Title\x18\x02 \x01(\tR\x05Title\x12\x18\n" + @@ -28324,7 +28351,10 @@ const file_proto_Gameapi_proto_rawDesc = "" + " \x01(\tR\bSubTitle\x12\x1e\n" + "\n" + "SubTitleEn\x18\v \x01(\tR\n" + - "SubTitleEn\"4\n" + + "SubTitleEn\x12\x1c\n" + + "\tTitlePtBr\x18\f \x01(\tR\tTitlePtBr\x12 \n" + + "\vContentPtBr\x18\r \x01(\tR\vContentPtBr\x12\"\n" + + "\fSubTitlePtBr\x18\x0e \x01(\tR\fSubTitlePtBr\"4\n" + "\n" + "MailNotify\x12&\n" + "\x04Info\x18\x01 \x01(\v2\x12.tutorial.MailInfoR\x04Info\"\x1d\n" + @@ -29310,10 +29340,11 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\fCHESS_EX_BOX\x10\x02\x12\x16\n" + "\x12CHESS_EX_QUICK_BUY\x10\x03\x12\x12\n" + "\x0eCHESS_EX_EVENT\x10\x04\x12$\n" + - " CHESS_EX_EVENT_LITTLE_APPRENTICE\x10\x05*%\n" + + " CHESS_EX_EVENT_LITTLE_APPRENTICE\x10\x05*4\n" + "\tLANG_TYPE\x12\v\n" + "\aLANG_CN\x10\x00\x12\v\n" + - "\aLANG_EN\x10\x01*x\n" + + "\aLANG_EN\x10\x01\x12\r\n" + + "\tLANG_PTBR\x10\x02*x\n" + "\x0fLimitEventParam\x12\f\n" + "\bLEP_NONE\x10\x00\x12\x14\n" + "\x10CAT_TRICK_ENERGY\x10\x01\x12\x12\n" + From ed99982d86ac67d555306f597a708d1b6f9f4474 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 28 Nov 2025 10:30:19 +0800 Subject: [PATCH 05/49] =?UTF-8?q?=E8=91=A1=E8=90=84=E7=89=99=E8=AF=AD?= =?UTF-8?q?=E9=82=AE=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Trigger.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/server/game/Trigger.go b/src/server/game/Trigger.go index 897806e0..f68c6ed8 100644 --- a/src/server/game/Trigger.go +++ b/src/server/game/Trigger.go @@ -14,6 +14,7 @@ import ( "server/db" "server/game/mod/chess" "server/game/mod/item" + "server/game/mod/mail" "server/game/mod/order" "server/game/mod/quest" "server/msg" @@ -50,7 +51,22 @@ func (player *Player) MailTrigger(Tr *quest.Trigger) bool { Content := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, v.Content) TitleEn := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, v.Title) ContentEn := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, v.Content) - MailMod.Send(Title, "", Content, TitleEn, "", ContentEn, v.Items, v.Type) + TitlePtBr := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_PTBR, v.Title) + ContentPtBr := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_PTBR, v.Content) + + MailMod.SendMail(&mail.MailStruct{ + Title: Title, + SubTitle: "", + Content: Content, + TitleEn: TitleEn, + SubTitleEn: "", + ContentEn: ContentEn, + TitlePtBr: TitlePtBr, + SubTitlePtBr: "", + ContentPtBr: ContentPtBr, + Items: v.Items, + Type: v.Type, + }) MailMod.AddTriggerMail(v.Id) tr = true } From 14807a52ed0e2bc64248916b19ddf0c3eaf0521e Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 28 Nov 2025 11:57:55 +0800 Subject: [PATCH 06/49] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/db/SqlStruct.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/server/db/SqlStruct.go b/src/server/db/SqlStruct.go index 2526a52f..ecfe8238 100644 --- a/src/server/db/SqlStruct.go +++ b/src/server/db/SqlStruct.go @@ -481,6 +481,9 @@ type SqlServerMailStruct struct { SubTitleEn string `db:"subTitle_en"` TitleEn string `db:"title_en"` ContentEn string `db:"content_en"` + TitlePtBr string `db:"title_ptbr"` + SubTitlePtBr string `db:"subTitle_ptbr"` + ContentPtBr string `db:"content_ptbr"` Items string `db:"items"` Start_time int64 `db:"start_time"` Register_time int64 `db:"register_time"` From 0e425f03555c9ecb4939df199d100abd8ebd8e04 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 28 Nov 2025 15:23:11 +0800 Subject: [PATCH 07/49] =?UTF-8?q?ga=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/ga/log.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/server/ga/log.go b/src/server/ga/log.go index ad10ca12..18fc609f 100644 --- a/src/server/ga/log.go +++ b/src/server/ga/log.go @@ -1,6 +1,8 @@ package ga import ( + "fmt" + galog "github.com/tuyou/galog" ) @@ -22,7 +24,7 @@ func init() { func GAlogEvent(event string, userID string, deviceID string, properties map[string]interface{}) { newProperties := make(map[string]interface{}) for k, v := range properties { - newProperties["proj_"+k] = v + newProperties["proj_"+k] = fmt.Sprintf("%v", v) } properties = newProperties glogger. From 2ba0f54cb4fd2f7710f965f480f6b99232ae3986 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 28 Nov 2025 15:43:30 +0800 Subject: [PATCH 08/49] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/MailMgr.go | 4 ++++ src/server/game/PlayerFunc.go | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/server/game/MailMgr.go b/src/server/game/MailMgr.go index ce5195bf..b8b0ac84 100644 --- a/src/server/game/MailMgr.go +++ b/src/server/game/MailMgr.go @@ -30,6 +30,8 @@ type ServerMail struct { Content string TitleEn string ContentEn string + TitlePtBr string + ContentPtBr string Items []*item.Item Start_time int64 Register_time int64 @@ -80,6 +82,8 @@ func (r *MailMgr) LoadMail(msg *msg.Msg) (interface{}, error) { Content: v.Content, TitleEn: v.TitleEn, ContentEn: v.ContentEn, + TitlePtBr: v.TitlePtBr, + ContentPtBr: v.ContentPtBr, Items: item.ParseItem(items), Start_time: v.Start_time, Register_time: v.Register_time, diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 5f44416e..a53c36c8 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -498,7 +498,16 @@ func SyncMailMsg(p *Player) { continue } MailMod.ServerMail = append(MailMod.ServerMail, v.Id) - MailMod.Send(v.Title, "", v.Content, v.TitleEn, "", v.ContentEn, v.Items, v.Mail_type) + MailMod.SendMail(&mail.MailStruct{ + Title: v.Title, + Content: v.Content, + TitleEn: v.TitleEn, + ContentEn: v.ContentEn, + Items: v.Items, + Type: v.Mail_type, + TitlePtBr: v.TitlePtBr, + ContentPtBr: v.ContentPtBr, + }) } p.PushClientRes(MailMod.BackData()) } From b7f2ed2e50167c741c2e01d6dc80ad1df6fe832d Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 28 Nov 2025 16:12:04 +0800 Subject: [PATCH 09/49] =?UTF-8?q?=E7=99=BB=E5=BD=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/external.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/server/game/external.go b/src/server/game/external.go index 23305e4d..4cb6f5fa 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -133,13 +133,6 @@ func HandleClientReq(args []interface{}) { gl.PackResInfo(a, "ResRegisterAccount", data) break } - if strings.Count(detail.UserName, "")-1 < 6 { - ResRegisterAccount := &msg.ResRegisterAccount{} - ResRegisterAccount.ResultCode = MergeConst.Protocol_Error_Account_OR_PWD_Short - data, _ := proto.Marshal(ResRegisterAccount) - gl.PackResInfo(a, "ResRegisterAccount", data) - break - } gl.Db_AccountInfo.UserName = detail.UserName gl.Db_AccountInfo.UserPassword = detail.UserPwd if !gl.NewAccountInsertDataToDB() { From c8f859d7e4f45fabe90deab7709b4f5f95a46fb9 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 28 Nov 2025 16:18:41 +0800 Subject: [PATCH 10/49] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/mail/Mail.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/server/game/mod/mail/Mail.go b/src/server/game/mod/mail/Mail.go index aa7bc4cd..b1cd2750 100644 --- a/src/server/game/mod/mail/Mail.go +++ b/src/server/game/mod/mail/Mail.go @@ -73,16 +73,21 @@ func (m *MailMod) SendMail(mail *MailStruct) int { } m.AutoId++ m.List[m.AutoId] = &MailInfo{ - Title: mail.Title, - SubTitle: mail.SubTitle, - Content: mail.Content, + Title: mail.Title, + SubTitle: mail.SubTitle, + Content: mail.Content, + TitleEn: mail.TitleEn, SubTitleEn: mail.SubTitleEn, ContentEn: mail.ContentEn, - Items: mail.Items, - Send: GoUtil.Now(), - Type: mail.Type, - Status: MAIL_STATUS_IDLE, + + TitlePtBr: mail.TitlePtBr, + SubTitlePtBr: mail.SubTitlePtBr, + ContentPtBr: mail.ContentPtBr, + Items: mail.Items, + Send: GoUtil.Now(), + Type: mail.Type, + Status: MAIL_STATUS_IDLE, } return m.AutoId } From 39cf03a4ab6deac20646917a8889fc30f32cb269 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 1 Dec 2025 11:28:39 +0800 Subject: [PATCH 11/49] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E5=A4=9A=E8=AF=AD?= =?UTF-8?q?=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/language/languageCfg.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/server/conf/language/languageCfg.go b/src/server/conf/language/languageCfg.go index b6782225..b67d268a 100644 --- a/src/server/conf/language/languageCfg.go +++ b/src/server/conf/language/languageCfg.go @@ -6,23 +6,27 @@ import ( ) const ( - CFG_LANGUAGE = "LanguageData" + CFG_LANGUAGE = "LanguageData" + CFG_ALLLANGUAGE = "AllLanguage" ) func init() { gamedata.InitCfg(CFG_LANGUAGE) + gamedata.InitCfg(CFG_ALLLANGUAGE) } func GetLanguage(lang msg.LANG_TYPE, key string) string { - data, err := gamedata.GetDataByKey(CFG_LANGUAGE, key) + data, err := gamedata.GetDataByKey(CFG_ALLLANGUAGE, key) if err != nil { return key } switch lang { case msg.LANG_TYPE_LANG_EN: - return gamedata.GetStringValue(data, "English") + return gamedata.GetStringValue(data, "en_US") case msg.LANG_TYPE_LANG_PTBR: return gamedata.GetStringValue(data, "pt_BR") + case msg.LANG_TYPE_LANG_CN: + return gamedata.GetStringValue(data, "zh_CN") default: return key } From 200cbaec68f03b2f54dda068a79eb38db18e9624 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 1 Dec 2025 15:17:07 +0800 Subject: [PATCH 12/49] =?UTF-8?q?=E9=9B=86=E7=BE=A4=E6=9E=B6=E6=9E=84?= =?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/cluster/ClusterFunc.go | 2 +- src/server/conf/json.go | 1 + src/server/conf/server.json | 5 ++++- src/server/game/ClusterMgr.go | 16 ++++++++++++++++ src/server/game/FriendMgr.go | 11 +++++++++++ src/server/game/mod/msg/Msg.go | 4 ++++ 6 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/server/cluster/ClusterFunc.go b/src/server/cluster/ClusterFunc.go index 6bdcd475..b610540b 100644 --- a/src/server/cluster/ClusterFunc.go +++ b/src/server/cluster/ClusterFunc.go @@ -126,6 +126,7 @@ func SendServerMsg(m *msg.Msg, serverId int) error { } func CallServerMsg(m *msg.Msg, serverId int) (*msg.Msg, error) { + m.UniKey = GoUtil.UniKey(fmt.Sprintf("%v,Cluster Msg", m)) if v, ok := serverAgent.Load(serverId); ok { data, err := GoUtil.GobMarshal(m) if err != nil { @@ -134,7 +135,6 @@ func CallServerMsg(m *msg.Msg, serverId int) (*msg.Msg, error) { } v.(network.Agent).WriteMsg(data) } - m.UniKey = GoUtil.UniKey("clusterGlobal") newChan := make(chan *msg.Msg, 1) registerChanel(m.UniKey, newChan) timeout := time.After(15 * time.Second) diff --git a/src/server/conf/json.go b/src/server/conf/json.go index 471018f0..64bd3ec7 100644 --- a/src/server/conf/json.go +++ b/src/server/conf/json.go @@ -47,6 +47,7 @@ var Server struct { ListenAddr string CenterAddr string + CenterNode int RemoteAddr string GameConfPath string diff --git a/src/server/conf/server.json b/src/server/conf/server.json index e139badd..c6779e49 100644 --- a/src/server/conf/server.json +++ b/src/server/conf/server.json @@ -24,6 +24,10 @@ "ServerStatus" : 1, "ServerCenter" : 1, "GameConfPath": "D:/Github/pet_home_server/src/server/gamedata/config/", + + "ListenAddr":":9001", + "CenterAddr": "pethome.bywaystudios.com:9000", + "RemoteAddr":"host.docker.internal:9001", "RedisAddr":"127.0.0.1", "RedisPort" :"6379", @@ -35,7 +39,6 @@ "RedisConnType":"Direct", "GoogleVerify":false, - "RemoteAddr":"host.docker.internal:9001", "Partition":3, "KafkaHost":"kafka-server", "CountryCode":"004", diff --git a/src/server/game/ClusterMgr.go b/src/server/game/ClusterMgr.go index 6eec04b3..e3b1ba4e 100644 --- a/src/server/game/ClusterMgr.go +++ b/src/server/game/ClusterMgr.go @@ -37,4 +37,20 @@ func init() { RegisterClusterHandler(msg.HANDLE_TYPE_REQ_CARD, FriendMgrSend) RegisterClusterHandler(msg.HANDLE_TYPE_AGREE_CARD, FriendMgrSend) RegisterClusterHandler(msg.CLUSTER_FRIEND_SYNC, ClusterFriendSync) + RegisterClusterHandler(msg.HANDLE_TYPE_CHAMPSHIP_INRANK, champshipInrankHandler) + RegisterClusterHandler(msg.HANDLE_TYPE_CHAMPSHIP_RANK_INFO, champshipRankInfoHandler) +} + +func champshipInrankHandler(m *msg.Msg) error { + G_GameLogicPtr.ChampshipMgrSend(m) + return nil +} + +func champshipRankInfoHandler(m *msg.Msg) error { + data := G_GameLogicPtr.ChampshipMgrCall(m) + m.To = m.From + m.From = 0 + m.Extra = data + FriendMgrSend(m) + return nil } diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index 033029a3..b571cc37 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -90,6 +90,8 @@ func (f *FriendMgr) Init() { f.RegisterHandler(msg.HANDLE_TYPE_VAR_USER_SET, f.SetVarUserData) f.RegisterHandler(msg.HANDLE_TYPE_VAR_EXPIRE_SET, f.SetExpireVarData) + + f.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_LOGIN, f.SendMsgToCenter) } func (f *FriendMgr) getData() *FirendData { @@ -252,6 +254,15 @@ func ClusterFriendSync(m *msg.Msg) error { return nil } +// 异步发送消息给中心服 +func (f *FriendMgr) SendMsgToCenter(m *msg.Msg) (interface{}, error) { + return nil, mergeCluster.SendServerMsg(m, conf.Server.CenterNode) +} + +func (f *FriendMgr) CallMsgToCenter(m *msg.Msg) (interface{}, error) { + return mergeCluster.CallServerMsg(m, conf.Server.CenterNode) +} + func FriendMgrCall(m *msg.Msg) interface{} { ToServer := GoUtil.GetServerIdByUid(m.To) if ToServer != conf.Server.ServerID { diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index fdbc64ea..269987be 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -107,6 +107,10 @@ const ( HANDLE_TYPE_FRIEND_GREETING_REPLY // 好友问候回复 HANDLE_TYPE_FRIEND_SPONSOER // 好友赞助体力 + + HANDLE_TYPE_CHAMPSHIP_LOGIN // 锦标赛登录 + HANDLE_TYPE_CHAMPSHIP_RANK_INFO // 锦标赛排名信息 + ) const ( From 8fabdd7137496ad963a682e3e3ab63ba35e50568 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 2 Dec 2025 12:25:45 +0800 Subject: [PATCH 13/49] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=80=9A=E7=9F=A5?= =?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/conf/charge/ChargeCfg.go | 8 ++++++++ src/server/game/Trigger.go | 9 ++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/server/conf/charge/ChargeCfg.go b/src/server/conf/charge/ChargeCfg.go index 77691546..b9153c61 100644 --- a/src/server/conf/charge/ChargeCfg.go +++ b/src/server/conf/charge/ChargeCfg.go @@ -314,6 +314,14 @@ func GetChargeInfo(ChargeId int) (float64, string) { return gamedata.GetFloatValue(data, "Money"), gamedata.GetStringValue(data, "Unit") } +func GetProduceName(ChargeId int) string { + data, err := gamedata.GetDataByIntKey(CFG_CHARGE, ChargeId) + if err != nil { + return "" + } + return gamedata.GetStringValue(data, "Remark") +} + func GetWishCount(ItemId int) int { data, err := gamedata.GetDataByIntKey(CFG_CHARGE_WISH, ItemId) if err != nil { diff --git a/src/server/game/Trigger.go b/src/server/game/Trigger.go index f68c6ed8..3e587327 100644 --- a/src/server/game/Trigger.go +++ b/src/server/game/Trigger.go @@ -8,6 +8,7 @@ import ( "server/MergeConst" "server/conf" champshipCfg "server/conf/champship" + chargeCfg "server/conf/charge" languageCfg "server/conf/language" mailCfg "server/conf/mail" mergeDataCfg "server/conf/mergeData" @@ -113,12 +114,10 @@ func TriggerShippingOrderOrigin(player *Player, req *msg.ReqShippingOrder) { log.Debug("charge shipping order already shipped OrderSn:%s", OrderSn) return } - // if !conf.Server.GoogleVerify { - // Order.PayStatus = MergeConst.ORDER_STATUS_PAY - // return - // } + if conf.Server.GameName == "Merge_Pet_online" { - GoUtil.SendFeishuOrder(int(player.M_DwUin), OrderData.PayChannelOrderId, OrderData.Price, req.ProduceId, OrderData.PayTime, GoUtil.Now()) + ProduceName := chargeCfg.GetProduceName(OrderData.ProductId) + GoUtil.SendFeishuOrder(int(player.M_DwUin), OrderData.PayChannelOrderId, OrderData.Price, ProduceName, OrderData.PayTime, GoUtil.Now()) } log.Debug("[order verify success] Uid:%d;OrderSn:%s;PayOrder:%s;Token:%s", player.M_DwUin, OrderData.OrderId, OrderData.PayChannelOrderId, req.Token) player.lock.Lock() From 4421b9f613d865d9eb95fff6b0edf37c85f96c07 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 3 Dec 2025 18:10:53 +0800 Subject: [PATCH 14/49] =?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/LogMgr.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/game/LogMgr.go b/src/server/game/LogMgr.go index cbc3393f..6c308110 100644 --- a/src/server/game/LogMgr.go +++ b/src/server/game/LogMgr.go @@ -3,6 +3,7 @@ package game import ( "encoding/json" kafkaMiddleware "server/middleware/kafka" + "server/pkg/github.com/name5566/leaf/log" "sync" "github.com/robfig/cron/v3" @@ -53,6 +54,7 @@ func (L *LogMgr) InitManager() { value, _ := json.Marshal(v) err := kafkaMiddleware.SendMsg([]byte(v.EventName), value) if err != nil { + log.Debug("kafka log in err:%s", err.Error()) NewQuene = append(NewQuene, v) } } From 1191168a19ccb0e2454d4cd7ae82325376149674 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 4 Dec 2025 15:27:54 +0800 Subject: [PATCH 15/49] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8CGC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/LogMgr.go | 134 ++++++++++++++++++++++++++------------ src/server/main.go | 12 +++- 2 files changed, 105 insertions(+), 41 deletions(-) diff --git a/src/server/game/LogMgr.go b/src/server/game/LogMgr.go index 6c308110..beab8867 100644 --- a/src/server/game/LogMgr.go +++ b/src/server/game/LogMgr.go @@ -5,8 +5,7 @@ import ( kafkaMiddleware "server/middleware/kafka" "server/pkg/github.com/name5566/leaf/log" "sync" - - "github.com/robfig/cron/v3" + "time" ) const ( @@ -17,12 +16,16 @@ const ( const ( PLAYROOM_LOST = "playroom_lost" LOG_LENGTH = 10000 + WORKER_COUNT = 8 ) type LogMgr struct { - L []*Log - McronSave *cron.Cron - Lock sync.Mutex + // 将切片改为带缓冲通道 + L chan *Log + Lock sync.Mutex + wg sync.WaitGroup + stopOnce sync.Once + closing bool } type Log struct { @@ -35,47 +38,98 @@ type Log struct { } func (L *LogMgr) InitManager() { - L.McronSave = cron.New() - L.L = make([]*Log, 0, LOG_LENGTH) - L.McronSave.AddFunc("@every 10s", func() { - L.Lock.Lock() - defer L.Lock.Unlock() - if kafkaMiddleware.KafkaMod == nil { - if len(L.L) > LOG_LENGTH { - L.L = L.L[:0] - } else if len(L.L) > LOG_LENGTH { - L.L = L.L[len(L.L)-LOG_LENGTH:] + // 初始化通道与启动 worker 循环写入 kafka + L.L = make(chan *Log, LOG_LENGTH) + + // 启动 worker + workerCount := WORKER_COUNT + for i := 0; i < workerCount; i++ { + L.wg.Add(1) + go func() { + defer L.wg.Done() + for v := range L.L { + // 如果 kafka 未就绪,尝试重入队列并等待一小段时间 + if kafkaMiddleware.KafkaMod == nil { + // 尝试非阻塞重入,否则丢弃最旧再试一次 + select { + case L.L <- v: + default: + select { + case <-L.L: + default: + } + select { + case L.L <- v: + default: + } + } + time.Sleep(100 * time.Millisecond) + continue + } + + value, _ := json.Marshal(v) + if err := kafkaMiddleware.SendMsg([]byte(v.EventName), value); err != nil { + log.Debug("kafka log send err:%s", err.Error()) + // 发送失败,尝试将消息放回通道(非阻塞策略) + select { + case L.L <- v: + default: + // 通道满,丢弃最旧一条后再尝试一次入队 + select { + case <-L.L: + default: + } + select { + case L.L <- v: + default: + // 放不下则丢弃 + } + } + // 轻微退避,避免快速循环 + time.Sleep(50 * time.Millisecond) + } } - return - } - Quene := L.L - NewQuene := make([]*Log, 0, LOG_LENGTH) - for _, v := range Quene { - value, _ := json.Marshal(v) - err := kafkaMiddleware.SendMsg([]byte(v.EventName), value) - if err != nil { - log.Debug("kafka log in err:%s", err.Error()) - NewQuene = append(NewQuene, v) - } - } - L.L = NewQuene - }) - L.McronSave.Start() + }() + } } func (L *LogMgr) AddLog(logs *Log) { + // 如果已经开始关闭,直接丢弃 L.Lock.Lock() - defer L.Lock.Unlock() - L.L = append(L.L, logs) + if L.closing { + L.Lock.Unlock() + return + } + // 非阻塞入队:若通道满则先丢弃最旧一条再入队,避免阻塞调用者 + select { + case L.L <- logs: + L.Lock.Unlock() + return + default: + // 丢弃最旧一条以腾出空间(若有) + select { + case <-L.L: + default: + } + // 再尝试入队一次 + select { + case L.L <- logs: + default: + // 放不下就直接丢弃 + } + L.Lock.Unlock() + } } func (L *LogMgr) Close() { - L.McronSave.Stop() - L.Lock.Lock() - defer L.Lock.Unlock() - for _, v := range L.L { - value, _ := json.Marshal(v) - kafkaMiddleware.SendMsg([]byte(v.EventName), value) - } - L.L = L.L[:0] + L.stopOnce.Do(func() { + L.Lock.Lock() + // 标记为正在关闭,阻止后续入队 + L.closing = true + // 关闭通道,通知所有 worker 退出(workers 会消费完所有已入队的消息) + close(L.L) + L.Lock.Unlock() + // 等待所有 worker 处理完 + L.wg.Wait() + }) } diff --git a/src/server/main.go b/src/server/main.go index a1b8ea1a..0617485d 100644 --- a/src/server/main.go +++ b/src/server/main.go @@ -1,11 +1,13 @@ package main import ( + "net/http" + _ "net/http/pprof" + "runtime/debug" "server/conf" "server/game" "server/gate" "server/pkg/github.com/name5566/leaf" - lconf "server/pkg/github.com/name5566/leaf/conf" ) @@ -19,6 +21,14 @@ func main() { lconf.ListenAddr = conf.Server.ListenAddr lconf.CenterAddr = conf.Server.CenterAddr lconf.PendingWriteNum = conf.PendingWriteNum + // 当内存>2G时开始GC + debug.SetGCPercent(50) + debug.SetMemoryLimit(2 << 30) + // 启动 pprof(仅绑定本地) + go func() { + // 如果需要绑定所有接口改为 ":6060" + _ = http.ListenAndServe("127.0.0.1:6060", nil) + }() leaf.Run( game.Module, From dc2e1d8ea4862f21cec5b6a100b6324609f677bb Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 4 Dec 2025 15:32:18 +0800 Subject: [PATCH 16/49] =?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 --- .gitignore | 2 ++ src/server/game/LogMgr.go | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index e65e11c5..a6745817 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ src/server/unit_test.go src/server/teLog/* src/server/teLog/log.2024-11-28 src/server/logs/ga_log/*.log +src/server/goroutine.prof +src/server/heap_after.pb.gz diff --git a/src/server/game/LogMgr.go b/src/server/game/LogMgr.go index beab8867..0cf459ad 100644 --- a/src/server/game/LogMgr.go +++ b/src/server/game/LogMgr.go @@ -2,6 +2,7 @@ package game import ( "encoding/json" + "runtime" kafkaMiddleware "server/middleware/kafka" "server/pkg/github.com/name5566/leaf/log" "sync" @@ -15,8 +16,9 @@ const ( ) const ( PLAYROOM_LOST = "playroom_lost" - LOG_LENGTH = 10000 - WORKER_COUNT = 8 + // 增大缓冲:针对 ~1000 条/s,保留足够秒数的缓冲(可按需调整) + LOG_LENGTH = 100000 + WORKER_COUNT = 16 ) type LogMgr struct { @@ -41,14 +43,17 @@ func (L *LogMgr) InitManager() { // 初始化通道与启动 worker 循环写入 kafka L.L = make(chan *Log, LOG_LENGTH) - // 启动 worker + // 启动 worker(允许基于 CPU 动态扩展) workerCount := WORKER_COUNT + if cpuWorkers := runtime.NumCPU() * 2; cpuWorkers > workerCount { + workerCount = cpuWorkers + } for i := 0; i < workerCount; i++ { L.wg.Add(1) go func() { defer L.wg.Done() for v := range L.L { - // 如果 kafka 未就绪,尝试重入队列并等待一小段时间 + // 如果 kafka 未就绪,尝试重入队列并等待一小段时间(缩短等待) if kafkaMiddleware.KafkaMod == nil { // 尝试非阻塞重入,否则丢弃最旧再试一次 select { @@ -63,7 +68,7 @@ func (L *LogMgr) InitManager() { default: } } - time.Sleep(100 * time.Millisecond) + time.Sleep(10 * time.Millisecond) continue } @@ -85,8 +90,8 @@ func (L *LogMgr) InitManager() { // 放不下则丢弃 } } - // 轻微退避,避免快速循环 - time.Sleep(50 * time.Millisecond) + // 缩短退避,避免快速循环阻塞 + time.Sleep(10 * time.Millisecond) } } }() From 745ebaced4ecf8f38f002d5260543009ed90d233 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 4 Dec 2025 16:48:57 +0800 Subject: [PATCH 17/49] =?UTF-8?q?=E7=8C=AB=E8=8D=89=E5=A4=A7=E4=BD=9C?= =?UTF-8?q?=E6=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/ActivityFunc.go | 43 ++ src/server/game/RegisterNetworkFunc.go | 6 +- src/server/game/mod/catnip/Catnip.go | 32 +- src/server/msg/Gameapi.pb.go | 644 ++++++++++++++----------- 4 files changed, 424 insertions(+), 301 deletions(-) diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index d7d5bf49..8acb038a 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -3,6 +3,7 @@ package game import ( "server/GoUtil" activityCfg "server/conf/activity" + catnipCfg "server/conf/catnip" guesscolorCfg "server/conf/guessColor" itemCfg "server/conf/item" mailCfg "server/conf/mail" @@ -55,6 +56,13 @@ func ActivityLogin(p *Player) { SendActivityMail(p, ItemId, ItemNum, ActivityId, nil) } } + // 猫草大作战 + ActivityId = GetActivityId(p, activity.ACT_TYPE_CATNIP) + CatnipMod := p.PlayMod.getCatnipMod() + OldId = CatnipMod.Login(ActivityId) + if OldId != 0 { + // 清空猫草大作战数据无需发邮件 + } // 通行证 ActivityId = GetActivityId(p, activity.ACT_TYPE_PASS) @@ -99,6 +107,16 @@ func ActivityZeroUpdate(p *Player) { RaceMod := p.PlayMod.getRaceMod() RaceMod.ZeroUpdate(ActivityInfo.Id) } + ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_PASS) + if ActivityInfo != nil { + PassMod := p.PlayMod.getPassMod() + PassMod.ZeroUpdate(ActivityInfo.Id) + } + ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_CATNIP) + if ActivityInfo != nil { + CatnipMod := p.PlayMod.getCatnipMod() + CatnipMod.ZeroUpdate(ActivityInfo.Id) + } } func GetActivityInfo(p *Player, actType int) *ActivityInfo { @@ -287,6 +305,10 @@ func GetActivityItem(p *Player, ActType []int) []*item.Item { } func (p *Player) CatnipBackData() { + ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) + if ActivityInfo == nil { + return + } CatnipMod := p.PlayMod.getCatnipMod() Status := GetActivityStatus(p, activity.ACT_TYPE_CATNIP) if CatnipMod == nil { @@ -298,6 +320,7 @@ func (p *Player) CatnipBackData() { Id: int32(v.Id), Progress: int32(v.Progress), Status: int32(v.Status), + Reward: GoUtil.SliceIntToInt32(v.Reward), } if v.Partner != 0 { PlayerData := G_getGameLogic().GetResSimplePlayerByUid(v.Partner) @@ -305,12 +328,32 @@ func (p *Player) CatnipBackData() { GameInfo.Partner = PlayerData } } + InviteList := make([]*msg.CatnipInvite, 0) + for _, iv := range v.InviteList { + InviteList = append(InviteList, &msg.CatnipInvite{ + Uid: int64(iv.InviteId), + Time: int64(iv.Time), + }) + } + GameInfo.InviteList = InviteList + BeInvitedList := make([]*msg.CatnipInvite, 0) + for _, iv := range v.BeInvitedList { + BeInvitedList = append(BeInvitedList, &msg.CatnipInvite{ + Uid: int64(iv.InviteId), + Time: int64(iv.Time), + }) + } + GameInfo.BeInviteList = BeInvitedList GameList = append(GameList, GameInfo) } + Template := catnipCfg.GetTemplateId(CatnipMod.Id) res := &msg.ResCatnip{ Id: int32(CatnipMod.Id), + EndTime: int32(ActivityInfo.EndT), Status: int32(Status), + Template: int32(Template), GameList: GameList, + Multiply: int32(CatnipMod.Mul), } p.PushClientRes(res) } diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 406d214a..c079c63a 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -5085,7 +5085,7 @@ func ReqCatnipMultiply(player *Player, buf []byte) error { req := &msg.ReqCatnipMultiply{} proto.Unmarshal(buf, req) CatnipMod := player.PlayMod.getCatnipMod() - err := CatnipMod.Multiply(int(req.Id), int(req.Multiply)) + err := CatnipMod.Multiply(int(req.Multiply)) if err != nil { player.SendErrClienRes(&msg.ResCatnipMultiply{ Code: msg.RES_CODE_FAIL, @@ -5094,9 +5094,9 @@ func ReqCatnipMultiply(player *Player, buf []byte) error { return err } player.TeLog("catnip_multiply", map[string]interface{}{ - "Id": int(req.Id), "Mul": int(req.Multiply), }) + player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipMultiply{ Code: msg.RES_CODE_SUCCESS, @@ -5140,6 +5140,7 @@ func ReqCatnipPlay(player *Player, buf []byte) error { if Growth > 0 { player.CatnipGrowthMsg(PartnerId, int(req.Id), Growth) } + player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_SUCCESS, @@ -5174,6 +5175,7 @@ func ReqCatnipReward(player *Player, buf []byte) error { "Progress": int(req.Progress), "Items": Items, }) + player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipReward{ Code: msg.RES_CODE_SUCCESS, diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index e91a314d..d19c15c1 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -8,9 +8,9 @@ import ( ) type CatnipMod struct { - Id int - Game map[int]*CatnipGame - + Id int + Game map[int]*CatnipGame + Mul int // 倍数 IsGetGrandReward bool // 是否领取过大丰收奖励 } @@ -25,7 +25,6 @@ type CatnipGame struct { Progress int // 进度 PartnerAdd int // 伙伴贡献 Reward []int // 已领取阶段奖励 - Mul int // 倍数 Status int // 0: Not Started, 1: In Progress, 2: Completed InviteList map[int]*InviteInfo // 邀请列表,key: 邀请者ID, value: 被邀请者ID BeInvitedList map[int]*InviteInfo // 被邀请列表,key: 被邀请者ID, value: 邀请者ID @@ -39,6 +38,7 @@ const ( func (c *CatnipMod) InitData() { // Initialize Catnip data here + // c.Game = nil if c.Game == nil { c.Game = make(map[int]*CatnipGame) } @@ -56,13 +56,16 @@ func (c *CatnipMod) Login(Id int) int { c.Id = Id c.IsGetGrandReward = false // Reset grand reward status on login c.Game = make(map[int]*CatnipGame) + c.Mul = 1 // Default multiplier GameNum := catnipCfg.GetGameNum(c.Id) // Assuming 1 is the default game ID for i := 1; i <= GameNum; i++ { c.Game[i] = &CatnipGame{ - Id: i, - Partner: 0, // No partner initially - Progress: 0, // Initial progress - Status: GAME_STATUS_IDLE, // Not started + Id: i, + Partner: 0, // No partner initially + Progress: 0, // Initial progress + Status: GAME_STATUS_IDLE, // Not started + InviteList: make(map[int]*InviteInfo), // Initialize invite list + BeInvitedList: make(map[int]*InviteInfo), // Initialize be invited list } } return c.Id @@ -144,12 +147,8 @@ func (c *CatnipMod) DelInvited(Id, Uid int) error { return nil } -func (c *CatnipMod) Multiply(Id, Mul int) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - GameInfo.Mul = Mul +func (c *CatnipMod) Multiply(Mul int) error { + c.Mul = Mul return nil } @@ -170,11 +169,12 @@ func (c *CatnipMod) Play(Id int) (int, int, int, []*item.Item, []*item.Item, err if !ok { return 0, 0, 0, nil, nil, fmt.Errorf("game with ID %d does not exist", Id) } - Id, Items, Growth := catnipCfg.GetJackpotItem(GameInfo.Mul) + Id, Items, Growth := catnipCfg.GetJackpotItem(c.Mul) if Growth > 0 { c.Growth(Id, Growth) } - ItemCost := catnipCfg.GetItemCost(c.Id, GameInfo.Mul) + ItemCost := catnipCfg.GetItemCost(c.Id, c.Mul) + GameInfo.Progress += Growth return Id, Growth, GameInfo.Partner, Items, ItemCost, nil } diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 7b234462..473ca3f1 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -25872,6 +25872,7 @@ type ResCatnip struct { EndTime int32 `protobuf:"varint,3,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // 结束时间 Template int32 `protobuf:"varint,4,opt,name=Template,proto3" json:"Template,omitempty"` // 模板 GameList []*CatnipGame `protobuf:"bytes,5,rep,name=GameList,proto3" json:"GameList,omitempty"` // 小游戏列表 + Multiply int32 `protobuf:"varint,6,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -25941,14 +25942,23 @@ func (x *ResCatnip) GetGameList() []*CatnipGame { return nil } +func (x *ResCatnip) GetMultiply() int32 { + if x != nil { + return x.Multiply + } + return 0 +} + // 小游戏信息 type CatnipGame struct { state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id - Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 - Progress int32 `protobuf:"varint,3,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 - Reward []int32 `protobuf:"varint,4,rep,packed,name=Reward,proto3" json:"Reward,omitempty"` // 已领取进度奖励列表 [100,150,200] - Partner *ResPlayerSimple `protobuf:"bytes,5,opt,name=Partner,proto3" json:"Partner,omitempty"` // 伙伴 + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id + Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 + Progress int32 `protobuf:"varint,3,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 + Reward []int32 `protobuf:"varint,4,rep,packed,name=Reward,proto3" json:"Reward,omitempty"` // 已领取进度奖励列表 [100,150,200] + Partner *ResPlayerSimple `protobuf:"bytes,5,opt,name=Partner,proto3" json:"Partner,omitempty"` // 伙伴 + InviteList []*CatnipInvite `protobuf:"bytes,6,rep,name=InviteList,proto3" json:"InviteList,omitempty"` // 邀请列表 + BeInviteList []*CatnipInvite `protobuf:"bytes,7,rep,name=BeInviteList,proto3" json:"BeInviteList,omitempty"` // 被邀请列表 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26018,6 +26028,72 @@ func (x *CatnipGame) GetPartner() *ResPlayerSimple { return nil } +func (x *CatnipGame) GetInviteList() []*CatnipInvite { + if x != nil { + return x.InviteList + } + return nil +} + +func (x *CatnipGame) GetBeInviteList() []*CatnipInvite { + if x != nil { + return x.BeInviteList + } + return nil +} + +type CatnipInvite struct { + state protoimpl.MessageState `protogen:"open.v1"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id + Time int64 `protobuf:"varint,2,opt,name=Time,proto3" json:"Time,omitempty"` // 邀请时间 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CatnipInvite) Reset() { + *x = CatnipInvite{} + mi := &file_proto_Gameapi_proto_msgTypes[448] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CatnipInvite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CatnipInvite) ProtoMessage() {} + +func (x *CatnipInvite) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[448] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CatnipInvite.ProtoReflect.Descriptor instead. +func (*CatnipInvite) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{448} +} + +func (x *CatnipInvite) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + +func (x *CatnipInvite) GetTime() int64 { + if x != nil { + return x.Time + } + return 0 +} + // 邀请好友 type ReqCatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26029,7 +26105,7 @@ type ReqCatnipInvite struct { func (x *ReqCatnipInvite) Reset() { *x = ReqCatnipInvite{} - mi := &file_proto_Gameapi_proto_msgTypes[448] + mi := &file_proto_Gameapi_proto_msgTypes[449] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26041,7 +26117,7 @@ func (x *ReqCatnipInvite) String() string { func (*ReqCatnipInvite) ProtoMessage() {} func (x *ReqCatnipInvite) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[448] + mi := &file_proto_Gameapi_proto_msgTypes[449] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26054,7 +26130,7 @@ func (x *ReqCatnipInvite) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipInvite.ProtoReflect.Descriptor instead. func (*ReqCatnipInvite) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{448} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{449} } func (x *ReqCatnipInvite) GetId() int32 { @@ -26081,7 +26157,7 @@ type ResCatnipInvite struct { func (x *ResCatnipInvite) Reset() { *x = ResCatnipInvite{} - mi := &file_proto_Gameapi_proto_msgTypes[449] + mi := &file_proto_Gameapi_proto_msgTypes[450] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26093,7 +26169,7 @@ func (x *ResCatnipInvite) String() string { func (*ResCatnipInvite) ProtoMessage() {} func (x *ResCatnipInvite) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[449] + mi := &file_proto_Gameapi_proto_msgTypes[450] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26106,7 +26182,7 @@ func (x *ResCatnipInvite) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipInvite.ProtoReflect.Descriptor instead. func (*ResCatnipInvite) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{449} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{450} } func (x *ResCatnipInvite) GetCode() RES_CODE { @@ -26134,7 +26210,7 @@ type ReqCatnipAgree struct { func (x *ReqCatnipAgree) Reset() { *x = ReqCatnipAgree{} - mi := &file_proto_Gameapi_proto_msgTypes[450] + mi := &file_proto_Gameapi_proto_msgTypes[451] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26146,7 +26222,7 @@ func (x *ReqCatnipAgree) String() string { func (*ReqCatnipAgree) ProtoMessage() {} func (x *ReqCatnipAgree) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[450] + mi := &file_proto_Gameapi_proto_msgTypes[451] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26159,7 +26235,7 @@ func (x *ReqCatnipAgree) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipAgree.ProtoReflect.Descriptor instead. func (*ReqCatnipAgree) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{450} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{451} } func (x *ReqCatnipAgree) GetId() int32 { @@ -26186,7 +26262,7 @@ type ResCatnipAgree struct { func (x *ResCatnipAgree) Reset() { *x = ResCatnipAgree{} - mi := &file_proto_Gameapi_proto_msgTypes[451] + mi := &file_proto_Gameapi_proto_msgTypes[452] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26198,7 +26274,7 @@ func (x *ResCatnipAgree) String() string { func (*ResCatnipAgree) ProtoMessage() {} func (x *ResCatnipAgree) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[451] + mi := &file_proto_Gameapi_proto_msgTypes[452] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26211,7 +26287,7 @@ func (x *ResCatnipAgree) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipAgree.ProtoReflect.Descriptor instead. func (*ResCatnipAgree) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{451} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{452} } func (x *ResCatnipAgree) GetCode() RES_CODE { @@ -26238,7 +26314,7 @@ type ReqCatnipRefuse struct { func (x *ReqCatnipRefuse) Reset() { *x = ReqCatnipRefuse{} - mi := &file_proto_Gameapi_proto_msgTypes[452] + mi := &file_proto_Gameapi_proto_msgTypes[453] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26250,7 +26326,7 @@ func (x *ReqCatnipRefuse) String() string { func (*ReqCatnipRefuse) ProtoMessage() {} func (x *ReqCatnipRefuse) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[452] + mi := &file_proto_Gameapi_proto_msgTypes[453] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26263,7 +26339,7 @@ func (x *ReqCatnipRefuse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipRefuse.ProtoReflect.Descriptor instead. func (*ReqCatnipRefuse) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{452} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{453} } func (x *ReqCatnipRefuse) GetId() int32 { @@ -26290,7 +26366,7 @@ type ResCatnipRefuse struct { func (x *ResCatnipRefuse) Reset() { *x = ResCatnipRefuse{} - mi := &file_proto_Gameapi_proto_msgTypes[453] + mi := &file_proto_Gameapi_proto_msgTypes[454] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26302,7 +26378,7 @@ func (x *ResCatnipRefuse) String() string { func (*ResCatnipRefuse) ProtoMessage() {} func (x *ResCatnipRefuse) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[453] + mi := &file_proto_Gameapi_proto_msgTypes[454] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26315,7 +26391,7 @@ func (x *ResCatnipRefuse) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipRefuse.ProtoReflect.Descriptor instead. func (*ResCatnipRefuse) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{453} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{454} } func (x *ResCatnipRefuse) GetCode() RES_CODE { @@ -26335,15 +26411,14 @@ func (x *ResCatnipRefuse) GetMsg() string { // 设置游戏倍数 type ReqCatnipMultiply struct { state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id - Multiply int32 `protobuf:"varint,2,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 + Multiply int32 `protobuf:"varint,1,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ReqCatnipMultiply) Reset() { *x = ReqCatnipMultiply{} - mi := &file_proto_Gameapi_proto_msgTypes[454] + mi := &file_proto_Gameapi_proto_msgTypes[455] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26355,7 +26430,7 @@ func (x *ReqCatnipMultiply) String() string { func (*ReqCatnipMultiply) ProtoMessage() {} func (x *ReqCatnipMultiply) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[454] + mi := &file_proto_Gameapi_proto_msgTypes[455] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26368,14 +26443,7 @@ func (x *ReqCatnipMultiply) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipMultiply.ProtoReflect.Descriptor instead. func (*ReqCatnipMultiply) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{454} -} - -func (x *ReqCatnipMultiply) GetId() int32 { - if x != nil { - return x.Id - } - return 0 + return file_proto_Gameapi_proto_rawDescGZIP(), []int{455} } func (x *ReqCatnipMultiply) GetMultiply() int32 { @@ -26395,7 +26463,7 @@ type ResCatnipMultiply struct { func (x *ResCatnipMultiply) Reset() { *x = ResCatnipMultiply{} - mi := &file_proto_Gameapi_proto_msgTypes[455] + mi := &file_proto_Gameapi_proto_msgTypes[456] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26407,7 +26475,7 @@ func (x *ResCatnipMultiply) String() string { func (*ResCatnipMultiply) ProtoMessage() {} func (x *ResCatnipMultiply) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[455] + mi := &file_proto_Gameapi_proto_msgTypes[456] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26420,7 +26488,7 @@ func (x *ResCatnipMultiply) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipMultiply.ProtoReflect.Descriptor instead. func (*ResCatnipMultiply) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{455} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{456} } func (x *ResCatnipMultiply) GetCode() RES_CODE { @@ -26447,7 +26515,7 @@ type ReqCatnipPlay struct { func (x *ReqCatnipPlay) Reset() { *x = ReqCatnipPlay{} - mi := &file_proto_Gameapi_proto_msgTypes[456] + mi := &file_proto_Gameapi_proto_msgTypes[457] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26459,7 +26527,7 @@ func (x *ReqCatnipPlay) String() string { func (*ReqCatnipPlay) ProtoMessage() {} func (x *ReqCatnipPlay) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[456] + mi := &file_proto_Gameapi_proto_msgTypes[457] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26472,7 +26540,7 @@ func (x *ReqCatnipPlay) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipPlay.ProtoReflect.Descriptor instead. func (*ReqCatnipPlay) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{456} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{457} } func (x *ReqCatnipPlay) GetId() int32 { @@ -26493,7 +26561,7 @@ type ResCatnipPlay struct { func (x *ResCatnipPlay) Reset() { *x = ResCatnipPlay{} - mi := &file_proto_Gameapi_proto_msgTypes[457] + mi := &file_proto_Gameapi_proto_msgTypes[458] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26505,7 +26573,7 @@ func (x *ResCatnipPlay) String() string { func (*ResCatnipPlay) ProtoMessage() {} func (x *ResCatnipPlay) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[457] + mi := &file_proto_Gameapi_proto_msgTypes[458] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26518,7 +26586,7 @@ func (x *ResCatnipPlay) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipPlay.ProtoReflect.Descriptor instead. func (*ResCatnipPlay) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{457} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{458} } func (x *ResCatnipPlay) GetCode() RES_CODE { @@ -26553,7 +26621,7 @@ type ReqCatnipReward struct { func (x *ReqCatnipReward) Reset() { *x = ReqCatnipReward{} - mi := &file_proto_Gameapi_proto_msgTypes[458] + mi := &file_proto_Gameapi_proto_msgTypes[459] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26565,7 +26633,7 @@ func (x *ReqCatnipReward) String() string { func (*ReqCatnipReward) ProtoMessage() {} func (x *ReqCatnipReward) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[458] + mi := &file_proto_Gameapi_proto_msgTypes[459] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26578,7 +26646,7 @@ func (x *ReqCatnipReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipReward.ProtoReflect.Descriptor instead. func (*ReqCatnipReward) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{458} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{459} } func (x *ReqCatnipReward) GetId() int32 { @@ -26605,7 +26673,7 @@ type ResCatnipReward struct { func (x *ResCatnipReward) Reset() { *x = ResCatnipReward{} - mi := &file_proto_Gameapi_proto_msgTypes[459] + mi := &file_proto_Gameapi_proto_msgTypes[460] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26617,7 +26685,7 @@ func (x *ResCatnipReward) String() string { func (*ResCatnipReward) ProtoMessage() {} func (x *ResCatnipReward) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[459] + mi := &file_proto_Gameapi_proto_msgTypes[460] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26630,7 +26698,7 @@ func (x *ResCatnipReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipReward.ProtoReflect.Descriptor instead. func (*ResCatnipReward) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{459} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{460} } func (x *ResCatnipReward) GetCode() RES_CODE { @@ -26656,7 +26724,7 @@ type ReqCatnipGrandReward struct { func (x *ReqCatnipGrandReward) Reset() { *x = ReqCatnipGrandReward{} - mi := &file_proto_Gameapi_proto_msgTypes[460] + mi := &file_proto_Gameapi_proto_msgTypes[461] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26668,7 +26736,7 @@ func (x *ReqCatnipGrandReward) String() string { func (*ReqCatnipGrandReward) ProtoMessage() {} func (x *ReqCatnipGrandReward) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[460] + mi := &file_proto_Gameapi_proto_msgTypes[461] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26681,7 +26749,7 @@ func (x *ReqCatnipGrandReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipGrandReward.ProtoReflect.Descriptor instead. func (*ReqCatnipGrandReward) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{460} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{461} } type ResCatnipGrandReward struct { @@ -26694,7 +26762,7 @@ type ResCatnipGrandReward struct { func (x *ResCatnipGrandReward) Reset() { *x = ResCatnipGrandReward{} - mi := &file_proto_Gameapi_proto_msgTypes[461] + mi := &file_proto_Gameapi_proto_msgTypes[462] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26706,7 +26774,7 @@ func (x *ResCatnipGrandReward) String() string { func (*ResCatnipGrandReward) ProtoMessage() {} func (x *ResCatnipGrandReward) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[461] + mi := &file_proto_Gameapi_proto_msgTypes[462] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26719,7 +26787,7 @@ func (x *ResCatnipGrandReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipGrandReward.ProtoReflect.Descriptor instead. func (*ResCatnipGrandReward) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{461} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{462} } func (x *ResCatnipGrandReward) GetCode() RES_CODE { @@ -26747,7 +26815,7 @@ type AdminReq struct { func (x *AdminReq) Reset() { *x = AdminReq{} - mi := &file_proto_Gameapi_proto_msgTypes[462] + mi := &file_proto_Gameapi_proto_msgTypes[463] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26759,7 +26827,7 @@ func (x *AdminReq) String() string { func (*AdminReq) ProtoMessage() {} func (x *AdminReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[462] + mi := &file_proto_Gameapi_proto_msgTypes[463] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26772,7 +26840,7 @@ func (x *AdminReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminReq.ProtoReflect.Descriptor instead. func (*AdminReq) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{462} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{463} } func (x *AdminReq) GetFunc() string { @@ -26799,7 +26867,7 @@ type AdminRes struct { func (x *AdminRes) Reset() { *x = AdminRes{} - mi := &file_proto_Gameapi_proto_msgTypes[463] + mi := &file_proto_Gameapi_proto_msgTypes[464] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26811,7 +26879,7 @@ func (x *AdminRes) String() string { func (*AdminRes) ProtoMessage() {} func (x *AdminRes) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[463] + mi := &file_proto_Gameapi_proto_msgTypes[464] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26824,7 +26892,7 @@ func (x *AdminRes) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminRes.ProtoReflect.Descriptor instead. func (*AdminRes) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{463} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{464} } func (x *AdminRes) GetFunc() string { @@ -26850,7 +26918,7 @@ type ReqAdminInfo struct { func (x *ReqAdminInfo) Reset() { *x = ReqAdminInfo{} - mi := &file_proto_Gameapi_proto_msgTypes[464] + mi := &file_proto_Gameapi_proto_msgTypes[465] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26862,7 +26930,7 @@ func (x *ReqAdminInfo) String() string { func (*ReqAdminInfo) ProtoMessage() {} func (x *ReqAdminInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[464] + mi := &file_proto_Gameapi_proto_msgTypes[465] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26875,7 +26943,7 @@ func (x *ReqAdminInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAdminInfo.ProtoReflect.Descriptor instead. func (*ReqAdminInfo) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{464} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{465} } func (x *ReqAdminInfo) GetUid() int64 { @@ -26893,7 +26961,7 @@ type ReqReloadServerMail struct { func (x *ReqReloadServerMail) Reset() { *x = ReqReloadServerMail{} - mi := &file_proto_Gameapi_proto_msgTypes[465] + mi := &file_proto_Gameapi_proto_msgTypes[466] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26905,7 +26973,7 @@ func (x *ReqReloadServerMail) String() string { func (*ReqReloadServerMail) ProtoMessage() {} func (x *ReqReloadServerMail) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[465] + mi := &file_proto_Gameapi_proto_msgTypes[466] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26918,7 +26986,7 @@ func (x *ReqReloadServerMail) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqReloadServerMail.ProtoReflect.Descriptor instead. func (*ReqReloadServerMail) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{465} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{466} } type ReqServerInfo struct { @@ -26929,7 +26997,7 @@ type ReqServerInfo struct { func (x *ReqServerInfo) Reset() { *x = ReqServerInfo{} - mi := &file_proto_Gameapi_proto_msgTypes[466] + mi := &file_proto_Gameapi_proto_msgTypes[467] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26941,7 +27009,7 @@ func (x *ReqServerInfo) String() string { func (*ReqServerInfo) ProtoMessage() {} func (x *ReqServerInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[466] + mi := &file_proto_Gameapi_proto_msgTypes[467] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26954,7 +27022,7 @@ func (x *ReqServerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqServerInfo.ProtoReflect.Descriptor instead. func (*ReqServerInfo) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{466} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{467} } type ReqReload struct { @@ -26965,7 +27033,7 @@ type ReqReload struct { func (x *ReqReload) Reset() { *x = ReqReload{} - mi := &file_proto_Gameapi_proto_msgTypes[467] + mi := &file_proto_Gameapi_proto_msgTypes[468] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26977,7 +27045,7 @@ func (x *ReqReload) String() string { func (*ReqReload) ProtoMessage() {} func (x *ReqReload) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[467] + mi := &file_proto_Gameapi_proto_msgTypes[468] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26990,7 +27058,7 @@ func (x *ReqReload) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqReload.ProtoReflect.Descriptor instead. func (*ReqReload) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{467} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{468} } type ReqAdminGm struct { @@ -27003,7 +27071,7 @@ type ReqAdminGm struct { func (x *ReqAdminGm) Reset() { *x = ReqAdminGm{} - mi := &file_proto_Gameapi_proto_msgTypes[468] + mi := &file_proto_Gameapi_proto_msgTypes[469] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27015,7 +27083,7 @@ func (x *ReqAdminGm) String() string { func (*ReqAdminGm) ProtoMessage() {} func (x *ReqAdminGm) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[468] + mi := &file_proto_Gameapi_proto_msgTypes[469] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27028,7 +27096,7 @@ func (x *ReqAdminGm) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAdminGm.ProtoReflect.Descriptor instead. func (*ReqAdminGm) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{468} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{469} } func (x *ReqAdminGm) GetUid() int64 { @@ -27056,7 +27124,7 @@ type ReqAdminBan struct { func (x *ReqAdminBan) Reset() { *x = ReqAdminBan{} - mi := &file_proto_Gameapi_proto_msgTypes[469] + mi := &file_proto_Gameapi_proto_msgTypes[470] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27068,7 +27136,7 @@ func (x *ReqAdminBan) String() string { func (*ReqAdminBan) ProtoMessage() {} func (x *ReqAdminBan) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[469] + mi := &file_proto_Gameapi_proto_msgTypes[470] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27081,7 +27149,7 @@ func (x *ReqAdminBan) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAdminBan.ProtoReflect.Descriptor instead. func (*ReqAdminBan) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{469} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{470} } func (x *ReqAdminBan) GetUid() int64 { @@ -27116,7 +27184,7 @@ type ReqAdminShipping struct { func (x *ReqAdminShipping) Reset() { *x = ReqAdminShipping{} - mi := &file_proto_Gameapi_proto_msgTypes[470] + mi := &file_proto_Gameapi_proto_msgTypes[471] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27128,7 +27196,7 @@ func (x *ReqAdminShipping) String() string { func (*ReqAdminShipping) ProtoMessage() {} func (x *ReqAdminShipping) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[470] + mi := &file_proto_Gameapi_proto_msgTypes[471] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27141,7 +27209,7 @@ func (x *ReqAdminShipping) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAdminShipping.ProtoReflect.Descriptor instead. func (*ReqAdminShipping) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{470} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{471} } func (x *ReqAdminShipping) GetOrderSn() string { @@ -29074,20 +29142,28 @@ const file_proto_Gameapi_proto_rawDesc = "" + "ResCollect\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\v\n" + - "\tReqCatnip\"\x9b\x01\n" + + "\tReqCatnip\"\xb7\x01\n" + "\tResCatnip\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x16\n" + "\x06Status\x18\x02 \x01(\x05R\x06Status\x12\x18\n" + "\aEndTime\x18\x03 \x01(\x05R\aEndTime\x12\x1a\n" + "\bTemplate\x18\x04 \x01(\x05R\bTemplate\x120\n" + - "\bGameList\x18\x05 \x03(\v2\x14.tutorial.CatnipGameR\bGameList\"\x9d\x01\n" + + "\bGameList\x18\x05 \x03(\v2\x14.tutorial.CatnipGameR\bGameList\x12\x1a\n" + + "\bMultiply\x18\x06 \x01(\x05R\bMultiply\"\x91\x02\n" + "\n" + "CatnipGame\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x16\n" + "\x06Status\x18\x02 \x01(\x05R\x06Status\x12\x1a\n" + "\bProgress\x18\x03 \x01(\x05R\bProgress\x12\x16\n" + "\x06Reward\x18\x04 \x03(\x05R\x06Reward\x123\n" + - "\aPartner\x18\x05 \x01(\v2\x19.tutorial.ResPlayerSimpleR\aPartner\"3\n" + + "\aPartner\x18\x05 \x01(\v2\x19.tutorial.ResPlayerSimpleR\aPartner\x126\n" + + "\n" + + "InviteList\x18\x06 \x03(\v2\x16.tutorial.CatnipInviteR\n" + + "InviteList\x12:\n" + + "\fBeInviteList\x18\a \x03(\v2\x16.tutorial.CatnipInviteR\fBeInviteList\"4\n" + + "\fCatnipInvite\x12\x10\n" + + "\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x12\n" + + "\x04Time\x18\x02 \x01(\x03R\x04Time\"3\n" + "\x0fReqCatnipInvite\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"K\n" + @@ -29105,10 +29181,9 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"K\n" + "\x0fResCatnipRefuse\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"?\n" + - "\x11ReqCatnipMultiply\x12\x0e\n" + - "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x1a\n" + - "\bMultiply\x18\x02 \x01(\x05R\bMultiply\"M\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"/\n" + + "\x11ReqCatnipMultiply\x12\x1a\n" + + "\bMultiply\x18\x01 \x01(\x05R\bMultiply\"M\n" + "\x11ResCatnipMultiply\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\x1f\n" + @@ -29392,7 +29467,7 @@ func file_proto_Gameapi_proto_rawDescGZIP() []byte { } var file_proto_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 12) -var file_proto_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 541) +var file_proto_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 542) var file_proto_Gameapi_proto_goTypes = []any{ (ITEM_POP_LABEL)(0), // 0: tutorial.ITEM_POP_LABEL (HANDLE_TYPE)(0), // 1: tutorial.HANDLE_TYPE @@ -29854,136 +29929,137 @@ var file_proto_Gameapi_proto_goTypes = []any{ (*ReqCatnip)(nil), // 457: tutorial.ReqCatnip (*ResCatnip)(nil), // 458: tutorial.ResCatnip (*CatnipGame)(nil), // 459: tutorial.CatnipGame - (*ReqCatnipInvite)(nil), // 460: tutorial.ReqCatnipInvite - (*ResCatnipInvite)(nil), // 461: tutorial.ResCatnipInvite - (*ReqCatnipAgree)(nil), // 462: tutorial.ReqCatnipAgree - (*ResCatnipAgree)(nil), // 463: tutorial.ResCatnipAgree - (*ReqCatnipRefuse)(nil), // 464: tutorial.ReqCatnipRefuse - (*ResCatnipRefuse)(nil), // 465: tutorial.ResCatnipRefuse - (*ReqCatnipMultiply)(nil), // 466: tutorial.ReqCatnipMultiply - (*ResCatnipMultiply)(nil), // 467: tutorial.ResCatnipMultiply - (*ReqCatnipPlay)(nil), // 468: tutorial.ReqCatnipPlay - (*ResCatnipPlay)(nil), // 469: tutorial.ResCatnipPlay - (*ReqCatnipReward)(nil), // 470: tutorial.ReqCatnipReward - (*ResCatnipReward)(nil), // 471: tutorial.ResCatnipReward - (*ReqCatnipGrandReward)(nil), // 472: tutorial.ReqCatnipGrandReward - (*ResCatnipGrandReward)(nil), // 473: tutorial.ResCatnipGrandReward - (*AdminReq)(nil), // 474: tutorial.AdminReq - (*AdminRes)(nil), // 475: tutorial.AdminRes - (*ReqAdminInfo)(nil), // 476: tutorial.ReqAdminInfo - (*ReqReloadServerMail)(nil), // 477: tutorial.ReqReloadServerMail - (*ReqServerInfo)(nil), // 478: tutorial.ReqServerInfo - (*ReqReload)(nil), // 479: tutorial.ReqReload - (*ReqAdminGm)(nil), // 480: tutorial.ReqAdminGm - (*ReqAdminBan)(nil), // 481: tutorial.ReqAdminBan - (*ReqAdminShipping)(nil), // 482: tutorial.ReqAdminShipping - nil, // 483: tutorial.ResChessColorData.MChessColorDataEntry - nil, // 484: tutorial.UpdateBaseItemInfo.MUpdateItemEntry - nil, // 485: tutorial.ResPlayerChessData.MChessDataEntry - nil, // 486: tutorial.ReqPutPartInBag.MChessDataEntry - nil, // 487: tutorial.UpdatePlayerChessData.MChessDataEntry - nil, // 488: tutorial.ReqSeparateChess.MChessDataEntry - nil, // 489: tutorial.ReqUpgradeChess.MChessDataEntry - nil, // 490: tutorial.ReqGetChessFromBuff.MChessDataEntry - nil, // 491: tutorial.ReqChessEx.MChessDataEntry - nil, // 492: tutorial.ReqSourceChest.MChessDataEntry - nil, // 493: tutorial.ReqPlayroomOutline.MChessDataEntry - nil, // 494: tutorial.ReqPutChessInBag.MChessDataEntry - nil, // 495: tutorial.ReqTakeChessOutBag.MChessDataEntry - nil, // 496: tutorial.ResPlayerBriefProfileData.SetEmojiEntry - nil, // 497: tutorial.UserInfo.SetEmojiEntry - nil, // 498: tutorial.ReqRewardOrder.MChessDataEntry - nil, // 499: tutorial.ResCardInfo.AllCardEntry - nil, // 500: tutorial.ResCardInfo.HandbookEntry - nil, // 501: tutorial.ResGuildInfo.RewardEntry - nil, // 502: tutorial.ResGuideInfo.RewardEntry - nil, // 503: tutorial.ResGuideTask.TaskEntry - nil, // 504: tutorial.ResDailyTask.WeekRewardEntry - nil, // 505: tutorial.ResDailyTask.DailyTaskEntry - nil, // 506: tutorial.ResLimitEvent.LimitEventListEntry - nil, // 507: tutorial.ResLimitEventProgress.ProgressRewardEntry - nil, // 508: tutorial.LimitEvent.ParamEntry - nil, // 509: tutorial.ReqLimitEventLuckyCat.MChessDataEntry - nil, // 510: tutorial.ResFriendPlayerSimple.EmojiEntry - nil, // 511: tutorial.ResFriendPlayerSimple.PlayroomEntry - nil, // 512: tutorial.ResFriendPlayerSimple.DressSetEntry - nil, // 513: tutorial.ResFriendPlayerSimple.PhysiologyEntry - nil, // 514: tutorial.ResPlayerSimple.EmojiEntry - nil, // 515: tutorial.ResKv.KvEntry - nil, // 516: tutorial.ResRank.RankListEntry - nil, // 517: tutorial.ResMailList.MailListEntry - nil, // 518: tutorial.ResCharge.SpecialShopEntry - nil, // 519: tutorial.ResCharge.ChessShopEntry - nil, // 520: tutorial.ResCharge.GiftEntry - nil, // 521: tutorial.ResCharge.WeeklyDiscountEntry - nil, // 522: tutorial.ReqBuyChessShop2.MChessDataEntry - nil, // 523: tutorial.ResEndless.EndlessListEntry - nil, // 524: tutorial.ResChampshipRank.RankListEntry - nil, // 525: tutorial.ResChampshipPreRank.RankListEntry - nil, // 526: tutorial.ResNotifyCard.CardEntry - nil, // 527: tutorial.ResNotifyCard.MasterEntry - nil, // 528: tutorial.ResNotifyCard.HandbookEntry - nil, // 529: tutorial.ResMining.MapEntry - nil, // 530: tutorial.ReqMiningTake.MapEntry - nil, // 531: tutorial.ResActRed.RedEntry - nil, // 532: tutorial.ResItem.ItemEntry - nil, // 533: tutorial.ItemNotify.ItemEntry - nil, // 534: tutorial.ResGuessColor.OMapEntry - nil, // 535: tutorial.ReqGuessColorTake.OMapEntry - nil, // 536: tutorial.GuessColorInfo.MapEntry - nil, // 537: tutorial.ResPlayroom.PlayroomEntry - nil, // 538: tutorial.ResPlayroom.MoodEntry - nil, // 539: tutorial.ResPlayroom.PhysiologyEntry - nil, // 540: tutorial.ResPlayroom.DressEntry - nil, // 541: tutorial.ResPlayroom.DressSetEntry - nil, // 542: tutorial.ResPlayroom.WeeklyDiscountEntry - nil, // 543: tutorial.ReqPlayroomDressSet.DressSetEntry - nil, // 544: tutorial.NotifyPlayroomMood.MoodEntry - nil, // 545: tutorial.NotifyPlayroomMood.PhysiologyEntry - nil, // 546: tutorial.ResPlayroomInfo.PlayroomEntry - nil, // 547: tutorial.ResPlayroomInfo.ItemsEntry - nil, // 548: tutorial.ResPlayroomInfo.FlipEntry - nil, // 549: tutorial.ResPlayroomInfo.EmojiEntry - nil, // 550: tutorial.ResPlayroomInfo.DressSetEntry - nil, // 551: tutorial.ResPlayroomGame.ItemsEntry - nil, // 552: tutorial.ReqPlayroomSetRoom.PlayroomEntry + (*CatnipInvite)(nil), // 460: tutorial.CatnipInvite + (*ReqCatnipInvite)(nil), // 461: tutorial.ReqCatnipInvite + (*ResCatnipInvite)(nil), // 462: tutorial.ResCatnipInvite + (*ReqCatnipAgree)(nil), // 463: tutorial.ReqCatnipAgree + (*ResCatnipAgree)(nil), // 464: tutorial.ResCatnipAgree + (*ReqCatnipRefuse)(nil), // 465: tutorial.ReqCatnipRefuse + (*ResCatnipRefuse)(nil), // 466: tutorial.ResCatnipRefuse + (*ReqCatnipMultiply)(nil), // 467: tutorial.ReqCatnipMultiply + (*ResCatnipMultiply)(nil), // 468: tutorial.ResCatnipMultiply + (*ReqCatnipPlay)(nil), // 469: tutorial.ReqCatnipPlay + (*ResCatnipPlay)(nil), // 470: tutorial.ResCatnipPlay + (*ReqCatnipReward)(nil), // 471: tutorial.ReqCatnipReward + (*ResCatnipReward)(nil), // 472: tutorial.ResCatnipReward + (*ReqCatnipGrandReward)(nil), // 473: tutorial.ReqCatnipGrandReward + (*ResCatnipGrandReward)(nil), // 474: tutorial.ResCatnipGrandReward + (*AdminReq)(nil), // 475: tutorial.AdminReq + (*AdminRes)(nil), // 476: tutorial.AdminRes + (*ReqAdminInfo)(nil), // 477: tutorial.ReqAdminInfo + (*ReqReloadServerMail)(nil), // 478: tutorial.ReqReloadServerMail + (*ReqServerInfo)(nil), // 479: tutorial.ReqServerInfo + (*ReqReload)(nil), // 480: tutorial.ReqReload + (*ReqAdminGm)(nil), // 481: tutorial.ReqAdminGm + (*ReqAdminBan)(nil), // 482: tutorial.ReqAdminBan + (*ReqAdminShipping)(nil), // 483: tutorial.ReqAdminShipping + nil, // 484: tutorial.ResChessColorData.MChessColorDataEntry + nil, // 485: tutorial.UpdateBaseItemInfo.MUpdateItemEntry + nil, // 486: tutorial.ResPlayerChessData.MChessDataEntry + nil, // 487: tutorial.ReqPutPartInBag.MChessDataEntry + nil, // 488: tutorial.UpdatePlayerChessData.MChessDataEntry + nil, // 489: tutorial.ReqSeparateChess.MChessDataEntry + nil, // 490: tutorial.ReqUpgradeChess.MChessDataEntry + nil, // 491: tutorial.ReqGetChessFromBuff.MChessDataEntry + nil, // 492: tutorial.ReqChessEx.MChessDataEntry + nil, // 493: tutorial.ReqSourceChest.MChessDataEntry + nil, // 494: tutorial.ReqPlayroomOutline.MChessDataEntry + nil, // 495: tutorial.ReqPutChessInBag.MChessDataEntry + nil, // 496: tutorial.ReqTakeChessOutBag.MChessDataEntry + nil, // 497: tutorial.ResPlayerBriefProfileData.SetEmojiEntry + nil, // 498: tutorial.UserInfo.SetEmojiEntry + nil, // 499: tutorial.ReqRewardOrder.MChessDataEntry + nil, // 500: tutorial.ResCardInfo.AllCardEntry + nil, // 501: tutorial.ResCardInfo.HandbookEntry + nil, // 502: tutorial.ResGuildInfo.RewardEntry + nil, // 503: tutorial.ResGuideInfo.RewardEntry + nil, // 504: tutorial.ResGuideTask.TaskEntry + nil, // 505: tutorial.ResDailyTask.WeekRewardEntry + nil, // 506: tutorial.ResDailyTask.DailyTaskEntry + nil, // 507: tutorial.ResLimitEvent.LimitEventListEntry + nil, // 508: tutorial.ResLimitEventProgress.ProgressRewardEntry + nil, // 509: tutorial.LimitEvent.ParamEntry + nil, // 510: tutorial.ReqLimitEventLuckyCat.MChessDataEntry + nil, // 511: tutorial.ResFriendPlayerSimple.EmojiEntry + nil, // 512: tutorial.ResFriendPlayerSimple.PlayroomEntry + nil, // 513: tutorial.ResFriendPlayerSimple.DressSetEntry + nil, // 514: tutorial.ResFriendPlayerSimple.PhysiologyEntry + nil, // 515: tutorial.ResPlayerSimple.EmojiEntry + nil, // 516: tutorial.ResKv.KvEntry + nil, // 517: tutorial.ResRank.RankListEntry + nil, // 518: tutorial.ResMailList.MailListEntry + nil, // 519: tutorial.ResCharge.SpecialShopEntry + nil, // 520: tutorial.ResCharge.ChessShopEntry + nil, // 521: tutorial.ResCharge.GiftEntry + nil, // 522: tutorial.ResCharge.WeeklyDiscountEntry + nil, // 523: tutorial.ReqBuyChessShop2.MChessDataEntry + nil, // 524: tutorial.ResEndless.EndlessListEntry + nil, // 525: tutorial.ResChampshipRank.RankListEntry + nil, // 526: tutorial.ResChampshipPreRank.RankListEntry + nil, // 527: tutorial.ResNotifyCard.CardEntry + nil, // 528: tutorial.ResNotifyCard.MasterEntry + nil, // 529: tutorial.ResNotifyCard.HandbookEntry + nil, // 530: tutorial.ResMining.MapEntry + nil, // 531: tutorial.ReqMiningTake.MapEntry + nil, // 532: tutorial.ResActRed.RedEntry + nil, // 533: tutorial.ResItem.ItemEntry + nil, // 534: tutorial.ItemNotify.ItemEntry + nil, // 535: tutorial.ResGuessColor.OMapEntry + nil, // 536: tutorial.ReqGuessColorTake.OMapEntry + nil, // 537: tutorial.GuessColorInfo.MapEntry + nil, // 538: tutorial.ResPlayroom.PlayroomEntry + nil, // 539: tutorial.ResPlayroom.MoodEntry + nil, // 540: tutorial.ResPlayroom.PhysiologyEntry + nil, // 541: tutorial.ResPlayroom.DressEntry + nil, // 542: tutorial.ResPlayroom.DressSetEntry + nil, // 543: tutorial.ResPlayroom.WeeklyDiscountEntry + nil, // 544: tutorial.ReqPlayroomDressSet.DressSetEntry + nil, // 545: tutorial.NotifyPlayroomMood.MoodEntry + nil, // 546: tutorial.NotifyPlayroomMood.PhysiologyEntry + nil, // 547: tutorial.ResPlayroomInfo.PlayroomEntry + nil, // 548: tutorial.ResPlayroomInfo.ItemsEntry + nil, // 549: tutorial.ResPlayroomInfo.FlipEntry + nil, // 550: tutorial.ResPlayroomInfo.EmojiEntry + nil, // 551: tutorial.ResPlayroomInfo.DressSetEntry + nil, // 552: tutorial.ResPlayroomGame.ItemsEntry + nil, // 553: tutorial.ReqPlayroomSetRoom.PlayroomEntry } var file_proto_Gameapi_proto_depIdxs = []int32{ - 483, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry + 484, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry 6, // 1: tutorial.ReqLogin.type:type_name -> tutorial.LOGIN_TYPE 2, // 2: tutorial.ResId2Verify.ResultCode:type_name -> tutorial.RES_CODE - 484, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry - 485, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry + 485, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry + 486, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry 72, // 5: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag 53, // 6: tutorial.ResPlayerChessInfo.PartBag:type_name -> tutorial.PartBag 2, // 7: tutorial.ResGetChessRetireReward.code:type_name -> tutorial.RES_CODE 54, // 8: tutorial.PartBag.PartBagGrids:type_name -> tutorial.PartBagGrid - 486, // 9: tutorial.ReqPutPartInBag.mChessData:type_name -> tutorial.ReqPutPartInBag.MChessDataEntry + 487, // 9: tutorial.ReqPutPartInBag.mChessData:type_name -> tutorial.ReqPutPartInBag.MChessDataEntry 2, // 10: tutorial.ResPutPartInBag.code:type_name -> tutorial.RES_CODE 1, // 11: tutorial.ChessHandle.type:type_name -> tutorial.HANDLE_TYPE - 487, // 12: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry + 488, // 12: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry 57, // 13: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle 2, // 14: tutorial.ResUpdatePlayerChessData.code:type_name -> tutorial.RES_CODE - 488, // 15: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry + 489, // 15: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry 2, // 16: tutorial.ResSeparateChess.code:type_name -> tutorial.RES_CODE - 489, // 17: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry + 490, // 17: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry 2, // 18: tutorial.ResUpgradeChess.code:type_name -> tutorial.RES_CODE - 490, // 19: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry + 491, // 19: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry 2, // 20: tutorial.ResGetChessFromBuff.code:type_name -> tutorial.RES_CODE 8, // 21: tutorial.ReqChessEx.Type:type_name -> tutorial.CHESS_EX_TYPE - 491, // 22: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry + 492, // 22: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry 2, // 23: tutorial.ResChessEx.code:type_name -> tutorial.RES_CODE - 492, // 24: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry + 493, // 24: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry 2, // 25: tutorial.ResSourceChest.code:type_name -> tutorial.RES_CODE - 493, // 26: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry + 494, // 26: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry 2, // 27: tutorial.ResPlayroomOutline.code:type_name -> tutorial.RES_CODE 73, // 28: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid - 494, // 29: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry + 495, // 29: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry 2, // 30: tutorial.ResPutChessInBag.code:type_name -> tutorial.RES_CODE - 495, // 31: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry + 496, // 31: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry 2, // 32: tutorial.ResTakeChessOutBag.code:type_name -> tutorial.RES_CODE 2, // 33: tutorial.ResBuyChessBagGrid.code:type_name -> tutorial.RES_CODE - 496, // 34: tutorial.ResPlayerBriefProfileData.SetEmoji:type_name -> tutorial.ResPlayerBriefProfileData.SetEmojiEntry + 497, // 34: tutorial.ResPlayerBriefProfileData.SetEmoji:type_name -> tutorial.ResPlayerBriefProfileData.SetEmojiEntry 2, // 35: tutorial.ResSetEnergyMul.ResultCode:type_name -> tutorial.RES_CODE 9, // 36: tutorial.ReqLang.Lang:type_name -> tutorial.LANG_TYPE 2, // 37: tutorial.ResLang.ResultCode:type_name -> tutorial.RES_CODE @@ -29991,7 +30067,7 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 191, // 39: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo 187, // 40: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo 194, // 41: tutorial.UserInfo.EmojiList:type_name -> tutorial.EmojiInfo - 497, // 42: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry + 498, // 42: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry 2, // 43: tutorial.ResSetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 44: tutorial.ResSetPetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 45: tutorial.ResBuyEnergy.Code:type_name -> tutorial.RES_CODE @@ -29999,7 +30075,7 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 47: tutorial.ResGetHandbookReward.Code:type_name -> tutorial.RES_CODE 101, // 48: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo 2, // 49: tutorial.ResHandbookAllReward.Code:type_name -> tutorial.RES_CODE - 498, // 50: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry + 499, // 50: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry 2, // 51: tutorial.ResRewardOrder.Code:type_name -> tutorial.RES_CODE 2, // 52: tutorial.ResDelOrder.Code:type_name -> tutorial.RES_CODE 168, // 53: tutorial.Order.Items:type_name -> tutorial.ItemInfo @@ -30010,8 +30086,8 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 58: tutorial.ResDecorateAll.Code:type_name -> tutorial.RES_CODE 2, // 59: tutorial.ResDecorateReward.Code:type_name -> tutorial.RES_CODE 123, // 60: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card - 499, // 61: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry - 500, // 62: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry + 500, // 61: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry + 501, // 62: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry 2, // 63: tutorial.ResCardSeasonFirstReward.Code:type_name -> tutorial.RES_CODE 2, // 64: tutorial.ResCardHandbookReward.Code:type_name -> tutorial.RES_CODE 2, // 65: tutorial.ResMasterCard.Code:type_name -> tutorial.RES_CODE @@ -30030,16 +30106,16 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 78: tutorial.ResGetFriendCard.Code:type_name -> tutorial.RES_CODE 2, // 79: tutorial.ResGuideReward.Code:type_name -> tutorial.RES_CODE 2, // 80: tutorial.ResGuidePlayroom.Code:type_name -> tutorial.RES_CODE - 501, // 81: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry - 502, // 82: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry + 502, // 81: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry + 503, // 82: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry 168, // 83: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo 169, // 84: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack - 503, // 85: tutorial.ResGuideTask.Task:type_name -> tutorial.ResGuideTask.TaskEntry + 504, // 85: tutorial.ResGuideTask.Task:type_name -> tutorial.ResGuideTask.TaskEntry 179, // 86: tutorial.GuideTask.Progress:type_name -> tutorial.QuestProgress 2, // 87: tutorial.ResGetGuideTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 88: tutorial.ResGetGuideActiveReward.Code:type_name -> tutorial.RES_CODE - 504, // 89: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry - 505, // 90: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry + 505, // 89: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry + 506, // 90: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry 168, // 91: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo 179, // 92: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress 168, // 93: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo @@ -30060,30 +30136,30 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 108: tutorial.ResGetMonthLoginReward.Code:type_name -> tutorial.RES_CODE 204, // 109: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo 2, // 110: tutorial.ResActivityReward.Code:type_name -> tutorial.RES_CODE - 506, // 111: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry - 507, // 112: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry + 507, // 111: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry + 508, // 112: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry 2, // 113: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE 2, // 114: tutorial.ResSelectLimitEvent.Code:type_name -> tutorial.RES_CODE - 508, // 115: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry - 509, // 116: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry + 509, // 115: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry + 510, // 116: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry 2, // 117: tutorial.ResLimitEventLuckyCat.Code:type_name -> tutorial.RES_CODE 2, // 118: tutorial.ResLimitSenceReward.Code:type_name -> tutorial.RES_CODE 168, // 119: tutorial.ResChessRainReward.Items:type_name -> tutorial.ItemInfo 2, // 120: tutorial.ResFastProduceReward.Code:type_name -> tutorial.RES_CODE 2, // 121: tutorial.ResCatTrickReward.Code:type_name -> tutorial.RES_CODE 231, // 122: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple - 510, // 123: tutorial.ResFriendPlayerSimple.Emoji:type_name -> tutorial.ResFriendPlayerSimple.EmojiEntry - 511, // 124: tutorial.ResFriendPlayerSimple.Playroom:type_name -> tutorial.ResFriendPlayerSimple.PlayroomEntry - 512, // 125: tutorial.ResFriendPlayerSimple.DressSet:type_name -> tutorial.ResFriendPlayerSimple.DressSetEntry + 511, // 123: tutorial.ResFriendPlayerSimple.Emoji:type_name -> tutorial.ResFriendPlayerSimple.EmojiEntry + 512, // 124: tutorial.ResFriendPlayerSimple.Playroom:type_name -> tutorial.ResFriendPlayerSimple.PlayroomEntry + 513, // 125: tutorial.ResFriendPlayerSimple.DressSet:type_name -> tutorial.ResFriendPlayerSimple.DressSetEntry 232, // 126: tutorial.ResFriendPlayerSimple.Last:type_name -> tutorial.ActLog - 513, // 127: tutorial.ResFriendPlayerSimple.Physiology:type_name -> tutorial.ResFriendPlayerSimple.PhysiologyEntry - 514, // 128: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry + 514, // 127: tutorial.ResFriendPlayerSimple.Physiology:type_name -> tutorial.ResFriendPlayerSimple.PhysiologyEntry + 515, // 128: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry 231, // 129: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple 234, // 130: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog 236, // 131: tutorial.NotifyFriendLog.Bubble:type_name -> tutorial.FriendBubbleInfo 168, // 132: tutorial.FriendBubbleInfo.Items:type_name -> tutorial.ItemInfo 238, // 133: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard - 515, // 134: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry + 516, // 134: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry 2, // 135: tutorial.ResFriendByCode.Code:type_name -> tutorial.RES_CODE 231, // 136: tutorial.ResFriendByCode.Player:type_name -> tutorial.ResPlayerSimple 231, // 137: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple @@ -30108,27 +30184,27 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 231, // 156: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple 2, // 157: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE 2, // 158: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE - 516, // 159: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry - 517, // 160: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry + 517, // 159: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry + 518, // 160: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry 168, // 161: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo 283, // 162: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo 2, // 163: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE 2, // 164: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE 2, // 165: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE - 518, // 166: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry - 519, // 167: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry - 520, // 168: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry + 519, // 166: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry + 520, // 167: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry + 521, // 168: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry 294, // 169: tutorial.ResCharge.Wish:type_name -> tutorial.WishList - 521, // 170: tutorial.ResCharge.WeeklyDiscount:type_name -> tutorial.ResCharge.WeeklyDiscountEntry + 522, // 170: tutorial.ResCharge.WeeklyDiscount:type_name -> tutorial.ResCharge.WeeklyDiscountEntry 2, // 171: tutorial.ResAddWish.Code:type_name -> tutorial.RES_CODE 2, // 172: tutorial.ResGetWish.Code:type_name -> tutorial.RES_CODE 2, // 173: tutorial.ResSendWishBeg.Code:type_name -> tutorial.RES_CODE 2, // 174: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE 2, // 175: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE - 522, // 176: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry + 523, // 176: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry 2, // 177: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE 2, // 178: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE - 523, // 179: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry + 524, // 179: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry 168, // 180: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo 2, // 181: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE 2, // 182: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE @@ -30136,27 +30212,27 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 184: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE 2, // 185: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE 2, // 186: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE - 524, // 187: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry - 525, // 188: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry - 526, // 189: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry - 527, // 190: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry - 528, // 191: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry + 525, // 187: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry + 526, // 188: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry + 527, // 189: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry + 528, // 190: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry + 529, // 191: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry 2, // 192: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE - 529, // 193: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry - 530, // 194: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry + 530, // 193: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry + 531, // 194: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry 2, // 195: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE 2, // 196: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE 2, // 197: tutorial.ResActPassReward.Code:type_name -> tutorial.RES_CODE - 531, // 198: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry + 532, // 198: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry 204, // 199: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo - 532, // 200: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry - 533, // 201: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry + 533, // 200: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry + 534, // 201: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry 368, // 202: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo - 534, // 203: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry + 535, // 203: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry 366, // 204: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent 368, // 205: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.GuessColorInfo - 535, // 206: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry - 536, // 207: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry + 536, // 206: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry + 537, // 207: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry 2, // 208: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE 2, // 209: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE 374, // 210: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent @@ -30165,47 +30241,47 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 168, // 213: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo 408, // 214: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent 407, // 215: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom - 537, // 216: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry + 538, // 216: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry 393, // 217: tutorial.ResPlayroom.collect:type_name -> tutorial.PlayroomCollectInfo - 538, // 218: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry + 539, // 218: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry 168, // 219: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo 403, // 220: tutorial.ResPlayroom.Chip:type_name -> tutorial.ChipInfo - 539, // 221: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry - 540, // 222: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry - 541, // 223: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry + 540, // 221: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry + 541, // 222: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry + 542, // 223: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry 392, // 224: tutorial.ResPlayroom.PetAir:type_name -> tutorial.PlayroomAirInfo 178, // 225: tutorial.ResPlayroom.DailyTask:type_name -> tutorial.DailyTask 405, // 226: tutorial.ResPlayroom.AdItem:type_name -> tutorial.AdItem 407, // 227: tutorial.ResPlayroom.Target:type_name -> tutorial.FriendRoom - 542, // 228: tutorial.ResPlayroom.WeeklyDiscount:type_name -> tutorial.ResPlayroom.WeeklyDiscountEntry + 543, // 228: tutorial.ResPlayroom.WeeklyDiscount:type_name -> tutorial.ResPlayroom.WeeklyDiscountEntry 178, // 229: tutorial.NotifyPlayroomTask.DailyTask:type_name -> tutorial.DailyTask 2, // 230: tutorial.ResPlayroomTask.Code:type_name -> tutorial.RES_CODE 2, // 231: tutorial.ResPlayroomTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 232: tutorial.ResPlayroomUnlock.Code:type_name -> tutorial.RES_CODE 2, // 233: tutorial.ResPlayroomUpvote.Code:type_name -> tutorial.RES_CODE 391, // 234: tutorial.PlayroomDress.List:type_name -> tutorial.PlayroomDressInfo - 543, // 235: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry + 544, // 235: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry 2, // 236: tutorial.ResPlayroomDressSet.Code:type_name -> tutorial.RES_CODE 2, // 237: tutorial.ResPlayroomPetAirSet.Code:type_name -> tutorial.RES_CODE 2, // 238: tutorial.ResPlayroomWrokOutline.Code:type_name -> tutorial.RES_CODE 168, // 239: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo 403, // 240: tutorial.NotifyPlayroomLose.Chip:type_name -> tutorial.ChipInfo - 544, // 241: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry - 545, // 242: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry + 545, // 241: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry + 546, // 242: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry 405, // 243: tutorial.NotifyPlayroomMood.AdItem:type_name -> tutorial.AdItem - 546, // 244: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry - 547, // 245: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry - 548, // 246: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry - 549, // 247: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry - 550, // 248: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry + 547, // 244: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry + 548, // 245: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry + 549, // 246: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry + 550, // 247: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry + 551, // 248: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry 2, // 249: tutorial.ResPlayroomFlip.Code:type_name -> tutorial.RES_CODE 2, // 250: tutorial.ResPlayroomGuide.Code:type_name -> tutorial.RES_CODE 2, // 251: tutorial.ResPlayroomFlipReward.Code:type_name -> tutorial.RES_CODE 2, // 252: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE - 551, // 253: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry + 552, // 253: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry 168, // 254: tutorial.ResPlayroomGameShowReward.Items:type_name -> tutorial.ItemInfo 2, // 255: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE - 552, // 256: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry + 553, // 256: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry 2, // 257: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE 2, // 258: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE 2, // 259: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE @@ -30225,34 +30301,36 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 273: tutorial.ResCollect.Code:type_name -> tutorial.RES_CODE 459, // 274: tutorial.ResCatnip.GameList:type_name -> tutorial.CatnipGame 231, // 275: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple - 2, // 276: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE - 2, // 277: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE - 2, // 278: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE - 2, // 279: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE - 2, // 280: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE - 2, // 281: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE - 2, // 282: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE - 171, // 283: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask - 177, // 284: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek - 178, // 285: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask - 214, // 286: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent - 231, // 287: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple - 283, // 288: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo - 301, // 289: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop - 302, // 290: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop - 293, // 291: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 313, // 292: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo - 233, // 293: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 233, // 294: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 390, // 295: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress - 293, // 296: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 168, // 297: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo - 168, // 298: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo - 299, // [299:299] is the sub-list for method output_type - 299, // [299:299] is the sub-list for method input_type - 299, // [299:299] is the sub-list for extension type_name - 299, // [299:299] is the sub-list for extension extendee - 0, // [0:299] is the sub-list for field type_name + 460, // 276: tutorial.CatnipGame.InviteList:type_name -> tutorial.CatnipInvite + 460, // 277: tutorial.CatnipGame.BeInviteList:type_name -> tutorial.CatnipInvite + 2, // 278: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE + 2, // 279: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE + 2, // 280: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE + 2, // 281: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE + 2, // 282: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE + 2, // 283: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE + 2, // 284: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE + 171, // 285: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask + 177, // 286: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 178, // 287: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 214, // 288: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 231, // 289: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 283, // 290: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 301, // 291: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 302, // 292: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 293, // 293: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 313, // 294: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 233, // 295: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 233, // 296: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 390, // 297: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress + 293, // 298: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 168, // 299: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo + 168, // 300: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo + 301, // [301:301] is the sub-list for method output_type + 301, // [301:301] is the sub-list for method input_type + 301, // [301:301] is the sub-list for extension type_name + 301, // [301:301] is the sub-list for extension extendee + 0, // [0:301] is the sub-list for field type_name } func init() { file_proto_Gameapi_proto_init() } @@ -30266,7 +30344,7 @@ func file_proto_Gameapi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_Gameapi_proto_rawDesc), len(file_proto_Gameapi_proto_rawDesc)), NumEnums: 12, - NumMessages: 541, + NumMessages: 542, NumExtensions: 0, NumServices: 0, }, From f8363ff994115bad7ff40b9ac8a86f81030c2ebf Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 4 Dec 2025 17:54:41 +0800 Subject: [PATCH 18/49] =?UTF-8?q?=E7=8C=AB=E8=8D=89=E5=A4=A7=E4=BD=9C?= =?UTF-8?q?=E6=88=98-=E5=A5=BD=E5=8F=8B=E5=90=8C=E6=84=8F=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/GameLogic.go | 17 +++++++- src/server/game/PlayerFunc.go | 4 +- src/server/game/RegisterNetworkFunc.go | 58 ++++++++++++++++++++++++-- src/server/game/VarMgr.go | 26 ++++++++++++ src/server/game/mod/friend/Friend.go | 5 ++- src/server/game/mod/msg/Msg.go | 2 +- 6 files changed, 104 insertions(+), 8 deletions(-) diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 373faf68..9b12ef09 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -287,7 +287,7 @@ func (ad *GameLogic) SetUserData(Uid int, Op int, Data interface{}) { } func (ad *GameLogic) SetDataSync(Uid int, Op int, Data interface{}) error { - _, err := ad.FriendMgr.Call(&MsgMod.Msg{ + _, err := ad.VarMgr.Call(&MsgMod.Msg{ From: Uid, To: Uid, Type: MsgMod.HANDLE_TYPE_VAR_EXPIRE_SET, @@ -297,6 +297,21 @@ func (ad *GameLogic) SetDataSync(Uid int, Op int, Data interface{}) error { return err } +func (ad *GameLogic) SetCatnipPartner(Uid int, GameId int, PartnerUid int) error { + _, err := ad.VarMgr.Call(&MsgMod.Msg{ + From: Uid, + To: Uid, + Type: MsgMod.HANDLE_TYPE_SET_CATNIP_PARTNER, + SendT: GoUtil.Now(), + Extra: map[string]interface{}{ + "uid": Uid, + "game_id": GameId, + "partner_uid": PartnerUid, + }, + }) + return err +} + func (ad *GameLogic) GetUserData(Uid int) *VarUserData { result, err := ad.FriendMgr.Call(&MsgMod.Msg{ From: Uid, diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index a53c36c8..6146cf17 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -332,6 +332,8 @@ func handle(p *Player, m *msg.Msg) error { return nil } CatnipMod.BeInvited(CatnipMsg.GameId, int(m.From), m.SendT) + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", CatnipMsg.GameId), m.End) case msg.HANDLE_TYPE_CATNIP_AGREE: // 同意好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() CatnipMsgInfo := m.Extra.(CatnipMsg) @@ -379,7 +381,7 @@ func handle(p *Player, m *msg.Msg) error { case msg.HANDLE_TYPE_FRIEND_GREETING_REPLY: FriendMod := p.PlayMod.getFriendMod() if v, ok := m.Extra.(friend.ReplyInfo); ok { - FriendMod.AddReplyInfo(v.Uid, v.Type, v.Param) + FriendMod.AddReplyInfo(v.Uid, v.Type, v.Param, GoUtil.Now()+24*3600) FriendLogBackData(p) } case msg.HANDLE_TYPE_FRIEND_SPONSOER: diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index c079c63a..aa85936d 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -1830,7 +1830,7 @@ func ReqAgreeFriend(player *Player, buf []byte) error { } FriendMgrSend(m) FriendMod.AddFriend(Uid) - FriendMod.AddReplyInfo(Uid, friend.REPLY_TYPE_GREETING, "") + FriendMod.AddReplyInfo(Uid, friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600) player.PushClientRes(&msg.ResAgreeFriend{ Code: msg.RES_CODE_SUCCESS, Uid: req.Uid, @@ -4684,8 +4684,8 @@ func ReqAddNpc(player *Player, buf []byte) error { player.TeLog("add_npc", map[string]interface{}{ "NpcId": int(req.NpcId), }) - FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING, "") - FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING_Get, "") + FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600) + FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING_Get, "", GoUtil.Now()+24*3600) player.AddLog(int(req.NpcId), friend.LOG_TYPE_FRIEND_BECOME_NPC, GoUtil.String(req.NpcId), GoUtil.Now()) player.PushClientRes(&msg.ResAddNpc{ Code: msg.RES_CODE_SUCCESS, @@ -5004,6 +5004,7 @@ func ReqCatnipInvite(player *Player, buf []byte) error { req := &msg.ReqCatnipInvite{} proto.Unmarshal(buf, req) ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) + ActivityInfo := GetActivityInfo(player, ActivityId) CatnipMod := player.PlayMod.getCatnipMod() err := CatnipMod.Invite(int(req.Id), int(req.Uid)) if err != nil { @@ -5020,6 +5021,7 @@ func ReqCatnipInvite(player *Player, buf []byte) error { From: int(player.M_DwUin), To: int(req.Uid), Type: MsqMod.HANDLE_TYPE_CATNIP_INVITE, + End: ActivityInfo.EndT, Extra: CatnipMsg{ ActivityId: ActivityId, GameId: int(req.Id), @@ -5047,6 +5049,14 @@ func ReqCatnipAgree(player *Player, buf []byte) error { }) return err } + err = G_GameLogicPtr.SetCatnipPartner(int(player.M_DwUin), int(req.Id), int(req.Uid)) + if err != nil { + player.SendErrClienRes(&msg.ResCatnipAgree{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } player.TeLog("catnip_agree", map[string]interface{}{ "Id": int(req.Id), }) @@ -5073,6 +5083,7 @@ func ReqCatnipAgree(player *Player, buf []byte) error { SendT: GoUtil.Now(), }) } + player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_SUCCESS, @@ -5301,6 +5312,47 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { SendT: GoUtil.Now(), Extra: ReplyData, }) + case friend.REPLY_TYPE_CATNIP: // 猫草大作战同意邀请 + GameId := GoUtil.Int(ReplyInfo.Param) + err := G_GameLogicPtr.SetCatnipPartner(int(player.M_DwUin), GameId, ReplyInfo.Uid) + if err != nil { + player.PushClientRes(&msg.ResFriendReplyHandle{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + } else { + CatnipMod := player.PlayMod.getCatnipMod() + ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) + UserList, _ := CatnipMod.Agree(GameId, ReplyInfo.Uid) + player.TeLog("catnip_agree", map[string]interface{}{ + "Id": int(GameId), + }) + FriendMgrSend(&MsqMod.Msg{ + From: int(player.M_DwUin), + To: int(ReplyInfo.Uid), + Type: MsqMod.HANDLE_TYPE_CATNIP_AGREE, + Extra: CatnipMsg{ + ActivityId: ActivityId, + GameId: int(GameId), + }, + SendT: GoUtil.Now(), + }) + + for _, v := range UserList { + FriendMgrSend(&MsqMod.Msg{ + From: int(player.M_DwUin), + To: int(v), + Type: MsqMod.HANDLE_TYPE_CATNIP_AGREE, + Extra: CatnipMsg{ + ActivityId: ActivityId, + GameId: int(GameId), + }, + SendT: GoUtil.Now(), + }) + } + player.CatnipBackData() + } + } } Items := baseCfg.GetFriendReplyReward() diff --git a/src/server/game/VarMgr.go b/src/server/game/VarMgr.go index aa195ca9..14897ea4 100644 --- a/src/server/game/VarMgr.go +++ b/src/server/game/VarMgr.go @@ -2,6 +2,7 @@ package game import ( "encoding/gob" + "fmt" "server/GoUtil" "server/game/mod/card" "server/game/mod/msg" @@ -51,6 +52,7 @@ func (f *VarMgr) Init() { f.ZeroUpdate(&msg.Msg{}) } f.RegisterHandler(msg.SERVER_ZERO_UPDATE, f.ZeroUpdate) + f.RegisterHandler(msg.HANDLE_TYPE_SET_CATNIP_PARTNER, f.SetCatnipPartner) f.mDispatr.AfterFunc(time.Duration(GoUtil.NextZeroTimestampDuration())*time.Second, func() { f.Send(&msg.Msg{ @@ -79,6 +81,30 @@ func (f *VarMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) { return nil, nil } +func (f *VarMgr) SetCatnipPartner(m *msg.Msg) (interface{}, error) { + if Param, ok := m.Extra.(map[string]interface{}); ok { + MyUid := GoUtil.Int(Param["uid"]) + CatnipGameId := GoUtil.Int(Param["game_id"]) + CatnipPartnerId := GoUtil.Int(Param["partner_uid"]) + myKey := fmt.Sprintf("catnip_partner_%d_%d", MyUid, CatnipGameId) + key := fmt.Sprintf("catnip_partner_%d_%d", CatnipPartnerId, CatnipGameId) + PartnerInfo := f.GetExpireVar(key) + if PartnerInfo.D != nil { + return nil, fmt.Errorf("catnip partner already set for uid %d in game %d", CatnipPartnerId, CatnipGameId) + } + f.SetExpireVar(key, &VarExpireData{ + D: MyUid, + T: m.End, + }) + f.SetExpireVar(myKey, &VarExpireData{ + D: CatnipPartnerId, + T: m.End, + }) + return nil, nil + } + return nil, fmt.Errorf("invalid parameters for setting catnip partner") +} + func (f *VarMgr) SetVar(key string, value interface{}) { f.getData().Var[key] = value } diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index b8706228..88297eda 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -69,6 +69,7 @@ type ApplyInfo struct { const ( REPLY_TYPE_GREETING = 1 // 问候 REPLY_TYPE_GREETING_Get = 2 // 收到问候 + REPLY_TYPE_CATNIP = 3 // 猫薄荷 ) // 24小时内与玩家进行过以下互动的用户,若被选中参加本次宠物宝藏,在其头像旁添加礼物盒 @@ -499,9 +500,9 @@ func (f *FriendMod) GetActLogLast() *ActLogInfo { return f.ActivityLog[len(f.ActivityLog)-1] } -func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string) { +func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string, EndTime int64) { f.AutoId++ - EndTime := GoUtil.Now() + 24*3600 + f.ReplyList = append(f.ReplyList, &ReplyInfo{ Id: f.AutoId, Uid: Uid, diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index 269987be..623af111 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -110,7 +110,7 @@ const ( HANDLE_TYPE_CHAMPSHIP_LOGIN // 锦标赛登录 HANDLE_TYPE_CHAMPSHIP_RANK_INFO // 锦标赛排名信息 - + HANDLE_TYPE_SET_CATNIP_PARTNER ) const ( From d9d025fa95815b0a679e5d48a6c5f16cef367df8 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 4 Dec 2025 18:07:42 +0800 Subject: [PATCH 19/49] =?UTF-8?q?=E7=8C=AB=E8=8D=89=E5=A4=A7=E4=BD=9C?= =?UTF-8?q?=E6=88=98-=E5=8F=91=E9=80=81=E8=A1=A8=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/ActivityFunc.go | 1 + src/server/game/GameLogic.go | 1 + src/server/game/RegisterNetworkFunc.go | 9 + src/server/game/mod/catnip/Catnip.go | 10 + src/server/msg/Gameapi.pb.go | 527 +++++++++++++++---------- 5 files changed, 346 insertions(+), 202 deletions(-) diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index 8acb038a..a23348f3 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -321,6 +321,7 @@ func (p *Player) CatnipBackData() { Progress: int32(v.Progress), Status: int32(v.Status), Reward: GoUtil.SliceIntToInt32(v.Reward), + Emoji: int32(v.EmojiId), } if v.Partner != 0 { PlayerData := G_getGameLogic().GetResSimplePlayerByUid(v.Partner) diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 9b12ef09..3fed32b5 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -906,6 +906,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqCatnipPlay", ReqCatnipPlay) // 猫草大作战游戏转盘 RegisterMsgProcessFunc("ReqCatnipReward", ReqCatnipReward) // 猫草大作战领取奖励 RegisterMsgProcessFunc("ReqCatnipGrandReward", ReqCatnipGrandReward) // 猫草大作战领取大奖 + RegisterMsgProcessFunc("ReqCatnipEmoji", ReqCatnipEmoji) // 活动通行证 RegisterMsgProcessFunc("ReqActPass", ReqActPass) // 请求活动通行证数据 RegisterMsgProcessFunc("ReqActPassReward", ReqActPassReward) // 领取活动通行证奖励 diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index aa85936d..d4d0bc51 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -5404,3 +5404,12 @@ func ReqGetChessRetireReward(player *Player, buf []byte) error { }) return nil } + +func ReqCatnipEmoji(player *Player, buf []byte) error { + req := &msg.ReqCatnipEmoji{} + proto.Unmarshal(buf, req) + CatnipMod := player.PlayMod.getCatnipMod() + CatnipMod.SetEmoji(int(req.Id), int(req.EmojiId)) + player.CatnipBackData() + return nil +} diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index d19c15c1..9eef0a8b 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -28,6 +28,7 @@ type CatnipGame struct { Status int // 0: Not Started, 1: In Progress, 2: Completed InviteList map[int]*InviteInfo // 邀请列表,key: 邀请者ID, value: 被邀请者ID BeInvitedList map[int]*InviteInfo // 被邀请列表,key: 被邀请者ID, value: 邀请者ID + EmojiId int // 表情ID } const ( @@ -219,3 +220,12 @@ func (c *CatnipMod) Growth(Id, Growth int) { GameInfo.Status = GAME_STATUS_COMPLETED } } + +func (c *CatnipMod) SetEmoji(Id, EmojiId int) { + GameInfo, ok := c.Game[Id] + if !ok { + return // Game does not exist + } + // Here we can set the emoji for the game. This is a placeholder implementation. + GameInfo.EmojiId = EmojiId +} diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 473ca3f1..149ed7d2 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -25959,6 +25959,7 @@ type CatnipGame struct { Partner *ResPlayerSimple `protobuf:"bytes,5,opt,name=Partner,proto3" json:"Partner,omitempty"` // 伙伴 InviteList []*CatnipInvite `protobuf:"bytes,6,rep,name=InviteList,proto3" json:"InviteList,omitempty"` // 邀请列表 BeInviteList []*CatnipInvite `protobuf:"bytes,7,rep,name=BeInviteList,proto3" json:"BeInviteList,omitempty"` // 被邀请列表 + Emoji int32 `protobuf:"varint,8,opt,name=Emoji,proto3" json:"Emoji,omitempty"` // 表情id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26042,6 +26043,13 @@ func (x *CatnipGame) GetBeInviteList() []*CatnipInvite { return nil } +func (x *CatnipGame) GetEmoji() int32 { + if x != nil { + return x.Emoji + } + return 0 +} + type CatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id @@ -26554,7 +26562,7 @@ type ResCatnipPlay struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` - Id int32 `protobuf:"varint,3,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id + Id int32 `protobuf:"varint,3,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草转盘id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26804,6 +26812,111 @@ func (x *ResCatnipGrandReward) GetMsg() string { return "" } +// 发送表情 +type ReqCatnipEmoji struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id + EmojiId int32 `protobuf:"varint,2,opt,name=EmojiId,proto3" json:"EmojiId,omitempty"` // 表情id + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReqCatnipEmoji) Reset() { + *x = ReqCatnipEmoji{} + mi := &file_proto_Gameapi_proto_msgTypes[463] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqCatnipEmoji) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqCatnipEmoji) ProtoMessage() {} + +func (x *ReqCatnipEmoji) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[463] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqCatnipEmoji.ProtoReflect.Descriptor instead. +func (*ReqCatnipEmoji) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{463} +} + +func (x *ReqCatnipEmoji) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReqCatnipEmoji) GetEmojiId() int32 { + if x != nil { + return x.EmojiId + } + return 0 +} + +type ResCatnipEmoji struct { + state protoimpl.MessageState `protogen:"open.v1"` + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResCatnipEmoji) Reset() { + *x = ResCatnipEmoji{} + mi := &file_proto_Gameapi_proto_msgTypes[464] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResCatnipEmoji) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResCatnipEmoji) ProtoMessage() {} + +func (x *ResCatnipEmoji) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[464] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResCatnipEmoji.ProtoReflect.Descriptor instead. +func (*ResCatnipEmoji) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{464} +} + +func (x *ResCatnipEmoji) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResCatnipEmoji) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + // -------------------后台管理------------------- type AdminReq struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26815,7 +26928,7 @@ type AdminReq struct { func (x *AdminReq) Reset() { *x = AdminReq{} - mi := &file_proto_Gameapi_proto_msgTypes[463] + mi := &file_proto_Gameapi_proto_msgTypes[465] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26827,7 +26940,7 @@ func (x *AdminReq) String() string { func (*AdminReq) ProtoMessage() {} func (x *AdminReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[463] + mi := &file_proto_Gameapi_proto_msgTypes[465] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26840,7 +26953,7 @@ func (x *AdminReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminReq.ProtoReflect.Descriptor instead. func (*AdminReq) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{463} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{465} } func (x *AdminReq) GetFunc() string { @@ -26867,7 +26980,7 @@ type AdminRes struct { func (x *AdminRes) Reset() { *x = AdminRes{} - mi := &file_proto_Gameapi_proto_msgTypes[464] + mi := &file_proto_Gameapi_proto_msgTypes[466] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26879,7 +26992,7 @@ func (x *AdminRes) String() string { func (*AdminRes) ProtoMessage() {} func (x *AdminRes) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[464] + mi := &file_proto_Gameapi_proto_msgTypes[466] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26892,7 +27005,7 @@ func (x *AdminRes) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminRes.ProtoReflect.Descriptor instead. func (*AdminRes) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{464} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{466} } func (x *AdminRes) GetFunc() string { @@ -26918,7 +27031,7 @@ type ReqAdminInfo struct { func (x *ReqAdminInfo) Reset() { *x = ReqAdminInfo{} - mi := &file_proto_Gameapi_proto_msgTypes[465] + mi := &file_proto_Gameapi_proto_msgTypes[467] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26930,7 +27043,7 @@ func (x *ReqAdminInfo) String() string { func (*ReqAdminInfo) ProtoMessage() {} func (x *ReqAdminInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[465] + mi := &file_proto_Gameapi_proto_msgTypes[467] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26943,7 +27056,7 @@ func (x *ReqAdminInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAdminInfo.ProtoReflect.Descriptor instead. func (*ReqAdminInfo) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{465} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{467} } func (x *ReqAdminInfo) GetUid() int64 { @@ -26961,7 +27074,7 @@ type ReqReloadServerMail struct { func (x *ReqReloadServerMail) Reset() { *x = ReqReloadServerMail{} - mi := &file_proto_Gameapi_proto_msgTypes[466] + mi := &file_proto_Gameapi_proto_msgTypes[468] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26973,7 +27086,7 @@ func (x *ReqReloadServerMail) String() string { func (*ReqReloadServerMail) ProtoMessage() {} func (x *ReqReloadServerMail) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[466] + mi := &file_proto_Gameapi_proto_msgTypes[468] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26986,7 +27099,7 @@ func (x *ReqReloadServerMail) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqReloadServerMail.ProtoReflect.Descriptor instead. func (*ReqReloadServerMail) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{466} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{468} } type ReqServerInfo struct { @@ -26997,7 +27110,7 @@ type ReqServerInfo struct { func (x *ReqServerInfo) Reset() { *x = ReqServerInfo{} - mi := &file_proto_Gameapi_proto_msgTypes[467] + mi := &file_proto_Gameapi_proto_msgTypes[469] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27009,7 +27122,7 @@ func (x *ReqServerInfo) String() string { func (*ReqServerInfo) ProtoMessage() {} func (x *ReqServerInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[467] + mi := &file_proto_Gameapi_proto_msgTypes[469] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27022,7 +27135,7 @@ func (x *ReqServerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqServerInfo.ProtoReflect.Descriptor instead. func (*ReqServerInfo) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{467} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{469} } type ReqReload struct { @@ -27033,7 +27146,7 @@ type ReqReload struct { func (x *ReqReload) Reset() { *x = ReqReload{} - mi := &file_proto_Gameapi_proto_msgTypes[468] + mi := &file_proto_Gameapi_proto_msgTypes[470] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27045,7 +27158,7 @@ func (x *ReqReload) String() string { func (*ReqReload) ProtoMessage() {} func (x *ReqReload) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[468] + mi := &file_proto_Gameapi_proto_msgTypes[470] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27058,7 +27171,7 @@ func (x *ReqReload) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqReload.ProtoReflect.Descriptor instead. func (*ReqReload) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{468} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{470} } type ReqAdminGm struct { @@ -27071,7 +27184,7 @@ type ReqAdminGm struct { func (x *ReqAdminGm) Reset() { *x = ReqAdminGm{} - mi := &file_proto_Gameapi_proto_msgTypes[469] + mi := &file_proto_Gameapi_proto_msgTypes[471] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27083,7 +27196,7 @@ func (x *ReqAdminGm) String() string { func (*ReqAdminGm) ProtoMessage() {} func (x *ReqAdminGm) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[469] + mi := &file_proto_Gameapi_proto_msgTypes[471] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27096,7 +27209,7 @@ func (x *ReqAdminGm) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAdminGm.ProtoReflect.Descriptor instead. func (*ReqAdminGm) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{469} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{471} } func (x *ReqAdminGm) GetUid() int64 { @@ -27124,7 +27237,7 @@ type ReqAdminBan struct { func (x *ReqAdminBan) Reset() { *x = ReqAdminBan{} - mi := &file_proto_Gameapi_proto_msgTypes[470] + mi := &file_proto_Gameapi_proto_msgTypes[472] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27136,7 +27249,7 @@ func (x *ReqAdminBan) String() string { func (*ReqAdminBan) ProtoMessage() {} func (x *ReqAdminBan) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[470] + mi := &file_proto_Gameapi_proto_msgTypes[472] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27149,7 +27262,7 @@ func (x *ReqAdminBan) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAdminBan.ProtoReflect.Descriptor instead. func (*ReqAdminBan) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{470} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{472} } func (x *ReqAdminBan) GetUid() int64 { @@ -27184,7 +27297,7 @@ type ReqAdminShipping struct { func (x *ReqAdminShipping) Reset() { *x = ReqAdminShipping{} - mi := &file_proto_Gameapi_proto_msgTypes[471] + mi := &file_proto_Gameapi_proto_msgTypes[473] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27196,7 +27309,7 @@ func (x *ReqAdminShipping) String() string { func (*ReqAdminShipping) ProtoMessage() {} func (x *ReqAdminShipping) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[471] + mi := &file_proto_Gameapi_proto_msgTypes[473] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27209,7 +27322,7 @@ func (x *ReqAdminShipping) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAdminShipping.ProtoReflect.Descriptor instead. func (*ReqAdminShipping) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{471} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{473} } func (x *ReqAdminShipping) GetOrderSn() string { @@ -29149,7 +29262,7 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\aEndTime\x18\x03 \x01(\x05R\aEndTime\x12\x1a\n" + "\bTemplate\x18\x04 \x01(\x05R\bTemplate\x120\n" + "\bGameList\x18\x05 \x03(\v2\x14.tutorial.CatnipGameR\bGameList\x12\x1a\n" + - "\bMultiply\x18\x06 \x01(\x05R\bMultiply\"\x91\x02\n" + + "\bMultiply\x18\x06 \x01(\x05R\bMultiply\"\xa7\x02\n" + "\n" + "CatnipGame\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x16\n" + @@ -29160,7 +29273,8 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\n" + "InviteList\x18\x06 \x03(\v2\x16.tutorial.CatnipInviteR\n" + "InviteList\x12:\n" + - "\fBeInviteList\x18\a \x03(\v2\x16.tutorial.CatnipInviteR\fBeInviteList\"4\n" + + "\fBeInviteList\x18\a \x03(\v2\x16.tutorial.CatnipInviteR\fBeInviteList\x12\x14\n" + + "\x05Emoji\x18\b \x01(\x05R\x05Emoji\"4\n" + "\fCatnipInvite\x12\x10\n" + "\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x12\n" + "\x04Time\x18\x02 \x01(\x03R\x04Time\"3\n" + @@ -29202,6 +29316,12 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x14ReqCatnipGrandReward\"P\n" + "\x14ResCatnipGrandReward\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\":\n" + + "\x0eReqCatnipEmoji\x12\x0e\n" + + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x18\n" + + "\aEmojiId\x18\x02 \x01(\x05R\aEmojiId\"J\n" + + "\x0eResCatnipEmoji\x12&\n" + + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"2\n" + "\bAdminReq\x12\x12\n" + "\x04Func\x18\x01 \x01(\tR\x04Func\x12\x12\n" + @@ -29467,7 +29587,7 @@ func file_proto_Gameapi_proto_rawDescGZIP() []byte { } var file_proto_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 12) -var file_proto_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 542) +var file_proto_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 544) var file_proto_Gameapi_proto_goTypes = []any{ (ITEM_POP_LABEL)(0), // 0: tutorial.ITEM_POP_LABEL (HANDLE_TYPE)(0), // 1: tutorial.HANDLE_TYPE @@ -29944,122 +30064,124 @@ var file_proto_Gameapi_proto_goTypes = []any{ (*ResCatnipReward)(nil), // 472: tutorial.ResCatnipReward (*ReqCatnipGrandReward)(nil), // 473: tutorial.ReqCatnipGrandReward (*ResCatnipGrandReward)(nil), // 474: tutorial.ResCatnipGrandReward - (*AdminReq)(nil), // 475: tutorial.AdminReq - (*AdminRes)(nil), // 476: tutorial.AdminRes - (*ReqAdminInfo)(nil), // 477: tutorial.ReqAdminInfo - (*ReqReloadServerMail)(nil), // 478: tutorial.ReqReloadServerMail - (*ReqServerInfo)(nil), // 479: tutorial.ReqServerInfo - (*ReqReload)(nil), // 480: tutorial.ReqReload - (*ReqAdminGm)(nil), // 481: tutorial.ReqAdminGm - (*ReqAdminBan)(nil), // 482: tutorial.ReqAdminBan - (*ReqAdminShipping)(nil), // 483: tutorial.ReqAdminShipping - nil, // 484: tutorial.ResChessColorData.MChessColorDataEntry - nil, // 485: tutorial.UpdateBaseItemInfo.MUpdateItemEntry - nil, // 486: tutorial.ResPlayerChessData.MChessDataEntry - nil, // 487: tutorial.ReqPutPartInBag.MChessDataEntry - nil, // 488: tutorial.UpdatePlayerChessData.MChessDataEntry - nil, // 489: tutorial.ReqSeparateChess.MChessDataEntry - nil, // 490: tutorial.ReqUpgradeChess.MChessDataEntry - nil, // 491: tutorial.ReqGetChessFromBuff.MChessDataEntry - nil, // 492: tutorial.ReqChessEx.MChessDataEntry - nil, // 493: tutorial.ReqSourceChest.MChessDataEntry - nil, // 494: tutorial.ReqPlayroomOutline.MChessDataEntry - nil, // 495: tutorial.ReqPutChessInBag.MChessDataEntry - nil, // 496: tutorial.ReqTakeChessOutBag.MChessDataEntry - nil, // 497: tutorial.ResPlayerBriefProfileData.SetEmojiEntry - nil, // 498: tutorial.UserInfo.SetEmojiEntry - nil, // 499: tutorial.ReqRewardOrder.MChessDataEntry - nil, // 500: tutorial.ResCardInfo.AllCardEntry - nil, // 501: tutorial.ResCardInfo.HandbookEntry - nil, // 502: tutorial.ResGuildInfo.RewardEntry - nil, // 503: tutorial.ResGuideInfo.RewardEntry - nil, // 504: tutorial.ResGuideTask.TaskEntry - nil, // 505: tutorial.ResDailyTask.WeekRewardEntry - nil, // 506: tutorial.ResDailyTask.DailyTaskEntry - nil, // 507: tutorial.ResLimitEvent.LimitEventListEntry - nil, // 508: tutorial.ResLimitEventProgress.ProgressRewardEntry - nil, // 509: tutorial.LimitEvent.ParamEntry - nil, // 510: tutorial.ReqLimitEventLuckyCat.MChessDataEntry - nil, // 511: tutorial.ResFriendPlayerSimple.EmojiEntry - nil, // 512: tutorial.ResFriendPlayerSimple.PlayroomEntry - nil, // 513: tutorial.ResFriendPlayerSimple.DressSetEntry - nil, // 514: tutorial.ResFriendPlayerSimple.PhysiologyEntry - nil, // 515: tutorial.ResPlayerSimple.EmojiEntry - nil, // 516: tutorial.ResKv.KvEntry - nil, // 517: tutorial.ResRank.RankListEntry - nil, // 518: tutorial.ResMailList.MailListEntry - nil, // 519: tutorial.ResCharge.SpecialShopEntry - nil, // 520: tutorial.ResCharge.ChessShopEntry - nil, // 521: tutorial.ResCharge.GiftEntry - nil, // 522: tutorial.ResCharge.WeeklyDiscountEntry - nil, // 523: tutorial.ReqBuyChessShop2.MChessDataEntry - nil, // 524: tutorial.ResEndless.EndlessListEntry - nil, // 525: tutorial.ResChampshipRank.RankListEntry - nil, // 526: tutorial.ResChampshipPreRank.RankListEntry - nil, // 527: tutorial.ResNotifyCard.CardEntry - nil, // 528: tutorial.ResNotifyCard.MasterEntry - nil, // 529: tutorial.ResNotifyCard.HandbookEntry - nil, // 530: tutorial.ResMining.MapEntry - nil, // 531: tutorial.ReqMiningTake.MapEntry - nil, // 532: tutorial.ResActRed.RedEntry - nil, // 533: tutorial.ResItem.ItemEntry - nil, // 534: tutorial.ItemNotify.ItemEntry - nil, // 535: tutorial.ResGuessColor.OMapEntry - nil, // 536: tutorial.ReqGuessColorTake.OMapEntry - nil, // 537: tutorial.GuessColorInfo.MapEntry - nil, // 538: tutorial.ResPlayroom.PlayroomEntry - nil, // 539: tutorial.ResPlayroom.MoodEntry - nil, // 540: tutorial.ResPlayroom.PhysiologyEntry - nil, // 541: tutorial.ResPlayroom.DressEntry - nil, // 542: tutorial.ResPlayroom.DressSetEntry - nil, // 543: tutorial.ResPlayroom.WeeklyDiscountEntry - nil, // 544: tutorial.ReqPlayroomDressSet.DressSetEntry - nil, // 545: tutorial.NotifyPlayroomMood.MoodEntry - nil, // 546: tutorial.NotifyPlayroomMood.PhysiologyEntry - nil, // 547: tutorial.ResPlayroomInfo.PlayroomEntry - nil, // 548: tutorial.ResPlayroomInfo.ItemsEntry - nil, // 549: tutorial.ResPlayroomInfo.FlipEntry - nil, // 550: tutorial.ResPlayroomInfo.EmojiEntry - nil, // 551: tutorial.ResPlayroomInfo.DressSetEntry - nil, // 552: tutorial.ResPlayroomGame.ItemsEntry - nil, // 553: tutorial.ReqPlayroomSetRoom.PlayroomEntry + (*ReqCatnipEmoji)(nil), // 475: tutorial.ReqCatnipEmoji + (*ResCatnipEmoji)(nil), // 476: tutorial.ResCatnipEmoji + (*AdminReq)(nil), // 477: tutorial.AdminReq + (*AdminRes)(nil), // 478: tutorial.AdminRes + (*ReqAdminInfo)(nil), // 479: tutorial.ReqAdminInfo + (*ReqReloadServerMail)(nil), // 480: tutorial.ReqReloadServerMail + (*ReqServerInfo)(nil), // 481: tutorial.ReqServerInfo + (*ReqReload)(nil), // 482: tutorial.ReqReload + (*ReqAdminGm)(nil), // 483: tutorial.ReqAdminGm + (*ReqAdminBan)(nil), // 484: tutorial.ReqAdminBan + (*ReqAdminShipping)(nil), // 485: tutorial.ReqAdminShipping + nil, // 486: tutorial.ResChessColorData.MChessColorDataEntry + nil, // 487: tutorial.UpdateBaseItemInfo.MUpdateItemEntry + nil, // 488: tutorial.ResPlayerChessData.MChessDataEntry + nil, // 489: tutorial.ReqPutPartInBag.MChessDataEntry + nil, // 490: tutorial.UpdatePlayerChessData.MChessDataEntry + nil, // 491: tutorial.ReqSeparateChess.MChessDataEntry + nil, // 492: tutorial.ReqUpgradeChess.MChessDataEntry + nil, // 493: tutorial.ReqGetChessFromBuff.MChessDataEntry + nil, // 494: tutorial.ReqChessEx.MChessDataEntry + nil, // 495: tutorial.ReqSourceChest.MChessDataEntry + nil, // 496: tutorial.ReqPlayroomOutline.MChessDataEntry + nil, // 497: tutorial.ReqPutChessInBag.MChessDataEntry + nil, // 498: tutorial.ReqTakeChessOutBag.MChessDataEntry + nil, // 499: tutorial.ResPlayerBriefProfileData.SetEmojiEntry + nil, // 500: tutorial.UserInfo.SetEmojiEntry + nil, // 501: tutorial.ReqRewardOrder.MChessDataEntry + nil, // 502: tutorial.ResCardInfo.AllCardEntry + nil, // 503: tutorial.ResCardInfo.HandbookEntry + nil, // 504: tutorial.ResGuildInfo.RewardEntry + nil, // 505: tutorial.ResGuideInfo.RewardEntry + nil, // 506: tutorial.ResGuideTask.TaskEntry + nil, // 507: tutorial.ResDailyTask.WeekRewardEntry + nil, // 508: tutorial.ResDailyTask.DailyTaskEntry + nil, // 509: tutorial.ResLimitEvent.LimitEventListEntry + nil, // 510: tutorial.ResLimitEventProgress.ProgressRewardEntry + nil, // 511: tutorial.LimitEvent.ParamEntry + nil, // 512: tutorial.ReqLimitEventLuckyCat.MChessDataEntry + nil, // 513: tutorial.ResFriendPlayerSimple.EmojiEntry + nil, // 514: tutorial.ResFriendPlayerSimple.PlayroomEntry + nil, // 515: tutorial.ResFriendPlayerSimple.DressSetEntry + nil, // 516: tutorial.ResFriendPlayerSimple.PhysiologyEntry + nil, // 517: tutorial.ResPlayerSimple.EmojiEntry + nil, // 518: tutorial.ResKv.KvEntry + nil, // 519: tutorial.ResRank.RankListEntry + nil, // 520: tutorial.ResMailList.MailListEntry + nil, // 521: tutorial.ResCharge.SpecialShopEntry + nil, // 522: tutorial.ResCharge.ChessShopEntry + nil, // 523: tutorial.ResCharge.GiftEntry + nil, // 524: tutorial.ResCharge.WeeklyDiscountEntry + nil, // 525: tutorial.ReqBuyChessShop2.MChessDataEntry + nil, // 526: tutorial.ResEndless.EndlessListEntry + nil, // 527: tutorial.ResChampshipRank.RankListEntry + nil, // 528: tutorial.ResChampshipPreRank.RankListEntry + nil, // 529: tutorial.ResNotifyCard.CardEntry + nil, // 530: tutorial.ResNotifyCard.MasterEntry + nil, // 531: tutorial.ResNotifyCard.HandbookEntry + nil, // 532: tutorial.ResMining.MapEntry + nil, // 533: tutorial.ReqMiningTake.MapEntry + nil, // 534: tutorial.ResActRed.RedEntry + nil, // 535: tutorial.ResItem.ItemEntry + nil, // 536: tutorial.ItemNotify.ItemEntry + nil, // 537: tutorial.ResGuessColor.OMapEntry + nil, // 538: tutorial.ReqGuessColorTake.OMapEntry + nil, // 539: tutorial.GuessColorInfo.MapEntry + nil, // 540: tutorial.ResPlayroom.PlayroomEntry + nil, // 541: tutorial.ResPlayroom.MoodEntry + nil, // 542: tutorial.ResPlayroom.PhysiologyEntry + nil, // 543: tutorial.ResPlayroom.DressEntry + nil, // 544: tutorial.ResPlayroom.DressSetEntry + nil, // 545: tutorial.ResPlayroom.WeeklyDiscountEntry + nil, // 546: tutorial.ReqPlayroomDressSet.DressSetEntry + nil, // 547: tutorial.NotifyPlayroomMood.MoodEntry + nil, // 548: tutorial.NotifyPlayroomMood.PhysiologyEntry + nil, // 549: tutorial.ResPlayroomInfo.PlayroomEntry + nil, // 550: tutorial.ResPlayroomInfo.ItemsEntry + nil, // 551: tutorial.ResPlayroomInfo.FlipEntry + nil, // 552: tutorial.ResPlayroomInfo.EmojiEntry + nil, // 553: tutorial.ResPlayroomInfo.DressSetEntry + nil, // 554: tutorial.ResPlayroomGame.ItemsEntry + nil, // 555: tutorial.ReqPlayroomSetRoom.PlayroomEntry } var file_proto_Gameapi_proto_depIdxs = []int32{ - 484, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry + 486, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry 6, // 1: tutorial.ReqLogin.type:type_name -> tutorial.LOGIN_TYPE 2, // 2: tutorial.ResId2Verify.ResultCode:type_name -> tutorial.RES_CODE - 485, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry - 486, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry + 487, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry + 488, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry 72, // 5: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag 53, // 6: tutorial.ResPlayerChessInfo.PartBag:type_name -> tutorial.PartBag 2, // 7: tutorial.ResGetChessRetireReward.code:type_name -> tutorial.RES_CODE 54, // 8: tutorial.PartBag.PartBagGrids:type_name -> tutorial.PartBagGrid - 487, // 9: tutorial.ReqPutPartInBag.mChessData:type_name -> tutorial.ReqPutPartInBag.MChessDataEntry + 489, // 9: tutorial.ReqPutPartInBag.mChessData:type_name -> tutorial.ReqPutPartInBag.MChessDataEntry 2, // 10: tutorial.ResPutPartInBag.code:type_name -> tutorial.RES_CODE 1, // 11: tutorial.ChessHandle.type:type_name -> tutorial.HANDLE_TYPE - 488, // 12: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry + 490, // 12: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry 57, // 13: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle 2, // 14: tutorial.ResUpdatePlayerChessData.code:type_name -> tutorial.RES_CODE - 489, // 15: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry + 491, // 15: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry 2, // 16: tutorial.ResSeparateChess.code:type_name -> tutorial.RES_CODE - 490, // 17: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry + 492, // 17: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry 2, // 18: tutorial.ResUpgradeChess.code:type_name -> tutorial.RES_CODE - 491, // 19: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry + 493, // 19: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry 2, // 20: tutorial.ResGetChessFromBuff.code:type_name -> tutorial.RES_CODE 8, // 21: tutorial.ReqChessEx.Type:type_name -> tutorial.CHESS_EX_TYPE - 492, // 22: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry + 494, // 22: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry 2, // 23: tutorial.ResChessEx.code:type_name -> tutorial.RES_CODE - 493, // 24: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry + 495, // 24: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry 2, // 25: tutorial.ResSourceChest.code:type_name -> tutorial.RES_CODE - 494, // 26: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry + 496, // 26: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry 2, // 27: tutorial.ResPlayroomOutline.code:type_name -> tutorial.RES_CODE 73, // 28: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid - 495, // 29: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry + 497, // 29: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry 2, // 30: tutorial.ResPutChessInBag.code:type_name -> tutorial.RES_CODE - 496, // 31: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry + 498, // 31: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry 2, // 32: tutorial.ResTakeChessOutBag.code:type_name -> tutorial.RES_CODE 2, // 33: tutorial.ResBuyChessBagGrid.code:type_name -> tutorial.RES_CODE - 497, // 34: tutorial.ResPlayerBriefProfileData.SetEmoji:type_name -> tutorial.ResPlayerBriefProfileData.SetEmojiEntry + 499, // 34: tutorial.ResPlayerBriefProfileData.SetEmoji:type_name -> tutorial.ResPlayerBriefProfileData.SetEmojiEntry 2, // 35: tutorial.ResSetEnergyMul.ResultCode:type_name -> tutorial.RES_CODE 9, // 36: tutorial.ReqLang.Lang:type_name -> tutorial.LANG_TYPE 2, // 37: tutorial.ResLang.ResultCode:type_name -> tutorial.RES_CODE @@ -30067,7 +30189,7 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 191, // 39: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo 187, // 40: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo 194, // 41: tutorial.UserInfo.EmojiList:type_name -> tutorial.EmojiInfo - 498, // 42: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry + 500, // 42: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry 2, // 43: tutorial.ResSetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 44: tutorial.ResSetPetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 45: tutorial.ResBuyEnergy.Code:type_name -> tutorial.RES_CODE @@ -30075,7 +30197,7 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 47: tutorial.ResGetHandbookReward.Code:type_name -> tutorial.RES_CODE 101, // 48: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo 2, // 49: tutorial.ResHandbookAllReward.Code:type_name -> tutorial.RES_CODE - 499, // 50: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry + 501, // 50: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry 2, // 51: tutorial.ResRewardOrder.Code:type_name -> tutorial.RES_CODE 2, // 52: tutorial.ResDelOrder.Code:type_name -> tutorial.RES_CODE 168, // 53: tutorial.Order.Items:type_name -> tutorial.ItemInfo @@ -30086,8 +30208,8 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 58: tutorial.ResDecorateAll.Code:type_name -> tutorial.RES_CODE 2, // 59: tutorial.ResDecorateReward.Code:type_name -> tutorial.RES_CODE 123, // 60: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card - 500, // 61: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry - 501, // 62: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry + 502, // 61: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry + 503, // 62: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry 2, // 63: tutorial.ResCardSeasonFirstReward.Code:type_name -> tutorial.RES_CODE 2, // 64: tutorial.ResCardHandbookReward.Code:type_name -> tutorial.RES_CODE 2, // 65: tutorial.ResMasterCard.Code:type_name -> tutorial.RES_CODE @@ -30106,16 +30228,16 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 78: tutorial.ResGetFriendCard.Code:type_name -> tutorial.RES_CODE 2, // 79: tutorial.ResGuideReward.Code:type_name -> tutorial.RES_CODE 2, // 80: tutorial.ResGuidePlayroom.Code:type_name -> tutorial.RES_CODE - 502, // 81: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry - 503, // 82: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry + 504, // 81: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry + 505, // 82: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry 168, // 83: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo 169, // 84: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack - 504, // 85: tutorial.ResGuideTask.Task:type_name -> tutorial.ResGuideTask.TaskEntry + 506, // 85: tutorial.ResGuideTask.Task:type_name -> tutorial.ResGuideTask.TaskEntry 179, // 86: tutorial.GuideTask.Progress:type_name -> tutorial.QuestProgress 2, // 87: tutorial.ResGetGuideTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 88: tutorial.ResGetGuideActiveReward.Code:type_name -> tutorial.RES_CODE - 505, // 89: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry - 506, // 90: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry + 507, // 89: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry + 508, // 90: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry 168, // 91: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo 179, // 92: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress 168, // 93: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo @@ -30136,30 +30258,30 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 108: tutorial.ResGetMonthLoginReward.Code:type_name -> tutorial.RES_CODE 204, // 109: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo 2, // 110: tutorial.ResActivityReward.Code:type_name -> tutorial.RES_CODE - 507, // 111: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry - 508, // 112: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry + 509, // 111: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry + 510, // 112: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry 2, // 113: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE 2, // 114: tutorial.ResSelectLimitEvent.Code:type_name -> tutorial.RES_CODE - 509, // 115: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry - 510, // 116: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry + 511, // 115: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry + 512, // 116: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry 2, // 117: tutorial.ResLimitEventLuckyCat.Code:type_name -> tutorial.RES_CODE 2, // 118: tutorial.ResLimitSenceReward.Code:type_name -> tutorial.RES_CODE 168, // 119: tutorial.ResChessRainReward.Items:type_name -> tutorial.ItemInfo 2, // 120: tutorial.ResFastProduceReward.Code:type_name -> tutorial.RES_CODE 2, // 121: tutorial.ResCatTrickReward.Code:type_name -> tutorial.RES_CODE 231, // 122: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple - 511, // 123: tutorial.ResFriendPlayerSimple.Emoji:type_name -> tutorial.ResFriendPlayerSimple.EmojiEntry - 512, // 124: tutorial.ResFriendPlayerSimple.Playroom:type_name -> tutorial.ResFriendPlayerSimple.PlayroomEntry - 513, // 125: tutorial.ResFriendPlayerSimple.DressSet:type_name -> tutorial.ResFriendPlayerSimple.DressSetEntry + 513, // 123: tutorial.ResFriendPlayerSimple.Emoji:type_name -> tutorial.ResFriendPlayerSimple.EmojiEntry + 514, // 124: tutorial.ResFriendPlayerSimple.Playroom:type_name -> tutorial.ResFriendPlayerSimple.PlayroomEntry + 515, // 125: tutorial.ResFriendPlayerSimple.DressSet:type_name -> tutorial.ResFriendPlayerSimple.DressSetEntry 232, // 126: tutorial.ResFriendPlayerSimple.Last:type_name -> tutorial.ActLog - 514, // 127: tutorial.ResFriendPlayerSimple.Physiology:type_name -> tutorial.ResFriendPlayerSimple.PhysiologyEntry - 515, // 128: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry + 516, // 127: tutorial.ResFriendPlayerSimple.Physiology:type_name -> tutorial.ResFriendPlayerSimple.PhysiologyEntry + 517, // 128: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry 231, // 129: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple 234, // 130: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog 236, // 131: tutorial.NotifyFriendLog.Bubble:type_name -> tutorial.FriendBubbleInfo 168, // 132: tutorial.FriendBubbleInfo.Items:type_name -> tutorial.ItemInfo 238, // 133: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard - 516, // 134: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry + 518, // 134: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry 2, // 135: tutorial.ResFriendByCode.Code:type_name -> tutorial.RES_CODE 231, // 136: tutorial.ResFriendByCode.Player:type_name -> tutorial.ResPlayerSimple 231, // 137: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple @@ -30184,27 +30306,27 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 231, // 156: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple 2, // 157: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE 2, // 158: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE - 517, // 159: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry - 518, // 160: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry + 519, // 159: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry + 520, // 160: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry 168, // 161: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo 283, // 162: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo 2, // 163: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE 2, // 164: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE 2, // 165: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE - 519, // 166: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry - 520, // 167: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry - 521, // 168: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry + 521, // 166: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry + 522, // 167: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry + 523, // 168: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry 294, // 169: tutorial.ResCharge.Wish:type_name -> tutorial.WishList - 522, // 170: tutorial.ResCharge.WeeklyDiscount:type_name -> tutorial.ResCharge.WeeklyDiscountEntry + 524, // 170: tutorial.ResCharge.WeeklyDiscount:type_name -> tutorial.ResCharge.WeeklyDiscountEntry 2, // 171: tutorial.ResAddWish.Code:type_name -> tutorial.RES_CODE 2, // 172: tutorial.ResGetWish.Code:type_name -> tutorial.RES_CODE 2, // 173: tutorial.ResSendWishBeg.Code:type_name -> tutorial.RES_CODE 2, // 174: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE 2, // 175: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE - 523, // 176: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry + 525, // 176: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry 2, // 177: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE 2, // 178: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE - 524, // 179: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry + 526, // 179: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry 168, // 180: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo 2, // 181: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE 2, // 182: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE @@ -30212,27 +30334,27 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 184: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE 2, // 185: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE 2, // 186: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE - 525, // 187: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry - 526, // 188: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry - 527, // 189: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry - 528, // 190: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry - 529, // 191: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry + 527, // 187: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry + 528, // 188: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry + 529, // 189: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry + 530, // 190: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry + 531, // 191: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry 2, // 192: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE - 530, // 193: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry - 531, // 194: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry + 532, // 193: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry + 533, // 194: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry 2, // 195: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE 2, // 196: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE 2, // 197: tutorial.ResActPassReward.Code:type_name -> tutorial.RES_CODE - 532, // 198: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry + 534, // 198: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry 204, // 199: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo - 533, // 200: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry - 534, // 201: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry + 535, // 200: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry + 536, // 201: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry 368, // 202: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo - 535, // 203: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry + 537, // 203: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry 366, // 204: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent 368, // 205: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.GuessColorInfo - 536, // 206: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry - 537, // 207: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry + 538, // 206: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry + 539, // 207: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry 2, // 208: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE 2, // 209: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE 374, // 210: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent @@ -30241,47 +30363,47 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 168, // 213: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo 408, // 214: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent 407, // 215: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom - 538, // 216: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry + 540, // 216: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry 393, // 217: tutorial.ResPlayroom.collect:type_name -> tutorial.PlayroomCollectInfo - 539, // 218: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry + 541, // 218: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry 168, // 219: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo 403, // 220: tutorial.ResPlayroom.Chip:type_name -> tutorial.ChipInfo - 540, // 221: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry - 541, // 222: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry - 542, // 223: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry + 542, // 221: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry + 543, // 222: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry + 544, // 223: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry 392, // 224: tutorial.ResPlayroom.PetAir:type_name -> tutorial.PlayroomAirInfo 178, // 225: tutorial.ResPlayroom.DailyTask:type_name -> tutorial.DailyTask 405, // 226: tutorial.ResPlayroom.AdItem:type_name -> tutorial.AdItem 407, // 227: tutorial.ResPlayroom.Target:type_name -> tutorial.FriendRoom - 543, // 228: tutorial.ResPlayroom.WeeklyDiscount:type_name -> tutorial.ResPlayroom.WeeklyDiscountEntry + 545, // 228: tutorial.ResPlayroom.WeeklyDiscount:type_name -> tutorial.ResPlayroom.WeeklyDiscountEntry 178, // 229: tutorial.NotifyPlayroomTask.DailyTask:type_name -> tutorial.DailyTask 2, // 230: tutorial.ResPlayroomTask.Code:type_name -> tutorial.RES_CODE 2, // 231: tutorial.ResPlayroomTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 232: tutorial.ResPlayroomUnlock.Code:type_name -> tutorial.RES_CODE 2, // 233: tutorial.ResPlayroomUpvote.Code:type_name -> tutorial.RES_CODE 391, // 234: tutorial.PlayroomDress.List:type_name -> tutorial.PlayroomDressInfo - 544, // 235: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry + 546, // 235: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry 2, // 236: tutorial.ResPlayroomDressSet.Code:type_name -> tutorial.RES_CODE 2, // 237: tutorial.ResPlayroomPetAirSet.Code:type_name -> tutorial.RES_CODE 2, // 238: tutorial.ResPlayroomWrokOutline.Code:type_name -> tutorial.RES_CODE 168, // 239: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo 403, // 240: tutorial.NotifyPlayroomLose.Chip:type_name -> tutorial.ChipInfo - 545, // 241: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry - 546, // 242: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry + 547, // 241: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry + 548, // 242: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry 405, // 243: tutorial.NotifyPlayroomMood.AdItem:type_name -> tutorial.AdItem - 547, // 244: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry - 548, // 245: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry - 549, // 246: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry - 550, // 247: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry - 551, // 248: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry + 549, // 244: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry + 550, // 245: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry + 551, // 246: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry + 552, // 247: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry + 553, // 248: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry 2, // 249: tutorial.ResPlayroomFlip.Code:type_name -> tutorial.RES_CODE 2, // 250: tutorial.ResPlayroomGuide.Code:type_name -> tutorial.RES_CODE 2, // 251: tutorial.ResPlayroomFlipReward.Code:type_name -> tutorial.RES_CODE 2, // 252: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE - 552, // 253: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry + 554, // 253: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry 168, // 254: tutorial.ResPlayroomGameShowReward.Items:type_name -> tutorial.ItemInfo 2, // 255: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE - 553, // 256: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry + 555, // 256: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry 2, // 257: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE 2, // 258: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE 2, // 259: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE @@ -30310,27 +30432,28 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 282: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE 2, // 283: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE 2, // 284: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE - 171, // 285: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask - 177, // 286: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek - 178, // 287: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask - 214, // 288: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent - 231, // 289: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple - 283, // 290: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo - 301, // 291: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop - 302, // 292: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop - 293, // 293: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 313, // 294: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo - 233, // 295: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 233, // 296: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 390, // 297: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress - 293, // 298: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 168, // 299: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo - 168, // 300: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo - 301, // [301:301] is the sub-list for method output_type - 301, // [301:301] is the sub-list for method input_type - 301, // [301:301] is the sub-list for extension type_name - 301, // [301:301] is the sub-list for extension extendee - 0, // [0:301] is the sub-list for field type_name + 2, // 285: tutorial.ResCatnipEmoji.Code:type_name -> tutorial.RES_CODE + 171, // 286: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask + 177, // 287: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 178, // 288: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 214, // 289: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 231, // 290: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 283, // 291: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 301, // 292: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 302, // 293: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 293, // 294: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 313, // 295: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 233, // 296: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 233, // 297: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 390, // 298: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress + 293, // 299: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 168, // 300: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo + 168, // 301: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo + 302, // [302:302] is the sub-list for method output_type + 302, // [302:302] is the sub-list for method input_type + 302, // [302:302] is the sub-list for extension type_name + 302, // [302:302] is the sub-list for extension extendee + 0, // [0:302] is the sub-list for field type_name } func init() { file_proto_Gameapi_proto_init() } @@ -30344,7 +30467,7 @@ func file_proto_Gameapi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_Gameapi_proto_rawDesc), len(file_proto_Gameapi_proto_rawDesc)), NumEnums: 12, - NumMessages: 542, + NumMessages: 544, NumExtensions: 0, NumServices: 0, }, From 3a10713337f06ae1ed489365712b642e3403a3f2 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 4 Dec 2025 18:11:14 +0800 Subject: [PATCH 20/49] =?UTF-8?q?kv=E7=BB=93=E6=9E=84-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/kv/kv.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server/game/mod/kv/kv.go b/src/server/game/mod/kv/kv.go index b98e87bd..346884f3 100644 --- a/src/server/game/mod/kv/kv.go +++ b/src/server/game/mod/kv/kv.go @@ -13,6 +13,12 @@ func (f *KvMod) InitData() { } func (f *KvMod) SetVar(key int, value string) { + if len(value) > 500 { + return + } + if len(f.Data) > 50 { + return + } f.Data[key] = value } From f25fbb2d4e1ec763997d8b1e848e94b41d54a433 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 4 Dec 2025 18:18:11 +0800 Subject: [PATCH 21/49] =?UTF-8?q?kv=E7=BB=93=E6=9E=84-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/kv/kv.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/mod/kv/kv.go b/src/server/game/mod/kv/kv.go index 346884f3..e721041e 100644 --- a/src/server/game/mod/kv/kv.go +++ b/src/server/game/mod/kv/kv.go @@ -16,7 +16,7 @@ func (f *KvMod) SetVar(key int, value string) { if len(value) > 500 { return } - if len(f.Data) > 50 { + if len(f.Data) > 150 { return } f.Data[key] = value From f4c9972fdfe206a3508395c5583d0c691a954a44 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 4 Dec 2025 18:49:46 +0800 Subject: [PATCH 22/49] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9B=B4=E6=8E=A5=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerBaseMod.go | 22 +- src/server/game/RegisterNetworkFunc.go | 759 ++++++++++++++++++------- 2 files changed, 580 insertions(+), 201 deletions(-) diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index 9f2692d7..f1eaf9fd 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -213,7 +213,10 @@ func (p *PlayerBaseData) ResPlayerBaseInfo(player *Player) { func (p *PlayerBaseData) ReqBindFacebookAccount(player *Player, buf []byte) { req := &msg.ReqBindFacebookAccount{} res := &msg.ResBindFacebookAccount{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return + } sqlStr := "SELECT * FROM t_player_baseinfo WHERE FaceBookId = ?" sqlStruck := db.ResPlayerBaseInfo{} @@ -251,7 +254,10 @@ func (p *PlayerBaseData) ReqBindFacebookAccount(player *Player, buf []byte) { func (p *PlayerBaseData) ReqUnBindFacebook(player *Player, buf []byte) { req := &msg.ReqUnBindFacebook{} res := &msg.ResUnBindFacebook{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return + } res.ResultCode = 0 res.BindAccountId = req.BindAccountId @@ -270,12 +276,15 @@ func (p *PlayerBaseData) ReqUnBindFacebook(player *Player, buf []byte) { func (p *PlayerBaseData) ReqOnlyBindFacebook(player *Player, buf []byte) { req := &msg.ReqOnlyBindFacebook{} res := &msg.ResOnlyBindFacebook{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return + } sqlStr := "SELECT * FROM t_player_baseinfo WHERE FaceBookId = ?" sqlStruck := db.ResPlayerBaseInfo{} isHaveOther := false - err := db.SqlDb.Get(&sqlStruck, sqlStr, req.BindAccountId) + err = db.SqlDb.Get(&sqlStruck, sqlStr, req.BindAccountId) if err != nil { isHaveOther = false } else { @@ -334,7 +343,10 @@ func (p *PlayerBaseData) ReqOnlyBindFacebook(player *Player, buf []byte) { func (p *PlayerBaseData) ReqSynGameData(player *Player, buf []byte) { req := &msg.ReqSynGameData{} res := &msg.ResSynGameData{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return + } sqlStr := "SELECT * FROM t_player_baseinfo WHERE FaceBookId = ?" sqlStruck := db.ResPlayerBaseInfo{} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index d4d0bc51..9908c87b 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -50,14 +50,21 @@ func ReqPlayerAsset(player *Player, buf []byte) error { func ReqPlayerBaseInfofunction(player *Player, buf []byte) error { // 消息的发送者 detail := &msg.ReqPlayerBaseInfo{} - proto.Unmarshal(buf, detail) + err := proto.Unmarshal(buf, detail) + if err != nil { + return err + } + player.PlayerBaseMod.ResPlayerBaseInfo(player) return nil } func ReqPlayerBriefProfileDataFunc(player *Player, buf []byte) error { detail := &msg.ReqPlayerBriefProfileData{} - proto.Unmarshal(buf, detail) + err := proto.Unmarshal(buf, detail) + if err != nil { + return err + } Uid := int(detail.DwUin) PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Uid) if PlayerSimpleData == nil { @@ -82,7 +89,10 @@ func ReqPlayerBriefProfileDataFunc(player *Player, buf []byte) error { func ReqFriendPlayerSimple(player *Player, buf []byte) error { detail := &msg.ReqFriendPlayerSimple{} - proto.Unmarshal(buf, detail) + err := proto.Unmarshal(buf, detail) + if err != nil { + return err + } Uid := int(detail.Uid) PlayerSimpleData := G_GameLogicPtr.GetResFriendPlayerByUid(Uid) if PlayerSimpleData == nil { @@ -112,7 +122,10 @@ func ReqRemoveAdFunc(player *Player, buf []byte) error { // 更新玩家物品 func UpdateBaseItemInfofunction(player *Player, buf []byte) error { detail := &msg.UpdateBaseItemInfo{} - proto.Unmarshal(buf, detail) + err := proto.Unmarshal(buf, detail) + if err != nil { + return err + } player.PlayerBaseMod.UpdateBaseItemInfo(detail) return nil } @@ -120,7 +133,10 @@ func UpdateBaseItemInfofunction(player *Player, buf []byte) error { // 请求玩家棋盘信息 func ReqPlayerChessDataFunc(player *Player, buf []byte) error { detail := &msg.ReqPlayerChessData{} - proto.Unmarshal(buf, detail) + err := proto.Unmarshal(buf, detail) + if err != nil { + return err + } playerChessData := &PlayerChessData{} playerChessData.ResPlayerChessData(player) return nil @@ -148,7 +164,10 @@ func ReqSynGameData(player *Player, buf []byte) error { func RegSetEneryFunc(player *Player, buf []byte) error { req := &msg.ReqSetEnergyMul{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } MaxEnergyMul := player.GetPlayerBaseMod().GetMaxEnergyMul(player) BaseMod := player.PlayMod.getBaseMod() EnergyMul := BaseMod.GetEnergyMul() @@ -180,8 +199,11 @@ func RegSetEneryFunc(player *Player, buf []byte) error { // 领取图鉴奖励 func ReqGetHandbookReward(player *Player, buf []byte) error { req := &msg.ReqGetHandbookReward{} - proto.Unmarshal(buf, req) - err := player.PlayMod.getHandbookMod().GetHandbookReward(int(req.ChessId)) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } + err = player.PlayMod.getHandbookMod().GetHandbookReward(int(req.ChessId)) if err != nil { player.SendErrClienRes(&msg.ResGetHandbookReward{ Code: msg.RES_CODE_FAIL, @@ -213,7 +235,10 @@ func ReqGetHandbookReward(player *Player, buf []byte) error { func RegHandbookAllReward(player *Player, buf []byte) error { req := &msg.RegHandbookAllReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } AllChess := mergeDataCfg.GetAllChessBySeries(req.Type) Items, err := player.PlayMod.getHandbookMod().CollectItem(req.Type, AllChess) if err != nil { @@ -254,7 +279,10 @@ func RegHandbookAllReward(player *Player, buf []byte) error { // 领取订单奖励 func ReqRewardOrder(player *Player, buf []byte) error { req := &msg.ReqRewardOrder{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } OrderMod := player.PlayMod.getOrderMod() ChessMod := player.PlayMod.getChessMod() LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() @@ -443,7 +471,10 @@ func ReqCreatePetOrder(player *Player, buf []byte) error { func ReqDelOrder(player *Player, buf []byte) error { req := &msg.ReqDelOrder{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } OrderMod := player.PlayMod.getOrderMod() DelOrder, err := OrderMod.DelOrder(int(req.OrderId)) if err != nil { @@ -467,14 +498,17 @@ func ReqDelOrder(player *Player, buf []byte) error { // 场景装饰 func ReqDecorate(player *Player, buf []byte) error { req := &msg.ReqDecorate{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } DecorateMod := player.PlayMod.getDecorateMod() DecorateId := int(req.DecorateId) AreaId := int(req.AreaId) LimitEventMod := player.PlayMod.getLimitedTimeEventMod() DecorateOffIsExist := LimitEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_DECORATE_OFF) CostItem, PetExp, PartItem := DecorateMod.GetDecorateCostItem(AreaId, DecorateId, DecorateOffIsExist) - err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 + err = player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 if err != nil { player.SendErrClienRes(&msg.ResDecorate{ Code: msg.RES_CODE_FAIL, @@ -552,7 +586,10 @@ func ReqDecorate(player *Player, buf []byte) error { // 场景装饰 func ReqDecorateAll(player *Player, buf []byte) error { req := &msg.ReqDecorateAll{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } DecorateMod := player.PlayMod.getDecorateMod() AreaId := DecorateMod.GetAreaId() UnLockLv := decorateCfg.GetOneKeyDecorateUnlockLv() @@ -567,7 +604,7 @@ func ReqDecorateAll(player *Player, buf []byte) error { LimitEventMod := player.PlayMod.getLimitedTimeEventMod() DecorateOffIsExist := LimitEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_DECORATE_OFF) CostItem, AddItem, DecorateNum, DecorateList, Log, PetExp := DecorateMod.DecorateAll(PlayerBaseMod.GetStar(), DecorateOffIsExist) - err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 + err = player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 if err != nil { player.SendErrClienRes(&msg.ResDecorateAll{ Code: msg.RES_CODE_FAIL, @@ -620,34 +657,7 @@ func ReqDecorateAll(player *Player, buf []byte) error { } func ReqDecorateReward(player *Player, buf []byte) error { - // req := &msg.ReqDecorateReward{} - // proto.Unmarshal(buf, req) - // DecorateMod := player.PlayMod.getDecorateMod() - // Item, err := DecorateMod.GetDecorateReward(int(req.AreaId)) - // if err != nil { - // player.SendErrClienRes(&msg.ResDecorateReward{ - // Code: msg.RES_CODE_FAIL, - // Msg: err.Error(), - // }) - // return err - // } - // err = player.HandleItem(Item, msg.ITEM_POP_LABEL_DecorateReward.String()) - // if err != nil { - // player.SendErrClienRes(&msg.ResDecorateReward{ - // Code: msg.RES_CODE_FAIL, - // Msg: err.Error(), - // }) - // return err - // } - // player.TeLog("scene_reward", map[string]interface{}{ - // "deco_step_id": fmt.Sprintf("%d_%d", DecorateMod.AreaId, DecorateMod.Progress), - // "item_list": Item, - // }) - // player.PushClientRes(&msg.ResDecorateReward{ - // Code: msg.RES_CODE_SUCCESS, - // }) - // player.PushClientRes(DecorateMod.BackData()) - // player.PlayMod.save() + return nil } @@ -664,13 +674,16 @@ func UpdatePlayerChessDataFunc(player *Player, buf []byte) error { // 从缓存中获取棋子 func ReqGetChessFromBuff(player *Player, buf []byte) error { req := &msg.ReqGetChessFromBuff{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() HandbookMod := player.PlayMod.getHandbookMod() OrderMod := player.PlayMod.getOrderMod() BaseMod := player.PlayMod.getBaseMod() ChessId := int(req.ChessId) - err := ChessMod.GetChessFromBuff(ChessId) + err = ChessMod.GetChessFromBuff(ChessId) Update := HandbookMod.SetHandbook(ChessId) AddNewEmit := make([]int, 0) if Update { @@ -715,9 +728,12 @@ func ReqGetChessFromBuff(player *Player, buf []byte) error { // 放置棋子进背包 func ReqPutPartInBag(player *Player, buf []byte) error { req := &msg.ReqPutPartInBag{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() - err := ChessMod.PutPartInBag(int(req.ChessId)) + err = ChessMod.PutPartInBag(int(req.ChessId)) if err != nil { player.SendErrClienRes(&msg.ResPutPartInBag{ Code: msg.RES_CODE_FAIL, @@ -749,9 +765,12 @@ func ReqPutPartInBag(player *Player, buf []byte) error { // 放置棋子进背包 func ReqPutChessInBag(player *Player, buf []byte) error { req := &msg.ReqPutChessInBag{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() - err := ChessMod.PutChessInBag(int(req.BagId), int(req.ChessId), int(req.EmitId)) + err = ChessMod.PutChessInBag(int(req.BagId), int(req.ChessId), int(req.EmitId)) if err != nil { player.SendErrClienRes(&msg.ResPutChessInBag{ Code: msg.RES_CODE_FAIL, @@ -784,7 +803,10 @@ func ReqPutChessInBag(player *Player, buf []byte) error { func ReqTakeChessOutBag(player *Player, buf []byte) error { req := &msg.ReqTakeChessOutBag{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() ChessId, err := ChessMod.TakeChessOutBag(int(req.BagId)) if err != nil { @@ -825,10 +847,13 @@ func ReqTakeChessOutBag(player *Player, buf []byte) error { func ReqBuyChessBagGrid(player *Player, buf []byte) error { req := &msg.ReqBuyChessBagGrid{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() CostItem := ChessMod.GetBuyChessBagGridCost() - err := player.HandleItem(CostItem, msg.ITEM_POP_LABEL_BuyChessBagGrid.String()) + err = player.HandleItem(CostItem, msg.ITEM_POP_LABEL_BuyChessBagGrid.String()) if err != nil { player.SendErrClienRes(&msg.ResBuyChessBagGrid{ Code: msg.RES_CODE_FAIL, @@ -861,7 +886,10 @@ func ReqBuyChessBagGrid(player *Player, buf []byte) error { func ReqSeparateChess(player *Player, buf []byte) error { req := &msg.ReqSeparateChess{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() NewChess, err := ChessMod.SeparateChess(int(req.ChessId)) if err != nil { @@ -900,7 +928,10 @@ func ReqSeparateChess(player *Player, buf []byte) error { func ReqUpgradeChess(player *Player, buf []byte) error { req := &msg.ReqUpgradeChess{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() NewChess, err := ChessMod.UpgradeChess(int(req.ChessId)) if err != nil { @@ -939,7 +970,10 @@ func ReqUpgradeChess(player *Player, buf []byte) error { // 棋子转换 func ReqChessEx(player *Player, buf []byte) error { req := &msg.ReqChessEx{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() if req.CostDia < 0 { var itemList []*item.Item @@ -956,7 +990,7 @@ func ReqChessEx(player *Player, buf []byte) error { player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_BUBBLE, A: []interface{}{}}) } - err := ChessMod.ExChess(int(req.OldChessId), int(req.NewChessId)) + err = ChessMod.ExChess(int(req.OldChessId), int(req.NewChessId)) if err != nil { player.SendErrClienRes(&msg.ResChessEx{ Code: msg.RES_CODE_FAIL, @@ -1023,7 +1057,10 @@ func ReqChessEx(player *Player, buf []byte) error { func ReqSourceChest(player *Player, buf []byte) error { req := &msg.ReqSourceChest{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() ChestId := int(req.ChestId) Items, err := ChessMod.SourceChest(ChestId) @@ -1074,7 +1111,10 @@ func ReqCardInfo(player *Player, buf []byte) error { func ReqCardSeasonFirstReward(player *Player, buf []byte) error { req := &msg.ReqCardSeasonFirstReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() itemList, err := CardMod.SeasonFirstReward() if err != nil { @@ -1106,7 +1146,10 @@ func ReqCardSeasonFirstReward(player *Player, buf []byte) error { // 领取卡牌系列收集奖励 func ReqCardCollectReward(player *Player, buf []byte) error { req := &msg.ReqCardCollectReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() itemList, chess, err := CardMod.GetCollectReward(int(req.Color)) if err != nil { @@ -1147,7 +1190,10 @@ func ReqCardCollectReward(player *Player, buf []byte) error { // 兑换星星奖励 func ReqExStarReward(player *Player, buf []byte) error { req := &msg.ReqExStarReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() itemList, CostStar, err := CardMod.ExStarReward(int(req.Id)) if err != nil { @@ -1224,7 +1270,10 @@ func ReqAllCollectReward(player *Player, buf []byte) error { // ---------------------GuildApi---------------------- func ReqGuideReward(player *Player, buf []byte) error { req := &msg.ReqGuideReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } GuideMod := player.PlayMod.getGuideMod() itemList, err := GuideMod.GetReward(int(req.Id)) if err != nil { @@ -1258,7 +1307,10 @@ func ReqGuideReward(player *Player, buf []byte) error { // -----------------dailyTaskApi--------------------- func ReqGetDailyTaskReward(player *Player, buf []byte) error { req := &msg.ReqGetDailyTaskReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } DailyTaskMod := player.PlayMod.getDailyTaskMod() itemList, err := DailyTaskMod.GetDailyReward(int(req.Id)) if err != nil { @@ -1293,7 +1345,10 @@ func ReqGetDailyTaskReward(player *Player, buf []byte) error { func ReqGetDailyWeekReward(player *Player, buf []byte) error { req := &msg.ReqGetDailyWeekReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } DailyTaskMod := player.PlayMod.getDailyTaskMod() itemList, err := DailyTaskMod.GetWeekReward(int(req.Id)) if err != nil { @@ -1328,7 +1383,10 @@ func ReqGetDailyWeekReward(player *Player, buf []byte) error { func ReqDailyUnlock(player *Player, buf []byte) error { req := &msg.ReqDailyUnlock{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } DailyTaskMod := player.PlayMod.getDailyTaskMod() DailyTaskMod.Unlock() player.PlayMod.save() @@ -1341,7 +1399,10 @@ func ReqDailyUnlock(player *Player, buf []byte) error { func ReqGetGuideTaskReward(player *Player, buf []byte) error { req := &msg.ReqGetGuideTaskReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } GuideTaskMod := player.PlayMod.getGuideTaskMod() itemList, err := GuideTaskMod.GetTaskReward(int(req.Id)) if err != nil { @@ -1377,7 +1438,10 @@ func ReqGetGuideTaskReward(player *Player, buf []byte) error { func ReqGetGuideActiveReward(player *Player, buf []byte) error { req := &msg.ReqGetGuideActiveReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } GuideTaskMod := player.PlayMod.getGuideTaskMod() itemList, err := GuideTaskMod.GetActiveReward(int(req.Id)) if err != nil { @@ -1412,9 +1476,12 @@ func ReqGetGuideActiveReward(player *Player, buf []byte) error { // 头像框 func ReqSetAvatar(player *Player, buf []byte) error { req := &msg.ReqSetAvatar{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } avatarMod := player.PlayMod.getAvatarMod() - err := avatarMod.SetAvatar(int(req.Avatar)) + err = avatarMod.SetAvatar(int(req.Avatar)) if err != nil { player.SendErrClienRes(&msg.ResSetAvatar{ Code: msg.RES_CODE_FAIL, @@ -1443,9 +1510,12 @@ func ReqSetAvatar(player *Player, buf []byte) error { // 头像 func ReqSetFace(player *Player, buf []byte) error { req := &msg.ReqSetFace{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FaceMod := player.PlayMod.getFaceMod() - err := FaceMod.SetFace(int(req.Face)) + err = FaceMod.SetFace(int(req.Face)) if err != nil { player.SendErrClienRes(&msg.ResSetFace{ Code: msg.RES_CODE_FAIL, @@ -1474,11 +1544,14 @@ func ReqSetFace(player *Player, buf []byte) error { // 购买能量 func ReqBuyEnergy(player *Player, buf []byte) error { req := &msg.ReqBuyEnergy{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } BaseMod := player.PlayMod.getBaseMod() ChargeMod := player.PlayMod.getChargeMod() Item, Energy, Diamond := ChargeMod.BuyEnergy(player.IsWeeklyDiscount()) - err := player.HandleItem(Item, msg.ITEM_POP_LABEL_BuyEnergy.String()) + err = player.HandleItem(Item, msg.ITEM_POP_LABEL_BuyEnergy.String()) if err != nil { player.SendErrClienRes(&msg.ResBuyEnergy{ Code: msg.RES_CODE_FAIL, @@ -1531,7 +1604,10 @@ func ReqGetEnergyByAD(player *Player, buf []byte) error { // 领取七日签到奖励 func ReqGetSevenLoginReward(player *Player, buf []byte) error { req := &msg.ReqGetSevenLoginReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } SevenLoginMod := player.PlayMod.getSevenLoginMod() itemList, err := SevenLoginMod.GetReward(int(req.Id)) if err != nil { @@ -1566,7 +1642,10 @@ func ReqGetSevenLoginReward(player *Player, buf []byte) error { // 领取月进度奖励 func ReqGetMonthLoginReward(player *Player, buf []byte) error { req := &msg.ReqGetMonthLoginReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } SevenLoginMod := player.PlayMod.getSevenLoginMod() itemList, err := SevenLoginMod.GetMonthReward(int(req.Id)) if err != nil { @@ -1611,7 +1690,10 @@ func ReqFastProduceInfo(player *Player, buf []byte) error { // 连击快手奖励 func ReqFastProduceReward(player *Player, buf []byte) error { req := &msg.ReqFastProduceReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() itemList, EndTime, Times, err := LimitedTimeEventMod.GetFastProduceReward(int(req.Energy)) if err != nil { @@ -1696,7 +1778,10 @@ func ReqGetGoldCard(player *Player, buf []byte) error { // 搜索用户 func ReqSearchPlayer(player *Player, buf []byte) error { req := &msg.ReqSearchPlayer{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Uid, err := strconv.Atoi(req.Uid) list := make([]*msg.ResPlayerSimple, 0) if err == nil { @@ -1739,7 +1824,10 @@ func ReqSearchPlayer(player *Player, buf []byte) error { // 申请好友 func ReqApplyFriend(player *Player, buf []byte) error { req := &msg.ReqApplyFriend{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Uid := int(req.Uid) FriendMod := player.PlayMod.getFriendMod() if Uid == int(player.M_DwUin) { @@ -1812,7 +1900,10 @@ func ReqApplyFriend(player *Player, buf []byte) error { // 同意申请 func ReqAgreeFriend(player *Player, buf []byte) error { req := &msg.ReqAgreeFriend{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Uid := int(req.Uid) FriendMod := player.PlayMod.getFriendMod() if !FriendMod.CheckApply(Uid) { @@ -1854,7 +1945,10 @@ func ReqAgreeFriend(player *Player, buf []byte) error { // 删除好友 func ReqDelFriend(player *Player, buf []byte) error { req := &msg.ReqDelFriend{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Uid := int(req.Uid) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_DEL, @@ -1881,7 +1975,10 @@ func ReqDelFriend(player *Player, buf []byte) error { // 拒绝申请 func ReqRefuseFriend(player *Player, buf []byte) error { req := &msg.ReqRefuseFriend{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Uid := int(req.Uid) FriendMod := player.PlayMod.getFriendMod() FriendMod.RefuseApply(Uid) @@ -1904,13 +2001,16 @@ func ReqRefuseFriend(player *Player, buf []byte) error { // 向好友请求卡牌 func ReqCardGive(player *Player, buf []byte) error { req := &msg.ReqCardGive{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() EndTime := GoUtil.Now() + 86400 FriendMod := player.PlayMod.getFriendMod() - err := CardMod.RequestCard() + err = CardMod.RequestCard() if err != nil { player.SendErrClienRes(&msg.ResCardGive{ Code: msg.RES_CODE_FAIL, @@ -1997,7 +2097,10 @@ func ReqCardGive(player *Player, buf []byte) error { // 同意卡牌请求 func ReqAgreeCardGive(player *Player, buf []byte) error { req := &msg.ReqAgreeCardGive{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil { @@ -2008,7 +2111,7 @@ func ReqAgreeCardGive(player *Player, buf []byte) error { return fmt.Errorf("card apply not exist") } CardMod := player.PlayMod.getCardMod() - err := player.SubCard(CardInfo.CardId) + err = player.SubCard(CardInfo.CardId) if err != nil { player.SendErrClienRes(&msg.ResAgreeCardGive{ Code: msg.RES_CODE_FAIL, @@ -2044,7 +2147,10 @@ func ReqAgreeCardGive(player *Player, buf []byte) error { // 拒绝卡牌请求 func ReqRefuseCardGive(player *Player, buf []byte) error { req := &msg.ReqRefuseCardGive{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil { @@ -2077,7 +2183,10 @@ func ReqRefuseCardGive(player *Player, buf []byte) error { // 赠送卡牌 func ReqCardSend(player *Player, buf []byte) error { req := &msg.ReqCardSend{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() CardId := int(req.CardId) CardInfo, err := CardMod.SendCard(int(player.M_DwUin), int(req.Uid), CardId) @@ -2116,7 +2225,10 @@ func ReqCardSend(player *Player, buf []byte) error { // 卡牌交换 func ReqCardExchange(player *Player, buf []byte) error { req := &msg.ReqCardExchange{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() CardId := int(req.CardId) CardInfo, err := CardMod.ExchangeCard(int(player.M_DwUin), int(req.Uid), CardId) @@ -2156,7 +2268,10 @@ func ReqCardExchange(player *Player, buf []byte) error { // 选择卡牌进行交换 func ReqSelectCardExchange(player *Player, buf []byte) error { req := &msg.ReqSelectCardExchange{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardId := int(req.CardId) CardMod := player.PlayMod.getCardMod() FriendMod := player.PlayMod.getFriendMod() @@ -2189,7 +2304,7 @@ func ReqSelectCardExchange(player *Player, buf []byte) error { } FriendMod.DelCardInfo(req.Id) player.AddLog(CardInfo.AUid, friend.LOG_TYPE_CARD_SELECT_SEND, fmt.Sprintf("%d", CardInfo.ExId), GoUtil.Now()) - err := player.SubCard(CardId) + err = player.SubCard(CardId) if err != nil { player.SendErrClienRes(&msg.ResSelectCardExchange{ Code: msg.RES_CODE_FAIL, @@ -2223,7 +2338,10 @@ func ReqSelectCardExchange(player *Player, buf []byte) error { // 同意卡牌交换 func ReqAgreeCardExchange(player *Player, buf []byte) error { req := &msg.ReqSelectCardExchange{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) @@ -2280,7 +2398,10 @@ func ReqAgreeCardExchange(player *Player, buf []byte) error { // 拒绝选择卡牌 func ReqRefuseCardSelect(player *Player, buf []byte) error { req := &msg.ReqRefuseCardSelect{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil { @@ -2317,7 +2438,10 @@ func ReqRefuseCardSelect(player *Player, buf []byte) error { // 拒绝进行交换 func ReqRefuseCardExchange(player *Player, buf []byte) error { req := &msg.ReqRefuseCardExchange{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) @@ -2360,7 +2484,10 @@ func ReqRefuseCardExchange(player *Player, buf []byte) error { // 领取好友卡牌 func ReqGetFriendCard(player *Player, buf []byte) error { req := &msg.ReqRefuseCardExchange{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) @@ -2388,7 +2515,10 @@ func ReqGetFriendCard(player *Player, buf []byte) error { // 请求玩家榜单 func ReqRank(player *Player, buf []byte) error { req := &msg.ReqRank{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } m := &MsqMod.Msg{ From: int(player.M_DwUin), Type: MsqMod.HANDLE_TYPE_RANK_INFO, @@ -2413,7 +2543,10 @@ func ReqRank(player *Player, buf []byte) error { // 请求竞标赛榜单 func ReqChampshipRank(player *Player, buf []byte) error { req := &msg.ReqRank{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } m := G_GameLogicPtr.ChampshipMgr.GetRankMsg(int(player.M_DwUin)) player.PushClientRes(m) return nil @@ -2421,7 +2554,10 @@ func ReqChampshipRank(player *Player, buf []byte) error { func ReqChampshipPreRank(player *Player, buf []byte) error { req := &msg.ReqRank{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } m := G_GameLogicPtr.ChampshipMgr.GetPreRankMsg(int(player.M_DwUin)) player.PushClientRes(m) return nil @@ -2437,9 +2573,12 @@ func ReqMailList(player *Player, buf []byte) error { // 读邮件 func ReqReadMail(player *Player, buf []byte) error { req := &msg.ReqReadMail{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } MailMod := player.PlayMod.getMailMod() - err := MailMod.Read(int(req.Id)) + err = MailMod.Read(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResReadMail{ Code: msg.RES_CODE_FAIL, @@ -2459,7 +2598,10 @@ func ReqReadMail(player *Player, buf []byte) error { // 领取邮件奖励 func ReqGetMailReward(player *Player, buf []byte) error { req := &msg.ReqGetMailReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } MailMod := player.PlayMod.getMailMod() itemList, err := MailMod.Reward(int(req.Id)) if err != nil { @@ -2494,9 +2636,12 @@ func ReqGetMailReward(player *Player, buf []byte) error { // 删除邮件 func ReqDeleteMail(player *Player, buf []byte) error { req := &msg.ReqDeleteMail{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } MailMod := player.PlayMod.getMailMod() - err := MailMod.Del(int(req.Id)) + err = MailMod.Del(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResDeleteMail{ Code: msg.RES_CODE_FAIL, @@ -2548,7 +2693,10 @@ func ReqFreeShop(player *Player, buf []byte) error { // 购买棋子商店物品 func ReqBuyChessShop(player *Player, buf []byte) error { req := &msg.ReqBuyChessShop{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChargeMod := player.PlayMod.getChargeMod() LostItem, Item, _, err := ChargeMod.BuyChess(int(req.Id), player.IsWeeklyDiscount()) if err != nil { @@ -2596,7 +2744,10 @@ func ReqBuyChessShop(player *Player, buf []byte) error { // 购买棋子商店物品 func ReqBuyChessShop2(player *Player, buf []byte) error { req := &msg.ReqBuyChessShop2{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChargeMod := player.PlayMod.getChargeMod() LostItem, _, ChessId, err := ChargeMod.BuyChess(int(req.Id), player.IsWeeklyDiscount()) if err != nil { @@ -2676,7 +2827,10 @@ func ReqRefreshChessShop(player *Player, buf []byte) error { // 领取无尽礼包免费奖励 func ReqEndlessReward(player *Player, buf []byte) error { req := &msg.ReqEndlessReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } EndlessMod := player.PlayMod.getEndlessMod() BaseMod := player.PlayMod.getBaseMod() itemList, err := EndlessMod.GetReward(BaseMod.GetLevel()) @@ -2748,7 +2902,10 @@ func ReqPiggyBankReward(player *Player, buf []byte) error { // 生成订单号 func ReqCreateOrderSn(player *Player, buf []byte) error { req := &msg.ReqCreateOrderSn{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } OrderSn, err := CreateOrderSn(player, req) if err != nil { return err @@ -2763,7 +2920,10 @@ func ReqCreateOrderSn(player *Player, buf []byte) error { func ReqShippingOrder(player *Player, buf []byte) error { return nil req := &msg.ReqShippingOrder{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } go TriggerShippingOrder(player, req) player.PushClientRes(&msg.ResShippingOrder{ @@ -2813,7 +2973,10 @@ func ReqLimitEvent(player *Player, buf []byte) error { func ReqKv(player *Player, buf []byte) error { req := &msg.ReqKv{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } KvMod := player.PlayMod.getKvMod() KvMod.SetVar(int(req.Key), req.Value) return nil @@ -2874,7 +3037,10 @@ func ReqFriendTimeLine(player *Player, buf []byte) error { func ReqFriendTLUpvote(player *Player, buf []byte) error { req := &msg.ReqFriendTLUpvote{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() Items, FUid, err := FriendMod.Upvote(int(req.Id)) if err != nil { @@ -2913,7 +3079,10 @@ func ReqFriendTLUpvote(player *Player, buf []byte) error { func ReqFriendTReward(player *Player, buf []byte) error { req := &msg.ReqFriendTReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() Items, err := FriendMod.GetReward(int(req.Id)) if err != nil { @@ -2979,7 +3148,10 @@ func ReqChampshipRankReward(player *Player, buf []byte) error { func ReqSetName(player *Player, buf []byte) error { req := &msg.ReqSetName{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } BaseMod := player.PlayMod.getBaseMod() BaseMod.SetNickName(req.Name) player.PushClientRes(&msg.ResSetName{ @@ -2996,7 +3168,10 @@ func ReqSetName(player *Player, buf []byte) error { func ReqSetPetName(player *Player, buf []byte) error { req := &msg.ReqSetPetName{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } BaseMod := player.PlayMod.getBaseMod() BaseMod.SetPetName(req.Name) player.PushClientRes(&msg.ResSetPetName{ @@ -3021,9 +3196,12 @@ func ReqUserInfo(player *Player, buf []byte) error { func ReqMasterCard(player *Player, buf []byte) error { req := &msg.ReqMasterCard{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() - err := CardMod.MasterCardEx(int(req.Id), int(req.CardId)) + err = CardMod.MasterCardEx(int(req.Id), int(req.CardId)) if err != nil { player.SendErrClienRes(&msg.ResMasterCard{ Code: msg.RES_CODE_FAIL, @@ -3047,7 +3225,10 @@ func ReqMasterCard(player *Player, buf []byte) error { func ReqSetFacebookUrl(player *Player, buf []byte) error { req := &msg.ReqSetFacebookUrl{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } BaseMod := player.PlayMod.getBaseMod() BaseMod.SetFacebookUrl(req.Url) player.PlayMod.save() @@ -3065,7 +3246,10 @@ func ReqInviteFriendData(player *Player, buf []byte) error { func ReqSelfInvited(player *Player, buf []byte) error { req := &msg.ReqSelfInvited{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_INVITE_FRIEND, From: int(player.M_DwUin), @@ -3080,7 +3264,10 @@ func ReqSelfInvited(player *Player, buf []byte) error { func ReqGetInviteReward(player *Player, buf []byte) error { req := &msg.ReqGetInviteReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } InviteMod := player.PlayMod.getInviteMod() Items, err := InviteMod.GetReward(int(req.GetIndex)) if err != nil { @@ -3113,7 +3300,10 @@ func ReqGetInviteReward(player *Player, buf []byte) error { func ReqAutoAddInviteFriend(player *Player, buf []byte) error { req := &msg.ReqAutoAddInviteFriend{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() Uid := int(req.Id) if Uid == 0 && Uid == int(player.M_DwUin) { @@ -3146,7 +3336,10 @@ func ReqAutoAddInviteFriend(player *Player, buf []byte) error { func ReqAutoAddInviteFriend2(player *Player, buf []byte) error { req := &msg.ReqAutoAddInviteFriend2{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() Uid, err := GetUidByFaceBook(req.Id) if Uid == 0 || Uid == int(player.M_DwUin) { @@ -3187,7 +3380,10 @@ func ReqAutoAddInviteFriend2(player *Player, buf []byte) error { func ReqSelectLimitEvent(player *Player, buf []byte) error { req := &msg.ReqSelectLimitEvent{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() BaseMod := player.PlayMod.getBaseMod() Items, EventType, OrderNum, RewardList, err := LimitedTimeEventMod.SelectProgressReward(int(req.Id), BaseMod.GetLevel(), BaseMod.GetEnergy()) @@ -3229,7 +3425,10 @@ func ReqMining(player *Player, buf []byte) error { // 请求挖矿 func ReqMiningTake(player *Player, buf []byte) error { req := &msg.ReqMiningTake{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } MiningMod := player.PlayMod.getMiningMod() ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_MINING) Status := GetActivityStatus(player, activity.ACT_TYPE_MINING) @@ -3241,7 +3440,7 @@ func ReqMiningTake(player *Player, buf []byte) error { return fmt.Errorf("activity not start") } LoseItem := miningCfg.GetLoseItem(ActivityInfo.Id) - err := player.HandleLoseItem(LoseItem, "MiningLose") + err = player.HandleLoseItem(LoseItem, "MiningLose") if err != nil { player.SendErrClienRes(&msg.ResMiningTake{ Code: msg.RES_CODE_FAIL, @@ -3314,10 +3513,13 @@ func ReqMiningReward(player *Player, buf []byte) error { // 请求猜颜色基础数据 func ReqGuessColor(player *Player, buf []byte) error { req := &msg.ReqGuessColor{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } GuessColorMod := player.PlayMod.getGuessColorMod() Items := GuessColorMod.FirstIn() - err := player.HandleItem(Items, msg.ITEM_POP_LABEL_GuessColor.String()) + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_GuessColor.String()) if err != nil { return err } @@ -3329,7 +3531,10 @@ func ReqGuessColor(player *Player, buf []byte) error { // 请求猜颜色 func ReqGuessColorTake(player *Player, buf []byte) error { req := &msg.ReqGuessColorTake{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorTake{ @@ -3340,7 +3545,7 @@ func ReqGuessColorTake(player *Player, buf []byte) error { } GuessColorMod := player.PlayMod.getGuessColorMod() LoseItem := GuessColorMod.GetLoseItem() - err := player.HandleLoseItem(LoseItem, "GuessColorLose") + err = player.HandleLoseItem(LoseItem, "GuessColorLose") if err != nil { player.SendErrClienRes(&msg.ResGuessColorTake{ Code: msg.RES_CODE_FAIL, @@ -3362,7 +3567,10 @@ func ReqGuessColorTake(player *Player, buf []byte) error { // 请求猜颜色奖励 func ReqGuessColorReward(player *Player, buf []byte) error { req := &msg.ReqGuessColorReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorReward{ @@ -3405,9 +3613,12 @@ func ReqRace(player *Player, buf []byte) error { // 请求竞赛开始 func ReqRaceStart(player *Player, buf []byte) error { req := &msg.ReqRaceStart{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } RaceMod := player.PlayMod.getRaceMod() - err := RaceMod.StartGame() + err = RaceMod.StartGame() if err != nil { player.SendErrClienRes(&msg.ResRaceStart{ Code: msg.RES_CODE_FAIL, @@ -3425,7 +3636,10 @@ func ReqRaceStart(player *Player, buf []byte) error { // 领取竞赛奖励 func ReqRaceReward(player *Player, buf []byte) error { req := &msg.ResRaceReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } RaceMod := player.PlayMod.getRaceMod() Items, err := RaceMod.GetReward() if err != nil { @@ -3462,7 +3676,10 @@ func ReqPlayroom(player *Player, buf []byte) error { // 请求playroom拜访信息 func ReqPlayroomInfo(player *Player, buf []byte) error { req := &msg.ReqPlayroomInfo{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Targer := int(req.Uid) if req.Uid == 0 { @@ -3518,7 +3735,10 @@ func ReqPlayroomInfo(player *Player, buf []byte) error { // 请求playroom交互 func ReqPlayroomInteract(player *Player, buf []byte) error { req := &msg.ReqPlayroomInteract{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items, PType, err := PlayroomMod.Interact(int(req.Id), int(req.Type)) if err != nil { @@ -3568,9 +3788,12 @@ func ReqPlayroomInteract(player *Player, buf []byte) error { // 请求playroom设置房间 func ReqPlayroomSetRoom(player *Player, buf []byte) error { req := &msg.ReqPlayroomSetRoom{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() - _, err := PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom)) + _, err = PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomSetRoom{ Code: msg.RES_CODE_FAIL, @@ -3590,7 +3813,10 @@ func ReqPlayroomSetRoom(player *Player, buf []byte) error { // 玩游戏 func ReqPlayroomGame(player *Player, buf []byte) error { req := &msg.ReqPlayroomGame{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Target := PlayroomMod.GetTarget() if Target == 0 { @@ -3601,7 +3827,7 @@ func ReqPlayroomGame(player *Player, buf []byte) error { return fmt.Errorf("no target") } Items := player.GetPlayroomGameReward(int(req.Type), 0) - err := player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomGame{ Code: msg.RES_CODE_FAIL, @@ -3646,10 +3872,13 @@ func ReqPlayroomGame(player *Player, buf []byte) error { // 选择奖励 func ReqPlayroomSelectReward(player *Player, buf []byte) error { req := &msg.ReqPlayroomSelectReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items := player.GetPlayroomGameReward(playroom.GAME_RESULT_HIGH, int(req.Id)) - err := player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomSelectReward{ Code: msg.RES_CODE_FAIL, @@ -3710,7 +3939,10 @@ func ReqPlayroomLose(player *Player, buf []byte) error { // 宠物开始工作 func ReqPlayroomWork(player *Player, buf []byte) error { req := &msg.ReqPlayroomWork{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items, err := PlayroomMod.Work() if err != nil { @@ -3794,7 +4026,10 @@ func ReqPlayroomDraw(player *Player, buf []byte) error { // 清理碎片 func ReqPlayroomChip(player *Player, buf []byte) error { req := &msg.ReqPlayroomChip{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items, ChipNum, err := PlayroomMod.RemoveChip(req.Uid) if err != nil { @@ -3828,7 +4063,10 @@ func ReqPlayroomChip(player *Player, buf []byte) error { // 翻牌游戏 func ReqPlayroomFlip(player *Player, buf []byte) error { req := &msg.ReqPlayroomFlip{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() CardId, err := PlayroomMod.FlipCard(int(req.Id)) @@ -3855,7 +4093,10 @@ func ReqPlayroomFlip(player *Player, buf []byte) error { func ReqPlayroomFlipReward(player *Player, buf []byte) error { req := &msg.ReqPlayroomFlipReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items, Target, Result, err := PlayroomMod.GetFlipReward() if err != nil { @@ -3909,7 +4150,10 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { func ReqPlayroomBuyItem(player *Player, buf []byte) error { req := &msg.ReqPlayroomBuyItem{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() AddItems, CostItem := PlayroomMod.BuyItem(int(req.Id)) if CostItem == nil { @@ -3921,7 +4165,7 @@ func ReqPlayroomBuyItem(player *Player, buf []byte) error { return err } - err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_PlayroomBuyItem.String()) + err = player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_PlayroomBuyItem.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomBuyItem{ Code: msg.RES_CODE_FAIL, @@ -3949,7 +4193,10 @@ func ReqPlayroomBuyItem(player *Player, buf []byte) error { func ReqPlayroomUpvote(player *Player, buf []byte) error { req := &msg.ReqPlayroomUpvote{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items, err := PlayroomMod.GiveUpvote(int(req.Id)) if err != nil { @@ -3992,9 +4239,12 @@ func ReqPlayroomUpvote(player *Player, buf []byte) error { func ReqPlayroomUnlock(player *Player, buf []byte) error { req := &msg.ReqPlayroomUnlock{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() - err := PlayroomMod.Unlock(int(req.Id)) + err = PlayroomMod.Unlock(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomUnlock{ Code: msg.RES_CODE_FAIL, @@ -4016,7 +4266,10 @@ func ReqPlayroomUnlock(player *Player, buf []byte) error { func ReqPlayroomTask(player *Player, buf []byte) error { req := &msg.ReqPlayroomTask{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items, err := PlayroomMod.GetDailyTaskReward(int(req.Id)) if err != nil { @@ -4050,7 +4303,10 @@ func ReqPlayroomTask(player *Player, buf []byte) error { func ReqPlayroomTaskReward(player *Player, buf []byte) error { req := &msg.ReqPlayroomTaskReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Id, Items, err := PlayroomMod.GetTaskReward(int(req.Type)) if err != nil { @@ -4086,7 +4342,10 @@ func ReqPlayroomTaskReward(player *Player, buf []byte) error { func ReqOfflineReconnectFunc(a gate.Agent, buf []byte) error { req := &msg.ReqOfflineReconnect{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } res := &msg.ResOfflineReconnect{} res.DwUin = req.DwUin if v, ok := G_GameLogicPtr.M_Players.Load(req.DwUin); ok { @@ -4109,7 +4368,10 @@ func ReqOfflineReconnectFunc(a gate.Agent, buf []byte) error { // playroom 打工离线 func ReqPlayroomOutline(player *Player, buf []byte) error { req := &msg.ReqPlayroomOutline{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() if req.CostDia < 0 { var itemList []*item.Item @@ -4125,7 +4387,7 @@ func ReqPlayroomOutline(player *Player, buf []byte) error { } } - err := ChessMod.ExChess(int(req.OldChessId), int(req.NewChessId)) + err = ChessMod.ExChess(int(req.OldChessId), int(req.NewChessId)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomOutline{ Code: msg.RES_CODE_FAIL, @@ -4166,7 +4428,10 @@ func ReqPlayroomWrokOutline(player *Player, buf []byte) error { func ReqPlayroomShop(player *Player, buf []byte) error { req := &msg.ReqPlayroomShop{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() AddItems, LoseItem, err := PlayroomMod.ShopBuy(int(req.Id), int(req.Num), player.IsWeeklyDiscount()) if err != nil { @@ -4225,7 +4490,10 @@ func ReqFriendTreasure(player *Player, buf []byte) error { func ReqFriendTreasureStart(player *Player, buf []byte) error { req := &msg.ReqFriendTreasureStart{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } // FriendMod := player.PlayMod.getFriendMod() FriendTreasureMod := player.PlayMod.getFriendTreasureMod() if FriendTreasureMod.Status == 1 { @@ -4255,7 +4523,10 @@ func ReqFriendTreasureStart(player *Player, buf []byte) error { func ReqFriendTreasureFilp(player *Player, buf []byte) error { req := &msg.ReqFriendTreasureFilp{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendTreasureMod := player.PlayMod.getFriendTreasureMod() Items, Uid, err := FriendTreasureMod.Flip(int(req.Pos)) if err != nil { @@ -4352,7 +4623,10 @@ func ReqFriendTreasureEnd(player *Player, buf []byte) error { func ReqKafkaLog(player *Player, buf []byte) error { req := &msg.ReqKafkaLog{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } player.Kafka(req.Event, map[string]interface{}{ "From": "Client", "data": req.Data, @@ -4362,7 +4636,10 @@ func ReqKafkaLog(player *Player, buf []byte) error { func ReqCardHandbookReward(player *Player, buf []byte) error { req := &msg.ReqCardHandbookReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() Items, err := CardMod.GetHandbookReward(int(req.CardId)) if err != nil { @@ -4395,9 +4672,12 @@ func ReqCardHandbookReward(player *Player, buf []byte) error { // 设置表情 func ReqSetEmoji(player *Player, buf []byte) error { req := &msg.ReqSetEmoji{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } EmojiMod := player.PlayMod.getEmojiMod() - err := EmojiMod.SetEmoji(int(req.Id), int(req.Type)) + err = EmojiMod.SetEmoji(int(req.Id), int(req.Type)) if err != nil { player.SendErrClienRes(&msg.ResSetEmoji{ Code: msg.RES_CODE_FAIL, @@ -4428,7 +4708,10 @@ func ReqCollectInfo(player *Player, buf []byte) error { // 领取收集奖励 func ReqCollect(player *Player, buf []byte) error { req := &msg.ReqCollect{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CollectMod := player.PlayMod.getCollectMod() Type := collectCfg.GetRewardType(int(req.Id)) Num := 0 @@ -4476,7 +4759,10 @@ func ReqCollect(player *Player, buf []byte) error { // 获取出售棋子获得的星星数量 func ReqSellChessNum(player *Player, buf []byte) error { req := &msg.ReqSellChessNum{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } data, _ := mergeDataCfg.GetOne(int(req.ChessId)) Num := data.SellNum limitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() @@ -4491,7 +4777,10 @@ func ReqSellChessNum(player *Player, buf []byte) error { func ReqPlayroomDressSet(player *Player, buf []byte) error { req := &msg.ReqPlayroomDressSet{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Parts, _, error := PlayroomMod.PlayroomDressSet(GoUtil.MapInt32ToInt(req.DressSet)) if error != nil { @@ -4513,7 +4802,10 @@ func ReqPlayroomDressSet(player *Player, buf []byte) error { func ReqPlayroomPetAirSet(player *Player, buf []byte) error { req := &msg.ReqPlayroomPetAirSet{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() error := PlayroomMod.PlayroomPetAirSet(int(req.PetAirSet)) if error != nil { @@ -4576,7 +4868,10 @@ func ReqLimitEventLuckyCat(player *Player, buf []byte) error { func ReqActivityReward(player *Player, buf []byte) error { req := &msg.ReqActivityReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ActivityInfo := GetActivityInfo(player, int(req.Id)) if ActivityInfo == nil { player.SendErrClienRes(&msg.ResActivityReward{ @@ -4617,7 +4912,10 @@ func ReqActivityReward(player *Player, buf []byte) error { func ReqLang(player *Player, buf []byte) error { req := &msg.ReqLang{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } BaseMod := player.PlayMod.getBaseMod() BaseMod.SetLang(req.Lang) player.PushClientRes(&msg.ResLang{ @@ -4628,7 +4926,10 @@ func ReqLang(player *Player, buf []byte) error { func ReqCatTrickReward(player *Player, buf []byte) error { req := &msg.ReqCatTrickReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() if !LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CAT_TRICK) { player.SendErrClienRes(&msg.ResCatTrickReward{ @@ -4667,7 +4968,10 @@ func ReqCatTrickReward(player *Player, buf []byte) error { func ReqAddNpc(player *Player, buf []byte) error { req := &msg.ReqAddNpc{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() FriendMod.SetNpc(int(req.NpcId)) if len(FriendMod.Npc) == 1 { // 首次添加NPC 视为邀请好友成功 @@ -4696,7 +5000,10 @@ func ReqAddNpc(player *Player, buf []byte) error { func ReqChargeReceive(player *Player, buf []byte) error { req := &msg.ReqChargeReceive{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(req.Uid), @@ -4712,7 +5019,10 @@ func ReqChargeReceive(player *Player, buf []byte) error { func ReqAddWish(player *Player, buf []byte) error { req := &msg.ReqAddWish{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChargeMod := player.PlayMod.getChargeMod() Items, err := ChargeMod.AddWish(int(req.Id), int(req.Type)) if err != nil { @@ -4746,7 +5056,10 @@ func ReqAddWish(player *Player, buf []byte) error { func ReqGetWish(player *Player, buf []byte) error { req := &msg.ReqGetWish{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChargeMod := player.PlayMod.getChargeMod() Items, err := ChargeMod.GetWish() if err != nil { @@ -4778,9 +5091,12 @@ func ReqGetWish(player *Player, buf []byte) error { func ReqSendWishBeg(player *Player, buf []byte) error { req := &msg.ReqSendWishBeg{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChargeMod := player.PlayMod.getChargeMod() - err := ChargeMod.SendWishBeg(req.Uid) + err = ChargeMod.SendWishBeg(req.Uid) if err != nil { player.SendErrClienRes(&msg.ResSendWishBeg{ Code: msg.RES_CODE_FAIL, @@ -4808,7 +5124,10 @@ func ReqSendWishBeg(player *Player, buf []byte) error { func ReqWishApplyList(player *Player, buf []byte) error { req := &msg.ReqWishApplyList{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() List := FriendMod.GetWishApply() rs := make([]*msg.ResFriendApplyInfo, 0) @@ -4832,9 +5151,12 @@ func ReqWishApplyList(player *Player, buf []byte) error { func ReqWishApply(player *Player, buf []byte) error { req := &msg.ReqWishApply{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() - err := FriendMod.ApplyWish(req.Uid) + err = FriendMod.ApplyWish(req.Uid) if err != nil { player.SendErrClienRes(&msg.ResWishApply{ Code: msg.RES_CODE_FAIL, @@ -4861,7 +5183,10 @@ func ReqWishApply(player *Player, buf []byte) error { func ReqGuidePlayroom(player *Player, buf []byte) error { req := &msg.ReqGuidePlayroom{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } GuideMod := player.PlayMod.getGuideMod() B := GuideMod.GetPlayroomGuide() if B { @@ -4872,7 +5197,7 @@ func ReqGuidePlayroom(player *Player, buf []byte) error { return fmt.Errorf("已领取") } Items := []*item.Item{item.NewItem(int(req.Id), 1)} - err := player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) if err != nil { player.SendErrClienRes(&msg.ResWishApply{ Code: msg.RES_CODE_FAIL, @@ -4890,7 +5215,10 @@ func ReqGuidePlayroom(player *Player, buf []byte) error { func ReqId2Verify(player *Player, buf []byte) error { req := &msg.ReqId2Verify{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } if req.Id == "" || req.Name == "" { player.SendErrClienRes(&msg.ResId2Verify{ ResultCode: msg.RES_CODE_FAIL, @@ -4898,7 +5226,7 @@ func ReqId2Verify(player *Player, buf []byte) error { }) return fmt.Errorf("id is zero") } - err := GoUtil.IdVerify(req.Name, req.Id) + err = GoUtil.IdVerify(req.Name, req.Id) if err != nil { player.SendErrClienRes(&msg.ResId2Verify{ ResultCode: msg.RES_CODE_FAIL, @@ -4921,7 +5249,10 @@ func ReqId2Verify(player *Player, buf []byte) error { func ReqFriendByCode(player *Player, buf []byte) error { req := &msg.ReqFriendByCode{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } if req.Code == "" { player.SendErrClienRes(&msg.ResFriendByCode{ Code: msg.RES_CODE_FAIL, @@ -4963,7 +5294,10 @@ func ReqFriendByCode(player *Player, buf []byte) error { func ReqPlayroomGameShowReward(player *Player, buf []byte) error { req := &msg.ReqPlayroomGameShowReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Items := player.GetPlayroomGameReward(int(req.Type), int(req.SelectId)) player.PushClientRes(&msg.ResPlayroomGameShowReward{ Items: item.ItemToMsg(Items), @@ -4973,9 +5307,12 @@ func ReqPlayroomGameShowReward(player *Player, buf []byte) error { func ReqPlayroomGuide(player *Player, buf []byte) error { req := &msg.ReqPlayroomGuide{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() - err := PlayroomMod.Guide(int(req.Type)) + err = PlayroomMod.Guide(int(req.Type)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomGuide{ Code: msg.RES_CODE_FAIL, @@ -5002,11 +5339,14 @@ func ReqCatnip(player *Player, buf []byte) error { // TODO : 猫草大作战邀请好友 func ReqCatnipInvite(player *Player, buf []byte) error { req := &msg.ReqCatnipInvite{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) ActivityInfo := GetActivityInfo(player, ActivityId) CatnipMod := player.PlayMod.getCatnipMod() - err := CatnipMod.Invite(int(req.Id), int(req.Uid)) + err = CatnipMod.Invite(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_FAIL, @@ -5038,7 +5378,10 @@ func ReqCatnipInvite(player *Player, buf []byte) error { func ReqCatnipAgree(player *Player, buf []byte) error { req := &msg.ReqCatnipAgree{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) UserList, err := CatnipMod.Agree(int(req.Id), int(req.Uid)) @@ -5094,9 +5437,12 @@ func ReqCatnipAgree(player *Player, buf []byte) error { // TODO : 猫草大作战设置倍数 func ReqCatnipMultiply(player *Player, buf []byte) error { req := &msg.ReqCatnipMultiply{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() - err := CatnipMod.Multiply(int(req.Multiply)) + err = CatnipMod.Multiply(int(req.Multiply)) if err != nil { player.SendErrClienRes(&msg.ResCatnipMultiply{ Code: msg.RES_CODE_FAIL, @@ -5118,7 +5464,10 @@ func ReqCatnipMultiply(player *Player, buf []byte) error { // TODO : 猫草大作战开始游戏 func ReqCatnipPlay(player *Player, buf []byte) error { req := &msg.ReqCatnipPlay{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() Id, Growth, PartnerId, Items, ItemCost, err := CatnipMod.Play(int(req.Id)) if err != nil { @@ -5163,7 +5512,10 @@ func ReqCatnipPlay(player *Player, buf []byte) error { // TODO : 猫草大作战领取奖励 func ReqCatnipReward(player *Player, buf []byte) error { req := &msg.ReqCatnipReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() Items, err := CatnipMod.Reward(int(req.Id), int(req.Progress)) if err != nil { @@ -5197,7 +5549,10 @@ func ReqCatnipReward(player *Player, buf []byte) error { // 猫草大作战领取大奖 func ReqCatnipGrandReward(player *Player, buf []byte) error { req := &msg.ReqCatnipGrandReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() Items, err := CatnipMod.GrandReward() if err != nil { @@ -5227,9 +5582,12 @@ func ReqCatnipGrandReward(player *Player, buf []byte) error { func ReqCatnipRefuse(player *Player, buf []byte) error { req := &msg.ReqCatnipRefuse{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() - err := CatnipMod.Refuse(int(req.Id), int(req.Uid)) + err = CatnipMod.Refuse(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipRefuse{ Code: msg.RES_CODE_FAIL, @@ -5287,7 +5645,10 @@ func ReqActPassReward(player *Player, buf []byte) error { func ReqFriendReplyHandle(player *Player, buf []byte) error { req := &msg.ReqFriendReplyHandle{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() ReplyInfo := FriendMod.ReplyFriend(int(req.LogId)) if ReplyInfo == nil { @@ -5356,7 +5717,7 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { } } Items := baseCfg.GetFriendReplyReward() - err := player.HandleItem(Items, msg.ITEM_POP_LABEL_FriendReplyHandle.String()) + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_FriendReplyHandle.String()) if err != nil { player.SendErrClienRes(&msg.ResFriendReplyHandle{ Code: msg.RES_CODE_FAIL, @@ -5374,7 +5735,10 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { func ReqGetChessRetireReward(player *Player, buf []byte) error { req := &msg.ReqGetChessRetireReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() Items, err := ChessMod.GetRetireReward(req.Id) if err != nil { @@ -5407,7 +5771,10 @@ func ReqGetChessRetireReward(player *Player, buf []byte) error { func ReqCatnipEmoji(player *Player, buf []byte) error { req := &msg.ReqCatnipEmoji{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() CatnipMod.SetEmoji(int(req.Id), int(req.EmojiId)) player.CatnipBackData() From 5ad2b64fc41fc17236392781275096404037c2b3 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 5 Dec 2025 11:12:51 +0800 Subject: [PATCH 23/49] =?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/benchmark_test.go | 38 +++++++++ src/server/game/LogMgr.go | 152 ++++++++++++++++++++++++++++------- 2 files changed, 163 insertions(+), 27 deletions(-) diff --git a/src/server/benchmark_test.go b/src/server/benchmark_test.go index 8f6defb1..dfc02b0f 100644 --- a/src/server/benchmark_test.go +++ b/src/server/benchmark_test.go @@ -50,6 +50,44 @@ func BenchmarkGame(b *testing.B) { printMemUsage() } } + +func BenchmarkLog(b *testing.B) { + runtime.GOMAXPROCS(2) + t := game.G_getGameLogic() + for i := 0; i < 10000; i++ { + t.AddLog(&game.Log{ + EventName: "test_log", + Param: map[string]interface{}{ + "test_key": "test_value", + }, + }) + } + t.MLogManager.Close() +} + +func BenchmarkLog2(b *testing.B) { + // 准备耗时但不需要计入基准的初始化 + runtime.GOMAXPROCS(2) + // 假设有个函数 NewGameLogicForBenchmark() 创建全新、独立的对象 + b.ReportAllocs() + for i := 0; i < b.N; i++ { + // 每次迭代创建独立对象,避免副作用 + t := game.G_getGameLogic() + b.StartTimer() + // 被测操作:向日志管理器添加 1000 条日志 + for j := 0; j < 1000; j++ { + t.AddLog(&game.Log{ + EventName: "test_log", + Param: map[string]interface{}{ + "test_key": "test_value", + }, + }) + } + b.StopTimer() + t.MLogManager.Close() + } +} + func printMemUsage() { var m runtime.MemStats runtime.ReadMemStats(&m) diff --git a/src/server/game/LogMgr.go b/src/server/game/LogMgr.go index 0cf459ad..0f216af1 100644 --- a/src/server/game/LogMgr.go +++ b/src/server/game/LogMgr.go @@ -6,6 +6,7 @@ import ( kafkaMiddleware "server/middleware/kafka" "server/pkg/github.com/name5566/leaf/log" "sync" + "sync/atomic" "time" ) @@ -18,7 +19,7 @@ const ( PLAYROOM_LOST = "playroom_lost" // 增大缓冲:针对 ~1000 条/s,保留足够秒数的缓冲(可按需调整) LOG_LENGTH = 100000 - WORKER_COUNT = 16 + WORKER_COUNT = 500 ) type LogMgr struct { @@ -40,20 +41,35 @@ type Log struct { } func (L *LogMgr) InitManager() { - // 初始化通道与启动 worker 循环写入 kafka + // 初始化通道 L.L = make(chan *Log, LOG_LENGTH) - // 启动 worker(允许基于 CPU 动态扩展) - workerCount := WORKER_COUNT - if cpuWorkers := runtime.NumCPU() * 2; cpuWorkers > workerCount { - workerCount = cpuWorkers + // 动态协程池参数 + maxWorkers := WORKER_COUNT + if cpuWorkers := runtime.NumCPU() * 2; cpuWorkers > maxWorkers { + maxWorkers = cpuWorkers } - for i := 0; i < workerCount; i++ { + minWorkers := 100 + idleTimeout := 500 * time.Millisecond + + var activeWorkers int32 + + // worker 启动函数 + spawnWorker := func() { L.wg.Add(1) + atomic.AddInt32(&activeWorkers, 1) go func() { defer L.wg.Done() - for v := range L.L { - // 如果 kafka 未就绪,尝试重入队列并等待一小段时间(缩短等待) + defer atomic.AddInt32(&activeWorkers, -1) + + for { + // 首先阻塞等待一个任务(若 channel 关闭则退出) + v, ok := <-L.L + if !ok { + return + } + // 处理消息(与原来逻辑一致) + value, _ := json.Marshal(v) if kafkaMiddleware.KafkaMod == nil { // 尝试非阻塞重入,否则丢弃最旧再试一次 select { @@ -69,33 +85,115 @@ func (L *LogMgr) InitManager() { } } time.Sleep(10 * time.Millisecond) - continue - } - - value, _ := json.Marshal(v) - if err := kafkaMiddleware.SendMsg([]byte(v.EventName), value); err != nil { - log.Debug("kafka log send err:%s", err.Error()) - // 发送失败,尝试将消息放回通道(非阻塞策略) - select { - case L.L <- v: - default: - // 通道满,丢弃最旧一条后再尝试一次入队 - select { - case <-L.L: - default: - } + } else { + if err := kafkaMiddleware.SendMsg([]byte(v.EventName), value); err != nil { + log.Debug("kafka log send err:%s", err.Error()) select { case L.L <- v: default: - // 放不下则丢弃 + select { + case <-L.L: + default: + } + select { + case L.L <- v: + default: + } } + time.Sleep(10 * time.Millisecond) + } + } + + // 快速循环处理后续可用任务,若超时则退出该 worker(回收) + timer := time.NewTimer(idleTimeout) + for { + select { + case v, ok := <-L.L: + if !ok { + if !timer.Stop() { + <-timer.C + } + return + } + // 处理消息 + value, _ := json.Marshal(v) + if kafkaMiddleware.KafkaMod == nil { + select { + case L.L <- v: + default: + select { + case <-L.L: + default: + } + select { + case L.L <- v: + default: + } + } + time.Sleep(10 * time.Millisecond) + } else { + if err := kafkaMiddleware.SendMsg([]byte(v.EventName), value); err != nil { + log.Debug("kafka log send err:%s", err.Error()) + select { + case L.L <- v: + default: + select { + case <-L.L: + default: + } + select { + case L.L <- v: + default: + } + } + time.Sleep(10 * time.Millisecond) + } + } + // 重置定时器以继续快速处理 + if !timer.Stop() { + <-timer.C + } + timer.Reset(idleTimeout) + case <-timer.C: + timer.Stop() + // 空闲超时,退出该 worker + return } - // 缩短退避,避免快速循环阻塞 - time.Sleep(10 * time.Millisecond) } } }() } + + // 启动初始最小 worker 数量 + for i := 0; i < minWorkers; i++ { + spawnWorker() + } + + // 监督器:动态根据队列长度扩展 worker,但不超过 maxWorkers + go func() { + ticker := time.NewTicker(200 * time.Millisecond) + defer ticker.Stop() + for range ticker.C { + L.Lock.Lock() + closing := L.closing + L.Lock.Unlock() + if closing { + return + } + backlog := len(L.L) + active := int(atomic.LoadInt32(&activeWorkers)) + if backlog > active && active < maxWorkers { + toSpawn := backlog - active + remain := maxWorkers - active + if toSpawn > remain { + toSpawn = remain + } + for i := 0; i < toSpawn; i++ { + spawnWorker() + } + } + } + }() } func (L *LogMgr) AddLog(logs *Log) { From 259814ab90db9c611b29fb538ee9eee3e3b877dc Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 5 Dec 2025 19:39:40 +0800 Subject: [PATCH 24/49] =?UTF-8?q?=E7=8C=AB=E8=8D=89=E5=A4=A7=E4=BD=9C?= =?UTF-8?q?=E6=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/GoUtil/sliceUtil.go | 6 + src/server/game/ActivityFunc.go | 70 ++++++--- src/server/game/Gm.go | 5 + src/server/game/PlayerFunc.go | 18 +-- src/server/game/RegisterNetworkFunc.go | 60 ++++--- src/server/game/VarMgr.go | 20 ++- src/server/game/mod/catnip/Catnip.go | 156 ++++++++++--------- src/server/game/mod/guessColor/guessColor.go | 6 +- src/server/msg/Gameapi.pb.go | 137 ++++++++-------- 9 files changed, 255 insertions(+), 223 deletions(-) diff --git a/src/server/GoUtil/sliceUtil.go b/src/server/GoUtil/sliceUtil.go index 194db286..72cd199f 100644 --- a/src/server/GoUtil/sliceUtil.go +++ b/src/server/GoUtil/sliceUtil.go @@ -9,6 +9,12 @@ import ( "strings" ) +func IntSlice(d interface{}) []int { + if d == nil { + return []int{} + } + return d.([]int) +} func IntToInt32(d []int) []int32 { r := make([]int32, 0, len(d)) for _, d := range d { diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index a23348f3..847ceb04 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -1,6 +1,7 @@ package game import ( + "fmt" "server/GoUtil" activityCfg "server/conf/activity" catnipCfg "server/conf/catnip" @@ -314,6 +315,7 @@ func (p *Player) CatnipBackData() { if CatnipMod == nil { return } + FriendMod := p.PlayMod.getFriendMod() GameList := make([]*msg.CatnipGame, 0) for _, v := range CatnipMod.Game { GameInfo := &msg.CatnipGame{ @@ -329,32 +331,56 @@ func (p *Player) CatnipBackData() { GameInfo.Partner = PlayerData } } - InviteList := make([]*msg.CatnipInvite, 0) - for _, iv := range v.InviteList { - InviteList = append(InviteList, &msg.CatnipInvite{ - Uid: int64(iv.InviteId), - Time: int64(iv.Time), - }) - } - GameInfo.InviteList = InviteList - BeInvitedList := make([]*msg.CatnipInvite, 0) - for _, iv := range v.BeInvitedList { - BeInvitedList = append(BeInvitedList, &msg.CatnipInvite{ - Uid: int64(iv.InviteId), - Time: int64(iv.Time), - }) - } - GameInfo.BeInviteList = BeInvitedList + GameList = append(GameList, GameInfo) } + tmpData := make(map[int]*msg.CatnipInvite) + InviteList := make([]*msg.CatnipInvite, 0) + for Uid, Info := range CatnipMod.InviteList { + tmpData[Uid] = &msg.CatnipInvite{ + Uid: int64(Uid), + Time: Info.Time, + Type: 1, + } + } + for Uid, Info := range CatnipMod.BeInvitedList { + tmpData[Uid] = &msg.CatnipInvite{ + Uid: int64(Uid), + Time: Info.Time, + Type: 2, + } + } + + for Uid := range FriendMod.NewFriendList { + key := fmt.Sprintf("catnip_partner_%d", Uid) + Var := G_GameLogicPtr.VarMgr.GetExpireVar(key) + if len(Var.D.([]int)) >= 4 { + tmpData[Uid] = &msg.CatnipInvite{ + Uid: int64(Uid), + Type: 3, + } + continue + } + if _, ok := tmpData[Uid]; !ok { + tmpData[Uid] = &msg.CatnipInvite{ + Uid: int64(Uid), + Type: 0, + } + } + } + for _, v := range tmpData { + InviteList = append(InviteList, v) + } + Template := catnipCfg.GetTemplateId(CatnipMod.Id) res := &msg.ResCatnip{ - Id: int32(CatnipMod.Id), - EndTime: int32(ActivityInfo.EndT), - Status: int32(Status), - Template: int32(Template), - GameList: GameList, - Multiply: int32(CatnipMod.Mul), + Id: int32(CatnipMod.Id), + EndTime: int32(ActivityInfo.EndT), + Status: int32(Status), + Template: int32(Template), + GameList: GameList, + Multiply: int32(CatnipMod.Mul), + FriendList: InviteList, } p.PushClientRes(res) } diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index 2e8cd6d7..b4b90495 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -286,6 +286,11 @@ func ReqGmCommand_(player *Player, Command string) error { ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_MINING) MiningMod.ZeroUpdate(ActivityInfo.Id) MiningBackData(player) + case "catnipReload": + CatnipMod := player.PlayMod.getCatnipMod() + CatnipMod.ZeroUpdate(-1) + ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_CATNIP) + CatnipMod.ZeroUpdate(ActivityInfo.Id) case "guessColorReload": GuessColorMod := player.PlayMod.getGuessColorMod() GuessColorMod.ZeroUpdate(-1) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 6146cf17..00257ab1 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -331,7 +331,7 @@ func handle(p *Player, m *msg.Msg) error { if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil } - CatnipMod.BeInvited(CatnipMsg.GameId, int(m.From), m.SendT) + CatnipMod.BeInvited(int(m.From), m.SendT) FriendMod := p.PlayMod.getFriendMod() FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", CatnipMsg.GameId), m.End) case msg.HANDLE_TYPE_CATNIP_AGREE: // 同意好友参与猫咪游戏 @@ -341,19 +341,7 @@ func handle(p *Player, m *msg.Msg) error { if ActivityId != CatnipMsgInfo.ActivityId { // 活动ID不匹配 return nil } - UserList, _ := CatnipMod.Agree(CatnipMsgInfo.GameId, int(m.From)) - for _, v := range UserList { - FriendMgrSend(&msg.Msg{ - From: int(p.M_DwUin), - To: int(v), - Type: msg.HANDLE_TYPE_CATNIP_AGREE, - Extra: CatnipMsg{ - ActivityId: ActivityId, - GameId: int(CatnipMsgInfo.GameId), - }, - SendT: GoUtil.Now(), - }) - } + CatnipMod.BeAgree(CatnipMsgInfo.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_AGREE_DEL: // 同意好友参与猫咪游戏后删除邀请 CatnipMod := p.PlayMod.getCatnipMod() CatnipMsg := m.Extra.(CatnipMsg) @@ -473,7 +461,7 @@ func SyncFriendMsg(p *Player) { return } sort.Slice(ml, func(i, j int) bool { - return ml[i].SendT < ml[j].SendT + return ml[i].Id < ml[j].Id }) maxId := int64(0) for _, v := range ml { diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 9908c87b..777c601c 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -3553,7 +3553,11 @@ func ReqGuessColorTake(player *Player, buf []byte) error { }) return err } - GuessColorMod.Take(req.Map.Map, req.OMap) + var M map[int32]int32 + if req.Map != nil { + M = req.Map.Map + } + GuessColorMod.Take(M, req.OMap) player.TeLog("ReqGuessColorTake", map[string]interface{}{ "map": req.Map.Map, "o_map": req.OMap, @@ -5343,10 +5347,10 @@ func ReqCatnipInvite(player *Player, buf []byte) error { if err != nil { return err } - ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) + ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) ActivityInfo := GetActivityInfo(player, ActivityId) CatnipMod := player.PlayMod.getCatnipMod() - err = CatnipMod.Invite(int(req.Id), int(req.Uid)) + err = CatnipMod.Invite(int(req.Uid), int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_FAIL, @@ -5354,7 +5358,7 @@ func ReqCatnipInvite(player *Player, buf []byte) error { }) return err } - player.TeLog("catnip_invite", map[string]interface{}{ + player.TeLog("cats_garden_invite", map[string]interface{}{ "Id": int(req.Id), }) FriendMgrSend(&MsqMod.Msg{ @@ -5368,7 +5372,7 @@ func ReqCatnipInvite(player *Player, buf []byte) error { }, SendT: GoUtil.Now(), }) - + player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_SUCCESS, @@ -5383,8 +5387,8 @@ func ReqCatnipAgree(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) - UserList, err := CatnipMod.Agree(int(req.Id), int(req.Uid)) + ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + _, err = CatnipMod.Agree(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_FAIL, @@ -5400,7 +5404,7 @@ func ReqCatnipAgree(player *Player, buf []byte) error { }) return err } - player.TeLog("catnip_agree", map[string]interface{}{ + player.TeLog("cats_garden_accept_invite", map[string]interface{}{ "Id": int(req.Id), }) FriendMgrSend(&MsqMod.Msg{ @@ -5413,19 +5417,6 @@ func ReqCatnipAgree(player *Player, buf []byte) error { }, SendT: GoUtil.Now(), }) - - for _, v := range UserList { - FriendMgrSend(&MsqMod.Msg{ - From: int(player.M_DwUin), - To: int(v), - Type: MsqMod.HANDLE_TYPE_CATNIP_AGREE, - Extra: CatnipMsg{ - ActivityId: ActivityId, - GameId: int(req.Id), - }, - SendT: GoUtil.Now(), - }) - } player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipAgree{ @@ -5491,11 +5482,12 @@ func ReqCatnipPlay(player *Player, buf []byte) error { Msg: err.Error(), }) } - player.TeLog("catnip_play", map[string]interface{}{ - "Id": int(req.Id), - "Growth": Growth, - "PartnerId": PartnerId, - "Items": Items, + player.TeLog("cats_garden_expend_token", map[string]interface{}{ + "Id": int(req.Id), + "Growth": Growth, + "multiple": CatnipMod.GetMultiple(), + "expend_num": ItemCost[0].Num, + "get_award": Items, }) if Growth > 0 { player.CatnipGrowthMsg(PartnerId, int(req.Id), Growth) @@ -5517,7 +5509,7 @@ func ReqCatnipReward(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - Items, err := CatnipMod.Reward(int(req.Id), int(req.Progress)) + Items, GameInfo, err := CatnipMod.Reward(int(req.Id), int(req.Progress)) if err != nil { player.SendErrClienRes(&msg.ResCatnipReward{ Code: msg.RES_CODE_FAIL, @@ -5533,10 +5525,12 @@ func ReqCatnipReward(player *Player, buf []byte) error { }) return err } - player.TeLog("catnip_reward", map[string]interface{}{ - "Id": int(req.Id), - "Progress": int(req.Progress), - "Items": Items, + player.TeLog("cats_garden_stage_ewards", map[string]interface{}{ + "Id": int(req.Id), + "Progress": int(req.Progress), + "friends_ID": GameInfo.Partner, + "friends_get_num": GameInfo.PartnerAdd, + "user_get_num": GameInfo.Progress - GameInfo.PartnerAdd, }) player.CatnipBackData() player.PlayMod.save() @@ -5573,6 +5567,7 @@ func ReqCatnipGrandReward(player *Player, buf []byte) error { player.TeLog("catnip_grand_reward", map[string]interface{}{ "Items": Items, }) + player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipGrandReward{ Code: msg.RES_CODE_SUCCESS, @@ -5604,10 +5599,11 @@ func ReqCatnipRefuse(player *Player, buf []byte) error { Type: MsqMod.HANDLE_TYPE_CATNIP_REFUSE, SendT: GoUtil.Now(), Extra: CatnipMsg{ - ActivityId: GetActivityId(player, activity.ACT_TYPE_MINING), + ActivityId: GetActivityId(player, activity.ACT_TYPE_CATNIP), GameId: int(req.Id), }, }) + player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipRefuse{ Code: msg.RES_CODE_SUCCESS, diff --git a/src/server/game/VarMgr.go b/src/server/game/VarMgr.go index 14897ea4..70c343f4 100644 --- a/src/server/game/VarMgr.go +++ b/src/server/game/VarMgr.go @@ -48,6 +48,9 @@ func (f *VarMgr) Init() { if f.data.(*VarData).UserVar == nil { f.data.(*VarData).UserVar = make(map[string]*VarUserData) } + if f.data.(*VarData).VarExpire == nil { + f.data.(*VarData).VarExpire = make(map[string]*VarExpireData) + } if f.getData().ZeroTime == GoUtil.ZeroTimestamp() { f.ZeroUpdate(&msg.Msg{}) } @@ -86,18 +89,21 @@ func (f *VarMgr) SetCatnipPartner(m *msg.Msg) (interface{}, error) { MyUid := GoUtil.Int(Param["uid"]) CatnipGameId := GoUtil.Int(Param["game_id"]) CatnipPartnerId := GoUtil.Int(Param["partner_uid"]) - myKey := fmt.Sprintf("catnip_partner_%d_%d", MyUid, CatnipGameId) - key := fmt.Sprintf("catnip_partner_%d_%d", CatnipPartnerId, CatnipGameId) - PartnerInfo := f.GetExpireVar(key) - if PartnerInfo.D != nil { - return nil, fmt.Errorf("catnip partner already set for uid %d in game %d", CatnipPartnerId, CatnipGameId) + myKey := fmt.Sprintf("catnip_partner_%d", MyUid) + key := fmt.Sprintf("catnip_partner_%d", CatnipPartnerId) + OtherPartnerInfo := f.GetExpireVar(key) + MyPartnerInfo := f.GetExpireVar(myKey) + MyOfPartnerList := GoUtil.IntSlice(MyPartnerInfo.D) + OtherOfPartnerList := GoUtil.IntSlice(OtherPartnerInfo.D) + if len(MyOfPartnerList) > 4 || len(OtherOfPartnerList) > 4 { + return nil, fmt.Errorf("catnip partner already full for uid %d in game %d", CatnipPartnerId, CatnipGameId) } f.SetExpireVar(key, &VarExpireData{ - D: MyUid, + D: append(OtherOfPartnerList, MyUid), T: m.End, }) f.SetExpireVar(myKey, &VarExpireData{ - D: CatnipPartnerId, + D: append(MyOfPartnerList, CatnipPartnerId), T: m.End, }) return nil, nil diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index 9eef0a8b..43e86e96 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -10,8 +10,10 @@ import ( type CatnipMod struct { Id int Game map[int]*CatnipGame - Mul int // 倍数 - IsGetGrandReward bool // 是否领取过大丰收奖励 + Mul int // 倍数 + IsGetGrandReward bool // 是否领取过大丰收奖励 + InviteList map[int]*InviteInfo // 邀请列表,key: 邀请者ID, value: 被邀请者ID + BeInvitedList map[int]*InviteInfo // 被邀请列表,key: 被邀请者ID, value: 邀请者ID } type InviteInfo struct { @@ -20,15 +22,14 @@ type InviteInfo struct { } type CatnipGame struct { - Id int // 游戏ID - Partner int // 伙伴ID - Progress int // 进度 - PartnerAdd int // 伙伴贡献 - Reward []int // 已领取阶段奖励 - Status int // 0: Not Started, 1: In Progress, 2: Completed - InviteList map[int]*InviteInfo // 邀请列表,key: 邀请者ID, value: 被邀请者ID - BeInvitedList map[int]*InviteInfo // 被邀请列表,key: 被邀请者ID, value: 邀请者ID - EmojiId int // 表情ID + Id int // 游戏ID + Partner int // 伙伴ID + Progress int // 进度 + PartnerAdd int // 伙伴贡献 + Reward []int // 已领取阶段奖励 + Status int // 0: Not Started, 1: In Progress, 2: Completed + + EmojiId int // 表情ID } const ( @@ -43,6 +44,12 @@ func (c *CatnipMod) InitData() { if c.Game == nil { c.Game = make(map[int]*CatnipGame) } + if c.InviteList == nil { + c.InviteList = make(map[int]*InviteInfo) + } + if c.BeInvitedList == nil { + c.BeInvitedList = make(map[int]*InviteInfo) + } } func (c *CatnipMod) Login(Id int) int { @@ -59,14 +66,14 @@ func (c *CatnipMod) Login(Id int) int { c.Game = make(map[int]*CatnipGame) c.Mul = 1 // Default multiplier GameNum := catnipCfg.GetGameNum(c.Id) // Assuming 1 is the default game ID + c.InviteList = make(map[int]*InviteInfo) + c.BeInvitedList = make(map[int]*InviteInfo) for i := 1; i <= GameNum; i++ { c.Game[i] = &CatnipGame{ - Id: i, - Partner: 0, // No partner initially - Progress: 0, // Initial progress - Status: GAME_STATUS_IDLE, // Not started - InviteList: make(map[int]*InviteInfo), // Initialize invite list - BeInvitedList: make(map[int]*InviteInfo), // Initialize be invited list + Id: i, + Partner: 0, // No partner initially + Progress: 0, // Initial progress + Status: GAME_STATUS_IDLE, // Not started } } return c.Id @@ -76,75 +83,75 @@ func (c *CatnipMod) ZeroUpdate(Id int) { c.Login(Id) } -func (c *CatnipMod) Invite(Id, Uid int) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != 0 { - return fmt.Errorf("game with ID %d is already in progress or completed", Id) +func (c *CatnipMod) Invite(Uid, Id int) error { + if c.InviteList[Uid] != nil { + return fmt.Errorf("user with ID %d is already invited", Uid) } - if GameInfo.InviteList[Uid] != nil { - return fmt.Errorf("user with ID %d is already invited to game ID %d", Uid, Id) - } - - GameInfo.InviteList[Uid] = &InviteInfo{ - InviteId: Uid, + c.InviteList[Uid] = &InviteInfo{ + InviteId: Id, Time: GoUtil.Now(), } return nil } -func (c *CatnipMod) BeInvited(Id, Uid int, Time int64) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != GAME_STATUS_IDLE { - return fmt.Errorf("game with ID %d is already in progress or completed", Id) - } +func (c *CatnipMod) BeInvited(Uid int, Time int64) error { // Check if the user is already invited - invite := GameInfo.BeInvitedList[Uid] - if invite != nil && invite.InviteId == Id { - return fmt.Errorf("user with ID %d has already been invited to game ID %d", Uid, Id) + invite := c.BeInvitedList[Uid] + if invite != nil { + return fmt.Errorf("user with ID %d has already been invited ", Uid) } - GameInfo.BeInvitedList[Uid] = &InviteInfo{ - InviteId: Id, + c.BeInvitedList[Uid] = &InviteInfo{ + InviteId: Uid, Time: Time, } return nil } func (c *CatnipMod) Agree(Id, Uid int) ([]int, error) { - GameInfo, ok := c.Game[Id] - if !ok { - return nil, fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != GAME_STATUS_IDLE { - return nil, fmt.Errorf("game with ID %d is already in progress or completed", Id) - } - // Check if the user is in the invite list - _, exists := GameInfo.InviteList[Uid] + _, exists := c.BeInvitedList[Uid] if !exists { return nil, fmt.Errorf("user with ID %d is not invited to game ID %d", Uid, Id) } // Remove the invite after agreeing - delete(GameInfo.InviteList, Uid) - GameInfo.Partner = Uid // Set the partner for the game - GameInfo.Status = GAME_STATUS_COMPLETED // Set the game status to completed + + delete(c.BeInvitedList, Uid) + for _, GameInfo := range c.Game { + if GameInfo.Partner == 0 { + GameInfo.Partner = Uid + GameInfo.Status = GAME_STATUS_IN_PROGRESS + return []int{}, nil + } + } + return []int{}, nil +} + +func (c *CatnipMod) BeAgree(Id, Uid int) ([]int, error) { + info, exists := c.InviteList[Uid] + if !exists { + return nil, fmt.Errorf("user with ID %d is not invited to game ID %d", Uid, Id) + } + // Remove the invite after agreeing + GameInfo := c.Game[info.InviteId] + if GameInfo.Partner == 0 { + GameInfo.Partner = Uid + GameInfo.Status = GAME_STATUS_IN_PROGRESS + delete(c.InviteList, Uid) + return []int{}, nil + } + delete(c.InviteList, Uid) + for _, GameInfo := range c.Game { + if GameInfo.Partner == 0 { + GameInfo.Partner = Uid + GameInfo.Status = GAME_STATUS_IN_PROGRESS + return []int{}, nil + } + } return []int{}, nil } func (c *CatnipMod) DelInvited(Id, Uid int) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != GAME_STATUS_IDLE { - return fmt.Errorf("game with ID %d is already in progress or completed", Id) - } - delete(GameInfo.InviteList, Uid) + delete(c.InviteList, Uid) return nil } @@ -154,14 +161,7 @@ func (c *CatnipMod) Multiply(Mul int) error { } func (c *CatnipMod) Refuse(Id, Uid int) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != GAME_STATUS_IDLE { - return fmt.Errorf("game with ID %d is already in progress or completed", Id) - } - delete(GameInfo.BeInvitedList, Uid) + delete(c.BeInvitedList, Uid) return nil } @@ -179,19 +179,19 @@ func (c *CatnipMod) Play(Id int) (int, int, int, []*item.Item, []*item.Item, err return Id, Growth, GameInfo.Partner, Items, ItemCost, nil } -func (c *CatnipMod) Reward(Id, Progress int) ([]*item.Item, error) { +func (c *CatnipMod) Reward(Id, Progress int) ([]*item.Item, *CatnipGame, error) { GameInfo, ok := c.Game[Id] if !ok { - return nil, fmt.Errorf("game with Progress %d does not exist", Id) + return nil, nil, fmt.Errorf("game with Progress %d does not exist", Id) } if GameInfo.Progress < Progress { - return nil, fmt.Errorf("game with ID %d has not reached the required progress %d", Id, Progress) + return nil, nil, fmt.Errorf("game with ID %d has not reached the required progress %d", Id, Progress) } if GoUtil.InArray(Progress, GameInfo.Reward) { - return nil, fmt.Errorf("reward for progress %d has already been claimed in game ID %d", Progress, Id) + return nil, nil, fmt.Errorf("reward for progress %d has already been claimed in game ID %d", Progress, Id) } GameInfo.Reward = append(GameInfo.Reward, Progress) - return catnipCfg.GetProgressReward(c.Id, Progress), nil + return catnipCfg.GetProgressReward(c.Id, Progress), GameInfo, nil } func (c *CatnipMod) GrandReward() ([]*item.Item, error) { @@ -229,3 +229,7 @@ func (c *CatnipMod) SetEmoji(Id, EmojiId int) { // Here we can set the emoji for the game. This is a placeholder implementation. GameInfo.EmojiId = EmojiId } + +func (c *CatnipMod) GetMultiple() int { + return c.Mul +} diff --git a/src/server/game/mod/guessColor/guessColor.go b/src/server/game/mod/guessColor/guessColor.go index 532989bd..4c13e32d 100644 --- a/src/server/game/mod/guessColor/guessColor.go +++ b/src/server/game/mod/guessColor/guessColor.go @@ -89,9 +89,11 @@ func (g *GuessColorMod) FirstIn() []*item.Item { } func (g *GuessColorMod) Take(Map map[int32]int32, OMap map[int32]int32) { - g.MapList = append(g.MapList, Map) + if len(Map) > 0 { + g.MapList = append(g.MapList, Map) + g.Guess++ + } g.OMap = OMap - g.Guess++ } func (g *GuessColorMod) GetLoseItem() []*item.Item { diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 149ed7d2..52e07c70 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -25867,12 +25867,13 @@ func (*ReqCatnip) Descriptor() ([]byte, []int) { type ResCatnip struct { state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 活动id - Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 - EndTime int32 `protobuf:"varint,3,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // 结束时间 - Template int32 `protobuf:"varint,4,opt,name=Template,proto3" json:"Template,omitempty"` // 模板 - GameList []*CatnipGame `protobuf:"bytes,5,rep,name=GameList,proto3" json:"GameList,omitempty"` // 小游戏列表 - Multiply int32 `protobuf:"varint,6,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 活动id + Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 + EndTime int32 `protobuf:"varint,3,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // 结束时间 + Template int32 `protobuf:"varint,4,opt,name=Template,proto3" json:"Template,omitempty"` // 模板 + GameList []*CatnipGame `protobuf:"bytes,5,rep,name=GameList,proto3" json:"GameList,omitempty"` // 小游戏列表 + Multiply int32 `protobuf:"varint,6,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 + FriendList []*CatnipInvite `protobuf:"bytes,7,rep,name=FriendList,proto3" json:"FriendList,omitempty"` // 好友列表 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -25949,17 +25950,22 @@ func (x *ResCatnip) GetMultiply() int32 { return 0 } +func (x *ResCatnip) GetFriendList() []*CatnipInvite { + if x != nil { + return x.FriendList + } + return nil +} + // 小游戏信息 type CatnipGame struct { state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id - Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 - Progress int32 `protobuf:"varint,3,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 - Reward []int32 `protobuf:"varint,4,rep,packed,name=Reward,proto3" json:"Reward,omitempty"` // 已领取进度奖励列表 [100,150,200] - Partner *ResPlayerSimple `protobuf:"bytes,5,opt,name=Partner,proto3" json:"Partner,omitempty"` // 伙伴 - InviteList []*CatnipInvite `protobuf:"bytes,6,rep,name=InviteList,proto3" json:"InviteList,omitempty"` // 邀请列表 - BeInviteList []*CatnipInvite `protobuf:"bytes,7,rep,name=BeInviteList,proto3" json:"BeInviteList,omitempty"` // 被邀请列表 - Emoji int32 `protobuf:"varint,8,opt,name=Emoji,proto3" json:"Emoji,omitempty"` // 表情id + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id + Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 + Progress int32 `protobuf:"varint,3,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 + Reward []int32 `protobuf:"varint,4,rep,packed,name=Reward,proto3" json:"Reward,omitempty"` // 已领取进度奖励列表 [100,150,200] + Partner *ResPlayerSimple `protobuf:"bytes,5,opt,name=Partner,proto3" json:"Partner,omitempty"` // 伙伴 + Emoji int32 `protobuf:"varint,6,opt,name=Emoji,proto3" json:"Emoji,omitempty"` // 表情id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26029,20 +26035,6 @@ func (x *CatnipGame) GetPartner() *ResPlayerSimple { return nil } -func (x *CatnipGame) GetInviteList() []*CatnipInvite { - if x != nil { - return x.InviteList - } - return nil -} - -func (x *CatnipGame) GetBeInviteList() []*CatnipInvite { - if x != nil { - return x.BeInviteList - } - return nil -} - func (x *CatnipGame) GetEmoji() int32 { if x != nil { return x.Emoji @@ -26054,6 +26046,7 @@ type CatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id Time int64 `protobuf:"varint,2,opt,name=Time,proto3" json:"Time,omitempty"` // 邀请时间 + Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 状态 0 可以邀请,1 已邀请 2 同意 3 已满员 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26102,6 +26095,13 @@ func (x *CatnipInvite) GetTime() int64 { return 0 } +func (x *CatnipInvite) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + // 邀请好友 type ReqCatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -29255,29 +29255,29 @@ const file_proto_Gameapi_proto_rawDesc = "" + "ResCollect\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\v\n" + - "\tReqCatnip\"\xb7\x01\n" + + "\tReqCatnip\"\xef\x01\n" + "\tResCatnip\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x16\n" + "\x06Status\x18\x02 \x01(\x05R\x06Status\x12\x18\n" + "\aEndTime\x18\x03 \x01(\x05R\aEndTime\x12\x1a\n" + "\bTemplate\x18\x04 \x01(\x05R\bTemplate\x120\n" + "\bGameList\x18\x05 \x03(\v2\x14.tutorial.CatnipGameR\bGameList\x12\x1a\n" + - "\bMultiply\x18\x06 \x01(\x05R\bMultiply\"\xa7\x02\n" + + "\bMultiply\x18\x06 \x01(\x05R\bMultiply\x126\n" + + "\n" + + "FriendList\x18\a \x03(\v2\x16.tutorial.CatnipInviteR\n" + + "FriendList\"\xb3\x01\n" + "\n" + "CatnipGame\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x16\n" + "\x06Status\x18\x02 \x01(\x05R\x06Status\x12\x1a\n" + "\bProgress\x18\x03 \x01(\x05R\bProgress\x12\x16\n" + "\x06Reward\x18\x04 \x03(\x05R\x06Reward\x123\n" + - "\aPartner\x18\x05 \x01(\v2\x19.tutorial.ResPlayerSimpleR\aPartner\x126\n" + - "\n" + - "InviteList\x18\x06 \x03(\v2\x16.tutorial.CatnipInviteR\n" + - "InviteList\x12:\n" + - "\fBeInviteList\x18\a \x03(\v2\x16.tutorial.CatnipInviteR\fBeInviteList\x12\x14\n" + - "\x05Emoji\x18\b \x01(\x05R\x05Emoji\"4\n" + + "\aPartner\x18\x05 \x01(\v2\x19.tutorial.ResPlayerSimpleR\aPartner\x12\x14\n" + + "\x05Emoji\x18\x06 \x01(\x05R\x05Emoji\"H\n" + "\fCatnipInvite\x12\x10\n" + "\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x12\n" + - "\x04Time\x18\x02 \x01(\x03R\x04Time\"3\n" + + "\x04Time\x18\x02 \x01(\x03R\x04Time\x12\x12\n" + + "\x04Type\x18\x03 \x01(\x05R\x04Type\"3\n" + "\x0fReqCatnipInvite\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"K\n" + @@ -30422,38 +30422,37 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 168, // 272: tutorial.CollectItem.Items:type_name -> tutorial.ItemInfo 2, // 273: tutorial.ResCollect.Code:type_name -> tutorial.RES_CODE 459, // 274: tutorial.ResCatnip.GameList:type_name -> tutorial.CatnipGame - 231, // 275: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple - 460, // 276: tutorial.CatnipGame.InviteList:type_name -> tutorial.CatnipInvite - 460, // 277: tutorial.CatnipGame.BeInviteList:type_name -> tutorial.CatnipInvite - 2, // 278: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE - 2, // 279: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE - 2, // 280: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE - 2, // 281: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE - 2, // 282: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE - 2, // 283: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE - 2, // 284: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE - 2, // 285: tutorial.ResCatnipEmoji.Code:type_name -> tutorial.RES_CODE - 171, // 286: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask - 177, // 287: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek - 178, // 288: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask - 214, // 289: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent - 231, // 290: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple - 283, // 291: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo - 301, // 292: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop - 302, // 293: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop - 293, // 294: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 313, // 295: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo - 233, // 296: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 233, // 297: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 390, // 298: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress - 293, // 299: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 168, // 300: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo - 168, // 301: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo - 302, // [302:302] is the sub-list for method output_type - 302, // [302:302] is the sub-list for method input_type - 302, // [302:302] is the sub-list for extension type_name - 302, // [302:302] is the sub-list for extension extendee - 0, // [0:302] is the sub-list for field type_name + 460, // 275: tutorial.ResCatnip.FriendList:type_name -> tutorial.CatnipInvite + 231, // 276: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple + 2, // 277: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE + 2, // 278: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE + 2, // 279: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE + 2, // 280: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE + 2, // 281: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE + 2, // 282: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE + 2, // 283: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE + 2, // 284: tutorial.ResCatnipEmoji.Code:type_name -> tutorial.RES_CODE + 171, // 285: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask + 177, // 286: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 178, // 287: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 214, // 288: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 231, // 289: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 283, // 290: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 301, // 291: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 302, // 292: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 293, // 293: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 313, // 294: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 233, // 295: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 233, // 296: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 390, // 297: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress + 293, // 298: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 168, // 299: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo + 168, // 300: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo + 301, // [301:301] is the sub-list for method output_type + 301, // [301:301] is the sub-list for method input_type + 301, // [301:301] is the sub-list for extension type_name + 301, // [301:301] is the sub-list for extension extendee + 0, // [0:301] is the sub-list for field type_name } func init() { file_proto_Gameapi_proto_init() } From bcd385210a56a657a96bf5d119c434619569f5a9 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 8 Dec 2025 10:13:37 +0800 Subject: [PATCH 25/49] =?UTF-8?q?=E7=8C=AB=E8=8D=89=E5=A4=A7=E4=BD=9C?= =?UTF-8?q?=E6=88=98=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerFunc.go | 3 ++- src/server/game/mod/catnip/Catnip.go | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 00257ab1..9d8ff545 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -365,7 +365,8 @@ func handle(p *Player, m *msg.Msg) error { if ActivityId != CatnipGrowthInfo.ActivityId { // 活动ID不匹配 return nil } - CatnipMod.Growth(CatnipGrowthInfo.GameId, CatnipGrowthInfo.Growth) + CatnipMod.GrowthByUid(m.From, CatnipGrowthInfo.Growth) + p.CatnipBackData() case msg.HANDLE_TYPE_FRIEND_GREETING_REPLY: FriendMod := p.PlayMod.getFriendMod() if v, ok := m.Extra.(friend.ReplyInfo); ok { diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index 43e86e96..36247e6f 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -221,6 +221,18 @@ func (c *CatnipMod) Growth(Id, Growth int) { } } +func (c *CatnipMod) GrowthByUid(Uid, Growth int) { + for _, v := range c.Game { + if v.Partner == Uid { + v.Progress += Growth + if v.Progress >= catnipCfg.GetGameNum(v.Id) { // Assuming the game ends when progress reaches a certain threshold + v.Status = GAME_STATUS_COMPLETED + } + } + } + +} + func (c *CatnipMod) SetEmoji(Id, EmojiId int) { GameInfo, ok := c.Game[Id] if !ok { From 61f065747e67ed237c5d86c33c07502a60792d12 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 8 Dec 2025 10:32:38 +0800 Subject: [PATCH 26/49] =?UTF-8?q?=E7=8C=AB=E8=8D=89=E5=A4=A7=E4=BD=9C?= =?UTF-8?q?=E6=88=98=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/GoUtil/sliceUtil.go | 8 +++++++- src/server/game/ActivityFunc.go | 2 +- src/server/game/UnitTest.go | 5 +++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/server/GoUtil/sliceUtil.go b/src/server/GoUtil/sliceUtil.go index 72cd199f..be29b52d 100644 --- a/src/server/GoUtil/sliceUtil.go +++ b/src/server/GoUtil/sliceUtil.go @@ -13,7 +13,13 @@ func IntSlice(d interface{}) []int { if d == nil { return []int{} } - return d.([]int) + + // Type assertion with safety check + result, ok := d.([]int) + if !ok { + return []int{} + } + return result } func IntToInt32(d []int) []int32 { r := make([]int32, 0, len(d)) diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index 847ceb04..2178d805 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -354,7 +354,7 @@ func (p *Player) CatnipBackData() { for Uid := range FriendMod.NewFriendList { key := fmt.Sprintf("catnip_partner_%d", Uid) Var := G_GameLogicPtr.VarMgr.GetExpireVar(key) - if len(Var.D.([]int)) >= 4 { + if len(GoUtil.IntSlice(Var.D)) >= 4 { tmpData[Uid] = &msg.CatnipInvite{ Uid: int64(Uid), Type: 3, diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index a7ada801..2cf07307 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -371,3 +371,8 @@ func UnitOrderPetReward(p *Player) error { } return nil } + +func UnitCatnip(p *Player) error { + p.CatnipBackData() + return nil +} From 58c36d91800e2174014c51ba17dcac7024a6a967 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 8 Dec 2025 10:49:20 +0800 Subject: [PATCH 27/49] =?UTF-8?q?=E7=8C=AB=E8=8D=89=E5=A4=A7=E4=BD=9C?= =?UTF-8?q?=E6=88=98=E4=BC=98=E5=8C=96-=E6=8A=BD=E5=A5=96=E8=B5=A0?= =?UTF-8?q?=E9=80=81=E5=A5=BD=E5=8F=8B=E9=81=93=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/catnip/CatnipCfg.go | 10 +++++----- src/server/game/PlayerFunc.go | 10 ++++++++-- src/server/game/PlayerMsg.go | 9 +++++---- src/server/game/RegisterNetworkFunc.go | 10 +++++----- src/server/game/Type.go | 7 ++++--- src/server/game/mod/catnip/Catnip.go | 8 ++++---- src/server/game/mod/friend/Friend.go | 8 +++++--- 7 files changed, 36 insertions(+), 26 deletions(-) diff --git a/src/server/conf/catnip/CatnipCfg.go b/src/server/conf/catnip/CatnipCfg.go index 7d44a585..fe242583 100644 --- a/src/server/conf/catnip/CatnipCfg.go +++ b/src/server/conf/catnip/CatnipCfg.go @@ -34,10 +34,10 @@ func GetGameNum(Id int) int { return gamedata.GetIntValue(data, "PassNum") } -func GetJackpotItem(Mul int) (int, []*item.Item, int) { +func GetJackpotItem(Mul int) (int, []*item.Item, int, int) { data, err := gamedata.GetData(CATNIP_JACKPOT_CFG_NAME) if err != nil { - return 0, nil, 0 + return 0, nil, 0, 0 } JackpotType := GetJackpotType(Mul) r := make(map[int]int) @@ -48,13 +48,13 @@ func GetJackpotItem(Mul int) (int, []*item.Item, int) { } Id := GoUtil.RandMap(r) if Id == 0 { - return 0, nil, 0 + return 0, nil, 0, 0 } itemData, err := gamedata.GetDataByIntKey(CATNIP_JACKPOT_CFG_NAME, Id) if err != nil { - return 0, nil, 0 + return 0, nil, 0, 0 } - return Id, gamedata.GetItemList(itemData, "Items"), gamedata.GetIntValue(itemData, "Growth") + return Id, gamedata.GetItemList(itemData, "Items"), gamedata.GetIntValue(itemData, "Growth"), gamedata.GetIntValue(itemData, "FriendItems") } func GetJackpotType(Mul int) int { diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 9d8ff545..97a8137a 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -9,6 +9,7 @@ import ( mergeCluster "server/cluster" "server/conf" cardCfg "server/conf/card" + catnipCfg "server/conf/catnip" chargeCfg "server/conf/charge" decorateCfg "server/conf/decorate" itemCfg "server/conf/item" @@ -333,7 +334,7 @@ func handle(p *Player, m *msg.Msg) error { } CatnipMod.BeInvited(int(m.From), m.SendT) FriendMod := p.PlayMod.getFriendMod() - FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", CatnipMsg.GameId), m.End) + FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", CatnipMsg.GameId), m.End, nil) case msg.HANDLE_TYPE_CATNIP_AGREE: // 同意好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() CatnipMsgInfo := m.Extra.(CatnipMsg) @@ -366,11 +367,16 @@ func handle(p *Player, m *msg.Msg) error { return nil } CatnipMod.GrowthByUid(m.From, CatnipGrowthInfo.Growth) + if CatnipGrowthInfo.FriendItems > 0 { + Items := catnipCfg.GetItemCost(ActivityId, CatnipGrowthInfo.FriendItems) + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP_ITEMS, "", m.End, Items) + } p.CatnipBackData() case msg.HANDLE_TYPE_FRIEND_GREETING_REPLY: FriendMod := p.PlayMod.getFriendMod() if v, ok := m.Extra.(friend.ReplyInfo); ok { - FriendMod.AddReplyInfo(v.Uid, v.Type, v.Param, GoUtil.Now()+24*3600) + FriendMod.AddReplyInfo(v.Uid, v.Type, v.Param, GoUtil.Now()+24*3600, nil) FriendLogBackData(p) } case msg.HANDLE_TYPE_FRIEND_SPONSOER: diff --git a/src/server/game/PlayerMsg.go b/src/server/game/PlayerMsg.go index b0e7ddb7..3d56bf66 100644 --- a/src/server/game/PlayerMsg.go +++ b/src/server/game/PlayerMsg.go @@ -6,7 +6,7 @@ import ( "server/game/mod/msg" ) -func (p *Player) CatnipGrowthMsg(To, Id, Growth int) error { +func (p *Player) CatnipGrowthMsg(To, Id, Growth, FriendItems int) error { ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) FriendMgrSend(&msg.Msg{ From: int(p.M_DwUin), @@ -14,9 +14,10 @@ func (p *Player) CatnipGrowthMsg(To, Id, Growth int) error { Type: msg.HANDLE_TYPE_CATNIP_GROWTH, SendT: GoUtil.Now(), Extra: CatnipMsg{ - ActivityId: ActivityId, - GameId: Id, - Growth: Growth, + ActivityId: ActivityId, + GameId: Id, + Growth: Growth, + FriendItems: FriendItems, }, }) return nil diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 777c601c..74d9ea7d 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -1921,7 +1921,7 @@ func ReqAgreeFriend(player *Player, buf []byte) error { } FriendMgrSend(m) FriendMod.AddFriend(Uid) - FriendMod.AddReplyInfo(Uid, friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600) + FriendMod.AddReplyInfo(Uid, friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600, nil) player.PushClientRes(&msg.ResAgreeFriend{ Code: msg.RES_CODE_SUCCESS, Uid: req.Uid, @@ -4992,8 +4992,8 @@ func ReqAddNpc(player *Player, buf []byte) error { player.TeLog("add_npc", map[string]interface{}{ "NpcId": int(req.NpcId), }) - FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600) - FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING_Get, "", GoUtil.Now()+24*3600) + FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600, nil) + FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING_Get, "", GoUtil.Now()+24*3600, nil) player.AddLog(int(req.NpcId), friend.LOG_TYPE_FRIEND_BECOME_NPC, GoUtil.String(req.NpcId), GoUtil.Now()) player.PushClientRes(&msg.ResAddNpc{ Code: msg.RES_CODE_SUCCESS, @@ -5460,7 +5460,7 @@ func ReqCatnipPlay(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - Id, Growth, PartnerId, Items, ItemCost, err := CatnipMod.Play(int(req.Id)) + Id, Growth, PartnerId, Items, ItemCost, FriendItems, err := CatnipMod.Play(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_FAIL, @@ -5490,7 +5490,7 @@ func ReqCatnipPlay(player *Player, buf []byte) error { "get_award": Items, }) if Growth > 0 { - player.CatnipGrowthMsg(PartnerId, int(req.Id), Growth) + player.CatnipGrowthMsg(PartnerId, int(req.Id), Growth, FriendItems*CatnipMod.Mul) } player.CatnipBackData() player.PlayMod.save() diff --git a/src/server/game/Type.go b/src/server/game/Type.go index 9ff8994d..4bece5e7 100644 --- a/src/server/game/Type.go +++ b/src/server/game/Type.go @@ -86,9 +86,10 @@ type GameResult struct { } type CatnipMsg struct { - ActivityId int - GameId int - Growth int // 增长值 + ActivityId int + GameId int + Growth int // 增长值 + FriendItems int // 赠送好友的道具数量 } type CatnipLock struct { diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index 36247e6f..cd619640 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -165,18 +165,18 @@ func (c *CatnipMod) Refuse(Id, Uid int) error { return nil } -func (c *CatnipMod) Play(Id int) (int, int, int, []*item.Item, []*item.Item, error) { +func (c *CatnipMod) Play(Id int) (int, int, int, []*item.Item, []*item.Item, int, error) { GameInfo, ok := c.Game[Id] if !ok { - return 0, 0, 0, nil, nil, fmt.Errorf("game with ID %d does not exist", Id) + return 0, 0, 0, nil, nil, 0, fmt.Errorf("game with ID %d does not exist", Id) } - Id, Items, Growth := catnipCfg.GetJackpotItem(c.Mul) + Id, Items, Growth, FriendItems := catnipCfg.GetJackpotItem(c.Mul) if Growth > 0 { c.Growth(Id, Growth) } ItemCost := catnipCfg.GetItemCost(c.Id, c.Mul) GameInfo.Progress += Growth - return Id, Growth, GameInfo.Partner, Items, ItemCost, nil + return Id, Growth, GameInfo.Partner, Items, ItemCost, FriendItems, nil } func (c *CatnipMod) Reward(Id, Progress int) ([]*item.Item, *CatnipGame, error) { diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index 88297eda..3623036d 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -35,6 +35,7 @@ type ReplyInfo struct { AddTime int64 ReplyTime int64 EndTime int64 + Items []*item.Item } type ActLogInfo struct { @@ -69,7 +70,8 @@ type ApplyInfo struct { const ( REPLY_TYPE_GREETING = 1 // 问候 REPLY_TYPE_GREETING_Get = 2 // 收到问候 - REPLY_TYPE_CATNIP = 3 // 猫薄荷 + REPLY_TYPE_CATNIP = 3 // 猫薄荷加好友 + REPLY_TYPE_CATNIP_ITEMS = 4 // 收到猫薄荷好友道具 ) // 24小时内与玩家进行过以下互动的用户,若被选中参加本次宠物宝藏,在其头像旁添加礼物盒 @@ -500,9 +502,8 @@ func (f *FriendMod) GetActLogLast() *ActLogInfo { return f.ActivityLog[len(f.ActivityLog)-1] } -func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string, EndTime int64) { +func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string, EndTime int64, Items []*item.Item) { f.AutoId++ - f.ReplyList = append(f.ReplyList, &ReplyInfo{ Id: f.AutoId, Uid: Uid, @@ -511,6 +512,7 @@ func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string, EndTime int64) Status: 0, AddTime: GoUtil.Now(), EndTime: EndTime, + Items: Items, }) } From a2326986640f7562f36f5caffb6af955818ed660 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 8 Dec 2025 12:28:02 +0800 Subject: [PATCH 28/49] =?UTF-8?q?=E7=8C=AB=E8=8D=89=E5=A4=A7=E4=BD=9C?= =?UTF-8?q?=E6=88=98-=E4=BF=AE=E6=94=B9=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/ActivityFunc.go | 11 +- src/server/msg/Gameapi.pb.go | 1677 ++++++++++++++++--------------- 2 files changed, 885 insertions(+), 803 deletions(-) diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index 2178d805..5c8b5267 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -319,11 +319,12 @@ func (p *Player) CatnipBackData() { GameList := make([]*msg.CatnipGame, 0) for _, v := range CatnipMod.Game { GameInfo := &msg.CatnipGame{ - Id: int32(v.Id), - Progress: int32(v.Progress), - Status: int32(v.Status), - Reward: GoUtil.SliceIntToInt32(v.Reward), - Emoji: int32(v.EmojiId), + Id: int32(v.Id), + Progress: int32(v.Progress), + Status: int32(v.Status), + Reward: GoUtil.SliceIntToInt32(v.Reward), + Emoji: int32(v.EmojiId), + FriendProgress: int32(v.PartnerAdd), } if v.Partner != 0 { PlayerData := G_getGameLogic().GetResSimplePlayerByUid(v.Partner) diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 52e07c70..f93e02be 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -1080,6 +1080,61 @@ func (ActLogType) EnumDescriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{11} } +type FRIEND_REPLY_TYPE int32 + +const ( + FRIEND_REPLY_TYPE_FRIEND_REPLY_TYPE_NONE FRIEND_REPLY_TYPE = 0 // 默认 + FRIEND_REPLY_TYPE_FRIEND_REPLY_TYPE_GREET FRIEND_REPLY_TYPE = 1 // 打招呼 + FRIEND_REPLY_TYPE_FRIEND_REPLY_TYPE_RETURN_GREET FRIEND_REPLY_TYPE = 2 // 被打招呼 + FRIEND_REPLY_TYPE_REPLY_TYPE_CATNIP FRIEND_REPLY_TYPE = 3 // 猫薄荷加好友 + FRIEND_REPLY_TYPE_REPLY_TYPE_CATNIP_ITEMS FRIEND_REPLY_TYPE = 4 // 收到猫薄荷好友道具 +) + +// Enum value maps for FRIEND_REPLY_TYPE. +var ( + FRIEND_REPLY_TYPE_name = map[int32]string{ + 0: "FRIEND_REPLY_TYPE_NONE", + 1: "FRIEND_REPLY_TYPE_GREET", + 2: "FRIEND_REPLY_TYPE_RETURN_GREET", + 3: "REPLY_TYPE_CATNIP", + 4: "REPLY_TYPE_CATNIP_ITEMS", + } + FRIEND_REPLY_TYPE_value = map[string]int32{ + "FRIEND_REPLY_TYPE_NONE": 0, + "FRIEND_REPLY_TYPE_GREET": 1, + "FRIEND_REPLY_TYPE_RETURN_GREET": 2, + "REPLY_TYPE_CATNIP": 3, + "REPLY_TYPE_CATNIP_ITEMS": 4, + } +) + +func (x FRIEND_REPLY_TYPE) Enum() *FRIEND_REPLY_TYPE { + p := new(FRIEND_REPLY_TYPE) + *p = x + return p +} + +func (x FRIEND_REPLY_TYPE) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FRIEND_REPLY_TYPE) Descriptor() protoreflect.EnumDescriptor { + return file_proto_Gameapi_proto_enumTypes[12].Descriptor() +} + +func (FRIEND_REPLY_TYPE) Type() protoreflect.EnumType { + return &file_proto_Gameapi_proto_enumTypes[12] +} + +func (x FRIEND_REPLY_TYPE) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FRIEND_REPLY_TYPE.Descriptor instead. +func (FRIEND_REPLY_TYPE) EnumDescriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{12} +} + type ClientReq struct { state protoimpl.MessageState `protogen:"open.v1"` Func string `protobuf:"bytes,1,opt,name=func,proto3" json:"func,omitempty"` // serverMode/functionID @@ -15101,6 +15156,7 @@ type ResFriendReply struct { AddTime int64 `protobuf:"varint,5,opt,name=AddTime,proto3" json:"AddTime,omitempty"` // 添加时间 EndTime int64 `protobuf:"varint,6,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // Player *ResPlayerSimple `protobuf:"bytes,7,opt,name=Player,proto3" json:"Player,omitempty"` // 玩家信息 + Items []*ItemInfo `protobuf:"bytes,8,rep,name=Items,proto3" json:"Items,omitempty"` // 奖励 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -15184,11 +15240,18 @@ func (x *ResFriendReply) GetPlayer() *ResPlayerSimple { return nil } +func (x *ResFriendReply) GetItems() []*ItemInfo { + if x != nil { + return x.Items + } + return nil +} + type ReqFriendReplyHandle struct { state protoimpl.MessageState `protogen:"open.v1"` LogId int32 `protobuf:"varint,1,opt,name=LogId,proto3" json:"LogId,omitempty"` // 时间线id Param string `protobuf:"bytes,2,opt,name=Param,proto3" json:"Param,omitempty"` // 回复内容 - Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 回复类型 1:打招呼 2:删除 3:查看 + Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 回复类型 1:处理 2:删除 3:查看 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -25959,15 +26022,16 @@ func (x *ResCatnip) GetFriendList() []*CatnipInvite { // 小游戏信息 type CatnipGame struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id - Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 - Progress int32 `protobuf:"varint,3,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 - Reward []int32 `protobuf:"varint,4,rep,packed,name=Reward,proto3" json:"Reward,omitempty"` // 已领取进度奖励列表 [100,150,200] - Partner *ResPlayerSimple `protobuf:"bytes,5,opt,name=Partner,proto3" json:"Partner,omitempty"` // 伙伴 - Emoji int32 `protobuf:"varint,6,opt,name=Emoji,proto3" json:"Emoji,omitempty"` // 表情id - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id + Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 + Progress int32 `protobuf:"varint,3,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 + Reward []int32 `protobuf:"varint,4,rep,packed,name=Reward,proto3" json:"Reward,omitempty"` // 已领取进度奖励列表 [100,150,200] + Partner *ResPlayerSimple `protobuf:"bytes,5,opt,name=Partner,proto3" json:"Partner,omitempty"` // 伙伴 + Emoji int32 `protobuf:"varint,6,opt,name=Emoji,proto3" json:"Emoji,omitempty"` // 表情id + FriendProgress int32 `protobuf:"varint,7,opt,name=FriendProgress,proto3" json:"FriendProgress,omitempty"` // 好友进度 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CatnipGame) Reset() { @@ -26042,11 +26106,18 @@ func (x *CatnipGame) GetEmoji() int32 { return 0 } +func (x *CatnipGame) GetFriendProgress() int32 { + if x != nil { + return x.FriendProgress + } + return 0 +} + type CatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id Time int64 `protobuf:"varint,2,opt,name=Time,proto3" json:"Time,omitempty"` // 邀请时间 - Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 状态 0 可以邀请,1 已邀请 2 同意 3 已满员 + Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 状态 0 可以邀请,1 已邀请 2 被邀请 3 已满员 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -28441,7 +28512,7 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x11ReqFriendTimeLine\"m\n" + "\x11ResFriendTimeLine\x12(\n" + "\x03Log\x18\x01 \x03(\v2\x16.tutorial.ResFriendLogR\x03Log\x12.\n" + - "\x05Reply\x18\x02 \x03(\v2\x18.tutorial.ResFriendReplyR\x05Reply\"\xc9\x01\n" + + "\x05Reply\x18\x02 \x03(\v2\x18.tutorial.ResFriendReplyR\x05Reply\"\xf3\x01\n" + "\x0eResFriendReply\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x12\n" + "\x04Type\x18\x02 \x01(\x05R\x04Type\x12\x14\n" + @@ -28449,7 +28520,8 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x06Status\x18\x04 \x01(\x05R\x06Status\x12\x18\n" + "\aAddTime\x18\x05 \x01(\x03R\aAddTime\x12\x18\n" + "\aEndTime\x18\x06 \x01(\x03R\aEndTime\x121\n" + - "\x06Player\x18\a \x01(\v2\x19.tutorial.ResPlayerSimpleR\x06Player\"V\n" + + "\x06Player\x18\a \x01(\v2\x19.tutorial.ResPlayerSimpleR\x06Player\x12(\n" + + "\x05Items\x18\b \x03(\v2\x12.tutorial.ItemInfoR\x05Items\"V\n" + "\x14ReqFriendReplyHandle\x12\x14\n" + "\x05LogId\x18\x01 \x01(\x05R\x05LogId\x12\x14\n" + "\x05Param\x18\x02 \x01(\tR\x05Param\x12\x12\n" + @@ -29265,7 +29337,7 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\bMultiply\x18\x06 \x01(\x05R\bMultiply\x126\n" + "\n" + "FriendList\x18\a \x03(\v2\x16.tutorial.CatnipInviteR\n" + - "FriendList\"\xb3\x01\n" + + "FriendList\"\xdb\x01\n" + "\n" + "CatnipGame\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x16\n" + @@ -29273,7 +29345,8 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\bProgress\x18\x03 \x01(\x05R\bProgress\x12\x16\n" + "\x06Reward\x18\x04 \x03(\x05R\x06Reward\x123\n" + "\aPartner\x18\x05 \x01(\v2\x19.tutorial.ResPlayerSimpleR\aPartner\x12\x14\n" + - "\x05Emoji\x18\x06 \x01(\x05R\x05Emoji\"H\n" + + "\x05Emoji\x18\x06 \x01(\x05R\x05Emoji\x12&\n" + + "\x0eFriendProgress\x18\a \x01(\x05R\x0eFriendProgress\"H\n" + "\fCatnipInvite\x12\x10\n" + "\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x12\n" + "\x04Time\x18\x02 \x01(\x03R\x04Time\x12\x12\n" + @@ -29572,7 +29645,13 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x19ACT_LOG_TYPE_VISIT_UPVOTE\x10\x14\x12.\n" + "*ACT_LOG_TYPE_COMPLETE_HANDBOOK_ACHIEVEMENT\x10\x15\x12(\n" + "$ACT_LOG_TYPE_COMPLETE_CHAPTER_SCENES\x10\x16\x12!\n" + - "\x1dACT_LOG_TYPE_LOST_USER_RETURN\x10\x17B\bZ\x06../msgb\x06proto3" + "\x1dACT_LOG_TYPE_LOST_USER_RETURN\x10\x17*\xa4\x01\n" + + "\x11FRIEND_REPLY_TYPE\x12\x1a\n" + + "\x16FRIEND_REPLY_TYPE_NONE\x10\x00\x12\x1b\n" + + "\x17FRIEND_REPLY_TYPE_GREET\x10\x01\x12\"\n" + + "\x1eFRIEND_REPLY_TYPE_RETURN_GREET\x10\x02\x12\x15\n" + + "\x11REPLY_TYPE_CATNIP\x10\x03\x12\x1b\n" + + "\x17REPLY_TYPE_CATNIP_ITEMS\x10\x04B\bZ\x06../msgb\x06proto3" var ( file_proto_Gameapi_proto_rawDescOnce sync.Once @@ -29586,7 +29665,7 @@ func file_proto_Gameapi_proto_rawDescGZIP() []byte { return file_proto_Gameapi_proto_rawDescData } -var file_proto_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 12) +var file_proto_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 13) var file_proto_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 544) var file_proto_Gameapi_proto_goTypes = []any{ (ITEM_POP_LABEL)(0), // 0: tutorial.ITEM_POP_LABEL @@ -29601,615 +29680,616 @@ var file_proto_Gameapi_proto_goTypes = []any{ (LANG_TYPE)(0), // 9: tutorial.LANG_TYPE (LimitEventParam)(0), // 10: tutorial.LimitEventParam (ActLogType)(0), // 11: tutorial.ActLogType - (*ClientReq)(nil), // 12: tutorial.ClientReq - (*ReqOfflineReconnect)(nil), // 13: tutorial.ReqOfflineReconnect - (*ResOfflineReconnect)(nil), // 14: tutorial.ResOfflineReconnect - (*ReqBindFacebookAccount)(nil), // 15: tutorial.ReqBindFacebookAccount - (*ResBindFacebookAccount)(nil), // 16: tutorial.ResBindFacebookAccount - (*ReqOnlyBindFacebook)(nil), // 17: tutorial.ReqOnlyBindFacebook - (*ResOnlyBindFacebook)(nil), // 18: tutorial.ResOnlyBindFacebook - (*ReqUnBindFacebook)(nil), // 19: tutorial.ReqUnBindFacebook - (*ResUnBindFacebook)(nil), // 20: tutorial.ResUnBindFacebook - (*ReqSynGameData)(nil), // 21: tutorial.ReqSynGameData - (*ResSynGameData)(nil), // 22: tutorial.ResSynGameData - (*ForceKickOut)(nil), // 23: tutorial.ForceKickOut - (*ResServerVersion)(nil), // 24: tutorial.ResServerVersion - (*ResChessColorData)(nil), // 25: tutorial.ResChessColorData - (*ClientRes)(nil), // 26: tutorial.ClientRes - (*ReqRegisterAccount)(nil), // 27: tutorial.ReqRegisterAccount - (*ResRegisterAccount)(nil), // 28: tutorial.ResRegisterAccount - (*ReqLogin)(nil), // 29: tutorial.ReqLogin - (*ReqLoginCode)(nil), // 30: tutorial.ReqLoginCode - (*ResLoginCode)(nil), // 31: tutorial.ResLoginCode - (*ReqId2Verify)(nil), // 32: tutorial.ReqId2Verify - (*ResId2Verify)(nil), // 33: tutorial.ResId2Verify - (*ResLogin)(nil), // 34: tutorial.ResLogin - (*ReqChangePassword)(nil), // 35: tutorial.ReqChangePassword - (*ResChangePassword)(nil), // 36: tutorial.ResChangePassword - (*ReqPlayerBaseInfo)(nil), // 37: tutorial.ReqPlayerBaseInfo - (*ResPlayerBaseInfo)(nil), // 38: tutorial.ResPlayerBaseInfo - (*ReqPlayerAsset)(nil), // 39: tutorial.ReqPlayerAsset - (*ResPlayerAsset)(nil), // 40: tutorial.ResPlayerAsset - (*UpdateBaseItemInfo)(nil), // 41: tutorial.UpdateBaseItemInfo - (*NotifyRenewBuyEnergyCnt)(nil), // 42: tutorial.NotifyRenewBuyEnergyCnt - (*ReqRemoveAd)(nil), // 43: tutorial.ReqRemoveAd - (*ResRemoveAd)(nil), // 44: tutorial.ResRemoveAd - (*NotifyAddEnergy)(nil), // 45: tutorial.NotifyAddEnergy - (*ReqServerTime)(nil), // 46: tutorial.ReqServerTime - (*ResServerTime)(nil), // 47: tutorial.ResServerTime - (*ReqPlayerChessData)(nil), // 48: tutorial.ReqPlayerChessData - (*ResPlayerChessData)(nil), // 49: tutorial.ResPlayerChessData - (*ResPlayerChessInfo)(nil), // 50: tutorial.ResPlayerChessInfo - (*ReqGetChessRetireReward)(nil), // 51: tutorial.ReqGetChessRetireReward - (*ResGetChessRetireReward)(nil), // 52: tutorial.ResGetChessRetireReward - (*PartBag)(nil), // 53: tutorial.PartBag - (*PartBagGrid)(nil), // 54: tutorial.PartBagGrid - (*ReqPutPartInBag)(nil), // 55: tutorial.ReqPutPartInBag - (*ResPutPartInBag)(nil), // 56: tutorial.ResPutPartInBag - (*ChessHandle)(nil), // 57: tutorial.ChessHandle - (*UpdatePlayerChessData)(nil), // 58: tutorial.UpdatePlayerChessData - (*ResUpdatePlayerChessData)(nil), // 59: tutorial.ResUpdatePlayerChessData - (*ReqSeparateChess)(nil), // 60: tutorial.ReqSeparateChess - (*ResSeparateChess)(nil), // 61: tutorial.ResSeparateChess - (*ReqUpgradeChess)(nil), // 62: tutorial.ReqUpgradeChess - (*ResUpgradeChess)(nil), // 63: tutorial.ResUpgradeChess - (*ReqGetChessFromBuff)(nil), // 64: tutorial.ReqGetChessFromBuff - (*ResGetChessFromBuff)(nil), // 65: tutorial.ResGetChessFromBuff - (*ReqChessEx)(nil), // 66: tutorial.ReqChessEx - (*ResChessEx)(nil), // 67: tutorial.ResChessEx - (*ReqSourceChest)(nil), // 68: tutorial.ReqSourceChest - (*ResSourceChest)(nil), // 69: tutorial.ResSourceChest - (*ReqPlayroomOutline)(nil), // 70: tutorial.ReqPlayroomOutline - (*ResPlayroomOutline)(nil), // 71: tutorial.ResPlayroomOutline - (*ChessBag)(nil), // 72: tutorial.ChessBag - (*ChessBagGrid)(nil), // 73: tutorial.ChessBagGrid - (*ReqPutChessInBag)(nil), // 74: tutorial.ReqPutChessInBag - (*ResPutChessInBag)(nil), // 75: tutorial.ResPutChessInBag - (*ReqTakeChessOutBag)(nil), // 76: tutorial.ReqTakeChessOutBag - (*ResTakeChessOutBag)(nil), // 77: tutorial.ResTakeChessOutBag - (*ReqBuyChessBagGrid)(nil), // 78: tutorial.ReqBuyChessBagGrid - (*ResBuyChessBagGrid)(nil), // 79: tutorial.ResBuyChessBagGrid - (*ReqPlayerProfileData)(nil), // 80: tutorial.ReqPlayerProfileData - (*ResPlayerProfileData)(nil), // 81: tutorial.ResPlayerProfileData - (*ReqPlayerBriefProfileData)(nil), // 82: tutorial.ReqPlayerBriefProfileData - (*ResPlayerBriefProfileData)(nil), // 83: tutorial.ResPlayerBriefProfileData - (*ReqSetEnergyMul)(nil), // 84: tutorial.ReqSetEnergyMul - (*ResSetEnergyMul)(nil), // 85: tutorial.ResSetEnergyMul - (*ReqLang)(nil), // 86: tutorial.ReqLang - (*ResLang)(nil), // 87: tutorial.ResLang - (*BaseInfo)(nil), // 88: tutorial.BaseInfo - (*ReqUserInfo)(nil), // 89: tutorial.ReqUserInfo - (*UserInfo)(nil), // 90: tutorial.UserInfo - (*ReqSetName)(nil), // 91: tutorial.ReqSetName - (*ResSetName)(nil), // 92: tutorial.ResSetName - (*ReqSetPetName)(nil), // 93: tutorial.ReqSetPetName - (*ResSetPetName)(nil), // 94: tutorial.ResSetPetName - (*ReqBuyEnergy)(nil), // 95: tutorial.ReqBuyEnergy - (*ResBuyEnergy)(nil), // 96: tutorial.ResBuyEnergy - (*ReqGetEnergyByAD)(nil), // 97: tutorial.ReqGetEnergyByAD - (*ResGetEnergyByAD)(nil), // 98: tutorial.ResGetEnergyByAD - (*ReqGetHandbookReward)(nil), // 99: tutorial.ReqGetHandbookReward - (*ResGetHandbookReward)(nil), // 100: tutorial.ResGetHandbookReward - (*HandbookInfo)(nil), // 101: tutorial.HandbookInfo - (*Handbook)(nil), // 102: tutorial.Handbook - (*RegHandbookAllReward)(nil), // 103: tutorial.RegHandbookAllReward - (*ResHandbookAllReward)(nil), // 104: tutorial.ResHandbookAllReward - (*ReqRewardOrder)(nil), // 105: tutorial.ReqRewardOrder - (*ResRewardOrder)(nil), // 106: tutorial.ResRewardOrder - (*ReqCreatePetOrder)(nil), // 107: tutorial.ReqCreatePetOrder - (*ReqDelOrder)(nil), // 108: tutorial.ReqDelOrder - (*ResDelOrder)(nil), // 109: tutorial.ResDelOrder - (*ReqSellChessNum)(nil), // 110: tutorial.ReqSellChessNum - (*ResSellChessNum)(nil), // 111: tutorial.ResSellChessNum - (*Order)(nil), // 112: tutorial.Order - (*ResOrderList)(nil), // 113: tutorial.ResOrderList - (*ResDecorateInfo)(nil), // 114: tutorial.ResDecorateInfo - (*DecoratePart)(nil), // 115: tutorial.DecoratePart - (*ReqDecorate)(nil), // 116: tutorial.ReqDecorate - (*ResDecorate)(nil), // 117: tutorial.ResDecorate - (*ReqDecorateAll)(nil), // 118: tutorial.ReqDecorateAll - (*ResDecorateAll)(nil), // 119: tutorial.ResDecorateAll - (*ReqDecorateReward)(nil), // 120: tutorial.ReqDecorateReward - (*ResDecorateReward)(nil), // 121: tutorial.ResDecorateReward - (*ReqGmCommand)(nil), // 122: tutorial.ReqGmCommand - (*Card)(nil), // 123: tutorial.Card - (*ReqCardInfo)(nil), // 124: tutorial.ReqCardInfo - (*ResCardInfo)(nil), // 125: tutorial.ResCardInfo - (*ResNotifyCardTimes)(nil), // 126: tutorial.ResNotifyCardTimes - (*ReqCardSeasonFirstReward)(nil), // 127: tutorial.ReqCardSeasonFirstReward - (*ResCardSeasonFirstReward)(nil), // 128: tutorial.ResCardSeasonFirstReward - (*ReqCardHandbookReward)(nil), // 129: tutorial.ReqCardHandbookReward - (*ResCardHandbookReward)(nil), // 130: tutorial.ResCardHandbookReward - (*ReqMasterCard)(nil), // 131: tutorial.ReqMasterCard - (*ResMasterCard)(nil), // 132: tutorial.ResMasterCard - (*ReqCardCollectReward)(nil), // 133: tutorial.ReqCardCollectReward - (*ResCardCollectReward)(nil), // 134: tutorial.ResCardCollectReward - (*ReqExStarReward)(nil), // 135: tutorial.ReqExStarReward - (*ResExStarReward)(nil), // 136: tutorial.ResExStarReward - (*ReqAllCollectReward)(nil), // 137: tutorial.ReqAllCollectReward - (*ResAllCollectReward)(nil), // 138: tutorial.ResAllCollectReward - (*ReqCardGive)(nil), // 139: tutorial.ReqCardGive - (*ResCardGive)(nil), // 140: tutorial.ResCardGive - (*ReqAgreeCardGive)(nil), // 141: tutorial.ReqAgreeCardGive - (*ResAgreeCardGive)(nil), // 142: tutorial.ResAgreeCardGive - (*ReqRefuseCardGive)(nil), // 143: tutorial.ReqRefuseCardGive - (*ResRefuseCardGive)(nil), // 144: tutorial.ResRefuseCardGive - (*ReqCardSend)(nil), // 145: tutorial.ReqCardSend - (*ResCardSend)(nil), // 146: tutorial.ResCardSend - (*ReqCardExchange)(nil), // 147: tutorial.ReqCardExchange - (*ResCardExchange)(nil), // 148: tutorial.ResCardExchange - (*ReqSelectCardExchange)(nil), // 149: tutorial.ReqSelectCardExchange - (*ResSelectCardExchange)(nil), // 150: tutorial.ResSelectCardExchange - (*ReqAgreeCardExchange)(nil), // 151: tutorial.ReqAgreeCardExchange - (*ResAgreeCardExchange)(nil), // 152: tutorial.ResAgreeCardExchange - (*ReqRefuseCardSelect)(nil), // 153: tutorial.ReqRefuseCardSelect - (*ResRefuseCardSelect)(nil), // 154: tutorial.ResRefuseCardSelect - (*ReqRefuseCardExchange)(nil), // 155: tutorial.ReqRefuseCardExchange - (*ResRefuseCardExchange)(nil), // 156: tutorial.ResRefuseCardExchange - (*ReqGetFriendCard)(nil), // 157: tutorial.ReqGetFriendCard - (*ResGetFriendCard)(nil), // 158: tutorial.ResGetFriendCard - (*ReqGetGoldCard)(nil), // 159: tutorial.ReqGetGoldCard - (*ResGetGoldCard)(nil), // 160: tutorial.ResGetGoldCard - (*ReqGuideReward)(nil), // 161: tutorial.ReqGuideReward - (*ResGuideReward)(nil), // 162: tutorial.ResGuideReward - (*ReqGuidePlayroom)(nil), // 163: tutorial.ReqGuidePlayroom - (*ResGuidePlayroom)(nil), // 164: tutorial.ResGuidePlayroom - (*ResGuildInfo)(nil), // 165: tutorial.ResGuildInfo - (*ResGuideInfo)(nil), // 166: tutorial.ResGuideInfo - (*ResItemPop)(nil), // 167: tutorial.ResItemPop - (*ItemInfo)(nil), // 168: tutorial.ItemInfo - (*CardPack)(nil), // 169: tutorial.CardPack - (*ResGuideTask)(nil), // 170: tutorial.ResGuideTask - (*GuideTask)(nil), // 171: tutorial.GuideTask - (*ReqGetGuideTaskReward)(nil), // 172: tutorial.ReqGetGuideTaskReward - (*ResGetGuideTaskReward)(nil), // 173: tutorial.ResGetGuideTaskReward - (*ReqGetGuideActiveReward)(nil), // 174: tutorial.ReqGetGuideActiveReward - (*ResGetGuideActiveReward)(nil), // 175: tutorial.ResGetGuideActiveReward - (*ResDailyTask)(nil), // 176: tutorial.ResDailyTask - (*DailyWeek)(nil), // 177: tutorial.DailyWeek - (*DailyTask)(nil), // 178: tutorial.DailyTask - (*QuestProgress)(nil), // 179: tutorial.QuestProgress - (*ReqGetDailyTaskReward)(nil), // 180: tutorial.ReqGetDailyTaskReward - (*ResGetDailyTaskReward)(nil), // 181: tutorial.ResGetDailyTaskReward - (*ReqGetDailyWeekReward)(nil), // 182: tutorial.ReqGetDailyWeekReward - (*ResGetDailyWeekReward)(nil), // 183: tutorial.ResGetDailyWeekReward - (*ReqDailyUnlock)(nil), // 184: tutorial.ReqDailyUnlock - (*ResDailyUnlock)(nil), // 185: tutorial.ResDailyUnlock - (*ResFaceInfo)(nil), // 186: tutorial.ResFaceInfo - (*FaceInfo)(nil), // 187: tutorial.FaceInfo - (*ReqSetFace)(nil), // 188: tutorial.ReqSetFace - (*ResSetFace)(nil), // 189: tutorial.ResSetFace - (*ResAvatarInfo)(nil), // 190: tutorial.ResAvatarInfo - (*AvatarInfo)(nil), // 191: tutorial.AvatarInfo - (*ReqSetAvatar)(nil), // 192: tutorial.ReqSetAvatar - (*ResSetAvatar)(nil), // 193: tutorial.ResSetAvatar - (*EmojiInfo)(nil), // 194: tutorial.EmojiInfo - (*ReqSetEmoji)(nil), // 195: tutorial.ReqSetEmoji - (*ResSetEmoji)(nil), // 196: tutorial.ResSetEmoji - (*ResSevenLogin)(nil), // 197: tutorial.ResSevenLogin - (*SevenLoginReward)(nil), // 198: tutorial.SevenLoginReward - (*ReqGetSevenLoginReward)(nil), // 199: tutorial.ReqGetSevenLoginReward - (*ResGetSevenLoginReward)(nil), // 200: tutorial.ResGetSevenLoginReward - (*ReqGetMonthLoginReward)(nil), // 201: tutorial.ReqGetMonthLoginReward - (*ResGetMonthLoginReward)(nil), // 202: tutorial.ResGetMonthLoginReward - (*ResActivity)(nil), // 203: tutorial.ResActivity - (*ActivityInfo)(nil), // 204: tutorial.ActivityInfo - (*ReqActivityReward)(nil), // 205: tutorial.ReqActivityReward - (*ResActivityReward)(nil), // 206: tutorial.ResActivityReward - (*ReqLimitEvent)(nil), // 207: tutorial.ReqLimitEvent - (*ResLimitEvent)(nil), // 208: tutorial.ResLimitEvent - (*ResLimitEventProgress)(nil), // 209: tutorial.ResLimitEventProgress - (*ReqLimitEventReward)(nil), // 210: tutorial.ReqLimitEventReward - (*ResLimitEventReward)(nil), // 211: tutorial.ResLimitEventReward - (*ReqSelectLimitEvent)(nil), // 212: tutorial.ReqSelectLimitEvent - (*ResSelectLimitEvent)(nil), // 213: tutorial.ResSelectLimitEvent - (*LimitEvent)(nil), // 214: tutorial.LimitEvent - (*LimitEventNotify)(nil), // 215: tutorial.LimitEventNotify - (*ReqLimitEventLuckyCat)(nil), // 216: tutorial.ReqLimitEventLuckyCat - (*ResLimitEventLuckyCat)(nil), // 217: tutorial.ResLimitEventLuckyCat - (*ReqLimitSenceReward)(nil), // 218: tutorial.ReqLimitSenceReward - (*ResLimitSenceReward)(nil), // 219: tutorial.ResLimitSenceReward - (*ResChessRainReward)(nil), // 220: tutorial.ResChessRainReward - (*ReqFastProduceInfo)(nil), // 221: tutorial.ReqFastProduceInfo - (*ResFastProduceInfo)(nil), // 222: tutorial.ResFastProduceInfo - (*ReqFastProduceReward)(nil), // 223: tutorial.ReqFastProduceReward - (*ResFastProduceReward)(nil), // 224: tutorial.ResFastProduceReward - (*ReqCatTrickReward)(nil), // 225: tutorial.ReqCatTrickReward - (*ResCatTrickReward)(nil), // 226: tutorial.ResCatTrickReward - (*ReqSearchPlayer)(nil), // 227: tutorial.ReqSearchPlayer - (*ResSearchPlayer)(nil), // 228: tutorial.ResSearchPlayer - (*ReqFriendPlayerSimple)(nil), // 229: tutorial.ReqFriendPlayerSimple - (*ResFriendPlayerSimple)(nil), // 230: tutorial.ResFriendPlayerSimple - (*ResPlayerSimple)(nil), // 231: tutorial.ResPlayerSimple - (*ActLog)(nil), // 232: tutorial.ActLog - (*ResPlayerRank)(nil), // 233: tutorial.ResPlayerRank - (*ResFriendLog)(nil), // 234: tutorial.ResFriendLog - (*NotifyFriendLog)(nil), // 235: tutorial.NotifyFriendLog - (*FriendBubbleInfo)(nil), // 236: tutorial.FriendBubbleInfo - (*NotifyFriendCard)(nil), // 237: tutorial.NotifyFriendCard - (*ResFriendCard)(nil), // 238: tutorial.ResFriendCard - (*ReqKv)(nil), // 239: tutorial.ReqKv - (*ResKv)(nil), // 240: tutorial.ResKv - (*ReqFriendByCode)(nil), // 241: tutorial.ReqFriendByCode - (*ResFriendByCode)(nil), // 242: tutorial.ResFriendByCode - (*ReqFriendRecommend)(nil), // 243: tutorial.ReqFriendRecommend - (*ResFriendRecommend)(nil), // 244: tutorial.ResFriendRecommend - (*ReqFriendIgnore)(nil), // 245: tutorial.ReqFriendIgnore - (*ResFriendIgnore)(nil), // 246: tutorial.ResFriendIgnore - (*ReqFriendList)(nil), // 247: tutorial.ReqFriendList - (*ResFriendList)(nil), // 248: tutorial.ResFriendList - (*ReqAddNpc)(nil), // 249: tutorial.ReqAddNpc - (*ResAddNpc)(nil), // 250: tutorial.ResAddNpc - (*ReqFriendApply)(nil), // 251: tutorial.ReqFriendApply - (*ResFriendApply)(nil), // 252: tutorial.ResFriendApply - (*ResFriendApplyInfo)(nil), // 253: tutorial.ResFriendApplyInfo - (*ReqFriendCardMsg)(nil), // 254: tutorial.ReqFriendCardMsg - (*ResFriendCardMsg)(nil), // 255: tutorial.ResFriendCardMsg - (*ReqWishApplyList)(nil), // 256: tutorial.ReqWishApplyList - (*ResWishApplyList)(nil), // 257: tutorial.ResWishApplyList - (*ReqWishApply)(nil), // 258: tutorial.ReqWishApply - (*ResWishApply)(nil), // 259: tutorial.ResWishApply - (*ReqFriendTimeLine)(nil), // 260: tutorial.ReqFriendTimeLine - (*ResFriendTimeLine)(nil), // 261: tutorial.ResFriendTimeLine - (*ResFriendReply)(nil), // 262: tutorial.ResFriendReply - (*ReqFriendReplyHandle)(nil), // 263: tutorial.ReqFriendReplyHandle - (*ResFriendReplyHandle)(nil), // 264: tutorial.ResFriendReplyHandle - (*ResFriendBubble)(nil), // 265: tutorial.ResFriendBubble - (*ReqFriendTLUpvote)(nil), // 266: tutorial.ReqFriendTLUpvote - (*ResFriendTLUpvote)(nil), // 267: tutorial.ResFriendTLUpvote - (*ReqFriendTReward)(nil), // 268: tutorial.ReqFriendTReward - (*ResFriendTReward)(nil), // 269: tutorial.ResFriendTReward - (*ResFriendApplyNotify)(nil), // 270: tutorial.ResFriendApplyNotify - (*ReqApplyFriend)(nil), // 271: tutorial.ReqApplyFriend - (*ResApplyFriend)(nil), // 272: tutorial.ResApplyFriend - (*ReqAgreeFriend)(nil), // 273: tutorial.ReqAgreeFriend - (*ResAgreeFriend)(nil), // 274: tutorial.ResAgreeFriend - (*ReqRefuseFriend)(nil), // 275: tutorial.ReqRefuseFriend - (*ResRefuseFriend)(nil), // 276: tutorial.ResRefuseFriend - (*ReqDelFriend)(nil), // 277: tutorial.ReqDelFriend - (*ResDelFriend)(nil), // 278: tutorial.ResDelFriend - (*ReqRank)(nil), // 279: tutorial.ReqRank - (*ResRank)(nil), // 280: tutorial.ResRank - (*ReqMailList)(nil), // 281: tutorial.ReqMailList - (*ResMailList)(nil), // 282: tutorial.ResMailList - (*MailInfo)(nil), // 283: tutorial.MailInfo - (*MailNotify)(nil), // 284: tutorial.MailNotify - (*ReqReadMail)(nil), // 285: tutorial.ReqReadMail - (*ResReadMail)(nil), // 286: tutorial.ResReadMail - (*ReqGetMailReward)(nil), // 287: tutorial.ReqGetMailReward - (*ResGetMailReward)(nil), // 288: tutorial.ResGetMailReward - (*ReqDeleteMail)(nil), // 289: tutorial.ReqDeleteMail - (*ResDeleteMail)(nil), // 290: tutorial.ResDeleteMail - (*ResCharge)(nil), // 291: tutorial.ResCharge - (*LogoutPetWork)(nil), // 292: tutorial.LogoutPetWork - (*WeeklyDiscountInfo)(nil), // 293: tutorial.WeeklyDiscountInfo - (*WishList)(nil), // 294: tutorial.WishList - (*ReqAddWish)(nil), // 295: tutorial.ReqAddWish - (*ResAddWish)(nil), // 296: tutorial.ResAddWish - (*ReqGetWish)(nil), // 297: tutorial.ReqGetWish - (*ResGetWish)(nil), // 298: tutorial.ResGetWish - (*ReqSendWishBeg)(nil), // 299: tutorial.ReqSendWishBeg - (*ResSendWishBeg)(nil), // 300: tutorial.ResSendWishBeg - (*ResSpecialShop)(nil), // 301: tutorial.ResSpecialShop - (*ResChessShop)(nil), // 302: tutorial.ResChessShop - (*ReqFreeShop)(nil), // 303: tutorial.ReqFreeShop - (*ResFreeShop)(nil), // 304: tutorial.ResFreeShop - (*ReqBuyChessShop)(nil), // 305: tutorial.ReqBuyChessShop - (*ResBuyChessShop)(nil), // 306: tutorial.ResBuyChessShop - (*ReqBuyChessShop2)(nil), // 307: tutorial.ReqBuyChessShop2 - (*ResBuyChessShop2)(nil), // 308: tutorial.ResBuyChessShop2 - (*ReqRefreshChessShop)(nil), // 309: tutorial.ReqRefreshChessShop - (*ResRefreshChessShop)(nil), // 310: tutorial.ResRefreshChessShop - (*ReqEndless)(nil), // 311: tutorial.ReqEndless - (*ResEndless)(nil), // 312: tutorial.ResEndless - (*ResEndlessInfo)(nil), // 313: tutorial.ResEndlessInfo - (*ReqEndlessReward)(nil), // 314: tutorial.ReqEndlessReward - (*ResEndlessReward)(nil), // 315: tutorial.ResEndlessReward - (*ResPiggyBank)(nil), // 316: tutorial.ResPiggyBank - (*ReqPiggyBankReward)(nil), // 317: tutorial.ReqPiggyBankReward - (*ResPiggyBankReward)(nil), // 318: tutorial.ResPiggyBankReward - (*ReqChargeReceive)(nil), // 319: tutorial.ReqChargeReceive - (*ResChargeReceive)(nil), // 320: tutorial.ResChargeReceive - (*ReqCreateOrderSn)(nil), // 321: tutorial.ReqCreateOrderSn - (*ResCreateOrderSn)(nil), // 322: tutorial.ResCreateOrderSn - (*ReqShippingOrder)(nil), // 323: tutorial.ReqShippingOrder - (*ResShippingOrder)(nil), // 324: tutorial.ResShippingOrder - (*ReqChampship)(nil), // 325: tutorial.ReqChampship - (*ResChampship)(nil), // 326: tutorial.ResChampship - (*ReqChampshipReward)(nil), // 327: tutorial.ReqChampshipReward - (*ResChampshipReward)(nil), // 328: tutorial.ResChampshipReward - (*ReqChampshipRankReward)(nil), // 329: tutorial.ReqChampshipRankReward - (*ResChampshipRankReward)(nil), // 330: tutorial.ResChampshipRankReward - (*ReqChampshipRank)(nil), // 331: tutorial.ReqChampshipRank - (*ResChampshipRank)(nil), // 332: tutorial.ResChampshipRank - (*ReqChampshipPreRank)(nil), // 333: tutorial.ReqChampshipPreRank - (*ResChampshipPreRank)(nil), // 334: tutorial.ResChampshipPreRank - (*ResNotifyCard)(nil), // 335: tutorial.ResNotifyCard - (*ReqSetFacebookUrl)(nil), // 336: tutorial.ReqSetFacebookUrl - (*ResSetFacebookUrl)(nil), // 337: tutorial.ResSetFacebookUrl - (*ReqInviteFriendData)(nil), // 338: tutorial.ReqInviteFriendData - (*ResInviteFriendData)(nil), // 339: tutorial.ResInviteFriendData - (*ReqSelfInvited)(nil), // 340: tutorial.ReqSelfInvited - (*ResSelfInvited)(nil), // 341: tutorial.ResSelfInvited - (*NotifyInvitedSuccess)(nil), // 342: tutorial.NotifyInvitedSuccess - (*ReqGetInviteReward)(nil), // 343: tutorial.ReqGetInviteReward - (*ResGetInviteReward)(nil), // 344: tutorial.ResGetInviteReward - (*ReqAutoAddInviteFriend)(nil), // 345: tutorial.ReqAutoAddInviteFriend - (*ResAutoAddInviteFriend)(nil), // 346: tutorial.ResAutoAddInviteFriend - (*ReqAutoAddInviteFriend2)(nil), // 347: tutorial.ReqAutoAddInviteFriend2 - (*ResAutoAddInviteFriend2)(nil), // 348: tutorial.ResAutoAddInviteFriend2 - (*ReqMining)(nil), // 349: tutorial.ReqMining - (*ResMining)(nil), // 350: tutorial.ResMining - (*ReqMiningTake)(nil), // 351: tutorial.ReqMiningTake - (*ResMiningTake)(nil), // 352: tutorial.ResMiningTake - (*ReqMiningReward)(nil), // 353: tutorial.ReqMiningReward - (*ResMiningReward)(nil), // 354: tutorial.ResMiningReward - (*ReqActPass)(nil), // 355: tutorial.ReqActPass - (*ResActPass)(nil), // 356: tutorial.ResActPass - (*ReqActPassReward)(nil), // 357: tutorial.ReqActPassReward - (*ResActPassReward)(nil), // 358: tutorial.ResActPassReward - (*ResActRed)(nil), // 359: tutorial.ResActRed - (*NotifyActRed)(nil), // 360: tutorial.NotifyActRed - (*ActivityNotify)(nil), // 361: tutorial.ActivityNotify - (*ResItem)(nil), // 362: tutorial.ResItem - (*ItemNotify)(nil), // 363: tutorial.ItemNotify - (*ReqGuessColor)(nil), // 364: tutorial.ReqGuessColor - (*ResGuessColor)(nil), // 365: tutorial.ResGuessColor - (*Opponent)(nil), // 366: tutorial.opponent - (*ReqGuessColorTake)(nil), // 367: tutorial.ReqGuessColorTake - (*GuessColorInfo)(nil), // 368: tutorial.GuessColorInfo - (*ResGuessColorTake)(nil), // 369: tutorial.ResGuessColorTake - (*ReqGuessColorReward)(nil), // 370: tutorial.ReqGuessColorReward - (*ResGuessColorReward)(nil), // 371: tutorial.ResGuessColorReward - (*ReqRace)(nil), // 372: tutorial.ReqRace - (*ResRace)(nil), // 373: tutorial.ResRace - (*Raceopponent)(nil), // 374: tutorial.raceopponent - (*ReqRaceStart)(nil), // 375: tutorial.ReqRaceStart - (*ResRaceStart)(nil), // 376: tutorial.ResRaceStart - (*ReqRaceReward)(nil), // 377: tutorial.ReqRaceReward - (*ResRaceReward)(nil), // 378: tutorial.ResRaceReward - (*ReqPlayroom)(nil), // 379: tutorial.ReqPlayroom - (*ResPlayroom)(nil), // 380: tutorial.ResPlayroom - (*NotifyPlayroomTask)(nil), // 381: tutorial.NotifyPlayroomTask - (*ReqPlayroomTask)(nil), // 382: tutorial.ReqPlayroomTask - (*ResPlayroomTask)(nil), // 383: tutorial.ResPlayroomTask - (*ReqPlayroomTaskReward)(nil), // 384: tutorial.ReqPlayroomTaskReward - (*ResPlayroomTaskReward)(nil), // 385: tutorial.ResPlayroomTaskReward - (*ReqPlayroomUnlock)(nil), // 386: tutorial.ReqPlayroomUnlock - (*ResPlayroomUnlock)(nil), // 387: tutorial.ResPlayroomUnlock - (*ReqPlayroomUpvote)(nil), // 388: tutorial.ReqPlayroomUpvote - (*ResPlayroomUpvote)(nil), // 389: tutorial.ResPlayroomUpvote - (*PlayroomDress)(nil), // 390: tutorial.PlayroomDress - (*PlayroomDressInfo)(nil), // 391: tutorial.PlayroomDressInfo - (*PlayroomAirInfo)(nil), // 392: tutorial.PlayroomAirInfo - (*PlayroomCollectInfo)(nil), // 393: tutorial.PlayroomCollectInfo - (*ReqPlayroomDressSet)(nil), // 394: tutorial.ReqPlayroomDressSet - (*ResPlayroomDressSet)(nil), // 395: tutorial.ResPlayroomDressSet - (*ReqPlayroomPetAirSet)(nil), // 396: tutorial.ReqPlayroomPetAirSet - (*ResPlayroomPetAirSet)(nil), // 397: tutorial.ResPlayroomPetAirSet - (*ReqPlayroomWrokOutline)(nil), // 398: tutorial.ReqPlayroomWrokOutline - (*ResPlayroomWrokOutline)(nil), // 399: tutorial.ResPlayroomWrokOutline - (*NofiPlayroomStatus)(nil), // 400: tutorial.NofiPlayroomStatus - (*NotifyPlayroomWork)(nil), // 401: tutorial.NotifyPlayroomWork - (*NotifyPlayroomLose)(nil), // 402: tutorial.NotifyPlayroomLose - (*ChipInfo)(nil), // 403: tutorial.ChipInfo - (*NotifyPlayroomMood)(nil), // 404: tutorial.NotifyPlayroomMood - (*AdItem)(nil), // 405: tutorial.AdItem - (*NotifyPlayroomKiss)(nil), // 406: tutorial.NotifyPlayroomKiss - (*FriendRoom)(nil), // 407: tutorial.FriendRoom - (*RoomOpponent)(nil), // 408: tutorial.RoomOpponent - (*ReqPlayroomInfo)(nil), // 409: tutorial.ReqPlayroomInfo - (*ResPlayroomInfo)(nil), // 410: tutorial.ResPlayroomInfo - (*ReqPlayroomFlip)(nil), // 411: tutorial.ReqPlayroomFlip - (*ResPlayroomFlip)(nil), // 412: tutorial.ResPlayroomFlip - (*ReqPlayroomGuide)(nil), // 413: tutorial.ReqPlayroomGuide - (*ResPlayroomGuide)(nil), // 414: tutorial.ResPlayroomGuide - (*ReqPlayroomFlipReward)(nil), // 415: tutorial.ReqPlayroomFlipReward - (*ResPlayroomFlipReward)(nil), // 416: tutorial.ResPlayroomFlipReward - (*ReqPlayroomGame)(nil), // 417: tutorial.ReqPlayroomGame - (*ResPlayroomGame)(nil), // 418: tutorial.ResPlayroomGame - (*ReqPlayroomGameShowReward)(nil), // 419: tutorial.ReqPlayroomGameShowReward - (*ResPlayroomGameShowReward)(nil), // 420: tutorial.ResPlayroomGameShowReward - (*ReqPlayroomInteract)(nil), // 421: tutorial.ReqPlayroomInteract - (*ResPlayroomInteract)(nil), // 422: tutorial.ResPlayroomInteract - (*ReqPlayroomSetRoom)(nil), // 423: tutorial.ReqPlayroomSetRoom - (*ResPlayroomSetRoom)(nil), // 424: tutorial.ResPlayroomSetRoom - (*ReqPlayroomSelectReward)(nil), // 425: tutorial.ReqPlayroomSelectReward - (*ResPlayroomSelectReward)(nil), // 426: tutorial.ResPlayroomSelectReward - (*ReqPlayroomLose)(nil), // 427: tutorial.ReqPlayroomLose - (*ResPlayroomLose)(nil), // 428: tutorial.ResPlayroomLose - (*ReqPlayroomWork)(nil), // 429: tutorial.ReqPlayroomWork - (*ResPlayroomWork)(nil), // 430: tutorial.ResPlayroomWork - (*ReqPlayroomRest)(nil), // 431: tutorial.ReqPlayroomRest - (*ResPlayroomRest)(nil), // 432: tutorial.ResPlayroomRest - (*ReqPlayroomDraw)(nil), // 433: tutorial.ReqPlayroomDraw - (*ResPlayroomDraw)(nil), // 434: tutorial.ResPlayroomDraw - (*ReqPlayroomChip)(nil), // 435: tutorial.ReqPlayroomChip - (*ResPlayroomChip)(nil), // 436: tutorial.ResPlayroomChip - (*ReqPlayroomBuyItem)(nil), // 437: tutorial.ReqPlayroomBuyItem - (*ResPlayroomBuyItem)(nil), // 438: tutorial.ResPlayroomBuyItem - (*ReqPlayroomShop)(nil), // 439: tutorial.ReqPlayroomShop - (*ResPlayroomShop)(nil), // 440: tutorial.ResPlayroomShop - (*ReqFriendTreasure)(nil), // 441: tutorial.ReqFriendTreasure - (*ResFriendTreasure)(nil), // 442: tutorial.ResFriendTreasure - (*TreasureInfo)(nil), // 443: tutorial.TreasureInfo - (*ReqFriendTreasureStart)(nil), // 444: tutorial.ReqFriendTreasureStart - (*ResFriendTreasureStart)(nil), // 445: tutorial.ResFriendTreasureStart - (*ReqFriendTreasureEnd)(nil), // 446: tutorial.ReqFriendTreasureEnd - (*ResFriendTreasureEnd)(nil), // 447: tutorial.ResFriendTreasureEnd - (*ReqFriendTreasureFilp)(nil), // 448: tutorial.ReqFriendTreasureFilp - (*ResFriendTreasureFilp)(nil), // 449: tutorial.ResFriendTreasureFilp - (*ResFriendTreasureStar)(nil), // 450: tutorial.ResFriendTreasureStar - (*ReqKafkaLog)(nil), // 451: tutorial.ReqKafkaLog - (*ReqCollectInfo)(nil), // 452: tutorial.ReqCollectInfo - (*ResCollectInfo)(nil), // 453: tutorial.ResCollectInfo - (*CollectItem)(nil), // 454: tutorial.CollectItem - (*ReqCollect)(nil), // 455: tutorial.ReqCollect - (*ResCollect)(nil), // 456: tutorial.ResCollect - (*ReqCatnip)(nil), // 457: tutorial.ReqCatnip - (*ResCatnip)(nil), // 458: tutorial.ResCatnip - (*CatnipGame)(nil), // 459: tutorial.CatnipGame - (*CatnipInvite)(nil), // 460: tutorial.CatnipInvite - (*ReqCatnipInvite)(nil), // 461: tutorial.ReqCatnipInvite - (*ResCatnipInvite)(nil), // 462: tutorial.ResCatnipInvite - (*ReqCatnipAgree)(nil), // 463: tutorial.ReqCatnipAgree - (*ResCatnipAgree)(nil), // 464: tutorial.ResCatnipAgree - (*ReqCatnipRefuse)(nil), // 465: tutorial.ReqCatnipRefuse - (*ResCatnipRefuse)(nil), // 466: tutorial.ResCatnipRefuse - (*ReqCatnipMultiply)(nil), // 467: tutorial.ReqCatnipMultiply - (*ResCatnipMultiply)(nil), // 468: tutorial.ResCatnipMultiply - (*ReqCatnipPlay)(nil), // 469: tutorial.ReqCatnipPlay - (*ResCatnipPlay)(nil), // 470: tutorial.ResCatnipPlay - (*ReqCatnipReward)(nil), // 471: tutorial.ReqCatnipReward - (*ResCatnipReward)(nil), // 472: tutorial.ResCatnipReward - (*ReqCatnipGrandReward)(nil), // 473: tutorial.ReqCatnipGrandReward - (*ResCatnipGrandReward)(nil), // 474: tutorial.ResCatnipGrandReward - (*ReqCatnipEmoji)(nil), // 475: tutorial.ReqCatnipEmoji - (*ResCatnipEmoji)(nil), // 476: tutorial.ResCatnipEmoji - (*AdminReq)(nil), // 477: tutorial.AdminReq - (*AdminRes)(nil), // 478: tutorial.AdminRes - (*ReqAdminInfo)(nil), // 479: tutorial.ReqAdminInfo - (*ReqReloadServerMail)(nil), // 480: tutorial.ReqReloadServerMail - (*ReqServerInfo)(nil), // 481: tutorial.ReqServerInfo - (*ReqReload)(nil), // 482: tutorial.ReqReload - (*ReqAdminGm)(nil), // 483: tutorial.ReqAdminGm - (*ReqAdminBan)(nil), // 484: tutorial.ReqAdminBan - (*ReqAdminShipping)(nil), // 485: tutorial.ReqAdminShipping - nil, // 486: tutorial.ResChessColorData.MChessColorDataEntry - nil, // 487: tutorial.UpdateBaseItemInfo.MUpdateItemEntry - nil, // 488: tutorial.ResPlayerChessData.MChessDataEntry - nil, // 489: tutorial.ReqPutPartInBag.MChessDataEntry - nil, // 490: tutorial.UpdatePlayerChessData.MChessDataEntry - nil, // 491: tutorial.ReqSeparateChess.MChessDataEntry - nil, // 492: tutorial.ReqUpgradeChess.MChessDataEntry - nil, // 493: tutorial.ReqGetChessFromBuff.MChessDataEntry - nil, // 494: tutorial.ReqChessEx.MChessDataEntry - nil, // 495: tutorial.ReqSourceChest.MChessDataEntry - nil, // 496: tutorial.ReqPlayroomOutline.MChessDataEntry - nil, // 497: tutorial.ReqPutChessInBag.MChessDataEntry - nil, // 498: tutorial.ReqTakeChessOutBag.MChessDataEntry - nil, // 499: tutorial.ResPlayerBriefProfileData.SetEmojiEntry - nil, // 500: tutorial.UserInfo.SetEmojiEntry - nil, // 501: tutorial.ReqRewardOrder.MChessDataEntry - nil, // 502: tutorial.ResCardInfo.AllCardEntry - nil, // 503: tutorial.ResCardInfo.HandbookEntry - nil, // 504: tutorial.ResGuildInfo.RewardEntry - nil, // 505: tutorial.ResGuideInfo.RewardEntry - nil, // 506: tutorial.ResGuideTask.TaskEntry - nil, // 507: tutorial.ResDailyTask.WeekRewardEntry - nil, // 508: tutorial.ResDailyTask.DailyTaskEntry - nil, // 509: tutorial.ResLimitEvent.LimitEventListEntry - nil, // 510: tutorial.ResLimitEventProgress.ProgressRewardEntry - nil, // 511: tutorial.LimitEvent.ParamEntry - nil, // 512: tutorial.ReqLimitEventLuckyCat.MChessDataEntry - nil, // 513: tutorial.ResFriendPlayerSimple.EmojiEntry - nil, // 514: tutorial.ResFriendPlayerSimple.PlayroomEntry - nil, // 515: tutorial.ResFriendPlayerSimple.DressSetEntry - nil, // 516: tutorial.ResFriendPlayerSimple.PhysiologyEntry - nil, // 517: tutorial.ResPlayerSimple.EmojiEntry - nil, // 518: tutorial.ResKv.KvEntry - nil, // 519: tutorial.ResRank.RankListEntry - nil, // 520: tutorial.ResMailList.MailListEntry - nil, // 521: tutorial.ResCharge.SpecialShopEntry - nil, // 522: tutorial.ResCharge.ChessShopEntry - nil, // 523: tutorial.ResCharge.GiftEntry - nil, // 524: tutorial.ResCharge.WeeklyDiscountEntry - nil, // 525: tutorial.ReqBuyChessShop2.MChessDataEntry - nil, // 526: tutorial.ResEndless.EndlessListEntry - nil, // 527: tutorial.ResChampshipRank.RankListEntry - nil, // 528: tutorial.ResChampshipPreRank.RankListEntry - nil, // 529: tutorial.ResNotifyCard.CardEntry - nil, // 530: tutorial.ResNotifyCard.MasterEntry - nil, // 531: tutorial.ResNotifyCard.HandbookEntry - nil, // 532: tutorial.ResMining.MapEntry - nil, // 533: tutorial.ReqMiningTake.MapEntry - nil, // 534: tutorial.ResActRed.RedEntry - nil, // 535: tutorial.ResItem.ItemEntry - nil, // 536: tutorial.ItemNotify.ItemEntry - nil, // 537: tutorial.ResGuessColor.OMapEntry - nil, // 538: tutorial.ReqGuessColorTake.OMapEntry - nil, // 539: tutorial.GuessColorInfo.MapEntry - nil, // 540: tutorial.ResPlayroom.PlayroomEntry - nil, // 541: tutorial.ResPlayroom.MoodEntry - nil, // 542: tutorial.ResPlayroom.PhysiologyEntry - nil, // 543: tutorial.ResPlayroom.DressEntry - nil, // 544: tutorial.ResPlayroom.DressSetEntry - nil, // 545: tutorial.ResPlayroom.WeeklyDiscountEntry - nil, // 546: tutorial.ReqPlayroomDressSet.DressSetEntry - nil, // 547: tutorial.NotifyPlayroomMood.MoodEntry - nil, // 548: tutorial.NotifyPlayroomMood.PhysiologyEntry - nil, // 549: tutorial.ResPlayroomInfo.PlayroomEntry - nil, // 550: tutorial.ResPlayroomInfo.ItemsEntry - nil, // 551: tutorial.ResPlayroomInfo.FlipEntry - nil, // 552: tutorial.ResPlayroomInfo.EmojiEntry - nil, // 553: tutorial.ResPlayroomInfo.DressSetEntry - nil, // 554: tutorial.ResPlayroomGame.ItemsEntry - nil, // 555: tutorial.ReqPlayroomSetRoom.PlayroomEntry + (FRIEND_REPLY_TYPE)(0), // 12: tutorial.FRIEND_REPLY_TYPE + (*ClientReq)(nil), // 13: tutorial.ClientReq + (*ReqOfflineReconnect)(nil), // 14: tutorial.ReqOfflineReconnect + (*ResOfflineReconnect)(nil), // 15: tutorial.ResOfflineReconnect + (*ReqBindFacebookAccount)(nil), // 16: tutorial.ReqBindFacebookAccount + (*ResBindFacebookAccount)(nil), // 17: tutorial.ResBindFacebookAccount + (*ReqOnlyBindFacebook)(nil), // 18: tutorial.ReqOnlyBindFacebook + (*ResOnlyBindFacebook)(nil), // 19: tutorial.ResOnlyBindFacebook + (*ReqUnBindFacebook)(nil), // 20: tutorial.ReqUnBindFacebook + (*ResUnBindFacebook)(nil), // 21: tutorial.ResUnBindFacebook + (*ReqSynGameData)(nil), // 22: tutorial.ReqSynGameData + (*ResSynGameData)(nil), // 23: tutorial.ResSynGameData + (*ForceKickOut)(nil), // 24: tutorial.ForceKickOut + (*ResServerVersion)(nil), // 25: tutorial.ResServerVersion + (*ResChessColorData)(nil), // 26: tutorial.ResChessColorData + (*ClientRes)(nil), // 27: tutorial.ClientRes + (*ReqRegisterAccount)(nil), // 28: tutorial.ReqRegisterAccount + (*ResRegisterAccount)(nil), // 29: tutorial.ResRegisterAccount + (*ReqLogin)(nil), // 30: tutorial.ReqLogin + (*ReqLoginCode)(nil), // 31: tutorial.ReqLoginCode + (*ResLoginCode)(nil), // 32: tutorial.ResLoginCode + (*ReqId2Verify)(nil), // 33: tutorial.ReqId2Verify + (*ResId2Verify)(nil), // 34: tutorial.ResId2Verify + (*ResLogin)(nil), // 35: tutorial.ResLogin + (*ReqChangePassword)(nil), // 36: tutorial.ReqChangePassword + (*ResChangePassword)(nil), // 37: tutorial.ResChangePassword + (*ReqPlayerBaseInfo)(nil), // 38: tutorial.ReqPlayerBaseInfo + (*ResPlayerBaseInfo)(nil), // 39: tutorial.ResPlayerBaseInfo + (*ReqPlayerAsset)(nil), // 40: tutorial.ReqPlayerAsset + (*ResPlayerAsset)(nil), // 41: tutorial.ResPlayerAsset + (*UpdateBaseItemInfo)(nil), // 42: tutorial.UpdateBaseItemInfo + (*NotifyRenewBuyEnergyCnt)(nil), // 43: tutorial.NotifyRenewBuyEnergyCnt + (*ReqRemoveAd)(nil), // 44: tutorial.ReqRemoveAd + (*ResRemoveAd)(nil), // 45: tutorial.ResRemoveAd + (*NotifyAddEnergy)(nil), // 46: tutorial.NotifyAddEnergy + (*ReqServerTime)(nil), // 47: tutorial.ReqServerTime + (*ResServerTime)(nil), // 48: tutorial.ResServerTime + (*ReqPlayerChessData)(nil), // 49: tutorial.ReqPlayerChessData + (*ResPlayerChessData)(nil), // 50: tutorial.ResPlayerChessData + (*ResPlayerChessInfo)(nil), // 51: tutorial.ResPlayerChessInfo + (*ReqGetChessRetireReward)(nil), // 52: tutorial.ReqGetChessRetireReward + (*ResGetChessRetireReward)(nil), // 53: tutorial.ResGetChessRetireReward + (*PartBag)(nil), // 54: tutorial.PartBag + (*PartBagGrid)(nil), // 55: tutorial.PartBagGrid + (*ReqPutPartInBag)(nil), // 56: tutorial.ReqPutPartInBag + (*ResPutPartInBag)(nil), // 57: tutorial.ResPutPartInBag + (*ChessHandle)(nil), // 58: tutorial.ChessHandle + (*UpdatePlayerChessData)(nil), // 59: tutorial.UpdatePlayerChessData + (*ResUpdatePlayerChessData)(nil), // 60: tutorial.ResUpdatePlayerChessData + (*ReqSeparateChess)(nil), // 61: tutorial.ReqSeparateChess + (*ResSeparateChess)(nil), // 62: tutorial.ResSeparateChess + (*ReqUpgradeChess)(nil), // 63: tutorial.ReqUpgradeChess + (*ResUpgradeChess)(nil), // 64: tutorial.ResUpgradeChess + (*ReqGetChessFromBuff)(nil), // 65: tutorial.ReqGetChessFromBuff + (*ResGetChessFromBuff)(nil), // 66: tutorial.ResGetChessFromBuff + (*ReqChessEx)(nil), // 67: tutorial.ReqChessEx + (*ResChessEx)(nil), // 68: tutorial.ResChessEx + (*ReqSourceChest)(nil), // 69: tutorial.ReqSourceChest + (*ResSourceChest)(nil), // 70: tutorial.ResSourceChest + (*ReqPlayroomOutline)(nil), // 71: tutorial.ReqPlayroomOutline + (*ResPlayroomOutline)(nil), // 72: tutorial.ResPlayroomOutline + (*ChessBag)(nil), // 73: tutorial.ChessBag + (*ChessBagGrid)(nil), // 74: tutorial.ChessBagGrid + (*ReqPutChessInBag)(nil), // 75: tutorial.ReqPutChessInBag + (*ResPutChessInBag)(nil), // 76: tutorial.ResPutChessInBag + (*ReqTakeChessOutBag)(nil), // 77: tutorial.ReqTakeChessOutBag + (*ResTakeChessOutBag)(nil), // 78: tutorial.ResTakeChessOutBag + (*ReqBuyChessBagGrid)(nil), // 79: tutorial.ReqBuyChessBagGrid + (*ResBuyChessBagGrid)(nil), // 80: tutorial.ResBuyChessBagGrid + (*ReqPlayerProfileData)(nil), // 81: tutorial.ReqPlayerProfileData + (*ResPlayerProfileData)(nil), // 82: tutorial.ResPlayerProfileData + (*ReqPlayerBriefProfileData)(nil), // 83: tutorial.ReqPlayerBriefProfileData + (*ResPlayerBriefProfileData)(nil), // 84: tutorial.ResPlayerBriefProfileData + (*ReqSetEnergyMul)(nil), // 85: tutorial.ReqSetEnergyMul + (*ResSetEnergyMul)(nil), // 86: tutorial.ResSetEnergyMul + (*ReqLang)(nil), // 87: tutorial.ReqLang + (*ResLang)(nil), // 88: tutorial.ResLang + (*BaseInfo)(nil), // 89: tutorial.BaseInfo + (*ReqUserInfo)(nil), // 90: tutorial.ReqUserInfo + (*UserInfo)(nil), // 91: tutorial.UserInfo + (*ReqSetName)(nil), // 92: tutorial.ReqSetName + (*ResSetName)(nil), // 93: tutorial.ResSetName + (*ReqSetPetName)(nil), // 94: tutorial.ReqSetPetName + (*ResSetPetName)(nil), // 95: tutorial.ResSetPetName + (*ReqBuyEnergy)(nil), // 96: tutorial.ReqBuyEnergy + (*ResBuyEnergy)(nil), // 97: tutorial.ResBuyEnergy + (*ReqGetEnergyByAD)(nil), // 98: tutorial.ReqGetEnergyByAD + (*ResGetEnergyByAD)(nil), // 99: tutorial.ResGetEnergyByAD + (*ReqGetHandbookReward)(nil), // 100: tutorial.ReqGetHandbookReward + (*ResGetHandbookReward)(nil), // 101: tutorial.ResGetHandbookReward + (*HandbookInfo)(nil), // 102: tutorial.HandbookInfo + (*Handbook)(nil), // 103: tutorial.Handbook + (*RegHandbookAllReward)(nil), // 104: tutorial.RegHandbookAllReward + (*ResHandbookAllReward)(nil), // 105: tutorial.ResHandbookAllReward + (*ReqRewardOrder)(nil), // 106: tutorial.ReqRewardOrder + (*ResRewardOrder)(nil), // 107: tutorial.ResRewardOrder + (*ReqCreatePetOrder)(nil), // 108: tutorial.ReqCreatePetOrder + (*ReqDelOrder)(nil), // 109: tutorial.ReqDelOrder + (*ResDelOrder)(nil), // 110: tutorial.ResDelOrder + (*ReqSellChessNum)(nil), // 111: tutorial.ReqSellChessNum + (*ResSellChessNum)(nil), // 112: tutorial.ResSellChessNum + (*Order)(nil), // 113: tutorial.Order + (*ResOrderList)(nil), // 114: tutorial.ResOrderList + (*ResDecorateInfo)(nil), // 115: tutorial.ResDecorateInfo + (*DecoratePart)(nil), // 116: tutorial.DecoratePart + (*ReqDecorate)(nil), // 117: tutorial.ReqDecorate + (*ResDecorate)(nil), // 118: tutorial.ResDecorate + (*ReqDecorateAll)(nil), // 119: tutorial.ReqDecorateAll + (*ResDecorateAll)(nil), // 120: tutorial.ResDecorateAll + (*ReqDecorateReward)(nil), // 121: tutorial.ReqDecorateReward + (*ResDecorateReward)(nil), // 122: tutorial.ResDecorateReward + (*ReqGmCommand)(nil), // 123: tutorial.ReqGmCommand + (*Card)(nil), // 124: tutorial.Card + (*ReqCardInfo)(nil), // 125: tutorial.ReqCardInfo + (*ResCardInfo)(nil), // 126: tutorial.ResCardInfo + (*ResNotifyCardTimes)(nil), // 127: tutorial.ResNotifyCardTimes + (*ReqCardSeasonFirstReward)(nil), // 128: tutorial.ReqCardSeasonFirstReward + (*ResCardSeasonFirstReward)(nil), // 129: tutorial.ResCardSeasonFirstReward + (*ReqCardHandbookReward)(nil), // 130: tutorial.ReqCardHandbookReward + (*ResCardHandbookReward)(nil), // 131: tutorial.ResCardHandbookReward + (*ReqMasterCard)(nil), // 132: tutorial.ReqMasterCard + (*ResMasterCard)(nil), // 133: tutorial.ResMasterCard + (*ReqCardCollectReward)(nil), // 134: tutorial.ReqCardCollectReward + (*ResCardCollectReward)(nil), // 135: tutorial.ResCardCollectReward + (*ReqExStarReward)(nil), // 136: tutorial.ReqExStarReward + (*ResExStarReward)(nil), // 137: tutorial.ResExStarReward + (*ReqAllCollectReward)(nil), // 138: tutorial.ReqAllCollectReward + (*ResAllCollectReward)(nil), // 139: tutorial.ResAllCollectReward + (*ReqCardGive)(nil), // 140: tutorial.ReqCardGive + (*ResCardGive)(nil), // 141: tutorial.ResCardGive + (*ReqAgreeCardGive)(nil), // 142: tutorial.ReqAgreeCardGive + (*ResAgreeCardGive)(nil), // 143: tutorial.ResAgreeCardGive + (*ReqRefuseCardGive)(nil), // 144: tutorial.ReqRefuseCardGive + (*ResRefuseCardGive)(nil), // 145: tutorial.ResRefuseCardGive + (*ReqCardSend)(nil), // 146: tutorial.ReqCardSend + (*ResCardSend)(nil), // 147: tutorial.ResCardSend + (*ReqCardExchange)(nil), // 148: tutorial.ReqCardExchange + (*ResCardExchange)(nil), // 149: tutorial.ResCardExchange + (*ReqSelectCardExchange)(nil), // 150: tutorial.ReqSelectCardExchange + (*ResSelectCardExchange)(nil), // 151: tutorial.ResSelectCardExchange + (*ReqAgreeCardExchange)(nil), // 152: tutorial.ReqAgreeCardExchange + (*ResAgreeCardExchange)(nil), // 153: tutorial.ResAgreeCardExchange + (*ReqRefuseCardSelect)(nil), // 154: tutorial.ReqRefuseCardSelect + (*ResRefuseCardSelect)(nil), // 155: tutorial.ResRefuseCardSelect + (*ReqRefuseCardExchange)(nil), // 156: tutorial.ReqRefuseCardExchange + (*ResRefuseCardExchange)(nil), // 157: tutorial.ResRefuseCardExchange + (*ReqGetFriendCard)(nil), // 158: tutorial.ReqGetFriendCard + (*ResGetFriendCard)(nil), // 159: tutorial.ResGetFriendCard + (*ReqGetGoldCard)(nil), // 160: tutorial.ReqGetGoldCard + (*ResGetGoldCard)(nil), // 161: tutorial.ResGetGoldCard + (*ReqGuideReward)(nil), // 162: tutorial.ReqGuideReward + (*ResGuideReward)(nil), // 163: tutorial.ResGuideReward + (*ReqGuidePlayroom)(nil), // 164: tutorial.ReqGuidePlayroom + (*ResGuidePlayroom)(nil), // 165: tutorial.ResGuidePlayroom + (*ResGuildInfo)(nil), // 166: tutorial.ResGuildInfo + (*ResGuideInfo)(nil), // 167: tutorial.ResGuideInfo + (*ResItemPop)(nil), // 168: tutorial.ResItemPop + (*ItemInfo)(nil), // 169: tutorial.ItemInfo + (*CardPack)(nil), // 170: tutorial.CardPack + (*ResGuideTask)(nil), // 171: tutorial.ResGuideTask + (*GuideTask)(nil), // 172: tutorial.GuideTask + (*ReqGetGuideTaskReward)(nil), // 173: tutorial.ReqGetGuideTaskReward + (*ResGetGuideTaskReward)(nil), // 174: tutorial.ResGetGuideTaskReward + (*ReqGetGuideActiveReward)(nil), // 175: tutorial.ReqGetGuideActiveReward + (*ResGetGuideActiveReward)(nil), // 176: tutorial.ResGetGuideActiveReward + (*ResDailyTask)(nil), // 177: tutorial.ResDailyTask + (*DailyWeek)(nil), // 178: tutorial.DailyWeek + (*DailyTask)(nil), // 179: tutorial.DailyTask + (*QuestProgress)(nil), // 180: tutorial.QuestProgress + (*ReqGetDailyTaskReward)(nil), // 181: tutorial.ReqGetDailyTaskReward + (*ResGetDailyTaskReward)(nil), // 182: tutorial.ResGetDailyTaskReward + (*ReqGetDailyWeekReward)(nil), // 183: tutorial.ReqGetDailyWeekReward + (*ResGetDailyWeekReward)(nil), // 184: tutorial.ResGetDailyWeekReward + (*ReqDailyUnlock)(nil), // 185: tutorial.ReqDailyUnlock + (*ResDailyUnlock)(nil), // 186: tutorial.ResDailyUnlock + (*ResFaceInfo)(nil), // 187: tutorial.ResFaceInfo + (*FaceInfo)(nil), // 188: tutorial.FaceInfo + (*ReqSetFace)(nil), // 189: tutorial.ReqSetFace + (*ResSetFace)(nil), // 190: tutorial.ResSetFace + (*ResAvatarInfo)(nil), // 191: tutorial.ResAvatarInfo + (*AvatarInfo)(nil), // 192: tutorial.AvatarInfo + (*ReqSetAvatar)(nil), // 193: tutorial.ReqSetAvatar + (*ResSetAvatar)(nil), // 194: tutorial.ResSetAvatar + (*EmojiInfo)(nil), // 195: tutorial.EmojiInfo + (*ReqSetEmoji)(nil), // 196: tutorial.ReqSetEmoji + (*ResSetEmoji)(nil), // 197: tutorial.ResSetEmoji + (*ResSevenLogin)(nil), // 198: tutorial.ResSevenLogin + (*SevenLoginReward)(nil), // 199: tutorial.SevenLoginReward + (*ReqGetSevenLoginReward)(nil), // 200: tutorial.ReqGetSevenLoginReward + (*ResGetSevenLoginReward)(nil), // 201: tutorial.ResGetSevenLoginReward + (*ReqGetMonthLoginReward)(nil), // 202: tutorial.ReqGetMonthLoginReward + (*ResGetMonthLoginReward)(nil), // 203: tutorial.ResGetMonthLoginReward + (*ResActivity)(nil), // 204: tutorial.ResActivity + (*ActivityInfo)(nil), // 205: tutorial.ActivityInfo + (*ReqActivityReward)(nil), // 206: tutorial.ReqActivityReward + (*ResActivityReward)(nil), // 207: tutorial.ResActivityReward + (*ReqLimitEvent)(nil), // 208: tutorial.ReqLimitEvent + (*ResLimitEvent)(nil), // 209: tutorial.ResLimitEvent + (*ResLimitEventProgress)(nil), // 210: tutorial.ResLimitEventProgress + (*ReqLimitEventReward)(nil), // 211: tutorial.ReqLimitEventReward + (*ResLimitEventReward)(nil), // 212: tutorial.ResLimitEventReward + (*ReqSelectLimitEvent)(nil), // 213: tutorial.ReqSelectLimitEvent + (*ResSelectLimitEvent)(nil), // 214: tutorial.ResSelectLimitEvent + (*LimitEvent)(nil), // 215: tutorial.LimitEvent + (*LimitEventNotify)(nil), // 216: tutorial.LimitEventNotify + (*ReqLimitEventLuckyCat)(nil), // 217: tutorial.ReqLimitEventLuckyCat + (*ResLimitEventLuckyCat)(nil), // 218: tutorial.ResLimitEventLuckyCat + (*ReqLimitSenceReward)(nil), // 219: tutorial.ReqLimitSenceReward + (*ResLimitSenceReward)(nil), // 220: tutorial.ResLimitSenceReward + (*ResChessRainReward)(nil), // 221: tutorial.ResChessRainReward + (*ReqFastProduceInfo)(nil), // 222: tutorial.ReqFastProduceInfo + (*ResFastProduceInfo)(nil), // 223: tutorial.ResFastProduceInfo + (*ReqFastProduceReward)(nil), // 224: tutorial.ReqFastProduceReward + (*ResFastProduceReward)(nil), // 225: tutorial.ResFastProduceReward + (*ReqCatTrickReward)(nil), // 226: tutorial.ReqCatTrickReward + (*ResCatTrickReward)(nil), // 227: tutorial.ResCatTrickReward + (*ReqSearchPlayer)(nil), // 228: tutorial.ReqSearchPlayer + (*ResSearchPlayer)(nil), // 229: tutorial.ResSearchPlayer + (*ReqFriendPlayerSimple)(nil), // 230: tutorial.ReqFriendPlayerSimple + (*ResFriendPlayerSimple)(nil), // 231: tutorial.ResFriendPlayerSimple + (*ResPlayerSimple)(nil), // 232: tutorial.ResPlayerSimple + (*ActLog)(nil), // 233: tutorial.ActLog + (*ResPlayerRank)(nil), // 234: tutorial.ResPlayerRank + (*ResFriendLog)(nil), // 235: tutorial.ResFriendLog + (*NotifyFriendLog)(nil), // 236: tutorial.NotifyFriendLog + (*FriendBubbleInfo)(nil), // 237: tutorial.FriendBubbleInfo + (*NotifyFriendCard)(nil), // 238: tutorial.NotifyFriendCard + (*ResFriendCard)(nil), // 239: tutorial.ResFriendCard + (*ReqKv)(nil), // 240: tutorial.ReqKv + (*ResKv)(nil), // 241: tutorial.ResKv + (*ReqFriendByCode)(nil), // 242: tutorial.ReqFriendByCode + (*ResFriendByCode)(nil), // 243: tutorial.ResFriendByCode + (*ReqFriendRecommend)(nil), // 244: tutorial.ReqFriendRecommend + (*ResFriendRecommend)(nil), // 245: tutorial.ResFriendRecommend + (*ReqFriendIgnore)(nil), // 246: tutorial.ReqFriendIgnore + (*ResFriendIgnore)(nil), // 247: tutorial.ResFriendIgnore + (*ReqFriendList)(nil), // 248: tutorial.ReqFriendList + (*ResFriendList)(nil), // 249: tutorial.ResFriendList + (*ReqAddNpc)(nil), // 250: tutorial.ReqAddNpc + (*ResAddNpc)(nil), // 251: tutorial.ResAddNpc + (*ReqFriendApply)(nil), // 252: tutorial.ReqFriendApply + (*ResFriendApply)(nil), // 253: tutorial.ResFriendApply + (*ResFriendApplyInfo)(nil), // 254: tutorial.ResFriendApplyInfo + (*ReqFriendCardMsg)(nil), // 255: tutorial.ReqFriendCardMsg + (*ResFriendCardMsg)(nil), // 256: tutorial.ResFriendCardMsg + (*ReqWishApplyList)(nil), // 257: tutorial.ReqWishApplyList + (*ResWishApplyList)(nil), // 258: tutorial.ResWishApplyList + (*ReqWishApply)(nil), // 259: tutorial.ReqWishApply + (*ResWishApply)(nil), // 260: tutorial.ResWishApply + (*ReqFriendTimeLine)(nil), // 261: tutorial.ReqFriendTimeLine + (*ResFriendTimeLine)(nil), // 262: tutorial.ResFriendTimeLine + (*ResFriendReply)(nil), // 263: tutorial.ResFriendReply + (*ReqFriendReplyHandle)(nil), // 264: tutorial.ReqFriendReplyHandle + (*ResFriendReplyHandle)(nil), // 265: tutorial.ResFriendReplyHandle + (*ResFriendBubble)(nil), // 266: tutorial.ResFriendBubble + (*ReqFriendTLUpvote)(nil), // 267: tutorial.ReqFriendTLUpvote + (*ResFriendTLUpvote)(nil), // 268: tutorial.ResFriendTLUpvote + (*ReqFriendTReward)(nil), // 269: tutorial.ReqFriendTReward + (*ResFriendTReward)(nil), // 270: tutorial.ResFriendTReward + (*ResFriendApplyNotify)(nil), // 271: tutorial.ResFriendApplyNotify + (*ReqApplyFriend)(nil), // 272: tutorial.ReqApplyFriend + (*ResApplyFriend)(nil), // 273: tutorial.ResApplyFriend + (*ReqAgreeFriend)(nil), // 274: tutorial.ReqAgreeFriend + (*ResAgreeFriend)(nil), // 275: tutorial.ResAgreeFriend + (*ReqRefuseFriend)(nil), // 276: tutorial.ReqRefuseFriend + (*ResRefuseFriend)(nil), // 277: tutorial.ResRefuseFriend + (*ReqDelFriend)(nil), // 278: tutorial.ReqDelFriend + (*ResDelFriend)(nil), // 279: tutorial.ResDelFriend + (*ReqRank)(nil), // 280: tutorial.ReqRank + (*ResRank)(nil), // 281: tutorial.ResRank + (*ReqMailList)(nil), // 282: tutorial.ReqMailList + (*ResMailList)(nil), // 283: tutorial.ResMailList + (*MailInfo)(nil), // 284: tutorial.MailInfo + (*MailNotify)(nil), // 285: tutorial.MailNotify + (*ReqReadMail)(nil), // 286: tutorial.ReqReadMail + (*ResReadMail)(nil), // 287: tutorial.ResReadMail + (*ReqGetMailReward)(nil), // 288: tutorial.ReqGetMailReward + (*ResGetMailReward)(nil), // 289: tutorial.ResGetMailReward + (*ReqDeleteMail)(nil), // 290: tutorial.ReqDeleteMail + (*ResDeleteMail)(nil), // 291: tutorial.ResDeleteMail + (*ResCharge)(nil), // 292: tutorial.ResCharge + (*LogoutPetWork)(nil), // 293: tutorial.LogoutPetWork + (*WeeklyDiscountInfo)(nil), // 294: tutorial.WeeklyDiscountInfo + (*WishList)(nil), // 295: tutorial.WishList + (*ReqAddWish)(nil), // 296: tutorial.ReqAddWish + (*ResAddWish)(nil), // 297: tutorial.ResAddWish + (*ReqGetWish)(nil), // 298: tutorial.ReqGetWish + (*ResGetWish)(nil), // 299: tutorial.ResGetWish + (*ReqSendWishBeg)(nil), // 300: tutorial.ReqSendWishBeg + (*ResSendWishBeg)(nil), // 301: tutorial.ResSendWishBeg + (*ResSpecialShop)(nil), // 302: tutorial.ResSpecialShop + (*ResChessShop)(nil), // 303: tutorial.ResChessShop + (*ReqFreeShop)(nil), // 304: tutorial.ReqFreeShop + (*ResFreeShop)(nil), // 305: tutorial.ResFreeShop + (*ReqBuyChessShop)(nil), // 306: tutorial.ReqBuyChessShop + (*ResBuyChessShop)(nil), // 307: tutorial.ResBuyChessShop + (*ReqBuyChessShop2)(nil), // 308: tutorial.ReqBuyChessShop2 + (*ResBuyChessShop2)(nil), // 309: tutorial.ResBuyChessShop2 + (*ReqRefreshChessShop)(nil), // 310: tutorial.ReqRefreshChessShop + (*ResRefreshChessShop)(nil), // 311: tutorial.ResRefreshChessShop + (*ReqEndless)(nil), // 312: tutorial.ReqEndless + (*ResEndless)(nil), // 313: tutorial.ResEndless + (*ResEndlessInfo)(nil), // 314: tutorial.ResEndlessInfo + (*ReqEndlessReward)(nil), // 315: tutorial.ReqEndlessReward + (*ResEndlessReward)(nil), // 316: tutorial.ResEndlessReward + (*ResPiggyBank)(nil), // 317: tutorial.ResPiggyBank + (*ReqPiggyBankReward)(nil), // 318: tutorial.ReqPiggyBankReward + (*ResPiggyBankReward)(nil), // 319: tutorial.ResPiggyBankReward + (*ReqChargeReceive)(nil), // 320: tutorial.ReqChargeReceive + (*ResChargeReceive)(nil), // 321: tutorial.ResChargeReceive + (*ReqCreateOrderSn)(nil), // 322: tutorial.ReqCreateOrderSn + (*ResCreateOrderSn)(nil), // 323: tutorial.ResCreateOrderSn + (*ReqShippingOrder)(nil), // 324: tutorial.ReqShippingOrder + (*ResShippingOrder)(nil), // 325: tutorial.ResShippingOrder + (*ReqChampship)(nil), // 326: tutorial.ReqChampship + (*ResChampship)(nil), // 327: tutorial.ResChampship + (*ReqChampshipReward)(nil), // 328: tutorial.ReqChampshipReward + (*ResChampshipReward)(nil), // 329: tutorial.ResChampshipReward + (*ReqChampshipRankReward)(nil), // 330: tutorial.ReqChampshipRankReward + (*ResChampshipRankReward)(nil), // 331: tutorial.ResChampshipRankReward + (*ReqChampshipRank)(nil), // 332: tutorial.ReqChampshipRank + (*ResChampshipRank)(nil), // 333: tutorial.ResChampshipRank + (*ReqChampshipPreRank)(nil), // 334: tutorial.ReqChampshipPreRank + (*ResChampshipPreRank)(nil), // 335: tutorial.ResChampshipPreRank + (*ResNotifyCard)(nil), // 336: tutorial.ResNotifyCard + (*ReqSetFacebookUrl)(nil), // 337: tutorial.ReqSetFacebookUrl + (*ResSetFacebookUrl)(nil), // 338: tutorial.ResSetFacebookUrl + (*ReqInviteFriendData)(nil), // 339: tutorial.ReqInviteFriendData + (*ResInviteFriendData)(nil), // 340: tutorial.ResInviteFriendData + (*ReqSelfInvited)(nil), // 341: tutorial.ReqSelfInvited + (*ResSelfInvited)(nil), // 342: tutorial.ResSelfInvited + (*NotifyInvitedSuccess)(nil), // 343: tutorial.NotifyInvitedSuccess + (*ReqGetInviteReward)(nil), // 344: tutorial.ReqGetInviteReward + (*ResGetInviteReward)(nil), // 345: tutorial.ResGetInviteReward + (*ReqAutoAddInviteFriend)(nil), // 346: tutorial.ReqAutoAddInviteFriend + (*ResAutoAddInviteFriend)(nil), // 347: tutorial.ResAutoAddInviteFriend + (*ReqAutoAddInviteFriend2)(nil), // 348: tutorial.ReqAutoAddInviteFriend2 + (*ResAutoAddInviteFriend2)(nil), // 349: tutorial.ResAutoAddInviteFriend2 + (*ReqMining)(nil), // 350: tutorial.ReqMining + (*ResMining)(nil), // 351: tutorial.ResMining + (*ReqMiningTake)(nil), // 352: tutorial.ReqMiningTake + (*ResMiningTake)(nil), // 353: tutorial.ResMiningTake + (*ReqMiningReward)(nil), // 354: tutorial.ReqMiningReward + (*ResMiningReward)(nil), // 355: tutorial.ResMiningReward + (*ReqActPass)(nil), // 356: tutorial.ReqActPass + (*ResActPass)(nil), // 357: tutorial.ResActPass + (*ReqActPassReward)(nil), // 358: tutorial.ReqActPassReward + (*ResActPassReward)(nil), // 359: tutorial.ResActPassReward + (*ResActRed)(nil), // 360: tutorial.ResActRed + (*NotifyActRed)(nil), // 361: tutorial.NotifyActRed + (*ActivityNotify)(nil), // 362: tutorial.ActivityNotify + (*ResItem)(nil), // 363: tutorial.ResItem + (*ItemNotify)(nil), // 364: tutorial.ItemNotify + (*ReqGuessColor)(nil), // 365: tutorial.ReqGuessColor + (*ResGuessColor)(nil), // 366: tutorial.ResGuessColor + (*Opponent)(nil), // 367: tutorial.opponent + (*ReqGuessColorTake)(nil), // 368: tutorial.ReqGuessColorTake + (*GuessColorInfo)(nil), // 369: tutorial.GuessColorInfo + (*ResGuessColorTake)(nil), // 370: tutorial.ResGuessColorTake + (*ReqGuessColorReward)(nil), // 371: tutorial.ReqGuessColorReward + (*ResGuessColorReward)(nil), // 372: tutorial.ResGuessColorReward + (*ReqRace)(nil), // 373: tutorial.ReqRace + (*ResRace)(nil), // 374: tutorial.ResRace + (*Raceopponent)(nil), // 375: tutorial.raceopponent + (*ReqRaceStart)(nil), // 376: tutorial.ReqRaceStart + (*ResRaceStart)(nil), // 377: tutorial.ResRaceStart + (*ReqRaceReward)(nil), // 378: tutorial.ReqRaceReward + (*ResRaceReward)(nil), // 379: tutorial.ResRaceReward + (*ReqPlayroom)(nil), // 380: tutorial.ReqPlayroom + (*ResPlayroom)(nil), // 381: tutorial.ResPlayroom + (*NotifyPlayroomTask)(nil), // 382: tutorial.NotifyPlayroomTask + (*ReqPlayroomTask)(nil), // 383: tutorial.ReqPlayroomTask + (*ResPlayroomTask)(nil), // 384: tutorial.ResPlayroomTask + (*ReqPlayroomTaskReward)(nil), // 385: tutorial.ReqPlayroomTaskReward + (*ResPlayroomTaskReward)(nil), // 386: tutorial.ResPlayroomTaskReward + (*ReqPlayroomUnlock)(nil), // 387: tutorial.ReqPlayroomUnlock + (*ResPlayroomUnlock)(nil), // 388: tutorial.ResPlayroomUnlock + (*ReqPlayroomUpvote)(nil), // 389: tutorial.ReqPlayroomUpvote + (*ResPlayroomUpvote)(nil), // 390: tutorial.ResPlayroomUpvote + (*PlayroomDress)(nil), // 391: tutorial.PlayroomDress + (*PlayroomDressInfo)(nil), // 392: tutorial.PlayroomDressInfo + (*PlayroomAirInfo)(nil), // 393: tutorial.PlayroomAirInfo + (*PlayroomCollectInfo)(nil), // 394: tutorial.PlayroomCollectInfo + (*ReqPlayroomDressSet)(nil), // 395: tutorial.ReqPlayroomDressSet + (*ResPlayroomDressSet)(nil), // 396: tutorial.ResPlayroomDressSet + (*ReqPlayroomPetAirSet)(nil), // 397: tutorial.ReqPlayroomPetAirSet + (*ResPlayroomPetAirSet)(nil), // 398: tutorial.ResPlayroomPetAirSet + (*ReqPlayroomWrokOutline)(nil), // 399: tutorial.ReqPlayroomWrokOutline + (*ResPlayroomWrokOutline)(nil), // 400: tutorial.ResPlayroomWrokOutline + (*NofiPlayroomStatus)(nil), // 401: tutorial.NofiPlayroomStatus + (*NotifyPlayroomWork)(nil), // 402: tutorial.NotifyPlayroomWork + (*NotifyPlayroomLose)(nil), // 403: tutorial.NotifyPlayroomLose + (*ChipInfo)(nil), // 404: tutorial.ChipInfo + (*NotifyPlayroomMood)(nil), // 405: tutorial.NotifyPlayroomMood + (*AdItem)(nil), // 406: tutorial.AdItem + (*NotifyPlayroomKiss)(nil), // 407: tutorial.NotifyPlayroomKiss + (*FriendRoom)(nil), // 408: tutorial.FriendRoom + (*RoomOpponent)(nil), // 409: tutorial.RoomOpponent + (*ReqPlayroomInfo)(nil), // 410: tutorial.ReqPlayroomInfo + (*ResPlayroomInfo)(nil), // 411: tutorial.ResPlayroomInfo + (*ReqPlayroomFlip)(nil), // 412: tutorial.ReqPlayroomFlip + (*ResPlayroomFlip)(nil), // 413: tutorial.ResPlayroomFlip + (*ReqPlayroomGuide)(nil), // 414: tutorial.ReqPlayroomGuide + (*ResPlayroomGuide)(nil), // 415: tutorial.ResPlayroomGuide + (*ReqPlayroomFlipReward)(nil), // 416: tutorial.ReqPlayroomFlipReward + (*ResPlayroomFlipReward)(nil), // 417: tutorial.ResPlayroomFlipReward + (*ReqPlayroomGame)(nil), // 418: tutorial.ReqPlayroomGame + (*ResPlayroomGame)(nil), // 419: tutorial.ResPlayroomGame + (*ReqPlayroomGameShowReward)(nil), // 420: tutorial.ReqPlayroomGameShowReward + (*ResPlayroomGameShowReward)(nil), // 421: tutorial.ResPlayroomGameShowReward + (*ReqPlayroomInteract)(nil), // 422: tutorial.ReqPlayroomInteract + (*ResPlayroomInteract)(nil), // 423: tutorial.ResPlayroomInteract + (*ReqPlayroomSetRoom)(nil), // 424: tutorial.ReqPlayroomSetRoom + (*ResPlayroomSetRoom)(nil), // 425: tutorial.ResPlayroomSetRoom + (*ReqPlayroomSelectReward)(nil), // 426: tutorial.ReqPlayroomSelectReward + (*ResPlayroomSelectReward)(nil), // 427: tutorial.ResPlayroomSelectReward + (*ReqPlayroomLose)(nil), // 428: tutorial.ReqPlayroomLose + (*ResPlayroomLose)(nil), // 429: tutorial.ResPlayroomLose + (*ReqPlayroomWork)(nil), // 430: tutorial.ReqPlayroomWork + (*ResPlayroomWork)(nil), // 431: tutorial.ResPlayroomWork + (*ReqPlayroomRest)(nil), // 432: tutorial.ReqPlayroomRest + (*ResPlayroomRest)(nil), // 433: tutorial.ResPlayroomRest + (*ReqPlayroomDraw)(nil), // 434: tutorial.ReqPlayroomDraw + (*ResPlayroomDraw)(nil), // 435: tutorial.ResPlayroomDraw + (*ReqPlayroomChip)(nil), // 436: tutorial.ReqPlayroomChip + (*ResPlayroomChip)(nil), // 437: tutorial.ResPlayroomChip + (*ReqPlayroomBuyItem)(nil), // 438: tutorial.ReqPlayroomBuyItem + (*ResPlayroomBuyItem)(nil), // 439: tutorial.ResPlayroomBuyItem + (*ReqPlayroomShop)(nil), // 440: tutorial.ReqPlayroomShop + (*ResPlayroomShop)(nil), // 441: tutorial.ResPlayroomShop + (*ReqFriendTreasure)(nil), // 442: tutorial.ReqFriendTreasure + (*ResFriendTreasure)(nil), // 443: tutorial.ResFriendTreasure + (*TreasureInfo)(nil), // 444: tutorial.TreasureInfo + (*ReqFriendTreasureStart)(nil), // 445: tutorial.ReqFriendTreasureStart + (*ResFriendTreasureStart)(nil), // 446: tutorial.ResFriendTreasureStart + (*ReqFriendTreasureEnd)(nil), // 447: tutorial.ReqFriendTreasureEnd + (*ResFriendTreasureEnd)(nil), // 448: tutorial.ResFriendTreasureEnd + (*ReqFriendTreasureFilp)(nil), // 449: tutorial.ReqFriendTreasureFilp + (*ResFriendTreasureFilp)(nil), // 450: tutorial.ResFriendTreasureFilp + (*ResFriendTreasureStar)(nil), // 451: tutorial.ResFriendTreasureStar + (*ReqKafkaLog)(nil), // 452: tutorial.ReqKafkaLog + (*ReqCollectInfo)(nil), // 453: tutorial.ReqCollectInfo + (*ResCollectInfo)(nil), // 454: tutorial.ResCollectInfo + (*CollectItem)(nil), // 455: tutorial.CollectItem + (*ReqCollect)(nil), // 456: tutorial.ReqCollect + (*ResCollect)(nil), // 457: tutorial.ResCollect + (*ReqCatnip)(nil), // 458: tutorial.ReqCatnip + (*ResCatnip)(nil), // 459: tutorial.ResCatnip + (*CatnipGame)(nil), // 460: tutorial.CatnipGame + (*CatnipInvite)(nil), // 461: tutorial.CatnipInvite + (*ReqCatnipInvite)(nil), // 462: tutorial.ReqCatnipInvite + (*ResCatnipInvite)(nil), // 463: tutorial.ResCatnipInvite + (*ReqCatnipAgree)(nil), // 464: tutorial.ReqCatnipAgree + (*ResCatnipAgree)(nil), // 465: tutorial.ResCatnipAgree + (*ReqCatnipRefuse)(nil), // 466: tutorial.ReqCatnipRefuse + (*ResCatnipRefuse)(nil), // 467: tutorial.ResCatnipRefuse + (*ReqCatnipMultiply)(nil), // 468: tutorial.ReqCatnipMultiply + (*ResCatnipMultiply)(nil), // 469: tutorial.ResCatnipMultiply + (*ReqCatnipPlay)(nil), // 470: tutorial.ReqCatnipPlay + (*ResCatnipPlay)(nil), // 471: tutorial.ResCatnipPlay + (*ReqCatnipReward)(nil), // 472: tutorial.ReqCatnipReward + (*ResCatnipReward)(nil), // 473: tutorial.ResCatnipReward + (*ReqCatnipGrandReward)(nil), // 474: tutorial.ReqCatnipGrandReward + (*ResCatnipGrandReward)(nil), // 475: tutorial.ResCatnipGrandReward + (*ReqCatnipEmoji)(nil), // 476: tutorial.ReqCatnipEmoji + (*ResCatnipEmoji)(nil), // 477: tutorial.ResCatnipEmoji + (*AdminReq)(nil), // 478: tutorial.AdminReq + (*AdminRes)(nil), // 479: tutorial.AdminRes + (*ReqAdminInfo)(nil), // 480: tutorial.ReqAdminInfo + (*ReqReloadServerMail)(nil), // 481: tutorial.ReqReloadServerMail + (*ReqServerInfo)(nil), // 482: tutorial.ReqServerInfo + (*ReqReload)(nil), // 483: tutorial.ReqReload + (*ReqAdminGm)(nil), // 484: tutorial.ReqAdminGm + (*ReqAdminBan)(nil), // 485: tutorial.ReqAdminBan + (*ReqAdminShipping)(nil), // 486: tutorial.ReqAdminShipping + nil, // 487: tutorial.ResChessColorData.MChessColorDataEntry + nil, // 488: tutorial.UpdateBaseItemInfo.MUpdateItemEntry + nil, // 489: tutorial.ResPlayerChessData.MChessDataEntry + nil, // 490: tutorial.ReqPutPartInBag.MChessDataEntry + nil, // 491: tutorial.UpdatePlayerChessData.MChessDataEntry + nil, // 492: tutorial.ReqSeparateChess.MChessDataEntry + nil, // 493: tutorial.ReqUpgradeChess.MChessDataEntry + nil, // 494: tutorial.ReqGetChessFromBuff.MChessDataEntry + nil, // 495: tutorial.ReqChessEx.MChessDataEntry + nil, // 496: tutorial.ReqSourceChest.MChessDataEntry + nil, // 497: tutorial.ReqPlayroomOutline.MChessDataEntry + nil, // 498: tutorial.ReqPutChessInBag.MChessDataEntry + nil, // 499: tutorial.ReqTakeChessOutBag.MChessDataEntry + nil, // 500: tutorial.ResPlayerBriefProfileData.SetEmojiEntry + nil, // 501: tutorial.UserInfo.SetEmojiEntry + nil, // 502: tutorial.ReqRewardOrder.MChessDataEntry + nil, // 503: tutorial.ResCardInfo.AllCardEntry + nil, // 504: tutorial.ResCardInfo.HandbookEntry + nil, // 505: tutorial.ResGuildInfo.RewardEntry + nil, // 506: tutorial.ResGuideInfo.RewardEntry + nil, // 507: tutorial.ResGuideTask.TaskEntry + nil, // 508: tutorial.ResDailyTask.WeekRewardEntry + nil, // 509: tutorial.ResDailyTask.DailyTaskEntry + nil, // 510: tutorial.ResLimitEvent.LimitEventListEntry + nil, // 511: tutorial.ResLimitEventProgress.ProgressRewardEntry + nil, // 512: tutorial.LimitEvent.ParamEntry + nil, // 513: tutorial.ReqLimitEventLuckyCat.MChessDataEntry + nil, // 514: tutorial.ResFriendPlayerSimple.EmojiEntry + nil, // 515: tutorial.ResFriendPlayerSimple.PlayroomEntry + nil, // 516: tutorial.ResFriendPlayerSimple.DressSetEntry + nil, // 517: tutorial.ResFriendPlayerSimple.PhysiologyEntry + nil, // 518: tutorial.ResPlayerSimple.EmojiEntry + nil, // 519: tutorial.ResKv.KvEntry + nil, // 520: tutorial.ResRank.RankListEntry + nil, // 521: tutorial.ResMailList.MailListEntry + nil, // 522: tutorial.ResCharge.SpecialShopEntry + nil, // 523: tutorial.ResCharge.ChessShopEntry + nil, // 524: tutorial.ResCharge.GiftEntry + nil, // 525: tutorial.ResCharge.WeeklyDiscountEntry + nil, // 526: tutorial.ReqBuyChessShop2.MChessDataEntry + nil, // 527: tutorial.ResEndless.EndlessListEntry + nil, // 528: tutorial.ResChampshipRank.RankListEntry + nil, // 529: tutorial.ResChampshipPreRank.RankListEntry + nil, // 530: tutorial.ResNotifyCard.CardEntry + nil, // 531: tutorial.ResNotifyCard.MasterEntry + nil, // 532: tutorial.ResNotifyCard.HandbookEntry + nil, // 533: tutorial.ResMining.MapEntry + nil, // 534: tutorial.ReqMiningTake.MapEntry + nil, // 535: tutorial.ResActRed.RedEntry + nil, // 536: tutorial.ResItem.ItemEntry + nil, // 537: tutorial.ItemNotify.ItemEntry + nil, // 538: tutorial.ResGuessColor.OMapEntry + nil, // 539: tutorial.ReqGuessColorTake.OMapEntry + nil, // 540: tutorial.GuessColorInfo.MapEntry + nil, // 541: tutorial.ResPlayroom.PlayroomEntry + nil, // 542: tutorial.ResPlayroom.MoodEntry + nil, // 543: tutorial.ResPlayroom.PhysiologyEntry + nil, // 544: tutorial.ResPlayroom.DressEntry + nil, // 545: tutorial.ResPlayroom.DressSetEntry + nil, // 546: tutorial.ResPlayroom.WeeklyDiscountEntry + nil, // 547: tutorial.ReqPlayroomDressSet.DressSetEntry + nil, // 548: tutorial.NotifyPlayroomMood.MoodEntry + nil, // 549: tutorial.NotifyPlayroomMood.PhysiologyEntry + nil, // 550: tutorial.ResPlayroomInfo.PlayroomEntry + nil, // 551: tutorial.ResPlayroomInfo.ItemsEntry + nil, // 552: tutorial.ResPlayroomInfo.FlipEntry + nil, // 553: tutorial.ResPlayroomInfo.EmojiEntry + nil, // 554: tutorial.ResPlayroomInfo.DressSetEntry + nil, // 555: tutorial.ResPlayroomGame.ItemsEntry + nil, // 556: tutorial.ReqPlayroomSetRoom.PlayroomEntry } var file_proto_Gameapi_proto_depIdxs = []int32{ - 486, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry + 487, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry 6, // 1: tutorial.ReqLogin.type:type_name -> tutorial.LOGIN_TYPE 2, // 2: tutorial.ResId2Verify.ResultCode:type_name -> tutorial.RES_CODE - 487, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry - 488, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry - 72, // 5: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag - 53, // 6: tutorial.ResPlayerChessInfo.PartBag:type_name -> tutorial.PartBag + 488, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry + 489, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry + 73, // 5: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag + 54, // 6: tutorial.ResPlayerChessInfo.PartBag:type_name -> tutorial.PartBag 2, // 7: tutorial.ResGetChessRetireReward.code:type_name -> tutorial.RES_CODE - 54, // 8: tutorial.PartBag.PartBagGrids:type_name -> tutorial.PartBagGrid - 489, // 9: tutorial.ReqPutPartInBag.mChessData:type_name -> tutorial.ReqPutPartInBag.MChessDataEntry + 55, // 8: tutorial.PartBag.PartBagGrids:type_name -> tutorial.PartBagGrid + 490, // 9: tutorial.ReqPutPartInBag.mChessData:type_name -> tutorial.ReqPutPartInBag.MChessDataEntry 2, // 10: tutorial.ResPutPartInBag.code:type_name -> tutorial.RES_CODE 1, // 11: tutorial.ChessHandle.type:type_name -> tutorial.HANDLE_TYPE - 490, // 12: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry - 57, // 13: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle + 491, // 12: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry + 58, // 13: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle 2, // 14: tutorial.ResUpdatePlayerChessData.code:type_name -> tutorial.RES_CODE - 491, // 15: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry + 492, // 15: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry 2, // 16: tutorial.ResSeparateChess.code:type_name -> tutorial.RES_CODE - 492, // 17: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry + 493, // 17: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry 2, // 18: tutorial.ResUpgradeChess.code:type_name -> tutorial.RES_CODE - 493, // 19: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry + 494, // 19: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry 2, // 20: tutorial.ResGetChessFromBuff.code:type_name -> tutorial.RES_CODE 8, // 21: tutorial.ReqChessEx.Type:type_name -> tutorial.CHESS_EX_TYPE - 494, // 22: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry + 495, // 22: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry 2, // 23: tutorial.ResChessEx.code:type_name -> tutorial.RES_CODE - 495, // 24: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry + 496, // 24: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry 2, // 25: tutorial.ResSourceChest.code:type_name -> tutorial.RES_CODE - 496, // 26: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry + 497, // 26: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry 2, // 27: tutorial.ResPlayroomOutline.code:type_name -> tutorial.RES_CODE - 73, // 28: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid - 497, // 29: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry + 74, // 28: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid + 498, // 29: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry 2, // 30: tutorial.ResPutChessInBag.code:type_name -> tutorial.RES_CODE - 498, // 31: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry + 499, // 31: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry 2, // 32: tutorial.ResTakeChessOutBag.code:type_name -> tutorial.RES_CODE 2, // 33: tutorial.ResBuyChessBagGrid.code:type_name -> tutorial.RES_CODE - 499, // 34: tutorial.ResPlayerBriefProfileData.SetEmoji:type_name -> tutorial.ResPlayerBriefProfileData.SetEmojiEntry + 500, // 34: tutorial.ResPlayerBriefProfileData.SetEmoji:type_name -> tutorial.ResPlayerBriefProfileData.SetEmojiEntry 2, // 35: tutorial.ResSetEnergyMul.ResultCode:type_name -> tutorial.RES_CODE 9, // 36: tutorial.ReqLang.Lang:type_name -> tutorial.LANG_TYPE 2, // 37: tutorial.ResLang.ResultCode:type_name -> tutorial.RES_CODE 9, // 38: tutorial.BaseInfo.Lang:type_name -> tutorial.LANG_TYPE - 191, // 39: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo - 187, // 40: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo - 194, // 41: tutorial.UserInfo.EmojiList:type_name -> tutorial.EmojiInfo - 500, // 42: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry + 192, // 39: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo + 188, // 40: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo + 195, // 41: tutorial.UserInfo.EmojiList:type_name -> tutorial.EmojiInfo + 501, // 42: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry 2, // 43: tutorial.ResSetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 44: tutorial.ResSetPetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 45: tutorial.ResBuyEnergy.Code:type_name -> tutorial.RES_CODE 2, // 46: tutorial.ResGetEnergyByAD.Code:type_name -> tutorial.RES_CODE 2, // 47: tutorial.ResGetHandbookReward.Code:type_name -> tutorial.RES_CODE - 101, // 48: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo + 102, // 48: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo 2, // 49: tutorial.ResHandbookAllReward.Code:type_name -> tutorial.RES_CODE - 501, // 50: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry + 502, // 50: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry 2, // 51: tutorial.ResRewardOrder.Code:type_name -> tutorial.RES_CODE 2, // 52: tutorial.ResDelOrder.Code:type_name -> tutorial.RES_CODE - 168, // 53: tutorial.Order.Items:type_name -> tutorial.ItemInfo - 112, // 54: tutorial.ResOrderList.OrderList:type_name -> tutorial.Order - 115, // 55: tutorial.ResDecorateInfo.Parts:type_name -> tutorial.DecoratePart - 168, // 56: tutorial.DecoratePart.Items:type_name -> tutorial.ItemInfo + 169, // 53: tutorial.Order.Items:type_name -> tutorial.ItemInfo + 113, // 54: tutorial.ResOrderList.OrderList:type_name -> tutorial.Order + 116, // 55: tutorial.ResDecorateInfo.Parts:type_name -> tutorial.DecoratePart + 169, // 56: tutorial.DecoratePart.Items:type_name -> tutorial.ItemInfo 2, // 57: tutorial.ResDecorate.Code:type_name -> tutorial.RES_CODE 2, // 58: tutorial.ResDecorateAll.Code:type_name -> tutorial.RES_CODE 2, // 59: tutorial.ResDecorateReward.Code:type_name -> tutorial.RES_CODE - 123, // 60: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card - 502, // 61: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry - 503, // 62: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry + 124, // 60: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card + 503, // 61: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry + 504, // 62: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry 2, // 63: tutorial.ResCardSeasonFirstReward.Code:type_name -> tutorial.RES_CODE 2, // 64: tutorial.ResCardHandbookReward.Code:type_name -> tutorial.RES_CODE 2, // 65: tutorial.ResMasterCard.Code:type_name -> tutorial.RES_CODE @@ -30228,231 +30308,232 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 78: tutorial.ResGetFriendCard.Code:type_name -> tutorial.RES_CODE 2, // 79: tutorial.ResGuideReward.Code:type_name -> tutorial.RES_CODE 2, // 80: tutorial.ResGuidePlayroom.Code:type_name -> tutorial.RES_CODE - 504, // 81: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry - 505, // 82: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry - 168, // 83: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo - 169, // 84: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack - 506, // 85: tutorial.ResGuideTask.Task:type_name -> tutorial.ResGuideTask.TaskEntry - 179, // 86: tutorial.GuideTask.Progress:type_name -> tutorial.QuestProgress + 505, // 81: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry + 506, // 82: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry + 169, // 83: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo + 170, // 84: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack + 507, // 85: tutorial.ResGuideTask.Task:type_name -> tutorial.ResGuideTask.TaskEntry + 180, // 86: tutorial.GuideTask.Progress:type_name -> tutorial.QuestProgress 2, // 87: tutorial.ResGetGuideTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 88: tutorial.ResGetGuideActiveReward.Code:type_name -> tutorial.RES_CODE - 507, // 89: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry - 508, // 90: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry - 168, // 91: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo - 179, // 92: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress - 168, // 93: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo + 508, // 89: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry + 509, // 90: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry + 169, // 91: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo + 180, // 92: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress + 169, // 93: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo 2, // 94: tutorial.ResGetDailyTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 95: tutorial.ResGetDailyWeekReward.Code:type_name -> tutorial.RES_CODE 2, // 96: tutorial.ResDailyUnlock.Code:type_name -> tutorial.RES_CODE - 187, // 97: tutorial.ResFaceInfo.FaceList:type_name -> tutorial.FaceInfo + 188, // 97: tutorial.ResFaceInfo.FaceList:type_name -> tutorial.FaceInfo 2, // 98: tutorial.ResSetFace.Code:type_name -> tutorial.RES_CODE - 191, // 99: tutorial.ResAvatarInfo.AvatarList:type_name -> tutorial.AvatarInfo + 192, // 99: tutorial.ResAvatarInfo.AvatarList:type_name -> tutorial.AvatarInfo 2, // 100: tutorial.ResSetAvatar.Code:type_name -> tutorial.RES_CODE 2, // 101: tutorial.ResSetEmoji.Code:type_name -> tutorial.RES_CODE - 198, // 102: tutorial.ResSevenLogin.WeekReward:type_name -> tutorial.SevenLoginReward - 198, // 103: tutorial.ResSevenLogin.MonthReward:type_name -> tutorial.SevenLoginReward - 168, // 104: tutorial.SevenLoginReward.Item1:type_name -> tutorial.ItemInfo - 168, // 105: tutorial.SevenLoginReward.Item2:type_name -> tutorial.ItemInfo - 168, // 106: tutorial.SevenLoginReward.Item3:type_name -> tutorial.ItemInfo + 199, // 102: tutorial.ResSevenLogin.WeekReward:type_name -> tutorial.SevenLoginReward + 199, // 103: tutorial.ResSevenLogin.MonthReward:type_name -> tutorial.SevenLoginReward + 169, // 104: tutorial.SevenLoginReward.Item1:type_name -> tutorial.ItemInfo + 169, // 105: tutorial.SevenLoginReward.Item2:type_name -> tutorial.ItemInfo + 169, // 106: tutorial.SevenLoginReward.Item3:type_name -> tutorial.ItemInfo 2, // 107: tutorial.ResGetSevenLoginReward.Code:type_name -> tutorial.RES_CODE 2, // 108: tutorial.ResGetMonthLoginReward.Code:type_name -> tutorial.RES_CODE - 204, // 109: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo + 205, // 109: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo 2, // 110: tutorial.ResActivityReward.Code:type_name -> tutorial.RES_CODE - 509, // 111: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry - 510, // 112: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry + 510, // 111: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry + 511, // 112: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry 2, // 113: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE 2, // 114: tutorial.ResSelectLimitEvent.Code:type_name -> tutorial.RES_CODE - 511, // 115: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry - 512, // 116: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry + 512, // 115: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry + 513, // 116: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry 2, // 117: tutorial.ResLimitEventLuckyCat.Code:type_name -> tutorial.RES_CODE 2, // 118: tutorial.ResLimitSenceReward.Code:type_name -> tutorial.RES_CODE - 168, // 119: tutorial.ResChessRainReward.Items:type_name -> tutorial.ItemInfo + 169, // 119: tutorial.ResChessRainReward.Items:type_name -> tutorial.ItemInfo 2, // 120: tutorial.ResFastProduceReward.Code:type_name -> tutorial.RES_CODE 2, // 121: tutorial.ResCatTrickReward.Code:type_name -> tutorial.RES_CODE - 231, // 122: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple - 513, // 123: tutorial.ResFriendPlayerSimple.Emoji:type_name -> tutorial.ResFriendPlayerSimple.EmojiEntry - 514, // 124: tutorial.ResFriendPlayerSimple.Playroom:type_name -> tutorial.ResFriendPlayerSimple.PlayroomEntry - 515, // 125: tutorial.ResFriendPlayerSimple.DressSet:type_name -> tutorial.ResFriendPlayerSimple.DressSetEntry - 232, // 126: tutorial.ResFriendPlayerSimple.Last:type_name -> tutorial.ActLog - 516, // 127: tutorial.ResFriendPlayerSimple.Physiology:type_name -> tutorial.ResFriendPlayerSimple.PhysiologyEntry - 517, // 128: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry - 231, // 129: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple - 234, // 130: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog - 236, // 131: tutorial.NotifyFriendLog.Bubble:type_name -> tutorial.FriendBubbleInfo - 168, // 132: tutorial.FriendBubbleInfo.Items:type_name -> tutorial.ItemInfo - 238, // 133: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard - 518, // 134: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry + 232, // 122: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple + 514, // 123: tutorial.ResFriendPlayerSimple.Emoji:type_name -> tutorial.ResFriendPlayerSimple.EmojiEntry + 515, // 124: tutorial.ResFriendPlayerSimple.Playroom:type_name -> tutorial.ResFriendPlayerSimple.PlayroomEntry + 516, // 125: tutorial.ResFriendPlayerSimple.DressSet:type_name -> tutorial.ResFriendPlayerSimple.DressSetEntry + 233, // 126: tutorial.ResFriendPlayerSimple.Last:type_name -> tutorial.ActLog + 517, // 127: tutorial.ResFriendPlayerSimple.Physiology:type_name -> tutorial.ResFriendPlayerSimple.PhysiologyEntry + 518, // 128: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry + 232, // 129: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple + 235, // 130: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog + 237, // 131: tutorial.NotifyFriendLog.Bubble:type_name -> tutorial.FriendBubbleInfo + 169, // 132: tutorial.FriendBubbleInfo.Items:type_name -> tutorial.ItemInfo + 239, // 133: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard + 519, // 134: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry 2, // 135: tutorial.ResFriendByCode.Code:type_name -> tutorial.RES_CODE - 231, // 136: tutorial.ResFriendByCode.Player:type_name -> tutorial.ResPlayerSimple - 231, // 137: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple + 232, // 136: tutorial.ResFriendByCode.Player:type_name -> tutorial.ResPlayerSimple + 232, // 137: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple 2, // 138: tutorial.ResFriendIgnore.Code:type_name -> tutorial.RES_CODE - 231, // 139: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple + 232, // 139: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple 2, // 140: tutorial.ResAddNpc.Code:type_name -> tutorial.RES_CODE - 253, // 141: tutorial.ResFriendApply.ApplyList:type_name -> tutorial.ResFriendApplyInfo - 231, // 142: tutorial.ResFriendApplyInfo.Player:type_name -> tutorial.ResPlayerSimple - 238, // 143: tutorial.ResFriendCardMsg.MsgList:type_name -> tutorial.ResFriendCard - 253, // 144: tutorial.ResWishApplyList.ApplyList:type_name -> tutorial.ResFriendApplyInfo + 254, // 141: tutorial.ResFriendApply.ApplyList:type_name -> tutorial.ResFriendApplyInfo + 232, // 142: tutorial.ResFriendApplyInfo.Player:type_name -> tutorial.ResPlayerSimple + 239, // 143: tutorial.ResFriendCardMsg.MsgList:type_name -> tutorial.ResFriendCard + 254, // 144: tutorial.ResWishApplyList.ApplyList:type_name -> tutorial.ResFriendApplyInfo 2, // 145: tutorial.ResWishApply.Code:type_name -> tutorial.RES_CODE - 234, // 146: tutorial.ResFriendTimeLine.Log:type_name -> tutorial.ResFriendLog - 262, // 147: tutorial.ResFriendTimeLine.Reply:type_name -> tutorial.ResFriendReply - 231, // 148: tutorial.ResFriendReply.Player:type_name -> tutorial.ResPlayerSimple - 2, // 149: tutorial.ResFriendReplyHandle.Code:type_name -> tutorial.RES_CODE - 236, // 150: tutorial.ResFriendBubble.Bubble:type_name -> tutorial.FriendBubbleInfo - 2, // 151: tutorial.ResFriendTLUpvote.Code:type_name -> tutorial.RES_CODE - 2, // 152: tutorial.ResFriendTReward.Code:type_name -> tutorial.RES_CODE - 231, // 153: tutorial.ResFriendApplyNotify.Player:type_name -> tutorial.ResPlayerSimple - 2, // 154: tutorial.ResApplyFriend.Code:type_name -> tutorial.RES_CODE - 2, // 155: tutorial.ResAgreeFriend.Code:type_name -> tutorial.RES_CODE - 231, // 156: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple - 2, // 157: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE - 2, // 158: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE - 519, // 159: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry - 520, // 160: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry - 168, // 161: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo - 283, // 162: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo - 2, // 163: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE - 2, // 164: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE - 2, // 165: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE - 521, // 166: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry - 522, // 167: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry - 523, // 168: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry - 294, // 169: tutorial.ResCharge.Wish:type_name -> tutorial.WishList - 524, // 170: tutorial.ResCharge.WeeklyDiscount:type_name -> tutorial.ResCharge.WeeklyDiscountEntry - 2, // 171: tutorial.ResAddWish.Code:type_name -> tutorial.RES_CODE - 2, // 172: tutorial.ResGetWish.Code:type_name -> tutorial.RES_CODE - 2, // 173: tutorial.ResSendWishBeg.Code:type_name -> tutorial.RES_CODE - 2, // 174: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE - 2, // 175: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE - 525, // 176: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry - 2, // 177: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE - 2, // 178: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE - 526, // 179: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry - 168, // 180: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo - 2, // 181: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE - 2, // 182: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE - 2, // 183: tutorial.ResChargeReceive.Code:type_name -> tutorial.RES_CODE - 2, // 184: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE - 2, // 185: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE - 2, // 186: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE - 527, // 187: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry - 528, // 188: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry - 529, // 189: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry - 530, // 190: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry - 531, // 191: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry - 2, // 192: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE - 532, // 193: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry - 533, // 194: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry - 2, // 195: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE - 2, // 196: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE - 2, // 197: tutorial.ResActPassReward.Code:type_name -> tutorial.RES_CODE - 534, // 198: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry - 204, // 199: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo - 535, // 200: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry - 536, // 201: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry - 368, // 202: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo - 537, // 203: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry - 366, // 204: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent - 368, // 205: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.GuessColorInfo - 538, // 206: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry - 539, // 207: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry - 2, // 208: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE - 2, // 209: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE - 374, // 210: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent - 2, // 211: tutorial.ResRaceStart.Code:type_name -> tutorial.RES_CODE - 2, // 212: tutorial.ResRaceReward.Code:type_name -> tutorial.RES_CODE - 168, // 213: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo - 408, // 214: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent - 407, // 215: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom - 540, // 216: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry - 393, // 217: tutorial.ResPlayroom.collect:type_name -> tutorial.PlayroomCollectInfo - 541, // 218: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry - 168, // 219: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo - 403, // 220: tutorial.ResPlayroom.Chip:type_name -> tutorial.ChipInfo - 542, // 221: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry - 543, // 222: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry - 544, // 223: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry - 392, // 224: tutorial.ResPlayroom.PetAir:type_name -> tutorial.PlayroomAirInfo - 178, // 225: tutorial.ResPlayroom.DailyTask:type_name -> tutorial.DailyTask - 405, // 226: tutorial.ResPlayroom.AdItem:type_name -> tutorial.AdItem - 407, // 227: tutorial.ResPlayroom.Target:type_name -> tutorial.FriendRoom - 545, // 228: tutorial.ResPlayroom.WeeklyDiscount:type_name -> tutorial.ResPlayroom.WeeklyDiscountEntry - 178, // 229: tutorial.NotifyPlayroomTask.DailyTask:type_name -> tutorial.DailyTask - 2, // 230: tutorial.ResPlayroomTask.Code:type_name -> tutorial.RES_CODE - 2, // 231: tutorial.ResPlayroomTaskReward.Code:type_name -> tutorial.RES_CODE - 2, // 232: tutorial.ResPlayroomUnlock.Code:type_name -> tutorial.RES_CODE - 2, // 233: tutorial.ResPlayroomUpvote.Code:type_name -> tutorial.RES_CODE - 391, // 234: tutorial.PlayroomDress.List:type_name -> tutorial.PlayroomDressInfo - 546, // 235: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry - 2, // 236: tutorial.ResPlayroomDressSet.Code:type_name -> tutorial.RES_CODE - 2, // 237: tutorial.ResPlayroomPetAirSet.Code:type_name -> tutorial.RES_CODE - 2, // 238: tutorial.ResPlayroomWrokOutline.Code:type_name -> tutorial.RES_CODE - 168, // 239: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo - 403, // 240: tutorial.NotifyPlayroomLose.Chip:type_name -> tutorial.ChipInfo - 547, // 241: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry - 548, // 242: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry - 405, // 243: tutorial.NotifyPlayroomMood.AdItem:type_name -> tutorial.AdItem - 549, // 244: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry - 550, // 245: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry - 551, // 246: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry - 552, // 247: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry - 553, // 248: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry - 2, // 249: tutorial.ResPlayroomFlip.Code:type_name -> tutorial.RES_CODE - 2, // 250: tutorial.ResPlayroomGuide.Code:type_name -> tutorial.RES_CODE - 2, // 251: tutorial.ResPlayroomFlipReward.Code:type_name -> tutorial.RES_CODE - 2, // 252: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE - 554, // 253: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry - 168, // 254: tutorial.ResPlayroomGameShowReward.Items:type_name -> tutorial.ItemInfo - 2, // 255: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE - 555, // 256: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry - 2, // 257: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE - 2, // 258: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE - 2, // 259: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE - 2, // 260: tutorial.ResPlayroomWork.Code:type_name -> tutorial.RES_CODE - 2, // 261: tutorial.ResPlayroomRest.Code:type_name -> tutorial.RES_CODE - 2, // 262: tutorial.ResPlayroomDraw.Code:type_name -> tutorial.RES_CODE - 2, // 263: tutorial.ResPlayroomChip.Code:type_name -> tutorial.RES_CODE - 2, // 264: tutorial.ResPlayroomBuyItem.Code:type_name -> tutorial.RES_CODE - 2, // 265: tutorial.ResPlayroomShop.Code:type_name -> tutorial.RES_CODE - 443, // 266: tutorial.ResFriendTreasure.List:type_name -> tutorial.TreasureInfo - 443, // 267: tutorial.ReqFriendTreasureStart.List:type_name -> tutorial.TreasureInfo - 2, // 268: tutorial.ResFriendTreasureStart.Code:type_name -> tutorial.RES_CODE - 2, // 269: tutorial.ResFriendTreasureEnd.Code:type_name -> tutorial.RES_CODE - 2, // 270: tutorial.ResFriendTreasureFilp.Code:type_name -> tutorial.RES_CODE - 454, // 271: tutorial.ResCollectInfo.Items:type_name -> tutorial.CollectItem - 168, // 272: tutorial.CollectItem.Items:type_name -> tutorial.ItemInfo - 2, // 273: tutorial.ResCollect.Code:type_name -> tutorial.RES_CODE - 459, // 274: tutorial.ResCatnip.GameList:type_name -> tutorial.CatnipGame - 460, // 275: tutorial.ResCatnip.FriendList:type_name -> tutorial.CatnipInvite - 231, // 276: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple - 2, // 277: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE - 2, // 278: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE - 2, // 279: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE - 2, // 280: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE - 2, // 281: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE - 2, // 282: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE - 2, // 283: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE - 2, // 284: tutorial.ResCatnipEmoji.Code:type_name -> tutorial.RES_CODE - 171, // 285: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask - 177, // 286: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek - 178, // 287: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask - 214, // 288: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent - 231, // 289: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple - 283, // 290: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo - 301, // 291: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop - 302, // 292: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop - 293, // 293: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 313, // 294: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo - 233, // 295: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 233, // 296: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 390, // 297: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress - 293, // 298: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 168, // 299: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo - 168, // 300: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo - 301, // [301:301] is the sub-list for method output_type - 301, // [301:301] is the sub-list for method input_type - 301, // [301:301] is the sub-list for extension type_name - 301, // [301:301] is the sub-list for extension extendee - 0, // [0:301] is the sub-list for field type_name + 235, // 146: tutorial.ResFriendTimeLine.Log:type_name -> tutorial.ResFriendLog + 263, // 147: tutorial.ResFriendTimeLine.Reply:type_name -> tutorial.ResFriendReply + 232, // 148: tutorial.ResFriendReply.Player:type_name -> tutorial.ResPlayerSimple + 169, // 149: tutorial.ResFriendReply.Items:type_name -> tutorial.ItemInfo + 2, // 150: tutorial.ResFriendReplyHandle.Code:type_name -> tutorial.RES_CODE + 237, // 151: tutorial.ResFriendBubble.Bubble:type_name -> tutorial.FriendBubbleInfo + 2, // 152: tutorial.ResFriendTLUpvote.Code:type_name -> tutorial.RES_CODE + 2, // 153: tutorial.ResFriendTReward.Code:type_name -> tutorial.RES_CODE + 232, // 154: tutorial.ResFriendApplyNotify.Player:type_name -> tutorial.ResPlayerSimple + 2, // 155: tutorial.ResApplyFriend.Code:type_name -> tutorial.RES_CODE + 2, // 156: tutorial.ResAgreeFriend.Code:type_name -> tutorial.RES_CODE + 232, // 157: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple + 2, // 158: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE + 2, // 159: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE + 520, // 160: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry + 521, // 161: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry + 169, // 162: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo + 284, // 163: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo + 2, // 164: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE + 2, // 165: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE + 2, // 166: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE + 522, // 167: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry + 523, // 168: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry + 524, // 169: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry + 295, // 170: tutorial.ResCharge.Wish:type_name -> tutorial.WishList + 525, // 171: tutorial.ResCharge.WeeklyDiscount:type_name -> tutorial.ResCharge.WeeklyDiscountEntry + 2, // 172: tutorial.ResAddWish.Code:type_name -> tutorial.RES_CODE + 2, // 173: tutorial.ResGetWish.Code:type_name -> tutorial.RES_CODE + 2, // 174: tutorial.ResSendWishBeg.Code:type_name -> tutorial.RES_CODE + 2, // 175: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE + 2, // 176: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE + 526, // 177: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry + 2, // 178: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE + 2, // 179: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE + 527, // 180: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry + 169, // 181: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo + 2, // 182: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE + 2, // 183: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE + 2, // 184: tutorial.ResChargeReceive.Code:type_name -> tutorial.RES_CODE + 2, // 185: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE + 2, // 186: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE + 2, // 187: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE + 528, // 188: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry + 529, // 189: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry + 530, // 190: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry + 531, // 191: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry + 532, // 192: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry + 2, // 193: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE + 533, // 194: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry + 534, // 195: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry + 2, // 196: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE + 2, // 197: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE + 2, // 198: tutorial.ResActPassReward.Code:type_name -> tutorial.RES_CODE + 535, // 199: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry + 205, // 200: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo + 536, // 201: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry + 537, // 202: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry + 369, // 203: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo + 538, // 204: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry + 367, // 205: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent + 369, // 206: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.GuessColorInfo + 539, // 207: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry + 540, // 208: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry + 2, // 209: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE + 2, // 210: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE + 375, // 211: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent + 2, // 212: tutorial.ResRaceStart.Code:type_name -> tutorial.RES_CODE + 2, // 213: tutorial.ResRaceReward.Code:type_name -> tutorial.RES_CODE + 169, // 214: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo + 409, // 215: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent + 408, // 216: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom + 541, // 217: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry + 394, // 218: tutorial.ResPlayroom.collect:type_name -> tutorial.PlayroomCollectInfo + 542, // 219: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry + 169, // 220: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo + 404, // 221: tutorial.ResPlayroom.Chip:type_name -> tutorial.ChipInfo + 543, // 222: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry + 544, // 223: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry + 545, // 224: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry + 393, // 225: tutorial.ResPlayroom.PetAir:type_name -> tutorial.PlayroomAirInfo + 179, // 226: tutorial.ResPlayroom.DailyTask:type_name -> tutorial.DailyTask + 406, // 227: tutorial.ResPlayroom.AdItem:type_name -> tutorial.AdItem + 408, // 228: tutorial.ResPlayroom.Target:type_name -> tutorial.FriendRoom + 546, // 229: tutorial.ResPlayroom.WeeklyDiscount:type_name -> tutorial.ResPlayroom.WeeklyDiscountEntry + 179, // 230: tutorial.NotifyPlayroomTask.DailyTask:type_name -> tutorial.DailyTask + 2, // 231: tutorial.ResPlayroomTask.Code:type_name -> tutorial.RES_CODE + 2, // 232: tutorial.ResPlayroomTaskReward.Code:type_name -> tutorial.RES_CODE + 2, // 233: tutorial.ResPlayroomUnlock.Code:type_name -> tutorial.RES_CODE + 2, // 234: tutorial.ResPlayroomUpvote.Code:type_name -> tutorial.RES_CODE + 392, // 235: tutorial.PlayroomDress.List:type_name -> tutorial.PlayroomDressInfo + 547, // 236: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry + 2, // 237: tutorial.ResPlayroomDressSet.Code:type_name -> tutorial.RES_CODE + 2, // 238: tutorial.ResPlayroomPetAirSet.Code:type_name -> tutorial.RES_CODE + 2, // 239: tutorial.ResPlayroomWrokOutline.Code:type_name -> tutorial.RES_CODE + 169, // 240: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo + 404, // 241: tutorial.NotifyPlayroomLose.Chip:type_name -> tutorial.ChipInfo + 548, // 242: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry + 549, // 243: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry + 406, // 244: tutorial.NotifyPlayroomMood.AdItem:type_name -> tutorial.AdItem + 550, // 245: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry + 551, // 246: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry + 552, // 247: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry + 553, // 248: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry + 554, // 249: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry + 2, // 250: tutorial.ResPlayroomFlip.Code:type_name -> tutorial.RES_CODE + 2, // 251: tutorial.ResPlayroomGuide.Code:type_name -> tutorial.RES_CODE + 2, // 252: tutorial.ResPlayroomFlipReward.Code:type_name -> tutorial.RES_CODE + 2, // 253: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE + 555, // 254: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry + 169, // 255: tutorial.ResPlayroomGameShowReward.Items:type_name -> tutorial.ItemInfo + 2, // 256: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE + 556, // 257: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry + 2, // 258: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE + 2, // 259: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE + 2, // 260: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE + 2, // 261: tutorial.ResPlayroomWork.Code:type_name -> tutorial.RES_CODE + 2, // 262: tutorial.ResPlayroomRest.Code:type_name -> tutorial.RES_CODE + 2, // 263: tutorial.ResPlayroomDraw.Code:type_name -> tutorial.RES_CODE + 2, // 264: tutorial.ResPlayroomChip.Code:type_name -> tutorial.RES_CODE + 2, // 265: tutorial.ResPlayroomBuyItem.Code:type_name -> tutorial.RES_CODE + 2, // 266: tutorial.ResPlayroomShop.Code:type_name -> tutorial.RES_CODE + 444, // 267: tutorial.ResFriendTreasure.List:type_name -> tutorial.TreasureInfo + 444, // 268: tutorial.ReqFriendTreasureStart.List:type_name -> tutorial.TreasureInfo + 2, // 269: tutorial.ResFriendTreasureStart.Code:type_name -> tutorial.RES_CODE + 2, // 270: tutorial.ResFriendTreasureEnd.Code:type_name -> tutorial.RES_CODE + 2, // 271: tutorial.ResFriendTreasureFilp.Code:type_name -> tutorial.RES_CODE + 455, // 272: tutorial.ResCollectInfo.Items:type_name -> tutorial.CollectItem + 169, // 273: tutorial.CollectItem.Items:type_name -> tutorial.ItemInfo + 2, // 274: tutorial.ResCollect.Code:type_name -> tutorial.RES_CODE + 460, // 275: tutorial.ResCatnip.GameList:type_name -> tutorial.CatnipGame + 461, // 276: tutorial.ResCatnip.FriendList:type_name -> tutorial.CatnipInvite + 232, // 277: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple + 2, // 278: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE + 2, // 279: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE + 2, // 280: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE + 2, // 281: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE + 2, // 282: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE + 2, // 283: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE + 2, // 284: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE + 2, // 285: tutorial.ResCatnipEmoji.Code:type_name -> tutorial.RES_CODE + 172, // 286: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask + 178, // 287: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 179, // 288: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 215, // 289: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 232, // 290: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 284, // 291: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 302, // 292: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 303, // 293: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 294, // 294: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 314, // 295: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 234, // 296: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 234, // 297: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 391, // 298: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress + 294, // 299: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 169, // 300: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo + 169, // 301: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo + 302, // [302:302] is the sub-list for method output_type + 302, // [302:302] is the sub-list for method input_type + 302, // [302:302] is the sub-list for extension type_name + 302, // [302:302] is the sub-list for extension extendee + 0, // [0:302] is the sub-list for field type_name } func init() { file_proto_Gameapi_proto_init() } @@ -30465,7 +30546,7 @@ func file_proto_Gameapi_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_Gameapi_proto_rawDesc), len(file_proto_Gameapi_proto_rawDesc)), - NumEnums: 12, + NumEnums: 13, NumMessages: 544, NumExtensions: 0, NumServices: 0, From b6915f5073ef1dca3d4258d36fb259cd44e7de0b Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 8 Dec 2025 14:21:22 +0800 Subject: [PATCH 29/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91=E6=95=B0=E6=8D=AE=E5=9F=8B=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/RegisterNetworkFunc.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 74d9ea7d..b6a31ff6 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -5483,8 +5483,7 @@ func ReqCatnipPlay(player *Player, buf []byte) error { }) } player.TeLog("cats_garden_expend_token", map[string]interface{}{ - "Id": int(req.Id), - "Growth": Growth, + "friends_ID": PartnerId, "multiple": CatnipMod.GetMultiple(), "expend_num": ItemCost[0].Num, "get_award": Items, @@ -5525,9 +5524,8 @@ func ReqCatnipReward(player *Player, buf []byte) error { }) return err } - player.TeLog("cats_garden_stage_ewards", map[string]interface{}{ + player.TeLog("cats_garden_stage_reward", map[string]interface{}{ "Id": int(req.Id), - "Progress": int(req.Progress), "friends_ID": GameInfo.Partner, "friends_get_num": GameInfo.PartnerAdd, "user_get_num": GameInfo.Progress - GameInfo.PartnerAdd, @@ -5564,8 +5562,8 @@ func ReqCatnipGrandReward(player *Player, buf []byte) error { }) return err } - player.TeLog("catnip_grand_reward", map[string]interface{}{ - "Items": Items, + player.TeLog("cats_garden_final_reward", map[string]interface{}{ + "get_reward": Items, }) player.CatnipBackData() player.PlayMod.save() From 9080c8870a7419c958327aef1b98a7e2be221b81 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 8 Dec 2025 15:15:55 +0800 Subject: [PATCH 30/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-=20=E8=AE=BE=E7=BD=AEemoji=20?= =?UTF-8?q?=E3=80=81=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + src/server/conf/json.go | 2 +- src/server/game/FriendMgr.go | 1 + src/server/game/PlayerFunc.go | 5 ++ src/server/game/RegisterNetworkFunc.go | 78 +++++++++++++++++++++++++- src/server/game/mod/catnip/Catnip.go | 16 ++++-- src/server/game/mod/msg/Msg.go | 3 +- src/server/test/catnip_test.go | 36 ++++++++++++ src/server/test/conf/server.json | 48 ++++++++++++++++ 9 files changed, 182 insertions(+), 9 deletions(-) create mode 100644 src/server/test/catnip_test.go create mode 100644 src/server/test/conf/server.json diff --git a/.gitignore b/.gitignore index a6745817..66d65180 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,5 @@ src/server/teLog/log.2024-11-28 src/server/logs/ga_log/*.log src/server/goroutine.prof src/server/heap_after.pb.gz +src/server/test/logs/* +src/server/test/teLog/* diff --git a/src/server/conf/json.go b/src/server/conf/json.go index 64bd3ec7..aabca98f 100644 --- a/src/server/conf/json.go +++ b/src/server/conf/json.go @@ -64,7 +64,7 @@ var Server struct { func init() { filePath := "conf/server.json" if len(os.Args) == 2 { - if os.Args[1] != "" { + if os.Args[1] != "" && os.Args[1][0] != '-' { filePath = os.Args[1] } } diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index b571cc37..cde0258d 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -82,6 +82,7 @@ func (f *FriendMgr) Init() { f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_REFUSE, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_GROWTH, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_AGREE_DEL, f.sendToPlayer) + f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_SEND_EMOJI, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_KISS, f.sendToPlayerOnline) f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_GAME, f.sendToPlayer) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 97a8137a..4735f7ae 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -373,6 +373,11 @@ func handle(p *Player, m *msg.Msg) error { FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP_ITEMS, "", m.End, Items) } p.CatnipBackData() + case msg.HANDLE_TYPE_CATNIP_SEND_EMOJI: + CatnipMod := p.PlayMod.getCatnipMod() + EmojiId := GoUtil.Int(m.Extra) + CatnipMod.SetEmoji(m.From, EmojiId) + p.CatnipBackData() case msg.HANDLE_TYPE_FRIEND_GREETING_REPLY: FriendMod := p.PlayMod.getFriendMod() if v, ok := m.Extra.(friend.ReplyInfo); ok { diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index b6a31ff6..9d7fe69d 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -5348,6 +5348,13 @@ func ReqCatnipInvite(player *Player, buf []byte) error { return err } ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } ActivityInfo := GetActivityInfo(player, ActivityId) CatnipMod := player.PlayMod.getCatnipMod() err = CatnipMod.Invite(int(req.Uid), int(req.Id)) @@ -5388,6 +5395,13 @@ func ReqCatnipAgree(player *Player, buf []byte) error { } CatnipMod := player.PlayMod.getCatnipMod() ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } _, err = CatnipMod.Agree(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipAgree{ @@ -5433,6 +5447,14 @@ func ReqCatnipMultiply(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() + ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } err = CatnipMod.Multiply(int(req.Multiply)) if err != nil { player.SendErrClienRes(&msg.ResCatnipMultiply{ @@ -5460,6 +5482,14 @@ func ReqCatnipPlay(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() + ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } Id, Growth, PartnerId, Items, ItemCost, FriendItems, err := CatnipMod.Play(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResCatnipPlay{ @@ -5508,6 +5538,14 @@ func ReqCatnipReward(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() + ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } Items, GameInfo, err := CatnipMod.Reward(int(req.Id), int(req.Progress)) if err != nil { player.SendErrClienRes(&msg.ResCatnipReward{ @@ -5546,6 +5584,14 @@ func ReqCatnipGrandReward(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() + ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } Items, err := CatnipMod.GrandReward() if err != nil { player.SendErrClienRes(&msg.ResCatnipGrandReward{ @@ -5580,6 +5626,14 @@ func ReqCatnipRefuse(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() + ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } err = CatnipMod.Refuse(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipRefuse{ @@ -5770,7 +5824,29 @@ func ReqCatnipEmoji(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - CatnipMod.SetEmoji(int(req.Id), int(req.EmojiId)) + ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + GameInfo := CatnipMod.GetGameInfo(int(req.Id)) + if GameInfo.Partner == 0 { + player.SendErrClienRes(&msg.ResCatnipEmoji{ + Code: msg.RES_CODE_FAIL, + Msg: "no partner", + }) + return fmt.Errorf("no partner") + } + FriendMgrSend(&MsqMod.Msg{ + From: int(player.M_DwUin), + To: GameInfo.Partner, + Type: MsqMod.HANDLE_TYPE_CATNIP_SEND_EMOJI, + Extra: int(req.EmojiId), + }) + player.CatnipBackData() return nil } diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index cd619640..17cdef2e 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -233,15 +233,19 @@ func (c *CatnipMod) GrowthByUid(Uid, Growth int) { } -func (c *CatnipMod) SetEmoji(Id, EmojiId int) { - GameInfo, ok := c.Game[Id] - if !ok { - return // Game does not exist +func (c *CatnipMod) SetEmoji(Uid, EmojiId int) { + for _, v := range c.Game { + if v.Partner == Uid { + v.EmojiId = EmojiId + return + } } - // Here we can set the emoji for the game. This is a placeholder implementation. - GameInfo.EmojiId = EmojiId } func (c *CatnipMod) GetMultiple() int { return c.Mul } + +func (c *CatnipMod) GetGameInfo(Id int) *CatnipGame { + return c.Game[Id] +} diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index 623af111..22415fee 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -110,7 +110,8 @@ const ( HANDLE_TYPE_CHAMPSHIP_LOGIN // 锦标赛登录 HANDLE_TYPE_CHAMPSHIP_RANK_INFO // 锦标赛排名信息 - HANDLE_TYPE_SET_CATNIP_PARTNER + HANDLE_TYPE_SET_CATNIP_PARTNER // 设置猫薄荷伙伴 + HANDLE_TYPE_CATNIP_SEND_EMOJI // 发送猫薄荷表情 ) const ( diff --git a/src/server/test/catnip_test.go b/src/server/test/catnip_test.go new file mode 100644 index 00000000..93b5ee4d --- /dev/null +++ b/src/server/test/catnip_test.go @@ -0,0 +1,36 @@ +package test + +import ( + "testing" + + "google.golang.org/protobuf/proto" + + "server/game" + "server/msg" +) + +func TestCatnipBackData(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("aaa001") + game.G_GameLogicPtr.SetPlayer(p1) + p1.CatnipBackData() +} + +func TestReqCatnipEmoji(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("aaa001") + game.G_GameLogicPtr.SetPlayer(p1) + + req := &msg.ReqCatnipEmoji{ + Id: 1, + EmojiId: 1, + } + data, err := proto.Marshal(req) + if err != nil { + t.Fatalf("proto.Marshal error: %v", err) + } + + if err := game.ReqCatnipEmoji(p1, data); err != nil { + t.Fatalf("ReqCatnipEmoji returned error: %v", err) + } +} diff --git a/src/server/test/conf/server.json b/src/server/test/conf/server.json new file mode 100644 index 00000000..c6779e49 --- /dev/null +++ b/src/server/test/conf/server.json @@ -0,0 +1,48 @@ +{ + "AppID": 1, + "LogLevel": "debug", + "LogPath": "./log", + "TCPAddr": ":3601", + "WSAddr": ":3566", + "MySqlAddr": "127.0.0.1", + "MySqlPort": "3306", + "MySqlUsr": "root", + "MySqlPwd": "IOagNEq3C84c-20CmHEin5iODVc=", + "MaxConnNum": 20000, + "DbName": "Merge_Pet_1", + "HttpPort": ":8081", + "AppPath": "./app", + "TELOGDIR" : "./teLog/", + + "GameName": "Merge_Pet_Local", + + "ServerType":"node", + + "ServerID": 1, + "ServerOpenTime": "2018-01-01 00:00:00", + "ServerName": "Merge_Pet", + "ServerStatus" : 1, + "ServerCenter" : 1, + "GameConfPath": "D:/Github/pet_home_server/src/server/gamedata/config/", + + "ListenAddr":":9001", + "CenterAddr": "pethome.bywaystudios.com:9000", + "RemoteAddr":"host.docker.internal:9001", + + "RedisAddr":"127.0.0.1", + "RedisPort" :"6379", + "RedisPwd" :"", + + "RedisWriteAddr":"127.0.0.1:6379", + "RedisReadAddrs":"127.0.0.1:6379", + "RedisMasterName":"mymaster", + "RedisConnType":"Direct", + + "GoogleVerify":false, + "Partition":3, + "KafkaHost":"kafka-server", + "CountryCode":"004", + "KafkaPort":"9092", + "Version":"1.0.0", + "IdVerify":false +} From baf4914f9b68d4bcb3eee68b4ca35e442ec5473b Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 8 Dec 2025 16:05:57 +0800 Subject: [PATCH 31/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-=E5=8D=8F=E8=AE=AE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/ChargeFunc.go | 98 +++++ src/server/game/FriendFunc.go | 156 ++++++++ .../game/{PlayerFunc.go => MessageHandler.go} | 367 +----------------- src/server/game/PlayerBack.go | 106 +++++ src/server/game/PlayerMsg.go | 24 -- src/server/game/RegisterNetworkFunc.go | 3 + src/server/game/UnitTest.go | 7 + src/server/msg/Gameapi.pb.go | 39 +- 8 files changed, 417 insertions(+), 383 deletions(-) create mode 100644 src/server/game/FriendFunc.go rename src/server/game/{PlayerFunc.go => MessageHandler.go} (79%) delete mode 100644 src/server/game/PlayerMsg.go diff --git a/src/server/game/ChargeFunc.go b/src/server/game/ChargeFunc.go index 4b6cd5e3..d227c923 100644 --- a/src/server/game/ChargeFunc.go +++ b/src/server/game/ChargeFunc.go @@ -1,16 +1,25 @@ package game import ( + "encoding/json" + "fmt" + "os/exec" "server/GoUtil" + "server/MergeConst" + "server/conf" activityCfg "server/conf/activity" + chargeCfg "server/conf/charge" passCfg "server/conf/pass" + "server/db" "server/game/mod/activity" "server/game/mod/item" MsgMod "server/game/mod/msg" "server/game/mod/piggyBank" "server/game/mod/quest" "server/msg" + proto "server/msg" "server/pkg/github.com/name5566/leaf/log" + "strings" ) func Charge(p *Player, ChargeId int) { @@ -177,3 +186,92 @@ func EndlessFire(p *Player, ChargeId int) { p.PlayMod.save() p.PushClientRes(EndlessMod.BackData()) } + +// 创建订单 +func CreateOrderSn(p *Player, req *proto.ReqCreateOrderSn) (string, error) { + Uid := int(p.M_DwUin) + OrderSn := GoUtil.CreateOrderSn(Uid) + + Price, Currency := chargeCfg.GetChargeInfo(int(req.ChargeId)) + Extra := &ChargeExtra{ + Type: int(req.Type), + Uid: req.Uid, + } + ExtraData, _ := json.Marshal(Extra) + err := db.CreateOrderSn(Uid, int(req.ChargeId), OrderSn, req.PlatForm, req.Channel, Price, Currency, string(ExtraData)) + if err != nil { + return "", err + } + return OrderSn, nil +} + +func GoogleVerify(p *Player, OrderSn, ProduceId, Token string) (*db.SqlChargeOrderStruct, error) { + Order, err := db.GetPlayerChargeData(OrderSn) + if err != nil { + return nil, err + } + if Order.PayStatus == MergeConst.ORDER_STATUS_SHIP { + return nil, fmt.Errorf("订单已经发货") + } + if !conf.Server.GoogleVerify { + Order.PayStatus = MergeConst.ORDER_STATUS_PAY + return Order, nil + } + if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE { + return nil, fmt.Errorf("订单已经支付") + } + cmd := exec.Command(conf.Server.AppPath+"/script/verifyOrder", ProduceId, Token) + + // 获取命令的输出 + output, err := cmd.Output() + if err != nil { + return nil, err + } + // 将输出转换为字符串 + outputStr := string(output) + + // 替换单引号为双引号 + outputStr = strings.Replace(outputStr, "'", "\"", -1) + type VerifyData struct { + PurchaseState int `json:"purchaseState"` + DeveloperPayload string `json:"developerPayload"` + OrderId string `json:"orderId"` + ConsumptionState int `json:"consumptionState"` + } + r := &VerifyData{} + err = json.Unmarshal([]byte(outputStr), &r) + if err != nil { + log.Debug("output %s", string(output)) + return nil, err + } + _, err = db.GetPlayerPayChannelOrderId(r.OrderId) + if err == nil { + return nil, fmt.Errorf("订单已支付发货 param: %v", r) + } + // if r.DeveloperPayload != OrderSn { + // return nil, fmt.Errorf("订单号不匹配") + // } + if r.ConsumptionState != 1 { + return nil, fmt.Errorf("订单未消费") + } + Order.PayStatus = MergeConst.ORDER_STATUS_PAY + Order.PayChannelOrderId = r.OrderId + Order.PayTime = GoUtil.Now() + return Order, nil +} + +func CancelOrder(p *Player, OrderSn string) error { + Order, err := db.GetPlayerChargeData(OrderSn) + if err != nil { + return err + } + if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE { + return fmt.Errorf("订单已支付") + } + Order.PayStatus = MergeConst.ORDER_STATUS_CANCEL + err = db.UpdatePlayerChargeData(Order) + if err != nil { + return err + } + return nil +} diff --git a/src/server/game/FriendFunc.go b/src/server/game/FriendFunc.go new file mode 100644 index 00000000..9112e907 --- /dev/null +++ b/src/server/game/FriendFunc.go @@ -0,0 +1,156 @@ +package game + +import ( + "server/GoUtil" + "server/db" + "server/game/mod/msg" + "server/pkg/github.com/name5566/leaf/log" + "sort" +) + +func GetVisitorPlayer(p *Player) int { + PlayroomMod := p.PlayMod.getPlayroomMod() + VisitorList := PlayroomMod.GetVisitor() // 到访用户 + TodayVisitedUsers := PlayroomMod.GetTodayVisitedUsers() // 今日已互动用户 + FriendMod := p.PlayMod.getFriendMod() + type sortData struct { + Uid int + Time int64 + } + PlayerList := make([]sortData, 0) + PlayerList2 := make([]sortData, 0) + Now := GoUtil.Now() + /** + 排除当日玩家已对其发起过交互的用户 + 优先选择24小时内曾经与玩家进行过宠物交互的好友 + 若存在复数对象的情况下,优先选择交互发生时间与当前时间最近的好友 + 若不存在符合条件的用户,则选择24小时内曾经与玩家进行过宠物交互的陌生用户 + 若存在复数对象的情况下,优先选择交互发生时间与当前时间最近的用户 + 若不存在符合条件的用户,则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友 + 若不存在符合条件的用户,则依据以上用户推荐算法,选择一位随机推荐用户,并且在下次触发式订单完成时,不再排除已发起过交互的用户 + */ + for k, v := range VisitorList { + if GoUtil.InArray(k, TodayVisitedUsers) { + continue + } + if v.Time < Now-86400 { + continue + } + if FriendMod.CheckFriend(k) { + PlayerList = append(PlayerList, sortData{k, v.Time}) + } else { + PlayerList2 = append(PlayerList, sortData{k, v.Time}) + } + } + if len(PlayerList) != 0 { + sort.Slice(PlayerList, func(i, j int) bool { + return PlayerList[i].Time < PlayerList[j].Time + }) + return PlayerList[0].Uid + } + if len(PlayerList2) != 0 { + sort.Slice(PlayerList2, func(i, j int) bool { + return PlayerList2[i].Time < PlayerList2[j].Time + }) + return PlayerList2[0].Uid + } + // 若不存在符合条件的用户,则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友 + var recentFriendUid int + var recentLoginTime int64 = 0 + for uid := range FriendMod.GetFriendList() { + if uid == int(p.M_DwUin) { + continue + } + if GoUtil.InArray(uid, TodayVisitedUsers) { + continue + } + ps := G_GameLogicPtr.GetSimplePlayerByUid(uid) + if ps == nil { + continue + } + if GoUtil.Now()-ps.Loginout > 86400 { // 24小时内登录过 + continue + } + if ps.Loginout > recentLoginTime { + recentLoginTime = ps.Loginout + recentFriendUid = uid + } + } + if recentFriendUid != 0 { + return recentFriendUid + } + PlayerList3 := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) + PlayerList4 := make([]int, 0) + for _, v := range PlayerList3 { + if v.Uid == int(p.M_DwUin) { + continue + } + PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) + if PlayerSimpleData.Level < 15 { + continue + } + PlayerList4 = append(PlayerList4, v.Uid) + } + L := GoUtil.RandSliceNum(PlayerList4, 1) + if len(L) == 0 { + return 0 + } + return L[0] +} + +func GetRecommendPlayer(p *Player, Num int) []int { + PlayerList := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) + PlayerList1 := make([]int, 0) + FriendMod := p.PlayMod.getFriendMod() + for _, v := range PlayerList { + if v.Uid == int(p.M_DwUin) { + continue + } + if FriendMod.CheckSendApply(v.Uid) { + continue + } + if FriendMod.CheckFriend(v.Uid) { + continue + } + PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) + if GoUtil.Now()-PlayerSimpleData.Loginout > 86400 { + continue + } + if PlayerSimpleData.Level < 4 { + continue + } + PlayerList1 = append(PlayerList1, v.Uid) + } + if len(PlayerList1) == 0 { + for _, v := range PlayerList { + if v.Uid == int(p.M_DwUin) { + continue + } + PlayerList1 = append(PlayerList1, v.Uid) + } + } + return GoUtil.RandSliceNum(PlayerList1, Num) +} + +func GetUidByFaceBook(Fb string) (int, error) { + sqlStr := "SELECT dwUin FROM t_player_baseinfo WHERE FaceBookId = ?" + type Result struct { + Uid int `db:"dwUin"` + } + R := Result{} + err := db.SqlDb.Get(&R, sqlStr, Fb) + log.Debug("Fb :%s;Uid :%d", Fb, R.Uid) + return R.Uid, err +} + +func NotifyAllFriend(p *Player, m1 *msg.Msg) { + m := m1.Clone() + FriendMod := p.PlayMod.getFriendMod() + for k := range FriendMod.GetFriendList() { + if k == int(p.M_DwUin) { + continue + } + m.To = k + FriendMgrSend(m) + } +} diff --git a/src/server/game/PlayerFunc.go b/src/server/game/MessageHandler.go similarity index 79% rename from src/server/game/PlayerFunc.go rename to src/server/game/MessageHandler.go index 4735f7ae..bff4f05d 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/MessageHandler.go @@ -1,16 +1,11 @@ package game import ( - "encoding/json" "fmt" - "os/exec" "server/GoUtil" - "server/MergeConst" mergeCluster "server/cluster" - "server/conf" cardCfg "server/conf/card" catnipCfg "server/conf/catnip" - chargeCfg "server/conf/charge" decorateCfg "server/conf/decorate" itemCfg "server/conf/item" limitedTimeEventCfg "server/conf/limitedTimeEvent" @@ -19,7 +14,6 @@ import ( orderCfg "server/conf/order" playroomCfg "server/conf/playroom" userCfg "server/conf/user" - "server/db" "server/game/mod/activity" "server/game/mod/card" "server/game/mod/friend" @@ -32,7 +26,6 @@ import ( proto "server/msg" "server/pkg/github.com/name5566/leaf/log" "sort" - "strings" ) // 处理玩家异步请求 @@ -514,103 +507,21 @@ func SyncMailMsg(p *Player) { p.PushClientRes(MailMod.BackData()) } -// 返回好友信息 -func FriendListBackData(p *Player) { - FriendMod := p.PlayMod.getFriendMod() - var fl []*proto.ResPlayerSimple - for k, v := range FriendMod.GetFriendList() { - if k == int(p.M_DwUin) { - continue - } - ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) - if ps != nil { - ps.AddTime = v.AddTime - ps.Interact = FriendMod.GetInteractTime(k) - fl = append(fl, ps) - } - } - ReqFriendList := make([]int64, 0) - for k := range FriendMod.SendApply { - ReqFriendList = append(ReqFriendList, int64(k)) - } - p.PushClientRes(&proto.ResFriendList{ - FriendList: fl, - ReqApplyList: ReqFriendList, - Npc: GoUtil.IntToInt32(FriendMod.GetNpc()), - Sponsor: int32(FriendMod.GetSponsor()), - }) -} - -func FriendApplyBackData(p *Player) { - FriendMod := p.PlayMod.getFriendMod() - var al []*proto.ResFriendApplyInfo - for k, v := range FriendMod.ApplyList { - ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) - if ps != nil { - al = append(al, &proto.ResFriendApplyInfo{ - Player: ps, - Time: int32(v), - }) - } - } - p.PushClientRes(&proto.ResFriendApply{ - ApplyList: al, - }) -} - -func FriendLogBackData(p *Player) { - FriendMod := p.PlayMod.getFriendMod() - var log []*proto.ResFriendLog - for _, v := range FriendMod.Log { - ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) - if ps == nil { - ps = &proto.ResPlayerSimple{ - Uid: int64(v.Uid), - } - } - log = append(log, &proto.ResFriendLog{ - Player: ps, - Type: int32(v.Type), - Time: int32(v.Time), - Param: v.Param, - Id: int32(v.Id), - Upvote: v.Upvote, - }) - } - var reply []*proto.ResFriendReply - for _, v := range FriendMod.ReplyList { - ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) - if ps == nil { - ps = &proto.ResPlayerSimple{ - Uid: int64(v.Uid), - } - } - reply = append(reply, &proto.ResFriendReply{ - Player: ps, - Type: int32(v.Type), - Param: v.Param, - Id: int32(v.Id), - Status: int32(v.Status), - AddTime: v.AddTime, - EndTime: v.EndTime, - }) - } - p.PushClientRes(&proto.ResFriendTimeLine{ - Log: log, - Reply: reply, - }) -} - -func FriendCardBackData(p *Player) { - FriendMod := p.PlayMod.getFriendMod() - var msgList []*proto.ResFriendCard - for _, v := range FriendMod.Card { - m := GetCardInfoMsg(v) - msgList = append(msgList, m) - } - p.PushClientRes(&proto.ResFriendCardMsg{ - MsgList: msgList, +func (p *Player) CatnipGrowthMsg(To, Id, Growth, FriendItems int) error { + ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + FriendMgrSend(&msg.Msg{ + From: int(p.M_DwUin), + To: To, + Type: msg.HANDLE_TYPE_CATNIP_GROWTH, + SendT: GoUtil.Now(), + Extra: CatnipMsg{ + ActivityId: ActivityId, + GameId: Id, + Growth: Growth, + FriendItems: FriendItems, + }, }) + return nil } // 发送消息给玩家 @@ -618,95 +529,6 @@ func ClusterSendMsg(ServerId int, m *msg.Msg) { mergeCluster.SendServerMsg(m, ServerId) } -// 创建订单 -func CreateOrderSn(p *Player, req *proto.ReqCreateOrderSn) (string, error) { - Uid := int(p.M_DwUin) - OrderSn := GoUtil.CreateOrderSn(Uid) - - Price, Currency := chargeCfg.GetChargeInfo(int(req.ChargeId)) - Extra := &ChargeExtra{ - Type: int(req.Type), - Uid: req.Uid, - } - ExtraData, _ := json.Marshal(Extra) - err := db.CreateOrderSn(Uid, int(req.ChargeId), OrderSn, req.PlatForm, req.Channel, Price, Currency, string(ExtraData)) - if err != nil { - return "", err - } - return OrderSn, nil -} - -func GoogleVerify(p *Player, OrderSn, ProduceId, Token string) (*db.SqlChargeOrderStruct, error) { - Order, err := db.GetPlayerChargeData(OrderSn) - if err != nil { - return nil, err - } - if Order.PayStatus == MergeConst.ORDER_STATUS_SHIP { - return nil, fmt.Errorf("订单已经发货") - } - if !conf.Server.GoogleVerify { - Order.PayStatus = MergeConst.ORDER_STATUS_PAY - return Order, nil - } - if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE { - return nil, fmt.Errorf("订单已经支付") - } - cmd := exec.Command(conf.Server.AppPath+"/script/verifyOrder", ProduceId, Token) - - // 获取命令的输出 - output, err := cmd.Output() - if err != nil { - return nil, err - } - // 将输出转换为字符串 - outputStr := string(output) - - // 替换单引号为双引号 - outputStr = strings.Replace(outputStr, "'", "\"", -1) - type VerifyData struct { - PurchaseState int `json:"purchaseState"` - DeveloperPayload string `json:"developerPayload"` - OrderId string `json:"orderId"` - ConsumptionState int `json:"consumptionState"` - } - r := &VerifyData{} - err = json.Unmarshal([]byte(outputStr), &r) - if err != nil { - log.Debug("output %s", string(output)) - return nil, err - } - _, err = db.GetPlayerPayChannelOrderId(r.OrderId) - if err == nil { - return nil, fmt.Errorf("订单已支付发货 param: %v", r) - } - // if r.DeveloperPayload != OrderSn { - // return nil, fmt.Errorf("订单号不匹配") - // } - if r.ConsumptionState != 1 { - return nil, fmt.Errorf("订单未消费") - } - Order.PayStatus = MergeConst.ORDER_STATUS_PAY - Order.PayChannelOrderId = r.OrderId - Order.PayTime = GoUtil.Now() - return Order, nil -} - -func CancelOrder(p *Player, OrderSn string) error { - Order, err := db.GetPlayerChargeData(OrderSn) - if err != nil { - return err - } - if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE { - return fmt.Errorf("订单已支付") - } - Order.PayStatus = MergeConst.ORDER_STATUS_CANCEL - err = db.UpdatePlayerChargeData(Order) - if err != nil { - return err - } - return nil -} - func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard { Uid := 0 if CardInfo.Type == card.TYPE_CARD_SEND { @@ -746,137 +568,6 @@ func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard { } } -func BackChampship(p *Player) { - ChampshipMod := p.PlayMod.getChampshipMod() - MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(int(p.M_DwUin)) - MyPreRank := G_GameLogicPtr.ChampshipMgr.getLastMyRank(int(p.M_DwUin)) - p.PushClientRes(ChampshipMod.BackData(MyRank, MyPreRank)) -} - -func GetVisitorPlayer(p *Player) int { - PlayroomMod := p.PlayMod.getPlayroomMod() - VisitorList := PlayroomMod.GetVisitor() // 到访用户 - TodayVisitedUsers := PlayroomMod.GetTodayVisitedUsers() // 今日已互动用户 - FriendMod := p.PlayMod.getFriendMod() - type sortData struct { - Uid int - Time int64 - } - PlayerList := make([]sortData, 0) - PlayerList2 := make([]sortData, 0) - Now := GoUtil.Now() - /** - 排除当日玩家已对其发起过交互的用户 - 优先选择24小时内曾经与玩家进行过宠物交互的好友 - 若存在复数对象的情况下,优先选择交互发生时间与当前时间最近的好友 - 若不存在符合条件的用户,则选择24小时内曾经与玩家进行过宠物交互的陌生用户 - 若存在复数对象的情况下,优先选择交互发生时间与当前时间最近的用户 - 若不存在符合条件的用户,则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友 - 若不存在符合条件的用户,则依据以上用户推荐算法,选择一位随机推荐用户,并且在下次触发式订单完成时,不再排除已发起过交互的用户 - */ - for k, v := range VisitorList { - if GoUtil.InArray(k, TodayVisitedUsers) { - continue - } - if v.Time < Now-86400 { - continue - } - if FriendMod.CheckFriend(k) { - PlayerList = append(PlayerList, sortData{k, v.Time}) - } else { - PlayerList2 = append(PlayerList, sortData{k, v.Time}) - } - } - if len(PlayerList) != 0 { - sort.Slice(PlayerList, func(i, j int) bool { - return PlayerList[i].Time < PlayerList[j].Time - }) - return PlayerList[0].Uid - } - if len(PlayerList2) != 0 { - sort.Slice(PlayerList2, func(i, j int) bool { - return PlayerList2[i].Time < PlayerList2[j].Time - }) - return PlayerList2[0].Uid - } - // 若不存在符合条件的用户,则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友 - var recentFriendUid int - var recentLoginTime int64 = 0 - for uid := range FriendMod.GetFriendList() { - if uid == int(p.M_DwUin) { - continue - } - if GoUtil.InArray(uid, TodayVisitedUsers) { - continue - } - ps := G_GameLogicPtr.GetSimplePlayerByUid(uid) - if ps == nil { - continue - } - if GoUtil.Now()-ps.Loginout > 86400 { // 24小时内登录过 - continue - } - if ps.Loginout > recentLoginTime { - recentLoginTime = ps.Loginout - recentFriendUid = uid - } - } - if recentFriendUid != 0 { - return recentFriendUid - } - PlayerList3 := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) - PlayerList4 := make([]int, 0) - for _, v := range PlayerList3 { - if v.Uid == int(p.M_DwUin) { - continue - } - PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) - if PlayerSimpleData.Level < 15 { - continue - } - PlayerList4 = append(PlayerList4, v.Uid) - } - L := GoUtil.RandSliceNum(PlayerList4, 1) - if len(L) == 0 { - return 0 - } - return L[0] -} - -func GetRecommendPlayer(p *Player, Num int) []int { - PlayerList := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) - PlayerList1 := make([]int, 0) - FriendMod := p.PlayMod.getFriendMod() - for _, v := range PlayerList { - if v.Uid == int(p.M_DwUin) { - continue - } - if FriendMod.CheckSendApply(v.Uid) { - continue - } - if FriendMod.CheckFriend(v.Uid) { - continue - } - PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) - if GoUtil.Now()-PlayerSimpleData.Loginout > 86400 { - continue - } - if PlayerSimpleData.Level < 4 { - continue - } - PlayerList1 = append(PlayerList1, v.Uid) - } - if len(PlayerList1) == 0 { - for _, v := range PlayerList { - if v.Uid == int(p.M_DwUin) { - continue - } - PlayerList1 = append(PlayerList1, v.Uid) - } - } - return GoUtil.RandSliceNum(PlayerList1, Num) -} - // 发射器退役第一步 不再生成此发射器订单 func EmitRetireTrigger1(p *Player) { ChessMod := p.PlayMod.getChessMod() @@ -973,36 +664,6 @@ func EmitRetireTrigger2(p *Player) { } } -func Benchmark(player *Player) { - ChampshipMod := player.PlayMod.getChampshipMod() - ChampshipMod.AddScore([]int{949, 941, 10}) - player.HandleInChampshipRank() - player.HandleInUserRank() -} - -func GetUidByFaceBook(Fb string) (int, error) { - sqlStr := "SELECT dwUin FROM t_player_baseinfo WHERE FaceBookId = ?" - type Result struct { - Uid int `db:"dwUin"` - } - R := Result{} - err := db.SqlDb.Get(&R, sqlStr, Fb) - log.Debug("Fb :%s;Uid :%d", Fb, R.Uid) - return R.Uid, err -} - -func NotifyAllFriend(p *Player, m1 *msg.Msg) { - m := m1.Clone() - FriendMod := p.PlayMod.getFriendMod() - for k := range FriendMod.GetFriendList() { - if k == int(p.M_DwUin) { - continue - } - m.To = k - FriendMgrSend(m) - } -} - func NotifyChampshipResult(Uid, Rank int) { PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Uid) if PlayerSimpleData == nil { diff --git a/src/server/game/PlayerBack.go b/src/server/game/PlayerBack.go index cdcafad7..06554330 100644 --- a/src/server/game/PlayerBack.go +++ b/src/server/game/PlayerBack.go @@ -294,3 +294,109 @@ func (p *Player) ChargeBackData() { WeeklyEndTime: max(c.WeeklyEndTime, CatDaySaleEndTime), }) } + +func BackChampship(p *Player) { + ChampshipMod := p.PlayMod.getChampshipMod() + MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(int(p.M_DwUin)) + MyPreRank := G_GameLogicPtr.ChampshipMgr.getLastMyRank(int(p.M_DwUin)) + p.PushClientRes(ChampshipMod.BackData(MyRank, MyPreRank)) +} + +// 返回好友信息 +func FriendListBackData(p *Player) { + FriendMod := p.PlayMod.getFriendMod() + var fl []*proto.ResPlayerSimple + for k, v := range FriendMod.GetFriendList() { + if k == int(p.M_DwUin) { + continue + } + ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) + if ps != nil { + ps.AddTime = v.AddTime + ps.Interact = FriendMod.GetInteractTime(k) + fl = append(fl, ps) + } + } + ReqFriendList := make([]int64, 0) + for k := range FriendMod.SendApply { + ReqFriendList = append(ReqFriendList, int64(k)) + } + p.PushClientRes(&proto.ResFriendList{ + FriendList: fl, + ReqApplyList: ReqFriendList, + Npc: GoUtil.IntToInt32(FriendMod.GetNpc()), + Sponsor: int32(FriendMod.GetSponsor()), + }) +} + +func FriendApplyBackData(p *Player) { + FriendMod := p.PlayMod.getFriendMod() + var al []*proto.ResFriendApplyInfo + for k, v := range FriendMod.ApplyList { + ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) + if ps != nil { + al = append(al, &proto.ResFriendApplyInfo{ + Player: ps, + Time: int32(v), + }) + } + } + p.PushClientRes(&proto.ResFriendApply{ + ApplyList: al, + }) +} + +func FriendLogBackData(p *Player) { + FriendMod := p.PlayMod.getFriendMod() + var log []*proto.ResFriendLog + for _, v := range FriendMod.Log { + ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) + if ps == nil { + ps = &proto.ResPlayerSimple{ + Uid: int64(v.Uid), + } + } + log = append(log, &proto.ResFriendLog{ + Player: ps, + Type: int32(v.Type), + Time: int32(v.Time), + Param: v.Param, + Id: int32(v.Id), + Upvote: v.Upvote, + }) + } + var reply []*proto.ResFriendReply + for _, v := range FriendMod.ReplyList { + ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) + if ps == nil { + ps = &proto.ResPlayerSimple{ + Uid: int64(v.Uid), + } + } + reply = append(reply, &proto.ResFriendReply{ + Player: ps, + Type: int32(v.Type), + Param: v.Param, + Id: int32(v.Id), + Status: int32(v.Status), + AddTime: v.AddTime, + EndTime: v.EndTime, + }) + } + p.PushClientRes(&proto.ResFriendTimeLine{ + Log: log, + Reply: reply, + }) +} + +func FriendCardBackData(p *Player) { + FriendMod := p.PlayMod.getFriendMod() + var msgList []*proto.ResFriendCard + for _, v := range FriendMod.Card { + m := GetCardInfoMsg(v) + msgList = append(msgList, m) + } + p.PushClientRes(&proto.ResFriendCardMsg{ + MsgList: msgList, + }) +} diff --git a/src/server/game/PlayerMsg.go b/src/server/game/PlayerMsg.go deleted file mode 100644 index 3d56bf66..00000000 --- a/src/server/game/PlayerMsg.go +++ /dev/null @@ -1,24 +0,0 @@ -package game - -import ( - "server/GoUtil" - "server/game/mod/activity" - "server/game/mod/msg" -) - -func (p *Player) CatnipGrowthMsg(To, Id, Growth, FriendItems int) error { - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) - FriendMgrSend(&msg.Msg{ - From: int(p.M_DwUin), - To: To, - Type: msg.HANDLE_TYPE_CATNIP_GROWTH, - SendT: GoUtil.Now(), - Extra: CatnipMsg{ - ActivityId: ActivityId, - GameId: Id, - Growth: Growth, - FriendItems: FriendItems, - }, - }) - return nil -} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 9d7fe69d..38617e64 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -5383,6 +5383,7 @@ func ReqCatnipInvite(player *Player, buf []byte) error { player.PlayMod.save() player.PushClientRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_SUCCESS, + Uid: req.Uid, }) return nil } @@ -5435,6 +5436,7 @@ func ReqCatnipAgree(player *Player, buf []byte) error { player.PlayMod.save() player.PushClientRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_SUCCESS, + Uid: req.Uid, }) return nil } @@ -5659,6 +5661,7 @@ func ReqCatnipRefuse(player *Player, buf []byte) error { player.PlayMod.save() player.PushClientRes(&msg.ResCatnipRefuse{ Code: msg.RES_CODE_SUCCESS, + Uid: req.Uid, }) return nil } diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 2cf07307..0c0a144e 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -376,3 +376,10 @@ func UnitCatnip(p *Player) error { p.CatnipBackData() return nil } + +func Benchmark(player *Player) { + ChampshipMod := player.PlayMod.getChampshipMod() + ChampshipMod.AddScore([]int{949, 941, 10}) + player.HandleInChampshipRank() + player.HandleInUserRank() +} diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index f93e02be..e6f594dc 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -26230,6 +26230,7 @@ type ResCatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Uid int64 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26278,6 +26279,13 @@ func (x *ResCatnipInvite) GetMsg() string { return "" } +func (x *ResCatnipInvite) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + // 同意邀请 type ReqCatnipAgree struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26335,6 +26343,7 @@ type ResCatnipAgree struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Uid int64 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26383,6 +26392,13 @@ func (x *ResCatnipAgree) GetMsg() string { return "" } +func (x *ResCatnipAgree) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + type ReqCatnipRefuse struct { state protoimpl.MessageState `protogen:"open.v1"` Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 游戏id @@ -26439,6 +26455,7 @@ type ResCatnipRefuse struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Uid int64 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26487,6 +26504,13 @@ func (x *ResCatnipRefuse) GetMsg() string { return "" } +func (x *ResCatnipRefuse) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + // 设置游戏倍数 type ReqCatnipMultiply struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -29353,22 +29377,25 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x04Type\x18\x03 \x01(\x05R\x04Type\"3\n" + "\x0fReqCatnipInvite\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + - "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"K\n" + + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"]\n" + "\x0fResCatnipInvite\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"2\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x10\n" + + "\x03Uid\x18\x03 \x01(\x03R\x03Uid\"2\n" + "\x0eReqCatnipAgree\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + - "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"J\n" + + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"\\\n" + "\x0eResCatnipAgree\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"3\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x10\n" + + "\x03Uid\x18\x03 \x01(\x03R\x03Uid\"3\n" + "\x0fReqCatnipRefuse\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + - "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"K\n" + + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"]\n" + "\x0fResCatnipRefuse\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"/\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x10\n" + + "\x03Uid\x18\x03 \x01(\x03R\x03Uid\"/\n" + "\x11ReqCatnipMultiply\x12\x1a\n" + "\bMultiply\x18\x01 \x01(\x05R\bMultiply\"M\n" + "\x11ResCatnipMultiply\x12&\n" + From efab82709f97400e5a31e6afbba8383031cc814f Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 8 Dec 2025 16:41:39 +0800 Subject: [PATCH 32/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-=E9=82=80=E8=AF=B7=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/ActivityFunc.go | 4 ++ src/server/msg/Gameapi.pb.go | 78 +++++++++++++++++++-------------- 2 files changed, 48 insertions(+), 34 deletions(-) diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index 5c8b5267..dffa8beb 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -370,6 +370,10 @@ func (p *Player) CatnipBackData() { } } for _, v := range tmpData { + ResPlayerSimple := G_getGameLogic().GetResSimplePlayerByUid(int(v.Uid)) + if ResPlayerSimple != nil { + v.Player = ResPlayerSimple + } InviteList = append(InviteList, v) } diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index e6f594dc..4ad2f617 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -26115,9 +26115,10 @@ func (x *CatnipGame) GetFriendProgress() int32 { type CatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` - Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id - Time int64 `protobuf:"varint,2,opt,name=Time,proto3" json:"Time,omitempty"` // 邀请时间 - Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 状态 0 可以邀请,1 已邀请 2 被邀请 3 已满员 + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id + Time int64 `protobuf:"varint,2,opt,name=Time,proto3" json:"Time,omitempty"` // 邀请时间 + Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 状态 0 可以邀请,1 已邀请 2 被邀请 3 已满员 + Player *ResPlayerSimple `protobuf:"bytes,4,opt,name=Player,proto3" json:"Player,omitempty"` // 好友信息 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26173,6 +26174,13 @@ func (x *CatnipInvite) GetType() int32 { return 0 } +func (x *CatnipInvite) GetPlayer() *ResPlayerSimple { + if x != nil { + return x.Player + } + return nil +} + // 邀请好友 type ReqCatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -29370,11 +29378,12 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x06Reward\x18\x04 \x03(\x05R\x06Reward\x123\n" + "\aPartner\x18\x05 \x01(\v2\x19.tutorial.ResPlayerSimpleR\aPartner\x12\x14\n" + "\x05Emoji\x18\x06 \x01(\x05R\x05Emoji\x12&\n" + - "\x0eFriendProgress\x18\a \x01(\x05R\x0eFriendProgress\"H\n" + + "\x0eFriendProgress\x18\a \x01(\x05R\x0eFriendProgress\"{\n" + "\fCatnipInvite\x12\x10\n" + "\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x12\n" + "\x04Time\x18\x02 \x01(\x03R\x04Time\x12\x12\n" + - "\x04Type\x18\x03 \x01(\x05R\x04Type\"3\n" + + "\x04Type\x18\x03 \x01(\x05R\x04Type\x121\n" + + "\x06Player\x18\x04 \x01(\v2\x19.tutorial.ResPlayerSimpleR\x06Player\"3\n" + "\x0fReqCatnipInvite\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"]\n" + @@ -30532,35 +30541,36 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 460, // 275: tutorial.ResCatnip.GameList:type_name -> tutorial.CatnipGame 461, // 276: tutorial.ResCatnip.FriendList:type_name -> tutorial.CatnipInvite 232, // 277: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple - 2, // 278: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE - 2, // 279: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE - 2, // 280: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE - 2, // 281: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE - 2, // 282: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE - 2, // 283: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE - 2, // 284: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE - 2, // 285: tutorial.ResCatnipEmoji.Code:type_name -> tutorial.RES_CODE - 172, // 286: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask - 178, // 287: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek - 179, // 288: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask - 215, // 289: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent - 232, // 290: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple - 284, // 291: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo - 302, // 292: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop - 303, // 293: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop - 294, // 294: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 314, // 295: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo - 234, // 296: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 234, // 297: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 391, // 298: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress - 294, // 299: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 169, // 300: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo - 169, // 301: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo - 302, // [302:302] is the sub-list for method output_type - 302, // [302:302] is the sub-list for method input_type - 302, // [302:302] is the sub-list for extension type_name - 302, // [302:302] is the sub-list for extension extendee - 0, // [0:302] is the sub-list for field type_name + 232, // 278: tutorial.CatnipInvite.Player:type_name -> tutorial.ResPlayerSimple + 2, // 279: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE + 2, // 280: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE + 2, // 281: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE + 2, // 282: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE + 2, // 283: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE + 2, // 284: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE + 2, // 285: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE + 2, // 286: tutorial.ResCatnipEmoji.Code:type_name -> tutorial.RES_CODE + 172, // 287: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask + 178, // 288: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 179, // 289: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 215, // 290: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 232, // 291: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 284, // 292: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 302, // 293: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 303, // 294: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 294, // 295: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 314, // 296: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 234, // 297: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 234, // 298: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 391, // 299: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress + 294, // 300: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 169, // 301: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo + 169, // 302: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo + 303, // [303:303] is the sub-list for method output_type + 303, // [303:303] is the sub-list for method input_type + 303, // [303:303] is the sub-list for extension type_name + 303, // [303:303] is the sub-list for extension extendee + 0, // [0:303] is the sub-list for field type_name } func init() { file_proto_Gameapi_proto_init() } From 8c5f31d7a800f85b7bbe71e310159fbce5b402f7 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 8 Dec 2025 18:23:28 +0800 Subject: [PATCH 33/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-bug=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/RegisterNetworkFunc.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 38617e64..d7d5ceff 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -5506,6 +5506,7 @@ func ReqCatnipPlay(player *Player, buf []byte) error { Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) + return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_CatnipPlay.String()) if err != nil { @@ -5513,6 +5514,7 @@ func ReqCatnipPlay(player *Player, buf []byte) error { Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) + return err } player.TeLog("cats_garden_expend_token", map[string]interface{}{ "friends_ID": PartnerId, From f385a7f5465f11d08f2cad08c43b58060b81f74f Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 8 Dec 2025 19:03:04 +0800 Subject: [PATCH 34/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-bug=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/RegisterNetworkFunc.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index d7d5ceff..1251ef41 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -5349,7 +5349,7 @@ func ReqCatnipInvite(player *Player, buf []byte) error { } ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) if ActivityId == 0 { - player.SendErrClienRes(&msg.ResCatnipPlay{ + player.SendErrClienRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_FAIL, Msg: "activity not active", }) @@ -5397,7 +5397,7 @@ func ReqCatnipAgree(player *Player, buf []byte) error { CatnipMod := player.PlayMod.getCatnipMod() ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) if ActivityId == 0 { - player.SendErrClienRes(&msg.ResCatnipPlay{ + player.SendErrClienRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_FAIL, Msg: "activity not active", }) @@ -5451,7 +5451,7 @@ func ReqCatnipMultiply(player *Player, buf []byte) error { CatnipMod := player.PlayMod.getCatnipMod() ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) if ActivityId == 0 { - player.SendErrClienRes(&msg.ResCatnipPlay{ + player.SendErrClienRes(&msg.ResCatnipMultiply{ Code: msg.RES_CODE_FAIL, Msg: "activity not active", }) @@ -5632,7 +5632,7 @@ func ReqCatnipRefuse(player *Player, buf []byte) error { CatnipMod := player.PlayMod.getCatnipMod() ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) if ActivityId == 0 { - player.SendErrClienRes(&msg.ResCatnipPlay{ + player.SendErrClienRes(&msg.ResCatnipRefuse{ Code: msg.RES_CODE_FAIL, Msg: "activity not active", }) @@ -5831,7 +5831,7 @@ func ReqCatnipEmoji(player *Player, buf []byte) error { CatnipMod := player.PlayMod.getCatnipMod() ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) if ActivityId == 0 { - player.SendErrClienRes(&msg.ResCatnipPlay{ + player.SendErrClienRes(&msg.ResCatnipEmoji{ Code: msg.RES_CODE_FAIL, Msg: "activity not active", }) @@ -5851,6 +5851,9 @@ func ReqCatnipEmoji(player *Player, buf []byte) error { Type: MsqMod.HANDLE_TYPE_CATNIP_SEND_EMOJI, Extra: int(req.EmojiId), }) + player.PushClientRes(&msg.ResCatnipEmoji{ + Code: msg.RES_CODE_SUCCESS, + }) player.CatnipBackData() return nil From eb71e599a23c5843036ffb7098ea55f65597c424 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 8 Dec 2025 19:04:48 +0800 Subject: [PATCH 35/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/RegisterNetworkFunc.go | 4 +++- src/server/msg/Gameapi.pb.go | 22 ++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 1251ef41..1b5a8270 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -5852,7 +5852,9 @@ func ReqCatnipEmoji(player *Player, buf []byte) error { Extra: int(req.EmojiId), }) player.PushClientRes(&msg.ResCatnipEmoji{ - Code: msg.RES_CODE_SUCCESS, + Code: msg.RES_CODE_SUCCESS, + EmojiId: req.EmojiId, + Id: req.Id, }) player.CatnipBackData() diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 4ad2f617..82173191 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -26972,6 +26972,8 @@ type ResCatnipEmoji struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + EmojiId int32 `protobuf:"varint,3,opt,name=EmojiId,proto3" json:"EmojiId,omitempty"` // 表情id + Id int32 `protobuf:"varint,4,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -27020,6 +27022,20 @@ func (x *ResCatnipEmoji) GetMsg() string { return "" } +func (x *ResCatnipEmoji) GetEmojiId() int32 { + if x != nil { + return x.EmojiId + } + return 0 +} + +func (x *ResCatnipEmoji) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + // -------------------后台管理------------------- type AdminReq struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -29428,10 +29444,12 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\":\n" + "\x0eReqCatnipEmoji\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x18\n" + - "\aEmojiId\x18\x02 \x01(\x05R\aEmojiId\"J\n" + + "\aEmojiId\x18\x02 \x01(\x05R\aEmojiId\"t\n" + "\x0eResCatnipEmoji\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"2\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x18\n" + + "\aEmojiId\x18\x03 \x01(\x05R\aEmojiId\x12\x0e\n" + + "\x02Id\x18\x04 \x01(\x05R\x02Id\"2\n" + "\bAdminReq\x12\x12\n" + "\x04Func\x18\x01 \x01(\tR\x04Func\x12\x12\n" + "\x04Info\x18\x02 \x01(\fR\x04Info\"2\n" + From f611eccec95aa27cfb64f30d799fef669a29136e Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 9 Dec 2025 09:59:45 +0800 Subject: [PATCH 36/49] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Type.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Type.go b/src/server/game/Type.go index 4bece5e7..55d416d4 100644 --- a/src/server/game/Type.go +++ b/src/server/game/Type.go @@ -109,6 +109,6 @@ func init() { gob.Register(&ActivityInfo{}) gob.Register(&ChargeExtra{}) gob.Register(&GameResult{}) - gob.Register(&CatnipMsg{}) + gob.Register(CatnipMsg{}) gob.Register(&CatnipLock{}) } From 7a4586b1efe4cd1eca06c9b0f0fb954a1217474a Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 9 Dec 2025 10:50:42 +0800 Subject: [PATCH 37/49] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/ActivityFunc.go | 77 ++++++++++++++------------ src/server/game/ChargeFunc.go | 21 ++++--- src/server/game/Gm.go | 8 +-- src/server/game/LimitedTimeTrigger.go | 4 +- src/server/game/MessageHandler.go | 12 ++-- src/server/game/Player.go | 18 +++--- src/server/game/RegisterNetworkFunc.go | 34 ++++++------ src/server/game/mod/catnip/Catnip.go | 1 + 8 files changed, 90 insertions(+), 85 deletions(-) diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index dffa8beb..54279363 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -18,10 +18,10 @@ import ( ) // 活动模块 登录 -func ActivityLogin(p *Player) { +func (p *Player) ActivityLogin() { ItemMod := p.PlayMod.getItemMod() // 挖矿 - ActivityId := GetActivityId(p, activity.ACT_TYPE_MINING) + ActivityId := p.GetActivityId(activity.ACT_TYPE_MINING) MiningMod := p.PlayMod.getMiningMod() OldId := MiningMod.Login(ActivityId) if OldId != 0 { @@ -29,11 +29,11 @@ func ActivityLogin(p *Player) { ItemNum := ItemMod.GetItem(ItemId) if ItemNum != 0 { ItemMod.AddItem(ItemId, -ItemNum) - SendActivityMail(p, ItemId, ItemNum, ActivityId, nil) + p.SendActivityMail(ItemId, ItemNum, ActivityId, nil) } } // 猜颜色 - ActivityId = GetActivityId(p, activity.ACT_TYPE_GUESS_COLOR) + ActivityId = p.GetActivityId(activity.ACT_TYPE_GUESS_COLOR) GuessColorMod := p.PlayMod.getGuessColorMod() OldId = GuessColorMod.Login(ActivityId) if OldId != 0 { @@ -41,12 +41,12 @@ func ActivityLogin(p *Player) { ItemNum := ItemMod.GetItem(ItemId) if ItemNum != 0 { ItemMod.AddItem(ItemId, -ItemNum) - SendActivityMail(p, ItemId, ItemNum, ActivityId, nil) + p.SendActivityMail(ItemId, ItemNum, ActivityId, nil) } } // 赛跑 - ActivityId = GetActivityId(p, activity.ACT_TYPE_RACE) + ActivityId = p.GetActivityId(activity.ACT_TYPE_RACE) RaceMod := p.PlayMod.getRaceMod() OldId = RaceMod.Login(ActivityId) if OldId != 0 { @@ -54,11 +54,11 @@ func ActivityLogin(p *Player) { ItemNum := ItemMod.GetItem(ItemId) if ItemNum != 0 { ItemMod.AddItem(ItemId, -ItemNum) - SendActivityMail(p, ItemId, ItemNum, ActivityId, nil) + p.SendActivityMail(ItemId, ItemNum, ActivityId, nil) } } // 猫草大作战 - ActivityId = GetActivityId(p, activity.ACT_TYPE_CATNIP) + ActivityId = p.GetActivityId(activity.ACT_TYPE_CATNIP) CatnipMod := p.PlayMod.getCatnipMod() OldId = CatnipMod.Login(ActivityId) if OldId != 0 { @@ -66,7 +66,7 @@ func ActivityLogin(p *Player) { } // 通行证 - ActivityId = GetActivityId(p, activity.ACT_TYPE_PASS) + ActivityId = p.GetActivityId(activity.ACT_TYPE_PASS) PassMod := p.PlayMod.getPassMod() OldId = PassMod.Login(ActivityId) if OldId != 0 { @@ -75,12 +75,13 @@ func ActivityLogin(p *Player) { RewardItems, _ := PassMod.GetRewardItems() if ItemNum != 0 { ItemMod.AddItem(ItemId, -ItemNum) - SendActivityMail(p, ItemId, ItemNum, ActivityId, RewardItems) + p.SendActivityMail(ItemId, ItemNum, ActivityId, RewardItems) } } } -func SendActivityMail(p *Player, ItemId, ItemNum, ActivityId int, RewardItems []*item.Item) { +// 发送活动邮件 +func (p *Player) SendActivityMail(ItemId, ItemNum, ActivityId int, RewardItems []*item.Item) { MailMod := p.PlayMod.getMailMod() ItemName, ItemNameEn := itemCfg.GetItemName(ItemId) ActivityTitle, ActivityTitleEn := activityCfg.GetActivityTitle(ActivityId) @@ -91,36 +92,37 @@ func SendActivityMail(p *Player, ItemId, ItemNum, ActivityId int, RewardItems [] } // 活动模块 零点更新 -func ActivityZeroUpdate(p *Player) { - ActivityLogin(p) - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_MINING) +func (p *Player) ActivityZeroUpdate() { + p.ActivityLogin() + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_MINING) if ActivityInfo != nil { MiningMod := p.PlayMod.getMiningMod() MiningMod.ZeroUpdate(ActivityInfo.Id) } - ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_GUESS_COLOR) + ActivityInfo = p.GetActivityInfo(activity.ACT_TYPE_GUESS_COLOR) if ActivityInfo != nil { GuessColorMod := p.PlayMod.getGuessColorMod() GuessColorMod.ZeroUpdate(ActivityInfo.Id) } - ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_RACE) + ActivityInfo = p.GetActivityInfo(activity.ACT_TYPE_RACE) if ActivityInfo != nil { RaceMod := p.PlayMod.getRaceMod() RaceMod.ZeroUpdate(ActivityInfo.Id) } - ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_PASS) + ActivityInfo = p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo != nil { PassMod := p.PlayMod.getPassMod() PassMod.ZeroUpdate(ActivityInfo.Id) } - ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_CATNIP) + ActivityInfo = p.GetActivityInfo(activity.ACT_TYPE_CATNIP) if ActivityInfo != nil { CatnipMod := p.PlayMod.getCatnipMod() CatnipMod.ZeroUpdate(ActivityInfo.Id) } } -func GetActivityInfo(p *Player, actType int) *ActivityInfo { +// 获取活动信息 +func (p *Player) GetActivityInfo(actType int) *ActivityInfo { for _, v := range p.activity { if v.Type == actType { return v @@ -129,7 +131,8 @@ func GetActivityInfo(p *Player, actType int) *ActivityInfo { return nil } -func GetActivityId(p *Player, actType int) int { +// 获取活动ID +func (p *Player) GetActivityId(actType int) int { for _, v := range p.activity { if v.Type == actType { return v.Id @@ -138,7 +141,8 @@ func GetActivityId(p *Player, actType int) int { return 0 } -func GetActivityInfoById(p *Player, Id int) *ActivityInfo { +// 根据活动ID获取活动信息 +func (p *Player) GetActivityInfoById(Id int) *ActivityInfo { for _, v := range p.activity { if v.Id == Id { return v @@ -147,8 +151,9 @@ func GetActivityInfoById(p *Player, Id int) *ActivityInfo { return nil } -func GetActivityStatus(p *Player, actType int) int { - ActivityInfo := GetActivityInfo(p, actType) +// 获取活动状态 +func (p *Player) GetActivityStatus(actType int) int { + ActivityInfo := p.GetActivityInfo(actType) if ActivityInfo == nil { return ACT_STATUS_NOT_START } @@ -163,11 +168,11 @@ func GetActivityStatus(p *Player, actType int) int { } func MiningBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_MINING) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_MINING) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, activity.ACT_TYPE_MINING) + Status := p.GetActivityStatus(activity.ACT_TYPE_MINING) Template := miningCfg.GetTemplate(ActivityInfo.Id) MiningMod := p.PlayMod.getMiningMod() p.PushClientRes(&msg.ResMining{ @@ -183,12 +188,12 @@ func MiningBackData(p *Player) { } func GuessColorBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_GUESS_COLOR) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_GUESS_COLOR) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, activity.ACT_TYPE_GUESS_COLOR) + Status := p.GetActivityStatus(activity.ACT_TYPE_GUESS_COLOR) GuessColorMod := p.PlayMod.getGuessColorMod() MapList := make([]*msg.GuessColorInfo, 0) for _, v := range GuessColorMod.MapList { @@ -214,11 +219,11 @@ func GuessColorBackData(p *Player) { } func RaceBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_RACE) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_RACE) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, activity.ACT_TYPE_RACE) + Status := p.GetActivityStatus(activity.ACT_TYPE_RACE) RaceMod := p.PlayMod.getRaceMod() Opponent := make([]*msg.Raceopponent, 0) for _, v := range RaceMod.Opponent { @@ -255,11 +260,11 @@ func RedBackData(p *Player) { } func ActPassBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, activity.ACT_TYPE_PASS) + Status := p.GetActivityStatus(activity.ACT_TYPE_PASS) Template := passCfg.GetTemplate(ActivityInfo.Id) PassMod := p.PlayMod.getPassMod() p.PushClientRes(&msg.ResActPass{ @@ -277,8 +282,8 @@ func ActPassBackData(p *Player) { func GetActivityItem(p *Player, ActType []int) []*item.Item { Items := make([]*item.Item, 0) for _, v := range ActType { - Status := GetActivityStatus(p, v) - ActivityInfo := GetActivityInfo(p, v) + Status := p.GetActivityStatus(v) + ActivityInfo := p.GetActivityInfo(v) if ActivityInfo == nil { continue } @@ -306,12 +311,12 @@ func GetActivityItem(p *Player, ActType []int) []*item.Item { } func (p *Player) CatnipBackData() { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { return } CatnipMod := p.PlayMod.getCatnipMod() - Status := GetActivityStatus(p, activity.ACT_TYPE_CATNIP) + Status := p.GetActivityStatus(activity.ACT_TYPE_CATNIP) if CatnipMod == nil { return } @@ -391,7 +396,7 @@ func (p *Player) CatnipBackData() { } func (p *Player) SetCatnipGameLock(Uid int, GameId int) error { - ActivityInfo := GetActivityInfoById(p, activity.ACT_TYPE_CATNIP) + ActivityInfo := p.GetActivityInfoById(activity.ACT_TYPE_CATNIP) return G_GameLogicPtr.SetDataSync(int(p.M_DwUin), VAR_OP_CATNIP_LOCK, CatnipLock{ Uid: int(p.M_DwUin), Partner: Uid, diff --git a/src/server/game/ChargeFunc.go b/src/server/game/ChargeFunc.go index d227c923..5030241d 100644 --- a/src/server/game/ChargeFunc.go +++ b/src/server/game/ChargeFunc.go @@ -16,7 +16,6 @@ import ( MsgMod "server/game/mod/msg" "server/game/mod/piggyBank" "server/game/mod/quest" - "server/msg" proto "server/msg" "server/pkg/github.com/name5566/leaf/log" "strings" @@ -49,7 +48,7 @@ func ADPetWorkFire(p *Player, ChargeId int) { ChargeMod := p.PlayMod.getChargeMod() Item := ChargeMod.FireAdReward(ChargeId) if Item != nil { - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_ActivityGift.String()) if err != nil { log.Debug("ChargeFire err : %s", err) return @@ -62,7 +61,7 @@ func ADPetWorkFire(p *Player, ChargeId int) { func ActivityFire(p *Player, ChargeId int) { ActivityMod := p.PlayMod.getActivityMod() ActivityId := activityCfg.GetActivityGiftId(ChargeId) - ActivityInfo := GetActivityInfoById(p, ActivityId) + ActivityInfo := p.GetActivityInfoById(ActivityId) if ActivityInfo == nil { log.Debug("ActivityFire ActivityInfo nil : player id :%d, charge id:%d", p.M_DwUin, ChargeId) return @@ -75,7 +74,7 @@ func ActivityFire(p *Player, ChargeId int) { if Item == nil { return } - err = p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String()) + err = p.HandleItem(Item, proto.ITEM_POP_LABEL_ActivityGift.String()) if err != nil { log.Debug("ChargeFire err : %s", err) return @@ -86,11 +85,11 @@ func ActivityFire(p *Player, ChargeId int) { } func PassFire(p *Player, ChargeId int) { - ActivityStatus := GetActivityStatus(p, activity.ACT_TYPE_PASS) + ActivityStatus := p.GetActivityStatus(activity.ACT_TYPE_PASS) if ActivityStatus != ACT_STATUS_START { return } - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { return } @@ -107,7 +106,7 @@ func PassFire(p *Player, ChargeId int) { if len(Items) == 0 { return } - err := p.HandleItem(Items, msg.ITEM_POP_LABEL_PassCharge.String()) + err := p.HandleItem(Items, proto.ITEM_POP_LABEL_PassCharge.String()) if err != nil { log.Debug("PassFire err : %s", err) return @@ -121,7 +120,7 @@ func PlayroomFire(p *Player, ChargeId int) { if Item == nil { return } - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Playroom.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_Playroom.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } @@ -137,7 +136,7 @@ func PiggyBankFire(p *Player, ChargeId int) { if Item == nil { return } - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_PiggyBank.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_PiggyBank.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } @@ -158,7 +157,7 @@ func ChargeFire(p *Player, ChargeId int) { if Item == nil { return } - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Charge.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_Charge.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } @@ -179,7 +178,7 @@ func EndlessFire(p *Player, ChargeId int) { if Item == nil { return } - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Endless.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_Endless.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index b4b90495..ddfd678b 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -283,24 +283,24 @@ func ReqGmCommand_(player *Player, Command string) error { case "miningReload": MiningMod := player.PlayMod.getMiningMod() MiningMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_MINING) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_MINING) MiningMod.ZeroUpdate(ActivityInfo.Id) MiningBackData(player) case "catnipReload": CatnipMod := player.PlayMod.getCatnipMod() CatnipMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_CATNIP) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_CATNIP) CatnipMod.ZeroUpdate(ActivityInfo.Id) case "guessColorReload": GuessColorMod := player.PlayMod.getGuessColorMod() GuessColorMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_GUESS_COLOR) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_GUESS_COLOR) GuessColorMod.ZeroUpdate(ActivityInfo.Id) GuessColorBackData(player) case "raceReload": RaceMod := player.PlayMod.getRaceMod() RaceMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_RACE) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_RACE) RaceMod.ZeroUpdate(ActivityInfo.Id) RaceBackData(player) case "raceAdd": diff --git a/src/server/game/LimitedTimeTrigger.go b/src/server/game/LimitedTimeTrigger.go index 1e853efe..ba06c029 100644 --- a/src/server/game/LimitedTimeTrigger.go +++ b/src/server/game/LimitedTimeTrigger.go @@ -16,7 +16,7 @@ import ( ) // 限时事件触发器 -func LimitedTimeEventTrigger(p *Player, AddEventId int) { +func (p *Player) LimitedTimeEventTrigger(AddEventId int) { Lv := p.GetPlayerBaseMod().GetLevel() EndTime, TimeoutEvent, AddEvent := p.PlayMod.getLimitedTimeEventMod().Trigger(Lv) remainingTime := GoUtil.NextHourRemain() @@ -28,7 +28,7 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) { p.CallEvent(time.Duration(EndTime)*time.Second, func() { p.lock.Lock() defer p.lock.Unlock() - LimitedTimeEventTrigger(p, 0) + p.LimitedTimeEventTrigger(0) p.SendClientRes() }, "LimitedTimeEvent") } diff --git a/src/server/game/MessageHandler.go b/src/server/game/MessageHandler.go index bff4f05d..ff503394 100644 --- a/src/server/game/MessageHandler.go +++ b/src/server/game/MessageHandler.go @@ -321,7 +321,7 @@ func handle(p *Player, m *msg.Msg) error { case msg.HANDLE_TYPE_CATNIP_INVITE: // 邀请好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() CatnipMsg := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil } @@ -331,7 +331,7 @@ func handle(p *Player, m *msg.Msg) error { case msg.HANDLE_TYPE_CATNIP_AGREE: // 同意好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() CatnipMsgInfo := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsgInfo.ActivityId { // 活动ID不匹配 return nil } @@ -339,7 +339,7 @@ func handle(p *Player, m *msg.Msg) error { case msg.HANDLE_TYPE_CATNIP_AGREE_DEL: // 同意好友参与猫咪游戏后删除邀请 CatnipMod := p.PlayMod.getCatnipMod() CatnipMsg := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil } @@ -347,7 +347,7 @@ func handle(p *Player, m *msg.Msg) error { case msg.HANDLE_TYPE_CATNIP_REFUSE: // 拒绝好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() CatnipMsg := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil } @@ -355,7 +355,7 @@ func handle(p *Player, m *msg.Msg) error { case msg.HANDLE_TYPE_CATNIP_GROWTH: CatnipMod := p.PlayMod.getCatnipMod() CatnipGrowthInfo := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipGrowthInfo.ActivityId { // 活动ID不匹配 return nil } @@ -508,7 +508,7 @@ func SyncMailMsg(p *Player) { } func (p *Player) CatnipGrowthMsg(To, Id, Growth, FriendItems int) error { - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) FriendMgrSend(&msg.Msg{ From: int(p.M_DwUin), To: To, diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 4084d709..5f4df5fa 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -350,7 +350,7 @@ func (p *Player) ZeroUpdate(a []interface{}) { PlayroomBackData(p) p.PlayMod.getChampshipMod().ZeroUpdate() p.initAcitivity() - ActivityZeroUpdate(p) + p.ActivityZeroUpdate() p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_LOGIN}) p.PlayMod.save() } @@ -387,7 +387,7 @@ func (p *Player) NoonUpdate(a []interface{}) { func (p *Player) Login() { // 添加定时器 // 限时事件触发 - LimitedTimeEventTrigger(p, 0) + p.LimitedTimeEventTrigger(0) // 猪猪银行触发 LimitedTimePiggyBankTrigger(p) BaseMod := p.PlayMod.getBaseMod() @@ -400,7 +400,7 @@ func (p *Player) Login() { LimitedTimePlayroomTrigger(p) // playroom数值变化 LimitedTimePlayroomWorkTrigger(p) // playroom打工 LimitedTimeEnergyAdd(p) // 能量定时处理 - ActivityLogin(p) // 活动登录 + p.ActivityLogin() // 活动登录 p.Compensation() SyncMailMsg(p) // 同步邮件 Duration := BaseMod.Login() @@ -700,7 +700,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { Cd: int32(EffectList[1]), }) // 触发订单事件 生成超级订单 卡牌节 - LimitedTimeEventTrigger(p, EffectList[0]) + p.LimitedTimeEventTrigger(EffectList[0]) p.TeLog("time_limited_event_enable", map[string]interface{}{ "event_type": limitedTimeEventCfg.GetEventName(EffectList[0]), "enable_type": Label, @@ -749,7 +749,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { 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) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_RACE) if ActivityInfo == nil { continue } @@ -824,7 +824,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { } BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS_SET] = struct{}{} case item.ITEM_TYPE_ACT_PASS: // 活动通行证 - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { continue } @@ -1126,7 +1126,7 @@ func (p *Player) BackDataActivity() { } func (p *Player) GetRed(AI *ActivityInfo) int { - Status := GetActivityStatus(p, AI.Type) + Status := p.GetActivityStatus(AI.Type) if Status != ACT_STATUS_START { return 0 } @@ -1143,8 +1143,8 @@ func (p *Player) GetRed(AI *ActivityInfo) int { } func (p *Player) NotifyRed(actType int) { - ActivityInfo := GetActivityInfo(p, actType) - Status := GetActivityStatus(p, actType) + ActivityInfo := p.GetActivityInfo(actType) + Status := p.GetActivityStatus(actType) if Status != ACT_STATUS_START { return } diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 1b5a8270..cf2a6fff 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -3430,8 +3430,8 @@ func ReqMiningTake(player *Player, buf []byte) error { return err } MiningMod := player.PlayMod.getMiningMod() - ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_MINING) - Status := GetActivityStatus(player, activity.ACT_TYPE_MINING) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_MINING) + Status := player.GetActivityStatus(activity.ACT_TYPE_MINING) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResMiningTake{ Code: msg.RES_CODE_FAIL, @@ -3474,7 +3474,7 @@ func ReqMiningTake(player *Player, buf []byte) error { // 领取关卡奖励 func ReqMiningReward(player *Player, buf []byte) error { MiningMod := player.PlayMod.getMiningMod() - Status := GetActivityStatus(player, activity.ACT_TYPE_MINING) + Status := player.GetActivityStatus(activity.ACT_TYPE_MINING) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResMiningReward{ Code: msg.RES_CODE_FAIL, @@ -3535,7 +3535,7 @@ func ReqGuessColorTake(player *Player, buf []byte) error { if err != nil { return err } - Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) + Status := player.GetActivityStatus(activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorTake{ Code: msg.RES_CODE_FAIL, @@ -3575,7 +3575,7 @@ func ReqGuessColorReward(player *Player, buf []byte) error { if err != nil { return err } - Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) + Status := player.GetActivityStatus(activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorReward{ Code: msg.RES_CODE_FAIL, @@ -4876,7 +4876,7 @@ func ReqActivityReward(player *Player, buf []byte) error { if err != nil { return err } - ActivityInfo := GetActivityInfo(player, int(req.Id)) + ActivityInfo := player.GetActivityInfo(int(req.Id)) if ActivityInfo == nil { player.SendErrClienRes(&msg.ResActivityReward{ Code: msg.RES_CODE_FAIL, @@ -5347,7 +5347,7 @@ func ReqCatnipInvite(player *Player, buf []byte) error { if err != nil { return err } - ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId == 0 { player.SendErrClienRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_FAIL, @@ -5355,7 +5355,7 @@ func ReqCatnipInvite(player *Player, buf []byte) error { }) return fmt.Errorf("activity not active") } - ActivityInfo := GetActivityInfo(player, ActivityId) + ActivityInfo := player.GetActivityInfo(ActivityId) CatnipMod := player.PlayMod.getCatnipMod() err = CatnipMod.Invite(int(req.Uid), int(req.Id)) if err != nil { @@ -5395,7 +5395,7 @@ func ReqCatnipAgree(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId == 0 { player.SendErrClienRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_FAIL, @@ -5449,7 +5449,7 @@ func ReqCatnipMultiply(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId == 0 { player.SendErrClienRes(&msg.ResCatnipMultiply{ Code: msg.RES_CODE_FAIL, @@ -5484,7 +5484,7 @@ func ReqCatnipPlay(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId == 0 { player.SendErrClienRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_FAIL, @@ -5542,7 +5542,7 @@ func ReqCatnipReward(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId == 0 { player.SendErrClienRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_FAIL, @@ -5588,7 +5588,7 @@ func ReqCatnipGrandReward(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId == 0 { player.SendErrClienRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_FAIL, @@ -5630,7 +5630,7 @@ func ReqCatnipRefuse(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId == 0 { player.SendErrClienRes(&msg.ResCatnipRefuse{ Code: msg.RES_CODE_FAIL, @@ -5655,7 +5655,7 @@ func ReqCatnipRefuse(player *Player, buf []byte) error { Type: MsqMod.HANDLE_TYPE_CATNIP_REFUSE, SendT: GoUtil.Now(), Extra: CatnipMsg{ - ActivityId: GetActivityId(player, activity.ACT_TYPE_CATNIP), + ActivityId: player.GetActivityId(activity.ACT_TYPE_CATNIP), GameId: int(req.Id), }, }) @@ -5736,7 +5736,7 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { }) } else { CatnipMod := player.PlayMod.getCatnipMod() - ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) + ActivityId := player.GetActivityId(activity.ACT_TYPE_MINING) UserList, _ := CatnipMod.Agree(GameId, ReplyInfo.Uid) player.TeLog("catnip_agree", map[string]interface{}{ "Id": int(GameId), @@ -5829,7 +5829,7 @@ func ReqCatnipEmoji(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId == 0 { player.SendErrClienRes(&msg.ResCatnipEmoji{ Code: msg.RES_CODE_FAIL, diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index 17cdef2e..907feb48 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -225,6 +225,7 @@ func (c *CatnipMod) GrowthByUid(Uid, Growth int) { for _, v := range c.Game { 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 v.Status = GAME_STATUS_COMPLETED } From 4245b7e1d1973883c568e7b20cd438414d2d9fda Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 9 Dec 2025 10:52:08 +0800 Subject: [PATCH 38/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-=E6=8E=A5=E5=8F=A3=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E5=8F=96=E6=B6=88=E6=95=B0=E6=8D=AE=E5=88=B7?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/RegisterNetworkFunc.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index cf2a6fff..86221855 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -5379,7 +5379,7 @@ func ReqCatnipInvite(player *Player, buf []byte) error { }, SendT: GoUtil.Now(), }) - player.CatnipBackData() + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_SUCCESS, @@ -5432,7 +5432,7 @@ func ReqCatnipAgree(player *Player, buf []byte) error { }, SendT: GoUtil.Now(), }) - player.CatnipBackData() + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_SUCCESS, @@ -5468,7 +5468,7 @@ func ReqCatnipMultiply(player *Player, buf []byte) error { player.TeLog("catnip_multiply", map[string]interface{}{ "Mul": int(req.Multiply), }) - player.CatnipBackData() + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipMultiply{ Code: msg.RES_CODE_SUCCESS, @@ -5525,7 +5525,7 @@ func ReqCatnipPlay(player *Player, buf []byte) error { if Growth > 0 { player.CatnipGrowthMsg(PartnerId, int(req.Id), Growth, FriendItems*CatnipMod.Mul) } - player.CatnipBackData() + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_SUCCESS, @@ -5572,7 +5572,7 @@ func ReqCatnipReward(player *Player, buf []byte) error { "friends_get_num": GameInfo.PartnerAdd, "user_get_num": GameInfo.Progress - GameInfo.PartnerAdd, }) - player.CatnipBackData() + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipReward{ Code: msg.RES_CODE_SUCCESS, @@ -5615,7 +5615,7 @@ func ReqCatnipGrandReward(player *Player, buf []byte) error { player.TeLog("cats_garden_final_reward", map[string]interface{}{ "get_reward": Items, }) - player.CatnipBackData() + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipGrandReward{ Code: msg.RES_CODE_SUCCESS, @@ -5659,7 +5659,7 @@ func ReqCatnipRefuse(player *Player, buf []byte) error { GameId: int(req.Id), }, }) - player.CatnipBackData() + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipRefuse{ Code: msg.RES_CODE_SUCCESS, From f6a43e8a2137d4ed1f4c115728045f5baef9fb9a Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 9 Dec 2025 12:08:44 +0800 Subject: [PATCH 39/49] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84?= =?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/ActivityFunc.go | 20 +- src/server/game/ChargeFunc.go | 42 ++-- src/server/game/CompensationFunc.go | 1 + src/server/game/FriendFunc.go | 2 +- src/server/game/GameLogic.go | 12 +- src/server/game/Gm.go | 32 ++-- src/server/game/HttpSvr.go | 60 ------ src/server/game/LimitedTimeTrigger.go | 20 +- src/server/game/MessageHandler.go | 256 ++++++++++++++----------- src/server/game/Player.go | 88 ++++----- src/server/game/PlayerBack.go | 18 +- src/server/game/PlayerBaseMod.go | 2 +- src/server/game/PlayerChessMod.go | 4 +- src/server/game/PlayerDataModule.go | 62 ------ src/server/game/PlayerMod.go | 26 +++ src/server/game/RegisterNetworkFunc.go | 124 ++++++------ src/server/game/Trigger.go | 46 ++--- src/server/game/UnitTest.go | 11 +- src/server/game/admin.go | 2 +- src/server/go.mod | 3 +- src/server/go.sum | 2 - 21 files changed, 384 insertions(+), 449 deletions(-) delete mode 100644 src/server/game/HttpSvr.go delete mode 100644 src/server/game/PlayerDataModule.go diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index 54279363..11cab5eb 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -167,7 +167,8 @@ func (p *Player) GetActivityStatus(actType int) int { return ACT_STATUS_START } -func MiningBackData(p *Player) { +// 挖矿活动数据返回 +func (p *Player) MiningBackData() { ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_MINING) if ActivityInfo == nil { return @@ -187,7 +188,8 @@ func MiningBackData(p *Player) { }) } -func GuessColorBackData(p *Player) { +// 猜颜色活动数据返回 +func (p *Player) GuessColorBackData() { ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_GUESS_COLOR) if ActivityInfo == nil { return @@ -218,7 +220,8 @@ func GuessColorBackData(p *Player) { }) } -func RaceBackData(p *Player) { +// 赛跑活动数据返回 +func (p *Player) RaceBackData() { ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_RACE) if ActivityInfo == nil { return @@ -248,7 +251,8 @@ func RaceBackData(p *Player) { }) } -func RedBackData(p *Player) { +// 红点数据返回 +func (p *Player) RedBackData() { result := make(map[int32]int32) Now := GoUtil.Now() for _, v := range p.activity { @@ -259,7 +263,8 @@ func RedBackData(p *Player) { p.PushClientRes(&msg.ResActRed{Red: result}) } -func ActPassBackData(p *Player) { +// 通行证活动数据返回 +func (p *Player) ActPassBackData() { ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { return @@ -279,7 +284,8 @@ func ActPassBackData(p *Player) { }) } -func GetActivityItem(p *Player, ActType []int) []*item.Item { +// 获取活动道具 +func (p *Player) GetActivityItem(ActType []int) []*item.Item { Items := make([]*item.Item, 0) for _, v := range ActType { Status := p.GetActivityStatus(v) @@ -310,6 +316,7 @@ func GetActivityItem(p *Player, ActType []int) []*item.Item { return Items } +// 猫草大作战活动数据返回 func (p *Player) CatnipBackData() { ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { @@ -395,6 +402,7 @@ func (p *Player) CatnipBackData() { p.PushClientRes(res) } +// 设置猫草大作战游戏锁 func (p *Player) SetCatnipGameLock(Uid int, GameId int) error { ActivityInfo := p.GetActivityInfoById(activity.ACT_TYPE_CATNIP) return G_GameLogicPtr.SetDataSync(int(p.M_DwUin), VAR_OP_CATNIP_LOCK, CatnipLock{ diff --git a/src/server/game/ChargeFunc.go b/src/server/game/ChargeFunc.go index 5030241d..b6223dc9 100644 --- a/src/server/game/ChargeFunc.go +++ b/src/server/game/ChargeFunc.go @@ -21,20 +21,20 @@ import ( "strings" ) -func Charge(p *Player, ChargeId int) { - ChargeFire(p, ChargeId) // 充值 - EndlessFire(p, ChargeId) // 无尽礼包 - PiggyBankFire(p, ChargeId) // 猪猪银行 - PlayroomFire(p, ChargeId) // 游乐场 - ActivityFire(p, ChargeId) // 活动礼包 - ADPetWorkFire(p, ChargeId) // 广告宠物工作 - PassFire(p, ChargeId) +func (p *Player) Charge(ChargeId int) { + p.ChargeFire(ChargeId) // 充值 + p.EndlessFire(ChargeId) // 无尽礼包 + p.PiggyBankFire(ChargeId) // 猪猪银行 + p.PlayroomFire(ChargeId) // 游乐场 + p.ActivityFire(ChargeId) // 活动礼包 + p.ADPetWorkFire(ChargeId) // 广告宠物工作 + p.PassFire(ChargeId) OrderMod := p.PlayMod.getOrderMod() OrderMod.SetIsCharge() // 设置订单模块为充值状态 p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PURCHASE, A: []interface{}{}}) } -func SendCharge(p *Player, d *ChargeExtra) { +func (p *Player) SendCharge(d *ChargeExtra) { G_GameLogicPtr.FriendMgrSend(&MsgMod.Msg{ From: int(p.M_DwUin), Type: MsgMod.HANDLE_TYPE_SEND_CHARGE, @@ -44,7 +44,7 @@ func SendCharge(p *Player, d *ChargeExtra) { }) } -func ADPetWorkFire(p *Player, ChargeId int) { +func (p *Player) ADPetWorkFire(ChargeId int) { ChargeMod := p.PlayMod.getChargeMod() Item := ChargeMod.FireAdReward(ChargeId) if Item != nil { @@ -58,7 +58,7 @@ func ADPetWorkFire(p *Player, ChargeId int) { p.ChargeBackData() } -func ActivityFire(p *Player, ChargeId int) { +func (p *Player) ActivityFire(ChargeId int) { ActivityMod := p.PlayMod.getActivityMod() ActivityId := activityCfg.GetActivityGiftId(ChargeId) ActivityInfo := p.GetActivityInfoById(ActivityId) @@ -84,7 +84,7 @@ func ActivityFire(p *Player, ChargeId int) { p.BackDataActivity() } -func PassFire(p *Player, ChargeId int) { +func (p *Player) PassFire(ChargeId int) { ActivityStatus := p.GetActivityStatus(activity.ACT_TYPE_PASS) if ActivityStatus != ACT_STATUS_START { return @@ -114,7 +114,7 @@ func PassFire(p *Player, ChargeId int) { p.PlayMod.save() } -func PlayroomFire(p *Player, ChargeId int) { +func (p *Player) PlayroomFire(ChargeId int) { PlayroomMod := p.PlayMod.getPlayroomMod() Item := PlayroomMod.Fire(ChargeId) if Item == nil { @@ -130,7 +130,7 @@ func PlayroomFire(p *Player, ChargeId int) { p.PlayMod.save() } -func PiggyBankFire(p *Player, ChargeId int) { +func (p *Player) PiggyBankFire(ChargeId int) { PiggyBankMod := p.PlayMod.getPiggyBankMod() Item := PiggyBankMod.Fire(ChargeId) if Item == nil { @@ -140,7 +140,7 @@ func PiggyBankFire(p *Player, ChargeId int) { if err != nil { log.Debug("ChargeFire err : %s", err) } - LimitedTimePiggyBankTrigger(p) + p.LimitedTimePiggyBankTrigger() p.TeLog("piggy_bank_open", map[string]interface{}{ "piggy_bank_type": piggyBank.PIGGY_BANK_TYPE_CHARGE, "item_list": Item, @@ -151,7 +151,7 @@ func PiggyBankFire(p *Player, ChargeId int) { } // 处理玩家充值 -func ChargeFire(p *Player, ChargeId int) { +func (p *Player) ChargeFire(ChargeId int) { ChargeMod := p.PlayMod.getChargeMod() Item := ChargeMod.Fire(ChargeId) if Item == nil { @@ -165,14 +165,14 @@ func ChargeFire(p *Player, ChargeId int) { p.ChargeBackData() } -func ChargeItem(p *Player, ChargeId int) []*item.Item { +func (p *Player) ChargeItem(ChargeId int) []*item.Item { ChargeMod := p.PlayMod.getChargeMod() Item := ChargeMod.Fire(ChargeId) return Item } // 处理玩家充值 -func EndlessFire(p *Player, ChargeId int) { +func (p *Player) EndlessFire(ChargeId int) { EndlessMod := p.PlayMod.getEndlessMod() Item := EndlessMod.Fire(ChargeId) if Item == nil { @@ -187,7 +187,7 @@ func EndlessFire(p *Player, ChargeId int) { } // 创建订单 -func CreateOrderSn(p *Player, req *proto.ReqCreateOrderSn) (string, error) { +func (p *Player) CreateOrderSn(req *proto.ReqCreateOrderSn) (string, error) { Uid := int(p.M_DwUin) OrderSn := GoUtil.CreateOrderSn(Uid) @@ -204,7 +204,7 @@ func CreateOrderSn(p *Player, req *proto.ReqCreateOrderSn) (string, error) { return OrderSn, nil } -func GoogleVerify(p *Player, OrderSn, ProduceId, Token string) (*db.SqlChargeOrderStruct, error) { +func (p *Player) GoogleVerify(OrderSn, ProduceId, Token string) (*db.SqlChargeOrderStruct, error) { Order, err := db.GetPlayerChargeData(OrderSn) if err != nil { return nil, err @@ -259,7 +259,7 @@ func GoogleVerify(p *Player, OrderSn, ProduceId, Token string) (*db.SqlChargeOrd return Order, nil } -func CancelOrder(p *Player, OrderSn string) error { +func (p *Player) CancelOrder(OrderSn string) error { Order, err := db.GetPlayerChargeData(OrderSn) if err != nil { return err diff --git a/src/server/game/CompensationFunc.go b/src/server/game/CompensationFunc.go index 52bfa247..80d7f96e 100644 --- a/src/server/game/CompensationFunc.go +++ b/src/server/game/CompensationFunc.go @@ -1,5 +1,6 @@ package game +// 补偿脚本 import ( "server/game/mod/compensation" "server/game/mod/mail" diff --git a/src/server/game/FriendFunc.go b/src/server/game/FriendFunc.go index 9112e907..dcc1fe67 100644 --- a/src/server/game/FriendFunc.go +++ b/src/server/game/FriendFunc.go @@ -8,7 +8,7 @@ import ( "sort" ) -func GetVisitorPlayer(p *Player) int { +func (p *Player) GetVisitorPlayer() int { PlayroomMod := p.PlayMod.getPlayroomMod() VisitorList := PlayroomMod.GetVisitor() // 到访用户 TodayVisitedUsers := PlayroomMod.GetTodayVisitedUsers() // 今日已互动用户 diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 3fed32b5..99e51177 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -75,7 +75,6 @@ type GameLogic struct { NotInitPlayer *Player Version int32 M_SvrGlobal db.SqlSvrGlobalStruct - MHttpManager *HttpManager SeverInfo *ServerInfo MLogManager *LogMgr // 日志管理器 @@ -655,7 +654,7 @@ func (ad *GameLogic) ReplaceExistPlayerAndAgent(a gate.Agent, player *Player) er if ok { Timer.Stop() } - SyncFriendMsg(player) + player.SyncFriendMsg() log.Debug("player %d 重连", player.M_DwUin) return nil } @@ -949,15 +948,6 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqChargeReceive", ReqChargeReceive) // 礼包回复邮件 } -func (ad *GameLogic) CreateHttpManager() { - - go func() { - ad.MHttpManager = new(HttpManager) - ad.MHttpManager.InitRounter() - }() - -} - func (ad *GameLogic) CreateLogManager() { ad.MLogManager = new(LogMgr) ad.MLogManager.InitManager() diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index ddfd678b..c19f15d7 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -144,7 +144,7 @@ func ReqGmCommand_(player *Player, Command string) error { "CreateTime": GoUtil.Now(), "PayTime": GoUtil.Now(), }) - Charge(player, ChargeId) + player.Charge(ChargeId) case "AddPart": ChessMod := player.PlayMod.getChessMod() ChessMod.PartBag.List[1505] = chess.PartBagGrid{ @@ -183,7 +183,7 @@ func ReqGmCommand_(player *Player, Command string) error { AddTime: Now, } } - BackUserInfo(player) + player.BackUserInfo() case "resetFace": FaceMod := player.PlayMod.getFaceMod() FaceMod.List = nil @@ -285,7 +285,7 @@ func ReqGmCommand_(player *Player, Command string) error { MiningMod.ZeroUpdate(-1) ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_MINING) MiningMod.ZeroUpdate(ActivityInfo.Id) - MiningBackData(player) + player.MiningBackData() case "catnipReload": CatnipMod := player.PlayMod.getCatnipMod() CatnipMod.ZeroUpdate(-1) @@ -296,17 +296,17 @@ func ReqGmCommand_(player *Player, Command string) error { GuessColorMod.ZeroUpdate(-1) ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_GUESS_COLOR) GuessColorMod.ZeroUpdate(ActivityInfo.Id) - GuessColorBackData(player) + player.GuessColorBackData() case "raceReload": RaceMod := player.PlayMod.getRaceMod() RaceMod.ZeroUpdate(-1) ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_RACE) RaceMod.ZeroUpdate(ActivityInfo.Id) - RaceBackData(player) + player.RaceBackData() case "raceAdd": RaceMod := player.PlayMod.getRaceMod() RaceMod.AddCoin(100) - RaceBackData(player) + player.RaceBackData() case "playroomReset": PlayroomMod := playroom.PlayroomMod{} PlayroomMod.InitData() @@ -331,7 +331,7 @@ func ReqGmCommand_(player *Player, Command string) error { Part := playroomCfg.GetDressPart(v) PlayroomMod.UnlockDress(Part, v) } - PlayroomBackData(player) + player.PlayroomBackData() case "playroomAir": PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.NewPetAir = make(map[int]*playroom.PetAirInfo, 0) @@ -339,7 +339,7 @@ func ReqGmCommand_(player *Player, Command string) error { for _, v := range AirList { PlayroomMod.UnlockPetAir(v) } - PlayroomBackData(player) + player.PlayroomBackData() case "resetRetire": ChessMod := player.PlayMod.getChessMod() ChessMod.Retire = make(map[string]int) @@ -352,11 +352,11 @@ func ReqGmCommand_(player *Player, Command string) error { PlayroomMod := player.PlayMod.getPlayroomMod() Num, _ := strconv.Atoi(arg[1]) PlayroomMod.RoomPoint += Num - PlayroomBackData(player) + player.PlayroomBackData() case "resetPlayroomUnlock": PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.UnlockList = make(map[int]int64) - PlayroomBackData(player) + player.PlayroomBackData() case "addChip": PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.AddChip(100100001, 1, 0) @@ -378,8 +378,8 @@ func ReqGmCommand_(player *Player, Command string) error { FriendMod.Id = 0 FriendMod.Log = make([]*friend.LogInfo, 0) FriendMod.InitData() - FriendListBackData(player) - FriendLogBackData(player) + player.FriendListBackData() + player.FriendLogBackData() case "addFriend": FriendMod := player.PlayMod.getFriendMod() Uid, _ := strconv.Atoi(arg[1]) @@ -405,7 +405,7 @@ func ReqGmCommand_(player *Player, Command string) error { case "comfortOrder": BaseMod := player.PlayMod.getBaseMod() BaseMod.LogoutTime = GoUtil.Now() - 7*86400 - TriggerComfortOrder(player) + player.TriggerComfortOrder() player.PushClientRes(player.PlayMod.getOrderMod().BackData()) case "resetGuide": GuildMod := player.PlayMod.getGuideMod() @@ -481,7 +481,7 @@ func ReqGmCommand_(player *Player, Command string) error { case "resetNpc": FriendMod := player.PlayMod.getFriendMod() FriendMod.Npc = []int{} - FriendListBackData(player) + player.FriendListBackData() case "recoverUser": file, err := os.OpenFile(conf.Server.GameConfPath+"user.info", os.O_RDWR|os.O_CREATE, 0666) if err != nil { @@ -548,11 +548,11 @@ func ReqGmCommand_(player *Player, Command string) error { player.ChargeBackData() PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.WeeklyDiscount = make(map[int]int) - PlayroomBackData(player) + player.PlayroomBackData() case "resetCode": BaseMod := player.PlayMod.getBaseMod() BaseMod.AddCode = fmt.Sprintf("MMM-%s-%s", "156", GoUtil.UniqueStringFromInt(int(BaseMod.Uid))) - BackUserInfo(player) + player.BackUserInfo() default: return fmt.Errorf("Player %d ReqGmCommand:%v not found", player.M_DwUin, arg) } diff --git a/src/server/game/HttpSvr.go b/src/server/game/HttpSvr.go deleted file mode 100644 index 205379df..00000000 --- a/src/server/game/HttpSvr.go +++ /dev/null @@ -1,60 +0,0 @@ -package game - -import ( - "fmt" - "net/http" - "server/conf" - - // "server/msg" - - "github.com/gorilla/mux" -) - -type HttpManager struct { - Rounter *mux.Router -} - -func (p *HttpManager) InitRounter() { - p.Rounter = mux.NewRouter() - p.InitFriendRouter() - p.InitPlayerProfileInfo() - http.ListenAndServe(conf.Server.HttpPort, p.Rounter) -} - -func (p *HttpManager) InitFriendRouter() { - bs := p.Rounter.PathPrefix("/Friend").Subrouter() - bs.HandleFunc("/Add/{SenderId}/{ReceiveId}", p.AddFriend) - bs.HandleFunc("/Del/{SenderId}/{ReceiveId}", p.DeleteFriend) -} - -func (p *HttpManager) InitPlayerProfileInfo() { - bs := p.Rounter.PathPrefix("/Profile").Subrouter() - bs.HandleFunc("/GetBrief/{Id}", p.GetPlayerProfileInfo) -} - -func (p *HttpManager) GetPlayerProfileInfo(w http.ResponseWriter, r *http.Request) { - -} - -func (p *HttpManager) AddFriend(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - SenderId, ok := vars["SenderId"] - if ok { - fmt.Println("AddFreind SenderId:" + SenderId) - } - - ReceiveId, ok1 := vars["ReceiveId"] - if ok1 { - fmt.Println("AddFreind ReceiveId:" + ReceiveId) - } -} - -func (p *HttpManager) DeleteFriend(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - id, ok := vars["id"] - if !ok { - fmt.Println("id is missing in parameters") - } - fmt.Println(`id := `, id) - -} diff --git a/src/server/game/LimitedTimeTrigger.go b/src/server/game/LimitedTimeTrigger.go index ba06c029..6dd6cf8d 100644 --- a/src/server/game/LimitedTimeTrigger.go +++ b/src/server/game/LimitedTimeTrigger.go @@ -62,7 +62,7 @@ func (p *Player) LimitedTimeEventTrigger(AddEventId int) { p.PlayMod.getCardMod().ResetCardFestival() case limitedTimeEvent.EVENT_TYPE_GOLDCARD_EX: p.PlayMod.getFriendMod().ResetGoldCardEx() - LimitedTimeCardTrigger(p) + p.LimitedTimeCardTrigger() } } @@ -92,13 +92,13 @@ func (p *Player) LimitedTimeEventTrigger(AddEventId int) { } // 限时猪猪存钱罐触发器 -func LimitedTimePiggyBankTrigger(p *Player) { +func (p *Player) LimitedTimePiggyBankTrigger() { Remain := p.PlayMod.getPiggyBankMod().TimeOut() if Remain > 0 { p.CallEvent(time.Duration(Remain)*time.Second, func() { p.lock.Lock() defer p.lock.Unlock() - LimitedTimePiggyBankTrigger(p) + p.LimitedTimePiggyBankTrigger() p.SendClientRes() }, "PiggyBank") } @@ -106,7 +106,7 @@ func LimitedTimePiggyBankTrigger(p *Player) { } // 限时卡牌触发器 -func LimitedTimeCardTrigger(p *Player) { +func (p *Player) LimitedTimeCardTrigger() { FriendMod := p.PlayMod.getFriendMod() CardMod := p.PlayMod.getCardMod() Now := GoUtil.Now() @@ -140,21 +140,21 @@ func LimitedTimeCardTrigger(p *Player) { p.CallEvent(time.Duration(EndTime-Now)*time.Second, func() { p.lock.Lock() defer p.lock.Unlock() - LimitedTimeCardTrigger(p) + p.LimitedTimeCardTrigger() p.SendClientRes() }, "LimitedTimeCard") } } -func LimitedTimePlayroomTrigger(p *Player) { +func (p *Player) LimitedTimePlayroomTrigger() { PlayroomMod := p.PlayMod.getPlayroomMod() for k, v := range PlayroomMod.Physiology { if v.Time > 0 { - LimitedTimePlayroomTrigger_(p, k) + p.LimitedTimePlayroomTrigger_(k) } } } -func LimitedTimePlayroomTrigger_(p *Player, Id int) { +func (p *Player) LimitedTimePlayroomTrigger_(Id int) { PlayroomMod := p.PlayMod.getPlayroomMod() Physiology := PlayroomMod.GetPhysiology(Id) if Physiology == nil { @@ -183,7 +183,7 @@ func LimitedTimePlayroomTrigger_(p *Player, Id int) { p.CallEvent(time.Duration(NextSecond)*time.Second, func() { p.lock.Lock() defer p.lock.Unlock() - LimitedTimePlayroomTrigger_(p, Id) + p.LimitedTimePlayroomTrigger_(Id) p.SendClientRes() }, fmt.Sprintf("Playroom_%d", Id)) } @@ -223,7 +223,7 @@ func LimitedTimePlayroomWorkTrigger(p *Player) { if EndTime > 0 && EndTime <= Now { PlayroomMod.ResetWork() p.PlayMod.save() - PlayroomBackData(p) + p.PlayroomBackData() p.SendClientRes() return } diff --git a/src/server/game/MessageHandler.go b/src/server/game/MessageHandler.go index ff503394..ff25d17b 100644 --- a/src/server/game/MessageHandler.go +++ b/src/server/game/MessageHandler.go @@ -29,7 +29,7 @@ import ( ) // 处理玩家异步请求 -func HandleMsg(p *Player, m *msg.Msg) { +func (p *Player) HandleMsg(m *msg.Msg) { p.lock.Lock() //加锁 backup := p.BackUp() // 备份当前的 Player 值 defer func() { @@ -40,7 +40,7 @@ func HandleMsg(p *Player, m *msg.Msg) { p.lock.Unlock() //解锁 }() p.args = make(map[string]interface{}) - err := handle(p, m) + err := p.handle(m) if err != nil { log.Debug("uid : %d, err : %s", p.M_DwUin, err) p.Recover(backup) //还原Player的数据 @@ -51,10 +51,72 @@ func HandleMsg(p *Player, m *msg.Msg) { } // 消息处理 -func handle(p *Player, m *msg.Msg) error { +func (p *Player) handle(m *msg.Msg) error { switch m.Type { - case msg.HANDLE_TYPE_DEL, msg.HANDLE_TYPE_APPLY, msg.HADNLE_TYPE_AGREE, msg.HANDLE_TYPE_REQ_CARD, msg.HANDLE_TYPE_REFUSE: - return HandleFriendMsg(p, m) + case msg.HANDLE_TYPE_APPLY: // 好友申请 + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AddFriendApply(m.From) + p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT) + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.ResFriendApplyNotify{ + Player: PlayerSimpleData, + Type: friend.FRIEND_NOTIFY_APPLY, + Time: int32(GoUtil.Now()), + }) + case msg.HADNLE_TYPE_AGREE: // 同意好友申请 + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AgreeApply(m.From) + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.ResFriendApplyNotify{ + Player: PlayerSimpleData, + Type: friend.FRIEND_NOTIFY_AGREE, + Time: int32(GoUtil.Now()), + }) + PlayroomMod := p.PlayMod.getPlayroomMod() + BaseMod := p.PlayMod.getBaseMod() + PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) + p.PlayroomBackData() + p.TeLog("friend_add", map[string]interface{}{ + "player_id": m.From, + "add_type": "接受申请", + }) + p.AddLog(m.From, friend.LOG_TYPE_FRIEND_BECOME, "", m.SendT) + case msg.HANDLE_TYPE_DEL: // 删除好友 + FriendMod := p.PlayMod.getFriendMod() + FriendMod.DelFriend(m.From) + p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT) + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.ResFriendApplyNotify{ + Player: PlayerSimpleData, + Type: friend.FRIEND_NOTIFY_DEL, + Time: int32(GoUtil.Now()), + }) + case msg.HANDLE_TYPE_REFUSE: // 拒绝好友申请 + FriendMod := p.PlayMod.getFriendMod() + FriendMod.RefuseApply(m.From) + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.ResFriendApplyNotify{ + Player: PlayerSimpleData, + Type: friend.FRIEND_NOTIFY_REFUSE, + Time: int32(GoUtil.Now()), + }) + case msg.HANDLE_TYPE_REQ_CARD: // 卡牌申请 + FriendMod := p.PlayMod.getFriendMod() + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } + FriendMod.SetCardInfo(&CardInfo) + p.PushClientRes( + &proto.NotifyFriendCard{ + Info: GetCardInfoMsg(&CardInfo), + }, + ) + case msg.HANDLE_TYPE_FACEBOOK_UNBIND: // facebook解绑 + FaceMod := p.PlayMod.getFaceMod() + if FaceMod.SetId == 0 { + FaceMod.SetId = 2 + } case msg.SERVER_ZERO_UPDATE: p.ZeroUpdate(nil) case msg.SERVER_NOON_UPDATE: @@ -68,7 +130,7 @@ func handle(p *Player, m *msg.Msg) error { PlayroomMod := p.PlayMod.getPlayroomMod() BaseMod := p.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(p) + p.PlayroomBackData() p.TeLog("friend_add", map[string]interface{}{ "player_id": m.From, "add_type": "发起申请", @@ -108,7 +170,10 @@ func handle(p *Player, m *msg.Msg) error { p.PushClientRes(CardMod.NotifyCard()) p.PushClientRes(CardMod.NotifyTimes()) case msg.HANDLE_TYPE_REG_CARD_FINISH, msg.HANDLE_TYPE_AGREE_CARD_FAIL: // B收到A的请求已结束 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } FriendMod := p.PlayMod.getFriendMod() FriendMod.DelCardInfo(CardInfo.Id) p.PushClientRes( @@ -118,7 +183,10 @@ func handle(p *Player, m *msg.Msg) error { ) p.PlayMod.save() case msg.HANDLE_TYPE_AGREE_CARD: // A收到B同意卡牌 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } CardMod := p.PlayMod.getCardMod() OtherUid, err := CardMod.DelRequestCard(CardInfo.BUid) FriendMod := p.PlayMod.getFriendMod() @@ -143,7 +211,10 @@ func handle(p *Player, m *msg.Msg) error { ) p.PushClientRes(CardMod.NotifyTimes()) case msg.HANDLE_TYPE_REG_CARD_REFUSE: // A收到B拒绝索要卡牌 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } CardMod := p.PlayMod.getCardMod() CardMod.DelRequestCard(CardInfo.BUid) CardMod.AddReqTimes(CardInfo.Id, CardInfo.StartTime) @@ -152,7 +223,10 @@ func handle(p *Player, m *msg.Msg) error { p.PushClientRes(CardMod.NotifyCard()) case msg.HANDLE_TYPE_EX_CARD: // B收到A置换卡牌 FriendMod := p.PlayMod.getFriendMod() - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } FriendMod.SetCardInfo(&CardInfo) FriendMod.Interact(CardInfo.AUid, friend.INTERACT_TYPE_EX, m.SendT) p.PlayMod.save() @@ -163,7 +237,10 @@ func handle(p *Player, m *msg.Msg) error { ) case msg.HANDLE_TYPE_SELECT_EX_CARD: // A收到B选择卡牌进行置换 FriendMod := p.PlayMod.getFriendMod() - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } FriendMod.SetCardInfo(&CardInfo) // p.AddLog(int(p.M_DwUin), friend.LOG_TYPE_CARD_SELECT_GET, fmt.Sprintf("%d", CardInfo.CardId)) p.PlayMod.save() @@ -173,7 +250,10 @@ func handle(p *Player, m *msg.Msg) error { }, ) case msg.HANDLE_TYPE_ARGREE_EX_CARD: // B收到A同意置换卡牌 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } FriendMod := p.PlayMod.getFriendMod() FriendMod.SetCardInfo(&CardInfo) p.PushClientRes( @@ -184,7 +264,10 @@ func handle(p *Player, m *msg.Msg) error { p.PlayMod.save() case msg.HANDLE_TYPE_REFUSE_SELECT_CARD: // A收到B拒绝置换卡牌 CardMod := p.PlayMod.getCardMod() - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } CardMod.AddExTimes(&CardInfo) p.AddCard(CardInfo.CardId) CardMod.DelExCard(&CardInfo) @@ -193,7 +276,10 @@ func handle(p *Player, m *msg.Msg) error { p.PlayMod.save() case msg.HANDLE_TYPE_REFUSE_EX_CARD: // B收到A拒绝置换卡牌 CardMod := p.PlayMod.getCardMod() - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } p.AddCard(CardInfo.ExId) FriendMod := p.PlayMod.getFriendMod() FriendMod.DelCardInfo(CardInfo.Id) @@ -203,9 +289,9 @@ func handle(p *Player, m *msg.Msg) error { p.PlayMod.save() p.PushClientRes(CardMod.NotifyCard()) case msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY: // # 锦标赛排名变动通知 - BackChampship(p) + p.BackChampship() case msg.HANDLE_TYPE_CHAMPSHIP_RESULT: // # 好友锦标赛结果 - Extra := m.Extra.([]int) + Extra := GoUtil.IntSlice(m.Extra) p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CHAMPSHIP, fmt.Sprintf("%d_%d", Extra[0], Extra[1]), m.SendT) case msg.HANDLE_TYPE_TREASURE_RESULT: // # 好友宝藏结果 //p.AddLog(m.From, friend.LOG_TYPE_TREASURE, fmt.Sprintf("%d", m.Extra.(int)), m.SendT) @@ -259,9 +345,9 @@ func handle(p *Player, m *msg.Msg) error { p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_LOSE, fmt.Sprintf("%d", Emoji), m.SendT) FriendMod.Interact(m.From, friend.INTERACT_TYPE_VISIT, m.SendT) case msg.FRIEND_TREASURE_HANDLE: // # 好友宝藏 - Items := make([]*item.Item, 0) - if m.Extra != nil { - Items = m.Extra.([]*item.Item) + Items, ok := m.Extra.([]*item.Item) + if !ok { + Items = []*item.Item{} } p.AddLog(m.From, friend.LOG_TYPE_TREASURE_HELP, "", m.SendT) p.HandleItem(Items, proto.ITEM_POP_LABEL_Friendtreasure.String()) @@ -279,21 +365,21 @@ func handle(p *Player, m *msg.Msg) error { FriendMod.Interact(m.From, friend.INTERACT_TYPE_UPVOTE, m.SendT) p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK_UPVOTE, "", m.SendT) case msg.HANDLE_TYPE_SEND_CHARGE: // 收到好友赠送的充值礼包 - C := &ChargeExtra{} - if m.Extra != nil { - C = m.Extra.(*ChargeExtra) + C, ok := m.Extra.(*ChargeExtra) + if !ok { + C = &ChargeExtra{} } PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) MailMod := p.PlayMod.getMailMod() mt, mc, mt_en, mc_en := mailCfg.GetChargeSendMail(PlayerSimpleData.Name) - Items := ChargeItem(p, C.ChargeId) + Items := p.ChargeItem(C.ChargeId) MailId := MailMod.Send(mt, "", mc, mt_en, "", mc_en, Items, mail.MAIL_TYPE_GIFT) p.AddLog(m.From, friend.LOG_TYPE_CHARGE_SEND, fmt.Sprintf("%d", MailId), m.SendT) p.PushClientRes(MailMod.NotifyMail(MailId)) case msg.HANDLE_TYPE_CHARGE_RECEIVE: // 收到好友的感谢信 - Content := "" - if m.Extra != nil { - Content = m.Extra.(string) + Content, ok := m.Extra.(string) + if !ok { + Content = "" } PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) MailMod := p.PlayMod.getMailMod() @@ -320,7 +406,10 @@ func handle(p *Player, m *msg.Msg) error { p.NotifyPlayroomKiss() case msg.HANDLE_TYPE_CATNIP_INVITE: // 邀请好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg := m.Extra.(CatnipMsg) + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { + return nil + } ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil @@ -330,15 +419,21 @@ func handle(p *Player, m *msg.Msg) error { FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", CatnipMsg.GameId), m.End, nil) case msg.HANDLE_TYPE_CATNIP_AGREE: // 同意好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsgInfo := m.Extra.(CatnipMsg) - ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) - if ActivityId != CatnipMsgInfo.ActivityId { // 活动ID不匹配 + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { return nil } - CatnipMod.BeAgree(CatnipMsgInfo.GameId, int(m.From)) + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + return nil + } + CatnipMod.BeAgree(CatnipMsg.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_AGREE_DEL: // 同意好友参与猫咪游戏后删除邀请 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg := m.Extra.(CatnipMsg) + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { + return nil + } ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil @@ -346,7 +441,10 @@ func handle(p *Player, m *msg.Msg) error { CatnipMod.DelInvited(CatnipMsg.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_REFUSE: // 拒绝好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg := m.Extra.(CatnipMsg) + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { + return nil + } ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil @@ -354,14 +452,17 @@ func handle(p *Player, m *msg.Msg) error { CatnipMod.DelInvited(CatnipMsg.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_GROWTH: CatnipMod := p.PlayMod.getCatnipMod() - CatnipGrowthInfo := m.Extra.(CatnipMsg) - ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) - if ActivityId != CatnipGrowthInfo.ActivityId { // 活动ID不匹配 + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { return nil } - CatnipMod.GrowthByUid(m.From, CatnipGrowthInfo.Growth) - if CatnipGrowthInfo.FriendItems > 0 { - Items := catnipCfg.GetItemCost(ActivityId, CatnipGrowthInfo.FriendItems) + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + return nil + } + CatnipMod.GrowthByUid(m.From, CatnipMsg.Growth) + if CatnipMsg.FriendItems > 0 { + Items := catnipCfg.GetItemCost(ActivityId, CatnipMsg.FriendItems) FriendMod := p.PlayMod.getFriendMod() FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP_ITEMS, "", m.End, Items) } @@ -375,7 +476,7 @@ func handle(p *Player, m *msg.Msg) error { FriendMod := p.PlayMod.getFriendMod() if v, ok := m.Extra.(friend.ReplyInfo); ok { FriendMod.AddReplyInfo(v.Uid, v.Type, v.Param, GoUtil.Now()+24*3600, nil) - FriendLogBackData(p) + p.FriendLogBackData() } case msg.HANDLE_TYPE_FRIEND_SPONSOER: p.AddLog(m.From, friend.LOG_TYPE_FRIEND_SPONSOR_GET, "", m.SendT) @@ -386,75 +487,8 @@ func handle(p *Player, m *msg.Msg) error { return nil } -// 处理系统请求 -func HandleServerMsg(p *Player, msg *msg.Msg) error { - return nil -} - -// 处理好友请求 -func HandleFriendMsg(p *Player, m *msg.Msg) error { - FriendMod := p.PlayMod.getFriendMod() - PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) - switch m.Type { - case msg.HANDLE_TYPE_APPLY: // 好友申请 - FriendMod.AddFriendApply(m.From) - p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT) - p.PushClientRes(&proto.ResFriendApplyNotify{ - Player: PlayerSimpleData, - Type: friend.FRIEND_NOTIFY_APPLY, - Time: int32(GoUtil.Now()), - }) - case msg.HADNLE_TYPE_AGREE: // 同意好友申请 - FriendMod.AgreeApply(m.From) - p.PushClientRes(&proto.ResFriendApplyNotify{ - Player: PlayerSimpleData, - Type: friend.FRIEND_NOTIFY_AGREE, - Time: int32(GoUtil.Now()), - }) - PlayroomMod := p.PlayMod.getPlayroomMod() - BaseMod := p.PlayMod.getBaseMod() - PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(p) - p.TeLog("friend_add", map[string]interface{}{ - "player_id": m.From, - "add_type": "接受申请", - }) - p.AddLog(m.From, friend.LOG_TYPE_FRIEND_BECOME, "", m.SendT) - case msg.HANDLE_TYPE_DEL: // 删除好友 - FriendMod.DelFriend(m.From) - p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT) - p.PushClientRes(&proto.ResFriendApplyNotify{ - Player: PlayerSimpleData, - Type: friend.FRIEND_NOTIFY_DEL, - Time: int32(GoUtil.Now()), - }) - case msg.HANDLE_TYPE_REFUSE: // 拒绝好友申请 - FriendMod.RefuseApply(m.From) - p.PushClientRes(&proto.ResFriendApplyNotify{ - Player: PlayerSimpleData, - Type: friend.FRIEND_NOTIFY_REFUSE, - Time: int32(GoUtil.Now()), - }) - case msg.HANDLE_TYPE_REQ_CARD: // 卡牌申请 - CardInfo := m.Extra.(card.CardInfo) - FriendMod.SetCardInfo(&CardInfo) - p.PushClientRes( - &proto.NotifyFriendCard{ - Info: GetCardInfoMsg(&CardInfo), - }, - ) - case msg.HANDLE_TYPE_FACEBOOK_UNBIND: // facebook解绑 - FaceMod := p.PlayMod.getFaceMod() - if FaceMod.SetId == 0 { - FaceMod.SetId = 2 - } - } - p.PlayMod.save() - return nil -} - // 同步好友请求 -func SyncFriendMsg(p *Player) { +func (p *Player) SyncFriendMsg() { MsgList := G_GameLogicPtr.FriendMgrCall(&msg.Msg{Type: msg.HANDLE_TYPE_SYNC, From: int(p.M_DwUin)}) FriendMod := p.PlayMod.getFriendMod() MsgId := FriendMod.GetSyncId() @@ -478,7 +512,7 @@ func SyncFriendMsg(p *Player) { continue } log.Debug("uid : %d, handle friend msg : %v", p.M_DwUin, v) - handle(p, v) + p.handle(v) v.H = 1 } FriendMod.SetSyncId(maxId) @@ -569,7 +603,7 @@ func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard { } // 发射器退役第一步 不再生成此发射器订单 -func EmitRetireTrigger1(p *Player) { +func (p *Player) EmitRetireTrigger1() { ChessMod := p.PlayMod.getChessMod() EmitList := ChessMod.GetEmitList() EmitId := make(map[string]struct{}, 0) @@ -599,7 +633,7 @@ func EmitRetireTrigger1(p *Player) { } // 发射器退役第二步 生成清理订单 -func EmitRetireTrigger2(p *Player) { +func (p *Player) EmitRetireTrigger2() { ChessMod := p.PlayMod.getChessMod() OrderMod := p.PlayMod.getOrderMod() BaseMod := p.PlayMod.getBaseMod() diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 5f4df5fa..822e9fed 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -110,7 +110,7 @@ func (p *Player) Send(m *MsgMod.Msg) { } func (p *Player) Call(m MsgMod.Msg) { - HandleMsg(p, &m) + p.HandleMsg(m.Clone()) } func (p *Player) SendClientRes() { @@ -239,28 +239,8 @@ func (p *Player) InitPlayer(UserName string) error { } p.PlayMod.mod_list = modData.ModList p.PlayMod.is_update = IsUpdate - - go func() { // 处理数据回调 - var cb *timer.Timer - for { - select { - case <-p.stopSignal: - return - case cb = <-p.MDispatr.ChanTimer: - if cb != nil { - cb.Cb() - } else { - log.Debug("Timer callback or Timer is nil") - } - case msg := <-p.msgChan: - if msg != nil { - p.wg.Done() - log.Debug("player %d recive msg %v", p.M_DwUin, msg) - go HandleMsg(p, msg) - } - } - } - }() + // 启动定时器 + p.DispatcherHandle() p.McronSave = cron.New() _, err = p.McronSave.AddFunc("@every 1m", p.AutoSaveData) if err != nil { @@ -271,10 +251,8 @@ func (p *Player) InitPlayer(UserName string) error { p.ZeroUpdate(nil) p.NoonUpdate(nil) p.Login() - // GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.ZeroUpdate, p) - // GoUtil.RegisterEvent(MergeConst.Notify_Midday_Renew, p.ZeroUpdate, p) p.OrderShip() - SyncFriendMsg(p) + p.SyncFriendMsg() p.UpdateUserInfo() // fix bug ChargeMod := p.PlayMod.getChargeMod() @@ -291,7 +269,7 @@ func (p *Player) OrderShip() { return } for _, OrderInfo := range OrderList { - go TriggerShippingOrderOrigin(p, &msg.ReqShippingOrder{ + go p.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{ OrderSn: OrderInfo.OrderId, }) } @@ -347,7 +325,7 @@ func (p *Player) ZeroUpdate(a []interface{}) { if ChargeMod.IsWeeklyDiscountDay() { PlayroomMod.ResetWeeklyDiscount() } - PlayroomBackData(p) + p.PlayroomBackData() p.PlayMod.getChampshipMod().ZeroUpdate() p.initAcitivity() p.ActivityZeroUpdate() @@ -389,7 +367,7 @@ func (p *Player) Login() { // 限时事件触发 p.LimitedTimeEventTrigger(0) // 猪猪银行触发 - LimitedTimePiggyBankTrigger(p) + p.LimitedTimePiggyBankTrigger() BaseMod := p.PlayMod.getBaseMod() FaceMod := p.PlayMod.getFaceMod() ChargeMod := p.PlayMod.getChargeMod() @@ -397,7 +375,7 @@ func (p *Player) Login() { PlayBaseMod := p.GetPlayerBaseMod() GuideTaskMod := p.PlayMod.getGuideTaskMod() // playroom触发 - LimitedTimePlayroomTrigger(p) // playroom数值变化 + p.LimitedTimePlayroomTrigger() // playroom数值变化 LimitedTimePlayroomWorkTrigger(p) // playroom打工 LimitedTimeEnergyAdd(p) // 能量定时处理 p.ActivityLogin() // 活动登录 @@ -423,14 +401,14 @@ func (p *Player) Login() { PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod.ResetWeeklyDiscount() p.ChargeBackData() - PlayroomBackData(p) + p.PlayroomBackData() }, "WeeklyDiscountStart") } if WeeklyEndTime > now { p.CallEvent(time.Duration(WeeklyEndTime-now)*time.Second, func() { ChargeMod.WeeklyEndTime = 0 p.ChargeBackData() - PlayroomBackData(p) + p.PlayroomBackData() LimitEventMod := p.PlayMod.getLimitedTimeEventMod() LimitEventMod.EndCatDaySale() p.PushClientRes(LimitEventMod.BackData()) @@ -709,7 +687,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { PiggyBankMod := p.PlayMod.getPiggyBankMod() Effect := itemCfg.GetItemEffect(v.Id) PiggyBankMod.AddPiggyBank(Effect) - LimitedTimePiggyBankTrigger(p) + p.LimitedTimePiggyBankTrigger() p.PushClientRes(PiggyBankMod.BackData()) p.TeLog("piggy_bank_income", map[string]interface{}{ "piggy_bank_type": Effect, @@ -755,14 +733,14 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { } RaceMod := p.PlayMod.getRaceMod() RaceMod.AddCoin(v.Num) - RaceBackData(p) + p.RaceBackData() case item.ITEM_TYPE_PLAYROOM_VISIT: // 拜访玩家 - Target := GetVisitorPlayer(p) + Target := p.GetVisitorPlayer() playroomMod := p.PlayMod.getPlayroomMod() playroomMod.Target = Target playroomMod.Status = playroom.STATUS_VISIT // PlayroomVisit(p, Target) - PlayroomBackData(p) + p.PlayroomBackData() case item.ITEM_TYPE_PLAYROOM_DECORATION: // playroom装饰 Effect := itemCfg.GetItemEffect(v.Id) PlayroomMod := p.PlayMod.getPlayroomMod() @@ -830,7 +808,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { } PassMod := p.PlayMod.getPassMod() PassMod.AddExp(v.Num) - ActPassBackData(p) + p.ActPassBackData() default: err := ItemMod.AddItem(v.Id, v.Num) p.TeLog("asset_change", map[string]interface{}{ @@ -860,16 +838,16 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { for k := range BackDataType { switch k { case item.ITEM_TYPE_AVATAR: - BackUserInfo(p) + p.BackUserInfo() case item.ITEM_TYPE_EMOJI: - BackUserInfo(p) + p.BackUserInfo() case item.ITEM_TYPE_FACE: - BackUserInfo(p) + p.BackUserInfo() case item.ITEM_TYPE_PLAYROOM_DECORATION, item.ITEM_TYPE_PLAYROOM_DRESS, item.ITEM_TYPE_PLAYROOM_DECORATION_SET, item.ITEM_TYPE_PLAYROOM_DRESS_SET: - PlayroomBackData(p) + p.PlayroomBackData() } } p.PetItemUseLog(itemList) @@ -906,8 +884,8 @@ func (p *Player) LoginBackData() { p.PushClientRes(p.PlayMod.mod_list.Guide.BackData()) p.BackDataActivity() p.ChargeBackData() - BackChampship(p) - BackUserInfo(p) + p.BackChampship() + p.BackUserInfo() } func (p *Player) InitPlayerOnly() { @@ -1192,3 +1170,27 @@ func (p *Player) GetIp() string { } return p.GetAgent().RemoteAddr().String() } + +func (p *Player) DispatcherHandle() { + go func() { + var cb *timer.Timer + for { + select { + case <-p.stopSignal: + return + case cb = <-p.MDispatr.ChanTimer: + if cb != nil { + cb.Cb() + } else { + log.Debug("Timer callback or Timer is nil") + } + case msg := <-p.msgChan: + if msg != nil { + p.wg.Done() + log.Debug("player %d recive msg %v", p.M_DwUin, msg) + go p.HandleMsg(msg.Clone()) + } + } + } + }() +} diff --git a/src/server/game/PlayerBack.go b/src/server/game/PlayerBack.go index 06554330..e4fc9bc1 100644 --- a/src/server/game/PlayerBack.go +++ b/src/server/game/PlayerBack.go @@ -18,7 +18,7 @@ func (p *Player) NotifyPlayroomTask() { p.PushClientRes(m) } -func PlayroomBackData(p *Player) { +func (p *Player) PlayroomBackData() { r := &proto.ResPlayroom{} PlayroomMod := p.PlayMod.getPlayroomMod() FriendMod := p.PlayMod.getFriendMod() @@ -27,7 +27,7 @@ func PlayroomBackData(p *Player) { Opponent := make([]*proto.RoomOpponent, 0) FriendList := make([]*proto.FriendRoom, 0) if PlayroomMod.Target == 0 { - PlayroomMod.Target = GetVisitorPlayer(p) + PlayroomMod.Target = p.GetVisitorPlayer() } TargerRoom := &proto.FriendRoom{} if PlayroomMod.Target != 0 { @@ -163,7 +163,7 @@ func PlayroomBackData(p *Player) { p.PushClientRes(r) } -func PlayroomVisit(p *Player, Uid int) { +func (p *Player) PlayroomVisit(Uid int) { if Uid == 0 { p.PushClientRes(&proto.ResPlayroomInfo{}) return @@ -211,7 +211,7 @@ func (p *Player) NotifyPlayroomKiss() { p.PushClientRes(m) } -func BackUserInfo(p *Player) { +func (p *Player) BackUserInfo() { BaseMod := p.PlayMod.getBaseMod() FaceMod := p.PlayMod.getFaceMod() AvatarMod := p.PlayMod.getAvatarMod() @@ -295,7 +295,7 @@ func (p *Player) ChargeBackData() { }) } -func BackChampship(p *Player) { +func (p *Player) BackChampship() { ChampshipMod := p.PlayMod.getChampshipMod() MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(int(p.M_DwUin)) MyPreRank := G_GameLogicPtr.ChampshipMgr.getLastMyRank(int(p.M_DwUin)) @@ -303,7 +303,7 @@ func BackChampship(p *Player) { } // 返回好友信息 -func FriendListBackData(p *Player) { +func (p *Player) FriendListBackData() { FriendMod := p.PlayMod.getFriendMod() var fl []*proto.ResPlayerSimple for k, v := range FriendMod.GetFriendList() { @@ -329,7 +329,7 @@ func FriendListBackData(p *Player) { }) } -func FriendApplyBackData(p *Player) { +func (p *Player) FriendApplyBackData() { FriendMod := p.PlayMod.getFriendMod() var al []*proto.ResFriendApplyInfo for k, v := range FriendMod.ApplyList { @@ -346,7 +346,7 @@ func FriendApplyBackData(p *Player) { }) } -func FriendLogBackData(p *Player) { +func (p *Player) FriendLogBackData() { FriendMod := p.PlayMod.getFriendMod() var log []*proto.ResFriendLog for _, v := range FriendMod.Log { @@ -389,7 +389,7 @@ func FriendLogBackData(p *Player) { }) } -func FriendCardBackData(p *Player) { +func (p *Player) FriendCardBackData() { FriendMod := p.PlayMod.getFriendMod() var msgList []*proto.ResFriendCard for _, v := range FriendMod.Card { diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index f1eaf9fd..cd994d00 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -562,7 +562,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) return 0, err } } - EmitRetireTrigger2(player) + player.EmitRetireTrigger2() player.InitOrderItem() player.PushClientRes(p.BackAsset()) return upLv, nil diff --git a/src/server/game/PlayerChessMod.go b/src/server/game/PlayerChessMod.go index 454390bb..81c0c049 100644 --- a/src/server/game/PlayerChessMod.go +++ b/src/server/game/PlayerChessMod.go @@ -207,7 +207,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa player.PushClientRes(HandbookMod.BackData()) triggerComposeChess(player, NewChessId, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList()) // 获取活动道具 - ActItem := GetActivityItem(player, GoUtil.Int32ToInt(v.ActType)) + ActItem := player.GetActivityItem(GoUtil.Int32ToInt(v.ActType)) itemList = item.Merge(itemList, ActItem) case msg.HANDLE_TYPE_BUY: //购买棋子 loseGold, err := ChessMod.BuyChess(ChessId) @@ -287,7 +287,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa player.PushClientRes(LimitedTimeEventMod.BackData()) } player.QuestTriggerList(TriggerList) - EmitRetireTrigger1(player) + player.EmitRetireTrigger1() player.InitOrderItem() player.PushClientRes(ChessMod.BackData()) player.PlayMod.save() diff --git a/src/server/game/PlayerDataModule.go b/src/server/game/PlayerDataModule.go deleted file mode 100644 index 7068b39c..00000000 --- a/src/server/game/PlayerDataModule.go +++ /dev/null @@ -1,62 +0,0 @@ -package game - -// "fmt" - -// "math" - -type PlayerDataModule interface { - LoadDataFromDB(key interface{}) bool - SaveDataFromDB(key interface{}) bool - SetPlayer(p *Player) - GetPlayer() *Player - GetData() interface{} - ClearData() bool - Reconnect(bool) - AutoSaveInterval() -} - -type PlayerData struct { - Name string - IsHaveDataDb bool - M_Player *Player -} - -func (d *PlayerData) SetPlayer(p *Player) { - d.M_Player = p -} - -func (d *PlayerData) GetPlayer() *Player { - return d.M_Player -} - -func (d *PlayerData) Reconnect(b bool) { - -} -func (d *PlayerData) AutoSaveInterval() { - -} - -func (d *PlayerData) LoadDataFromDB(UserName interface{}) bool { - - return true -} - -func (d *PlayerData) SaveDataFromDB(Key interface{}) bool { - - return true -} -func (d *PlayerData) ClearData() bool { - - return true -} -func (d *PlayerData) GetData() interface{} { - res := struct{}{} - return res -} - -func NewPlayerData(name string, player *Player) *PlayerData { - return &PlayerData{ - Name: name, - M_Player: player, - } -} diff --git a/src/server/game/PlayerMod.go b/src/server/game/PlayerMod.go index 3b9f9e81..939ba214 100644 --- a/src/server/game/PlayerMod.go +++ b/src/server/game/PlayerMod.go @@ -44,6 +44,32 @@ import ( "time" ) +type PlayerData struct { + Name string + IsHaveDataDb bool + M_Player *Player +} + +func (d *PlayerData) SetPlayer(p *Player) { + d.M_Player = p +} + +func (d *PlayerData) GetPlayer() *Player { + return d.M_Player +} + +func (d *PlayerData) GetData() interface{} { + res := struct{}{} + return res +} + +func NewPlayerData(name string, player *Player) *PlayerData { + return &PlayerData{ + Name: name, + M_Player: player, + } +} + type PlayerModData struct { *PlayerData Data db.SqlModStruct diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 86221855..98e0c2d2 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -290,7 +290,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { if OrderType == order.Pet_type { Item = player.FormatPetOrderItem(Item) } - ActItem := GetActivityItem(player, GoUtil.Int32ToInt(req.ActType)) + ActItem := player.GetActivityItem(GoUtil.Int32ToInt(req.ActType)) Item = item.Merge(Item, ActItem) if !OrderMod.CheckSuperOrder() { if LimitedTimeEventMod.RemoveSuperOrder() { @@ -408,11 +408,11 @@ func ReqRewardOrder(player *Player, buf []byte) error { "preset_order_step": preset_order_step, }) player.PetItemGetLog(Item, nil, "Order") - EmitRetireTrigger2(player) + player.EmitRetireTrigger2() Lv := player.GetPlayerBaseMod().GetLevel() EnergyMul := player.PlayMod.getBaseMod().GetEnergyMul() Emit := ChessMod.GetOrderEmit() - TriggerSeedSource(player) + player.TriggerSeedSource() //NewOrder := TriggerSeedOrder(player) // if NewOrder == nil || len(NewOrder.MergeId) == 0 { // OrderMod.CreateOrder(Lv, Emit, EnergyMul) @@ -452,7 +452,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { player.PlayMod.save() player.PushClientRes(PiggyBankMod.BackData()) player.PushClientRes(OrderMod.BackData()) - BackChampship(player) + player.BackChampship() player.PushClientRes(LimitedTimeEventMod.BackData()) player.PushClientRes(ChessMod.BackData()) player.PushClientRes(LimitedTimeEventMod.ProgressBackData()) @@ -578,7 +578,7 @@ func ReqDecorate(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, }) player.HandleInUserRank() - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() return nil } @@ -651,7 +651,7 @@ func ReqDecorateAll(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, }) player.HandleInUserRank() - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() return nil } @@ -666,7 +666,7 @@ func ReqDecorateReward(player *Player, buf []byte) error { func UpdatePlayerChessDataFunc(player *Player, buf []byte) error { data := &PlayerChessData{} err := data.UpdatePlayerChessData(player, buf) - RedBackData(player) + player.RedBackData() player.UpdateUserInfo() return err } @@ -714,7 +714,7 @@ func ReqGetChessFromBuff(player *Player, buf []byte) error { player.PushClientRes(OrderMod.BackData()) } triggerComposeChess(player, ChessId, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList()) - EmitRetireTrigger1(player) + player.EmitRetireTrigger1() player.InitOrderItem() player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) @@ -1493,7 +1493,7 @@ func ReqSetAvatar(player *Player, buf []byte) error { player.PushClientRes(&msg.ResSetAvatar{ Code: msg.RES_CODE_SUCCESS, }) - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() b := false if req.Avatar == 0 { @@ -1536,7 +1536,7 @@ func ReqSetFace(player *Player, buf []byte) error { "is_platform": is_platform, }) player.PlayerDecoSetLog("face", int(req.Face), "") - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() return nil } @@ -1893,7 +1893,7 @@ func ReqApplyFriend(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointInvite(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() return nil } @@ -1932,12 +1932,12 @@ func ReqAgreeFriend(player *Player, buf []byte) error { "add_type": "接受申请", }) player.AddLog(Uid, friend.LOG_TYPE_FRIEND_BECOME, "", GoUtil.Now()) - FriendApplyBackData(player) - FriendLogBackData(player) + player.FriendApplyBackData() + player.FriendLogBackData() PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() player.PlayMod.save() return nil } @@ -1965,7 +1965,7 @@ func ReqDelFriend(player *Player, buf []byte) error { Uid: req.Uid, }) player.AddLog(Uid, friend.LOG_TYPE_FRIEND_DELETE, "", GoUtil.Now()) - FriendListBackData(player) + player.FriendListBackData() player.TeLog("friend_delete", map[string]interface{}{ "player_id": Uid, }) @@ -1994,7 +1994,7 @@ func ReqRefuseFriend(player *Player, buf []byte) error { SendT: GoUtil.Now(), } FriendMgrSend(m) - FriendApplyBackData(player) + player.FriendApplyBackData() return nil } @@ -2906,7 +2906,7 @@ func ReqCreateOrderSn(player *Player, buf []byte) error { if err != nil { return err } - OrderSn, err := CreateOrderSn(player, req) + OrderSn, err := player.CreateOrderSn(req) if err != nil { return err } @@ -2925,7 +2925,7 @@ func ReqShippingOrder(player *Player, buf []byte) error { return err } - go TriggerShippingOrder(player, req) + go player.TriggerShippingOrder(req) player.PushClientRes(&msg.ResShippingOrder{ Code: msg.RES_CODE_SUCCESS, }) @@ -2945,8 +2945,8 @@ func ReqChampshipReward(player *Player, buf []byte) error { return err } player.PlayMod.save() - BackChampship(player) - TriggerSeed(player) + player.BackChampship() + player.TriggerSeed() player.PushClientRes(&msg.ResChampshipReward{ Code: msg.RES_CODE_SUCCESS, }) @@ -3016,22 +3016,22 @@ func ReqFriendRecommend(player *Player, buf []byte) error { } func ReqFriendList(player *Player, buf []byte) error { - FriendListBackData(player) + player.FriendListBackData() return nil } func ReqFriendApply(player *Player, buf []byte) error { - FriendApplyBackData(player) + player.FriendApplyBackData() return nil } func ReqFriendCardMsg(player *Player, buf []byte) error { - FriendCardBackData(player) + player.FriendCardBackData() return nil } func ReqFriendTimeLine(player *Player, buf []byte) error { - FriendLogBackData(player) + player.FriendLogBackData() return nil } @@ -3132,7 +3132,7 @@ func ReqChampshipRankReward(player *Player, buf []byte) error { FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_CHAMPIONSHIP_RANK, GoUtil.String(MyLastRank)) } player.PlayMod.save() - BackChampship(player) + player.BackChampship() player.PushClientRes(&msg.ResChampshipRankReward{ Code: msg.RES_CODE_SUCCESS, }) @@ -3158,7 +3158,7 @@ func ReqSetName(player *Player, buf []byte) error { ResultCode: msg.RES_CODE_SUCCESS, }) player.PlayMod.save() - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() player.TeLog("nickname_set", map[string]interface{}{ "nickname_name": req.Name, @@ -3178,10 +3178,10 @@ func ReqSetPetName(player *Player, buf []byte) error { ResultCode: msg.RES_CODE_SUCCESS, }) player.PlayMod.save() - BackUserInfo(player) + player.BackUserInfo() PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.UnLock(BaseMod.GetLevel()) - LimitedTimePlayroomTrigger(player) + player.LimitedTimePlayroomTrigger() player.UpdateUserInfo() player.TeLog("petname_set", map[string]interface{}{ "petname": req.Name, @@ -3190,7 +3190,7 @@ func ReqSetPetName(player *Player, buf []byte) error { } func ReqUserInfo(player *Player, buf []byte) error { - BackUserInfo(player) + player.BackUserInfo() return nil } @@ -3326,7 +3326,7 @@ func ReqAutoAddInviteFriend(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() player.TeLog("friend_add", map[string]interface{}{ "player_id": req.Id, "add_type": "邀请注册", @@ -3370,7 +3370,7 @@ func ReqAutoAddInviteFriend2(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() player.TeLog("friend_add", map[string]interface{}{ "player_id": req.Id, "add_type": "邀请注册", @@ -3418,7 +3418,7 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error { // 请求挖矿基础数据 func ReqMining(player *Player, buf []byte) error { - MiningBackData(player) + player.MiningBackData() return nil } @@ -3467,7 +3467,7 @@ func ReqMiningTake(player *Player, buf []byte) error { player.TeLog("ReqMiningTake", map[string]interface{}{}) player.PlayMod.save() player.NotifyRed(activity.ACT_TYPE_MINING) - MiningBackData(player) + player.MiningBackData() return nil } @@ -3506,7 +3506,7 @@ func ReqMiningReward(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, }) player.PlayMod.save() - MiningBackData(player) + player.MiningBackData() return nil } @@ -3524,7 +3524,7 @@ func ReqGuessColor(player *Player, buf []byte) error { return err } player.PlayMod.save() - GuessColorBackData(player) + player.GuessColorBackData() return nil } @@ -3563,7 +3563,7 @@ func ReqGuessColorTake(player *Player, buf []byte) error { "o_map": req.OMap, }) player.PlayMod.save() - GuessColorBackData(player) + player.GuessColorBackData() player.NotifyRed(activity.ACT_TYPE_GUESS_COLOR) return nil } @@ -3604,13 +3604,13 @@ func ReqGuessColorReward(player *Player, buf []byte) error { "item_list": itemList, }) player.PlayMod.save() - GuessColorBackData(player) + player.GuessColorBackData() return nil } // 请求竞赛基础数据 func ReqRace(player *Player, buf []byte) error { - RaceBackData(player) + player.RaceBackData() return nil } @@ -3630,7 +3630,7 @@ func ReqRaceStart(player *Player, buf []byte) error { }) return err } - RaceBackData(player) + player.RaceBackData() player.PushClientRes(&msg.ResRaceStart{ Code: msg.RES_CODE_SUCCESS, }) @@ -3661,7 +3661,7 @@ func ReqRaceReward(player *Player, buf []byte) error { }) return err } - RaceBackData(player) + player.RaceBackData() player.TeLog("ReqRaceReward", map[string]interface{}{ "item_list": Items, }) @@ -3673,7 +3673,7 @@ func ReqRaceReward(player *Player, buf []byte) error { // 请求playroom基础数据 func ReqPlayroom(player *Player, buf []byte) error { - PlayroomBackData(player) + player.PlayroomBackData() return nil } @@ -3690,10 +3690,10 @@ func ReqPlayroomInfo(player *Player, buf []byte) error { Targer = PlayroomMod.GetTarget() } if req.Uid == -1 { - Targer = GetVisitorPlayer(player) + Targer = player.GetVisitorPlayer() } if Targer == 0 { - PlayroomVisit(player, Targer) + player.PlayroomVisit(Targer) return nil } PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Targer) @@ -3732,7 +3732,7 @@ func ReqPlayroomInfo(player *Player, buf []byte) error { PlayroomMod.SetGameRewardFlip(int(float64(PlayerData.Star)*0.03), int(float64(PlayerData.Star)*0.05), int(float64(PlayerData.Star)*0.1)) } player.PlayMod.save() - PlayroomVisit(player, Targer) + player.PlayroomVisit(Targer) return nil } @@ -3776,7 +3776,7 @@ func ReqPlayroomInteract(player *Player, buf []byte) error { player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_INTERACT, A: []interface{}{int(req.Id)}}) player.PlayMod.save() G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_KISS, 0) - LimitedTimePlayroomTrigger_(player, PType) + player.LimitedTimePlayroomTrigger_(PType) player.NotifyPlayroomKiss() player.TeLog("playroom_interact", map[string]interface{}{ "interact_id": int(req.Id), @@ -3862,7 +3862,7 @@ func ReqPlayroomGame(player *Player, buf []byte) error { "item_list": Items, }) PlayroomMod.ResetGame() - PlayroomBackData(player) + player.PlayroomBackData() player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_game") player.PushClientRes(&msg.ResPlayroomGame{ Code: msg.RES_CODE_SUCCESS, @@ -3924,7 +3924,7 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error { FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE_1, "") PlayroomMod.ResetGame() player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_select_reward") - PlayroomBackData(player) + player.PlayroomBackData() player.PlayMod.save() player.PushClientRes(&msg.ResPlayroomSelectReward{ Code: msg.RES_CODE_SUCCESS, @@ -3975,7 +3975,7 @@ func ReqPlayroomWork(player *Player, buf []byte) error { }) player.PlayMod.save() player.PushClientRes(PlayroomMod.NotifyWork()) - // PlayroomBackData(player) + // player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomWork{ Code: msg.RES_CODE_SUCCESS, }) @@ -4014,7 +4014,7 @@ func ReqPlayroomDraw(player *Player, buf []byte) error { return err } player.PlayMod.save() - // PlayroomBackData(player) + // player.PlayroomBackData() player.PushClientRes(PlayroomMod.NotifyMood()) player.TeLog("playroom_draw", map[string]interface{}{ "draw_id": Id, @@ -4057,7 +4057,7 @@ func ReqPlayroomChip(player *Player, buf []byte) error { G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_CHIP_SET, len(PlayroomMod.ChipList)) player.PlayMod.save() - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomChip{ Code: msg.RES_CODE_SUCCESS, }) @@ -4086,7 +4086,7 @@ func ReqPlayroomFlip(player *Player, buf []byte) error { "Id": req.Id, }) player.PlayMod.save() - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomFlip{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, @@ -4145,7 +4145,7 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { }) player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_flip_reward") player.PlayMod.save() - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomFlipReward{ Code: msg.RES_CODE_SUCCESS, }) @@ -4264,7 +4264,7 @@ func ReqPlayroomUnlock(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, Id: int32(req.Id), }) - PlayroomBackData(player) + player.PlayroomBackData() return nil } @@ -4301,7 +4301,7 @@ func ReqPlayroomTask(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, Id: int32(req.Id), }) - PlayroomBackData(player) + player.PlayroomBackData() return nil } @@ -4480,7 +4480,7 @@ func ReqPlayroomShop(player *Player, buf []byte) error { player.PetItemGetLog(AddItems, LoseItem, "Shop") player.PlayMod.save() player.PushClientRes(PlayroomMod.NotifyMood()) - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomShop{ Code: msg.RES_CODE_SUCCESS, }) @@ -4698,7 +4698,7 @@ func ReqSetEmoji(player *Player, buf []byte) error { player.PushClientRes(&msg.ResSetEmoji{ Code: msg.RES_CODE_SUCCESS, }) - BackUserInfo(player) + player.BackUserInfo() return nil } @@ -4797,7 +4797,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.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomDressSet{ Code: msg.RES_CODE_SUCCESS, }) @@ -4820,7 +4820,7 @@ func ReqPlayroomPetAirSet(player *Player, buf []byte) error { return error } player.PlayMod.save() - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomPetAirSet{ Code: msg.RES_CODE_SUCCESS, }) @@ -4983,12 +4983,12 @@ func ReqAddNpc(player *Player, buf []byte) error { InviteMod.AddInvite(int(req.NpcId)) } player.PlayMod.save() - FriendListBackData(player) + player.FriendListBackData() PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointInvite(BaseMod.GetLevel()) PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() player.TeLog("add_npc", map[string]interface{}{ "NpcId": int(req.NpcId), }) @@ -5669,7 +5669,7 @@ func ReqCatnipRefuse(player *Player, buf []byte) error { } func ReqActPass(player *Player, buf []byte) error { - ActPassBackData(player) + player.ActPassBackData() return nil } @@ -5778,7 +5778,7 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { }) return err } - FriendLogBackData(player) + player.FriendLogBackData() player.PushClientRes(&msg.ResFriendReplyHandle{ Code: msg.RES_CODE_SUCCESS, LogId: req.LogId, diff --git a/src/server/game/Trigger.go b/src/server/game/Trigger.go index 3e587327..4e9b475f 100644 --- a/src/server/game/Trigger.go +++ b/src/server/game/Trigger.go @@ -47,7 +47,7 @@ func (player *Player) MailTrigger(Tr *quest.Trigger) bool { } tr := false for _, v := range t { - if checkTriggerCondition(player, v.Trigger) { + if player.checkTriggerCondition(v.Trigger) { Title := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, v.Title) Content := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, v.Content) TitleEn := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, v.Title) @@ -76,7 +76,7 @@ func (player *Player) MailTrigger(Tr *quest.Trigger) bool { return tr } -func checkTriggerCondition(player *Player, Trigger []string) bool { +func (player *Player) checkTriggerCondition(Trigger []string) bool { if len(Trigger) < 4 { return false } @@ -93,11 +93,11 @@ func checkTriggerCondition(player *Player, Trigger []string) bool { } } -func TriggerShippingOrderOrigin(player *Player, req *msg.ReqShippingOrder) { +func (player *Player) TriggerShippingOrderOrigin(req *msg.ReqShippingOrder) { OrderSn := req.OrderSn Status := int(req.Status) if Status == MergeConst.ORDER_STATUS_CANCEL { // 取消支付 - CancelOrder(player, OrderSn) + player.CancelOrder(OrderSn) player.PushClientRes(&msg.ResShippingOrder{ Code: msg.RES_CODE_SUCCESS, Msg: "cancel success", @@ -132,9 +132,9 @@ func TriggerShippingOrderOrigin(player *Player, req *msg.ReqShippingOrder) { OrderExtraData.ChargeId = OrderData.ProductId } if OrderExtraData.Type == 0 { - Charge(player, int(OrderData.ProductId)) + player.Charge(int(OrderData.ProductId)) } else { - SendCharge(player, OrderExtraData) + player.SendCharge(OrderExtraData) } OrderData.PayStatus = MergeConst.ORDER_STATUS_SHIP OrderData.ProductName = req.ProduceId @@ -159,11 +159,11 @@ func TriggerShippingOrderOrigin(player *Player, req *msg.ReqShippingOrder) { player.SendClientRes() } -func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { +func (player *Player) TriggerShippingOrder(req *msg.ReqShippingOrder) { OrderSn := req.OrderSn Status := int(req.Status) if Status == MergeConst.ORDER_STATUS_CANCEL { // 取消支付 - CancelOrder(player, OrderSn) + player.CancelOrder(OrderSn) player.PushClientRes(&msg.ResShippingOrder{ Code: msg.RES_CODE_SUCCESS, Msg: "cancel success", @@ -178,7 +178,7 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { if n > 14 { break } - OrderData, err = GoogleVerify(player, OrderSn, req.ProduceId, req.Token) + OrderData, err = player.GoogleVerify(OrderSn, req.ProduceId, req.Token) if err != nil { log.Debug("GoogleVerify parmas OrderSn:%s; ProduceId:%s; Token:%s", OrderSn, req.ProduceId, req.Token) log.Debug("GoogleVerify err:%v", err) @@ -225,9 +225,9 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { OrderExtraData.ChargeId = OrderData.ProductId } if OrderExtraData.Type == 0 { - Charge(player, int(OrderData.ProductId)) + player.Charge(int(OrderData.ProductId)) } else { - SendCharge(player, OrderExtraData) + player.SendCharge(OrderExtraData) } OrderData.PayStatus = MergeConst.ORDER_STATUS_SHIP OrderData.ProductName = req.ProduceId @@ -249,7 +249,7 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { player.SendClientRes() } -func TriggerComfortOrder(p *Player) { +func (p *Player) TriggerComfortOrder() { BaseMod := p.PlayMod.getBaseMod() Now := GoUtil.Now() Lv := BaseMod.GetLevel() @@ -265,8 +265,8 @@ func TriggerComfortOrder(p *Player) { OrderMod.CreateNormalOrder(BaseMod.GetLevel(), EmitList, EnergyMul, order.COMFORT_TYPE) } -func TriggerSeed(player *Player) { - ChampshipMod := player.PlayMod.getChampshipMod() +func (p *Player) TriggerSeed() { + ChampshipMod := p.PlayMod.getChampshipMod() Items, Score := champshipCfg.GetRewardItems(ChampshipMod.Reward + 1) if Score < 50 { return @@ -278,7 +278,7 @@ func TriggerSeed(player *Player) { break } } - BaseMod := player.PlayMod.getBaseMod() + BaseMod := p.PlayMod.getBaseMod() if !b { BaseMod.SetSeed(false) } else { @@ -286,8 +286,8 @@ func TriggerSeed(player *Player) { } } -func TriggerSeedSource(player *Player) { - BaseMod := player.PlayMod.getBaseMod() +func (p *Player) TriggerSeedSource() { + BaseMod := p.PlayMod.getBaseMod() if !BaseMod.GetSeed() { return } @@ -295,7 +295,7 @@ func TriggerSeedSource(player *Player) { Energy := BaseMod.GetEnergy() Total += Energy - ChessMod := player.PlayMod.getChessMod() + ChessMod := p.PlayMod.getChessMod() ChessList := ChessMod.GetUnlockChessList() ChessBuff := ChessMod.GetChessBuf() AllChess := append(ChessList, ChessBuff...) @@ -322,15 +322,15 @@ func TriggerSeedSource(player *Player) { BaseMod.SetSource(Total) } -func TriggerSeedOrder(player *Player) *order.Order { - OrderMod := player.PlayMod.getOrderMod() - ChessMod := player.PlayMod.getChessMod() - BaseMod := player.PlayMod.getBaseMod() +func (p *Player) TriggerSeedOrder() *order.Order { + OrderMod := p.PlayMod.getOrderMod() + ChessMod := p.PlayMod.getChessMod() + BaseMod := p.PlayMod.getBaseMod() if !BaseMod.GetSeed() { return nil } OrderMod.CreatOrderPool(BaseMod.Level, ChessMod.GetOrderEmit(), BaseMod.EnergyMul) - ChampshipMod := player.PlayMod.getChampshipMod() + ChampshipMod := p.PlayMod.getChampshipMod() NeedScore := champshipCfg.GetRewardTotalScore(ChampshipMod.Reward + 1) E := BaseMod.GetSource() ChessList := ChessMod.GetUnlockChessList() diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 0c0a144e..16c6e055 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -133,8 +133,8 @@ func UnitOrderSeed(player *Player) error { BaseMod := player.PlayMod.getBaseMod() BaseMod.Seed = true - TriggerSeedSource(player) - o := TriggerSeedOrder(player) + player.TriggerSeedSource() + o := player.TriggerSeedOrder() fmt.Println(o) elapsed := time.Since(start) @@ -273,16 +273,15 @@ func UnitOrder2(p *Player, Lv, EnergyMul int) float64 { func UnitChess1(p *Player) error { ChessMod := p.PlayMod.getChessMod() p.PushClientRes(ChessMod.BackData()) - EmitRetireTrigger1(p) + p.EmitRetireTrigger1() DailyTaskMod := p.PlayMod.getDailyTaskMod() p.PushClientRes(DailyTaskMod.BackData()) return nil } func UnitPlayroom(p *Player) error { - //PlayroomMod := p.PlayMod.getPlayroomMod() - //PlayroomMod.UnLock(15) - PlayroomBackData(p) + + p.PlayroomBackData() return nil } diff --git a/src/server/game/admin.go b/src/server/game/admin.go index 59c8befc..ba4a62e1 100644 --- a/src/server/game/admin.go +++ b/src/server/game/admin.go @@ -134,7 +134,7 @@ func ReqAdminShipping(args []interface{}) error { } Player := G_GameLogicPtr.GetPlayer(int64(OrderInfo.Uid)) if Player != nil { - go TriggerShippingOrderOrigin(Player, &msg.ReqShippingOrder{ + go Player.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{ OrderSn: req.OrderSn, }) res["Msg"] = "player online,triggered sync" diff --git a/src/server/go.mod b/src/server/go.mod index b5f48239..5dd700d0 100644 --- a/src/server/go.mod +++ b/src/server/go.mod @@ -11,7 +11,6 @@ require ( github.com/alibabacloud-go/tea-utils/v2 v2.0.7 github.com/aliyun/credentials-go v1.4.6 github.com/go-sql-driver/mysql v1.8.1 - github.com/gorilla/mux v1.8.1 github.com/gorilla/websocket v1.5.3 github.com/jmoiron/sqlx v1.4.0 github.com/redis/go-redis/v9 v9.6.1 @@ -61,9 +60,9 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/google/uuid v1.6.0 // indirect + github.com/tuyou/galog v0.0.0 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - github.com/tuyou/galog v0.0.0 ) replace github.com/tuyou/galog => ./galog diff --git a/src/server/go.sum b/src/server/go.sum index 8db7fcaf..f3a9147f 100644 --- a/src/server/go.sum +++ b/src/server/go.sum @@ -124,8 +124,6 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= -github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= From af72af6ec4508f1544bd247f774d20ac1b049ebb Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 9 Dec 2025 14:17:42 +0800 Subject: [PATCH 40/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-=E6=8E=A5=E5=8F=A3=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/RegisterNetworkFunc.go | 3 ++- src/server/msg/Gameapi.pb.go | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 98e0c2d2..228f3eb6 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -5471,7 +5471,8 @@ func ReqCatnipMultiply(player *Player, buf []byte) error { //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipMultiply{ - Code: msg.RES_CODE_SUCCESS, + Code: msg.RES_CODE_SUCCESS, + Multiply: req.Multiply, }) return nil } diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 82173191..d292d438 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -26568,6 +26568,7 @@ type ResCatnipMultiply struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Multiply int32 `protobuf:"varint,3,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26616,6 +26617,13 @@ func (x *ResCatnipMultiply) GetMsg() string { return "" } +func (x *ResCatnipMultiply) GetMultiply() int32 { + if x != nil { + return x.Multiply + } + return 0 +} + // 游戏转盘 type ReqCatnipPlay struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -29422,10 +29430,11 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x10\n" + "\x03Uid\x18\x03 \x01(\x03R\x03Uid\"/\n" + "\x11ReqCatnipMultiply\x12\x1a\n" + - "\bMultiply\x18\x01 \x01(\x05R\bMultiply\"M\n" + + "\bMultiply\x18\x01 \x01(\x05R\bMultiply\"i\n" + "\x11ResCatnipMultiply\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\x1f\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x1a\n" + + "\bMultiply\x18\x03 \x01(\x05R\bMultiply\"\x1f\n" + "\rReqCatnipPlay\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\"Y\n" + "\rResCatnipPlay\x12&\n" + From d17992a6f1452036d0bf67ffc3d793120629eec9 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 9 Dec 2025 17:28:30 +0800 Subject: [PATCH 41/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-=E9=A2=86=E5=A5=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/catnip/Catnip.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index 907feb48..f77bb81b 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -191,7 +191,11 @@ func (c *CatnipMod) Reward(Id, Progress int) ([]*item.Item, *CatnipGame, error) return nil, nil, fmt.Errorf("reward for progress %d has already been claimed in game ID %d", Progress, Id) } GameInfo.Reward = append(GameInfo.Reward, Progress) - return catnipCfg.GetProgressReward(c.Id, Progress), GameInfo, nil + Items := catnipCfg.GetProgressReward(c.Id, Progress) + if Items == nil { + return nil, nil, fmt.Errorf("no reward found for progress %d in game ID %d", Progress, Id) + } + return Items, GameInfo, nil } func (c *CatnipMod) GrandReward() ([]*item.Item, error) { From 7dcd68399791409fc1e4be3c5e476339ec170cd6 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 9 Dec 2025 17:34:47 +0800 Subject: [PATCH 42/49] =?UTF-8?q?=E3=80=90=E8=AE=A2=E5=8D=95=E3=80=91-?= =?UTF-8?q?=E5=AE=A0=E7=89=A9=E8=AE=A2=E5=8D=95=E7=9A=84=E6=A3=8B=E5=AD=90?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E6=98=AF=E8=87=AA=E5=8A=A8=E5=8F=91=E5=B0=84?= =?UTF-8?q?=E5=99=A8=E6=A3=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/mergeData/MergeDataCfg.go | 38 +++-------------------- src/server/game/UnitTest.go | 10 +++++- src/server/game/mod/order/OrderFunc.go | 18 ++++++++--- src/server/gamedata/type.go | 1 + 4 files changed, 27 insertions(+), 40 deletions(-) diff --git a/src/server/conf/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index b9f6da87..e2ded422 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -11,11 +11,9 @@ import ( ) const ( - CFG_NAME = "MergeData" - CONST_NAME = "MergeDataConst" - CFG_MERGE_EMIT = "MergeDataEmit" - CFG_MERGE_EMIT_TYPE = "MergeDataEmitType" - CFG_MERGE_COLOR = "MergeDataColor" + CFG_NAME = "MergeData" + CONST_NAME = "MergeDataConst" + CFG_MERGE_EMIT = "MergeDataEmit" // 棋子类型 CHESS_PRODUCT_MAIN_TYPE = 1 // 主产物 @@ -27,17 +25,6 @@ func init() { gamedata.InitCfg(CFG_NAME) gamedata.InitCfg(CONST_NAME) gamedata.InitCfg(CFG_MERGE_EMIT) - gamedata.InitCfg(CFG_MERGE_EMIT_TYPE) - gamedata.InitCfg(CFG_MERGE_COLOR) -} - -func GetEmitTypeProduce(EmitType string) []string { - data, err := gamedata.GetDataByKey(CFG_MERGE_EMIT_TYPE, EmitType) - if err != nil { - // log.Debug("GetEmitTypeProduce GetOne EmitType:%s not found", EmitType) - return []string{} - } - return strings.Split(gamedata.GetStringValue(data, "Produce"), ",") } func GetEmitTypeByColor(Color string) string { @@ -91,6 +78,7 @@ func GetOne(Id int) (*gamedata.MergeDataRecord, error) { Type: gamedata.ParseString(data["Type"]), Emit_Product: gamedata.ParseString(data["Emit_Product"]), CoolTime: gamedata.ParseInt(data["CoolTime"]), + Emit_Type: gamedata.ParseString(data["Emit_Type"]), }, nil } @@ -591,24 +579,6 @@ func getColorProb(Emit_List string, Color string) float64 { return Prob } -func GetColorType(Color string) int { - data, err := gamedata.GetDataByKey(CFG_MERGE_COLOR, Color) - if err != nil { - log.Debug("GetColorType GetOne Color:%s not found", Color) - return 0 - } - Type := gamedata.GetStringValue(data, "Type") - switch Type { - case "main": - return CHESS_PRODUCT_MAIN_TYPE - case "secondary": - return CHESS_PRODUCT_SECONDARY_TYPE - case "sub": - return CHESS_PRODUCT_SUB_TYPE - } - return CHESS_PRODUCT_MAIN_TYPE -} - func GetMergeStar(MergeList []int) int { Star := 0 for _, v := range MergeList { diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 16c6e055..25662c4a 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -1,6 +1,8 @@ package game import ( + "bytes" + "encoding/gob" "fmt" "math" mergeDataCfg "server/conf/mergeData" @@ -372,7 +374,13 @@ func UnitOrderPetReward(p *Player) error { } func UnitCatnip(p *Player) error { - p.CatnipBackData() + //OrderMod := p.PlayMod.getOrderMod() + //KvMod := p.PlayMod.getKvMod() + ChessMod := p.PlayMod.getChessMod() + var buf bytes.Buffer + encode := gob.NewEncoder(&buf) + encode.Encode(ChessMod) + fmt.Printf("buf len:%dk\n", buf.Len()/1024) return nil } diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index c286cfe4..91cabb17 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -501,7 +501,7 @@ func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul, OrderType int) ( } //获取订单体力范围和棋子数量 MinEnergy, MaxEnergy, ChessNum := getChessByDiff(lv, OrderDiff, OrderType) - mergeList := getChessFromPoolByEnergy(o, MinEnergy, MaxEnergy, ChessNum, Emit, EnergyMul, OrderDiff) + mergeList := getChessFromPoolByEnergy(o, MinEnergy, MaxEnergy, ChessNum, Emit, EnergyMul, OrderDiff, OrderType) return mergeList, OrderDiff, nil } @@ -626,7 +626,7 @@ func ShuffleColor(List []string, Last string) []string { } // 获取发射器系列 -func getEmitSeries(o *OrderMod, Emit []int) string { +func getEmitSeries(o *OrderMod, Emit []int, OrderType int) string { o.initColorShuffle(Emit) PopEmitId := "" NewSlice := make([]string, 0) @@ -652,6 +652,14 @@ func getEmitSeries(o *OrderMod, Emit []int) string { if o.LastColor == PopEmitId { continue } + + if OrderType == Pet_type { + EmitId := getEmitBySeries(Emit, PopEmitId) + EmitInfo, _ := mergeDataCfg.GetOne(EmitId) + if EmitInfo.Emit_Type == "auto" { + continue + } + } PopEmitIdProductNum := mergeDataCfg.GetEmitProductNumByColor(PopEmitId) o.initColorShuffle(Emit) // 单链棋子 且订单中已有两个 跳过 @@ -845,10 +853,10 @@ func (o *OrderMod) getChessIdPool(Emit []int, Color string, EnergyMul, Lv, MinEn } return Chess, ChessLv } -func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, Emit []int, EnergyMul, OrderDiff int) []int { +func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, Emit []int, EnergyMul, OrderDiff, OrderType int) []int { ColorArr := make([]string, 0) for i := 0; i < ChessNum; i++ { - ColorArr = append(ColorArr, getEmitSeries(o, Emit)) + ColorArr = append(ColorArr, getEmitSeries(o, Emit, OrderType)) } if len(ColorArr) == 2 && ColorArr[0] == ColorArr[1] { log.Default() @@ -876,7 +884,7 @@ func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, E // 从棋子池中获取棋子 func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) int { - Color := getEmitSeries(o, Emit) + Color := getEmitSeries(o, Emit, 0) EmitChessId := getEmitBySeries(Emit, Color) //ColorRand := mergeDataCfg.GetEmitProduceType(EmitChessId) // 从棋子池中获取棋子 diff --git a/src/server/gamedata/type.go b/src/server/gamedata/type.go index 0268123a..2bb48771 100644 --- a/src/server/gamedata/type.go +++ b/src/server/gamedata/type.go @@ -16,6 +16,7 @@ type MergeDataRecord struct { Type string `json:"Type"` Emit_Product string `json:"Emit_Product"` Color string `json:"Color"` + Emit_Type string `json:"Emit_Type"` } type StartOrderData struct { From 822ae4c6ef9d594a9d761a14e2342265faafb61d Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 9 Dec 2025 17:46:46 +0800 Subject: [PATCH 43/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-=E9=A2=86=E5=A5=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/catnip/CatnipCfg.go | 17 ++++++++++------- src/server/game/RegisterNetworkFunc.go | 2 +- src/server/game/mod/catnip/Catnip.go | 14 ++++---------- src/server/msg/Gameapi.pb.go | 15 +++------------ 4 files changed, 18 insertions(+), 30 deletions(-) diff --git a/src/server/conf/catnip/CatnipCfg.go b/src/server/conf/catnip/CatnipCfg.go index fe242583..769f0460 100644 --- a/src/server/conf/catnip/CatnipCfg.go +++ b/src/server/conf/catnip/CatnipCfg.go @@ -78,19 +78,22 @@ func GetTemplateId(Id int) int { return gamedata.GetIntValue(data, "Template") } -func GetProgressReward(Id int, Progress int) []*item.Item { +func GetProgressReward(Id int, Rewards []int, Progress int) ([]*item.Item, []int) { TemplateId := GetTemplateId(Id) data, err := gamedata.GetDataByIntKey(CATNIP_GAME_CFG_NAME, Id) if err != nil { - return nil + return nil, nil } - - for _, v := range data { - if gamedata.GetIntValue(v, "Need") == Progress && gamedata.GetIntValue(v, "Template") == TemplateId { - return gamedata.GetItemList(v, "Items") + Items := []*item.Item{} + Ids := []int{} + for k, v := range data { + Id := GoUtil.Int(k) + if !GoUtil.InArray(Id, Rewards) && gamedata.GetIntValue(v, "Need") < Progress && gamedata.GetIntValue(v, "Template") == TemplateId { + Items = append(Items, gamedata.GetItemList(v, "Items")...) + Ids = append(Ids, GoUtil.Int(k)) } } - return nil + return Items, Ids } func GetItemCost(Id, Mul int) []*item.Item { diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 228f3eb6..911073fc 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -5551,7 +5551,7 @@ func ReqCatnipReward(player *Player, buf []byte) error { }) return fmt.Errorf("activity not active") } - Items, GameInfo, err := CatnipMod.Reward(int(req.Id), int(req.Progress)) + Items, GameInfo, err := CatnipMod.Reward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResCatnipReward{ Code: msg.RES_CODE_FAIL, diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index f77bb81b..36377005 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -179,21 +179,15 @@ func (c *CatnipMod) Play(Id int) (int, int, int, []*item.Item, []*item.Item, int return Id, Growth, GameInfo.Partner, Items, ItemCost, FriendItems, nil } -func (c *CatnipMod) Reward(Id, Progress int) ([]*item.Item, *CatnipGame, error) { +func (c *CatnipMod) Reward(Id int) ([]*item.Item, *CatnipGame, error) { GameInfo, ok := c.Game[Id] if !ok { return nil, nil, fmt.Errorf("game with Progress %d does not exist", Id) } - if GameInfo.Progress < Progress { - return nil, nil, fmt.Errorf("game with ID %d has not reached the required progress %d", Id, Progress) - } - if GoUtil.InArray(Progress, GameInfo.Reward) { - return nil, nil, fmt.Errorf("reward for progress %d has already been claimed in game ID %d", Progress, Id) - } - GameInfo.Reward = append(GameInfo.Reward, Progress) - Items := catnipCfg.GetProgressReward(c.Id, Progress) + Items, Ids := catnipCfg.GetProgressReward(c.Id, GameInfo.Reward, GameInfo.Progress) + GameInfo.Reward = append(GameInfo.Reward, Ids...) if Items == nil { - return nil, nil, fmt.Errorf("no reward found for progress %d in game ID %d", Progress, Id) + return nil, nil, fmt.Errorf("no reward found for progress %d in game ID %d", GameInfo.Progress, Id) } return Items, GameInfo, nil } diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index d292d438..7605cafd 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -26732,8 +26732,7 @@ func (x *ResCatnipPlay) GetId() int32 { // 领取阶段奖励 type ReqCatnipReward struct { state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id - Progress int32 `protobuf:"varint,2,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26775,13 +26774,6 @@ func (x *ReqCatnipReward) GetId() int32 { return 0 } -func (x *ReqCatnipReward) GetProgress() int32 { - if x != nil { - return x.Progress - } - return 0 -} - type ResCatnipReward struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` @@ -29440,10 +29432,9 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\rResCatnipPlay\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x0e\n" + - "\x02Id\x18\x03 \x01(\x05R\x02Id\"=\n" + + "\x02Id\x18\x03 \x01(\x05R\x02Id\"!\n" + "\x0fReqCatnipReward\x12\x0e\n" + - "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x1a\n" + - "\bProgress\x18\x02 \x01(\x05R\bProgress\"K\n" + + "\x02Id\x18\x01 \x01(\x05R\x02Id\"K\n" + "\x0fResCatnipReward\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\x16\n" + From 6471ccda73faa89d0e968288ba0c01e437899cda Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 9 Dec 2025 17:56:02 +0800 Subject: [PATCH 44/49] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=AB=A0=E8=8A=82?= =?UTF-8?q?=E5=A5=96=E5=8A=B1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/decorate/DecorateCfg.go | 9 ++++ src/server/game/GameLogic.go | 6 +-- src/server/game/RegisterNetworkFunc.go | 30 +++++++++++++- src/server/game/mod/decorate/Decorate.go | 2 +- src/server/msg/Gameapi.pb.go | 52 ++++++++++++------------ 5 files changed, 67 insertions(+), 32 deletions(-) diff --git a/src/server/conf/decorate/DecorateCfg.go b/src/server/conf/decorate/DecorateCfg.go index e1c5d707..41ffefb3 100644 --- a/src/server/conf/decorate/DecorateCfg.go +++ b/src/server/conf/decorate/DecorateCfg.go @@ -109,6 +109,15 @@ func GetDecoarteReward(Scene int, Lv int) []*item.Item { return nil } +func GetAreaReward(AreaId int) []*item.Item { + value, err := gamedata.GetDataByIntKey(DECORATE_AREA, AreaId) + if err != nil { + log.Debug("IndoorProgress GetDecoarteReward not found") + return nil + } + return gamedata.GetItemList(value, "Items") +} + // 获取一键装饰的解锁等级 func GetOneKeyDecorateUnlockLv() int { data, err := gamedata.GetDataByKey(DECORATE_CONST, "OneKey") diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 99e51177..3e13c142 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -760,9 +760,9 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqCreatePetOrder", ReqCreatePetOrder) // 生成消耗品订单 //装饰 - RegisterMsgProcessFunc("ReqDecorate", ReqDecorate) // 装饰 - RegisterMsgProcessFunc("ReqDecorateAll", ReqDecorateAll) // 装饰全部 - RegisterMsgProcessFunc("ReqDecorateReward", ReqDecorateReward) // 装饰全部 + RegisterMsgProcessFunc("ReqDecorate", ReqDecorate) // 装饰 + RegisterMsgProcessFunc("ReqDecorateAll", ReqDecorateAll) // 装饰全部 + RegisterMsgProcessFunc("ReqAreaReward", ReqAreaReward) // 章节奖励 //Gm命令 RegisterMsgProcessFunc("ReqGmCommand", ReqGmCommand) // Gm命令 diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 911073fc..8feb0aa9 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -656,8 +656,34 @@ func ReqDecorateAll(player *Player, buf []byte) error { return nil } -func ReqDecorateReward(player *Player, buf []byte) error { - +func ReqAreaReward(player *Player, buf []byte) error { + req := &msg.ReqAreaReward{} + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } + DecorateMod := player.PlayMod.getDecorateMod() + RewardItem, err := DecorateMod.GetDecorateReward(int(req.AreaId)) + if err != nil { + player.SendErrClienRes(&msg.ResAreaReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + err = player.HandleItem(RewardItem, msg.ITEM_POP_LABEL_DecorateReward.String()) + if err != nil { + player.SendErrClienRes(&msg.ResAreaReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.PushClientRes(&msg.ResAreaReward{ + Code: msg.RES_CODE_SUCCESS, + }) + player.PushClientRes(DecorateMod.BackData()) + player.PlayMod.save() return nil } diff --git a/src/server/game/mod/decorate/Decorate.go b/src/server/game/mod/decorate/Decorate.go index a0703315..ed04d977 100644 --- a/src/server/game/mod/decorate/Decorate.go +++ b/src/server/game/mod/decorate/Decorate.go @@ -185,7 +185,7 @@ func (d *Decorate) GetDecorateReward(areaId int) ([]*item.Item, error) { return nil, fmt.Errorf("areaId already rewarded") } d.AreaReward = append(d.AreaReward, areaId) - return decorateCfg.GetDecoarteReward(areaId, 20), nil + return decorateCfg.GetAreaReward(areaId), nil } func (d *Decorate) GetAreaId() int { diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 7605cafd..c6e46e92 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -7297,27 +7297,27 @@ func (x *ResDecorateAll) GetMsg() string { return "" } -type ReqDecorateReward struct { +type ReqAreaReward struct { state protoimpl.MessageState `protogen:"open.v1"` AreaId int32 `protobuf:"varint,1,opt,name=AreaId,proto3" json:"AreaId,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *ReqDecorateReward) Reset() { - *x = ReqDecorateReward{} +func (x *ReqAreaReward) Reset() { + *x = ReqAreaReward{} mi := &file_proto_Gameapi_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ReqDecorateReward) String() string { +func (x *ReqAreaReward) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReqDecorateReward) ProtoMessage() {} +func (*ReqAreaReward) ProtoMessage() {} -func (x *ReqDecorateReward) ProtoReflect() protoreflect.Message { +func (x *ReqAreaReward) ProtoReflect() protoreflect.Message { mi := &file_proto_Gameapi_proto_msgTypes[108] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7329,19 +7329,19 @@ func (x *ReqDecorateReward) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReqDecorateReward.ProtoReflect.Descriptor instead. -func (*ReqDecorateReward) Descriptor() ([]byte, []int) { +// Deprecated: Use ReqAreaReward.ProtoReflect.Descriptor instead. +func (*ReqAreaReward) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{108} } -func (x *ReqDecorateReward) GetAreaId() int32 { +func (x *ReqAreaReward) GetAreaId() int32 { if x != nil { return x.AreaId } return 0 } -type ResDecorateReward struct { +type ResAreaReward struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` @@ -7349,20 +7349,20 @@ type ResDecorateReward struct { sizeCache protoimpl.SizeCache } -func (x *ResDecorateReward) Reset() { - *x = ResDecorateReward{} +func (x *ResAreaReward) Reset() { + *x = ResAreaReward{} mi := &file_proto_Gameapi_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ResDecorateReward) String() string { +func (x *ResAreaReward) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ResDecorateReward) ProtoMessage() {} +func (*ResAreaReward) ProtoMessage() {} -func (x *ResDecorateReward) ProtoReflect() protoreflect.Message { +func (x *ResAreaReward) ProtoReflect() protoreflect.Message { mi := &file_proto_Gameapi_proto_msgTypes[109] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7374,19 +7374,19 @@ func (x *ResDecorateReward) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ResDecorateReward.ProtoReflect.Descriptor instead. -func (*ResDecorateReward) Descriptor() ([]byte, []int) { +// Deprecated: Use ResAreaReward.ProtoReflect.Descriptor instead. +func (*ResAreaReward) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{109} } -func (x *ResDecorateReward) GetCode() RES_CODE { +func (x *ResAreaReward) GetCode() RES_CODE { if x != nil { return x.Code } return RES_CODE_FAIL } -func (x *ResDecorateReward) GetMsg() string { +func (x *ResAreaReward) GetMsg() string { if x != nil { return x.Msg } @@ -28000,10 +28000,10 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x0eReqDecorateAll\"J\n" + "\x0eResDecorateAll\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"+\n" + - "\x11ReqDecorateReward\x12\x16\n" + - "\x06AreaId\x18\x01 \x01(\x05R\x06AreaId\"M\n" + - "\x11ResDecorateReward\x12&\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"'\n" + + "\rReqAreaReward\x12\x16\n" + + "\x06AreaId\x18\x01 \x01(\x05R\x06AreaId\"I\n" + + "\rResAreaReward\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"<\n" + "\fReqGmCommand\x12\x18\n" + @@ -29843,8 +29843,8 @@ var file_proto_Gameapi_proto_goTypes = []any{ (*ResDecorate)(nil), // 118: tutorial.ResDecorate (*ReqDecorateAll)(nil), // 119: tutorial.ReqDecorateAll (*ResDecorateAll)(nil), // 120: tutorial.ResDecorateAll - (*ReqDecorateReward)(nil), // 121: tutorial.ReqDecorateReward - (*ResDecorateReward)(nil), // 122: tutorial.ResDecorateReward + (*ReqAreaReward)(nil), // 121: tutorial.ReqAreaReward + (*ResAreaReward)(nil), // 122: tutorial.ResAreaReward (*ReqGmCommand)(nil), // 123: tutorial.ReqGmCommand (*Card)(nil), // 124: tutorial.Card (*ReqCardInfo)(nil), // 125: tutorial.ReqCardInfo @@ -30340,7 +30340,7 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 169, // 56: tutorial.DecoratePart.Items:type_name -> tutorial.ItemInfo 2, // 57: tutorial.ResDecorate.Code:type_name -> tutorial.RES_CODE 2, // 58: tutorial.ResDecorateAll.Code:type_name -> tutorial.RES_CODE - 2, // 59: tutorial.ResDecorateReward.Code:type_name -> tutorial.RES_CODE + 2, // 59: tutorial.ResAreaReward.Code:type_name -> tutorial.RES_CODE 124, // 60: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card 503, // 61: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry 504, // 62: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry From 2aa0ccbd58be96f62696233b125fc3287dd5ce38 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 9 Dec 2025 18:48:19 +0800 Subject: [PATCH 45/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-=E9=A2=86=E5=A5=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/catnip/CatnipCfg.go | 2 +- src/server/test/catnip_test.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/server/conf/catnip/CatnipCfg.go b/src/server/conf/catnip/CatnipCfg.go index 769f0460..bfb12708 100644 --- a/src/server/conf/catnip/CatnipCfg.go +++ b/src/server/conf/catnip/CatnipCfg.go @@ -80,7 +80,7 @@ func GetTemplateId(Id int) int { func GetProgressReward(Id int, Rewards []int, Progress int) ([]*item.Item, []int) { TemplateId := GetTemplateId(Id) - data, err := gamedata.GetDataByIntKey(CATNIP_GAME_CFG_NAME, Id) + data, err := gamedata.GetData(CATNIP_GAME_CFG_NAME) if err != nil { return nil, nil } diff --git a/src/server/test/catnip_test.go b/src/server/test/catnip_test.go index 93b5ee4d..32e844fb 100644 --- a/src/server/test/catnip_test.go +++ b/src/server/test/catnip_test.go @@ -34,3 +34,19 @@ func TestReqCatnipEmoji(t *testing.T) { t.Fatalf("ReqCatnipEmoji returned error: %v", err) } } + +func TestReqCatnipReward(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("aaa001") + game.G_GameLogicPtr.SetPlayer(p1) + req := &msg.ReqCatnipReward{ + Id: 2, + } + data, err := proto.Marshal(req) + if err != nil { + t.Fatalf("proto.Marshal error: %v", err) + } + if err := game.ReqCatnipReward(p1, data); err != nil { + t.Fatalf("ReqCatnipReward returned error: %v", err) + } +} From 1fc341b77b48ccf0e7a72fb63538639f2d384939 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 10 Dec 2025 10:23:56 +0800 Subject: [PATCH 46/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-=E8=BD=AC=E7=9B=98=E9=80=BB?= =?UTF-8?q?=E8=BE=91bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/catnip/Catnip.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index 36377005..ac8a9663 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -171,6 +171,7 @@ func (c *CatnipMod) Play(Id int) (int, int, int, []*item.Item, []*item.Item, int return 0, 0, 0, nil, nil, 0, fmt.Errorf("game with ID %d does not exist", Id) } Id, Items, Growth, FriendItems := catnipCfg.GetJackpotItem(c.Mul) + Growth = Growth * c.Mul if Growth > 0 { c.Growth(Id, Growth) } 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 47/49] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=98=E3=80=91-=E8=BD=AC=E7=9B=98=E9=80=BB?= =?UTF-8?q?=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 } } From 88b1b3601ee0942039de86a3017b20919e6ac212 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 10 Dec 2025 12:12:07 +0800 Subject: [PATCH 48/49] =?UTF-8?q?=E3=80=90=E6=97=A5=E5=BF=97=E3=80=91?= =?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/conf/mergeData/MergeDataCfg.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server/conf/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index e2ded422..ae3c8220 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -416,7 +416,7 @@ func DynamicLevRev(Lv int, EmitId int, Color string) int { func DynamicLev(Lv int, EmitId int, Color string) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { - log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + //log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return Lv } DynamicLv := gamedata.GetStringValue(data, "Dynamic") @@ -439,7 +439,7 @@ func DynamicLev(Lv int, EmitId int, Color string) int { func DynamicLev2(Lv int, EmitId int, Color1 string, Color2 string) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { - log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + //log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return Lv } DynamicLv := gamedata.GetStringValue(data, "Dynamic") @@ -474,7 +474,7 @@ func DynamicLev2(Lv int, EmitId int, Color1 string, Color2 string) int { func DynamicAdjust(EmitId int, Color string, EnergyMul int) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { - log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + //log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return 0 } DynamicLv := "" @@ -509,7 +509,7 @@ func DynamicAdjust(EmitId int, Color string, EnergyMul int) int { func GetAdjust(EmitId int, Color string, EnergyMul int) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { - log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + //log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return 0 } AdjustLv := "" From 029b963eb1f73391180be2e7af0a718b11a6ec12 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:45:07 +0800 Subject: [PATCH 49/49] =?UTF-8?q?=E6=96=AD=E7=BA=BF=E9=87=8D=E8=BF=9E?= =?UTF-8?q?=E6=89=93=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/RegisterNetworkFunc.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index e9375776..01939ee3 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -4387,6 +4387,7 @@ func ReqOfflineReconnectFunc(a gate.Agent, buf []byte) error { internal.AsignPlayerToAgents(a, player) internal.Agents.Delete(agent) } + player.TeLog("reconnect", nil) res.Result = 3 } else { res.Result = 2