From 4ef8aa86dc48c7fa8dbe3ed9526c9a980b11e368 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 18 Jul 2025 18:07:36 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8C=AB=E8=8D=89=E5=A4=A7=E4=BD=9C=E6=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/GoUtil/GoUtil.go | 4 + src/server/conf/catnip/CatnipCfg.go | 25 + src/server/game/ActivityFunc.go | 70 +- src/server/game/FriendMgr.go | 39 +- src/server/game/GameLogic.go | 25 +- src/server/game/Gm.go | 7 +- src/server/game/Player.go | 4 +- src/server/game/PlayerBack.go | 1 + src/server/game/PlayerFunc.go | 37 + src/server/game/PlayerMod.go | 6 + src/server/game/RegisterNetworkFunc.go | 242 +++- src/server/game/Type.go | 25 +- src/server/game/VarMgr.go | 34 +- src/server/game/mod/activity/activity.go | 1 + src/server/game/mod/catnip/Catnip.go | 206 ++++ src/server/game/mod/msg/Msg.go | 11 + src/server/msg/Gameapi.pb.go | 1343 +++++++++++++++++++--- 17 files changed, 1863 insertions(+), 217 deletions(-) create mode 100644 src/server/conf/catnip/CatnipCfg.go create mode 100644 src/server/game/mod/catnip/Catnip.go diff --git a/src/server/GoUtil/GoUtil.go b/src/server/GoUtil/GoUtil.go index d6d084bd..494b9b8c 100644 --- a/src/server/GoUtil/GoUtil.go +++ b/src/server/GoUtil/GoUtil.go @@ -298,6 +298,10 @@ func GetUserKey(Uid int64) string { return fmt.Sprintf("user_data_%d", Uid) } +func GetCatnipLockKey(Uid, GameId int) string { + return fmt.Sprintf("catnip_lock_%d_%d", Uid, GameId) +} + func Rand6DigitNumber() string { n := rand.Intn(1000000) return fmt.Sprintf("%06d", n) diff --git a/src/server/conf/catnip/CatnipCfg.go b/src/server/conf/catnip/CatnipCfg.go new file mode 100644 index 00000000..df66ca03 --- /dev/null +++ b/src/server/conf/catnip/CatnipCfg.go @@ -0,0 +1,25 @@ +package catnipCfg + +import "server/gamedata" + +const ( + CATNIP_TEMPLATE_CFG_NAME = "CatnipTemplate" + CATNIP_JACKPOT_CFG_NAME = "CatnipJackpot" + CATNIP_MULTIPLIER_CFG_NAME = "CatnipMultiplier" + CATNIP_GAME_CFG_NAME = "CatnipGame" +) + +func init() { + gamedata.InitCfg(CATNIP_TEMPLATE_CFG_NAME) + gamedata.InitCfg(CATNIP_JACKPOT_CFG_NAME) + gamedata.InitCfg(CATNIP_MULTIPLIER_CFG_NAME) + gamedata.InitCfg(CATNIP_GAME_CFG_NAME) +} + +func GetGameNum(Id int) int { + data, err := gamedata.GetDataByIntKey(CATNIP_TEMPLATE_CFG_NAME, Id) + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "PassNum") +} diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index 8ec4d237..3bc39d4c 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -8,6 +8,7 @@ import ( mailCfg "server/conf/mail" miningCfg "server/conf/mining" raceCfg "server/conf/race" + "server/game/mod/activity" "server/game/mod/item" "server/game/mod/mail" "server/msg" @@ -17,7 +18,7 @@ import ( func ActivityLogin(p *Player) { ItemMod := p.PlayMod.getItemMod() // 挖矿 - ActivityId := GetActivityId(p, ACT_TYPE_MINING) + ActivityId := GetActivityId(p, activity.ACT_TYPE_MINING) MiningMod := p.PlayMod.getMiningMod() OldId := MiningMod.Login(ActivityId) if OldId != 0 { @@ -29,7 +30,7 @@ func ActivityLogin(p *Player) { } } // 猜颜色 - ActivityId = GetActivityId(p, ACT_TYPE_GUESS_COLOR) + ActivityId = GetActivityId(p, activity.ACT_TYPE_GUESS_COLOR) GuessColorMod := p.PlayMod.getGuessColorMod() OldId = GuessColorMod.Login(ActivityId) if OldId != 0 { @@ -42,7 +43,7 @@ func ActivityLogin(p *Player) { } // 赛跑 - ActivityId = GetActivityId(p, ACT_TYPE_RACE) + ActivityId = GetActivityId(p, activity.ACT_TYPE_RACE) RaceMod := p.PlayMod.getRaceMod() OldId = RaceMod.Login(ActivityId) if OldId != 0 { @@ -66,17 +67,17 @@ func SendActivityMail(p *Player, ItemId, ItemNum, ActivityId int) { // 活动模块 零点更新 func ActivityZeroUpdate(p *Player) { - ActivityInfo := GetActivityInfo(p, ACT_TYPE_MINING) + ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_MINING) if ActivityInfo != nil { MiningMod := p.PlayMod.getMiningMod() MiningMod.ZeroUpdate(ActivityInfo.Id) } - ActivityInfo = GetActivityInfo(p, ACT_TYPE_GUESS_COLOR) + ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_GUESS_COLOR) if ActivityInfo != nil { GuessColorMod := p.PlayMod.getGuessColorMod() GuessColorMod.ZeroUpdate(ActivityInfo.Id) } - ActivityInfo = GetActivityInfo(p, ACT_TYPE_RACE) + ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_RACE) if ActivityInfo != nil { RaceMod := p.PlayMod.getRaceMod() RaceMod.ZeroUpdate(ActivityInfo.Id) @@ -126,11 +127,11 @@ func GetActivityStatus(p *Player, actType int) int { } func MiningBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, ACT_TYPE_MINING) + ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_MINING) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, ACT_TYPE_MINING) + Status := GetActivityStatus(p, activity.ACT_TYPE_MINING) Template := miningCfg.GetTemplate(ActivityInfo.Id) MiningMod := p.PlayMod.getMiningMod() p.PushClientRes(&msg.ResMining{ @@ -146,12 +147,12 @@ func MiningBackData(p *Player) { } func GuessColorBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, ACT_TYPE_GUESS_COLOR) + ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_GUESS_COLOR) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, ACT_TYPE_GUESS_COLOR) + Status := GetActivityStatus(p, activity.ACT_TYPE_GUESS_COLOR) GuessColorMod := p.PlayMod.getGuessColorMod() MapList := make([]*msg.GuessColorInfo, 0) for _, v := range GuessColorMod.MapList { @@ -177,11 +178,11 @@ func GuessColorBackData(p *Player) { } func RaceBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, ACT_TYPE_RACE) + ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_RACE) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, ACT_TYPE_RACE) + Status := GetActivityStatus(p, activity.ACT_TYPE_RACE) RaceMod := p.PlayMod.getRaceMod() Opponent := make([]*msg.Raceopponent, 0) for _, v := range RaceMod.Opponent { @@ -229,13 +230,13 @@ func GetActivityItem(p *Player, ActType []int) []*item.Item { continue } switch v { - case ACT_TYPE_MINING: + case activity.ACT_TYPE_MINING: Item := miningCfg.GetLoseItem(ActivityInfo.Id) Items = item.Merge(Items, Item) - case ACT_TYPE_GUESS_COLOR: + case activity.ACT_TYPE_GUESS_COLOR: Item := guesscolorCfg.GetLoseItem(ActivityInfo.Id) Items = item.Merge(Items, Item) - case ACT_TYPE_RACE: + case activity.ACT_TYPE_RACE: ItemId := raceCfg.GetCoin(ActivityInfo.Id) Item := item.NewItem(ItemId, 1) Items = append(Items, Item) @@ -243,3 +244,42 @@ func GetActivityItem(p *Player, ActType []int) []*item.Item { } return Items } + +func (p *Player) CatnipBackData() { + CatnipMod := p.PlayMod.getCatnipMod() + Status := GetActivityStatus(p, activity.ACT_TYPE_CATNIP) + if CatnipMod == nil { + return + } + 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), + } + if v.Partner != 0 { + PlayerData := G_getGameLogic().GetResSimplePlayerByUid(v.Partner) + if PlayerData != nil { + GameInfo.Partner = PlayerData + } + } + GameList = append(GameList, GameInfo) + } + res := &msg.ResCatnip{ + Id: int32(CatnipMod.Id), + Status: int32(Status), + GameList: GameList, + } + p.PushClientRes(res) +} + +func (p *Player) SetCatnipGameLock(Uid int, GameId int) error { + ActivityInfo := GetActivityInfoById(p, activity.ACT_TYPE_CATNIP) + return G_GameLogicPtr.SetDataSync(int(p.M_DwUin), VAR_OP_CATNIP_LOCK, CatnipLock{ + Uid: int(p.M_DwUin), + Partner: Uid, + GameId: GameId, + End: int(ActivityInfo.EndT), // 锁 + }) +} diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index 7c5424e4..3d3ad1bd 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -74,11 +74,20 @@ func (f *FriendMgr) Init() { f.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_RESULT, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_TREASURE_RESULT, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_FACEBOOK_UNBIND, f.sendToPlayer) + + f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_INVITE, f.sendToPlayer) + f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_AGREE, f.sendToPlayer) + 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_PLAYROOM_KISS, f.sendToPlayerOnline) - f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_GAME, f.sendToPlayerOnline) + f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_GAME, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_VAR_USER_GET, f.GetVarUserData) f.RegisterHandler(msg.HANDLE_TYPE_VAR_USER_SET, f.SetVarUserData) + + f.RegisterHandler(msg.HANDLE_TYPE_VAR_EXPIRE_SET, f.SetExpireVarData) } func (f *FriendMgr) getData() *FirendData { @@ -160,6 +169,34 @@ func (f *FriendMgr) SetVarUserData(m *msg.Msg) (interface{}, error) { }, nil } +func (f *FriendMgr) SetExpireVarData(m *msg.Msg) (interface{}, error) { + VarOp := m.Extra.(VarOpration) + switch VarOp.Type { + case VAR_OP_CATNIP_LOCK: + data := VarOp.Data.(CatnipLock) + MyKey := GoUtil.GetCatnipLockKey(data.Uid, data.GameId) + OtherKey := GoUtil.GetCatnipLockKey(data.Partner, data.GameId) + ExpireData := G_GameLogicPtr.VarMgr.GetExpireVar(OtherKey) + if _, ok := ExpireData.D.(*CatnipLock); ok { + return nil, fmt.Errorf("catnip lock already exists for %d in game %d", data.Uid, data.GameId) + } + G_GameLogicPtr.VarMgr.SetExpireVar(MyKey, &VarExpireData{ + T: int64(data.End + 24*3600), // 设置过期时间 + D: &data, + }) + G_GameLogicPtr.VarMgr.SetExpireVar(OtherKey, &VarExpireData{ + T: int64(data.End + 24*3600), // 设置过期时间 + D: &CatnipLock{ + Uid: data.Partner, + Partner: data.Uid, + GameId: data.GameId, + End: data.End, + }, + }) + } + return nil, nil +} + // 发送消息给玩家 func sendToPlayer(m *msg.Msg) error { p := G_GameLogicPtr.GetPlayer(int64(m.To)) diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 05c74215..d97f8a9f 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -288,6 +288,17 @@ 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{ + From: Uid, + To: Uid, + Type: MsgMod.HANDLE_TYPE_VAR_EXPIRE_SET, + SendT: GoUtil.Now(), + Extra: VarOpration{Type: Op, Data: Data}, + }) + return err +} + func (ad *GameLogic) GetUserData(Uid int) *VarUserData { result, err := ad.FriendMgr.Call(&MsgMod.Msg{ From: Uid, @@ -806,7 +817,15 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqRace", ReqRace) RegisterMsgProcessFunc("ReqRaceReward", ReqRaceReward) RegisterMsgProcessFunc("ReqRaceStart", ReqRaceStart) - + // 猫草大作战 + RegisterMsgProcessFunc("ReqCatnip", ReqCatnip) // 请求猫草大作战数据 + RegisterMsgProcessFunc("ReqCatnipInvite", ReqCatnipInvite) // 猫草大作战邀请好友 + RegisterMsgProcessFunc("ReqCatnipAgree", ReqCatnipAgree) // 同意邀请 + RegisterMsgProcessFunc("ReqCatnipRefuse", ReqCatnipRefuse) // 拒绝邀请 + RegisterMsgProcessFunc("ReqCatnipMultiply", ReqCatnipMultiply) // 猫草大作战倍数 + RegisterMsgProcessFunc("ReqCatnipPlay", ReqCatnipPlay) // 猫草大作战游戏转盘 + RegisterMsgProcessFunc("ReqCatnipReward", ReqCatnipReward) // 猫草大作战领取奖励 + RegisterMsgProcessFunc("ReqCatnipGrandReward", ReqCatnipGrandReward) // 猫草大作战领取大奖 // #region playroom RegisterMsgProcessFunc("ReqPlayroom", ReqPlayroom) // 请求playroom数据 RegisterMsgProcessFunc("ReqPlayroomInfo", ReqPlayroomInfo) // 请求playroom拜访信息 @@ -901,8 +920,8 @@ func NotifyPlayer(Uid int, m *MsgMod.Msg) { p.Send(m) } -func setRedisLock(key, value string, Duration time.Duration) bool { - return db.RedisLock(key, "", Duration) +func setRedisLock(key string, Duration time.Duration) bool { + return db.RedisLock(key, "lock", Duration) } func getRedisLock(key string) error { diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index 64c4e00b..6b5c87b6 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -14,6 +14,7 @@ import ( mergeDataCfg "server/conf/mergeData" playroomCfg "server/conf/playroom" "server/db" + "server/game/mod/activity" "server/game/mod/avatar" "server/game/mod/card" "server/game/mod/emoji" @@ -249,19 +250,19 @@ func ReqGmCommand_(player *Player, Command string) error { case "miningReload": MiningMod := player.PlayMod.getMiningMod() MiningMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, ACT_TYPE_MINING) + ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_MINING) MiningMod.ZeroUpdate(ActivityInfo.Id) MiningBackData(player) case "guessColorReload": GuessColorMod := player.PlayMod.getGuessColorMod() GuessColorMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, ACT_TYPE_GUESS_COLOR) + ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_GUESS_COLOR) GuessColorMod.ZeroUpdate(ActivityInfo.Id) GuessColorBackData(player) case "raceReload": RaceMod := player.PlayMod.getRaceMod() RaceMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, ACT_TYPE_RACE) + ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_RACE) RaceMod.ZeroUpdate(ActivityInfo.Id) RaceBackData(player) case "raceAdd": diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 10e616a4..9675d178 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -972,11 +972,11 @@ func (p *Player) GetRed(AI *ActivityInfo) int { return 0 } // 限时活动红点 - if AI.Type == ACT_TYPE_MINING { + if AI.Type == activity.ACT_TYPE_MINING { ItemId := miningCfg.GetActivityItemId(AI.Id) return p.PlayMod.getItemMod().GetItem(ItemId) } - if AI.Type == ACT_TYPE_GUESS_COLOR { + if AI.Type == activity.ACT_TYPE_GUESS_COLOR { ItemId := guesscolorCfg.GetActivityItemId(AI.Id) return p.PlayMod.getItemMod().GetItem(ItemId) } diff --git a/src/server/game/PlayerBack.go b/src/server/game/PlayerBack.go index 72c8c735..3fa14edc 100644 --- a/src/server/game/PlayerBack.go +++ b/src/server/game/PlayerBack.go @@ -103,6 +103,7 @@ func PlayroomBackData(p *Player) { func PlayroomVisit(p *Player, Uid int) { if Uid == 0 { + p.PushClientRes(&proto.ResPlayroomInfo{}) return } PlayroomMod := p.PlayMod.getPlayroomMod() diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 29f40990..04603abb 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -16,6 +16,7 @@ import ( playroomCfg "server/conf/playroom" userCfg "server/conf/user" "server/db" + "server/game/mod/activity" "server/game/mod/card" "server/game/mod/friend" "server/game/mod/item" @@ -308,6 +309,42 @@ func handle(p *Player, m *msg.Msg) error { p.PushClientRes(ChargeMod.BackData()) case msg.HANDLE_TYPE_PLAYROOM_KISS: // playroom亲吻 p.NotifyPlayroomKiss() + case msg.HANDLE_TYPE_CATNIP_INVITE: + CatnipMod := p.PlayMod.getCatnipMod() + CatnipMsg := m.Extra.(CatnipMsg) + ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + return nil + } + CatnipMod.BeInvited(CatnipMsg.GameId, int(m.From), m.SendT) + case msg.HANDLE_TYPE_CATNIP_AGREE: + CatnipMod := p.PlayMod.getCatnipMod() + CatnipMsgInfo := m.Extra.(CatnipMsg) + ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + 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(), + }) + } + case msg.HANDLE_TYPE_CATNIP_AGREE_DEL: + CatnipMod := p.PlayMod.getCatnipMod() + CatnipMsg := m.Extra.(CatnipMsg) + ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + return nil + } + CatnipMod.DelInvited(CatnipMsg.GameId, int(m.From)) default: log.Debug("uid : %d, handle msg type : %d not exist", p.M_DwUin, m.Type) } diff --git a/src/server/game/PlayerMod.go b/src/server/game/PlayerMod.go index e749fd4d..87850102 100644 --- a/src/server/game/PlayerMod.go +++ b/src/server/game/PlayerMod.go @@ -9,6 +9,7 @@ import ( "server/game/mod/avatar" "server/game/mod/base" "server/game/mod/card" + "server/game/mod/catnip" "server/game/mod/champship" "server/game/mod/charge" "server/game/mod/chess" @@ -79,6 +80,7 @@ type PlayerModList struct { Collect collect.Collect // 收集 Activity activity.Activity // 活动 Compensation compensation.Compensation // 补偿 + Catnip catnip.CatnipMod // 猫草大作战 } func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool { @@ -176,6 +178,7 @@ func (p *PlayerModData) InitMod(player *Player) (bool, error) { p.ModList.Emoji.InitData() p.ModList.Collect.InitData() p.ModList.Activity.InitData() + p.ModList.Catnip.InitData() return is_update, nil } @@ -366,3 +369,6 @@ func (p *PlayerMod) getActivityMod() *activity.Activity { func (p *PlayerMod) getCompensationMod() *compensation.Compensation { return &p.mod_list.Compensation } +func (p *PlayerMod) getCatnipMod() *catnip.CatnipMod { + return &p.mod_list.Catnip +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 4f783c49..fab5069b 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -15,6 +15,7 @@ import ( playroomCfg "server/conf/playroom" "server/db" "server/game/internal" + "server/game/mod/activity" "server/game/mod/card" "server/game/mod/collect" "server/game/mod/friend" @@ -2958,8 +2959,8 @@ func ReqMiningTake(player *Player, buf []byte) error { req := &msg.ReqMiningTake{} proto.Unmarshal(buf, req) MiningMod := player.PlayMod.getMiningMod() - ActivityInfo := GetActivityInfo(player, ACT_TYPE_MINING) - Status := GetActivityStatus(player, ACT_TYPE_MINING) + ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_MINING) + Status := GetActivityStatus(player, activity.ACT_TYPE_MINING) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResMiningTake{ Code: msg.RES_CODE_FAIL, @@ -2994,7 +2995,7 @@ func ReqMiningTake(player *Player, buf []byte) error { } player.TeLog("ReqMiningTake", map[string]interface{}{}) player.PlayMod.save() - player.NotifyRed(ACT_TYPE_MINING) + player.NotifyRed(activity.ACT_TYPE_MINING) MiningBackData(player) return nil } @@ -3002,7 +3003,7 @@ func ReqMiningTake(player *Player, buf []byte) error { // 领取关卡奖励 func ReqMiningReward(player *Player, buf []byte) error { MiningMod := player.PlayMod.getMiningMod() - Status := GetActivityStatus(player, ACT_TYPE_MINING) + Status := GetActivityStatus(player, activity.ACT_TYPE_MINING) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResMiningReward{ Code: msg.RES_CODE_FAIL, @@ -3057,7 +3058,7 @@ func ReqGuessColor(player *Player, buf []byte) error { func ReqGuessColorTake(player *Player, buf []byte) error { req := &msg.ReqGuessColorTake{} proto.Unmarshal(buf, req) - Status := GetActivityStatus(player, ACT_TYPE_GUESS_COLOR) + Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorTake{ Code: msg.RES_CODE_FAIL, @@ -3082,7 +3083,7 @@ func ReqGuessColorTake(player *Player, buf []byte) error { }) player.PlayMod.save() GuessColorBackData(player) - player.NotifyRed(ACT_TYPE_GUESS_COLOR) + player.NotifyRed(activity.ACT_TYPE_GUESS_COLOR) return nil } @@ -3090,7 +3091,7 @@ func ReqGuessColorTake(player *Player, buf []byte) error { func ReqGuessColorReward(player *Player, buf []byte) error { req := &msg.ReqGuessColorReward{} proto.Unmarshal(buf, req) - Status := GetActivityStatus(player, ACT_TYPE_GUESS_COLOR) + Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorReward{ Code: msg.RES_CODE_FAIL, @@ -3199,7 +3200,7 @@ func ReqPlayroomInfo(player *Player, buf []byte) error { Targer = GetVisitorPlayer(player) } if Targer == 0 { - return fmt.Errorf("ReqPlayroomInfo no target") + PlayroomVisit(player, Targer) } PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Targer) PlayroomMod.SetTarget(Targer) @@ -4679,3 +4680,228 @@ func ReqPlayroomGuide(player *Player, buf []byte) error { }) return nil } + +func ReqCatnip(player *Player, buf []byte) error { + player.CatnipBackData() + return nil +} + +// TODO : 猫草大作战邀请好友 +func ReqCatnipInvite(player *Player, buf []byte) error { + req := &msg.ReqCatnipInvite{} + proto.Unmarshal(buf, req) + ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) + CatnipMod := player.PlayMod.getCatnipMod() + err := CatnipMod.Invite(int(req.Id), int(req.Uid)) + if err != nil { + player.SendErrClienRes(&msg.ResCatnipInvite{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.TeLog("catnip_invite", map[string]interface{}{ + "Id": int(req.Id), + }) + FriendMgrSend(&MsqMod.Msg{ + From: int(player.M_DwUin), + To: int(req.Uid), + Type: MsqMod.HANDLE_TYPE_CATNIP_INVITE, + Extra: CatnipMsg{ + ActivityId: ActivityId, + GameId: int(req.Id), + }, + SendT: GoUtil.Now(), + }) + + player.PlayMod.save() + player.PushClientRes(&msg.ResCatnipInvite{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} + +func ReqCatnipAgree(player *Player, buf []byte) error { + req := &msg.ReqCatnipAgree{} + proto.Unmarshal(buf, req) + CatnipMod := player.PlayMod.getCatnipMod() + ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) + UserList, err := CatnipMod.Agree(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), + }) + FriendMgrSend(&MsqMod.Msg{ + From: int(player.M_DwUin), + To: int(req.Uid), + Type: MsqMod.HANDLE_TYPE_CATNIP_AGREE, + Extra: CatnipMsg{ + ActivityId: ActivityId, + GameId: int(req.Id), + }, + 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.PlayMod.save() + player.PushClientRes(&msg.ResCatnipAgree{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} + +// TODO : 猫草大作战设置倍数 +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)) + if err != nil { + player.SendErrClienRes(&msg.ResCatnipMultiply{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.TeLog("catnip_multiply", map[string]interface{}{ + "Id": int(req.Id), + }) + player.PlayMod.save() + player.PushClientRes(&msg.ResCatnipMultiply{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} + +// TODO : 猫草大作战开始游戏 +func ReqCatnipPlay(player *Player, buf []byte) error { + req := &msg.ReqCatnipPlay{} + proto.Unmarshal(buf, req) + CatnipMod := player.PlayMod.getCatnipMod() + err := CatnipMod.Play(int(req.Id)) + if err != nil { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.TeLog("catnip_play", map[string]interface{}{ + "Id": int(req.Id), + }) + player.PlayMod.save() + player.PushClientRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} + +// TODO : 猫草大作战领取奖励 +func ReqCatnipReward(player *Player, buf []byte) error { + req := &msg.ReqCatnipReward{} + proto.Unmarshal(buf, req) + CatnipMod := player.PlayMod.getCatnipMod() + Items, err := CatnipMod.Reward(int(req.Progress)) + if err != nil { + player.SendErrClienRes(&msg.ResCatnipReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_CatnipReward.String()) + if err != nil { + player.SendErrClienRes(&msg.ResCatnipReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.TeLog("catnip_reward", map[string]interface{}{ + "Items": Items, + }) + player.PlayMod.save() + player.PushClientRes(&msg.ResCatnipReward{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} + +func ReqCatnipGrandReward(player *Player, buf []byte) error { + req := &msg.ReqCatnipGrandReward{} + proto.Unmarshal(buf, req) + CatnipMod := player.PlayMod.getCatnipMod() + Items, err := CatnipMod.GrandReward() + if err != nil { + player.SendErrClienRes(&msg.ResCatnipGrandReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_CatnipGrandReward.String()) + if err != nil { + player.SendErrClienRes(&msg.ResCatnipGrandReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.TeLog("catnip_grand_reward", map[string]interface{}{ + "Items": Items, + }) + player.PlayMod.save() + player.PushClientRes(&msg.ResCatnipGrandReward{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} + +func ReqCatnipRefuse(player *Player, buf []byte) error { + req := &msg.ReqCatnipRefuse{} + proto.Unmarshal(buf, req) + CatnipMod := player.PlayMod.getCatnipMod() + err := CatnipMod.Refuse(int(req.Id), int(req.Uid)) + if err != nil { + player.SendErrClienRes(&msg.ResCatnipRefuse{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.TeLog("catnip_refuse", map[string]interface{}{ + "Id": int(req.Id), + }) + FriendMgrSend(&MsqMod.Msg{ + From: int(player.M_DwUin), + To: int(req.Uid), + Type: MsqMod.HANDLE_TYPE_CATNIP_REFUSE, + SendT: GoUtil.Now(), + Extra: CatnipMsg{ + ActivityId: GetActivityId(player, activity.ACT_TYPE_MINING), + GameId: int(req.Id), + }, + }) + player.PlayMod.save() + player.PushClientRes(&msg.ResCatnipRefuse{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} diff --git a/src/server/game/Type.go b/src/server/game/Type.go index d353ca89..5e0c6e84 100644 --- a/src/server/game/Type.go +++ b/src/server/game/Type.go @@ -48,18 +48,17 @@ type VarUserData struct { Kiss int } +type VarExpireData struct { + D interface{} + T int64 +} + const ( ACT_STATUS_NOT_START = 0 ACT_STATUS_START = 1 ACT_STATUS_END = 2 ) -const ( - ACT_TYPE_MINING = 1 // 挖矿 - ACT_TYPE_GUESS_COLOR = 2 // 猜颜色 - ACT_TYPE_RACE = 3 // 赛跑 -) - type ActivityInfo struct { StartT int64 EndT int64 @@ -83,6 +82,18 @@ type GameResult struct { Emoji int // 表情 } +type CatnipMsg struct { + ActivityId int + GameId int +} + +type CatnipLock struct { + Uid int // 玩家ID + Partner int // 伙伴ID + GameId int // 游戏ID + End int +} + func init() { gob.Register(&limitedTimeEvent.MoneyCat{}) gob.Register(&limitedTimeEvent.LuckyCat{}) @@ -93,4 +104,6 @@ func init() { gob.Register(&ActivityInfo{}) gob.Register(&ChargeExtra{}) gob.Register(&GameResult{}) + gob.Register(&CatnipMsg{}) + gob.Register(&CatnipLock{}) } diff --git a/src/server/game/VarMgr.go b/src/server/game/VarMgr.go index af55e09f..aa195ca9 100644 --- a/src/server/game/VarMgr.go +++ b/src/server/game/VarMgr.go @@ -13,9 +13,10 @@ type VarMgr struct { } type VarData struct { - Var map[string]interface{} - UserVar map[string]*VarUserData - ZeroTime int64 + Var map[string]interface{} + VarExpire map[string]*VarExpireData + UserVar map[string]*VarUserData + ZeroTime int64 } const ( @@ -25,10 +26,11 @@ const ( ) const ( - VAR_OP_UPVOTE = 1 - VAR_OP_CHIP = 2 - VAR_OP_KISS = 3 - VAR_OP_CHIP_SET = 4 + VAR_OP_UPVOTE = 1 + VAR_OP_CHIP = 2 + VAR_OP_KISS = 3 + VAR_OP_CHIP_SET = 4 + VAR_OP_CATNIP_LOCK = 5 ) func (f *VarMgr) Init() { @@ -69,6 +71,11 @@ func (f *VarMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) { Four: Card1, Five: Card2, }) + for k, v := range f.getData().VarExpire { + if v.T < GoUtil.ZeroTimestamp() { + delete(f.getData().VarExpire, k) + } + } return nil, nil } @@ -80,6 +87,19 @@ func (f *VarMgr) GetVar(key string) interface{} { return f.getData().Var[key] } +func (f *VarMgr) SetExpireVar(key string, value *VarExpireData) { + f.getData().VarExpire[key] = value +} + +func (f *VarMgr) GetExpireVar(key string) *VarExpireData { + if v, ok := f.getData().VarExpire[key]; ok { + return v + } + data := &VarExpireData{} + f.getData().VarExpire[key] = data + return data +} + func (f *VarMgr) SetUserVar(key string, value *VarUserData) { f.getData().UserVar[key] = value } diff --git a/src/server/game/mod/activity/activity.go b/src/server/game/mod/activity/activity.go index 25972374..272f3aa1 100644 --- a/src/server/game/mod/activity/activity.go +++ b/src/server/game/mod/activity/activity.go @@ -22,6 +22,7 @@ const ( ACT_TYPE_DISCOUNT_GIFT = 4 // 折扣礼包 ACT_TYPE_ADD_GIFT = 5 // 加送礼包 ACT_TYPE_SUPER_GIFT = 6 // 超值加购礼包 + ACT_TYPE_CATNIP = 7 // 猫草大作战 ) const ( diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go new file mode 100644 index 00000000..25a2f030 --- /dev/null +++ b/src/server/game/mod/catnip/Catnip.go @@ -0,0 +1,206 @@ +package catnip + +import ( + "fmt" + "server/GoUtil" + catnipCfg "server/conf/catnip" + "server/game/mod/item" +) + +type CatnipMod struct { + Id int + Game map[int]*CatnipGame + InviteList map[int][]*InviteInfo // 邀请列表,key: 邀请者ID, value: 被邀请者ID + BeInvitedList map[int][]*InviteInfo // 被邀请列表,key: 被邀请者ID, value: 邀请者ID +} + +type InviteInfo struct { + InviteId int // 邀请者ID + Time int64 // 邀请时间 +} + +type CatnipGame struct { + Id int // 游戏ID + Partner int // 伙伴ID + Progress int // 进度 + PartnerAdd int // 伙伴贡献 + Reward []int // 已领取阶段奖励 + Mul int // 倍数 + Status int // 0: Not Started, 1: In Progress, 2: Completed +} + +const ( + GAME_STATUS_IDLE = 0 // 游戏未开始 + GAME_STATUS_IN_PROGRESS = 1 // 游戏进行中 + GAME_STATUS_COMPLETED = 2 // 游戏已完成 +) + +func (c *CatnipMod) InitData() { + // Initialize Catnip data here + 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 { + OldId := c.Id + if Id == 0 { + c.Id = 0 + return OldId + } + if c.Id == Id { + return 0 + } + c.Id = Id + c.Game = make(map[int]*CatnipGame) + 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 + } + } + return c.Id +} + +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) + } + for _, invite := range c.InviteList[Id] { + if invite.InviteId == Uid { + return fmt.Errorf("user with ID %d is already invited to game ID %d", Uid, Id) + } + } + c.InviteList[Id] = append(c.InviteList[Id], &InviteInfo{ + InviteId: Uid, + 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) + } + // Check if the user is already invited + for _, invite := range c.BeInvitedList[Uid] { + if invite.InviteId == Id { + return fmt.Errorf("user with ID %d has already been invited to game ID %d", Uid, Id) + } + } + c.BeInvitedList[Uid] = append(c.BeInvitedList[Uid], &InviteInfo{ + InviteId: Id, + 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 + inviteList, exists := c.InviteList[Id] + if !exists { + return nil, fmt.Errorf("no invites found for game ID %d", Id) + } + userExists := false + InviteUser := []int{} + for _, invite := range inviteList { + if invite.InviteId == Uid { + userExists = true + continue + } + InviteUser = append(InviteUser, invite.InviteId) + + } + if !userExists { + return nil, fmt.Errorf("user with ID %d is not invited to game ID %d", Uid, Id) + } + c.InviteList[Id] = make([]*InviteInfo, 0) // Clear the invite list after agreeing + GameInfo.Partner = Uid // Set the partner for the game + GameInfo.Status = GAME_STATUS_COMPLETED // Set the game status to in progress + return InviteUser, 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) + } + for k, invite := range c.BeInvitedList[Id] { + if invite.InviteId == Uid { + // Remove the invite from the list + c.BeInvitedList[Id] = append(c.InviteList[Id][:k], c.InviteList[Id][k+1:]...) + return nil + } + } + return fmt.Errorf("user with ID %d is not invited to game ID %d", Uid, Id) +} + +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 + return nil +} + +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) + } + for k, invite := range c.InviteList[Id] { + if invite.InviteId == Uid { + // Remove the invite from the list + c.InviteList[Id] = append(c.InviteList[Id][:k], c.InviteList[Id][k+1:]...) + return nil + } + } + return nil +} + +func (c *CatnipMod) Play(Id int) error { + return nil +} + +func (c *CatnipMod) Reward(Id int) ([]*item.Item, error) { + return nil, nil +} + +func (c *CatnipMod) GrandReward() ([]*item.Item, error) { + return nil, nil +} diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index 3c8e36ac..58b0ddc9 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -93,6 +93,17 @@ const ( HANDLE_TYPE_PLAYROOM_KISS // playroom亲吻 HANDLE_TYPE_PLAYROOM_GAME // playroom游戏 + + HANDLE_TYPE_CATNIP_INVITE // 猫薄荷邀请 + HANDLE_TYPE_CATNIP_AGREE // 猫薄荷同意邀请 + HANDLE_TYPE_CATNIP_AGREE_DEL // 猫薄荷已同意邀请 + HANDLE_TYPE_CATNIP_REFUSE // 猫薄荷拒绝邀请 + HANDLE_TYPE_CATNIP_GROWTH // 猫薄荷成长 + + HANDLE_TYPE_CATNIP_LOCK // 猫薄荷游戏锁定 + + HANDLE_TYPE_VAR_EXPIRE_SET // 设置全服过期数据 + HANDLE_TYPE_VAR_EXPIRE_GET // 获取全服过期数据 ) const ( diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 188928d7..fb6e6461 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -91,6 +91,8 @@ const ( ITEM_POP_LABEL_PlayroomTaskReward ITEM_POP_LABEL = 64 // playroom任务奖励 大奖 ITEM_POP_LABEL_PlayroomUpvote ITEM_POP_LABEL = 65 // 玩家点赞 ITEM_POP_LABEL_DecorateReward ITEM_POP_LABEL = 66 // 装饰奖励 + ITEM_POP_LABEL_CatnipReward ITEM_POP_LABEL = 67 // 猫草大作战奖励 + ITEM_POP_LABEL_CatnipGrandReward ITEM_POP_LABEL = 68 // 猫草大作战大奖奖励 ) // Enum value maps for ITEM_POP_LABEL. @@ -163,6 +165,8 @@ var ( 64: "PlayroomTaskReward", 65: "PlayroomUpvote", 66: "DecorateReward", + 67: "CatnipReward", + 68: "CatnipGrandReward", } ITEM_POP_LABEL_value = map[string]int32{ "Playroom": 0, @@ -232,6 +236,8 @@ var ( "PlayroomTaskReward": 64, "PlayroomUpvote": 65, "DecorateReward": 66, + "CatnipReward": 67, + "CatnipGrandReward": 68, } ) @@ -23402,6 +23408,916 @@ func (x *ResCollect) GetMsg() string { return "" } +// #region 猫草大作战 +// ----------------【猫草大作战】-------------- +// 猫草大作战详细信息 +type ReqCatnip struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReqCatnip) Reset() { + *x = ReqCatnip{} + mi := &file_proto_Gameapi_proto_msgTypes[411] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqCatnip) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqCatnip) ProtoMessage() {} + +func (x *ReqCatnip) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[411] + 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 ReqCatnip.ProtoReflect.Descriptor instead. +func (*ReqCatnip) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{411} +} + +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"` // 小游戏列表 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResCatnip) Reset() { + *x = ResCatnip{} + mi := &file_proto_Gameapi_proto_msgTypes[412] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResCatnip) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResCatnip) ProtoMessage() {} + +func (x *ResCatnip) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[412] + 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 ResCatnip.ProtoReflect.Descriptor instead. +func (*ResCatnip) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{412} +} + +func (x *ResCatnip) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ResCatnip) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *ResCatnip) GetEndTime() int32 { + if x != nil { + return x.EndTime + } + return 0 +} + +func (x *ResCatnip) GetTemplate() int32 { + if x != nil { + return x.Template + } + return 0 +} + +func (x *ResCatnip) GetGameList() []*CatnipGame { + if x != nil { + return x.GameList + } + 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"` // 伙伴 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CatnipGame) Reset() { + *x = CatnipGame{} + mi := &file_proto_Gameapi_proto_msgTypes[413] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CatnipGame) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CatnipGame) ProtoMessage() {} + +func (x *CatnipGame) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[413] + 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 CatnipGame.ProtoReflect.Descriptor instead. +func (*CatnipGame) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{413} +} + +func (x *CatnipGame) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CatnipGame) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *CatnipGame) GetProgress() int32 { + if x != nil { + return x.Progress + } + return 0 +} + +func (x *CatnipGame) GetReward() []int32 { + if x != nil { + return x.Reward + } + return nil +} + +func (x *CatnipGame) GetPartner() *ResPlayerSimple { + if x != nil { + return x.Partner + } + return nil +} + +// 邀请好友 +type ReqCatnipInvite struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id + Uid int64 `protobuf:"varint,2,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReqCatnipInvite) Reset() { + *x = ReqCatnipInvite{} + mi := &file_proto_Gameapi_proto_msgTypes[414] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqCatnipInvite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqCatnipInvite) ProtoMessage() {} + +func (x *ReqCatnipInvite) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[414] + 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 ReqCatnipInvite.ProtoReflect.Descriptor instead. +func (*ReqCatnipInvite) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{414} +} + +func (x *ReqCatnipInvite) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReqCatnipInvite) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + +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"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResCatnipInvite) Reset() { + *x = ResCatnipInvite{} + mi := &file_proto_Gameapi_proto_msgTypes[415] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResCatnipInvite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResCatnipInvite) ProtoMessage() {} + +func (x *ResCatnipInvite) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[415] + 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 ResCatnipInvite.ProtoReflect.Descriptor instead. +func (*ResCatnipInvite) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{415} +} + +func (x *ResCatnipInvite) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResCatnipInvite) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +// 同意邀请 +type ReqCatnipAgree struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 游戏id + Uid int64 `protobuf:"varint,2,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReqCatnipAgree) Reset() { + *x = ReqCatnipAgree{} + mi := &file_proto_Gameapi_proto_msgTypes[416] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqCatnipAgree) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqCatnipAgree) ProtoMessage() {} + +func (x *ReqCatnipAgree) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[416] + 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 ReqCatnipAgree.ProtoReflect.Descriptor instead. +func (*ReqCatnipAgree) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{416} +} + +func (x *ReqCatnipAgree) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReqCatnipAgree) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + +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"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResCatnipAgree) Reset() { + *x = ResCatnipAgree{} + mi := &file_proto_Gameapi_proto_msgTypes[417] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResCatnipAgree) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResCatnipAgree) ProtoMessage() {} + +func (x *ResCatnipAgree) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[417] + 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 ResCatnipAgree.ProtoReflect.Descriptor instead. +func (*ResCatnipAgree) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{417} +} + +func (x *ResCatnipAgree) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResCatnipAgree) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type ReqCatnipRefuse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 游戏id + Uid int64 `protobuf:"varint,2,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReqCatnipRefuse) Reset() { + *x = ReqCatnipRefuse{} + mi := &file_proto_Gameapi_proto_msgTypes[418] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqCatnipRefuse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqCatnipRefuse) ProtoMessage() {} + +func (x *ReqCatnipRefuse) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[418] + 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 ReqCatnipRefuse.ProtoReflect.Descriptor instead. +func (*ReqCatnipRefuse) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{418} +} + +func (x *ReqCatnipRefuse) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReqCatnipRefuse) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + +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"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResCatnipRefuse) Reset() { + *x = ResCatnipRefuse{} + mi := &file_proto_Gameapi_proto_msgTypes[419] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResCatnipRefuse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResCatnipRefuse) ProtoMessage() {} + +func (x *ResCatnipRefuse) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[419] + 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 ResCatnipRefuse.ProtoReflect.Descriptor instead. +func (*ResCatnipRefuse) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{419} +} + +func (x *ResCatnipRefuse) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResCatnipRefuse) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +// 设置游戏倍数 +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"` // 倍数 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReqCatnipMultiply) Reset() { + *x = ReqCatnipMultiply{} + mi := &file_proto_Gameapi_proto_msgTypes[420] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqCatnipMultiply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqCatnipMultiply) ProtoMessage() {} + +func (x *ReqCatnipMultiply) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[420] + 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 ReqCatnipMultiply.ProtoReflect.Descriptor instead. +func (*ReqCatnipMultiply) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{420} +} + +func (x *ReqCatnipMultiply) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReqCatnipMultiply) GetMultiply() int32 { + if x != nil { + return x.Multiply + } + return 0 +} + +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"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResCatnipMultiply) Reset() { + *x = ResCatnipMultiply{} + mi := &file_proto_Gameapi_proto_msgTypes[421] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResCatnipMultiply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResCatnipMultiply) ProtoMessage() {} + +func (x *ResCatnipMultiply) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[421] + 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 ResCatnipMultiply.ProtoReflect.Descriptor instead. +func (*ResCatnipMultiply) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{421} +} + +func (x *ResCatnipMultiply) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResCatnipMultiply) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +// 游戏转盘 +type ReqCatnipPlay struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReqCatnipPlay) Reset() { + *x = ReqCatnipPlay{} + mi := &file_proto_Gameapi_proto_msgTypes[422] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqCatnipPlay) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqCatnipPlay) ProtoMessage() {} + +func (x *ReqCatnipPlay) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[422] + 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 ReqCatnipPlay.ProtoReflect.Descriptor instead. +func (*ReqCatnipPlay) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{422} +} + +func (x *ReqCatnipPlay) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +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 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResCatnipPlay) Reset() { + *x = ResCatnipPlay{} + mi := &file_proto_Gameapi_proto_msgTypes[423] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResCatnipPlay) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResCatnipPlay) ProtoMessage() {} + +func (x *ResCatnipPlay) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[423] + 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 ResCatnipPlay.ProtoReflect.Descriptor instead. +func (*ResCatnipPlay) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{423} +} + +func (x *ResCatnipPlay) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResCatnipPlay) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *ResCatnipPlay) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +// 领取阶段奖励 +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"` // 进度 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReqCatnipReward) Reset() { + *x = ReqCatnipReward{} + mi := &file_proto_Gameapi_proto_msgTypes[424] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqCatnipReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqCatnipReward) ProtoMessage() {} + +func (x *ReqCatnipReward) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[424] + 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 ReqCatnipReward.ProtoReflect.Descriptor instead. +func (*ReqCatnipReward) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{424} +} + +func (x *ReqCatnipReward) GetId() int32 { + if x != nil { + return x.Id + } + 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"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResCatnipReward) Reset() { + *x = ResCatnipReward{} + mi := &file_proto_Gameapi_proto_msgTypes[425] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResCatnipReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResCatnipReward) ProtoMessage() {} + +func (x *ResCatnipReward) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[425] + 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 ResCatnipReward.ProtoReflect.Descriptor instead. +func (*ResCatnipReward) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{425} +} + +func (x *ResCatnipReward) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResCatnipReward) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +// 领取大奖 +type ReqCatnipGrandReward struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReqCatnipGrandReward) Reset() { + *x = ReqCatnipGrandReward{} + mi := &file_proto_Gameapi_proto_msgTypes[426] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqCatnipGrandReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqCatnipGrandReward) ProtoMessage() {} + +func (x *ReqCatnipGrandReward) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[426] + 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 ReqCatnipGrandReward.ProtoReflect.Descriptor instead. +func (*ReqCatnipGrandReward) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{426} +} + +type ResCatnipGrandReward 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 *ResCatnipGrandReward) Reset() { + *x = ResCatnipGrandReward{} + mi := &file_proto_Gameapi_proto_msgTypes[427] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResCatnipGrandReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResCatnipGrandReward) ProtoMessage() {} + +func (x *ResCatnipGrandReward) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[427] + 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 ResCatnipGrandReward.ProtoReflect.Descriptor instead. +func (*ResCatnipGrandReward) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{427} +} + +func (x *ResCatnipGrandReward) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResCatnipGrandReward) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + // -------------------后台管理------------------- type AdminReq struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -23413,7 +24329,7 @@ type AdminReq struct { func (x *AdminReq) Reset() { *x = AdminReq{} - mi := &file_proto_Gameapi_proto_msgTypes[411] + mi := &file_proto_Gameapi_proto_msgTypes[428] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23425,7 +24341,7 @@ func (x *AdminReq) String() string { func (*AdminReq) ProtoMessage() {} func (x *AdminReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[411] + mi := &file_proto_Gameapi_proto_msgTypes[428] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23438,7 +24354,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{411} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{428} } func (x *AdminReq) GetFunc() string { @@ -23465,7 +24381,7 @@ type AdminRes struct { func (x *AdminRes) Reset() { *x = AdminRes{} - mi := &file_proto_Gameapi_proto_msgTypes[412] + mi := &file_proto_Gameapi_proto_msgTypes[429] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23477,7 +24393,7 @@ func (x *AdminRes) String() string { func (*AdminRes) ProtoMessage() {} func (x *AdminRes) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[412] + mi := &file_proto_Gameapi_proto_msgTypes[429] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23490,7 +24406,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{412} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{429} } func (x *AdminRes) GetFunc() string { @@ -23516,7 +24432,7 @@ type ReqAdminInfo struct { func (x *ReqAdminInfo) Reset() { *x = ReqAdminInfo{} - mi := &file_proto_Gameapi_proto_msgTypes[413] + mi := &file_proto_Gameapi_proto_msgTypes[430] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23528,7 +24444,7 @@ func (x *ReqAdminInfo) String() string { func (*ReqAdminInfo) ProtoMessage() {} func (x *ReqAdminInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[413] + mi := &file_proto_Gameapi_proto_msgTypes[430] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23541,7 +24457,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{413} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{430} } func (x *ReqAdminInfo) GetUid() int64 { @@ -23559,7 +24475,7 @@ type ReqReloadServerMail struct { func (x *ReqReloadServerMail) Reset() { *x = ReqReloadServerMail{} - mi := &file_proto_Gameapi_proto_msgTypes[414] + mi := &file_proto_Gameapi_proto_msgTypes[431] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23571,7 +24487,7 @@ func (x *ReqReloadServerMail) String() string { func (*ReqReloadServerMail) ProtoMessage() {} func (x *ReqReloadServerMail) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[414] + mi := &file_proto_Gameapi_proto_msgTypes[431] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23584,7 +24500,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{414} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{431} } type ReqServerInfo struct { @@ -23595,7 +24511,7 @@ type ReqServerInfo struct { func (x *ReqServerInfo) Reset() { *x = ReqServerInfo{} - mi := &file_proto_Gameapi_proto_msgTypes[415] + mi := &file_proto_Gameapi_proto_msgTypes[432] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23607,7 +24523,7 @@ func (x *ReqServerInfo) String() string { func (*ReqServerInfo) ProtoMessage() {} func (x *ReqServerInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[415] + mi := &file_proto_Gameapi_proto_msgTypes[432] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23620,7 +24536,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{415} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{432} } type ReqReload struct { @@ -23631,7 +24547,7 @@ type ReqReload struct { func (x *ReqReload) Reset() { *x = ReqReload{} - mi := &file_proto_Gameapi_proto_msgTypes[416] + mi := &file_proto_Gameapi_proto_msgTypes[433] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23643,7 +24559,7 @@ func (x *ReqReload) String() string { func (*ReqReload) ProtoMessage() {} func (x *ReqReload) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[416] + mi := &file_proto_Gameapi_proto_msgTypes[433] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23656,7 +24572,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{416} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{433} } type ReqAdminGm struct { @@ -23669,7 +24585,7 @@ type ReqAdminGm struct { func (x *ReqAdminGm) Reset() { *x = ReqAdminGm{} - mi := &file_proto_Gameapi_proto_msgTypes[417] + mi := &file_proto_Gameapi_proto_msgTypes[434] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23681,7 +24597,7 @@ func (x *ReqAdminGm) String() string { func (*ReqAdminGm) ProtoMessage() {} func (x *ReqAdminGm) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[417] + mi := &file_proto_Gameapi_proto_msgTypes[434] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23694,7 +24610,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{417} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{434} } func (x *ReqAdminGm) GetUid() int64 { @@ -25419,6 +26335,60 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\n" + "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" + + "\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" + + "\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" + + "\x0fReqCatnipInvite\x12\x0e\n" + + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"K\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" + + "\x0eReqCatnipAgree\x12\x0e\n" + + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"J\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" + + "\x0fReqCatnipRefuse\x12\x0e\n" + + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + + "\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" + + "\x11ResCatnipMultiply\x12&\n" + + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\x1f\n" + + "\rReqCatnipPlay\x12\x0e\n" + + "\x02Id\x18\x01 \x01(\x05R\x02Id\"Y\n" + + "\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" + + "\x0fReqCatnipReward\x12\x0e\n" + + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x1a\n" + + "\bProgress\x18\x02 \x01(\x05R\bProgress\"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" + + "\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\"2\n" + "\bAdminReq\x12\x12\n" + "\x04Func\x18\x01 \x01(\tR\x04Func\x12\x12\n" + @@ -25434,7 +26404,8 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\n" + "ReqAdminGm\x12\x10\n" + "\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x18\n" + - "\aCommand\x18\x02 \x01(\tR\aCommand*\xfc\t\n" + + "\aCommand\x18\x02 \x01(\tR\aCommand*\xa5\n" + + "\n" + "\x0eITEM_POP_LABEL\x12\f\n" + "\bPlayroom\x10\x00\x12\r\n" + "\tPiggyBank\x10\x01\x12\n" + @@ -25509,7 +26480,9 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\fPlayroomTask\x10?\x12\x16\n" + "\x12PlayroomTaskReward\x10@\x12\x12\n" + "\x0ePlayroomUpvote\x10A\x12\x12\n" + - "\x0eDecorateReward\x10B*B\n" + + "\x0eDecorateReward\x10B\x12\x10\n" + + "\fCatnipReward\x10C\x12\x15\n" + + "\x11CatnipGrandReward\x10D*B\n" + "\vHANDLE_TYPE\x12\a\n" + "\x03ADD\x10\x00\x12\v\n" + "\aCOMPOSE\x10\x01\x12\a\n" + @@ -25626,7 +26599,7 @@ func file_proto_Gameapi_proto_rawDescGZIP() []byte { } var file_proto_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 11) -var file_proto_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 479) +var file_proto_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 496) var file_proto_Gameapi_proto_goTypes = []any{ (ITEM_POP_LABEL)(0), // 0: tutorial.ITEM_POP_LABEL (HANDLE_TYPE)(0), // 1: tutorial.HANDLE_TYPE @@ -26050,103 +27023,120 @@ var file_proto_Gameapi_proto_goTypes = []any{ (*CollectItem)(nil), // 419: tutorial.CollectItem (*ReqCollect)(nil), // 420: tutorial.ReqCollect (*ResCollect)(nil), // 421: tutorial.ResCollect - (*AdminReq)(nil), // 422: tutorial.AdminReq - (*AdminRes)(nil), // 423: tutorial.AdminRes - (*ReqAdminInfo)(nil), // 424: tutorial.ReqAdminInfo - (*ReqReloadServerMail)(nil), // 425: tutorial.ReqReloadServerMail - (*ReqServerInfo)(nil), // 426: tutorial.ReqServerInfo - (*ReqReload)(nil), // 427: tutorial.ReqReload - (*ReqAdminGm)(nil), // 428: tutorial.ReqAdminGm - nil, // 429: tutorial.ResChessColorData.MChessColorDataEntry - nil, // 430: tutorial.UpdateBaseItemInfo.MUpdateItemEntry - nil, // 431: tutorial.ResPlayerChessData.MChessDataEntry - nil, // 432: tutorial.UpdatePlayerChessData.MChessDataEntry - nil, // 433: tutorial.ReqSeparateChess.MChessDataEntry - nil, // 434: tutorial.ReqUpgradeChess.MChessDataEntry - nil, // 435: tutorial.ReqGetChessFromBuff.MChessDataEntry - nil, // 436: tutorial.ReqChessEx.MChessDataEntry - nil, // 437: tutorial.ReqSourceChest.MChessDataEntry - nil, // 438: tutorial.ReqPlayroomOutline.MChessDataEntry - nil, // 439: tutorial.ReqPutChessInBag.MChessDataEntry - nil, // 440: tutorial.ReqTakeChessOutBag.MChessDataEntry - nil, // 441: tutorial.UserInfo.SetEmojiEntry - nil, // 442: tutorial.ReqRewardOrder.MChessDataEntry - nil, // 443: tutorial.ResCardInfo.AllCardEntry - nil, // 444: tutorial.ResCardInfo.HandbookEntry - nil, // 445: tutorial.ResGuildInfo.RewardEntry - nil, // 446: tutorial.ResGuideInfo.RewardEntry - nil, // 447: tutorial.ResDailyTask.WeekRewardEntry - nil, // 448: tutorial.ResDailyTask.DailyTaskEntry - nil, // 449: tutorial.ResLimitEvent.LimitEventListEntry - nil, // 450: tutorial.ResLimitEventProgress.ProgressRewardEntry - nil, // 451: tutorial.LimitEvent.ParamEntry - nil, // 452: tutorial.ReqLimitEventLuckyCat.MChessDataEntry - nil, // 453: tutorial.ResPlayerSimple.EmojiEntry - nil, // 454: tutorial.ResKv.KvEntry - nil, // 455: tutorial.ResRank.RankListEntry - nil, // 456: tutorial.ResMailList.MailListEntry - nil, // 457: tutorial.ResCharge.SpecialShopEntry - nil, // 458: tutorial.ResCharge.ChessShopEntry - nil, // 459: tutorial.ResCharge.GiftEntry - nil, // 460: tutorial.ReqBuyChessShop2.MChessDataEntry - nil, // 461: tutorial.ResEndless.EndlessListEntry - nil, // 462: tutorial.ResChampshipRank.RankListEntry - nil, // 463: tutorial.ResChampshipPreRank.RankListEntry - nil, // 464: tutorial.ResNotifyCard.CardEntry - nil, // 465: tutorial.ResNotifyCard.MasterEntry - nil, // 466: tutorial.ResNotifyCard.HandbookEntry - nil, // 467: tutorial.ResMining.MapEntry - nil, // 468: tutorial.ReqMiningTake.MapEntry - nil, // 469: tutorial.ResActRed.RedEntry - nil, // 470: tutorial.ResItem.ItemEntry - nil, // 471: tutorial.ItemNotify.ItemEntry - nil, // 472: tutorial.ResGuessColor.OMapEntry - nil, // 473: tutorial.ReqGuessColorTake.OMapEntry - nil, // 474: tutorial.GuessColorInfo.MapEntry - nil, // 475: tutorial.ResPlayroom.PlayroomEntry - nil, // 476: tutorial.ResPlayroom.MoodEntry - nil, // 477: tutorial.ResPlayroom.PhysiologyEntry - nil, // 478: tutorial.ResPlayroom.DressEntry - nil, // 479: tutorial.ResPlayroom.DressSetEntry - nil, // 480: tutorial.ReqPlayroomDressSet.DressSetEntry - nil, // 481: tutorial.NotifyPlayroomMood.MoodEntry - nil, // 482: tutorial.NotifyPlayroomMood.PhysiologyEntry - nil, // 483: tutorial.ResPlayroomInfo.PlayroomEntry - nil, // 484: tutorial.ResPlayroomInfo.ItemsEntry - nil, // 485: tutorial.ResPlayroomInfo.FlipEntry - nil, // 486: tutorial.ResPlayroomInfo.EmojiEntry - nil, // 487: tutorial.ResPlayroomInfo.DressSetEntry - nil, // 488: tutorial.ResPlayroomGame.ItemsEntry - nil, // 489: tutorial.ReqPlayroomSetRoom.PlayroomEntry + (*ReqCatnip)(nil), // 422: tutorial.ReqCatnip + (*ResCatnip)(nil), // 423: tutorial.ResCatnip + (*CatnipGame)(nil), // 424: tutorial.CatnipGame + (*ReqCatnipInvite)(nil), // 425: tutorial.ReqCatnipInvite + (*ResCatnipInvite)(nil), // 426: tutorial.ResCatnipInvite + (*ReqCatnipAgree)(nil), // 427: tutorial.ReqCatnipAgree + (*ResCatnipAgree)(nil), // 428: tutorial.ResCatnipAgree + (*ReqCatnipRefuse)(nil), // 429: tutorial.ReqCatnipRefuse + (*ResCatnipRefuse)(nil), // 430: tutorial.ResCatnipRefuse + (*ReqCatnipMultiply)(nil), // 431: tutorial.ReqCatnipMultiply + (*ResCatnipMultiply)(nil), // 432: tutorial.ResCatnipMultiply + (*ReqCatnipPlay)(nil), // 433: tutorial.ReqCatnipPlay + (*ResCatnipPlay)(nil), // 434: tutorial.ResCatnipPlay + (*ReqCatnipReward)(nil), // 435: tutorial.ReqCatnipReward + (*ResCatnipReward)(nil), // 436: tutorial.ResCatnipReward + (*ReqCatnipGrandReward)(nil), // 437: tutorial.ReqCatnipGrandReward + (*ResCatnipGrandReward)(nil), // 438: tutorial.ResCatnipGrandReward + (*AdminReq)(nil), // 439: tutorial.AdminReq + (*AdminRes)(nil), // 440: tutorial.AdminRes + (*ReqAdminInfo)(nil), // 441: tutorial.ReqAdminInfo + (*ReqReloadServerMail)(nil), // 442: tutorial.ReqReloadServerMail + (*ReqServerInfo)(nil), // 443: tutorial.ReqServerInfo + (*ReqReload)(nil), // 444: tutorial.ReqReload + (*ReqAdminGm)(nil), // 445: tutorial.ReqAdminGm + nil, // 446: tutorial.ResChessColorData.MChessColorDataEntry + nil, // 447: tutorial.UpdateBaseItemInfo.MUpdateItemEntry + nil, // 448: tutorial.ResPlayerChessData.MChessDataEntry + nil, // 449: tutorial.UpdatePlayerChessData.MChessDataEntry + nil, // 450: tutorial.ReqSeparateChess.MChessDataEntry + nil, // 451: tutorial.ReqUpgradeChess.MChessDataEntry + nil, // 452: tutorial.ReqGetChessFromBuff.MChessDataEntry + nil, // 453: tutorial.ReqChessEx.MChessDataEntry + nil, // 454: tutorial.ReqSourceChest.MChessDataEntry + nil, // 455: tutorial.ReqPlayroomOutline.MChessDataEntry + nil, // 456: tutorial.ReqPutChessInBag.MChessDataEntry + nil, // 457: tutorial.ReqTakeChessOutBag.MChessDataEntry + nil, // 458: tutorial.UserInfo.SetEmojiEntry + nil, // 459: tutorial.ReqRewardOrder.MChessDataEntry + nil, // 460: tutorial.ResCardInfo.AllCardEntry + nil, // 461: tutorial.ResCardInfo.HandbookEntry + nil, // 462: tutorial.ResGuildInfo.RewardEntry + nil, // 463: tutorial.ResGuideInfo.RewardEntry + nil, // 464: tutorial.ResDailyTask.WeekRewardEntry + nil, // 465: tutorial.ResDailyTask.DailyTaskEntry + nil, // 466: tutorial.ResLimitEvent.LimitEventListEntry + nil, // 467: tutorial.ResLimitEventProgress.ProgressRewardEntry + nil, // 468: tutorial.LimitEvent.ParamEntry + nil, // 469: tutorial.ReqLimitEventLuckyCat.MChessDataEntry + nil, // 470: tutorial.ResPlayerSimple.EmojiEntry + nil, // 471: tutorial.ResKv.KvEntry + nil, // 472: tutorial.ResRank.RankListEntry + nil, // 473: tutorial.ResMailList.MailListEntry + nil, // 474: tutorial.ResCharge.SpecialShopEntry + nil, // 475: tutorial.ResCharge.ChessShopEntry + nil, // 476: tutorial.ResCharge.GiftEntry + nil, // 477: tutorial.ReqBuyChessShop2.MChessDataEntry + nil, // 478: tutorial.ResEndless.EndlessListEntry + nil, // 479: tutorial.ResChampshipRank.RankListEntry + nil, // 480: tutorial.ResChampshipPreRank.RankListEntry + nil, // 481: tutorial.ResNotifyCard.CardEntry + nil, // 482: tutorial.ResNotifyCard.MasterEntry + nil, // 483: tutorial.ResNotifyCard.HandbookEntry + nil, // 484: tutorial.ResMining.MapEntry + nil, // 485: tutorial.ReqMiningTake.MapEntry + nil, // 486: tutorial.ResActRed.RedEntry + nil, // 487: tutorial.ResItem.ItemEntry + nil, // 488: tutorial.ItemNotify.ItemEntry + nil, // 489: tutorial.ResGuessColor.OMapEntry + nil, // 490: tutorial.ReqGuessColorTake.OMapEntry + nil, // 491: tutorial.GuessColorInfo.MapEntry + nil, // 492: tutorial.ResPlayroom.PlayroomEntry + nil, // 493: tutorial.ResPlayroom.MoodEntry + nil, // 494: tutorial.ResPlayroom.PhysiologyEntry + nil, // 495: tutorial.ResPlayroom.DressEntry + nil, // 496: tutorial.ResPlayroom.DressSetEntry + nil, // 497: tutorial.ReqPlayroomDressSet.DressSetEntry + nil, // 498: tutorial.NotifyPlayroomMood.MoodEntry + nil, // 499: tutorial.NotifyPlayroomMood.PhysiologyEntry + nil, // 500: tutorial.ResPlayroomInfo.PlayroomEntry + nil, // 501: tutorial.ResPlayroomInfo.ItemsEntry + nil, // 502: tutorial.ResPlayroomInfo.FlipEntry + nil, // 503: tutorial.ResPlayroomInfo.EmojiEntry + nil, // 504: tutorial.ResPlayroomInfo.DressSetEntry + nil, // 505: tutorial.ResPlayroomGame.ItemsEntry + nil, // 506: tutorial.ReqPlayroomSetRoom.PlayroomEntry } var file_proto_Gameapi_proto_depIdxs = []int32{ - 429, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry + 446, // 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 - 430, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry - 431, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry + 447, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry + 448, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry 65, // 5: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag 1, // 6: tutorial.ChessHandle.type:type_name -> tutorial.HANDLE_TYPE - 432, // 7: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry + 449, // 7: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry 50, // 8: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle 2, // 9: tutorial.ResUpdatePlayerChessData.code:type_name -> tutorial.RES_CODE - 433, // 10: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry + 450, // 10: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry 2, // 11: tutorial.ResSeparateChess.code:type_name -> tutorial.RES_CODE - 434, // 12: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry + 451, // 12: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry 2, // 13: tutorial.ResUpgradeChess.code:type_name -> tutorial.RES_CODE - 435, // 14: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry + 452, // 14: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry 2, // 15: tutorial.ResGetChessFromBuff.code:type_name -> tutorial.RES_CODE 8, // 16: tutorial.ReqChessEx.Type:type_name -> tutorial.CHESS_EX_TYPE - 436, // 17: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry + 453, // 17: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry 2, // 18: tutorial.ResChessEx.code:type_name -> tutorial.RES_CODE - 437, // 19: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry + 454, // 19: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry 2, // 20: tutorial.ResSourceChest.code:type_name -> tutorial.RES_CODE - 438, // 21: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry + 455, // 21: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry 2, // 22: tutorial.ResPlayroomOutline.code:type_name -> tutorial.RES_CODE 66, // 23: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid - 439, // 24: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry + 456, // 24: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry 2, // 25: tutorial.ResPutChessInBag.code:type_name -> tutorial.RES_CODE - 440, // 26: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry + 457, // 26: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry 2, // 27: tutorial.ResTakeChessOutBag.code:type_name -> tutorial.RES_CODE 2, // 28: tutorial.ResBuyChessBagGrid.code:type_name -> tutorial.RES_CODE 2, // 29: tutorial.ResSetEnergyMul.ResultCode:type_name -> tutorial.RES_CODE @@ -26156,7 +27146,7 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 176, // 33: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo 172, // 34: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo 179, // 35: tutorial.UserInfo.EmojiList:type_name -> tutorial.EmojiInfo - 441, // 36: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry + 458, // 36: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry 2, // 37: tutorial.ResSetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 38: tutorial.ResSetPetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 39: tutorial.ResBuyEnergy.Code:type_name -> tutorial.RES_CODE @@ -26164,7 +27154,7 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 41: tutorial.ResGetHandbookReward.Code:type_name -> tutorial.RES_CODE 94, // 42: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo 2, // 43: tutorial.ResHandbookAllReward.Code:type_name -> tutorial.RES_CODE - 442, // 44: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry + 459, // 44: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry 2, // 45: tutorial.ResRewardOrder.Code:type_name -> tutorial.RES_CODE 2, // 46: tutorial.ResDelOrder.Code:type_name -> tutorial.RES_CODE 159, // 47: tutorial.Order.Items:type_name -> tutorial.ItemInfo @@ -26173,8 +27163,8 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 50: tutorial.ResDecorateAll.Code:type_name -> tutorial.RES_CODE 2, // 51: tutorial.ResDecorateReward.Code:type_name -> tutorial.RES_CODE 114, // 52: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card - 443, // 53: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry - 444, // 54: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry + 460, // 53: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry + 461, // 54: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry 2, // 55: tutorial.ResCardSeasonFirstReward.Code:type_name -> tutorial.RES_CODE 2, // 56: tutorial.ResCardHandbookReward.Code:type_name -> tutorial.RES_CODE 2, // 57: tutorial.ResMasterCard.Code:type_name -> tutorial.RES_CODE @@ -26193,12 +27183,12 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 70: tutorial.ResGetFriendCard.Code:type_name -> tutorial.RES_CODE 2, // 71: tutorial.ResGuideReward.Code:type_name -> tutorial.RES_CODE 2, // 72: tutorial.ResGuidePlayroom.Code:type_name -> tutorial.RES_CODE - 445, // 73: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry - 446, // 74: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry + 462, // 73: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry + 463, // 74: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry 159, // 75: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo 160, // 76: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack - 447, // 77: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry - 448, // 78: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry + 464, // 77: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry + 465, // 78: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry 159, // 79: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo 164, // 80: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress 159, // 81: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo @@ -26219,23 +27209,23 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 96: tutorial.ResGetMonthLoginReward.Code:type_name -> tutorial.RES_CODE 189, // 97: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo 2, // 98: tutorial.ResActivityReward.Code:type_name -> tutorial.RES_CODE - 449, // 99: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry - 450, // 100: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry + 466, // 99: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry + 467, // 100: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry 2, // 101: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE 2, // 102: tutorial.ResSelectLimitEvent.Code:type_name -> tutorial.RES_CODE - 451, // 103: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry - 452, // 104: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry + 468, // 103: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry + 469, // 104: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry 2, // 105: tutorial.ResLimitEventLuckyCat.Code:type_name -> tutorial.RES_CODE 2, // 106: tutorial.ResLimitSenceReward.Code:type_name -> tutorial.RES_CODE 159, // 107: tutorial.ResChessRainReward.Items:type_name -> tutorial.ItemInfo 2, // 108: tutorial.ResFastProduceReward.Code:type_name -> tutorial.RES_CODE 2, // 109: tutorial.ResCatTrickReward.Code:type_name -> tutorial.RES_CODE 214, // 110: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple - 453, // 111: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry + 470, // 111: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry 214, // 112: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple 216, // 113: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog 219, // 114: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard - 454, // 115: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry + 471, // 115: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry 2, // 116: tutorial.ResFriendByCode.Code:type_name -> tutorial.RES_CODE 214, // 117: tutorial.ResFriendByCode.Player:type_name -> tutorial.ResPlayerSimple 214, // 118: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple @@ -26255,26 +27245,26 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 214, // 132: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple 2, // 133: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE 2, // 134: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE - 455, // 135: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry - 456, // 136: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry + 472, // 135: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry + 473, // 136: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry 159, // 137: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo 258, // 138: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo 2, // 139: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE 2, // 140: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE 2, // 141: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE - 457, // 142: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry - 458, // 143: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry - 459, // 144: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry + 474, // 142: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry + 475, // 143: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry + 476, // 144: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry 267, // 145: tutorial.ResCharge.Wish:type_name -> tutorial.WishList 2, // 146: tutorial.ResAddWish.Code:type_name -> tutorial.RES_CODE 2, // 147: tutorial.ResGetWish.Code:type_name -> tutorial.RES_CODE 2, // 148: tutorial.ResSendWishBeg.Code:type_name -> tutorial.RES_CODE 2, // 149: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE 2, // 150: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE - 460, // 151: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry + 477, // 151: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry 2, // 152: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE 2, // 153: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE - 461, // 154: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry + 478, // 154: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry 159, // 155: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo 2, // 156: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE 2, // 157: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE @@ -26282,26 +27272,26 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 159: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE 2, // 160: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE 2, // 161: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE - 462, // 162: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry - 463, // 163: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry - 464, // 164: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry - 465, // 165: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry - 466, // 166: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry + 479, // 162: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry + 480, // 163: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry + 481, // 164: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry + 482, // 165: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry + 483, // 166: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry 2, // 167: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE - 467, // 168: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry - 468, // 169: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry + 484, // 168: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry + 485, // 169: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry 2, // 170: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE 2, // 171: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE - 469, // 172: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry + 486, // 172: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry 189, // 173: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo - 470, // 174: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry - 471, // 175: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry + 487, // 174: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry + 488, // 175: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry 337, // 176: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo - 472, // 177: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry + 489, // 177: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry 335, // 178: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent 337, // 179: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.GuessColorInfo - 473, // 180: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry - 474, // 181: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry + 490, // 180: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry + 491, // 181: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry 2, // 182: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE 2, // 183: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE 343, // 184: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent @@ -26310,40 +27300,40 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 159, // 187: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo 373, // 188: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent 372, // 189: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom - 475, // 190: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry - 476, // 191: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry + 492, // 190: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry + 493, // 191: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry 159, // 192: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo 369, // 193: tutorial.ResPlayroom.Chip:type_name -> tutorial.ChipInfo - 477, // 194: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry - 478, // 195: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry - 479, // 196: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry + 494, // 194: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry + 495, // 195: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry + 496, // 196: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry 163, // 197: tutorial.ResPlayroom.DailyTask:type_name -> tutorial.DailyTask 163, // 198: tutorial.NotifyPlayroomTask.DailyTask:type_name -> tutorial.DailyTask 2, // 199: tutorial.ResPlayroomTask.Code:type_name -> tutorial.RES_CODE 2, // 200: tutorial.ResPlayroomTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 201: tutorial.ResPlayroomUnlock.Code:type_name -> tutorial.RES_CODE 2, // 202: tutorial.ResPlayroomUpvote.Code:type_name -> tutorial.RES_CODE - 480, // 203: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry + 497, // 203: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry 2, // 204: tutorial.ResPlayroomDressSet.Code:type_name -> tutorial.RES_CODE 2, // 205: tutorial.ResPlayroomPetAirSet.Code:type_name -> tutorial.RES_CODE 2, // 206: tutorial.ResPlayroomWrokOutline.Code:type_name -> tutorial.RES_CODE 159, // 207: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo 369, // 208: tutorial.NotifyPlayroomLose.Chip:type_name -> tutorial.ChipInfo - 481, // 209: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry - 482, // 210: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry - 483, // 211: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry - 484, // 212: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry - 485, // 213: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry - 486, // 214: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry - 487, // 215: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry + 498, // 209: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry + 499, // 210: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry + 500, // 211: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry + 501, // 212: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry + 502, // 213: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry + 503, // 214: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry + 504, // 215: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry 2, // 216: tutorial.ResPlayroomFlip.Code:type_name -> tutorial.RES_CODE 2, // 217: tutorial.ResPlayroomGuide.Code:type_name -> tutorial.RES_CODE 2, // 218: tutorial.ResPlayroomFlipReward.Code:type_name -> tutorial.RES_CODE 2, // 219: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE - 488, // 220: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry + 505, // 220: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry 159, // 221: tutorial.ResPlayroomGameShowReward.Items:type_name -> tutorial.ItemInfo 2, // 222: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE - 489, // 223: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry + 506, // 223: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry 2, // 224: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE 2, // 225: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE 2, // 226: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE @@ -26361,24 +27351,33 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 419, // 238: tutorial.ResCollectInfo.Items:type_name -> tutorial.CollectItem 159, // 239: tutorial.CollectItem.Items:type_name -> tutorial.ItemInfo 2, // 240: tutorial.ResCollect.Code:type_name -> tutorial.RES_CODE - 162, // 241: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek - 163, // 242: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask - 199, // 243: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent - 214, // 244: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple - 258, // 245: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo - 274, // 246: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop - 275, // 247: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop - 286, // 248: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo - 215, // 249: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 215, // 250: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 359, // 251: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress - 159, // 252: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo - 159, // 253: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo - 254, // [254:254] is the sub-list for method output_type - 254, // [254:254] is the sub-list for method input_type - 254, // [254:254] is the sub-list for extension type_name - 254, // [254:254] is the sub-list for extension extendee - 0, // [0:254] is the sub-list for field type_name + 424, // 241: tutorial.ResCatnip.GameList:type_name -> tutorial.CatnipGame + 214, // 242: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple + 2, // 243: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE + 2, // 244: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE + 2, // 245: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE + 2, // 246: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE + 2, // 247: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE + 2, // 248: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE + 2, // 249: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE + 162, // 250: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 163, // 251: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 199, // 252: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 214, // 253: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 258, // 254: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 274, // 255: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 275, // 256: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 286, // 257: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 215, // 258: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 215, // 259: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 359, // 260: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress + 159, // 261: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo + 159, // 262: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo + 263, // [263:263] is the sub-list for method output_type + 263, // [263:263] is the sub-list for method input_type + 263, // [263:263] is the sub-list for extension type_name + 263, // [263:263] is the sub-list for extension extendee + 0, // [0:263] is the sub-list for field type_name } func init() { file_proto_Gameapi_proto_init() } @@ -26392,7 +27391,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: 11, - NumMessages: 479, + NumMessages: 496, NumExtensions: 0, NumServices: 0, },