修复数据存储和订单逻辑

This commit is contained in:
hahwu 2024-12-04 15:03:08 +08:00
parent 5134ceb766
commit d3d7e44f2e
17 changed files with 895 additions and 236 deletions

View File

@ -28,7 +28,9 @@ func RandPopSlice(slice []int) ([]int, int) {
return slice, -1 return slice, -1
} }
Id := GetRand().Intn(slen) 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 { func RandSlice(slice []int) int {

View File

@ -105,6 +105,21 @@ func GetMaxLvById(Id int) int {
return gamedata.ParseInt(data["MaxLv"]) 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获取棋子类型 // 根据Id获取棋子类型
func GetTypeById(Id int) string { func GetTypeById(Id int) string {
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id) data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)

View File

@ -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")
}

View File

@ -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) { func RedBackData(p *Player) {
result := make(map[int32]int32) result := make(map[int32]int32)
Now := GoUtil.Now() Now := GoUtil.Now()

View File

@ -89,7 +89,7 @@ func (f *FriendMgr) sync(m *msg.Msg) (interface{}, error) {
// 发送消息给玩家 // 发送消息给玩家
func sendToPlayer(m *msg.Msg) 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 { if p == nil || p.stop {
return fmt.Errorf("player %d not online", m.To) return fmt.Errorf("player %d not online", m.To)
} }

View File

@ -10,6 +10,7 @@ import (
"server/MergeConst" "server/MergeConst"
"server/conf" "server/conf"
"strconv" "strconv"
"sync"
l "log" l "log"
"server/db" "server/db"
@ -64,7 +65,7 @@ type LimitActPeriod struct {
type GameLogic struct { type GameLogic struct {
Db_AccountInfo db.Db_Account Db_AccountInfo db.Db_Account
DailyTaskTimestamp int64 DailyTaskTimestamp int64
M_Players map[int32]*Player M_Players sync.Map
m_CronEntryIDs map[int]*LimitActPeriod m_CronEntryIDs map[int]*LimitActPeriod
Mdispatr *timer.Dispatcher Mdispatr *timer.Dispatcher
M_LimitActiveList []int M_LimitActiveList []int
@ -116,11 +117,18 @@ func (gl *GameLogic) NoonFlush() {
} }
func (gl *GameLogic) SetPlayer(player *Player) { 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) { 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() { func (gl *GameLogic) OpenTimestampTick() {
@ -251,8 +259,7 @@ func (ad *GameLogic) CreateNewPlayer(a gate.Agent, UserName string) {
G_GameLogicPtr.PackResInfo(a, "ResLogin", data) G_GameLogicPtr.PackResInfo(a, "ResLogin", data)
panic(err) panic(err)
} }
ad.M_Players[player.M_DwUin] = player ad.SetPlayer(player)
} }
func (ad *GameLogic) GetPlayerByAgent(gate gate.Agent) *Player { func (ad *GameLogic) GetPlayerByAgent(gate gate.Agent) *Player {
@ -263,14 +270,6 @@ func (ad *GameLogic) GetPlayerByAgent(gate gate.Agent) *Player {
return nil 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() { func (ad *GameLogic) CreateFriendMgr() {
ad.FriendMgr = &FriendMgr{ ad.FriendMgr = &FriendMgr{
@ -429,7 +428,7 @@ func G_getGameLogic() *GameLogic {
isInitGameLogic = true isInitGameLogic = true
G_GameLogicPtr.Mdispatr = timer.NewDispatcher(10) G_GameLogicPtr.Mdispatr = timer.NewDispatcher(10)
G_GameLogicPtr.InitServerInfo() G_GameLogicPtr.InitServerInfo()
G_GameLogicPtr.M_Players = make(map[int32]*Player) G_GameLogicPtr.M_Players = sync.Map{}
G_GameLogicPtr.NotInitPlayer = new(Player) G_GameLogicPtr.NotInitPlayer = new(Player)
G_GameLogicPtr.M_LimitActiveList = []int{} G_GameLogicPtr.M_LimitActiveList = []int{}
G_GameLogicPtr.LoadSvrGlobalData() // 加载服务器全局数据 G_GameLogicPtr.LoadSvrGlobalData() // 加载服务器全局数据
@ -505,8 +504,8 @@ func (ad *GameLogic) ClearData(args []interface{}) {
player.lock.Lock() player.lock.Lock()
defer player.lock.Unlock() defer player.lock.Unlock()
if player.agent == nil { if player.agent == nil {
delete(ad.M_Players, player.M_DwUin)
player.ClearData() player.ClearData()
ad.DelPlayer(player)
log.Debug("player %d 延迟300s关闭", player.M_DwUin) 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) internal.AsignPlayerToAgents(a, player)
player.SetAgent(a) player.SetAgent(a)
ad.M_Players[player.M_DwUin] = player
player.PushClientRes(&msg.ResLogin{ player.PushClientRes(&msg.ResLogin{
ResultCode: 0, ResultCode: 0,
DwUin: player.M_DwUin, 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 { func (ad *GameLogic) SendMassage(dwUin int32, Func string, data []byte) bool {
player, ok := ad.M_Players[dwUin] player := ad.GetPlayer(dwUin)
if ok { if player != nil {
agent := player.GetAgentByPlayer() agent := player.GetAgentByPlayer()
if agent != nil { if agent != nil {
G_getGameLogic().PackResInfo(agent, Func, data) G_getGameLogic().PackResInfo(agent, Func, data)
@ -815,13 +813,14 @@ func (ad *GameLogic) AddLog(Log *Log) {
} }
func (ad *GameLogic) NotifyAll(m *MsgMod.Msg) { func (ad *GameLogic) NotifyAll(m *MsgMod.Msg) {
for _, v := range ad.M_Players { ad.M_Players.Range(func(k, v interface{}) bool {
v.Send(m) v.(*Player).Send(m)
} return true
})
} }
func NotifyPlayer(Uid int, m *MsgMod.Msg) { func NotifyPlayer(Uid int, m *MsgMod.Msg) {
p := G_GameLogicPtr.GetPlayerByUid(Uid) p := G_GameLogicPtr.GetPlayer(int32(Uid))
if p == nil || p.stop { if p == nil || p.stop {
return return
} }
@ -844,13 +843,13 @@ func unsetRedisLock(key string) {
func Destroy() { func Destroy() {
log.Debug("服务器下线") log.Debug("服务器下线")
if G_GameLogicPtr != nil { 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) log.Debug("palyer %d 断开连接 写入数据", k)
v.ClearData() return true
} })
G_GameLogicPtr.FriendMgr.SaveData() G_GameLogicPtr.FriendMgr.SaveData()
G_GameLogicPtr.RankMgr.SaveData() G_GameLogicPtr.RankMgr.SaveData()
G_GameLogicPtr.ChampshipMgr.SaveData() G_GameLogicPtr.ChampshipMgr.SaveData()
} }
} }

View File

@ -492,8 +492,8 @@ func (p *PlayerBaseData) ReqSynGameData(buf []byte) {
if sqlStruck.DwUin == p.M_Player.M_DwUin { if sqlStruck.DwUin == p.M_Player.M_DwUin {
return return
} }
OldPlayer := G_GameLogicPtr.GetPlayer(sqlStruck.DwUin)
if OldPlayer, ok := G_GameLogicPtr.M_Players[sqlStruck.DwUin]; ok { if OldPlayer != nil {
agent := OldPlayer.GetAgentByPlayer() agent := OldPlayer.GetAgentByPlayer()
// notify := &msg.ForceKickOut{} // notify := &msg.ForceKickOut{}
notify := &msg.ResSynGameData{} notify := &msg.ResSynGameData{}
@ -502,7 +502,7 @@ func (p *PlayerBaseData) ReqSynGameData(buf []byte) {
G_getGameLogic().PackResInfo(agent, "ResSynGameData", data) G_getGameLogic().PackResInfo(agent, "ResSynGameData", data)
} }
OldPlayer.ClearData() OldPlayer.ClearData()
delete(G_GameLogicPtr.M_Players, sqlStruck.DwUin) G_GameLogicPtr.M_Players.Delete(sqlStruck.DwUin)
} }
if isHaveOther { if isHaveOther {

View File

@ -28,6 +28,7 @@ import (
"server/game/mod/mining" "server/game/mod/mining"
"server/game/mod/order" "server/game/mod/order"
"server/game/mod/piggyBank" "server/game/mod/piggyBank"
"server/game/mod/race"
"server/game/mod/sevenLogin" "server/game/mod/sevenLogin"
Var "server/game/mod/var" Var "server/game/mod/var"
"server/pkg/github.com/name5566/leaf/log" "server/pkg/github.com/name5566/leaf/log"
@ -42,30 +43,31 @@ type PlayerModData struct {
// PlayerModList 玩家模块列表 // PlayerModList 玩家模块列表
type PlayerModList struct { type PlayerModList struct {
Base base.Base `json:"base"` Base base.Base
Chess chess.ChessBorad `json:"chess"` Chess chess.ChessBorad
Handbook handbook.Handbook `json:"handbook"` Handbook handbook.Handbook
Order order.OrderMod `json:"order"` Order order.OrderMod
Decorate decorate.Decorate `json:"decorate"` Decorate decorate.Decorate
Card card.CardMod `json:"card"` Card card.CardMod
Var Var.Var `json:"var"` Var Var.Var
Guild guild.Guild `json:"guild"` Guild guild.Guild
DailyTask dailyTask.DailyTaskMod `json:"dailyTask"` DailyTask dailyTask.DailyTaskMod
Face face.FaceMod `json:"face"` Face face.FaceMod
Avatar avatar.AvatarMod `json:"avatar"` Avatar avatar.AvatarMod
SevenLogin sevenLogin.SevenLoginMod `json:"sevenLogin"` SevenLogin sevenLogin.SevenLoginMod
LimitedTimeEvent limitedTimeEvent.LimitedTimeEventMod `json:"limitedTimeEvent"` LimitedTimeEvent limitedTimeEvent.LimitedTimeEventMod
Friend friend.FriendMod `json:"friend"` Friend friend.FriendMod
Mail mail.MailMod `json:"mail"` Mail mail.MailMod
Charge charge.ChargeMod `json:"charge"` Charge charge.ChargeMod
Endless endless.EndlessMod `json:"endless"` Endless endless.EndlessMod
PiggyBank piggyBank.PiggyBankMod `json:"piggyBank"` PiggyBank piggyBank.PiggyBankMod
Champship champship.ChampshipMod `json:"champship"` Champship champship.ChampshipMod
Invite invite.InviteMod `json:"invite"` Invite invite.InviteMod
Kv kv.KvMod `json:"kv"` Kv kv.KvMod
Mining mining.MiningMod `json:"mining"` Mining mining.MiningMod
Item item.ItemMod `json:"item"` Item item.ItemMod
GuessColor guesscolor.GuessColorMod `json:"guessColor"` GuessColor guesscolor.GuessColorMod
Race race.RaceMod
} }
func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool { func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool {
@ -292,3 +294,7 @@ func (p *PlayerMod) getItemMod() *item.ItemMod {
func (p *PlayerMod) getGuessColorMod() *guesscolor.GuessColorMod { func (p *PlayerMod) getGuessColorMod() *guesscolor.GuessColorMod {
return &p.mod_list.GuessColor return &p.mod_list.GuessColor
} }
func (p *PlayerMod) getRaceMod() *race.RaceMod {
return &p.mod_list.Race
}

View File

@ -2506,6 +2506,7 @@ func ReqGuessColor(args []interface{}) error {
return nil return nil
} }
// 请求猜颜色
func ReqGuessColorTake(args []interface{}) error { func ReqGuessColorTake(args []interface{}) error {
_, player, buf := ParseArgs(args) _, player, buf := ParseArgs(args)
req := &msg.ReqGuessColorTake{} req := &msg.ReqGuessColorTake{}
@ -2535,6 +2536,7 @@ func ReqGuessColorTake(args []interface{}) error {
return nil return nil
} }
// 请求猜颜色奖励
func ReqGuessColorReward(args []interface{}) error { func ReqGuessColorReward(args []interface{}) error {
_, player, buf := ParseArgs(args) _, player, buf := ParseArgs(args)
req := &msg.ReqGuessColorReward{} req := &msg.ReqGuessColorReward{}

View File

@ -27,6 +27,7 @@ const (
const ( const (
ACT_TYPE_MINING = 1 // 挖矿 ACT_TYPE_MINING = 1 // 挖矿
ACT_TYPE_GUESS_COLOR = 2 // 猜颜色 ACT_TYPE_GUESS_COLOR = 2 // 猜颜色
ACT_TYPE_RACE = 3 // 赛跑
) )
type ActivityInfo struct { type ActivityInfo struct {

View File

@ -44,6 +44,6 @@ func UnitChessShop(p *Player) error {
func UnitOrder(p *Player) error { func UnitOrder(p *Player) error {
OrderMod := p.PlayMod.getOrderMod() OrderMod := p.PlayMod.getOrderMod()
ChessMod := p.PlayMod.getChessMod() ChessMod := p.PlayMod.getChessMod()
OrderMod.CreateNormalOrder(4, ChessMod.GetEmitList()) err := OrderMod.CreateOrder(6, ChessMod.GetEmitList())
return nil return err
} }

View File

@ -118,12 +118,12 @@ func HandleClientReq(args []interface{}) {
return return
} }
if ResLogin.DwUin > 0 { 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) G_GameLogicPtr.ReplaceExistPlayerAndAgent(a, OldPlayer)
} else { } else {
G_GameLogicPtr.CreateNewPlayer(a, detail.UserName) G_GameLogicPtr.CreateNewPlayer(a, detail.UserName)
} }
} }
p, _ := internal.Agents.Load(a) p, _ := internal.Agents.Load(a)
if p != nil { if p != nil {

View File

@ -34,6 +34,8 @@ const (
ITEM_TYPE_PIGGY_BANK = 103 // 猪猪银行 ITEM_TYPE_PIGGY_BANK = 103 // 猪猪银行
ITEM_TYPE_MASTER_CARD = 104 // 万能卡 ITEM_TYPE_MASTER_CARD = 104 // 万能卡
ITEM_TYPE_AVATAR = 105 // 头像框 ITEM_TYPE_AVATAR = 105 // 头像框
ITEM_TYPE_ACTIVITY = 106 // 活动道具
ITEM_TYPE_ACTIVITY_RACE = 107 // 竞赛活动道具
) )
func (i *ItemMod) InitData() { func (i *ItemMod) InitData() {

View File

@ -208,6 +208,7 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int) error {
ChessDiff := getChessDiff(ChessNum, OrderDiff, OrderN) ChessDiff := getChessDiff(ChessNum, OrderDiff, OrderN)
EnergyMul := userCfg.GetEnergyMulByLv(lv) EnergyMul := userCfg.GetEnergyMulByLv(lv)
ColorArr := make([]string, 0)
RandEmit := 0 RandEmit := 0
mergeList := make([]int, 0, len(ChessDiff)) mergeList := make([]int, 0, len(ChessDiff))
for _, v := range ChessDiff { for _, v := range ChessDiff {
@ -219,6 +220,12 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int) error {
ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m) ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m)
NewLev := getChessLv(ChessMinLev, ChessMaxLev, v) NewLev := getChessLv(ChessMinLev, ChessMaxLev, v)
ChessColor := getRandChessColor(RandEmit) 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) ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor)
Type := mergeDataCfg.GetTypeById(ChessId) Type := mergeDataCfg.GetTypeById(ChessId)
if Type != "Product" { if Type != "Product" {
@ -279,6 +286,8 @@ func (o *OrderMod) CreateSuperOrder(lv int, Emit []int) error {
ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m) ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m)
NewLev := getChessLv(ChessMinLev, ChessMaxLev, v) NewLev := getChessLv(ChessMinLev, ChessMaxLev, v)
ChessColor := getRandChessColor(RandEmit) ChessColor := getRandChessColor(RandEmit)
ColorMaxLv := mergeDataCfg.GetMaxLvByColor(ChessColor)
NewLev = min(NewLev, ColorMaxLv)
ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor) ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor)
Type := mergeDataCfg.GetTypeById(ChessId) Type := mergeDataCfg.GetTypeById(ChessId)
if Type != "Product" { if Type != "Product" {

View File

@ -143,7 +143,7 @@ func getChessLv(Min, Max, Diff int) int {
} }
func getRandChessColor(Emit int) string { func getRandChessColor(Emit int) string {
Produce := mergeDataCfg.GetEmitProduceType(Emit) Produce := mergeDataCfg.GetEmitProduceChessType(Emit)
if len(Produce) == 1 { if len(Produce) == 1 {
return Produce[0] return Produce[0]
} }

View File

@ -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),
}
}

View File

@ -33239,6 +33239,390 @@ func (x *ResGuessColorReward) GetMsg() string {
return "" 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 protoreflect.FileDescriptor
var file_Gameapi_proto_rawDesc = []byte{ 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, 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, 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, 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, 0x4d, 0x73, 0x67, 0x22, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x52, 0x61, 0x63, 0x65, 0x22, 0x93,
0x50, 0x45, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x02, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x52, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64,
0x4f, 0x4d, 0x50, 0x4f, 0x53, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x55, 0x59, 0x10, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74,
0x02, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74,
0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x04, 0x2a, 0x21, 0x0a, 0x08, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20,
0x4f, 0x44, 0x45, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08,
0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x2a, 0x2e, 0x0a, 0x09, 0x49, 0x54, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x45, 0x52, 0x47, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x73, 0x73,
0x59, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x41, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0d,
0x07, 0x44, 0x49, 0x41, 0x4d, 0x4f, 0x4e, 0x44, 0x10, 0x02, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20,
0x2f, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 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 ( var (
@ -37232,7 +37651,7 @@ func file_Gameapi_proto_rawDescGZIP() []byte {
} }
var file_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 4) 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{ var file_Gameapi_proto_goTypes = []any{
(HANDLE_TYPE)(0), // 0: tutorial.HANDLE_TYPE (HANDLE_TYPE)(0), // 0: tutorial.HANDLE_TYPE
(RES_CODE)(0), // 1: tutorial.RES_CODE (RES_CODE)(0), // 1: tutorial.RES_CODE
@ -37818,147 +38237,154 @@ var file_Gameapi_proto_goTypes = []any{
(*ResGuessColorTake)(nil), // 581: tutorial.ResGuessColorTake (*ResGuessColorTake)(nil), // 581: tutorial.ResGuessColorTake
(*ReqGuessColorReward)(nil), // 582: tutorial.ReqGuessColorReward (*ReqGuessColorReward)(nil), // 582: tutorial.ReqGuessColorReward
(*ResGuessColorReward)(nil), // 583: tutorial.ResGuessColorReward (*ResGuessColorReward)(nil), // 583: tutorial.ResGuessColorReward
nil, // 584: tutorial.UpdateBaseItemInfo.MUpdateItemEntry (*ReqRace)(nil), // 584: tutorial.ReqRace
nil, // 585: tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry (*ResRace)(nil), // 585: tutorial.ResRace
nil, // 586: tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry (*Raceopponent)(nil), // 586: tutorial.raceopponent
nil, // 587: tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry (*ReqRaceStart)(nil), // 587: tutorial.ReqRaceStart
nil, // 588: tutorial.ResPlayerPackData.MPackDataEntry (*ResRaceStart)(nil), // 588: tutorial.ResRaceStart
nil, // 589: tutorial.UpdatePlayerPackData.MPackDataEntry (*ReqRaceReward)(nil), // 589: tutorial.ReqRaceReward
nil, // 590: tutorial.ResPlayerChessData.MChessDataEntry (*ResRaceReward)(nil), // 590: tutorial.ResRaceReward
nil, // 591: tutorial.UpdatePlayerChessData.MChessDataEntry nil, // 591: tutorial.UpdateBaseItemInfo.MUpdateItemEntry
nil, // 592: tutorial.ReqGetChessFromBuff.MChessDataEntry nil, // 592: tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry
nil, // 593: tutorial.ReqChessEx.MChessDataEntry nil, // 593: tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry
nil, // 594: tutorial.ReqPutChessInBag.MChessDataEntry nil, // 594: tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry
nil, // 595: tutorial.ReqTakeChessOutBag.MChessDataEntry nil, // 595: tutorial.ResPlayerPackData.MPackDataEntry
nil, // 596: tutorial.ResPlayerGiftData.MGiftDataEntry nil, // 596: tutorial.UpdatePlayerPackData.MPackDataEntry
nil, // 597: tutorial.UpdatePlayerGiftData.MGiftDataEntry nil, // 597: tutorial.ResPlayerChessData.MChessDataEntry
nil, // 598: tutorial.ResPlayerOrderData.MOrderDataEntry nil, // 598: tutorial.UpdatePlayerChessData.MChessDataEntry
nil, // 599: tutorial.UpdatePlayerOrderData.MOrderDataEntry nil, // 599: tutorial.ReqGetChessFromBuff.MChessDataEntry
nil, // 600: tutorial.ResChessColorData.MChessColorDataEntry nil, // 600: tutorial.ReqChessEx.MChessDataEntry
nil, // 601: tutorial.UpdateChessColorData.MChessColorDataEntry nil, // 601: tutorial.ReqPutChessInBag.MChessDataEntry
nil, // 602: tutorial.ResEmitMergeMap.MEmitMergeDataEntry nil, // 602: tutorial.ReqTakeChessOutBag.MChessDataEntry
nil, // 603: tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry nil, // 603: tutorial.ResPlayerGiftData.MGiftDataEntry
nil, // 604: tutorial.ResEmitCountMap.MEmitCountDataEntry nil, // 604: tutorial.UpdatePlayerGiftData.MGiftDataEntry
nil, // 605: tutorial.UpdateEmitCountMap.MEmitCountDataEntry nil, // 605: tutorial.ResPlayerOrderData.MOrderDataEntry
nil, // 606: tutorial.ResEmitCDStartData.MEmitCDDataEntry nil, // 606: tutorial.UpdatePlayerOrderData.MOrderDataEntry
nil, // 607: tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry nil, // 607: tutorial.ResChessColorData.MChessColorDataEntry
nil, // 608: tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry nil, // 608: tutorial.UpdateChessColorData.MChessColorDataEntry
nil, // 609: tutorial.ResDecorateData.MDecorateDataEntry nil, // 609: tutorial.ResEmitMergeMap.MEmitMergeDataEntry
nil, // 610: tutorial.UpdateDecorateData.MDecorateDataEntry nil, // 610: tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry
nil, // 611: tutorial.ResShopData.MShopTimeBuyDataEntry nil, // 611: tutorial.ResEmitCountMap.MEmitCountDataEntry
nil, // 612: tutorial.ResShopData.MShopSaleBuyDataEntry nil, // 612: tutorial.UpdateEmitCountMap.MEmitCountDataEntry
nil, // 613: tutorial.ResShopData.MPackBuyDataEntry nil, // 613: tutorial.ResEmitCDStartData.MEmitCDDataEntry
nil, // 614: tutorial.ResShopData.MSpecialOfferBuyDataEntry nil, // 614: tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry
nil, // 615: tutorial.ResShopData.MUISpecialOfferBuyDataEntry nil, // 615: tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry
nil, // 616: tutorial.ResShopData.MFreePackBuyDataEntry nil, // 616: tutorial.ResDecorateData.MDecorateDataEntry
nil, // 617: tutorial.ResShopData.MDiamondFirstBuyDataEntry nil, // 617: tutorial.UpdateDecorateData.MDecorateDataEntry
nil, // 618: tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry nil, // 618: tutorial.ResShopData.MShopTimeBuyDataEntry
nil, // 619: tutorial.ResShopBuy.MShopTimeBuyDataEntry nil, // 619: tutorial.ResShopData.MShopSaleBuyDataEntry
nil, // 620: tutorial.ReqRenewItemBuyCnt.MShopDataEntry nil, // 620: tutorial.ResShopData.MPackBuyDataEntry
nil, // 621: tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry nil, // 621: tutorial.ResShopData.MSpecialOfferBuyDataEntry
nil, // 622: tutorial.ResKeyValueData.KeyValuesEntry nil, // 622: tutorial.ResShopData.MUISpecialOfferBuyDataEntry
nil, // 623: tutorial.UpdateKeyValueData.KeyValuesEntry nil, // 623: tutorial.ResShopData.MFreePackBuyDataEntry
nil, // 624: tutorial.ResAdPackData.PackDataEntry nil, // 624: tutorial.ResShopData.MDiamondFirstBuyDataEntry
nil, // 625: tutorial.NotifyAdPackData.PackDataEntry nil, // 625: tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry
nil, // 626: tutorial.ResWatchAdPack.PackDataEntry nil, // 626: tutorial.ResShopBuy.MShopTimeBuyDataEntry
nil, // 627: tutorial.ResPetHomeData.SelectDecorateMapEntry nil, // 627: tutorial.ReqRenewItemBuyCnt.MShopDataEntry
nil, // 628: tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry nil, // 628: tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry
nil, // 629: tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry nil, // 629: tutorial.ResKeyValueData.KeyValuesEntry
nil, // 630: tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry nil, // 630: tutorial.UpdateKeyValueData.KeyValuesEntry
nil, // 631: tutorial.ResShiftVisitPet.SelectDecorateMapEntry nil, // 631: tutorial.ResAdPackData.PackDataEntry
nil, // 632: tutorial.UseItemRequest.AttrsEntry nil, // 632: tutorial.NotifyAdPackData.PackDataEntry
nil, // 633: tutorial.UseItemResponse.AttrsEntry nil, // 633: tutorial.ResWatchAdPack.PackDataEntry
nil, // 634: tutorial.ReqRewardOrder.MChessDataEntry nil, // 634: tutorial.ResPetHomeData.SelectDecorateMapEntry
nil, // 635: tutorial.ResCardInfo.AllCardEntry nil, // 635: tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry
nil, // 636: tutorial.ResGuildInfo.RewardEntry nil, // 636: tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry
nil, // 637: tutorial.ResDailyTask.WeekRewardEntry nil, // 637: tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry
nil, // 638: tutorial.ResDailyTask.DailyTaskEntry nil, // 638: tutorial.ResShiftVisitPet.SelectDecorateMapEntry
nil, // 639: tutorial.ResLimitEvent.LimitEventListEntry nil, // 639: tutorial.UseItemRequest.AttrsEntry
nil, // 640: tutorial.ResLimitEventProgress.ProgressRewardEntry nil, // 640: tutorial.UseItemResponse.AttrsEntry
nil, // 641: tutorial.ResKv.KvEntry nil, // 641: tutorial.ReqRewardOrder.MChessDataEntry
nil, // 642: tutorial.ResRank.RankListEntry nil, // 642: tutorial.ResCardInfo.AllCardEntry
nil, // 643: tutorial.ResMailList.MailListEntry nil, // 643: tutorial.ResGuildInfo.RewardEntry
nil, // 644: tutorial.ResCharge.SpecialShopEntry nil, // 644: tutorial.ResDailyTask.WeekRewardEntry
nil, // 645: tutorial.ResCharge.ChessShopEntry nil, // 645: tutorial.ResDailyTask.DailyTaskEntry
nil, // 646: tutorial.ResCharge.GiftEntry nil, // 646: tutorial.ResLimitEvent.LimitEventListEntry
nil, // 647: tutorial.ResEndless.EndlessListEntry nil, // 647: tutorial.ResLimitEventProgress.ProgressRewardEntry
nil, // 648: tutorial.ResChampshipRank.RankListEntry nil, // 648: tutorial.ResKv.KvEntry
nil, // 649: tutorial.ResChampshipPreRank.RankListEntry nil, // 649: tutorial.ResRank.RankListEntry
nil, // 650: tutorial.ResNotifyCard.CardEntry nil, // 650: tutorial.ResMailList.MailListEntry
nil, // 651: tutorial.ResNotifyCard.MasterEntry nil, // 651: tutorial.ResCharge.SpecialShopEntry
nil, // 652: tutorial.ResMining.MapEntry nil, // 652: tutorial.ResCharge.ChessShopEntry
nil, // 653: tutorial.ReqMiningTake.MapEntry nil, // 653: tutorial.ResCharge.GiftEntry
nil, // 654: tutorial.ResActRed.RedEntry nil, // 654: tutorial.ResEndless.EndlessListEntry
nil, // 655: tutorial.ResItem.ItemEntry nil, // 655: tutorial.ResChampshipRank.RankListEntry
nil, // 656: tutorial.ItemNotify.ItemEntry nil, // 656: tutorial.ResChampshipPreRank.RankListEntry
nil, // 657: tutorial.ReqGuessColorTake.MapEntry 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{ var file_Gameapi_proto_depIdxs = []int32{
584, // 0: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry 591, // 0: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry
585, // 1: tutorial.ResPlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry 592, // 1: tutorial.ResPlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry
586, // 2: tutorial.NotifyDailyRenewEmitUnlock.mEmitUnlockData:type_name -> tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry 593, // 2: tutorial.NotifyDailyRenewEmitUnlock.mEmitUnlockData:type_name -> tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry
587, // 3: tutorial.UpdatePlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry 594, // 3: tutorial.UpdatePlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry
588, // 4: tutorial.ResPlayerPackData.mPackData:type_name -> tutorial.ResPlayerPackData.MPackDataEntry 595, // 4: tutorial.ResPlayerPackData.mPackData:type_name -> tutorial.ResPlayerPackData.MPackDataEntry
589, // 5: tutorial.UpdatePlayerPackData.mPackData:type_name -> tutorial.UpdatePlayerPackData.MPackDataEntry 596, // 5: tutorial.UpdatePlayerPackData.mPackData:type_name -> tutorial.UpdatePlayerPackData.MPackDataEntry
590, // 6: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry 597, // 6: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry
37, // 7: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag 37, // 7: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag
0, // 8: tutorial.ChessHandle.type:type_name -> tutorial.HANDLE_TYPE 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 30, // 10: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle
1, // 11: tutorial.ResUpdatePlayerChessData.code:type_name -> tutorial.RES_CODE 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 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 1, // 15: tutorial.ResChessEx.code:type_name -> tutorial.RES_CODE
38, // 16: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid 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 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, // 20: tutorial.ResTakeChessOutBag.code:type_name -> tutorial.RES_CODE
1, // 21: tutorial.ResBuyChessBagGrid.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 603, // 22: tutorial.ResPlayerGiftData.mGiftData:type_name -> tutorial.ResPlayerGiftData.MGiftDataEntry
597, // 23: tutorial.UpdatePlayerGiftData.mGiftData:type_name -> tutorial.UpdatePlayerGiftData.MGiftDataEntry 604, // 23: tutorial.UpdatePlayerGiftData.mGiftData:type_name -> tutorial.UpdatePlayerGiftData.MGiftDataEntry
598, // 24: tutorial.ResPlayerOrderData.mOrderData:type_name -> tutorial.ResPlayerOrderData.MOrderDataEntry 605, // 24: tutorial.ResPlayerOrderData.mOrderData:type_name -> tutorial.ResPlayerOrderData.MOrderDataEntry
599, // 25: tutorial.UpdatePlayerOrderData.mOrderData:type_name -> tutorial.UpdatePlayerOrderData.MOrderDataEntry 606, // 25: tutorial.UpdatePlayerOrderData.mOrderData:type_name -> tutorial.UpdatePlayerOrderData.MOrderDataEntry
600, // 26: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry 607, // 26: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry
601, // 27: tutorial.UpdateChessColorData.mChessColorData:type_name -> tutorial.UpdateChessColorData.MChessColorDataEntry 608, // 27: tutorial.UpdateChessColorData.mChessColorData:type_name -> tutorial.UpdateChessColorData.MChessColorDataEntry
602, // 28: tutorial.ResEmitMergeMap.mEmitMergeData:type_name -> tutorial.ResEmitMergeMap.MEmitMergeDataEntry 609, // 28: tutorial.ResEmitMergeMap.mEmitMergeData:type_name -> tutorial.ResEmitMergeMap.MEmitMergeDataEntry
603, // 29: tutorial.UpdateEmitMergeMap.mEmitMergeData:type_name -> tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry 610, // 29: tutorial.UpdateEmitMergeMap.mEmitMergeData:type_name -> tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry
604, // 30: tutorial.ResEmitCountMap.mEmitCountData:type_name -> tutorial.ResEmitCountMap.MEmitCountDataEntry 611, // 30: tutorial.ResEmitCountMap.mEmitCountData:type_name -> tutorial.ResEmitCountMap.MEmitCountDataEntry
605, // 31: tutorial.UpdateEmitCountMap.mEmitCountData:type_name -> tutorial.UpdateEmitCountMap.MEmitCountDataEntry 612, // 31: tutorial.UpdateEmitCountMap.mEmitCountData:type_name -> tutorial.UpdateEmitCountMap.MEmitCountDataEntry
606, // 32: tutorial.ResEmitCDStartData.mEmitCDData:type_name -> tutorial.ResEmitCDStartData.MEmitCDDataEntry 613, // 32: tutorial.ResEmitCDStartData.mEmitCDData:type_name -> tutorial.ResEmitCDStartData.MEmitCDDataEntry
607, // 33: tutorial.NotifyInitEmitCDTimeData.mEmitCDData:type_name -> tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry 614, // 33: tutorial.NotifyInitEmitCDTimeData.mEmitCDData:type_name -> tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry
608, // 34: tutorial.NotifyEmitCDTimeEndData.mEmitCDData:type_name -> tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry 615, // 34: tutorial.NotifyEmitCDTimeEndData.mEmitCDData:type_name -> tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry
609, // 35: tutorial.ResDecorateData.mDecorateData:type_name -> tutorial.ResDecorateData.MDecorateDataEntry 616, // 35: tutorial.ResDecorateData.mDecorateData:type_name -> tutorial.ResDecorateData.MDecorateDataEntry
610, // 36: tutorial.UpdateDecorateData.mDecorateData:type_name -> tutorial.UpdateDecorateData.MDecorateDataEntry 617, // 36: tutorial.UpdateDecorateData.mDecorateData:type_name -> tutorial.UpdateDecorateData.MDecorateDataEntry
611, // 37: tutorial.ResShopData.mShopTimeBuyData:type_name -> tutorial.ResShopData.MShopTimeBuyDataEntry 618, // 37: tutorial.ResShopData.mShopTimeBuyData:type_name -> tutorial.ResShopData.MShopTimeBuyDataEntry
612, // 38: tutorial.ResShopData.mShopSaleBuyData:type_name -> tutorial.ResShopData.MShopSaleBuyDataEntry 619, // 38: tutorial.ResShopData.mShopSaleBuyData:type_name -> tutorial.ResShopData.MShopSaleBuyDataEntry
613, // 39: tutorial.ResShopData.mPackBuyData:type_name -> tutorial.ResShopData.MPackBuyDataEntry 620, // 39: tutorial.ResShopData.mPackBuyData:type_name -> tutorial.ResShopData.MPackBuyDataEntry
614, // 40: tutorial.ResShopData.mSpecialOfferBuyData:type_name -> tutorial.ResShopData.MSpecialOfferBuyDataEntry 621, // 40: tutorial.ResShopData.mSpecialOfferBuyData:type_name -> tutorial.ResShopData.MSpecialOfferBuyDataEntry
615, // 41: tutorial.ResShopData.mUISpecialOfferBuyData:type_name -> tutorial.ResShopData.MUISpecialOfferBuyDataEntry 622, // 41: tutorial.ResShopData.mUISpecialOfferBuyData:type_name -> tutorial.ResShopData.MUISpecialOfferBuyDataEntry
616, // 42: tutorial.ResShopData.mFreePackBuyData:type_name -> tutorial.ResShopData.MFreePackBuyDataEntry 623, // 42: tutorial.ResShopData.mFreePackBuyData:type_name -> tutorial.ResShopData.MFreePackBuyDataEntry
617, // 43: tutorial.ResShopData.mDiamondFirstBuyData:type_name -> tutorial.ResShopData.MDiamondFirstBuyDataEntry 624, // 43: tutorial.ResShopData.mDiamondFirstBuyData:type_name -> tutorial.ResShopData.MDiamondFirstBuyDataEntry
618, // 44: tutorial.NotifyShopStatusChange.mShopTimeBuyData:type_name -> tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry 625, // 44: tutorial.NotifyShopStatusChange.mShopTimeBuyData:type_name -> tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry
619, // 45: tutorial.ResShopBuy.mShopTimeBuyData:type_name -> tutorial.ResShopBuy.MShopTimeBuyDataEntry 626, // 45: tutorial.ResShopBuy.mShopTimeBuyData:type_name -> tutorial.ResShopBuy.MShopTimeBuyDataEntry
620, // 46: tutorial.ReqRenewItemBuyCnt.mShopData:type_name -> tutorial.ReqRenewItemBuyCnt.MShopDataEntry 627, // 46: tutorial.ReqRenewItemBuyCnt.mShopData:type_name -> tutorial.ReqRenewItemBuyCnt.MShopDataEntry
621, // 47: tutorial.ResRenewItemBuyCnt.mShopTimeBuyData:type_name -> tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry 628, // 47: tutorial.ResRenewItemBuyCnt.mShopTimeBuyData:type_name -> tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry
89, // 48: tutorial.ResBriefEmailData.mEmailList:type_name -> tutorial.BriefEmailStruct 89, // 48: tutorial.ResBriefEmailData.mEmailList:type_name -> tutorial.BriefEmailStruct
89, // 49: tutorial.NotifyNewBriefEmailData.mEmailList:type_name -> tutorial.BriefEmailStruct 89, // 49: tutorial.NotifyNewBriefEmailData.mEmailList:type_name -> tutorial.BriefEmailStruct
99, // 50: tutorial.NotifyLimitedTimeActiveData.mActiveList:type_name -> tutorial.LimitedTimeActiveStruct 99, // 50: tutorial.NotifyLimitedTimeActiveData.mActiveList:type_name -> tutorial.LimitedTimeActiveStruct
100, // 51: tutorial.NotifyLimitedTimeActiveEnd.mActiveList:type_name -> tutorial.LimitedTimeEndStruct 100, // 51: tutorial.NotifyLimitedTimeActiveEnd.mActiveList:type_name -> tutorial.LimitedTimeEndStruct
154, // 52: tutorial.CategoryIllustratedData.Items:type_name -> tutorial.SingleIllustratedItem 154, // 52: tutorial.CategoryIllustratedData.Items:type_name -> tutorial.SingleIllustratedItem
155, // 53: tutorial.ResIllustratedInfo.Datas:type_name -> tutorial.CategoryIllustratedData 155, // 53: tutorial.ResIllustratedInfo.Datas:type_name -> tutorial.CategoryIllustratedData
622, // 54: tutorial.ResKeyValueData.KeyValues:type_name -> tutorial.ResKeyValueData.KeyValuesEntry 629, // 54: tutorial.ResKeyValueData.KeyValues:type_name -> tutorial.ResKeyValueData.KeyValuesEntry
623, // 55: tutorial.UpdateKeyValueData.KeyValues:type_name -> tutorial.UpdateKeyValueData.KeyValuesEntry 630, // 55: tutorial.UpdateKeyValueData.KeyValues:type_name -> tutorial.UpdateKeyValueData.KeyValuesEntry
203, // 56: tutorial.ResChampshipData.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 56: tutorial.ResChampshipData.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo
203, // 57: tutorial.NotifyNewChampshipRank.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 57: tutorial.NotifyNewChampshipRank.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo
203, // 58: tutorial.NotifyUpdateChampshipRank.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 58: tutorial.NotifyUpdateChampshipRank.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo
203, // 59: tutorial.ResChampshipAddScore.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 59: tutorial.ResChampshipAddScore.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo
203, // 60: tutorial.ResChampshipAddTime.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 60: tutorial.ResChampshipAddTime.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo
217, // 61: tutorial.ResPlayerPayData.PlayerPayData:type_name -> tutorial.PlayerPayItem 217, // 61: tutorial.ResPlayerPayData.PlayerPayData:type_name -> tutorial.PlayerPayItem
624, // 62: tutorial.ResAdPackData.PackData:type_name -> tutorial.ResAdPackData.PackDataEntry 631, // 62: tutorial.ResAdPackData.PackData:type_name -> tutorial.ResAdPackData.PackDataEntry
625, // 63: tutorial.NotifyAdPackData.PackData:type_name -> tutorial.NotifyAdPackData.PackDataEntry 632, // 63: tutorial.NotifyAdPackData.PackData:type_name -> tutorial.NotifyAdPackData.PackDataEntry
626, // 64: tutorial.ResWatchAdPack.PackData:type_name -> tutorial.ResWatchAdPack.PackDataEntry 633, // 64: tutorial.ResWatchAdPack.PackData:type_name -> tutorial.ResWatchAdPack.PackDataEntry
262, // 65: tutorial.ResFriendData.FriendInfos:type_name -> tutorial.FriendInfo 262, // 65: tutorial.ResFriendData.FriendInfos:type_name -> tutorial.FriendInfo
262, // 66: tutorial.AddFriendData.Finfo:type_name -> tutorial.FriendInfo 262, // 66: tutorial.AddFriendData.Finfo:type_name -> tutorial.FriendInfo
262, // 67: tutorial.ResWillPlayerDetail.PlayerInfos: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, // 109: tutorial.ResFriendEventData.MFriendEventData:type_name -> tutorial.FriendEventData
341, // 110: tutorial.NotifyNewFriendEvent.NewEvent:type_name -> tutorial.FriendEventData 341, // 110: tutorial.NotifyNewFriendEvent.NewEvent:type_name -> tutorial.FriendEventData
257, // 111: tutorial.PetHomeInterActST.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData 257, // 111: tutorial.PetHomeInterActST.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData
627, // 112: tutorial.ResPetHomeData.SelectDecorateMap:type_name -> tutorial.ResPetHomeData.SelectDecorateMapEntry 634, // 112: tutorial.ResPetHomeData.SelectDecorateMap:type_name -> tutorial.ResPetHomeData.SelectDecorateMapEntry
628, // 113: tutorial.ReqSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry 635, // 113: tutorial.ReqSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry
629, // 114: tutorial.ResSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry 636, // 114: tutorial.ResSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry
257, // 115: tutorial.ResOpenOtherPetHome.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData 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 349, // 117: tutorial.ResPetHomeInterActST.mPetHomeInterActSTs:type_name -> tutorial.PetHomeInterActST
257, // 118: tutorial.ResShiftVisitPet.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData 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 372, // 120: tutorial.UseItemRequest.items:type_name -> tutorial.Item
371, // 121: tutorial.UseItemRequest.price:type_name -> tutorial.IntPack 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 3, // 123: tutorial.UseItemResponse.code:type_name -> tutorial.UseItemResponse.CODE
372, // 124: tutorial.UseItemResponse.items:type_name -> tutorial.Item 372, // 124: tutorial.UseItemResponse.items:type_name -> tutorial.Item
371, // 125: tutorial.UseItemResponse.price:type_name -> tutorial.IntPack 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 1, // 127: tutorial.ResSetEnergyMul.ResultCode:type_name -> tutorial.RES_CODE
454, // 128: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo 454, // 128: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo
450, // 129: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo 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 1, // 131: tutorial.ResBuyEnergy.Code:type_name -> tutorial.RES_CODE
386, // 132: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo 386, // 132: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo
1, // 133: tutorial.ResGetHandbookReward.Code:type_name -> tutorial.RES_CODE 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 1, // 135: tutorial.ResRewardOrder.Code:type_name -> tutorial.RES_CODE
391, // 136: tutorial.ResOrderList.OrderList:type_name -> tutorial.Order 391, // 136: tutorial.ResOrderList.OrderList:type_name -> tutorial.Order
1, // 137: tutorial.ResDecorate.Code:type_name -> tutorial.RES_CODE 1, // 137: tutorial.ResDecorate.Code:type_name -> tutorial.RES_CODE
1, // 138: tutorial.ResDecorateAll.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 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, // 141: tutorial.ResMasterCard.Code:type_name -> tutorial.RES_CODE
1, // 142: tutorial.ResCardCollectReward.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 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, // 153: tutorial.ResRefuseCardExchange.Code:type_name -> tutorial.RES_CODE
1, // 154: tutorial.ResGetFriendCard.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 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 437, // 157: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo
438, // 158: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack 438, // 158: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack
637, // 159: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry 644, // 159: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry
638, // 160: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry 645, // 160: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry
437, // 161: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo 437, // 161: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo
442, // 162: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress 442, // 162: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress
437, // 163: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo 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, // 176: tutorial.ResGetSevenLoginReward.Code:type_name -> tutorial.RES_CODE
1, // 177: tutorial.ResGetMonthLoginReward.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 464, // 178: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo
639, // 179: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry 646, // 179: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry
640, // 180: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry 647, // 180: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry
1, // 181: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE 1, // 181: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE
1, // 182: tutorial.ResSelectLimitEvent.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 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 481, // 186: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple
483, // 187: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog 483, // 187: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog
486, // 188: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard 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 481, // 190: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple
1, // 191: tutorial.ResFriendIgnore.Code:type_name -> tutorial.RES_CODE 1, // 191: tutorial.ResFriendIgnore.Code:type_name -> tutorial.RES_CODE
481, // 192: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple 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 481, // 200: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple
1, // 201: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE 1, // 201: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE
1, // 202: tutorial.ResDelFriend.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 649, // 203: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry
643, // 204: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry 650, // 204: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry
437, // 205: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo 437, // 205: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo
515, // 206: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo 515, // 206: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo
1, // 207: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE 1, // 207: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE
1, // 208: tutorial.ResGetMailReward.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 1, // 209: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE
644, // 210: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry 651, // 210: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry
645, // 211: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry 652, // 211: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry
646, // 212: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry 653, // 212: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry
1, // 213: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE 1, // 213: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE
1, // 214: tutorial.ResBuyChessShop.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 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 437, // 217: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo
1, // 218: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE 1, // 218: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE
1, // 219: tutorial.ResPiggyBankReward.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, // 220: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE
1, // 221: tutorial.ResChampshipReward.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 1, // 222: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE
648, // 223: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry 655, // 223: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry
649, // 224: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry 656, // 224: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry
650, // 225: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry 657, // 225: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry
651, // 226: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry 658, // 226: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry
1, // 227: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE 1, // 227: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE
652, // 228: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry 659, // 228: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry
653, // 229: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry 660, // 229: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry
1, // 230: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE 1, // 230: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE
1, // 231: tutorial.ResMiningReward.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 464, // 233: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo
655, // 234: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry 662, // 234: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry
656, // 235: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry 663, // 235: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry
579, // 236: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent 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, // 238: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE
1, // 239: tutorial.ResGuessColorReward.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 586, // 240: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent
441, // 241: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask 1, // 241: tutorial.ResRaceStart.Code:type_name -> tutorial.RES_CODE
472, // 242: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent 1, // 242: tutorial.ResRaceReward.Code:type_name -> tutorial.RES_CODE
481, // 243: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple 440, // 243: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek
515, // 244: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo 441, // 244: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask
524, // 245: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop 472, // 245: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent
525, // 246: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop 481, // 246: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple
534, // 247: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo 515, // 247: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo
482, // 248: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank 524, // 248: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop
482, // 249: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank 525, // 249: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop
250, // [250:250] is the sub-list for method output_type 534, // 250: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo
250, // [250:250] is the sub-list for method input_type 482, // 251: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank
250, // [250:250] is the sub-list for extension type_name 482, // 252: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank
250, // [250:250] is the sub-list for extension extendee 253, // [253:253] is the sub-list for method output_type
0, // [0:250] is the sub-list for field type_name 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() } func init() { file_Gameapi_proto_init() }
@ -38162,7 +38591,7 @@ func file_Gameapi_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_Gameapi_proto_rawDesc, RawDescriptor: file_Gameapi_proto_rawDesc,
NumEnums: 4, NumEnums: 4,
NumMessages: 654, NumMessages: 661,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },