From d3d7e44f2e695114bcdad32ab099bc5edeb4b59c Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 4 Dec 2024 15:03:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E5=92=8C=E8=AE=A2=E5=8D=95=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/GoUtil/sliceUtil.go | 4 +- src/server/conf/mergeData/MergeDataCfg.go | 15 + src/server/conf/race/raceCfg.go | 72 ++ src/server/game/ActivityFunc.go | 27 + src/server/game/FriendMgr.go | 2 +- src/server/game/GameLogic.go | 51 +- src/server/game/PlayerBaseMod.go | 6 +- src/server/game/PlayerMod.go | 54 +- src/server/game/RegisterNetworkFunc.go | 2 + src/server/game/Type.go | 1 + src/server/game/UnitTest.go | 4 +- src/server/game/external.go | 4 +- src/server/game/mod/item/Item.go | 2 + src/server/game/mod/order/Order.go | 9 + src/server/game/mod/order/OrderFunc.go | 2 +- src/server/game/mod/race/race.go | 95 +++ src/server/msg/Gameapi.pb.go | 781 +++++++++++++++++----- 17 files changed, 895 insertions(+), 236 deletions(-) create mode 100644 src/server/conf/race/raceCfg.go create mode 100644 src/server/game/mod/race/race.go diff --git a/src/server/GoUtil/sliceUtil.go b/src/server/GoUtil/sliceUtil.go index 3766a14c..f7ba557b 100644 --- a/src/server/GoUtil/sliceUtil.go +++ b/src/server/GoUtil/sliceUtil.go @@ -28,7 +28,9 @@ func RandPopSlice(slice []int) ([]int, int) { return slice, -1 } Id := GetRand().Intn(slen) - return append(slice[0:Id], slice[Id+1:]...), slice[Id] + Val := slice[Id] + Slice2 := append(slice[0:Id], slice[Id+1:]...) + return Slice2, Val } func RandSlice(slice []int) int { diff --git a/src/server/conf/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index fc7f87cd..3f1871a6 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -105,6 +105,21 @@ func GetMaxLvById(Id int) int { return gamedata.ParseInt(data["MaxLv"]) } +func GetMaxLvByColor(Color string) int { + data, err := gamedata.GetData(CFG_NAME) + if err != nil { + log.Debug("GetMaxLvByColor GetOne Color:%v not found", Color) + return 0 + } + for _, v := range data { + if gamedata.GetStringValue(v, "Color") == Color { + lv := gamedata.GetIntValue(v, "MaxLv") + return lv + } + } + return 0 +} + // 根据Id获取棋子类型 func GetTypeById(Id int) string { data, err := gamedata.GetDataByIntKey(CFG_NAME, Id) diff --git a/src/server/conf/race/raceCfg.go b/src/server/conf/race/raceCfg.go new file mode 100644 index 00000000..daf4bc65 --- /dev/null +++ b/src/server/conf/race/raceCfg.go @@ -0,0 +1,72 @@ +package raceCfg + +import ( + "server/game/mod/item" + "server/gamedata" +) + +const ( + CFG_RACE_TEMPLATE = "RaceTemplate" + CFG_RACE_PASS = "RacePass" +) + +func init() { + gamedata.InitCfg(CFG_RACE_TEMPLATE) + gamedata.InitCfg(CFG_RACE_PASS) +} + +func GetRaceNum(Pass int) int { + data, err := gamedata.GetDataByIntKey(CFG_RACE_PASS, Pass) + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "Num") +} + +func GetRaceNeed(Pass int) int { + data, err := gamedata.GetDataByIntKey(CFG_RACE_PASS, Pass) + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "Need") +} + +func GetMaxPass(Id int) int { + data, err := gamedata.GetDataByIntKey(CFG_RACE_TEMPLATE, Id) + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "PassNum") +} + +func GetCD(Id int) int { + data, err := gamedata.GetDataByIntKey(CFG_RACE_TEMPLATE, Id) + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "Cd") +} + +func GetCoin(Id int) int { + data, err := gamedata.GetDataByIntKey(CFG_RACE_TEMPLATE, Id) + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "ItemId") +} + +func GetExtraReward(Id int) []*item.Item { + data, err := gamedata.GetDataByIntKey(CFG_RACE_TEMPLATE, Id) + if err != nil { + return nil + } + return gamedata.GetItemList(data, "ExtraReward") +} + +func GetReward(Id int) []*item.Item { + data, err := gamedata.GetDataByIntKey(CFG_RACE_TEMPLATE, Id) + if err != nil { + return nil + } + return gamedata.GetItemList(data, "Reward") +} diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index 6efe1e86..45363609 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -111,6 +111,33 @@ func GuessColorBackData(p *Player) { }) } +func RaceBackData(p *Player) { + ActivityInfo := GetActivityInfo(p, ACT_TYPE_RACE) + if ActivityInfo == nil { + return + } + Status := GetActivityStatus(p, ACT_TYPE_RACE) + RaceMod := p.PlayMod.getRaceMod() + Opponent := make([]*msg.Raceopponent, 0) + for _, v := range RaceMod.Opponent { + Opponent = append(Opponent, &msg.Raceopponent{ + Id: int32(v.Id), + Image: int32(v.Image), + Progress: int32(v.Progress), + }) + } + p.PushClientRes(&msg.ResRace{ + Id: int32(ActivityInfo.Id), + Status: int32(Status), + EndTime: int32(ActivityInfo.EndT), + Pass: int32(RaceMod.Pass), + GameStartTime: int32(RaceMod.StartTime), + Progress: int32(RaceMod.Progress), + GameEndTime: int32(RaceMod.EndTime), + Opponent: Opponent, + }) +} + func RedBackData(p *Player) { result := make(map[int32]int32) Now := GoUtil.Now() diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index a4db2608..44534c83 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -89,7 +89,7 @@ func (f *FriendMgr) sync(m *msg.Msg) (interface{}, error) { // 发送消息给玩家 func sendToPlayer(m *msg.Msg) error { - p := G_GameLogicPtr.GetPlayerByUid(m.To) + p := G_GameLogicPtr.GetPlayer(int32(m.To)) if p == nil || p.stop { return fmt.Errorf("player %d not online", m.To) } diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index ddf49cc1..8c1de254 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -10,6 +10,7 @@ import ( "server/MergeConst" "server/conf" "strconv" + "sync" l "log" "server/db" @@ -64,7 +65,7 @@ type LimitActPeriod struct { type GameLogic struct { Db_AccountInfo db.Db_Account DailyTaskTimestamp int64 - M_Players map[int32]*Player + M_Players sync.Map m_CronEntryIDs map[int]*LimitActPeriod Mdispatr *timer.Dispatcher M_LimitActiveList []int @@ -116,11 +117,18 @@ func (gl *GameLogic) NoonFlush() { } func (gl *GameLogic) SetPlayer(player *Player) { - gl.M_Players[player.M_DwUin] = player + gl.M_Players.Store(player.M_DwUin, player) } func (gl *GameLogic) DelPlayer(player *Player) { - delete(gl.M_Players, player.M_DwUin) + gl.M_Players.Delete(player.M_DwUin) +} + +func (gl *GameLogic) GetPlayer(DwUin int32) *Player { + if v, ok := gl.M_Players.Load(DwUin); ok { + return v.(*Player) + } + return nil } func (gl *GameLogic) OpenTimestampTick() { @@ -251,8 +259,7 @@ func (ad *GameLogic) CreateNewPlayer(a gate.Agent, UserName string) { G_GameLogicPtr.PackResInfo(a, "ResLogin", data) panic(err) } - ad.M_Players[player.M_DwUin] = player - + ad.SetPlayer(player) } func (ad *GameLogic) GetPlayerByAgent(gate gate.Agent) *Player { @@ -263,14 +270,6 @@ func (ad *GameLogic) GetPlayerByAgent(gate gate.Agent) *Player { return nil } -func (ad *GameLogic) GetPlayerByUid(Uid int) *Player { - p, ok := ad.M_Players[int32(Uid)] - if ok { - return p - } - return nil -} - // 好友管理器 func (ad *GameLogic) CreateFriendMgr() { ad.FriendMgr = &FriendMgr{ @@ -429,7 +428,7 @@ func G_getGameLogic() *GameLogic { isInitGameLogic = true G_GameLogicPtr.Mdispatr = timer.NewDispatcher(10) G_GameLogicPtr.InitServerInfo() - G_GameLogicPtr.M_Players = make(map[int32]*Player) + G_GameLogicPtr.M_Players = sync.Map{} G_GameLogicPtr.NotInitPlayer = new(Player) G_GameLogicPtr.M_LimitActiveList = []int{} G_GameLogicPtr.LoadSvrGlobalData() // 加载服务器全局数据 @@ -505,8 +504,8 @@ func (ad *GameLogic) ClearData(args []interface{}) { player.lock.Lock() defer player.lock.Unlock() if player.agent == nil { - delete(ad.M_Players, player.M_DwUin) player.ClearData() + ad.DelPlayer(player) log.Debug("player %d 延迟300s关闭", player.M_DwUin) } } @@ -594,7 +593,6 @@ func (ad *GameLogic) ReplaceExistPlayerAndAgent(a gate.Agent, player *Player) { } internal.AsignPlayerToAgents(a, player) player.SetAgent(a) - ad.M_Players[player.M_DwUin] = player player.PushClientRes(&msg.ResLogin{ ResultCode: 0, DwUin: player.M_DwUin, @@ -603,8 +601,8 @@ func (ad *GameLogic) ReplaceExistPlayerAndAgent(a gate.Agent, player *Player) { } func (ad *GameLogic) SendMassage(dwUin int32, Func string, data []byte) bool { - player, ok := ad.M_Players[dwUin] - if ok { + player := ad.GetPlayer(dwUin) + if player != nil { agent := player.GetAgentByPlayer() if agent != nil { G_getGameLogic().PackResInfo(agent, Func, data) @@ -815,13 +813,14 @@ func (ad *GameLogic) AddLog(Log *Log) { } func (ad *GameLogic) NotifyAll(m *MsgMod.Msg) { - for _, v := range ad.M_Players { - v.Send(m) - } + ad.M_Players.Range(func(k, v interface{}) bool { + v.(*Player).Send(m) + return true + }) } func NotifyPlayer(Uid int, m *MsgMod.Msg) { - p := G_GameLogicPtr.GetPlayerByUid(Uid) + p := G_GameLogicPtr.GetPlayer(int32(Uid)) if p == nil || p.stop { return } @@ -844,13 +843,13 @@ func unsetRedisLock(key string) { func Destroy() { log.Debug("服务器下线") if G_GameLogicPtr != nil { - for k, v := range G_GameLogicPtr.M_Players { + G_GameLogicPtr.M_Players.Range(func(k, v interface{}) bool { + v.(*Player).ClearData() log.Debug("palyer %d 断开连接 写入数据", k) - v.ClearData() - } + return true + }) G_GameLogicPtr.FriendMgr.SaveData() G_GameLogicPtr.RankMgr.SaveData() G_GameLogicPtr.ChampshipMgr.SaveData() - } } diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index be086a03..8607927c 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -492,8 +492,8 @@ func (p *PlayerBaseData) ReqSynGameData(buf []byte) { if sqlStruck.DwUin == p.M_Player.M_DwUin { return } - - if OldPlayer, ok := G_GameLogicPtr.M_Players[sqlStruck.DwUin]; ok { + OldPlayer := G_GameLogicPtr.GetPlayer(sqlStruck.DwUin) + if OldPlayer != nil { agent := OldPlayer.GetAgentByPlayer() // notify := &msg.ForceKickOut{} notify := &msg.ResSynGameData{} @@ -502,7 +502,7 @@ func (p *PlayerBaseData) ReqSynGameData(buf []byte) { G_getGameLogic().PackResInfo(agent, "ResSynGameData", data) } OldPlayer.ClearData() - delete(G_GameLogicPtr.M_Players, sqlStruck.DwUin) + G_GameLogicPtr.M_Players.Delete(sqlStruck.DwUin) } if isHaveOther { diff --git a/src/server/game/PlayerMod.go b/src/server/game/PlayerMod.go index 6444e385..6c619234 100644 --- a/src/server/game/PlayerMod.go +++ b/src/server/game/PlayerMod.go @@ -28,6 +28,7 @@ import ( "server/game/mod/mining" "server/game/mod/order" "server/game/mod/piggyBank" + "server/game/mod/race" "server/game/mod/sevenLogin" Var "server/game/mod/var" "server/pkg/github.com/name5566/leaf/log" @@ -42,30 +43,31 @@ type PlayerModData struct { // PlayerModList 玩家模块列表 type PlayerModList struct { - Base base.Base `json:"base"` - Chess chess.ChessBorad `json:"chess"` - Handbook handbook.Handbook `json:"handbook"` - Order order.OrderMod `json:"order"` - Decorate decorate.Decorate `json:"decorate"` - Card card.CardMod `json:"card"` - Var Var.Var `json:"var"` - Guild guild.Guild `json:"guild"` - DailyTask dailyTask.DailyTaskMod `json:"dailyTask"` - Face face.FaceMod `json:"face"` - Avatar avatar.AvatarMod `json:"avatar"` - SevenLogin sevenLogin.SevenLoginMod `json:"sevenLogin"` - LimitedTimeEvent limitedTimeEvent.LimitedTimeEventMod `json:"limitedTimeEvent"` - Friend friend.FriendMod `json:"friend"` - Mail mail.MailMod `json:"mail"` - Charge charge.ChargeMod `json:"charge"` - Endless endless.EndlessMod `json:"endless"` - PiggyBank piggyBank.PiggyBankMod `json:"piggyBank"` - Champship champship.ChampshipMod `json:"champship"` - Invite invite.InviteMod `json:"invite"` - Kv kv.KvMod `json:"kv"` - Mining mining.MiningMod `json:"mining"` - Item item.ItemMod `json:"item"` - GuessColor guesscolor.GuessColorMod `json:"guessColor"` + Base base.Base + Chess chess.ChessBorad + Handbook handbook.Handbook + Order order.OrderMod + Decorate decorate.Decorate + Card card.CardMod + Var Var.Var + Guild guild.Guild + DailyTask dailyTask.DailyTaskMod + Face face.FaceMod + Avatar avatar.AvatarMod + SevenLogin sevenLogin.SevenLoginMod + LimitedTimeEvent limitedTimeEvent.LimitedTimeEventMod + Friend friend.FriendMod + Mail mail.MailMod + Charge charge.ChargeMod + Endless endless.EndlessMod + PiggyBank piggyBank.PiggyBankMod + Champship champship.ChampshipMod + Invite invite.InviteMod + Kv kv.KvMod + Mining mining.MiningMod + Item item.ItemMod + GuessColor guesscolor.GuessColorMod + Race race.RaceMod } func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool { @@ -292,3 +294,7 @@ func (p *PlayerMod) getItemMod() *item.ItemMod { func (p *PlayerMod) getGuessColorMod() *guesscolor.GuessColorMod { return &p.mod_list.GuessColor } + +func (p *PlayerMod) getRaceMod() *race.RaceMod { + return &p.mod_list.Race +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index af1b34ec..b776f9ec 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -2506,6 +2506,7 @@ func ReqGuessColor(args []interface{}) error { return nil } +// 请求猜颜色 func ReqGuessColorTake(args []interface{}) error { _, player, buf := ParseArgs(args) req := &msg.ReqGuessColorTake{} @@ -2535,6 +2536,7 @@ func ReqGuessColorTake(args []interface{}) error { return nil } +// 请求猜颜色奖励 func ReqGuessColorReward(args []interface{}) error { _, player, buf := ParseArgs(args) req := &msg.ReqGuessColorReward{} diff --git a/src/server/game/Type.go b/src/server/game/Type.go index f1aa4b11..78b5422d 100644 --- a/src/server/game/Type.go +++ b/src/server/game/Type.go @@ -27,6 +27,7 @@ const ( const ( ACT_TYPE_MINING = 1 // 挖矿 ACT_TYPE_GUESS_COLOR = 2 // 猜颜色 + ACT_TYPE_RACE = 3 // 赛跑 ) type ActivityInfo struct { diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 840ba432..86fb85d9 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -44,6 +44,6 @@ func UnitChessShop(p *Player) error { func UnitOrder(p *Player) error { OrderMod := p.PlayMod.getOrderMod() ChessMod := p.PlayMod.getChessMod() - OrderMod.CreateNormalOrder(4, ChessMod.GetEmitList()) - return nil + err := OrderMod.CreateOrder(6, ChessMod.GetEmitList()) + return err } diff --git a/src/server/game/external.go b/src/server/game/external.go index 031495b7..24b0ef09 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -118,12 +118,12 @@ func HandleClientReq(args []interface{}) { return } if ResLogin.DwUin > 0 { - if OldPlayer, ok := G_GameLogicPtr.M_Players[ResLogin.DwUin]; ok { + OldPlayer := G_GameLogicPtr.GetPlayer(ResLogin.DwUin) + if OldPlayer != nil { G_GameLogicPtr.ReplaceExistPlayerAndAgent(a, OldPlayer) } else { G_GameLogicPtr.CreateNewPlayer(a, detail.UserName) } - } p, _ := internal.Agents.Load(a) if p != nil { diff --git a/src/server/game/mod/item/Item.go b/src/server/game/mod/item/Item.go index e844006e..301676af 100644 --- a/src/server/game/mod/item/Item.go +++ b/src/server/game/mod/item/Item.go @@ -34,6 +34,8 @@ const ( ITEM_TYPE_PIGGY_BANK = 103 // 猪猪银行 ITEM_TYPE_MASTER_CARD = 104 // 万能卡 ITEM_TYPE_AVATAR = 105 // 头像框 + ITEM_TYPE_ACTIVITY = 106 // 活动道具 + ITEM_TYPE_ACTIVITY_RACE = 107 // 竞赛活动道具 ) func (i *ItemMod) InitData() { diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index f31267aa..b8ce5f23 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -208,6 +208,7 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int) error { ChessDiff := getChessDiff(ChessNum, OrderDiff, OrderN) EnergyMul := userCfg.GetEnergyMulByLv(lv) + ColorArr := make([]string, 0) RandEmit := 0 mergeList := make([]int, 0, len(ChessDiff)) for _, v := range ChessDiff { @@ -219,6 +220,12 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int) error { ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m) NewLev := getChessLv(ChessMinLev, ChessMaxLev, v) ChessColor := getRandChessColor(RandEmit) + if GoUtil.InStringArray(ChessColor, ColorArr) { + continue + } + ColorArr = append(ColorArr, ChessColor) + ColorMaxLv := mergeDataCfg.GetMaxLvByColor(ChessColor) + NewLev = min(NewLev, ColorMaxLv) ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor) Type := mergeDataCfg.GetTypeById(ChessId) if Type != "Product" { @@ -279,6 +286,8 @@ func (o *OrderMod) CreateSuperOrder(lv int, Emit []int) error { ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m) NewLev := getChessLv(ChessMinLev, ChessMaxLev, v) ChessColor := getRandChessColor(RandEmit) + ColorMaxLv := mergeDataCfg.GetMaxLvByColor(ChessColor) + NewLev = min(NewLev, ColorMaxLv) ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor) Type := mergeDataCfg.GetTypeById(ChessId) if Type != "Product" { diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index 10c63705..b87ea363 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -143,7 +143,7 @@ func getChessLv(Min, Max, Diff int) int { } func getRandChessColor(Emit int) string { - Produce := mergeDataCfg.GetEmitProduceType(Emit) + Produce := mergeDataCfg.GetEmitProduceChessType(Emit) if len(Produce) == 1 { return Produce[0] } diff --git a/src/server/game/mod/race/race.go b/src/server/game/mod/race/race.go new file mode 100644 index 00000000..83d60879 --- /dev/null +++ b/src/server/game/mod/race/race.go @@ -0,0 +1,95 @@ +package race + +import ( + "fmt" + "server/GoUtil" + raceCfg "server/conf/race" + "server/game/mod/item" +) + +type RaceMod struct { + Id int + Opponent []*Opponent + Pass int + StartTime int64 + EndTime int64 + Progress int + Rank int +} + +type Opponent struct { + Id int + Type int + Image int + Progress int +} + +func (r *RaceMod) Login(Id int) { + if Id == 0 { + return + } + if r.Id == Id { + return + } + r.Id = Id + r.Pass = 1 +} + +func (r *RaceMod) StartGame() { + MaxPass := raceCfg.GetMaxPass(r.Id) + if r.Rank != 1 || r.Pass == MaxPass { + r.Pass = 1 + } + r.StartTime = GoUtil.Now() + Opponent := make([]*Opponent, 0) + OpponentNum := raceCfg.GetRaceNum(r.Pass) + for i := 1; i <= OpponentNum; i++ { + Opponent = append(Opponent, randOpponent(i)) + } + r.Opponent = Opponent +} + +func (r *RaceMod) AddCoin() { + r.Progress++ + Need := raceCfg.GetRaceNeed(r.Pass) + if r.Progress == Need { + r.EndTime = GoUtil.Now() + Rank := 1 + for _, v := range r.Opponent { + if v.Progress >= r.Progress { + Rank++ + } + } + r.Rank = Rank + } +} + +func (r *RaceMod) GetReward() ([]*item.Item, error) { + if r.EndTime == 0 { + return nil, fmt.Errorf("the game is not over") + } + + if r.Rank != 1 { + return nil, fmt.Errorf("you are not the first") + } + Cd := raceCfg.GetCD(r.Id) + if r.Rank != 1 { + return nil, fmt.Errorf("you are not the first") + } + Items := make([]*item.Item, 0) + Reward := raceCfg.GetReward(r.Id) + Items = append(Items, Reward...) + if r.EndTime-r.StartTime < int64(Cd) { + ExtraReward := raceCfg.GetExtraReward(r.Id) + Items = append(Items, ExtraReward...) + } + return Items, nil +} + +func randOpponent(Id int) *Opponent { + return &Opponent{ + Id: Id, + Type: GoUtil.RandNum(1, 3), + Image: GoUtil.RandNum(1, 3), + } +} diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 19f1954b..78222875 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -33239,6 +33239,390 @@ func (x *ResGuessColorReward) GetMsg() string { return "" } +type ReqRace struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReqRace) Reset() { + *x = ReqRace{} + mi := &file_Gameapi_proto_msgTypes[580] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqRace) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqRace) ProtoMessage() {} + +func (x *ReqRace) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[580] + 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 ReqRace.ProtoReflect.Descriptor instead. +func (*ReqRace) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{580} +} + +type ResRace struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + 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"` // 模板 + Pass int32 `protobuf:"varint,5,opt,name=Pass,proto3" json:"Pass,omitempty"` // 关卡 + GameStartTime int32 `protobuf:"varint,6,opt,name=GameStartTime,proto3" json:"GameStartTime,omitempty"` // 游戏开始时间 + GameEndTime int32 `protobuf:"varint,7,opt,name=GameEndTime,proto3" json:"GameEndTime,omitempty"` // 游戏结束时间 + Progress int32 `protobuf:"varint,8,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 + Opponent []*Raceopponent `protobuf:"bytes,9,rep,name=Opponent,proto3" json:"Opponent,omitempty"` // 对手 +} + +func (x *ResRace) Reset() { + *x = ResRace{} + mi := &file_Gameapi_proto_msgTypes[581] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResRace) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResRace) ProtoMessage() {} + +func (x *ResRace) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[581] + 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 ResRace.ProtoReflect.Descriptor instead. +func (*ResRace) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{581} +} + +func (x *ResRace) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ResRace) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *ResRace) GetEndTime() int32 { + if x != nil { + return x.EndTime + } + return 0 +} + +func (x *ResRace) GetTemplate() int32 { + if x != nil { + return x.Template + } + return 0 +} + +func (x *ResRace) GetPass() int32 { + if x != nil { + return x.Pass + } + return 0 +} + +func (x *ResRace) GetGameStartTime() int32 { + if x != nil { + return x.GameStartTime + } + return 0 +} + +func (x *ResRace) GetGameEndTime() int32 { + if x != nil { + return x.GameEndTime + } + return 0 +} + +func (x *ResRace) GetProgress() int32 { + if x != nil { + return x.Progress + } + return 0 +} + +func (x *ResRace) GetOpponent() []*Raceopponent { + if x != nil { + return x.Opponent + } + return nil +} + +type Raceopponent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Image int32 `protobuf:"varint,2,opt,name=Image,proto3" json:"Image,omitempty"` + Progress int32 `protobuf:"varint,3,opt,name=Progress,proto3" json:"Progress,omitempty"` +} + +func (x *Raceopponent) Reset() { + *x = Raceopponent{} + mi := &file_Gameapi_proto_msgTypes[582] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Raceopponent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Raceopponent) ProtoMessage() {} + +func (x *Raceopponent) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[582] + 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 Raceopponent.ProtoReflect.Descriptor instead. +func (*Raceopponent) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{582} +} + +func (x *Raceopponent) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Raceopponent) GetImage() int32 { + if x != nil { + return x.Image + } + return 0 +} + +func (x *Raceopponent) GetProgress() int32 { + if x != nil { + return x.Progress + } + return 0 +} + +type ReqRaceStart struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReqRaceStart) Reset() { + *x = ReqRaceStart{} + mi := &file_Gameapi_proto_msgTypes[583] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqRaceStart) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqRaceStart) ProtoMessage() {} + +func (x *ReqRaceStart) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[583] + 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 ReqRaceStart.ProtoReflect.Descriptor instead. +func (*ReqRaceStart) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{583} +} + +type ResRaceStart struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + 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"` +} + +func (x *ResRaceStart) Reset() { + *x = ResRaceStart{} + mi := &file_Gameapi_proto_msgTypes[584] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResRaceStart) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResRaceStart) ProtoMessage() {} + +func (x *ResRaceStart) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[584] + 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 ResRaceStart.ProtoReflect.Descriptor instead. +func (*ResRaceStart) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{584} +} + +func (x *ResRaceStart) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResRaceStart) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type ReqRaceReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReqRaceReward) Reset() { + *x = ReqRaceReward{} + mi := &file_Gameapi_proto_msgTypes[585] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqRaceReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqRaceReward) ProtoMessage() {} + +func (x *ReqRaceReward) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[585] + 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 ReqRaceReward.ProtoReflect.Descriptor instead. +func (*ReqRaceReward) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{585} +} + +type ResRaceReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + 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"` +} + +func (x *ResRaceReward) Reset() { + *x = ResRaceReward{} + mi := &file_Gameapi_proto_msgTypes[586] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResRaceReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResRaceReward) ProtoMessage() {} + +func (x *ResRaceReward) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[586] + 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 ResRaceReward.ProtoReflect.Descriptor instead. +func (*ResRaceReward) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{586} +} + +func (x *ResRaceReward) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResRaceReward) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + var File_Gameapi_proto protoreflect.FileDescriptor var file_Gameapi_proto_rawDesc = []byte{ @@ -37206,17 +37590,52 @@ var file_Gameapi_proto_rawDesc = []byte{ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x4d, 0x73, 0x67, 0x2a, 0x42, 0x0a, 0x0b, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, - 0x4f, 0x4d, 0x50, 0x4f, 0x53, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x55, 0x59, 0x10, - 0x02, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x52, - 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x04, 0x2a, 0x21, 0x0a, 0x08, 0x52, 0x45, 0x53, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, - 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x2a, 0x2e, 0x0a, 0x09, 0x49, 0x54, - 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x45, 0x52, 0x47, - 0x59, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x41, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, - 0x07, 0x44, 0x49, 0x41, 0x4d, 0x4f, 0x4e, 0x44, 0x10, 0x02, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2e, - 0x2f, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4d, 0x73, 0x67, 0x22, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x52, 0x61, 0x63, 0x65, 0x22, 0x93, + 0x02, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x52, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x73, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0d, + 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x32, 0x0a, 0x08, 0x4f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x72, 0x61, + 0x63, 0x65, 0x6f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x4f, 0x70, 0x70, 0x6f, + 0x6e, 0x65, 0x6e, 0x74, 0x22, 0x50, 0x0a, 0x0c, 0x72, 0x61, 0x63, 0x65, 0x6f, 0x70, 0x70, 0x6f, + 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, + 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, + 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x52, 0x61, 0x63, + 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x22, 0x48, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x52, 0x61, 0x63, + 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, + 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x52, 0x61, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x22, 0x49, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x52, 0x61, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x2a, 0x42, 0x0a, 0x0b, + 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x07, 0x0a, 0x03, 0x41, + 0x44, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x53, 0x45, 0x10, + 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x55, 0x59, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, + 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x04, + 0x2a, 0x21, 0x0a, 0x08, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x12, 0x08, 0x0a, 0x04, + 0x46, 0x41, 0x49, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, + 0x53, 0x10, 0x01, 0x2a, 0x2e, 0x0a, 0x09, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x45, 0x52, 0x47, 0x59, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, + 0x53, 0x54, 0x41, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x41, 0x4d, 0x4f, 0x4e, + 0x44, 0x10, 0x02, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2e, 0x2f, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -37232,7 +37651,7 @@ func file_Gameapi_proto_rawDescGZIP() []byte { } var file_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 654) +var file_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 661) var file_Gameapi_proto_goTypes = []any{ (HANDLE_TYPE)(0), // 0: tutorial.HANDLE_TYPE (RES_CODE)(0), // 1: tutorial.RES_CODE @@ -37818,147 +38237,154 @@ var file_Gameapi_proto_goTypes = []any{ (*ResGuessColorTake)(nil), // 581: tutorial.ResGuessColorTake (*ReqGuessColorReward)(nil), // 582: tutorial.ReqGuessColorReward (*ResGuessColorReward)(nil), // 583: tutorial.ResGuessColorReward - nil, // 584: tutorial.UpdateBaseItemInfo.MUpdateItemEntry - nil, // 585: tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry - nil, // 586: tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry - nil, // 587: tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry - nil, // 588: tutorial.ResPlayerPackData.MPackDataEntry - nil, // 589: tutorial.UpdatePlayerPackData.MPackDataEntry - nil, // 590: tutorial.ResPlayerChessData.MChessDataEntry - nil, // 591: tutorial.UpdatePlayerChessData.MChessDataEntry - nil, // 592: tutorial.ReqGetChessFromBuff.MChessDataEntry - nil, // 593: tutorial.ReqChessEx.MChessDataEntry - nil, // 594: tutorial.ReqPutChessInBag.MChessDataEntry - nil, // 595: tutorial.ReqTakeChessOutBag.MChessDataEntry - nil, // 596: tutorial.ResPlayerGiftData.MGiftDataEntry - nil, // 597: tutorial.UpdatePlayerGiftData.MGiftDataEntry - nil, // 598: tutorial.ResPlayerOrderData.MOrderDataEntry - nil, // 599: tutorial.UpdatePlayerOrderData.MOrderDataEntry - nil, // 600: tutorial.ResChessColorData.MChessColorDataEntry - nil, // 601: tutorial.UpdateChessColorData.MChessColorDataEntry - nil, // 602: tutorial.ResEmitMergeMap.MEmitMergeDataEntry - nil, // 603: tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry - nil, // 604: tutorial.ResEmitCountMap.MEmitCountDataEntry - nil, // 605: tutorial.UpdateEmitCountMap.MEmitCountDataEntry - nil, // 606: tutorial.ResEmitCDStartData.MEmitCDDataEntry - nil, // 607: tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry - nil, // 608: tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry - nil, // 609: tutorial.ResDecorateData.MDecorateDataEntry - nil, // 610: tutorial.UpdateDecorateData.MDecorateDataEntry - nil, // 611: tutorial.ResShopData.MShopTimeBuyDataEntry - nil, // 612: tutorial.ResShopData.MShopSaleBuyDataEntry - nil, // 613: tutorial.ResShopData.MPackBuyDataEntry - nil, // 614: tutorial.ResShopData.MSpecialOfferBuyDataEntry - nil, // 615: tutorial.ResShopData.MUISpecialOfferBuyDataEntry - nil, // 616: tutorial.ResShopData.MFreePackBuyDataEntry - nil, // 617: tutorial.ResShopData.MDiamondFirstBuyDataEntry - nil, // 618: tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry - nil, // 619: tutorial.ResShopBuy.MShopTimeBuyDataEntry - nil, // 620: tutorial.ReqRenewItemBuyCnt.MShopDataEntry - nil, // 621: tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry - nil, // 622: tutorial.ResKeyValueData.KeyValuesEntry - nil, // 623: tutorial.UpdateKeyValueData.KeyValuesEntry - nil, // 624: tutorial.ResAdPackData.PackDataEntry - nil, // 625: tutorial.NotifyAdPackData.PackDataEntry - nil, // 626: tutorial.ResWatchAdPack.PackDataEntry - nil, // 627: tutorial.ResPetHomeData.SelectDecorateMapEntry - nil, // 628: tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry - nil, // 629: tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry - nil, // 630: tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry - nil, // 631: tutorial.ResShiftVisitPet.SelectDecorateMapEntry - nil, // 632: tutorial.UseItemRequest.AttrsEntry - nil, // 633: tutorial.UseItemResponse.AttrsEntry - nil, // 634: tutorial.ReqRewardOrder.MChessDataEntry - nil, // 635: tutorial.ResCardInfo.AllCardEntry - nil, // 636: tutorial.ResGuildInfo.RewardEntry - nil, // 637: tutorial.ResDailyTask.WeekRewardEntry - nil, // 638: tutorial.ResDailyTask.DailyTaskEntry - nil, // 639: tutorial.ResLimitEvent.LimitEventListEntry - nil, // 640: tutorial.ResLimitEventProgress.ProgressRewardEntry - nil, // 641: tutorial.ResKv.KvEntry - nil, // 642: tutorial.ResRank.RankListEntry - nil, // 643: tutorial.ResMailList.MailListEntry - nil, // 644: tutorial.ResCharge.SpecialShopEntry - nil, // 645: tutorial.ResCharge.ChessShopEntry - nil, // 646: tutorial.ResCharge.GiftEntry - nil, // 647: tutorial.ResEndless.EndlessListEntry - nil, // 648: tutorial.ResChampshipRank.RankListEntry - nil, // 649: tutorial.ResChampshipPreRank.RankListEntry - nil, // 650: tutorial.ResNotifyCard.CardEntry - nil, // 651: tutorial.ResNotifyCard.MasterEntry - nil, // 652: tutorial.ResMining.MapEntry - nil, // 653: tutorial.ReqMiningTake.MapEntry - nil, // 654: tutorial.ResActRed.RedEntry - nil, // 655: tutorial.ResItem.ItemEntry - nil, // 656: tutorial.ItemNotify.ItemEntry - nil, // 657: tutorial.ReqGuessColorTake.MapEntry + (*ReqRace)(nil), // 584: tutorial.ReqRace + (*ResRace)(nil), // 585: tutorial.ResRace + (*Raceopponent)(nil), // 586: tutorial.raceopponent + (*ReqRaceStart)(nil), // 587: tutorial.ReqRaceStart + (*ResRaceStart)(nil), // 588: tutorial.ResRaceStart + (*ReqRaceReward)(nil), // 589: tutorial.ReqRaceReward + (*ResRaceReward)(nil), // 590: tutorial.ResRaceReward + nil, // 591: tutorial.UpdateBaseItemInfo.MUpdateItemEntry + nil, // 592: tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry + nil, // 593: tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry + nil, // 594: tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry + nil, // 595: tutorial.ResPlayerPackData.MPackDataEntry + nil, // 596: tutorial.UpdatePlayerPackData.MPackDataEntry + nil, // 597: tutorial.ResPlayerChessData.MChessDataEntry + nil, // 598: tutorial.UpdatePlayerChessData.MChessDataEntry + nil, // 599: tutorial.ReqGetChessFromBuff.MChessDataEntry + nil, // 600: tutorial.ReqChessEx.MChessDataEntry + nil, // 601: tutorial.ReqPutChessInBag.MChessDataEntry + nil, // 602: tutorial.ReqTakeChessOutBag.MChessDataEntry + nil, // 603: tutorial.ResPlayerGiftData.MGiftDataEntry + nil, // 604: tutorial.UpdatePlayerGiftData.MGiftDataEntry + nil, // 605: tutorial.ResPlayerOrderData.MOrderDataEntry + nil, // 606: tutorial.UpdatePlayerOrderData.MOrderDataEntry + nil, // 607: tutorial.ResChessColorData.MChessColorDataEntry + nil, // 608: tutorial.UpdateChessColorData.MChessColorDataEntry + nil, // 609: tutorial.ResEmitMergeMap.MEmitMergeDataEntry + nil, // 610: tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry + nil, // 611: tutorial.ResEmitCountMap.MEmitCountDataEntry + nil, // 612: tutorial.UpdateEmitCountMap.MEmitCountDataEntry + nil, // 613: tutorial.ResEmitCDStartData.MEmitCDDataEntry + nil, // 614: tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry + nil, // 615: tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry + nil, // 616: tutorial.ResDecorateData.MDecorateDataEntry + nil, // 617: tutorial.UpdateDecorateData.MDecorateDataEntry + nil, // 618: tutorial.ResShopData.MShopTimeBuyDataEntry + nil, // 619: tutorial.ResShopData.MShopSaleBuyDataEntry + nil, // 620: tutorial.ResShopData.MPackBuyDataEntry + nil, // 621: tutorial.ResShopData.MSpecialOfferBuyDataEntry + nil, // 622: tutorial.ResShopData.MUISpecialOfferBuyDataEntry + nil, // 623: tutorial.ResShopData.MFreePackBuyDataEntry + nil, // 624: tutorial.ResShopData.MDiamondFirstBuyDataEntry + nil, // 625: tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry + nil, // 626: tutorial.ResShopBuy.MShopTimeBuyDataEntry + nil, // 627: tutorial.ReqRenewItemBuyCnt.MShopDataEntry + nil, // 628: tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry + nil, // 629: tutorial.ResKeyValueData.KeyValuesEntry + nil, // 630: tutorial.UpdateKeyValueData.KeyValuesEntry + nil, // 631: tutorial.ResAdPackData.PackDataEntry + nil, // 632: tutorial.NotifyAdPackData.PackDataEntry + nil, // 633: tutorial.ResWatchAdPack.PackDataEntry + nil, // 634: tutorial.ResPetHomeData.SelectDecorateMapEntry + nil, // 635: tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry + nil, // 636: tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry + nil, // 637: tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry + nil, // 638: tutorial.ResShiftVisitPet.SelectDecorateMapEntry + nil, // 639: tutorial.UseItemRequest.AttrsEntry + nil, // 640: tutorial.UseItemResponse.AttrsEntry + nil, // 641: tutorial.ReqRewardOrder.MChessDataEntry + nil, // 642: tutorial.ResCardInfo.AllCardEntry + nil, // 643: tutorial.ResGuildInfo.RewardEntry + nil, // 644: tutorial.ResDailyTask.WeekRewardEntry + nil, // 645: tutorial.ResDailyTask.DailyTaskEntry + nil, // 646: tutorial.ResLimitEvent.LimitEventListEntry + nil, // 647: tutorial.ResLimitEventProgress.ProgressRewardEntry + nil, // 648: tutorial.ResKv.KvEntry + nil, // 649: tutorial.ResRank.RankListEntry + nil, // 650: tutorial.ResMailList.MailListEntry + nil, // 651: tutorial.ResCharge.SpecialShopEntry + nil, // 652: tutorial.ResCharge.ChessShopEntry + nil, // 653: tutorial.ResCharge.GiftEntry + nil, // 654: tutorial.ResEndless.EndlessListEntry + nil, // 655: tutorial.ResChampshipRank.RankListEntry + nil, // 656: tutorial.ResChampshipPreRank.RankListEntry + nil, // 657: tutorial.ResNotifyCard.CardEntry + nil, // 658: tutorial.ResNotifyCard.MasterEntry + nil, // 659: tutorial.ResMining.MapEntry + nil, // 660: tutorial.ReqMiningTake.MapEntry + nil, // 661: tutorial.ResActRed.RedEntry + nil, // 662: tutorial.ResItem.ItemEntry + nil, // 663: tutorial.ItemNotify.ItemEntry + nil, // 664: tutorial.ReqGuessColorTake.MapEntry } var file_Gameapi_proto_depIdxs = []int32{ - 584, // 0: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry - 585, // 1: tutorial.ResPlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry - 586, // 2: tutorial.NotifyDailyRenewEmitUnlock.mEmitUnlockData:type_name -> tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry - 587, // 3: tutorial.UpdatePlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry - 588, // 4: tutorial.ResPlayerPackData.mPackData:type_name -> tutorial.ResPlayerPackData.MPackDataEntry - 589, // 5: tutorial.UpdatePlayerPackData.mPackData:type_name -> tutorial.UpdatePlayerPackData.MPackDataEntry - 590, // 6: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry + 591, // 0: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry + 592, // 1: tutorial.ResPlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry + 593, // 2: tutorial.NotifyDailyRenewEmitUnlock.mEmitUnlockData:type_name -> tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry + 594, // 3: tutorial.UpdatePlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry + 595, // 4: tutorial.ResPlayerPackData.mPackData:type_name -> tutorial.ResPlayerPackData.MPackDataEntry + 596, // 5: tutorial.UpdatePlayerPackData.mPackData:type_name -> tutorial.UpdatePlayerPackData.MPackDataEntry + 597, // 6: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry 37, // 7: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag 0, // 8: tutorial.ChessHandle.type:type_name -> tutorial.HANDLE_TYPE - 591, // 9: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry + 598, // 9: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry 30, // 10: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle 1, // 11: tutorial.ResUpdatePlayerChessData.code:type_name -> tutorial.RES_CODE - 592, // 12: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry + 599, // 12: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry 1, // 13: tutorial.ResGetChessFromBuff.code:type_name -> tutorial.RES_CODE - 593, // 14: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry + 600, // 14: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry 1, // 15: tutorial.ResChessEx.code:type_name -> tutorial.RES_CODE 38, // 16: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid - 594, // 17: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry + 601, // 17: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry 1, // 18: tutorial.ResPutChessInBag.code:type_name -> tutorial.RES_CODE - 595, // 19: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry + 602, // 19: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry 1, // 20: tutorial.ResTakeChessOutBag.code:type_name -> tutorial.RES_CODE 1, // 21: tutorial.ResBuyChessBagGrid.code:type_name -> tutorial.RES_CODE - 596, // 22: tutorial.ResPlayerGiftData.mGiftData:type_name -> tutorial.ResPlayerGiftData.MGiftDataEntry - 597, // 23: tutorial.UpdatePlayerGiftData.mGiftData:type_name -> tutorial.UpdatePlayerGiftData.MGiftDataEntry - 598, // 24: tutorial.ResPlayerOrderData.mOrderData:type_name -> tutorial.ResPlayerOrderData.MOrderDataEntry - 599, // 25: tutorial.UpdatePlayerOrderData.mOrderData:type_name -> tutorial.UpdatePlayerOrderData.MOrderDataEntry - 600, // 26: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry - 601, // 27: tutorial.UpdateChessColorData.mChessColorData:type_name -> tutorial.UpdateChessColorData.MChessColorDataEntry - 602, // 28: tutorial.ResEmitMergeMap.mEmitMergeData:type_name -> tutorial.ResEmitMergeMap.MEmitMergeDataEntry - 603, // 29: tutorial.UpdateEmitMergeMap.mEmitMergeData:type_name -> tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry - 604, // 30: tutorial.ResEmitCountMap.mEmitCountData:type_name -> tutorial.ResEmitCountMap.MEmitCountDataEntry - 605, // 31: tutorial.UpdateEmitCountMap.mEmitCountData:type_name -> tutorial.UpdateEmitCountMap.MEmitCountDataEntry - 606, // 32: tutorial.ResEmitCDStartData.mEmitCDData:type_name -> tutorial.ResEmitCDStartData.MEmitCDDataEntry - 607, // 33: tutorial.NotifyInitEmitCDTimeData.mEmitCDData:type_name -> tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry - 608, // 34: tutorial.NotifyEmitCDTimeEndData.mEmitCDData:type_name -> tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry - 609, // 35: tutorial.ResDecorateData.mDecorateData:type_name -> tutorial.ResDecorateData.MDecorateDataEntry - 610, // 36: tutorial.UpdateDecorateData.mDecorateData:type_name -> tutorial.UpdateDecorateData.MDecorateDataEntry - 611, // 37: tutorial.ResShopData.mShopTimeBuyData:type_name -> tutorial.ResShopData.MShopTimeBuyDataEntry - 612, // 38: tutorial.ResShopData.mShopSaleBuyData:type_name -> tutorial.ResShopData.MShopSaleBuyDataEntry - 613, // 39: tutorial.ResShopData.mPackBuyData:type_name -> tutorial.ResShopData.MPackBuyDataEntry - 614, // 40: tutorial.ResShopData.mSpecialOfferBuyData:type_name -> tutorial.ResShopData.MSpecialOfferBuyDataEntry - 615, // 41: tutorial.ResShopData.mUISpecialOfferBuyData:type_name -> tutorial.ResShopData.MUISpecialOfferBuyDataEntry - 616, // 42: tutorial.ResShopData.mFreePackBuyData:type_name -> tutorial.ResShopData.MFreePackBuyDataEntry - 617, // 43: tutorial.ResShopData.mDiamondFirstBuyData:type_name -> tutorial.ResShopData.MDiamondFirstBuyDataEntry - 618, // 44: tutorial.NotifyShopStatusChange.mShopTimeBuyData:type_name -> tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry - 619, // 45: tutorial.ResShopBuy.mShopTimeBuyData:type_name -> tutorial.ResShopBuy.MShopTimeBuyDataEntry - 620, // 46: tutorial.ReqRenewItemBuyCnt.mShopData:type_name -> tutorial.ReqRenewItemBuyCnt.MShopDataEntry - 621, // 47: tutorial.ResRenewItemBuyCnt.mShopTimeBuyData:type_name -> tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry + 603, // 22: tutorial.ResPlayerGiftData.mGiftData:type_name -> tutorial.ResPlayerGiftData.MGiftDataEntry + 604, // 23: tutorial.UpdatePlayerGiftData.mGiftData:type_name -> tutorial.UpdatePlayerGiftData.MGiftDataEntry + 605, // 24: tutorial.ResPlayerOrderData.mOrderData:type_name -> tutorial.ResPlayerOrderData.MOrderDataEntry + 606, // 25: tutorial.UpdatePlayerOrderData.mOrderData:type_name -> tutorial.UpdatePlayerOrderData.MOrderDataEntry + 607, // 26: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry + 608, // 27: tutorial.UpdateChessColorData.mChessColorData:type_name -> tutorial.UpdateChessColorData.MChessColorDataEntry + 609, // 28: tutorial.ResEmitMergeMap.mEmitMergeData:type_name -> tutorial.ResEmitMergeMap.MEmitMergeDataEntry + 610, // 29: tutorial.UpdateEmitMergeMap.mEmitMergeData:type_name -> tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry + 611, // 30: tutorial.ResEmitCountMap.mEmitCountData:type_name -> tutorial.ResEmitCountMap.MEmitCountDataEntry + 612, // 31: tutorial.UpdateEmitCountMap.mEmitCountData:type_name -> tutorial.UpdateEmitCountMap.MEmitCountDataEntry + 613, // 32: tutorial.ResEmitCDStartData.mEmitCDData:type_name -> tutorial.ResEmitCDStartData.MEmitCDDataEntry + 614, // 33: tutorial.NotifyInitEmitCDTimeData.mEmitCDData:type_name -> tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry + 615, // 34: tutorial.NotifyEmitCDTimeEndData.mEmitCDData:type_name -> tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry + 616, // 35: tutorial.ResDecorateData.mDecorateData:type_name -> tutorial.ResDecorateData.MDecorateDataEntry + 617, // 36: tutorial.UpdateDecorateData.mDecorateData:type_name -> tutorial.UpdateDecorateData.MDecorateDataEntry + 618, // 37: tutorial.ResShopData.mShopTimeBuyData:type_name -> tutorial.ResShopData.MShopTimeBuyDataEntry + 619, // 38: tutorial.ResShopData.mShopSaleBuyData:type_name -> tutorial.ResShopData.MShopSaleBuyDataEntry + 620, // 39: tutorial.ResShopData.mPackBuyData:type_name -> tutorial.ResShopData.MPackBuyDataEntry + 621, // 40: tutorial.ResShopData.mSpecialOfferBuyData:type_name -> tutorial.ResShopData.MSpecialOfferBuyDataEntry + 622, // 41: tutorial.ResShopData.mUISpecialOfferBuyData:type_name -> tutorial.ResShopData.MUISpecialOfferBuyDataEntry + 623, // 42: tutorial.ResShopData.mFreePackBuyData:type_name -> tutorial.ResShopData.MFreePackBuyDataEntry + 624, // 43: tutorial.ResShopData.mDiamondFirstBuyData:type_name -> tutorial.ResShopData.MDiamondFirstBuyDataEntry + 625, // 44: tutorial.NotifyShopStatusChange.mShopTimeBuyData:type_name -> tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry + 626, // 45: tutorial.ResShopBuy.mShopTimeBuyData:type_name -> tutorial.ResShopBuy.MShopTimeBuyDataEntry + 627, // 46: tutorial.ReqRenewItemBuyCnt.mShopData:type_name -> tutorial.ReqRenewItemBuyCnt.MShopDataEntry + 628, // 47: tutorial.ResRenewItemBuyCnt.mShopTimeBuyData:type_name -> tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry 89, // 48: tutorial.ResBriefEmailData.mEmailList:type_name -> tutorial.BriefEmailStruct 89, // 49: tutorial.NotifyNewBriefEmailData.mEmailList:type_name -> tutorial.BriefEmailStruct 99, // 50: tutorial.NotifyLimitedTimeActiveData.mActiveList:type_name -> tutorial.LimitedTimeActiveStruct 100, // 51: tutorial.NotifyLimitedTimeActiveEnd.mActiveList:type_name -> tutorial.LimitedTimeEndStruct 154, // 52: tutorial.CategoryIllustratedData.Items:type_name -> tutorial.SingleIllustratedItem 155, // 53: tutorial.ResIllustratedInfo.Datas:type_name -> tutorial.CategoryIllustratedData - 622, // 54: tutorial.ResKeyValueData.KeyValues:type_name -> tutorial.ResKeyValueData.KeyValuesEntry - 623, // 55: tutorial.UpdateKeyValueData.KeyValues:type_name -> tutorial.UpdateKeyValueData.KeyValuesEntry + 629, // 54: tutorial.ResKeyValueData.KeyValues:type_name -> tutorial.ResKeyValueData.KeyValuesEntry + 630, // 55: tutorial.UpdateKeyValueData.KeyValues:type_name -> tutorial.UpdateKeyValueData.KeyValuesEntry 203, // 56: tutorial.ResChampshipData.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 57: tutorial.NotifyNewChampshipRank.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 58: tutorial.NotifyUpdateChampshipRank.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 59: tutorial.ResChampshipAddScore.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 60: tutorial.ResChampshipAddTime.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 217, // 61: tutorial.ResPlayerPayData.PlayerPayData:type_name -> tutorial.PlayerPayItem - 624, // 62: tutorial.ResAdPackData.PackData:type_name -> tutorial.ResAdPackData.PackDataEntry - 625, // 63: tutorial.NotifyAdPackData.PackData:type_name -> tutorial.NotifyAdPackData.PackDataEntry - 626, // 64: tutorial.ResWatchAdPack.PackData:type_name -> tutorial.ResWatchAdPack.PackDataEntry + 631, // 62: tutorial.ResAdPackData.PackData:type_name -> tutorial.ResAdPackData.PackDataEntry + 632, // 63: tutorial.NotifyAdPackData.PackData:type_name -> tutorial.NotifyAdPackData.PackDataEntry + 633, // 64: tutorial.ResWatchAdPack.PackData:type_name -> tutorial.ResWatchAdPack.PackDataEntry 262, // 65: tutorial.ResFriendData.FriendInfos:type_name -> tutorial.FriendInfo 262, // 66: tutorial.AddFriendData.Finfo:type_name -> tutorial.FriendInfo 262, // 67: tutorial.ResWillPlayerDetail.PlayerInfos:type_name -> tutorial.FriendInfo @@ -38006,21 +38432,21 @@ var file_Gameapi_proto_depIdxs = []int32{ 341, // 109: tutorial.ResFriendEventData.MFriendEventData:type_name -> tutorial.FriendEventData 341, // 110: tutorial.NotifyNewFriendEvent.NewEvent:type_name -> tutorial.FriendEventData 257, // 111: tutorial.PetHomeInterActST.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData - 627, // 112: tutorial.ResPetHomeData.SelectDecorateMap:type_name -> tutorial.ResPetHomeData.SelectDecorateMapEntry - 628, // 113: tutorial.ReqSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry - 629, // 114: tutorial.ResSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry + 634, // 112: tutorial.ResPetHomeData.SelectDecorateMap:type_name -> tutorial.ResPetHomeData.SelectDecorateMapEntry + 635, // 113: tutorial.ReqSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry + 636, // 114: tutorial.ResSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry 257, // 115: tutorial.ResOpenOtherPetHome.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData - 630, // 116: tutorial.ResOpenOtherPetHome.SelectDecorateMap:type_name -> tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry + 637, // 116: tutorial.ResOpenOtherPetHome.SelectDecorateMap:type_name -> tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry 349, // 117: tutorial.ResPetHomeInterActST.mPetHomeInterActSTs:type_name -> tutorial.PetHomeInterActST 257, // 118: tutorial.ResShiftVisitPet.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData - 631, // 119: tutorial.ResShiftVisitPet.SelectDecorateMap:type_name -> tutorial.ResShiftVisitPet.SelectDecorateMapEntry + 638, // 119: tutorial.ResShiftVisitPet.SelectDecorateMap:type_name -> tutorial.ResShiftVisitPet.SelectDecorateMapEntry 372, // 120: tutorial.UseItemRequest.items:type_name -> tutorial.Item 371, // 121: tutorial.UseItemRequest.price:type_name -> tutorial.IntPack - 632, // 122: tutorial.UseItemRequest.attrs:type_name -> tutorial.UseItemRequest.AttrsEntry + 639, // 122: tutorial.UseItemRequest.attrs:type_name -> tutorial.UseItemRequest.AttrsEntry 3, // 123: tutorial.UseItemResponse.code:type_name -> tutorial.UseItemResponse.CODE 372, // 124: tutorial.UseItemResponse.items:type_name -> tutorial.Item 371, // 125: tutorial.UseItemResponse.price:type_name -> tutorial.IntPack - 633, // 126: tutorial.UseItemResponse.attrs:type_name -> tutorial.UseItemResponse.AttrsEntry + 640, // 126: tutorial.UseItemResponse.attrs:type_name -> tutorial.UseItemResponse.AttrsEntry 1, // 127: tutorial.ResSetEnergyMul.ResultCode:type_name -> tutorial.RES_CODE 454, // 128: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo 450, // 129: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo @@ -38028,13 +38454,13 @@ var file_Gameapi_proto_depIdxs = []int32{ 1, // 131: tutorial.ResBuyEnergy.Code:type_name -> tutorial.RES_CODE 386, // 132: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo 1, // 133: tutorial.ResGetHandbookReward.Code:type_name -> tutorial.RES_CODE - 634, // 134: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry + 641, // 134: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry 1, // 135: tutorial.ResRewardOrder.Code:type_name -> tutorial.RES_CODE 391, // 136: tutorial.ResOrderList.OrderList:type_name -> tutorial.Order 1, // 137: tutorial.ResDecorate.Code:type_name -> tutorial.RES_CODE 1, // 138: tutorial.ResDecorateAll.Code:type_name -> tutorial.RES_CODE 399, // 139: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card - 635, // 140: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry + 642, // 140: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry 1, // 141: tutorial.ResMasterCard.Code:type_name -> tutorial.RES_CODE 1, // 142: tutorial.ResCardCollectReward.Code:type_name -> tutorial.RES_CODE 1, // 143: tutorial.ResExStarReward.Code:type_name -> tutorial.RES_CODE @@ -38050,11 +38476,11 @@ var file_Gameapi_proto_depIdxs = []int32{ 1, // 153: tutorial.ResRefuseCardExchange.Code:type_name -> tutorial.RES_CODE 1, // 154: tutorial.ResGetFriendCard.Code:type_name -> tutorial.RES_CODE 1, // 155: tutorial.ResGuideReward.Code:type_name -> tutorial.RES_CODE - 636, // 156: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry + 643, // 156: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry 437, // 157: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo 438, // 158: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack - 637, // 159: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry - 638, // 160: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry + 644, // 159: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry + 645, // 160: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry 437, // 161: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo 442, // 162: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress 437, // 163: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo @@ -38073,8 +38499,8 @@ var file_Gameapi_proto_depIdxs = []int32{ 1, // 176: tutorial.ResGetSevenLoginReward.Code:type_name -> tutorial.RES_CODE 1, // 177: tutorial.ResGetMonthLoginReward.Code:type_name -> tutorial.RES_CODE 464, // 178: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo - 639, // 179: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry - 640, // 180: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry + 646, // 179: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry + 647, // 180: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry 1, // 181: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE 1, // 182: tutorial.ResSelectLimitEvent.Code:type_name -> tutorial.RES_CODE 1, // 183: tutorial.ResLimitSenceReward.Code:type_name -> tutorial.RES_CODE @@ -38083,7 +38509,7 @@ var file_Gameapi_proto_depIdxs = []int32{ 481, // 186: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple 483, // 187: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog 486, // 188: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard - 641, // 189: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry + 648, // 189: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry 481, // 190: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple 1, // 191: tutorial.ResFriendIgnore.Code:type_name -> tutorial.RES_CODE 481, // 192: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple @@ -38097,58 +38523,61 @@ var file_Gameapi_proto_depIdxs = []int32{ 481, // 200: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple 1, // 201: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE 1, // 202: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE - 642, // 203: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry - 643, // 204: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry + 649, // 203: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry + 650, // 204: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry 437, // 205: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo 515, // 206: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo 1, // 207: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE 1, // 208: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE 1, // 209: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE - 644, // 210: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry - 645, // 211: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry - 646, // 212: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry + 651, // 210: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry + 652, // 211: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry + 653, // 212: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry 1, // 213: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE 1, // 214: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE 1, // 215: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE - 647, // 216: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry + 654, // 216: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry 437, // 217: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo 1, // 218: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE 1, // 219: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE 1, // 220: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE 1, // 221: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE 1, // 222: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE - 648, // 223: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry - 649, // 224: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry - 650, // 225: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry - 651, // 226: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry + 655, // 223: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry + 656, // 224: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry + 657, // 225: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry + 658, // 226: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry 1, // 227: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE - 652, // 228: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry - 653, // 229: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry + 659, // 228: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry + 660, // 229: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry 1, // 230: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE 1, // 231: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE - 654, // 232: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry + 661, // 232: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry 464, // 233: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo - 655, // 234: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry - 656, // 235: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry + 662, // 234: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry + 663, // 235: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry 579, // 236: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent - 657, // 237: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.ReqGuessColorTake.MapEntry + 664, // 237: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.ReqGuessColorTake.MapEntry 1, // 238: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE 1, // 239: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE - 440, // 240: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek - 441, // 241: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask - 472, // 242: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent - 481, // 243: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple - 515, // 244: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo - 524, // 245: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop - 525, // 246: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop - 534, // 247: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo - 482, // 248: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 482, // 249: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 250, // [250:250] is the sub-list for method output_type - 250, // [250:250] is the sub-list for method input_type - 250, // [250:250] is the sub-list for extension type_name - 250, // [250:250] is the sub-list for extension extendee - 0, // [0:250] is the sub-list for field type_name + 586, // 240: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent + 1, // 241: tutorial.ResRaceStart.Code:type_name -> tutorial.RES_CODE + 1, // 242: tutorial.ResRaceReward.Code:type_name -> tutorial.RES_CODE + 440, // 243: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 441, // 244: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 472, // 245: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 481, // 246: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 515, // 247: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 524, // 248: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 525, // 249: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 534, // 250: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 482, // 251: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 482, // 252: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 253, // [253:253] is the sub-list for method output_type + 253, // [253:253] is the sub-list for method input_type + 253, // [253:253] is the sub-list for extension type_name + 253, // [253:253] is the sub-list for extension extendee + 0, // [0:253] is the sub-list for field type_name } func init() { file_Gameapi_proto_init() } @@ -38162,7 +38591,7 @@ func file_Gameapi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_Gameapi_proto_rawDesc, NumEnums: 4, - NumMessages: 654, + NumMessages: 661, NumExtensions: 0, NumServices: 0, },