diff --git a/.gitignore b/.gitignore index a6745817..66d65180 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,5 @@ src/server/teLog/log.2024-11-28 src/server/logs/ga_log/*.log src/server/goroutine.prof src/server/heap_after.pb.gz +src/server/test/logs/* +src/server/test/teLog/* diff --git a/src/server/GoUtil/sliceUtil.go b/src/server/GoUtil/sliceUtil.go index 194db286..be29b52d 100644 --- a/src/server/GoUtil/sliceUtil.go +++ b/src/server/GoUtil/sliceUtil.go @@ -9,6 +9,18 @@ import ( "strings" ) +func IntSlice(d interface{}) []int { + if d == nil { + return []int{} + } + + // Type assertion with safety check + result, ok := d.([]int) + if !ok { + return []int{} + } + return result +} func IntToInt32(d []int) []int32 { r := make([]int32, 0, len(d)) for _, d := range d { diff --git a/src/server/benchmark_test.go b/src/server/benchmark_test.go index 8f6defb1..dfc02b0f 100644 --- a/src/server/benchmark_test.go +++ b/src/server/benchmark_test.go @@ -50,6 +50,44 @@ func BenchmarkGame(b *testing.B) { printMemUsage() } } + +func BenchmarkLog(b *testing.B) { + runtime.GOMAXPROCS(2) + t := game.G_getGameLogic() + for i := 0; i < 10000; i++ { + t.AddLog(&game.Log{ + EventName: "test_log", + Param: map[string]interface{}{ + "test_key": "test_value", + }, + }) + } + t.MLogManager.Close() +} + +func BenchmarkLog2(b *testing.B) { + // 准备耗时但不需要计入基准的初始化 + runtime.GOMAXPROCS(2) + // 假设有个函数 NewGameLogicForBenchmark() 创建全新、独立的对象 + b.ReportAllocs() + for i := 0; i < b.N; i++ { + // 每次迭代创建独立对象,避免副作用 + t := game.G_getGameLogic() + b.StartTimer() + // 被测操作:向日志管理器添加 1000 条日志 + for j := 0; j < 1000; j++ { + t.AddLog(&game.Log{ + EventName: "test_log", + Param: map[string]interface{}{ + "test_key": "test_value", + }, + }) + } + b.StopTimer() + t.MLogManager.Close() + } +} + func printMemUsage() { var m runtime.MemStats runtime.ReadMemStats(&m) diff --git a/src/server/conf/catnip/CatnipCfg.go b/src/server/conf/catnip/CatnipCfg.go index 7d44a585..ff388e17 100644 --- a/src/server/conf/catnip/CatnipCfg.go +++ b/src/server/conf/catnip/CatnipCfg.go @@ -34,10 +34,26 @@ func GetGameNum(Id int) int { return gamedata.GetIntValue(data, "PassNum") } -func GetJackpotItem(Mul int) (int, []*item.Item, int) { +func GetGameMaxProgress(Id int) int { + TemplateId := GetTemplateId(Id) + data, err := gamedata.GetData(CATNIP_GAME_CFG_NAME) + if err != nil { + return 0 + } + MaxProgress := 0 + for _, v := range data { + if gamedata.GetIntValue(v, "Template") != TemplateId { + continue + } + MaxProgress = max(MaxProgress, gamedata.GetIntValue(v, "Need")) + } + return MaxProgress +} + +func GetJackpotItem(Mul int) (int, []*item.Item, int, int) { data, err := gamedata.GetData(CATNIP_JACKPOT_CFG_NAME) if err != nil { - return 0, nil, 0 + return 0, nil, 0, 0 } JackpotType := GetJackpotType(Mul) r := make(map[int]int) @@ -48,13 +64,13 @@ func GetJackpotItem(Mul int) (int, []*item.Item, int) { } Id := GoUtil.RandMap(r) if Id == 0 { - return 0, nil, 0 + return 0, nil, 0, 0 } itemData, err := gamedata.GetDataByIntKey(CATNIP_JACKPOT_CFG_NAME, Id) if err != nil { - return 0, nil, 0 + return 0, nil, 0, 0 } - return Id, gamedata.GetItemList(itemData, "Items"), gamedata.GetIntValue(itemData, "Growth") + return Id, gamedata.GetItemList(itemData, "Items"), gamedata.GetIntValue(itemData, "Growth"), gamedata.GetIntValue(itemData, "FriendItems") } func GetJackpotType(Mul int) int { @@ -78,19 +94,22 @@ func GetTemplateId(Id int) int { return gamedata.GetIntValue(data, "Template") } -func GetProgressReward(Id int, Progress int) []*item.Item { +func GetProgressReward(Id int, Rewards []int, Progress int) ([]*item.Item, []int) { TemplateId := GetTemplateId(Id) - data, err := gamedata.GetDataByIntKey(CATNIP_GAME_CFG_NAME, Id) + data, err := gamedata.GetData(CATNIP_GAME_CFG_NAME) if err != nil { - return nil + return nil, nil } - - for _, v := range data { - if gamedata.GetIntValue(v, "Need") == Progress && gamedata.GetIntValue(v, "Template") == TemplateId { - return gamedata.GetItemList(v, "Items") + Items := []*item.Item{} + Ids := []int{} + for k, v := range data { + Id := GoUtil.Int(k) + if !GoUtil.InArray(Id, Rewards) && gamedata.GetIntValue(v, "Need") < Progress && gamedata.GetIntValue(v, "Template") == TemplateId { + Items = append(Items, gamedata.GetItemList(v, "Items")...) + Ids = append(Ids, GoUtil.Int(k)) } } - return nil + return Items, Ids } func GetItemCost(Id, Mul int) []*item.Item { diff --git a/src/server/conf/decorate/DecorateCfg.go b/src/server/conf/decorate/DecorateCfg.go index e1c5d707..41ffefb3 100644 --- a/src/server/conf/decorate/DecorateCfg.go +++ b/src/server/conf/decorate/DecorateCfg.go @@ -109,6 +109,15 @@ func GetDecoarteReward(Scene int, Lv int) []*item.Item { return nil } +func GetAreaReward(AreaId int) []*item.Item { + value, err := gamedata.GetDataByIntKey(DECORATE_AREA, AreaId) + if err != nil { + log.Debug("IndoorProgress GetDecoarteReward not found") + return nil + } + return gamedata.GetItemList(value, "Items") +} + // 获取一键装饰的解锁等级 func GetOneKeyDecorateUnlockLv() int { data, err := gamedata.GetDataByKey(DECORATE_CONST, "OneKey") diff --git a/src/server/conf/json.go b/src/server/conf/json.go index 64bd3ec7..aabca98f 100644 --- a/src/server/conf/json.go +++ b/src/server/conf/json.go @@ -64,7 +64,7 @@ var Server struct { func init() { filePath := "conf/server.json" if len(os.Args) == 2 { - if os.Args[1] != "" { + if os.Args[1] != "" && os.Args[1][0] != '-' { filePath = os.Args[1] } } diff --git a/src/server/conf/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index b9f6da87..ae3c8220 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -11,11 +11,9 @@ import ( ) const ( - CFG_NAME = "MergeData" - CONST_NAME = "MergeDataConst" - CFG_MERGE_EMIT = "MergeDataEmit" - CFG_MERGE_EMIT_TYPE = "MergeDataEmitType" - CFG_MERGE_COLOR = "MergeDataColor" + CFG_NAME = "MergeData" + CONST_NAME = "MergeDataConst" + CFG_MERGE_EMIT = "MergeDataEmit" // 棋子类型 CHESS_PRODUCT_MAIN_TYPE = 1 // 主产物 @@ -27,17 +25,6 @@ func init() { gamedata.InitCfg(CFG_NAME) gamedata.InitCfg(CONST_NAME) gamedata.InitCfg(CFG_MERGE_EMIT) - gamedata.InitCfg(CFG_MERGE_EMIT_TYPE) - gamedata.InitCfg(CFG_MERGE_COLOR) -} - -func GetEmitTypeProduce(EmitType string) []string { - data, err := gamedata.GetDataByKey(CFG_MERGE_EMIT_TYPE, EmitType) - if err != nil { - // log.Debug("GetEmitTypeProduce GetOne EmitType:%s not found", EmitType) - return []string{} - } - return strings.Split(gamedata.GetStringValue(data, "Produce"), ",") } func GetEmitTypeByColor(Color string) string { @@ -91,6 +78,7 @@ func GetOne(Id int) (*gamedata.MergeDataRecord, error) { Type: gamedata.ParseString(data["Type"]), Emit_Product: gamedata.ParseString(data["Emit_Product"]), CoolTime: gamedata.ParseInt(data["CoolTime"]), + Emit_Type: gamedata.ParseString(data["Emit_Type"]), }, nil } @@ -428,7 +416,7 @@ func DynamicLevRev(Lv int, EmitId int, Color string) int { func DynamicLev(Lv int, EmitId int, Color string) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { - log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + //log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return Lv } DynamicLv := gamedata.GetStringValue(data, "Dynamic") @@ -451,7 +439,7 @@ func DynamicLev(Lv int, EmitId int, Color string) int { func DynamicLev2(Lv int, EmitId int, Color1 string, Color2 string) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { - log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + //log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return Lv } DynamicLv := gamedata.GetStringValue(data, "Dynamic") @@ -486,7 +474,7 @@ func DynamicLev2(Lv int, EmitId int, Color1 string, Color2 string) int { func DynamicAdjust(EmitId int, Color string, EnergyMul int) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { - log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + //log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return 0 } DynamicLv := "" @@ -521,7 +509,7 @@ func DynamicAdjust(EmitId int, Color string, EnergyMul int) int { func GetAdjust(EmitId int, Color string, EnergyMul int) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { - log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + //log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return 0 } AdjustLv := "" @@ -591,24 +579,6 @@ func getColorProb(Emit_List string, Color string) float64 { return Prob } -func GetColorType(Color string) int { - data, err := gamedata.GetDataByKey(CFG_MERGE_COLOR, Color) - if err != nil { - log.Debug("GetColorType GetOne Color:%s not found", Color) - return 0 - } - Type := gamedata.GetStringValue(data, "Type") - switch Type { - case "main": - return CHESS_PRODUCT_MAIN_TYPE - case "secondary": - return CHESS_PRODUCT_SECONDARY_TYPE - case "sub": - return CHESS_PRODUCT_SUB_TYPE - } - return CHESS_PRODUCT_MAIN_TYPE -} - func GetMergeStar(MergeList []int) int { Star := 0 for _, v := range MergeList { diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index a23348f3..11cab5eb 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -1,6 +1,7 @@ package game import ( + "fmt" "server/GoUtil" activityCfg "server/conf/activity" catnipCfg "server/conf/catnip" @@ -17,10 +18,10 @@ import ( ) // 活动模块 登录 -func ActivityLogin(p *Player) { +func (p *Player) ActivityLogin() { ItemMod := p.PlayMod.getItemMod() // 挖矿 - ActivityId := GetActivityId(p, activity.ACT_TYPE_MINING) + ActivityId := p.GetActivityId(activity.ACT_TYPE_MINING) MiningMod := p.PlayMod.getMiningMod() OldId := MiningMod.Login(ActivityId) if OldId != 0 { @@ -28,11 +29,11 @@ func ActivityLogin(p *Player) { ItemNum := ItemMod.GetItem(ItemId) if ItemNum != 0 { ItemMod.AddItem(ItemId, -ItemNum) - SendActivityMail(p, ItemId, ItemNum, ActivityId, nil) + p.SendActivityMail(ItemId, ItemNum, ActivityId, nil) } } // 猜颜色 - ActivityId = GetActivityId(p, activity.ACT_TYPE_GUESS_COLOR) + ActivityId = p.GetActivityId(activity.ACT_TYPE_GUESS_COLOR) GuessColorMod := p.PlayMod.getGuessColorMod() OldId = GuessColorMod.Login(ActivityId) if OldId != 0 { @@ -40,12 +41,12 @@ func ActivityLogin(p *Player) { ItemNum := ItemMod.GetItem(ItemId) if ItemNum != 0 { ItemMod.AddItem(ItemId, -ItemNum) - SendActivityMail(p, ItemId, ItemNum, ActivityId, nil) + p.SendActivityMail(ItemId, ItemNum, ActivityId, nil) } } // 赛跑 - ActivityId = GetActivityId(p, activity.ACT_TYPE_RACE) + ActivityId = p.GetActivityId(activity.ACT_TYPE_RACE) RaceMod := p.PlayMod.getRaceMod() OldId = RaceMod.Login(ActivityId) if OldId != 0 { @@ -53,11 +54,11 @@ func ActivityLogin(p *Player) { ItemNum := ItemMod.GetItem(ItemId) if ItemNum != 0 { ItemMod.AddItem(ItemId, -ItemNum) - SendActivityMail(p, ItemId, ItemNum, ActivityId, nil) + p.SendActivityMail(ItemId, ItemNum, ActivityId, nil) } } // 猫草大作战 - ActivityId = GetActivityId(p, activity.ACT_TYPE_CATNIP) + ActivityId = p.GetActivityId(activity.ACT_TYPE_CATNIP) CatnipMod := p.PlayMod.getCatnipMod() OldId = CatnipMod.Login(ActivityId) if OldId != 0 { @@ -65,7 +66,7 @@ func ActivityLogin(p *Player) { } // 通行证 - ActivityId = GetActivityId(p, activity.ACT_TYPE_PASS) + ActivityId = p.GetActivityId(activity.ACT_TYPE_PASS) PassMod := p.PlayMod.getPassMod() OldId = PassMod.Login(ActivityId) if OldId != 0 { @@ -74,12 +75,13 @@ func ActivityLogin(p *Player) { RewardItems, _ := PassMod.GetRewardItems() if ItemNum != 0 { ItemMod.AddItem(ItemId, -ItemNum) - SendActivityMail(p, ItemId, ItemNum, ActivityId, RewardItems) + p.SendActivityMail(ItemId, ItemNum, ActivityId, RewardItems) } } } -func SendActivityMail(p *Player, ItemId, ItemNum, ActivityId int, RewardItems []*item.Item) { +// 发送活动邮件 +func (p *Player) SendActivityMail(ItemId, ItemNum, ActivityId int, RewardItems []*item.Item) { MailMod := p.PlayMod.getMailMod() ItemName, ItemNameEn := itemCfg.GetItemName(ItemId) ActivityTitle, ActivityTitleEn := activityCfg.GetActivityTitle(ActivityId) @@ -90,36 +92,37 @@ func SendActivityMail(p *Player, ItemId, ItemNum, ActivityId int, RewardItems [] } // 活动模块 零点更新 -func ActivityZeroUpdate(p *Player) { - ActivityLogin(p) - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_MINING) +func (p *Player) ActivityZeroUpdate() { + p.ActivityLogin() + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_MINING) if ActivityInfo != nil { MiningMod := p.PlayMod.getMiningMod() MiningMod.ZeroUpdate(ActivityInfo.Id) } - ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_GUESS_COLOR) + ActivityInfo = p.GetActivityInfo(activity.ACT_TYPE_GUESS_COLOR) if ActivityInfo != nil { GuessColorMod := p.PlayMod.getGuessColorMod() GuessColorMod.ZeroUpdate(ActivityInfo.Id) } - ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_RACE) + ActivityInfo = p.GetActivityInfo(activity.ACT_TYPE_RACE) if ActivityInfo != nil { RaceMod := p.PlayMod.getRaceMod() RaceMod.ZeroUpdate(ActivityInfo.Id) } - ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_PASS) + ActivityInfo = p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo != nil { PassMod := p.PlayMod.getPassMod() PassMod.ZeroUpdate(ActivityInfo.Id) } - ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_CATNIP) + ActivityInfo = p.GetActivityInfo(activity.ACT_TYPE_CATNIP) if ActivityInfo != nil { CatnipMod := p.PlayMod.getCatnipMod() CatnipMod.ZeroUpdate(ActivityInfo.Id) } } -func GetActivityInfo(p *Player, actType int) *ActivityInfo { +// 获取活动信息 +func (p *Player) GetActivityInfo(actType int) *ActivityInfo { for _, v := range p.activity { if v.Type == actType { return v @@ -128,7 +131,8 @@ func GetActivityInfo(p *Player, actType int) *ActivityInfo { return nil } -func GetActivityId(p *Player, actType int) int { +// 获取活动ID +func (p *Player) GetActivityId(actType int) int { for _, v := range p.activity { if v.Type == actType { return v.Id @@ -137,7 +141,8 @@ func GetActivityId(p *Player, actType int) int { return 0 } -func GetActivityInfoById(p *Player, Id int) *ActivityInfo { +// 根据活动ID获取活动信息 +func (p *Player) GetActivityInfoById(Id int) *ActivityInfo { for _, v := range p.activity { if v.Id == Id { return v @@ -146,8 +151,9 @@ func GetActivityInfoById(p *Player, Id int) *ActivityInfo { return nil } -func GetActivityStatus(p *Player, actType int) int { - ActivityInfo := GetActivityInfo(p, actType) +// 获取活动状态 +func (p *Player) GetActivityStatus(actType int) int { + ActivityInfo := p.GetActivityInfo(actType) if ActivityInfo == nil { return ACT_STATUS_NOT_START } @@ -161,12 +167,13 @@ func GetActivityStatus(p *Player, actType int) int { return ACT_STATUS_START } -func MiningBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_MINING) +// 挖矿活动数据返回 +func (p *Player) MiningBackData() { + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_MINING) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, activity.ACT_TYPE_MINING) + Status := p.GetActivityStatus(activity.ACT_TYPE_MINING) Template := miningCfg.GetTemplate(ActivityInfo.Id) MiningMod := p.PlayMod.getMiningMod() p.PushClientRes(&msg.ResMining{ @@ -181,13 +188,14 @@ func MiningBackData(p *Player) { }) } -func GuessColorBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_GUESS_COLOR) +// 猜颜色活动数据返回 +func (p *Player) GuessColorBackData() { + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_GUESS_COLOR) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, activity.ACT_TYPE_GUESS_COLOR) + Status := p.GetActivityStatus(activity.ACT_TYPE_GUESS_COLOR) GuessColorMod := p.PlayMod.getGuessColorMod() MapList := make([]*msg.GuessColorInfo, 0) for _, v := range GuessColorMod.MapList { @@ -212,12 +220,13 @@ func GuessColorBackData(p *Player) { }) } -func RaceBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_RACE) +// 赛跑活动数据返回 +func (p *Player) RaceBackData() { + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_RACE) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, activity.ACT_TYPE_RACE) + Status := p.GetActivityStatus(activity.ACT_TYPE_RACE) RaceMod := p.PlayMod.getRaceMod() Opponent := make([]*msg.Raceopponent, 0) for _, v := range RaceMod.Opponent { @@ -242,7 +251,8 @@ func RaceBackData(p *Player) { }) } -func RedBackData(p *Player) { +// 红点数据返回 +func (p *Player) RedBackData() { result := make(map[int32]int32) Now := GoUtil.Now() for _, v := range p.activity { @@ -253,12 +263,13 @@ func RedBackData(p *Player) { p.PushClientRes(&msg.ResActRed{Red: result}) } -func ActPassBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) +// 通行证活动数据返回 +func (p *Player) ActPassBackData() { + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, activity.ACT_TYPE_PASS) + Status := p.GetActivityStatus(activity.ACT_TYPE_PASS) Template := passCfg.GetTemplate(ActivityInfo.Id) PassMod := p.PlayMod.getPassMod() p.PushClientRes(&msg.ResActPass{ @@ -273,11 +284,12 @@ func ActPassBackData(p *Player) { }) } -func GetActivityItem(p *Player, ActType []int) []*item.Item { +// 获取活动道具 +func (p *Player) GetActivityItem(ActType []int) []*item.Item { Items := make([]*item.Item, 0) for _, v := range ActType { - Status := GetActivityStatus(p, v) - ActivityInfo := GetActivityInfo(p, v) + Status := p.GetActivityStatus(v) + ActivityInfo := p.GetActivityInfo(v) if ActivityInfo == nil { continue } @@ -304,24 +316,27 @@ func GetActivityItem(p *Player, ActType []int) []*item.Item { return Items } +// 猫草大作战活动数据返回 func (p *Player) CatnipBackData() { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { return } CatnipMod := p.PlayMod.getCatnipMod() - Status := GetActivityStatus(p, activity.ACT_TYPE_CATNIP) + Status := p.GetActivityStatus(activity.ACT_TYPE_CATNIP) if CatnipMod == nil { return } + FriendMod := p.PlayMod.getFriendMod() GameList := make([]*msg.CatnipGame, 0) for _, v := range CatnipMod.Game { GameInfo := &msg.CatnipGame{ - Id: int32(v.Id), - Progress: int32(v.Progress), - Status: int32(v.Status), - Reward: GoUtil.SliceIntToInt32(v.Reward), - Emoji: int32(v.EmojiId), + Id: int32(v.Id), + Progress: int32(v.Progress), + Status: int32(v.Status), + Reward: GoUtil.SliceIntToInt32(v.Reward), + Emoji: int32(v.EmojiId), + FriendProgress: int32(v.PartnerAdd), } if v.Partner != 0 { PlayerData := G_getGameLogic().GetResSimplePlayerByUid(v.Partner) @@ -329,38 +344,67 @@ func (p *Player) CatnipBackData() { GameInfo.Partner = PlayerData } } - InviteList := make([]*msg.CatnipInvite, 0) - for _, iv := range v.InviteList { - InviteList = append(InviteList, &msg.CatnipInvite{ - Uid: int64(iv.InviteId), - Time: int64(iv.Time), - }) - } - GameInfo.InviteList = InviteList - BeInvitedList := make([]*msg.CatnipInvite, 0) - for _, iv := range v.BeInvitedList { - BeInvitedList = append(BeInvitedList, &msg.CatnipInvite{ - Uid: int64(iv.InviteId), - Time: int64(iv.Time), - }) - } - GameInfo.BeInviteList = BeInvitedList + GameList = append(GameList, GameInfo) } + tmpData := make(map[int]*msg.CatnipInvite) + InviteList := make([]*msg.CatnipInvite, 0) + for Uid, Info := range CatnipMod.InviteList { + tmpData[Uid] = &msg.CatnipInvite{ + Uid: int64(Uid), + Time: Info.Time, + Type: 1, + } + } + for Uid, Info := range CatnipMod.BeInvitedList { + tmpData[Uid] = &msg.CatnipInvite{ + Uid: int64(Uid), + Time: Info.Time, + Type: 2, + } + } + + for Uid := range FriendMod.NewFriendList { + key := fmt.Sprintf("catnip_partner_%d", Uid) + Var := G_GameLogicPtr.VarMgr.GetExpireVar(key) + if len(GoUtil.IntSlice(Var.D)) >= 4 { + tmpData[Uid] = &msg.CatnipInvite{ + Uid: int64(Uid), + Type: 3, + } + continue + } + if _, ok := tmpData[Uid]; !ok { + tmpData[Uid] = &msg.CatnipInvite{ + Uid: int64(Uid), + Type: 0, + } + } + } + for _, v := range tmpData { + ResPlayerSimple := G_getGameLogic().GetResSimplePlayerByUid(int(v.Uid)) + if ResPlayerSimple != nil { + v.Player = ResPlayerSimple + } + InviteList = append(InviteList, v) + } + Template := catnipCfg.GetTemplateId(CatnipMod.Id) res := &msg.ResCatnip{ - Id: int32(CatnipMod.Id), - EndTime: int32(ActivityInfo.EndT), - Status: int32(Status), - Template: int32(Template), - GameList: GameList, - Multiply: int32(CatnipMod.Mul), + Id: int32(CatnipMod.Id), + EndTime: int32(ActivityInfo.EndT), + Status: int32(Status), + Template: int32(Template), + GameList: GameList, + Multiply: int32(CatnipMod.Mul), + FriendList: InviteList, } p.PushClientRes(res) } +// 设置猫草大作战游戏锁 func (p *Player) SetCatnipGameLock(Uid int, GameId int) error { - ActivityInfo := GetActivityInfoById(p, activity.ACT_TYPE_CATNIP) + ActivityInfo := p.GetActivityInfoById(activity.ACT_TYPE_CATNIP) return G_GameLogicPtr.SetDataSync(int(p.M_DwUin), VAR_OP_CATNIP_LOCK, CatnipLock{ Uid: int(p.M_DwUin), Partner: Uid, diff --git a/src/server/game/ChargeFunc.go b/src/server/game/ChargeFunc.go index 4b6cd5e3..b6223dc9 100644 --- a/src/server/game/ChargeFunc.go +++ b/src/server/game/ChargeFunc.go @@ -1,32 +1,40 @@ package game import ( + "encoding/json" + "fmt" + "os/exec" "server/GoUtil" + "server/MergeConst" + "server/conf" activityCfg "server/conf/activity" + chargeCfg "server/conf/charge" passCfg "server/conf/pass" + "server/db" "server/game/mod/activity" "server/game/mod/item" MsgMod "server/game/mod/msg" "server/game/mod/piggyBank" "server/game/mod/quest" - "server/msg" + proto "server/msg" "server/pkg/github.com/name5566/leaf/log" + "strings" ) -func Charge(p *Player, ChargeId int) { - ChargeFire(p, ChargeId) // 充值 - EndlessFire(p, ChargeId) // 无尽礼包 - PiggyBankFire(p, ChargeId) // 猪猪银行 - PlayroomFire(p, ChargeId) // 游乐场 - ActivityFire(p, ChargeId) // 活动礼包 - ADPetWorkFire(p, ChargeId) // 广告宠物工作 - PassFire(p, ChargeId) +func (p *Player) Charge(ChargeId int) { + p.ChargeFire(ChargeId) // 充值 + p.EndlessFire(ChargeId) // 无尽礼包 + p.PiggyBankFire(ChargeId) // 猪猪银行 + p.PlayroomFire(ChargeId) // 游乐场 + p.ActivityFire(ChargeId) // 活动礼包 + p.ADPetWorkFire(ChargeId) // 广告宠物工作 + p.PassFire(ChargeId) OrderMod := p.PlayMod.getOrderMod() OrderMod.SetIsCharge() // 设置订单模块为充值状态 p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PURCHASE, A: []interface{}{}}) } -func SendCharge(p *Player, d *ChargeExtra) { +func (p *Player) SendCharge(d *ChargeExtra) { G_GameLogicPtr.FriendMgrSend(&MsgMod.Msg{ From: int(p.M_DwUin), Type: MsgMod.HANDLE_TYPE_SEND_CHARGE, @@ -36,11 +44,11 @@ func SendCharge(p *Player, d *ChargeExtra) { }) } -func ADPetWorkFire(p *Player, ChargeId int) { +func (p *Player) ADPetWorkFire(ChargeId int) { ChargeMod := p.PlayMod.getChargeMod() Item := ChargeMod.FireAdReward(ChargeId) if Item != nil { - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_ActivityGift.String()) if err != nil { log.Debug("ChargeFire err : %s", err) return @@ -50,10 +58,10 @@ func ADPetWorkFire(p *Player, ChargeId int) { p.ChargeBackData() } -func ActivityFire(p *Player, ChargeId int) { +func (p *Player) ActivityFire(ChargeId int) { ActivityMod := p.PlayMod.getActivityMod() ActivityId := activityCfg.GetActivityGiftId(ChargeId) - ActivityInfo := GetActivityInfoById(p, ActivityId) + ActivityInfo := p.GetActivityInfoById(ActivityId) if ActivityInfo == nil { log.Debug("ActivityFire ActivityInfo nil : player id :%d, charge id:%d", p.M_DwUin, ChargeId) return @@ -66,7 +74,7 @@ func ActivityFire(p *Player, ChargeId int) { if Item == nil { return } - err = p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String()) + err = p.HandleItem(Item, proto.ITEM_POP_LABEL_ActivityGift.String()) if err != nil { log.Debug("ChargeFire err : %s", err) return @@ -76,12 +84,12 @@ func ActivityFire(p *Player, ChargeId int) { p.BackDataActivity() } -func PassFire(p *Player, ChargeId int) { - ActivityStatus := GetActivityStatus(p, activity.ACT_TYPE_PASS) +func (p *Player) PassFire(ChargeId int) { + ActivityStatus := p.GetActivityStatus(activity.ACT_TYPE_PASS) if ActivityStatus != ACT_STATUS_START { return } - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { return } @@ -98,7 +106,7 @@ func PassFire(p *Player, ChargeId int) { if len(Items) == 0 { return } - err := p.HandleItem(Items, msg.ITEM_POP_LABEL_PassCharge.String()) + err := p.HandleItem(Items, proto.ITEM_POP_LABEL_PassCharge.String()) if err != nil { log.Debug("PassFire err : %s", err) return @@ -106,13 +114,13 @@ func PassFire(p *Player, ChargeId int) { p.PlayMod.save() } -func PlayroomFire(p *Player, ChargeId int) { +func (p *Player) PlayroomFire(ChargeId int) { PlayroomMod := p.PlayMod.getPlayroomMod() Item := PlayroomMod.Fire(ChargeId) if Item == nil { return } - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Playroom.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_Playroom.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } @@ -122,17 +130,17 @@ func PlayroomFire(p *Player, ChargeId int) { p.PlayMod.save() } -func PiggyBankFire(p *Player, ChargeId int) { +func (p *Player) PiggyBankFire(ChargeId int) { PiggyBankMod := p.PlayMod.getPiggyBankMod() Item := PiggyBankMod.Fire(ChargeId) if Item == nil { return } - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_PiggyBank.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_PiggyBank.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } - LimitedTimePiggyBankTrigger(p) + p.LimitedTimePiggyBankTrigger() p.TeLog("piggy_bank_open", map[string]interface{}{ "piggy_bank_type": piggyBank.PIGGY_BANK_TYPE_CHARGE, "item_list": Item, @@ -143,13 +151,13 @@ func PiggyBankFire(p *Player, ChargeId int) { } // 处理玩家充值 -func ChargeFire(p *Player, ChargeId int) { +func (p *Player) ChargeFire(ChargeId int) { ChargeMod := p.PlayMod.getChargeMod() Item := ChargeMod.Fire(ChargeId) if Item == nil { return } - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Charge.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_Charge.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } @@ -157,23 +165,112 @@ func ChargeFire(p *Player, ChargeId int) { p.ChargeBackData() } -func ChargeItem(p *Player, ChargeId int) []*item.Item { +func (p *Player) ChargeItem(ChargeId int) []*item.Item { ChargeMod := p.PlayMod.getChargeMod() Item := ChargeMod.Fire(ChargeId) return Item } // 处理玩家充值 -func EndlessFire(p *Player, ChargeId int) { +func (p *Player) EndlessFire(ChargeId int) { EndlessMod := p.PlayMod.getEndlessMod() Item := EndlessMod.Fire(ChargeId) if Item == nil { return } - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Endless.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_Endless.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } p.PlayMod.save() p.PushClientRes(EndlessMod.BackData()) } + +// 创建订单 +func (p *Player) CreateOrderSn(req *proto.ReqCreateOrderSn) (string, error) { + Uid := int(p.M_DwUin) + OrderSn := GoUtil.CreateOrderSn(Uid) + + Price, Currency := chargeCfg.GetChargeInfo(int(req.ChargeId)) + Extra := &ChargeExtra{ + Type: int(req.Type), + Uid: req.Uid, + } + ExtraData, _ := json.Marshal(Extra) + err := db.CreateOrderSn(Uid, int(req.ChargeId), OrderSn, req.PlatForm, req.Channel, Price, Currency, string(ExtraData)) + if err != nil { + return "", err + } + return OrderSn, nil +} + +func (p *Player) GoogleVerify(OrderSn, ProduceId, Token string) (*db.SqlChargeOrderStruct, error) { + Order, err := db.GetPlayerChargeData(OrderSn) + if err != nil { + return nil, err + } + if Order.PayStatus == MergeConst.ORDER_STATUS_SHIP { + return nil, fmt.Errorf("订单已经发货") + } + if !conf.Server.GoogleVerify { + Order.PayStatus = MergeConst.ORDER_STATUS_PAY + return Order, nil + } + if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE { + return nil, fmt.Errorf("订单已经支付") + } + cmd := exec.Command(conf.Server.AppPath+"/script/verifyOrder", ProduceId, Token) + + // 获取命令的输出 + output, err := cmd.Output() + if err != nil { + return nil, err + } + // 将输出转换为字符串 + outputStr := string(output) + + // 替换单引号为双引号 + outputStr = strings.Replace(outputStr, "'", "\"", -1) + type VerifyData struct { + PurchaseState int `json:"purchaseState"` + DeveloperPayload string `json:"developerPayload"` + OrderId string `json:"orderId"` + ConsumptionState int `json:"consumptionState"` + } + r := &VerifyData{} + err = json.Unmarshal([]byte(outputStr), &r) + if err != nil { + log.Debug("output %s", string(output)) + return nil, err + } + _, err = db.GetPlayerPayChannelOrderId(r.OrderId) + if err == nil { + return nil, fmt.Errorf("订单已支付发货 param: %v", r) + } + // if r.DeveloperPayload != OrderSn { + // return nil, fmt.Errorf("订单号不匹配") + // } + if r.ConsumptionState != 1 { + return nil, fmt.Errorf("订单未消费") + } + Order.PayStatus = MergeConst.ORDER_STATUS_PAY + Order.PayChannelOrderId = r.OrderId + Order.PayTime = GoUtil.Now() + return Order, nil +} + +func (p *Player) CancelOrder(OrderSn string) error { + Order, err := db.GetPlayerChargeData(OrderSn) + if err != nil { + return err + } + if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE { + return fmt.Errorf("订单已支付") + } + Order.PayStatus = MergeConst.ORDER_STATUS_CANCEL + err = db.UpdatePlayerChargeData(Order) + if err != nil { + return err + } + return nil +} diff --git a/src/server/game/CompensationFunc.go b/src/server/game/CompensationFunc.go index 52bfa247..80d7f96e 100644 --- a/src/server/game/CompensationFunc.go +++ b/src/server/game/CompensationFunc.go @@ -1,5 +1,6 @@ package game +// 补偿脚本 import ( "server/game/mod/compensation" "server/game/mod/mail" diff --git a/src/server/game/FriendFunc.go b/src/server/game/FriendFunc.go new file mode 100644 index 00000000..dcc1fe67 --- /dev/null +++ b/src/server/game/FriendFunc.go @@ -0,0 +1,156 @@ +package game + +import ( + "server/GoUtil" + "server/db" + "server/game/mod/msg" + "server/pkg/github.com/name5566/leaf/log" + "sort" +) + +func (p *Player) GetVisitorPlayer() int { + PlayroomMod := p.PlayMod.getPlayroomMod() + VisitorList := PlayroomMod.GetVisitor() // 到访用户 + TodayVisitedUsers := PlayroomMod.GetTodayVisitedUsers() // 今日已互动用户 + FriendMod := p.PlayMod.getFriendMod() + type sortData struct { + Uid int + Time int64 + } + PlayerList := make([]sortData, 0) + PlayerList2 := make([]sortData, 0) + Now := GoUtil.Now() + /** + 排除当日玩家已对其发起过交互的用户 + 优先选择24小时内曾经与玩家进行过宠物交互的好友 + 若存在复数对象的情况下,优先选择交互发生时间与当前时间最近的好友 + 若不存在符合条件的用户,则选择24小时内曾经与玩家进行过宠物交互的陌生用户 + 若存在复数对象的情况下,优先选择交互发生时间与当前时间最近的用户 + 若不存在符合条件的用户,则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友 + 若不存在符合条件的用户,则依据以上用户推荐算法,选择一位随机推荐用户,并且在下次触发式订单完成时,不再排除已发起过交互的用户 + */ + for k, v := range VisitorList { + if GoUtil.InArray(k, TodayVisitedUsers) { + continue + } + if v.Time < Now-86400 { + continue + } + if FriendMod.CheckFriend(k) { + PlayerList = append(PlayerList, sortData{k, v.Time}) + } else { + PlayerList2 = append(PlayerList, sortData{k, v.Time}) + } + } + if len(PlayerList) != 0 { + sort.Slice(PlayerList, func(i, j int) bool { + return PlayerList[i].Time < PlayerList[j].Time + }) + return PlayerList[0].Uid + } + if len(PlayerList2) != 0 { + sort.Slice(PlayerList2, func(i, j int) bool { + return PlayerList2[i].Time < PlayerList2[j].Time + }) + return PlayerList2[0].Uid + } + // 若不存在符合条件的用户,则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友 + var recentFriendUid int + var recentLoginTime int64 = 0 + for uid := range FriendMod.GetFriendList() { + if uid == int(p.M_DwUin) { + continue + } + if GoUtil.InArray(uid, TodayVisitedUsers) { + continue + } + ps := G_GameLogicPtr.GetSimplePlayerByUid(uid) + if ps == nil { + continue + } + if GoUtil.Now()-ps.Loginout > 86400 { // 24小时内登录过 + continue + } + if ps.Loginout > recentLoginTime { + recentLoginTime = ps.Loginout + recentFriendUid = uid + } + } + if recentFriendUid != 0 { + return recentFriendUid + } + PlayerList3 := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) + PlayerList4 := make([]int, 0) + for _, v := range PlayerList3 { + if v.Uid == int(p.M_DwUin) { + continue + } + PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) + if PlayerSimpleData.Level < 15 { + continue + } + PlayerList4 = append(PlayerList4, v.Uid) + } + L := GoUtil.RandSliceNum(PlayerList4, 1) + if len(L) == 0 { + return 0 + } + return L[0] +} + +func GetRecommendPlayer(p *Player, Num int) []int { + PlayerList := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) + PlayerList1 := make([]int, 0) + FriendMod := p.PlayMod.getFriendMod() + for _, v := range PlayerList { + if v.Uid == int(p.M_DwUin) { + continue + } + if FriendMod.CheckSendApply(v.Uid) { + continue + } + if FriendMod.CheckFriend(v.Uid) { + continue + } + PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) + if GoUtil.Now()-PlayerSimpleData.Loginout > 86400 { + continue + } + if PlayerSimpleData.Level < 4 { + continue + } + PlayerList1 = append(PlayerList1, v.Uid) + } + if len(PlayerList1) == 0 { + for _, v := range PlayerList { + if v.Uid == int(p.M_DwUin) { + continue + } + PlayerList1 = append(PlayerList1, v.Uid) + } + } + return GoUtil.RandSliceNum(PlayerList1, Num) +} + +func GetUidByFaceBook(Fb string) (int, error) { + sqlStr := "SELECT dwUin FROM t_player_baseinfo WHERE FaceBookId = ?" + type Result struct { + Uid int `db:"dwUin"` + } + R := Result{} + err := db.SqlDb.Get(&R, sqlStr, Fb) + log.Debug("Fb :%s;Uid :%d", Fb, R.Uid) + return R.Uid, err +} + +func NotifyAllFriend(p *Player, m1 *msg.Msg) { + m := m1.Clone() + FriendMod := p.PlayMod.getFriendMod() + for k := range FriendMod.GetFriendList() { + if k == int(p.M_DwUin) { + continue + } + m.To = k + FriendMgrSend(m) + } +} diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index 12cd18ef..5816dac1 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -83,6 +83,7 @@ func (f *FriendMgr) Init() { f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_REFUSE, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_GROWTH, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_AGREE_DEL, f.sendToPlayer) + f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_SEND_EMOJI, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_KISS, f.sendToPlayerOnline) f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_GAME, f.sendToPlayer) diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 3fed32b5..3e13c142 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -75,7 +75,6 @@ type GameLogic struct { NotInitPlayer *Player Version int32 M_SvrGlobal db.SqlSvrGlobalStruct - MHttpManager *HttpManager SeverInfo *ServerInfo MLogManager *LogMgr // 日志管理器 @@ -655,7 +654,7 @@ func (ad *GameLogic) ReplaceExistPlayerAndAgent(a gate.Agent, player *Player) er if ok { Timer.Stop() } - SyncFriendMsg(player) + player.SyncFriendMsg() log.Debug("player %d 重连", player.M_DwUin) return nil } @@ -761,9 +760,9 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqCreatePetOrder", ReqCreatePetOrder) // 生成消耗品订单 //装饰 - RegisterMsgProcessFunc("ReqDecorate", ReqDecorate) // 装饰 - RegisterMsgProcessFunc("ReqDecorateAll", ReqDecorateAll) // 装饰全部 - RegisterMsgProcessFunc("ReqDecorateReward", ReqDecorateReward) // 装饰全部 + RegisterMsgProcessFunc("ReqDecorate", ReqDecorate) // 装饰 + RegisterMsgProcessFunc("ReqDecorateAll", ReqDecorateAll) // 装饰全部 + RegisterMsgProcessFunc("ReqAreaReward", ReqAreaReward) // 章节奖励 //Gm命令 RegisterMsgProcessFunc("ReqGmCommand", ReqGmCommand) // Gm命令 @@ -949,15 +948,6 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqChargeReceive", ReqChargeReceive) // 礼包回复邮件 } -func (ad *GameLogic) CreateHttpManager() { - - go func() { - ad.MHttpManager = new(HttpManager) - ad.MHttpManager.InitRounter() - }() - -} - func (ad *GameLogic) CreateLogManager() { ad.MLogManager = new(LogMgr) ad.MLogManager.InitManager() diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index 2e8cd6d7..c19f15d7 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -144,7 +144,7 @@ func ReqGmCommand_(player *Player, Command string) error { "CreateTime": GoUtil.Now(), "PayTime": GoUtil.Now(), }) - Charge(player, ChargeId) + player.Charge(ChargeId) case "AddPart": ChessMod := player.PlayMod.getChessMod() ChessMod.PartBag.List[1505] = chess.PartBagGrid{ @@ -183,7 +183,7 @@ func ReqGmCommand_(player *Player, Command string) error { AddTime: Now, } } - BackUserInfo(player) + player.BackUserInfo() case "resetFace": FaceMod := player.PlayMod.getFaceMod() FaceMod.List = nil @@ -283,25 +283,30 @@ func ReqGmCommand_(player *Player, Command string) error { case "miningReload": MiningMod := player.PlayMod.getMiningMod() MiningMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_MINING) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_MINING) MiningMod.ZeroUpdate(ActivityInfo.Id) - MiningBackData(player) + player.MiningBackData() + case "catnipReload": + CatnipMod := player.PlayMod.getCatnipMod() + CatnipMod.ZeroUpdate(-1) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_CATNIP) + CatnipMod.ZeroUpdate(ActivityInfo.Id) case "guessColorReload": GuessColorMod := player.PlayMod.getGuessColorMod() GuessColorMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_GUESS_COLOR) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_GUESS_COLOR) GuessColorMod.ZeroUpdate(ActivityInfo.Id) - GuessColorBackData(player) + player.GuessColorBackData() case "raceReload": RaceMod := player.PlayMod.getRaceMod() RaceMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_RACE) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_RACE) RaceMod.ZeroUpdate(ActivityInfo.Id) - RaceBackData(player) + player.RaceBackData() case "raceAdd": RaceMod := player.PlayMod.getRaceMod() RaceMod.AddCoin(100) - RaceBackData(player) + player.RaceBackData() case "playroomReset": PlayroomMod := playroom.PlayroomMod{} PlayroomMod.InitData() @@ -326,7 +331,7 @@ func ReqGmCommand_(player *Player, Command string) error { Part := playroomCfg.GetDressPart(v) PlayroomMod.UnlockDress(Part, v) } - PlayroomBackData(player) + player.PlayroomBackData() case "playroomAir": PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.NewPetAir = make(map[int]*playroom.PetAirInfo, 0) @@ -334,7 +339,7 @@ func ReqGmCommand_(player *Player, Command string) error { for _, v := range AirList { PlayroomMod.UnlockPetAir(v) } - PlayroomBackData(player) + player.PlayroomBackData() case "resetRetire": ChessMod := player.PlayMod.getChessMod() ChessMod.Retire = make(map[string]int) @@ -347,11 +352,11 @@ func ReqGmCommand_(player *Player, Command string) error { PlayroomMod := player.PlayMod.getPlayroomMod() Num, _ := strconv.Atoi(arg[1]) PlayroomMod.RoomPoint += Num - PlayroomBackData(player) + player.PlayroomBackData() case "resetPlayroomUnlock": PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.UnlockList = make(map[int]int64) - PlayroomBackData(player) + player.PlayroomBackData() case "addChip": PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.AddChip(100100001, 1, 0) @@ -373,8 +378,8 @@ func ReqGmCommand_(player *Player, Command string) error { FriendMod.Id = 0 FriendMod.Log = make([]*friend.LogInfo, 0) FriendMod.InitData() - FriendListBackData(player) - FriendLogBackData(player) + player.FriendListBackData() + player.FriendLogBackData() case "addFriend": FriendMod := player.PlayMod.getFriendMod() Uid, _ := strconv.Atoi(arg[1]) @@ -400,7 +405,7 @@ func ReqGmCommand_(player *Player, Command string) error { case "comfortOrder": BaseMod := player.PlayMod.getBaseMod() BaseMod.LogoutTime = GoUtil.Now() - 7*86400 - TriggerComfortOrder(player) + player.TriggerComfortOrder() player.PushClientRes(player.PlayMod.getOrderMod().BackData()) case "resetGuide": GuildMod := player.PlayMod.getGuideMod() @@ -476,7 +481,7 @@ func ReqGmCommand_(player *Player, Command string) error { case "resetNpc": FriendMod := player.PlayMod.getFriendMod() FriendMod.Npc = []int{} - FriendListBackData(player) + player.FriendListBackData() case "recoverUser": file, err := os.OpenFile(conf.Server.GameConfPath+"user.info", os.O_RDWR|os.O_CREATE, 0666) if err != nil { @@ -543,11 +548,11 @@ func ReqGmCommand_(player *Player, Command string) error { player.ChargeBackData() PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.WeeklyDiscount = make(map[int]int) - PlayroomBackData(player) + player.PlayroomBackData() case "resetCode": BaseMod := player.PlayMod.getBaseMod() BaseMod.AddCode = fmt.Sprintf("MMM-%s-%s", "156", GoUtil.UniqueStringFromInt(int(BaseMod.Uid))) - BackUserInfo(player) + player.BackUserInfo() default: return fmt.Errorf("Player %d ReqGmCommand:%v not found", player.M_DwUin, arg) } diff --git a/src/server/game/HttpSvr.go b/src/server/game/HttpSvr.go deleted file mode 100644 index 205379df..00000000 --- a/src/server/game/HttpSvr.go +++ /dev/null @@ -1,60 +0,0 @@ -package game - -import ( - "fmt" - "net/http" - "server/conf" - - // "server/msg" - - "github.com/gorilla/mux" -) - -type HttpManager struct { - Rounter *mux.Router -} - -func (p *HttpManager) InitRounter() { - p.Rounter = mux.NewRouter() - p.InitFriendRouter() - p.InitPlayerProfileInfo() - http.ListenAndServe(conf.Server.HttpPort, p.Rounter) -} - -func (p *HttpManager) InitFriendRouter() { - bs := p.Rounter.PathPrefix("/Friend").Subrouter() - bs.HandleFunc("/Add/{SenderId}/{ReceiveId}", p.AddFriend) - bs.HandleFunc("/Del/{SenderId}/{ReceiveId}", p.DeleteFriend) -} - -func (p *HttpManager) InitPlayerProfileInfo() { - bs := p.Rounter.PathPrefix("/Profile").Subrouter() - bs.HandleFunc("/GetBrief/{Id}", p.GetPlayerProfileInfo) -} - -func (p *HttpManager) GetPlayerProfileInfo(w http.ResponseWriter, r *http.Request) { - -} - -func (p *HttpManager) AddFriend(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - SenderId, ok := vars["SenderId"] - if ok { - fmt.Println("AddFreind SenderId:" + SenderId) - } - - ReceiveId, ok1 := vars["ReceiveId"] - if ok1 { - fmt.Println("AddFreind ReceiveId:" + ReceiveId) - } -} - -func (p *HttpManager) DeleteFriend(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - id, ok := vars["id"] - if !ok { - fmt.Println("id is missing in parameters") - } - fmt.Println(`id := `, id) - -} diff --git a/src/server/game/LimitedTimeTrigger.go b/src/server/game/LimitedTimeTrigger.go index 1e853efe..6dd6cf8d 100644 --- a/src/server/game/LimitedTimeTrigger.go +++ b/src/server/game/LimitedTimeTrigger.go @@ -16,7 +16,7 @@ import ( ) // 限时事件触发器 -func LimitedTimeEventTrigger(p *Player, AddEventId int) { +func (p *Player) LimitedTimeEventTrigger(AddEventId int) { Lv := p.GetPlayerBaseMod().GetLevel() EndTime, TimeoutEvent, AddEvent := p.PlayMod.getLimitedTimeEventMod().Trigger(Lv) remainingTime := GoUtil.NextHourRemain() @@ -28,7 +28,7 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) { p.CallEvent(time.Duration(EndTime)*time.Second, func() { p.lock.Lock() defer p.lock.Unlock() - LimitedTimeEventTrigger(p, 0) + p.LimitedTimeEventTrigger(0) p.SendClientRes() }, "LimitedTimeEvent") } @@ -62,7 +62,7 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) { p.PlayMod.getCardMod().ResetCardFestival() case limitedTimeEvent.EVENT_TYPE_GOLDCARD_EX: p.PlayMod.getFriendMod().ResetGoldCardEx() - LimitedTimeCardTrigger(p) + p.LimitedTimeCardTrigger() } } @@ -92,13 +92,13 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) { } // 限时猪猪存钱罐触发器 -func LimitedTimePiggyBankTrigger(p *Player) { +func (p *Player) LimitedTimePiggyBankTrigger() { Remain := p.PlayMod.getPiggyBankMod().TimeOut() if Remain > 0 { p.CallEvent(time.Duration(Remain)*time.Second, func() { p.lock.Lock() defer p.lock.Unlock() - LimitedTimePiggyBankTrigger(p) + p.LimitedTimePiggyBankTrigger() p.SendClientRes() }, "PiggyBank") } @@ -106,7 +106,7 @@ func LimitedTimePiggyBankTrigger(p *Player) { } // 限时卡牌触发器 -func LimitedTimeCardTrigger(p *Player) { +func (p *Player) LimitedTimeCardTrigger() { FriendMod := p.PlayMod.getFriendMod() CardMod := p.PlayMod.getCardMod() Now := GoUtil.Now() @@ -140,21 +140,21 @@ func LimitedTimeCardTrigger(p *Player) { p.CallEvent(time.Duration(EndTime-Now)*time.Second, func() { p.lock.Lock() defer p.lock.Unlock() - LimitedTimeCardTrigger(p) + p.LimitedTimeCardTrigger() p.SendClientRes() }, "LimitedTimeCard") } } -func LimitedTimePlayroomTrigger(p *Player) { +func (p *Player) LimitedTimePlayroomTrigger() { PlayroomMod := p.PlayMod.getPlayroomMod() for k, v := range PlayroomMod.Physiology { if v.Time > 0 { - LimitedTimePlayroomTrigger_(p, k) + p.LimitedTimePlayroomTrigger_(k) } } } -func LimitedTimePlayroomTrigger_(p *Player, Id int) { +func (p *Player) LimitedTimePlayroomTrigger_(Id int) { PlayroomMod := p.PlayMod.getPlayroomMod() Physiology := PlayroomMod.GetPhysiology(Id) if Physiology == nil { @@ -183,7 +183,7 @@ func LimitedTimePlayroomTrigger_(p *Player, Id int) { p.CallEvent(time.Duration(NextSecond)*time.Second, func() { p.lock.Lock() defer p.lock.Unlock() - LimitedTimePlayroomTrigger_(p, Id) + p.LimitedTimePlayroomTrigger_(Id) p.SendClientRes() }, fmt.Sprintf("Playroom_%d", Id)) } @@ -223,7 +223,7 @@ func LimitedTimePlayroomWorkTrigger(p *Player) { if EndTime > 0 && EndTime <= Now { PlayroomMod.ResetWork() p.PlayMod.save() - PlayroomBackData(p) + p.PlayroomBackData() p.SendClientRes() return } diff --git a/src/server/game/LogMgr.go b/src/server/game/LogMgr.go index 0cf459ad..0f216af1 100644 --- a/src/server/game/LogMgr.go +++ b/src/server/game/LogMgr.go @@ -6,6 +6,7 @@ import ( kafkaMiddleware "server/middleware/kafka" "server/pkg/github.com/name5566/leaf/log" "sync" + "sync/atomic" "time" ) @@ -18,7 +19,7 @@ const ( PLAYROOM_LOST = "playroom_lost" // 增大缓冲:针对 ~1000 条/s,保留足够秒数的缓冲(可按需调整) LOG_LENGTH = 100000 - WORKER_COUNT = 16 + WORKER_COUNT = 500 ) type LogMgr struct { @@ -40,20 +41,35 @@ type Log struct { } func (L *LogMgr) InitManager() { - // 初始化通道与启动 worker 循环写入 kafka + // 初始化通道 L.L = make(chan *Log, LOG_LENGTH) - // 启动 worker(允许基于 CPU 动态扩展) - workerCount := WORKER_COUNT - if cpuWorkers := runtime.NumCPU() * 2; cpuWorkers > workerCount { - workerCount = cpuWorkers + // 动态协程池参数 + maxWorkers := WORKER_COUNT + if cpuWorkers := runtime.NumCPU() * 2; cpuWorkers > maxWorkers { + maxWorkers = cpuWorkers } - for i := 0; i < workerCount; i++ { + minWorkers := 100 + idleTimeout := 500 * time.Millisecond + + var activeWorkers int32 + + // worker 启动函数 + spawnWorker := func() { L.wg.Add(1) + atomic.AddInt32(&activeWorkers, 1) go func() { defer L.wg.Done() - for v := range L.L { - // 如果 kafka 未就绪,尝试重入队列并等待一小段时间(缩短等待) + defer atomic.AddInt32(&activeWorkers, -1) + + for { + // 首先阻塞等待一个任务(若 channel 关闭则退出) + v, ok := <-L.L + if !ok { + return + } + // 处理消息(与原来逻辑一致) + value, _ := json.Marshal(v) if kafkaMiddleware.KafkaMod == nil { // 尝试非阻塞重入,否则丢弃最旧再试一次 select { @@ -69,33 +85,115 @@ func (L *LogMgr) InitManager() { } } time.Sleep(10 * time.Millisecond) - continue - } - - value, _ := json.Marshal(v) - if err := kafkaMiddleware.SendMsg([]byte(v.EventName), value); err != nil { - log.Debug("kafka log send err:%s", err.Error()) - // 发送失败,尝试将消息放回通道(非阻塞策略) - select { - case L.L <- v: - default: - // 通道满,丢弃最旧一条后再尝试一次入队 - select { - case <-L.L: - default: - } + } else { + if err := kafkaMiddleware.SendMsg([]byte(v.EventName), value); err != nil { + log.Debug("kafka log send err:%s", err.Error()) select { case L.L <- v: default: - // 放不下则丢弃 + select { + case <-L.L: + default: + } + select { + case L.L <- v: + default: + } } + time.Sleep(10 * time.Millisecond) + } + } + + // 快速循环处理后续可用任务,若超时则退出该 worker(回收) + timer := time.NewTimer(idleTimeout) + for { + select { + case v, ok := <-L.L: + if !ok { + if !timer.Stop() { + <-timer.C + } + return + } + // 处理消息 + value, _ := json.Marshal(v) + if kafkaMiddleware.KafkaMod == nil { + select { + case L.L <- v: + default: + select { + case <-L.L: + default: + } + select { + case L.L <- v: + default: + } + } + time.Sleep(10 * time.Millisecond) + } else { + if err := kafkaMiddleware.SendMsg([]byte(v.EventName), value); err != nil { + log.Debug("kafka log send err:%s", err.Error()) + select { + case L.L <- v: + default: + select { + case <-L.L: + default: + } + select { + case L.L <- v: + default: + } + } + time.Sleep(10 * time.Millisecond) + } + } + // 重置定时器以继续快速处理 + if !timer.Stop() { + <-timer.C + } + timer.Reset(idleTimeout) + case <-timer.C: + timer.Stop() + // 空闲超时,退出该 worker + return } - // 缩短退避,避免快速循环阻塞 - time.Sleep(10 * time.Millisecond) } } }() } + + // 启动初始最小 worker 数量 + for i := 0; i < minWorkers; i++ { + spawnWorker() + } + + // 监督器:动态根据队列长度扩展 worker,但不超过 maxWorkers + go func() { + ticker := time.NewTicker(200 * time.Millisecond) + defer ticker.Stop() + for range ticker.C { + L.Lock.Lock() + closing := L.closing + L.Lock.Unlock() + if closing { + return + } + backlog := len(L.L) + active := int(atomic.LoadInt32(&activeWorkers)) + if backlog > active && active < maxWorkers { + toSpawn := backlog - active + remain := maxWorkers - active + if toSpawn > remain { + toSpawn = remain + } + for i := 0; i < toSpawn; i++ { + spawnWorker() + } + } + } + }() } func (L *LogMgr) AddLog(logs *Log) { diff --git a/src/server/game/PlayerFunc.go b/src/server/game/MessageHandler.go similarity index 74% rename from src/server/game/PlayerFunc.go rename to src/server/game/MessageHandler.go index b083dac2..ff25d17b 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/MessageHandler.go @@ -1,15 +1,11 @@ package game import ( - "encoding/json" "fmt" - "os/exec" "server/GoUtil" - "server/MergeConst" mergeCluster "server/cluster" - "server/conf" cardCfg "server/conf/card" - chargeCfg "server/conf/charge" + catnipCfg "server/conf/catnip" decorateCfg "server/conf/decorate" itemCfg "server/conf/item" limitedTimeEventCfg "server/conf/limitedTimeEvent" @@ -18,7 +14,6 @@ import ( orderCfg "server/conf/order" playroomCfg "server/conf/playroom" userCfg "server/conf/user" - "server/db" "server/game/mod/activity" "server/game/mod/card" "server/game/mod/friend" @@ -31,11 +26,10 @@ import ( proto "server/msg" "server/pkg/github.com/name5566/leaf/log" "sort" - "strings" ) // 处理玩家异步请求 -func HandleMsg(p *Player, m *msg.Msg) { +func (p *Player) HandleMsg(m *msg.Msg) { p.lock.Lock() //加锁 backup := p.BackUp() // 备份当前的 Player 值 defer func() { @@ -46,7 +40,7 @@ func HandleMsg(p *Player, m *msg.Msg) { p.lock.Unlock() //解锁 }() p.args = make(map[string]interface{}) - err := handle(p, m) + err := p.handle(m) if err != nil { log.Debug("uid : %d, err : %s", p.M_DwUin, err) p.Recover(backup) //还原Player的数据 @@ -57,10 +51,72 @@ func HandleMsg(p *Player, m *msg.Msg) { } // 消息处理 -func handle(p *Player, m *msg.Msg) error { +func (p *Player) handle(m *msg.Msg) error { switch m.Type { - case msg.HANDLE_TYPE_DEL, msg.HANDLE_TYPE_APPLY, msg.HADNLE_TYPE_AGREE, msg.HANDLE_TYPE_REQ_CARD, msg.HANDLE_TYPE_REFUSE: - return HandleFriendMsg(p, m) + case msg.HANDLE_TYPE_APPLY: // 好友申请 + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AddFriendApply(m.From) + p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT) + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.ResFriendApplyNotify{ + Player: PlayerSimpleData, + Type: friend.FRIEND_NOTIFY_APPLY, + Time: int32(GoUtil.Now()), + }) + case msg.HADNLE_TYPE_AGREE: // 同意好友申请 + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AgreeApply(m.From) + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.ResFriendApplyNotify{ + Player: PlayerSimpleData, + Type: friend.FRIEND_NOTIFY_AGREE, + Time: int32(GoUtil.Now()), + }) + PlayroomMod := p.PlayMod.getPlayroomMod() + BaseMod := p.PlayMod.getBaseMod() + PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) + p.PlayroomBackData() + p.TeLog("friend_add", map[string]interface{}{ + "player_id": m.From, + "add_type": "接受申请", + }) + p.AddLog(m.From, friend.LOG_TYPE_FRIEND_BECOME, "", m.SendT) + case msg.HANDLE_TYPE_DEL: // 删除好友 + FriendMod := p.PlayMod.getFriendMod() + FriendMod.DelFriend(m.From) + p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT) + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.ResFriendApplyNotify{ + Player: PlayerSimpleData, + Type: friend.FRIEND_NOTIFY_DEL, + Time: int32(GoUtil.Now()), + }) + case msg.HANDLE_TYPE_REFUSE: // 拒绝好友申请 + FriendMod := p.PlayMod.getFriendMod() + FriendMod.RefuseApply(m.From) + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.ResFriendApplyNotify{ + Player: PlayerSimpleData, + Type: friend.FRIEND_NOTIFY_REFUSE, + Time: int32(GoUtil.Now()), + }) + case msg.HANDLE_TYPE_REQ_CARD: // 卡牌申请 + FriendMod := p.PlayMod.getFriendMod() + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } + FriendMod.SetCardInfo(&CardInfo) + p.PushClientRes( + &proto.NotifyFriendCard{ + Info: GetCardInfoMsg(&CardInfo), + }, + ) + case msg.HANDLE_TYPE_FACEBOOK_UNBIND: // facebook解绑 + FaceMod := p.PlayMod.getFaceMod() + if FaceMod.SetId == 0 { + FaceMod.SetId = 2 + } case msg.SERVER_ZERO_UPDATE: p.ZeroUpdate(nil) case msg.SERVER_NOON_UPDATE: @@ -74,7 +130,7 @@ func handle(p *Player, m *msg.Msg) error { PlayroomMod := p.PlayMod.getPlayroomMod() BaseMod := p.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(p) + p.PlayroomBackData() p.TeLog("friend_add", map[string]interface{}{ "player_id": m.From, "add_type": "发起申请", @@ -114,7 +170,10 @@ func handle(p *Player, m *msg.Msg) error { p.PushClientRes(CardMod.NotifyCard()) p.PushClientRes(CardMod.NotifyTimes()) case msg.HANDLE_TYPE_REG_CARD_FINISH, msg.HANDLE_TYPE_AGREE_CARD_FAIL: // B收到A的请求已结束 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } FriendMod := p.PlayMod.getFriendMod() FriendMod.DelCardInfo(CardInfo.Id) p.PushClientRes( @@ -124,7 +183,10 @@ func handle(p *Player, m *msg.Msg) error { ) p.PlayMod.save() case msg.HANDLE_TYPE_AGREE_CARD: // A收到B同意卡牌 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } CardMod := p.PlayMod.getCardMod() OtherUid, err := CardMod.DelRequestCard(CardInfo.BUid) FriendMod := p.PlayMod.getFriendMod() @@ -149,7 +211,10 @@ func handle(p *Player, m *msg.Msg) error { ) p.PushClientRes(CardMod.NotifyTimes()) case msg.HANDLE_TYPE_REG_CARD_REFUSE: // A收到B拒绝索要卡牌 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } CardMod := p.PlayMod.getCardMod() CardMod.DelRequestCard(CardInfo.BUid) CardMod.AddReqTimes(CardInfo.Id, CardInfo.StartTime) @@ -158,7 +223,10 @@ func handle(p *Player, m *msg.Msg) error { p.PushClientRes(CardMod.NotifyCard()) case msg.HANDLE_TYPE_EX_CARD: // B收到A置换卡牌 FriendMod := p.PlayMod.getFriendMod() - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } FriendMod.SetCardInfo(&CardInfo) FriendMod.Interact(CardInfo.AUid, friend.INTERACT_TYPE_EX, m.SendT) p.PlayMod.save() @@ -169,7 +237,10 @@ func handle(p *Player, m *msg.Msg) error { ) case msg.HANDLE_TYPE_SELECT_EX_CARD: // A收到B选择卡牌进行置换 FriendMod := p.PlayMod.getFriendMod() - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } FriendMod.SetCardInfo(&CardInfo) // p.AddLog(int(p.M_DwUin), friend.LOG_TYPE_CARD_SELECT_GET, fmt.Sprintf("%d", CardInfo.CardId)) p.PlayMod.save() @@ -179,7 +250,10 @@ func handle(p *Player, m *msg.Msg) error { }, ) case msg.HANDLE_TYPE_ARGREE_EX_CARD: // B收到A同意置换卡牌 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } FriendMod := p.PlayMod.getFriendMod() FriendMod.SetCardInfo(&CardInfo) p.PushClientRes( @@ -190,7 +264,10 @@ func handle(p *Player, m *msg.Msg) error { p.PlayMod.save() case msg.HANDLE_TYPE_REFUSE_SELECT_CARD: // A收到B拒绝置换卡牌 CardMod := p.PlayMod.getCardMod() - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } CardMod.AddExTimes(&CardInfo) p.AddCard(CardInfo.CardId) CardMod.DelExCard(&CardInfo) @@ -199,7 +276,10 @@ func handle(p *Player, m *msg.Msg) error { p.PlayMod.save() case msg.HANDLE_TYPE_REFUSE_EX_CARD: // B收到A拒绝置换卡牌 CardMod := p.PlayMod.getCardMod() - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } p.AddCard(CardInfo.ExId) FriendMod := p.PlayMod.getFriendMod() FriendMod.DelCardInfo(CardInfo.Id) @@ -209,9 +289,9 @@ func handle(p *Player, m *msg.Msg) error { p.PlayMod.save() p.PushClientRes(CardMod.NotifyCard()) case msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY: // # 锦标赛排名变动通知 - BackChampship(p) + p.BackChampship() case msg.HANDLE_TYPE_CHAMPSHIP_RESULT: // # 好友锦标赛结果 - Extra := m.Extra.([]int) + Extra := GoUtil.IntSlice(m.Extra) p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CHAMPSHIP, fmt.Sprintf("%d_%d", Extra[0], Extra[1]), m.SendT) case msg.HANDLE_TYPE_TREASURE_RESULT: // # 好友宝藏结果 //p.AddLog(m.From, friend.LOG_TYPE_TREASURE, fmt.Sprintf("%d", m.Extra.(int)), m.SendT) @@ -265,9 +345,9 @@ func handle(p *Player, m *msg.Msg) error { p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_LOSE, fmt.Sprintf("%d", Emoji), m.SendT) FriendMod.Interact(m.From, friend.INTERACT_TYPE_VISIT, m.SendT) case msg.FRIEND_TREASURE_HANDLE: // # 好友宝藏 - Items := make([]*item.Item, 0) - if m.Extra != nil { - Items = m.Extra.([]*item.Item) + Items, ok := m.Extra.([]*item.Item) + if !ok { + Items = []*item.Item{} } p.AddLog(m.From, friend.LOG_TYPE_TREASURE_HELP, "", m.SendT) p.HandleItem(Items, proto.ITEM_POP_LABEL_Friendtreasure.String()) @@ -285,21 +365,21 @@ func handle(p *Player, m *msg.Msg) error { FriendMod.Interact(m.From, friend.INTERACT_TYPE_UPVOTE, m.SendT) p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK_UPVOTE, "", m.SendT) case msg.HANDLE_TYPE_SEND_CHARGE: // 收到好友赠送的充值礼包 - C := &ChargeExtra{} - if m.Extra != nil { - C = m.Extra.(*ChargeExtra) + C, ok := m.Extra.(*ChargeExtra) + if !ok { + C = &ChargeExtra{} } PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) MailMod := p.PlayMod.getMailMod() mt, mc, mt_en, mc_en := mailCfg.GetChargeSendMail(PlayerSimpleData.Name) - Items := ChargeItem(p, C.ChargeId) + Items := p.ChargeItem(C.ChargeId) MailId := MailMod.Send(mt, "", mc, mt_en, "", mc_en, Items, mail.MAIL_TYPE_GIFT) p.AddLog(m.From, friend.LOG_TYPE_CHARGE_SEND, fmt.Sprintf("%d", MailId), m.SendT) p.PushClientRes(MailMod.NotifyMail(MailId)) case msg.HANDLE_TYPE_CHARGE_RECEIVE: // 收到好友的感谢信 - Content := "" - if m.Extra != nil { - Content = m.Extra.(string) + Content, ok := m.Extra.(string) + if !ok { + Content = "" } PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) MailMod := p.PlayMod.getMailMod() @@ -326,63 +406,77 @@ func handle(p *Player, m *msg.Msg) error { p.NotifyPlayroomKiss() case msg.HANDLE_TYPE_CATNIP_INVITE: // 邀请好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { + return nil + } + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil } - CatnipMod.BeInvited(CatnipMsg.GameId, int(m.From), m.SendT) + CatnipMod.BeInvited(int(m.From), m.SendT) FriendMod := p.PlayMod.getFriendMod() - FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", CatnipMsg.GameId), m.End) + FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", CatnipMsg.GameId), m.End, nil) case msg.HANDLE_TYPE_CATNIP_AGREE: // 同意好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsgInfo := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) - if ActivityId != CatnipMsgInfo.ActivityId { // 活动ID不匹配 + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { return nil } - UserList, _ := CatnipMod.Agree(CatnipMsgInfo.GameId, int(m.From)) - for _, v := range UserList { - FriendMgrSend(&msg.Msg{ - From: int(p.M_DwUin), - To: int(v), - Type: msg.HANDLE_TYPE_CATNIP_AGREE, - Extra: CatnipMsg{ - ActivityId: ActivityId, - GameId: int(CatnipMsgInfo.GameId), - }, - SendT: GoUtil.Now(), - }) + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + return nil } + CatnipMod.BeAgree(CatnipMsg.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_AGREE_DEL: // 同意好友参与猫咪游戏后删除邀请 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { + return nil + } + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil } CatnipMod.DelInvited(CatnipMsg.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_REFUSE: // 拒绝好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { + return nil + } + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil } CatnipMod.DelInvited(CatnipMsg.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_GROWTH: CatnipMod := p.PlayMod.getCatnipMod() - CatnipGrowthInfo := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) - if ActivityId != CatnipGrowthInfo.ActivityId { // 活动ID不匹配 + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { return nil } - CatnipMod.Growth(CatnipGrowthInfo.GameId, CatnipGrowthInfo.Growth) + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + return nil + } + CatnipMod.GrowthByUid(m.From, CatnipMsg.Growth) + if CatnipMsg.FriendItems > 0 { + Items := catnipCfg.GetItemCost(ActivityId, CatnipMsg.FriendItems) + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP_ITEMS, "", m.End, Items) + } + p.CatnipBackData() + case msg.HANDLE_TYPE_CATNIP_SEND_EMOJI: + CatnipMod := p.PlayMod.getCatnipMod() + EmojiId := GoUtil.Int(m.Extra) + CatnipMod.SetEmoji(m.From, EmojiId) + p.CatnipBackData() case msg.HANDLE_TYPE_FRIEND_GREETING_REPLY: FriendMod := p.PlayMod.getFriendMod() if v, ok := m.Extra.(friend.ReplyInfo); ok { - FriendMod.AddReplyInfo(v.Uid, v.Type, v.Param, GoUtil.Now()+24*3600) - FriendLogBackData(p) + FriendMod.AddReplyInfo(v.Uid, v.Type, v.Param, GoUtil.Now()+24*3600, nil) + p.FriendLogBackData() } case msg.HANDLE_TYPE_FRIEND_SPONSOER: p.AddLog(m.From, friend.LOG_TYPE_FRIEND_SPONSOR_GET, "", m.SendT) @@ -393,75 +487,8 @@ func handle(p *Player, m *msg.Msg) error { return nil } -// 处理系统请求 -func HandleServerMsg(p *Player, msg *msg.Msg) error { - return nil -} - -// 处理好友请求 -func HandleFriendMsg(p *Player, m *msg.Msg) error { - FriendMod := p.PlayMod.getFriendMod() - PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) - switch m.Type { - case msg.HANDLE_TYPE_APPLY: // 好友申请 - FriendMod.AddFriendApply(m.From) - p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT) - p.PushClientRes(&proto.ResFriendApplyNotify{ - Player: PlayerSimpleData, - Type: friend.FRIEND_NOTIFY_APPLY, - Time: int32(GoUtil.Now()), - }) - case msg.HADNLE_TYPE_AGREE: // 同意好友申请 - FriendMod.AgreeApply(m.From) - p.PushClientRes(&proto.ResFriendApplyNotify{ - Player: PlayerSimpleData, - Type: friend.FRIEND_NOTIFY_AGREE, - Time: int32(GoUtil.Now()), - }) - PlayroomMod := p.PlayMod.getPlayroomMod() - BaseMod := p.PlayMod.getBaseMod() - PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(p) - p.TeLog("friend_add", map[string]interface{}{ - "player_id": m.From, - "add_type": "接受申请", - }) - p.AddLog(m.From, friend.LOG_TYPE_FRIEND_BECOME, "", m.SendT) - case msg.HANDLE_TYPE_DEL: // 删除好友 - FriendMod.DelFriend(m.From) - p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT) - p.PushClientRes(&proto.ResFriendApplyNotify{ - Player: PlayerSimpleData, - Type: friend.FRIEND_NOTIFY_DEL, - Time: int32(GoUtil.Now()), - }) - case msg.HANDLE_TYPE_REFUSE: // 拒绝好友申请 - FriendMod.RefuseApply(m.From) - p.PushClientRes(&proto.ResFriendApplyNotify{ - Player: PlayerSimpleData, - Type: friend.FRIEND_NOTIFY_REFUSE, - Time: int32(GoUtil.Now()), - }) - case msg.HANDLE_TYPE_REQ_CARD: // 卡牌申请 - CardInfo := m.Extra.(card.CardInfo) - FriendMod.SetCardInfo(&CardInfo) - p.PushClientRes( - &proto.NotifyFriendCard{ - Info: GetCardInfoMsg(&CardInfo), - }, - ) - case msg.HANDLE_TYPE_FACEBOOK_UNBIND: // facebook解绑 - FaceMod := p.PlayMod.getFaceMod() - if FaceMod.SetId == 0 { - FaceMod.SetId = 2 - } - } - p.PlayMod.save() - return nil -} - // 同步好友请求 -func SyncFriendMsg(p *Player) { +func (p *Player) SyncFriendMsg() { MsgList := G_GameLogicPtr.FriendMgrCall(&msg.Msg{Type: msg.HANDLE_TYPE_SYNC, From: int(p.M_DwUin)}) FriendMod := p.PlayMod.getFriendMod() MsgId := FriendMod.GetSyncId() @@ -473,7 +500,7 @@ func SyncFriendMsg(p *Player) { return } sort.Slice(ml, func(i, j int) bool { - return ml[i].SendT < ml[j].SendT + return ml[i].Id < ml[j].Id }) maxId := int64(0) for _, v := range ml { @@ -485,7 +512,7 @@ func SyncFriendMsg(p *Player) { continue } log.Debug("uid : %d, handle friend msg : %v", p.M_DwUin, v) - handle(p, v) + p.handle(v) v.H = 1 } FriendMod.SetSyncId(maxId) @@ -514,103 +541,21 @@ func SyncMailMsg(p *Player) { p.PushClientRes(MailMod.BackData()) } -// 返回好友信息 -func FriendListBackData(p *Player) { - FriendMod := p.PlayMod.getFriendMod() - var fl []*proto.ResPlayerSimple - for k, v := range FriendMod.GetFriendList() { - if k == int(p.M_DwUin) { - continue - } - ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) - if ps != nil { - ps.AddTime = v.AddTime - ps.Interact = FriendMod.GetInteractTime(k) - fl = append(fl, ps) - } - } - ReqFriendList := make([]int64, 0) - for k := range FriendMod.SendApply { - ReqFriendList = append(ReqFriendList, int64(k)) - } - p.PushClientRes(&proto.ResFriendList{ - FriendList: fl, - ReqApplyList: ReqFriendList, - Npc: GoUtil.IntToInt32(FriendMod.GetNpc()), - Sponsor: int32(FriendMod.GetSponsor()), - }) -} - -func FriendApplyBackData(p *Player) { - FriendMod := p.PlayMod.getFriendMod() - var al []*proto.ResFriendApplyInfo - for k, v := range FriendMod.ApplyList { - ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) - if ps != nil { - al = append(al, &proto.ResFriendApplyInfo{ - Player: ps, - Time: int32(v), - }) - } - } - p.PushClientRes(&proto.ResFriendApply{ - ApplyList: al, - }) -} - -func FriendLogBackData(p *Player) { - FriendMod := p.PlayMod.getFriendMod() - var log []*proto.ResFriendLog - for _, v := range FriendMod.Log { - ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) - if ps == nil { - ps = &proto.ResPlayerSimple{ - Uid: int64(v.Uid), - } - } - log = append(log, &proto.ResFriendLog{ - Player: ps, - Type: int32(v.Type), - Time: int32(v.Time), - Param: v.Param, - Id: int32(v.Id), - Upvote: v.Upvote, - }) - } - var reply []*proto.ResFriendReply - for _, v := range FriendMod.ReplyList { - ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) - if ps == nil { - ps = &proto.ResPlayerSimple{ - Uid: int64(v.Uid), - } - } - reply = append(reply, &proto.ResFriendReply{ - Player: ps, - Type: int32(v.Type), - Param: v.Param, - Id: int32(v.Id), - Status: int32(v.Status), - AddTime: v.AddTime, - EndTime: v.EndTime, - }) - } - p.PushClientRes(&proto.ResFriendTimeLine{ - Log: log, - Reply: reply, - }) -} - -func FriendCardBackData(p *Player) { - FriendMod := p.PlayMod.getFriendMod() - var msgList []*proto.ResFriendCard - for _, v := range FriendMod.Card { - m := GetCardInfoMsg(v) - msgList = append(msgList, m) - } - p.PushClientRes(&proto.ResFriendCardMsg{ - MsgList: msgList, +func (p *Player) CatnipGrowthMsg(To, Id, Growth, FriendItems int) error { + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + FriendMgrSend(&msg.Msg{ + From: int(p.M_DwUin), + To: To, + Type: msg.HANDLE_TYPE_CATNIP_GROWTH, + SendT: GoUtil.Now(), + Extra: CatnipMsg{ + ActivityId: ActivityId, + GameId: Id, + Growth: Growth, + FriendItems: FriendItems, + }, }) + return nil } // 发送消息给玩家 @@ -618,95 +563,6 @@ func ClusterSendMsg(ServerId int, m *msg.Msg) { mergeCluster.SendServerMsg(m, ServerId) } -// 创建订单 -func CreateOrderSn(p *Player, req *proto.ReqCreateOrderSn) (string, error) { - Uid := int(p.M_DwUin) - OrderSn := GoUtil.CreateOrderSn(Uid) - - Price, Currency := chargeCfg.GetChargeInfo(int(req.ChargeId)) - Extra := &ChargeExtra{ - Type: int(req.Type), - Uid: req.Uid, - } - ExtraData, _ := json.Marshal(Extra) - err := db.CreateOrderSn(Uid, int(req.ChargeId), OrderSn, req.PlatForm, req.Channel, Price, Currency, string(ExtraData)) - if err != nil { - return "", err - } - return OrderSn, nil -} - -func GoogleVerify(p *Player, OrderSn, ProduceId, Token string) (*db.SqlChargeOrderStruct, error) { - Order, err := db.GetPlayerChargeData(OrderSn) - if err != nil { - return nil, err - } - if Order.PayStatus == MergeConst.ORDER_STATUS_SHIP { - return nil, fmt.Errorf("订单已经发货") - } - if !conf.Server.GoogleVerify { - Order.PayStatus = MergeConst.ORDER_STATUS_PAY - return Order, nil - } - if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE { - return nil, fmt.Errorf("订单已经支付") - } - cmd := exec.Command(conf.Server.AppPath+"/script/verifyOrder", ProduceId, Token) - - // 获取命令的输出 - output, err := cmd.Output() - if err != nil { - return nil, err - } - // 将输出转换为字符串 - outputStr := string(output) - - // 替换单引号为双引号 - outputStr = strings.Replace(outputStr, "'", "\"", -1) - type VerifyData struct { - PurchaseState int `json:"purchaseState"` - DeveloperPayload string `json:"developerPayload"` - OrderId string `json:"orderId"` - ConsumptionState int `json:"consumptionState"` - } - r := &VerifyData{} - err = json.Unmarshal([]byte(outputStr), &r) - if err != nil { - log.Debug("output %s", string(output)) - return nil, err - } - _, err = db.GetPlayerPayChannelOrderId(r.OrderId) - if err == nil { - return nil, fmt.Errorf("订单已支付发货 param: %v", r) - } - // if r.DeveloperPayload != OrderSn { - // return nil, fmt.Errorf("订单号不匹配") - // } - if r.ConsumptionState != 1 { - return nil, fmt.Errorf("订单未消费") - } - Order.PayStatus = MergeConst.ORDER_STATUS_PAY - Order.PayChannelOrderId = r.OrderId - Order.PayTime = GoUtil.Now() - return Order, nil -} - -func CancelOrder(p *Player, OrderSn string) error { - Order, err := db.GetPlayerChargeData(OrderSn) - if err != nil { - return err - } - if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE { - return fmt.Errorf("订单已支付") - } - Order.PayStatus = MergeConst.ORDER_STATUS_CANCEL - err = db.UpdatePlayerChargeData(Order) - if err != nil { - return err - } - return nil -} - func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard { Uid := 0 if CardInfo.Type == card.TYPE_CARD_SEND { @@ -746,142 +602,8 @@ func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard { } } -func BackChampship(p *Player) { - ChampshipMod := p.PlayMod.getChampshipMod() - MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(int(p.M_DwUin)) - MyPreRank := G_GameLogicPtr.ChampshipMgr.getLastMyRank(int(p.M_DwUin)) - p.PushClientRes(ChampshipMod.BackData(MyRank, MyPreRank)) -} - -func GetVisitorPlayer(p *Player) int { - PlayroomMod := p.PlayMod.getPlayroomMod() - VisitorList := PlayroomMod.GetVisitor() // 到访用户 - TodayVisitedUsers := PlayroomMod.GetTodayVisitedUsers() // 今日已互动用户 - FriendMod := p.PlayMod.getFriendMod() - type sortData struct { - Uid int - Time int64 - } - PlayerList := make([]sortData, 0) - PlayerList2 := make([]sortData, 0) - Now := GoUtil.Now() - /** - 排除当日玩家已对其发起过交互的用户 - 优先选择24小时内曾经与玩家进行过宠物交互的好友 - 若存在复数对象的情况下,优先选择交互发生时间与当前时间最近的好友 - 若不存在符合条件的用户,则选择24小时内曾经与玩家进行过宠物交互的陌生用户 - 若存在复数对象的情况下,优先选择交互发生时间与当前时间最近的用户 - 若不存在符合条件的用户,则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友 - 若不存在符合条件的用户,则依据以上用户推荐算法,选择一位随机推荐用户,并且在下次触发式订单完成时,不再排除已发起过交互的用户 - */ - for k, v := range VisitorList { - if GoUtil.InArray(k, TodayVisitedUsers) { - continue - } - if v.Time < Now-86400 { - continue - } - if FriendMod.CheckFriend(k) { - PlayerList = append(PlayerList, sortData{k, v.Time}) - } else { - PlayerList2 = append(PlayerList, sortData{k, v.Time}) - } - } - if len(PlayerList) != 0 { - sort.Slice(PlayerList, func(i, j int) bool { - return PlayerList[i].Time < PlayerList[j].Time - }) - return PlayerList[0].Uid - } - if len(PlayerList2) != 0 { - sort.Slice(PlayerList2, func(i, j int) bool { - return PlayerList2[i].Time < PlayerList2[j].Time - }) - return PlayerList2[0].Uid - } - // 若不存在符合条件的用户,则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友 - var recentFriendUid int - var recentLoginTime int64 = 0 - for uid := range FriendMod.GetFriendList() { - if uid == int(p.M_DwUin) { - continue - } - if GoUtil.InArray(uid, TodayVisitedUsers) { - continue - } - ps := G_GameLogicPtr.GetSimplePlayerByUid(uid) - if ps == nil { - continue - } - if GoUtil.Now()-ps.Loginout > 86400 { // 24小时内登录过 - continue - } - if ps.Loginout > recentLoginTime { - recentLoginTime = ps.Loginout - recentFriendUid = uid - } - } - if recentFriendUid != 0 { - return recentFriendUid - } - PlayerList3 := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) - PlayerList4 := make([]int, 0) - for _, v := range PlayerList3 { - if v.Uid == int(p.M_DwUin) { - continue - } - PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) - if PlayerSimpleData.Level < 15 { - continue - } - PlayerList4 = append(PlayerList4, v.Uid) - } - L := GoUtil.RandSliceNum(PlayerList4, 1) - if len(L) == 0 { - return 0 - } - return L[0] -} - -func GetRecommendPlayer(p *Player, Num int) []int { - PlayerList := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) - PlayerList1 := make([]int, 0) - FriendMod := p.PlayMod.getFriendMod() - for _, v := range PlayerList { - if v.Uid == int(p.M_DwUin) { - continue - } - if FriendMod.CheckSendApply(v.Uid) { - continue - } - if FriendMod.CheckFriend(v.Uid) { - continue - } - PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) - if PlayerSimpleData == nil { - continue - } - if GoUtil.Now()-PlayerSimpleData.Loginout > 86400 { - continue - } - if PlayerSimpleData.Level < 4 { - continue - } - PlayerList1 = append(PlayerList1, v.Uid) - } - if len(PlayerList1) == 0 { - for _, v := range PlayerList { - if v.Uid == int(p.M_DwUin) { - continue - } - PlayerList1 = append(PlayerList1, v.Uid) - } - } - return GoUtil.RandSliceNum(PlayerList1, Num) -} - // 发射器退役第一步 不再生成此发射器订单 -func EmitRetireTrigger1(p *Player) { +func (p *Player) EmitRetireTrigger1() { ChessMod := p.PlayMod.getChessMod() EmitList := ChessMod.GetEmitList() EmitId := make(map[string]struct{}, 0) @@ -911,7 +633,7 @@ func EmitRetireTrigger1(p *Player) { } // 发射器退役第二步 生成清理订单 -func EmitRetireTrigger2(p *Player) { +func (p *Player) EmitRetireTrigger2() { ChessMod := p.PlayMod.getChessMod() OrderMod := p.PlayMod.getOrderMod() BaseMod := p.PlayMod.getBaseMod() @@ -976,36 +698,6 @@ func EmitRetireTrigger2(p *Player) { } } -func Benchmark(player *Player) { - ChampshipMod := player.PlayMod.getChampshipMod() - ChampshipMod.AddScore([]int{949, 941, 10}) - player.HandleInChampshipRank() - player.HandleInUserRank() -} - -func GetUidByFaceBook(Fb string) (int, error) { - sqlStr := "SELECT dwUin FROM t_player_baseinfo WHERE FaceBookId = ?" - type Result struct { - Uid int `db:"dwUin"` - } - R := Result{} - err := db.SqlDb.Get(&R, sqlStr, Fb) - log.Debug("Fb :%s;Uid :%d", Fb, R.Uid) - return R.Uid, err -} - -func NotifyAllFriend(p *Player, m1 *msg.Msg) { - m := m1.Clone() - FriendMod := p.PlayMod.getFriendMod() - for k := range FriendMod.GetFriendList() { - if k == int(p.M_DwUin) { - continue - } - m.To = k - FriendMgrSend(m) - } -} - func NotifyChampshipResult(Uid, Rank int) { PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Uid) if PlayerSimpleData == nil { diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 4084d709..822e9fed 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -110,7 +110,7 @@ func (p *Player) Send(m *MsgMod.Msg) { } func (p *Player) Call(m MsgMod.Msg) { - HandleMsg(p, &m) + p.HandleMsg(m.Clone()) } func (p *Player) SendClientRes() { @@ -239,28 +239,8 @@ func (p *Player) InitPlayer(UserName string) error { } p.PlayMod.mod_list = modData.ModList p.PlayMod.is_update = IsUpdate - - go func() { // 处理数据回调 - var cb *timer.Timer - for { - select { - case <-p.stopSignal: - return - case cb = <-p.MDispatr.ChanTimer: - if cb != nil { - cb.Cb() - } else { - log.Debug("Timer callback or Timer is nil") - } - case msg := <-p.msgChan: - if msg != nil { - p.wg.Done() - log.Debug("player %d recive msg %v", p.M_DwUin, msg) - go HandleMsg(p, msg) - } - } - } - }() + // 启动定时器 + p.DispatcherHandle() p.McronSave = cron.New() _, err = p.McronSave.AddFunc("@every 1m", p.AutoSaveData) if err != nil { @@ -271,10 +251,8 @@ func (p *Player) InitPlayer(UserName string) error { p.ZeroUpdate(nil) p.NoonUpdate(nil) p.Login() - // GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.ZeroUpdate, p) - // GoUtil.RegisterEvent(MergeConst.Notify_Midday_Renew, p.ZeroUpdate, p) p.OrderShip() - SyncFriendMsg(p) + p.SyncFriendMsg() p.UpdateUserInfo() // fix bug ChargeMod := p.PlayMod.getChargeMod() @@ -291,7 +269,7 @@ func (p *Player) OrderShip() { return } for _, OrderInfo := range OrderList { - go TriggerShippingOrderOrigin(p, &msg.ReqShippingOrder{ + go p.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{ OrderSn: OrderInfo.OrderId, }) } @@ -347,10 +325,10 @@ func (p *Player) ZeroUpdate(a []interface{}) { if ChargeMod.IsWeeklyDiscountDay() { PlayroomMod.ResetWeeklyDiscount() } - PlayroomBackData(p) + p.PlayroomBackData() p.PlayMod.getChampshipMod().ZeroUpdate() p.initAcitivity() - ActivityZeroUpdate(p) + p.ActivityZeroUpdate() p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_LOGIN}) p.PlayMod.save() } @@ -387,9 +365,9 @@ func (p *Player) NoonUpdate(a []interface{}) { func (p *Player) Login() { // 添加定时器 // 限时事件触发 - LimitedTimeEventTrigger(p, 0) + p.LimitedTimeEventTrigger(0) // 猪猪银行触发 - LimitedTimePiggyBankTrigger(p) + p.LimitedTimePiggyBankTrigger() BaseMod := p.PlayMod.getBaseMod() FaceMod := p.PlayMod.getFaceMod() ChargeMod := p.PlayMod.getChargeMod() @@ -397,10 +375,10 @@ func (p *Player) Login() { PlayBaseMod := p.GetPlayerBaseMod() GuideTaskMod := p.PlayMod.getGuideTaskMod() // playroom触发 - LimitedTimePlayroomTrigger(p) // playroom数值变化 + p.LimitedTimePlayroomTrigger() // playroom数值变化 LimitedTimePlayroomWorkTrigger(p) // playroom打工 LimitedTimeEnergyAdd(p) // 能量定时处理 - ActivityLogin(p) // 活动登录 + p.ActivityLogin() // 活动登录 p.Compensation() SyncMailMsg(p) // 同步邮件 Duration := BaseMod.Login() @@ -423,14 +401,14 @@ func (p *Player) Login() { PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod.ResetWeeklyDiscount() p.ChargeBackData() - PlayroomBackData(p) + p.PlayroomBackData() }, "WeeklyDiscountStart") } if WeeklyEndTime > now { p.CallEvent(time.Duration(WeeklyEndTime-now)*time.Second, func() { ChargeMod.WeeklyEndTime = 0 p.ChargeBackData() - PlayroomBackData(p) + p.PlayroomBackData() LimitEventMod := p.PlayMod.getLimitedTimeEventMod() LimitEventMod.EndCatDaySale() p.PushClientRes(LimitEventMod.BackData()) @@ -700,7 +678,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { Cd: int32(EffectList[1]), }) // 触发订单事件 生成超级订单 卡牌节 - LimitedTimeEventTrigger(p, EffectList[0]) + p.LimitedTimeEventTrigger(EffectList[0]) p.TeLog("time_limited_event_enable", map[string]interface{}{ "event_type": limitedTimeEventCfg.GetEventName(EffectList[0]), "enable_type": Label, @@ -709,7 +687,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { PiggyBankMod := p.PlayMod.getPiggyBankMod() Effect := itemCfg.GetItemEffect(v.Id) PiggyBankMod.AddPiggyBank(Effect) - LimitedTimePiggyBankTrigger(p) + p.LimitedTimePiggyBankTrigger() p.PushClientRes(PiggyBankMod.BackData()) p.TeLog("piggy_bank_income", map[string]interface{}{ "piggy_bank_type": Effect, @@ -749,20 +727,20 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { p.PlayerDecoLog("face", Effect[0], Label) BackDataType[item.ITEM_TYPE_FACE] = struct{}{} case item.ITEM_TYPE_ACTIVITY_RACE: // 活动竞速 - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_RACE) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_RACE) if ActivityInfo == nil { continue } RaceMod := p.PlayMod.getRaceMod() RaceMod.AddCoin(v.Num) - RaceBackData(p) + p.RaceBackData() case item.ITEM_TYPE_PLAYROOM_VISIT: // 拜访玩家 - Target := GetVisitorPlayer(p) + Target := p.GetVisitorPlayer() playroomMod := p.PlayMod.getPlayroomMod() playroomMod.Target = Target playroomMod.Status = playroom.STATUS_VISIT // PlayroomVisit(p, Target) - PlayroomBackData(p) + p.PlayroomBackData() case item.ITEM_TYPE_PLAYROOM_DECORATION: // playroom装饰 Effect := itemCfg.GetItemEffect(v.Id) PlayroomMod := p.PlayMod.getPlayroomMod() @@ -824,13 +802,13 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { } BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS_SET] = struct{}{} case item.ITEM_TYPE_ACT_PASS: // 活动通行证 - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { continue } PassMod := p.PlayMod.getPassMod() PassMod.AddExp(v.Num) - ActPassBackData(p) + p.ActPassBackData() default: err := ItemMod.AddItem(v.Id, v.Num) p.TeLog("asset_change", map[string]interface{}{ @@ -860,16 +838,16 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { for k := range BackDataType { switch k { case item.ITEM_TYPE_AVATAR: - BackUserInfo(p) + p.BackUserInfo() case item.ITEM_TYPE_EMOJI: - BackUserInfo(p) + p.BackUserInfo() case item.ITEM_TYPE_FACE: - BackUserInfo(p) + p.BackUserInfo() case item.ITEM_TYPE_PLAYROOM_DECORATION, item.ITEM_TYPE_PLAYROOM_DRESS, item.ITEM_TYPE_PLAYROOM_DECORATION_SET, item.ITEM_TYPE_PLAYROOM_DRESS_SET: - PlayroomBackData(p) + p.PlayroomBackData() } } p.PetItemUseLog(itemList) @@ -906,8 +884,8 @@ func (p *Player) LoginBackData() { p.PushClientRes(p.PlayMod.mod_list.Guide.BackData()) p.BackDataActivity() p.ChargeBackData() - BackChampship(p) - BackUserInfo(p) + p.BackChampship() + p.BackUserInfo() } func (p *Player) InitPlayerOnly() { @@ -1126,7 +1104,7 @@ func (p *Player) BackDataActivity() { } func (p *Player) GetRed(AI *ActivityInfo) int { - Status := GetActivityStatus(p, AI.Type) + Status := p.GetActivityStatus(AI.Type) if Status != ACT_STATUS_START { return 0 } @@ -1143,8 +1121,8 @@ func (p *Player) GetRed(AI *ActivityInfo) int { } func (p *Player) NotifyRed(actType int) { - ActivityInfo := GetActivityInfo(p, actType) - Status := GetActivityStatus(p, actType) + ActivityInfo := p.GetActivityInfo(actType) + Status := p.GetActivityStatus(actType) if Status != ACT_STATUS_START { return } @@ -1192,3 +1170,27 @@ func (p *Player) GetIp() string { } return p.GetAgent().RemoteAddr().String() } + +func (p *Player) DispatcherHandle() { + go func() { + var cb *timer.Timer + for { + select { + case <-p.stopSignal: + return + case cb = <-p.MDispatr.ChanTimer: + if cb != nil { + cb.Cb() + } else { + log.Debug("Timer callback or Timer is nil") + } + case msg := <-p.msgChan: + if msg != nil { + p.wg.Done() + log.Debug("player %d recive msg %v", p.M_DwUin, msg) + go p.HandleMsg(msg.Clone()) + } + } + } + }() +} diff --git a/src/server/game/PlayerBack.go b/src/server/game/PlayerBack.go index cdcafad7..e4fc9bc1 100644 --- a/src/server/game/PlayerBack.go +++ b/src/server/game/PlayerBack.go @@ -18,7 +18,7 @@ func (p *Player) NotifyPlayroomTask() { p.PushClientRes(m) } -func PlayroomBackData(p *Player) { +func (p *Player) PlayroomBackData() { r := &proto.ResPlayroom{} PlayroomMod := p.PlayMod.getPlayroomMod() FriendMod := p.PlayMod.getFriendMod() @@ -27,7 +27,7 @@ func PlayroomBackData(p *Player) { Opponent := make([]*proto.RoomOpponent, 0) FriendList := make([]*proto.FriendRoom, 0) if PlayroomMod.Target == 0 { - PlayroomMod.Target = GetVisitorPlayer(p) + PlayroomMod.Target = p.GetVisitorPlayer() } TargerRoom := &proto.FriendRoom{} if PlayroomMod.Target != 0 { @@ -163,7 +163,7 @@ func PlayroomBackData(p *Player) { p.PushClientRes(r) } -func PlayroomVisit(p *Player, Uid int) { +func (p *Player) PlayroomVisit(Uid int) { if Uid == 0 { p.PushClientRes(&proto.ResPlayroomInfo{}) return @@ -211,7 +211,7 @@ func (p *Player) NotifyPlayroomKiss() { p.PushClientRes(m) } -func BackUserInfo(p *Player) { +func (p *Player) BackUserInfo() { BaseMod := p.PlayMod.getBaseMod() FaceMod := p.PlayMod.getFaceMod() AvatarMod := p.PlayMod.getAvatarMod() @@ -294,3 +294,109 @@ func (p *Player) ChargeBackData() { WeeklyEndTime: max(c.WeeklyEndTime, CatDaySaleEndTime), }) } + +func (p *Player) BackChampship() { + ChampshipMod := p.PlayMod.getChampshipMod() + MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(int(p.M_DwUin)) + MyPreRank := G_GameLogicPtr.ChampshipMgr.getLastMyRank(int(p.M_DwUin)) + p.PushClientRes(ChampshipMod.BackData(MyRank, MyPreRank)) +} + +// 返回好友信息 +func (p *Player) FriendListBackData() { + FriendMod := p.PlayMod.getFriendMod() + var fl []*proto.ResPlayerSimple + for k, v := range FriendMod.GetFriendList() { + if k == int(p.M_DwUin) { + continue + } + ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) + if ps != nil { + ps.AddTime = v.AddTime + ps.Interact = FriendMod.GetInteractTime(k) + fl = append(fl, ps) + } + } + ReqFriendList := make([]int64, 0) + for k := range FriendMod.SendApply { + ReqFriendList = append(ReqFriendList, int64(k)) + } + p.PushClientRes(&proto.ResFriendList{ + FriendList: fl, + ReqApplyList: ReqFriendList, + Npc: GoUtil.IntToInt32(FriendMod.GetNpc()), + Sponsor: int32(FriendMod.GetSponsor()), + }) +} + +func (p *Player) FriendApplyBackData() { + FriendMod := p.PlayMod.getFriendMod() + var al []*proto.ResFriendApplyInfo + for k, v := range FriendMod.ApplyList { + ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) + if ps != nil { + al = append(al, &proto.ResFriendApplyInfo{ + Player: ps, + Time: int32(v), + }) + } + } + p.PushClientRes(&proto.ResFriendApply{ + ApplyList: al, + }) +} + +func (p *Player) FriendLogBackData() { + FriendMod := p.PlayMod.getFriendMod() + var log []*proto.ResFriendLog + for _, v := range FriendMod.Log { + ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) + if ps == nil { + ps = &proto.ResPlayerSimple{ + Uid: int64(v.Uid), + } + } + log = append(log, &proto.ResFriendLog{ + Player: ps, + Type: int32(v.Type), + Time: int32(v.Time), + Param: v.Param, + Id: int32(v.Id), + Upvote: v.Upvote, + }) + } + var reply []*proto.ResFriendReply + for _, v := range FriendMod.ReplyList { + ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) + if ps == nil { + ps = &proto.ResPlayerSimple{ + Uid: int64(v.Uid), + } + } + reply = append(reply, &proto.ResFriendReply{ + Player: ps, + Type: int32(v.Type), + Param: v.Param, + Id: int32(v.Id), + Status: int32(v.Status), + AddTime: v.AddTime, + EndTime: v.EndTime, + }) + } + p.PushClientRes(&proto.ResFriendTimeLine{ + Log: log, + Reply: reply, + }) +} + +func (p *Player) FriendCardBackData() { + FriendMod := p.PlayMod.getFriendMod() + var msgList []*proto.ResFriendCard + for _, v := range FriendMod.Card { + m := GetCardInfoMsg(v) + msgList = append(msgList, m) + } + p.PushClientRes(&proto.ResFriendCardMsg{ + MsgList: msgList, + }) +} diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index f1eaf9fd..cd994d00 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -562,7 +562,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) return 0, err } } - EmitRetireTrigger2(player) + player.EmitRetireTrigger2() player.InitOrderItem() player.PushClientRes(p.BackAsset()) return upLv, nil diff --git a/src/server/game/PlayerChessMod.go b/src/server/game/PlayerChessMod.go index 454390bb..b875d1e0 100644 --- a/src/server/game/PlayerChessMod.go +++ b/src/server/game/PlayerChessMod.go @@ -129,6 +129,24 @@ func (p *PlayerChessData) UpdateChessData(player *Player, MChessData map[string] return nil } +func (p *PlayerChessData) UpdateChessDataTest(player *Player, MChessData map[string]int32) error { + p.Data.MChessData = MChessData + if true { + res := &msg.ResUpdatePlayerChessData{ + Code: msg.RES_CODE_FAIL, + Msg: "棋子数据不一致", + } + log.Debug("棋子数据不一致, %v---%v", p.Data.MChessData, player.PlayMod.getChessMod().GetChessList()) + player.SendErrClienRes(res) + player.TeLog("outsync_event", map[string]interface{}{ + "outsync_event": "UpdatePlayerChessDataFunc", + }) + return fmt.Errorf("棋子数据不一致") + } + player.PlayMod.getChessMod().ChessMap = MChessData + return nil +} + // 检查棋子数据是否一致 func (p *PlayerChessData) checkChessEqual(player *Player) bool { if len(p.Data.MChessData) == 0 && conf.Server.GameName == "Merge_Pet_Local" { @@ -207,7 +225,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa player.PushClientRes(HandbookMod.BackData()) triggerComposeChess(player, NewChessId, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList()) // 获取活动道具 - ActItem := GetActivityItem(player, GoUtil.Int32ToInt(v.ActType)) + ActItem := player.GetActivityItem(GoUtil.Int32ToInt(v.ActType)) itemList = item.Merge(itemList, ActItem) case msg.HANDLE_TYPE_BUY: //购买棋子 loseGold, err := ChessMod.BuyChess(ChessId) @@ -287,7 +305,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa player.PushClientRes(LimitedTimeEventMod.BackData()) } player.QuestTriggerList(TriggerList) - EmitRetireTrigger1(player) + player.EmitRetireTrigger1() player.InitOrderItem() player.PushClientRes(ChessMod.BackData()) player.PlayMod.save() diff --git a/src/server/game/PlayerDataModule.go b/src/server/game/PlayerDataModule.go deleted file mode 100644 index 7068b39c..00000000 --- a/src/server/game/PlayerDataModule.go +++ /dev/null @@ -1,62 +0,0 @@ -package game - -// "fmt" - -// "math" - -type PlayerDataModule interface { - LoadDataFromDB(key interface{}) bool - SaveDataFromDB(key interface{}) bool - SetPlayer(p *Player) - GetPlayer() *Player - GetData() interface{} - ClearData() bool - Reconnect(bool) - AutoSaveInterval() -} - -type PlayerData struct { - Name string - IsHaveDataDb bool - M_Player *Player -} - -func (d *PlayerData) SetPlayer(p *Player) { - d.M_Player = p -} - -func (d *PlayerData) GetPlayer() *Player { - return d.M_Player -} - -func (d *PlayerData) Reconnect(b bool) { - -} -func (d *PlayerData) AutoSaveInterval() { - -} - -func (d *PlayerData) LoadDataFromDB(UserName interface{}) bool { - - return true -} - -func (d *PlayerData) SaveDataFromDB(Key interface{}) bool { - - return true -} -func (d *PlayerData) ClearData() bool { - - return true -} -func (d *PlayerData) GetData() interface{} { - res := struct{}{} - return res -} - -func NewPlayerData(name string, player *Player) *PlayerData { - return &PlayerData{ - Name: name, - M_Player: player, - } -} diff --git a/src/server/game/PlayerMod.go b/src/server/game/PlayerMod.go index 3b9f9e81..939ba214 100644 --- a/src/server/game/PlayerMod.go +++ b/src/server/game/PlayerMod.go @@ -44,6 +44,32 @@ import ( "time" ) +type PlayerData struct { + Name string + IsHaveDataDb bool + M_Player *Player +} + +func (d *PlayerData) SetPlayer(p *Player) { + d.M_Player = p +} + +func (d *PlayerData) GetPlayer() *Player { + return d.M_Player +} + +func (d *PlayerData) GetData() interface{} { + res := struct{}{} + return res +} + +func NewPlayerData(name string, player *Player) *PlayerData { + return &PlayerData{ + Name: name, + M_Player: player, + } +} + type PlayerModData struct { *PlayerData Data db.SqlModStruct diff --git a/src/server/game/PlayerMsg.go b/src/server/game/PlayerMsg.go deleted file mode 100644 index b0e7ddb7..00000000 --- a/src/server/game/PlayerMsg.go +++ /dev/null @@ -1,23 +0,0 @@ -package game - -import ( - "server/GoUtil" - "server/game/mod/activity" - "server/game/mod/msg" -) - -func (p *Player) CatnipGrowthMsg(To, Id, Growth int) error { - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) - FriendMgrSend(&msg.Msg{ - From: int(p.M_DwUin), - To: To, - Type: msg.HANDLE_TYPE_CATNIP_GROWTH, - SendT: GoUtil.Now(), - Extra: CatnipMsg{ - ActivityId: ActivityId, - GameId: Id, - Growth: Growth, - }, - }) - return nil -} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index c271a146..e9375776 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -290,7 +290,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { if OrderType == order.Pet_type { Item = player.FormatPetOrderItem(Item) } - ActItem := GetActivityItem(player, GoUtil.Int32ToInt(req.ActType)) + ActItem := player.GetActivityItem(GoUtil.Int32ToInt(req.ActType)) Item = item.Merge(Item, ActItem) if !OrderMod.CheckSuperOrder() { if LimitedTimeEventMod.RemoveSuperOrder() { @@ -408,11 +408,11 @@ func ReqRewardOrder(player *Player, buf []byte) error { "preset_order_step": preset_order_step, }) player.PetItemGetLog(Item, nil, "Order") - EmitRetireTrigger2(player) + player.EmitRetireTrigger2() Lv := player.GetPlayerBaseMod().GetLevel() EnergyMul := player.PlayMod.getBaseMod().GetEnergyMul() Emit := ChessMod.GetOrderEmit() - TriggerSeedSource(player) + player.TriggerSeedSource() //NewOrder := TriggerSeedOrder(player) // if NewOrder == nil || len(NewOrder.MergeId) == 0 { // OrderMod.CreateOrder(Lv, Emit, EnergyMul) @@ -452,7 +452,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { player.PlayMod.save() player.PushClientRes(PiggyBankMod.BackData()) player.PushClientRes(OrderMod.BackData()) - BackChampship(player) + player.BackChampship() player.PushClientRes(LimitedTimeEventMod.BackData()) player.PushClientRes(ChessMod.BackData()) player.PushClientRes(LimitedTimeEventMod.ProgressBackData()) @@ -578,7 +578,7 @@ func ReqDecorate(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, }) player.HandleInUserRank() - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() return nil } @@ -651,13 +651,39 @@ func ReqDecorateAll(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, }) player.HandleInUserRank() - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() return nil } -func ReqDecorateReward(player *Player, buf []byte) error { - +func ReqAreaReward(player *Player, buf []byte) error { + req := &msg.ReqAreaReward{} + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } + DecorateMod := player.PlayMod.getDecorateMod() + RewardItem, err := DecorateMod.GetDecorateReward(int(req.AreaId)) + if err != nil { + player.SendErrClienRes(&msg.ResAreaReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + err = player.HandleItem(RewardItem, msg.ITEM_POP_LABEL_DecorateReward.String()) + if err != nil { + player.SendErrClienRes(&msg.ResAreaReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.PushClientRes(&msg.ResAreaReward{ + Code: msg.RES_CODE_SUCCESS, + }) + player.PushClientRes(DecorateMod.BackData()) + player.PlayMod.save() return nil } @@ -666,7 +692,7 @@ func ReqDecorateReward(player *Player, buf []byte) error { func UpdatePlayerChessDataFunc(player *Player, buf []byte) error { data := &PlayerChessData{} err := data.UpdatePlayerChessData(player, buf) - RedBackData(player) + player.RedBackData() player.UpdateUserInfo() return err } @@ -714,7 +740,7 @@ func ReqGetChessFromBuff(player *Player, buf []byte) error { player.PushClientRes(OrderMod.BackData()) } triggerComposeChess(player, ChessId, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList()) - EmitRetireTrigger1(player) + player.EmitRetireTrigger1() player.InitOrderItem() player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) @@ -1494,7 +1520,7 @@ func ReqSetAvatar(player *Player, buf []byte) error { player.PushClientRes(&msg.ResSetAvatar{ Code: msg.RES_CODE_SUCCESS, }) - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() b := false if req.Avatar == 0 { @@ -1537,7 +1563,7 @@ func ReqSetFace(player *Player, buf []byte) error { "is_platform": is_platform, }) player.PlayerDecoSetLog("face", int(req.Face), "") - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() return nil } @@ -1894,7 +1920,7 @@ func ReqApplyFriend(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointInvite(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() return nil } @@ -1922,7 +1948,7 @@ func ReqAgreeFriend(player *Player, buf []byte) error { } FriendMgrSend(m) FriendMod.AddFriend(Uid) - FriendMod.AddReplyInfo(Uid, friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600) + FriendMod.AddReplyInfo(Uid, friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600, nil) player.PushClientRes(&msg.ResAgreeFriend{ Code: msg.RES_CODE_SUCCESS, Uid: req.Uid, @@ -1933,12 +1959,12 @@ func ReqAgreeFriend(player *Player, buf []byte) error { "add_type": "接受申请", }) player.AddLog(Uid, friend.LOG_TYPE_FRIEND_BECOME, "", GoUtil.Now()) - FriendApplyBackData(player) - FriendLogBackData(player) + player.FriendApplyBackData() + player.FriendLogBackData() PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() player.PlayMod.save() return nil } @@ -1966,7 +1992,7 @@ func ReqDelFriend(player *Player, buf []byte) error { Uid: req.Uid, }) player.AddLog(Uid, friend.LOG_TYPE_FRIEND_DELETE, "", GoUtil.Now()) - FriendListBackData(player) + player.FriendListBackData() player.TeLog("friend_delete", map[string]interface{}{ "player_id": Uid, }) @@ -1995,7 +2021,7 @@ func ReqRefuseFriend(player *Player, buf []byte) error { SendT: GoUtil.Now(), } FriendMgrSend(m) - FriendApplyBackData(player) + player.FriendApplyBackData() return nil } @@ -2907,7 +2933,7 @@ func ReqCreateOrderSn(player *Player, buf []byte) error { if err != nil { return err } - OrderSn, err := CreateOrderSn(player, req) + OrderSn, err := player.CreateOrderSn(req) if err != nil { return err } @@ -2926,7 +2952,7 @@ func ReqShippingOrder(player *Player, buf []byte) error { return err } - go TriggerShippingOrder(player, req) + go player.TriggerShippingOrder(req) player.PushClientRes(&msg.ResShippingOrder{ Code: msg.RES_CODE_SUCCESS, }) @@ -2946,8 +2972,8 @@ func ReqChampshipReward(player *Player, buf []byte) error { return err } player.PlayMod.save() - BackChampship(player) - TriggerSeed(player) + player.BackChampship() + player.TriggerSeed() player.PushClientRes(&msg.ResChampshipReward{ Code: msg.RES_CODE_SUCCESS, }) @@ -3017,22 +3043,22 @@ func ReqFriendRecommend(player *Player, buf []byte) error { } func ReqFriendList(player *Player, buf []byte) error { - FriendListBackData(player) + player.FriendListBackData() return nil } func ReqFriendApply(player *Player, buf []byte) error { - FriendApplyBackData(player) + player.FriendApplyBackData() return nil } func ReqFriendCardMsg(player *Player, buf []byte) error { - FriendCardBackData(player) + player.FriendCardBackData() return nil } func ReqFriendTimeLine(player *Player, buf []byte) error { - FriendLogBackData(player) + player.FriendLogBackData() return nil } @@ -3133,7 +3159,7 @@ func ReqChampshipRankReward(player *Player, buf []byte) error { FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_CHAMPIONSHIP_RANK, GoUtil.String(MyLastRank)) } player.PlayMod.save() - BackChampship(player) + player.BackChampship() player.PushClientRes(&msg.ResChampshipRankReward{ Code: msg.RES_CODE_SUCCESS, }) @@ -3159,7 +3185,7 @@ func ReqSetName(player *Player, buf []byte) error { ResultCode: msg.RES_CODE_SUCCESS, }) player.PlayMod.save() - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() player.TeLog("nickname_set", map[string]interface{}{ "nickname_name": req.Name, @@ -3179,10 +3205,10 @@ func ReqSetPetName(player *Player, buf []byte) error { ResultCode: msg.RES_CODE_SUCCESS, }) player.PlayMod.save() - BackUserInfo(player) + player.BackUserInfo() PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.UnLock(BaseMod.GetLevel()) - LimitedTimePlayroomTrigger(player) + player.LimitedTimePlayroomTrigger() player.UpdateUserInfo() player.TeLog("petname_set", map[string]interface{}{ "petname": req.Name, @@ -3191,7 +3217,7 @@ func ReqSetPetName(player *Player, buf []byte) error { } func ReqUserInfo(player *Player, buf []byte) error { - BackUserInfo(player) + player.BackUserInfo() return nil } @@ -3327,7 +3353,7 @@ func ReqAutoAddInviteFriend(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() player.TeLog("friend_add", map[string]interface{}{ "player_id": req.Id, "add_type": "邀请注册", @@ -3371,7 +3397,7 @@ func ReqAutoAddInviteFriend2(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() player.TeLog("friend_add", map[string]interface{}{ "player_id": req.Id, "add_type": "邀请注册", @@ -3419,7 +3445,7 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error { // 请求挖矿基础数据 func ReqMining(player *Player, buf []byte) error { - MiningBackData(player) + player.MiningBackData() return nil } @@ -3431,8 +3457,8 @@ func ReqMiningTake(player *Player, buf []byte) error { return err } MiningMod := player.PlayMod.getMiningMod() - ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_MINING) - Status := GetActivityStatus(player, activity.ACT_TYPE_MINING) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_MINING) + Status := player.GetActivityStatus(activity.ACT_TYPE_MINING) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResMiningTake{ Code: msg.RES_CODE_FAIL, @@ -3468,14 +3494,14 @@ func ReqMiningTake(player *Player, buf []byte) error { player.TeLog("ReqMiningTake", map[string]interface{}{}) player.PlayMod.save() player.NotifyRed(activity.ACT_TYPE_MINING) - MiningBackData(player) + player.MiningBackData() return nil } // 领取关卡奖励 func ReqMiningReward(player *Player, buf []byte) error { MiningMod := player.PlayMod.getMiningMod() - Status := GetActivityStatus(player, activity.ACT_TYPE_MINING) + Status := player.GetActivityStatus(activity.ACT_TYPE_MINING) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResMiningReward{ Code: msg.RES_CODE_FAIL, @@ -3507,7 +3533,7 @@ func ReqMiningReward(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, }) player.PlayMod.save() - MiningBackData(player) + player.MiningBackData() return nil } @@ -3525,7 +3551,7 @@ func ReqGuessColor(player *Player, buf []byte) error { return err } player.PlayMod.save() - GuessColorBackData(player) + player.GuessColorBackData() return nil } @@ -3536,7 +3562,7 @@ func ReqGuessColorTake(player *Player, buf []byte) error { if err != nil { return err } - Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) + Status := player.GetActivityStatus(activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorTake{ Code: msg.RES_CODE_FAIL, @@ -3554,13 +3580,17 @@ func ReqGuessColorTake(player *Player, buf []byte) error { }) return err } - GuessColorMod.Take(req.Map.Map, req.OMap) + var M map[int32]int32 + if req.Map != nil { + M = req.Map.Map + } + GuessColorMod.Take(M, req.OMap) player.TeLog("ReqGuessColorTake", map[string]interface{}{ "map": req.Map.Map, "o_map": req.OMap, }) player.PlayMod.save() - GuessColorBackData(player) + player.GuessColorBackData() player.NotifyRed(activity.ACT_TYPE_GUESS_COLOR) return nil } @@ -3572,7 +3602,7 @@ func ReqGuessColorReward(player *Player, buf []byte) error { if err != nil { return err } - Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) + Status := player.GetActivityStatus(activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorReward{ Code: msg.RES_CODE_FAIL, @@ -3601,13 +3631,13 @@ func ReqGuessColorReward(player *Player, buf []byte) error { "item_list": itemList, }) player.PlayMod.save() - GuessColorBackData(player) + player.GuessColorBackData() return nil } // 请求竞赛基础数据 func ReqRace(player *Player, buf []byte) error { - RaceBackData(player) + player.RaceBackData() return nil } @@ -3627,7 +3657,7 @@ func ReqRaceStart(player *Player, buf []byte) error { }) return err } - RaceBackData(player) + player.RaceBackData() player.PushClientRes(&msg.ResRaceStart{ Code: msg.RES_CODE_SUCCESS, }) @@ -3658,7 +3688,7 @@ func ReqRaceReward(player *Player, buf []byte) error { }) return err } - RaceBackData(player) + player.RaceBackData() player.TeLog("ReqRaceReward", map[string]interface{}{ "item_list": Items, }) @@ -3670,7 +3700,7 @@ func ReqRaceReward(player *Player, buf []byte) error { // 请求playroom基础数据 func ReqPlayroom(player *Player, buf []byte) error { - PlayroomBackData(player) + player.PlayroomBackData() return nil } @@ -3687,10 +3717,10 @@ func ReqPlayroomInfo(player *Player, buf []byte) error { Targer = PlayroomMod.GetTarget() } if req.Uid == -1 { - Targer = GetVisitorPlayer(player) + Targer = player.GetVisitorPlayer() } if Targer == 0 { - PlayroomVisit(player, Targer) + player.PlayroomVisit(Targer) return nil } PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Targer) @@ -3729,7 +3759,7 @@ func ReqPlayroomInfo(player *Player, buf []byte) error { PlayroomMod.SetGameRewardFlip(int(float64(PlayerData.Star)*0.03), int(float64(PlayerData.Star)*0.05), int(float64(PlayerData.Star)*0.1)) } player.PlayMod.save() - PlayroomVisit(player, Targer) + player.PlayroomVisit(Targer) return nil } @@ -3773,7 +3803,7 @@ func ReqPlayroomInteract(player *Player, buf []byte) error { player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_INTERACT, A: []interface{}{int(req.Id)}}) player.PlayMod.save() G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_KISS, 0) - LimitedTimePlayroomTrigger_(player, PType) + player.LimitedTimePlayroomTrigger_(PType) player.NotifyPlayroomKiss() player.TeLog("playroom_interact", map[string]interface{}{ "interact_id": int(req.Id), @@ -3859,7 +3889,7 @@ func ReqPlayroomGame(player *Player, buf []byte) error { "item_list": Items, }) PlayroomMod.ResetGame() - PlayroomBackData(player) + player.PlayroomBackData() player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_game") player.PushClientRes(&msg.ResPlayroomGame{ Code: msg.RES_CODE_SUCCESS, @@ -3921,7 +3951,7 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error { FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE_1, "") PlayroomMod.ResetGame() player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_select_reward") - PlayroomBackData(player) + player.PlayroomBackData() player.PlayMod.save() player.PushClientRes(&msg.ResPlayroomSelectReward{ Code: msg.RES_CODE_SUCCESS, @@ -3972,7 +4002,7 @@ func ReqPlayroomWork(player *Player, buf []byte) error { }) player.PlayMod.save() player.PushClientRes(PlayroomMod.NotifyWork()) - // PlayroomBackData(player) + // player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomWork{ Code: msg.RES_CODE_SUCCESS, }) @@ -4011,7 +4041,7 @@ func ReqPlayroomDraw(player *Player, buf []byte) error { return err } player.PlayMod.save() - // PlayroomBackData(player) + // player.PlayroomBackData() player.PushClientRes(PlayroomMod.NotifyMood()) player.TeLog("playroom_draw", map[string]interface{}{ "draw_id": Id, @@ -4054,7 +4084,7 @@ func ReqPlayroomChip(player *Player, buf []byte) error { G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_CHIP_SET, len(PlayroomMod.ChipList)) player.PlayMod.save() - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomChip{ Code: msg.RES_CODE_SUCCESS, }) @@ -4083,7 +4113,7 @@ func ReqPlayroomFlip(player *Player, buf []byte) error { "Id": req.Id, }) player.PlayMod.save() - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomFlip{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, @@ -4142,7 +4172,7 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { }) player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_flip_reward") player.PlayMod.save() - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomFlipReward{ Code: msg.RES_CODE_SUCCESS, }) @@ -4261,7 +4291,7 @@ func ReqPlayroomUnlock(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, Id: int32(req.Id), }) - PlayroomBackData(player) + player.PlayroomBackData() return nil } @@ -4298,7 +4328,7 @@ func ReqPlayroomTask(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, Id: int32(req.Id), }) - PlayroomBackData(player) + player.PlayroomBackData() return nil } @@ -4477,7 +4507,7 @@ func ReqPlayroomShop(player *Player, buf []byte) error { player.PetItemGetLog(AddItems, LoseItem, "Shop") player.PlayMod.save() player.PushClientRes(PlayroomMod.NotifyMood()) - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomShop{ Code: msg.RES_CODE_SUCCESS, }) @@ -4695,7 +4725,7 @@ func ReqSetEmoji(player *Player, buf []byte) error { player.PushClientRes(&msg.ResSetEmoji{ Code: msg.RES_CODE_SUCCESS, }) - BackUserInfo(player) + player.BackUserInfo() return nil } @@ -4794,7 +4824,7 @@ func ReqPlayroomDressSet(player *Player, buf []byte) error { player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETDRESS, A: []interface{}{Parts}}) player.PlayMod.save() //player.PetDecoSetLog(Diff) - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomDressSet{ Code: msg.RES_CODE_SUCCESS, }) @@ -4817,7 +4847,7 @@ func ReqPlayroomPetAirSet(player *Player, buf []byte) error { return error } player.PlayMod.save() - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomPetAirSet{ Code: msg.RES_CODE_SUCCESS, }) @@ -4873,7 +4903,7 @@ func ReqActivityReward(player *Player, buf []byte) error { if err != nil { return err } - ActivityInfo := GetActivityInfo(player, int(req.Id)) + ActivityInfo := player.GetActivityInfo(int(req.Id)) if ActivityInfo == nil { player.SendErrClienRes(&msg.ResActivityReward{ Code: msg.RES_CODE_FAIL, @@ -4980,17 +5010,17 @@ func ReqAddNpc(player *Player, buf []byte) error { InviteMod.AddInvite(int(req.NpcId)) } player.PlayMod.save() - FriendListBackData(player) + player.FriendListBackData() PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointInvite(BaseMod.GetLevel()) PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() player.TeLog("add_npc", map[string]interface{}{ "NpcId": int(req.NpcId), }) - FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600) - FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING_Get, "", GoUtil.Now()+24*3600) + FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600, nil) + FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING_Get, "", GoUtil.Now()+24*3600, nil) player.AddLog(int(req.NpcId), friend.LOG_TYPE_FRIEND_BECOME_NPC, GoUtil.String(req.NpcId), GoUtil.Now()) player.PushClientRes(&msg.ResAddNpc{ Code: msg.RES_CODE_SUCCESS, @@ -5344,10 +5374,17 @@ func ReqCatnipInvite(player *Player, buf []byte) error { if err != nil { return err } - ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) - ActivityInfo := GetActivityInfo(player, ActivityId) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipInvite{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + ActivityInfo := player.GetActivityInfo(ActivityId) CatnipMod := player.PlayMod.getCatnipMod() - err = CatnipMod.Invite(int(req.Id), int(req.Uid)) + err = CatnipMod.Invite(int(req.Uid), int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_FAIL, @@ -5355,7 +5392,7 @@ func ReqCatnipInvite(player *Player, buf []byte) error { }) return err } - player.TeLog("catnip_invite", map[string]interface{}{ + player.TeLog("cats_garden_invite", map[string]interface{}{ "Id": int(req.Id), }) FriendMgrSend(&MsqMod.Msg{ @@ -5369,10 +5406,11 @@ func ReqCatnipInvite(player *Player, buf []byte) error { }, SendT: GoUtil.Now(), }) - + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_SUCCESS, + Uid: req.Uid, }) return nil } @@ -5384,8 +5422,15 @@ func ReqCatnipAgree(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) - UserList, err := CatnipMod.Agree(int(req.Id), int(req.Uid)) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipAgree{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + _, err = CatnipMod.Agree(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_FAIL, @@ -5401,7 +5446,7 @@ func ReqCatnipAgree(player *Player, buf []byte) error { }) return err } - player.TeLog("catnip_agree", map[string]interface{}{ + player.TeLog("cats_garden_accept_invite", map[string]interface{}{ "Id": int(req.Id), }) FriendMgrSend(&MsqMod.Msg{ @@ -5414,23 +5459,11 @@ func ReqCatnipAgree(player *Player, buf []byte) error { }, SendT: GoUtil.Now(), }) - - for _, v := range UserList { - FriendMgrSend(&MsqMod.Msg{ - From: int(player.M_DwUin), - To: int(v), - Type: MsqMod.HANDLE_TYPE_CATNIP_AGREE, - Extra: CatnipMsg{ - ActivityId: ActivityId, - GameId: int(req.Id), - }, - SendT: GoUtil.Now(), - }) - } - player.CatnipBackData() + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_SUCCESS, + Uid: req.Uid, }) return nil } @@ -5443,6 +5476,14 @@ func ReqCatnipMultiply(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipMultiply{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } err = CatnipMod.Multiply(int(req.Multiply)) if err != nil { player.SendErrClienRes(&msg.ResCatnipMultiply{ @@ -5454,10 +5495,11 @@ func ReqCatnipMultiply(player *Player, buf []byte) error { player.TeLog("catnip_multiply", map[string]interface{}{ "Mul": int(req.Multiply), }) - player.CatnipBackData() + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipMultiply{ - Code: msg.RES_CODE_SUCCESS, + Code: msg.RES_CODE_SUCCESS, + Multiply: req.Multiply, }) return nil } @@ -5470,7 +5512,15 @@ func ReqCatnipPlay(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - Id, Growth, PartnerId, Items, ItemCost, err := CatnipMod.Play(int(req.Id)) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + Id, Growth, PartnerId, Items, ItemCost, FriendItems, err := CatnipMod.Play(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_FAIL, @@ -5484,6 +5534,7 @@ func ReqCatnipPlay(player *Player, buf []byte) error { Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) + return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_CatnipPlay.String()) if err != nil { @@ -5491,17 +5542,18 @@ func ReqCatnipPlay(player *Player, buf []byte) error { Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) + return err } - player.TeLog("catnip_play", map[string]interface{}{ - "Id": int(req.Id), - "Growth": Growth, - "PartnerId": PartnerId, - "Items": Items, + player.TeLog("cats_garden_expend_token", map[string]interface{}{ + "friends_ID": PartnerId, + "multiple": CatnipMod.GetMultiple(), + "expend_num": ItemCost[0].Num, + "get_award": Items, }) if Growth > 0 { - player.CatnipGrowthMsg(PartnerId, int(req.Id), Growth) + player.CatnipGrowthMsg(PartnerId, int(req.Id), Growth, FriendItems*CatnipMod.Mul) } - player.CatnipBackData() + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_SUCCESS, @@ -5518,7 +5570,15 @@ func ReqCatnipReward(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - Items, err := CatnipMod.Reward(int(req.Id), int(req.Progress)) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + Items, GameInfo, err := CatnipMod.Reward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResCatnipReward{ Code: msg.RES_CODE_FAIL, @@ -5534,12 +5594,13 @@ func ReqCatnipReward(player *Player, buf []byte) error { }) return err } - player.TeLog("catnip_reward", map[string]interface{}{ - "Id": int(req.Id), - "Progress": int(req.Progress), - "Items": Items, + player.TeLog("cats_garden_stage_reward", map[string]interface{}{ + "Id": int(req.Id), + "friends_ID": GameInfo.Partner, + "friends_get_num": GameInfo.PartnerAdd, + "user_get_num": GameInfo.Progress - GameInfo.PartnerAdd, }) - player.CatnipBackData() + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipReward{ Code: msg.RES_CODE_SUCCESS, @@ -5555,6 +5616,14 @@ func ReqCatnipGrandReward(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } Items, err := CatnipMod.GrandReward() if err != nil { player.SendErrClienRes(&msg.ResCatnipGrandReward{ @@ -5571,9 +5640,10 @@ func ReqCatnipGrandReward(player *Player, buf []byte) error { }) return err } - player.TeLog("catnip_grand_reward", map[string]interface{}{ - "Items": Items, + player.TeLog("cats_garden_final_reward", map[string]interface{}{ + "get_reward": Items, }) + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipGrandReward{ Code: msg.RES_CODE_SUCCESS, @@ -5588,6 +5658,14 @@ func ReqCatnipRefuse(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipRefuse{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } err = CatnipMod.Refuse(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipRefuse{ @@ -5605,19 +5683,21 @@ func ReqCatnipRefuse(player *Player, buf []byte) error { Type: MsqMod.HANDLE_TYPE_CATNIP_REFUSE, SendT: GoUtil.Now(), Extra: CatnipMsg{ - ActivityId: GetActivityId(player, activity.ACT_TYPE_MINING), + ActivityId: player.GetActivityId(activity.ACT_TYPE_CATNIP), GameId: int(req.Id), }, }) + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipRefuse{ Code: msg.RES_CODE_SUCCESS, + Uid: req.Uid, }) return nil } func ReqActPass(player *Player, buf []byte) error { - ActPassBackData(player) + player.ActPassBackData() return nil } @@ -5684,7 +5764,7 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { }) } else { CatnipMod := player.PlayMod.getCatnipMod() - ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) + ActivityId := player.GetActivityId(activity.ACT_TYPE_MINING) UserList, _ := CatnipMod.Agree(GameId, ReplyInfo.Uid) player.TeLog("catnip_agree", map[string]interface{}{ "Id": int(GameId), @@ -5726,7 +5806,7 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { }) return err } - FriendLogBackData(player) + player.FriendLogBackData() player.PushClientRes(&msg.ResFriendReplyHandle{ Code: msg.RES_CODE_SUCCESS, LogId: req.LogId, @@ -5777,7 +5857,34 @@ func ReqCatnipEmoji(player *Player, buf []byte) error { return err } CatnipMod := player.PlayMod.getCatnipMod() - CatnipMod.SetEmoji(int(req.Id), int(req.EmojiId)) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipEmoji{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + GameInfo := CatnipMod.GetGameInfo(int(req.Id)) + if GameInfo.Partner == 0 { + player.SendErrClienRes(&msg.ResCatnipEmoji{ + Code: msg.RES_CODE_FAIL, + Msg: "no partner", + }) + return fmt.Errorf("no partner") + } + FriendMgrSend(&MsqMod.Msg{ + From: int(player.M_DwUin), + To: GameInfo.Partner, + Type: MsqMod.HANDLE_TYPE_CATNIP_SEND_EMOJI, + Extra: int(req.EmojiId), + }) + player.PushClientRes(&msg.ResCatnipEmoji{ + Code: msg.RES_CODE_SUCCESS, + EmojiId: req.EmojiId, + Id: req.Id, + }) + player.CatnipBackData() return nil } diff --git a/src/server/game/Trigger.go b/src/server/game/Trigger.go index 3e587327..4e9b475f 100644 --- a/src/server/game/Trigger.go +++ b/src/server/game/Trigger.go @@ -47,7 +47,7 @@ func (player *Player) MailTrigger(Tr *quest.Trigger) bool { } tr := false for _, v := range t { - if checkTriggerCondition(player, v.Trigger) { + if player.checkTriggerCondition(v.Trigger) { Title := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, v.Title) Content := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, v.Content) TitleEn := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, v.Title) @@ -76,7 +76,7 @@ func (player *Player) MailTrigger(Tr *quest.Trigger) bool { return tr } -func checkTriggerCondition(player *Player, Trigger []string) bool { +func (player *Player) checkTriggerCondition(Trigger []string) bool { if len(Trigger) < 4 { return false } @@ -93,11 +93,11 @@ func checkTriggerCondition(player *Player, Trigger []string) bool { } } -func TriggerShippingOrderOrigin(player *Player, req *msg.ReqShippingOrder) { +func (player *Player) TriggerShippingOrderOrigin(req *msg.ReqShippingOrder) { OrderSn := req.OrderSn Status := int(req.Status) if Status == MergeConst.ORDER_STATUS_CANCEL { // 取消支付 - CancelOrder(player, OrderSn) + player.CancelOrder(OrderSn) player.PushClientRes(&msg.ResShippingOrder{ Code: msg.RES_CODE_SUCCESS, Msg: "cancel success", @@ -132,9 +132,9 @@ func TriggerShippingOrderOrigin(player *Player, req *msg.ReqShippingOrder) { OrderExtraData.ChargeId = OrderData.ProductId } if OrderExtraData.Type == 0 { - Charge(player, int(OrderData.ProductId)) + player.Charge(int(OrderData.ProductId)) } else { - SendCharge(player, OrderExtraData) + player.SendCharge(OrderExtraData) } OrderData.PayStatus = MergeConst.ORDER_STATUS_SHIP OrderData.ProductName = req.ProduceId @@ -159,11 +159,11 @@ func TriggerShippingOrderOrigin(player *Player, req *msg.ReqShippingOrder) { player.SendClientRes() } -func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { +func (player *Player) TriggerShippingOrder(req *msg.ReqShippingOrder) { OrderSn := req.OrderSn Status := int(req.Status) if Status == MergeConst.ORDER_STATUS_CANCEL { // 取消支付 - CancelOrder(player, OrderSn) + player.CancelOrder(OrderSn) player.PushClientRes(&msg.ResShippingOrder{ Code: msg.RES_CODE_SUCCESS, Msg: "cancel success", @@ -178,7 +178,7 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { if n > 14 { break } - OrderData, err = GoogleVerify(player, OrderSn, req.ProduceId, req.Token) + OrderData, err = player.GoogleVerify(OrderSn, req.ProduceId, req.Token) if err != nil { log.Debug("GoogleVerify parmas OrderSn:%s; ProduceId:%s; Token:%s", OrderSn, req.ProduceId, req.Token) log.Debug("GoogleVerify err:%v", err) @@ -225,9 +225,9 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { OrderExtraData.ChargeId = OrderData.ProductId } if OrderExtraData.Type == 0 { - Charge(player, int(OrderData.ProductId)) + player.Charge(int(OrderData.ProductId)) } else { - SendCharge(player, OrderExtraData) + player.SendCharge(OrderExtraData) } OrderData.PayStatus = MergeConst.ORDER_STATUS_SHIP OrderData.ProductName = req.ProduceId @@ -249,7 +249,7 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { player.SendClientRes() } -func TriggerComfortOrder(p *Player) { +func (p *Player) TriggerComfortOrder() { BaseMod := p.PlayMod.getBaseMod() Now := GoUtil.Now() Lv := BaseMod.GetLevel() @@ -265,8 +265,8 @@ func TriggerComfortOrder(p *Player) { OrderMod.CreateNormalOrder(BaseMod.GetLevel(), EmitList, EnergyMul, order.COMFORT_TYPE) } -func TriggerSeed(player *Player) { - ChampshipMod := player.PlayMod.getChampshipMod() +func (p *Player) TriggerSeed() { + ChampshipMod := p.PlayMod.getChampshipMod() Items, Score := champshipCfg.GetRewardItems(ChampshipMod.Reward + 1) if Score < 50 { return @@ -278,7 +278,7 @@ func TriggerSeed(player *Player) { break } } - BaseMod := player.PlayMod.getBaseMod() + BaseMod := p.PlayMod.getBaseMod() if !b { BaseMod.SetSeed(false) } else { @@ -286,8 +286,8 @@ func TriggerSeed(player *Player) { } } -func TriggerSeedSource(player *Player) { - BaseMod := player.PlayMod.getBaseMod() +func (p *Player) TriggerSeedSource() { + BaseMod := p.PlayMod.getBaseMod() if !BaseMod.GetSeed() { return } @@ -295,7 +295,7 @@ func TriggerSeedSource(player *Player) { Energy := BaseMod.GetEnergy() Total += Energy - ChessMod := player.PlayMod.getChessMod() + ChessMod := p.PlayMod.getChessMod() ChessList := ChessMod.GetUnlockChessList() ChessBuff := ChessMod.GetChessBuf() AllChess := append(ChessList, ChessBuff...) @@ -322,15 +322,15 @@ func TriggerSeedSource(player *Player) { BaseMod.SetSource(Total) } -func TriggerSeedOrder(player *Player) *order.Order { - OrderMod := player.PlayMod.getOrderMod() - ChessMod := player.PlayMod.getChessMod() - BaseMod := player.PlayMod.getBaseMod() +func (p *Player) TriggerSeedOrder() *order.Order { + OrderMod := p.PlayMod.getOrderMod() + ChessMod := p.PlayMod.getChessMod() + BaseMod := p.PlayMod.getBaseMod() if !BaseMod.GetSeed() { return nil } OrderMod.CreatOrderPool(BaseMod.Level, ChessMod.GetOrderEmit(), BaseMod.EnergyMul) - ChampshipMod := player.PlayMod.getChampshipMod() + ChampshipMod := p.PlayMod.getChampshipMod() NeedScore := champshipCfg.GetRewardTotalScore(ChampshipMod.Reward + 1) E := BaseMod.GetSource() ChessList := ChessMod.GetUnlockChessList() diff --git a/src/server/game/Type.go b/src/server/game/Type.go index 9ff8994d..55d416d4 100644 --- a/src/server/game/Type.go +++ b/src/server/game/Type.go @@ -86,9 +86,10 @@ type GameResult struct { } type CatnipMsg struct { - ActivityId int - GameId int - Growth int // 增长值 + ActivityId int + GameId int + Growth int // 增长值 + FriendItems int // 赠送好友的道具数量 } type CatnipLock struct { @@ -108,6 +109,6 @@ func init() { gob.Register(&ActivityInfo{}) gob.Register(&ChargeExtra{}) gob.Register(&GameResult{}) - gob.Register(&CatnipMsg{}) + gob.Register(CatnipMsg{}) gob.Register(&CatnipLock{}) } diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index a7ada801..25662c4a 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -1,6 +1,8 @@ package game import ( + "bytes" + "encoding/gob" "fmt" "math" mergeDataCfg "server/conf/mergeData" @@ -133,8 +135,8 @@ func UnitOrderSeed(player *Player) error { BaseMod := player.PlayMod.getBaseMod() BaseMod.Seed = true - TriggerSeedSource(player) - o := TriggerSeedOrder(player) + player.TriggerSeedSource() + o := player.TriggerSeedOrder() fmt.Println(o) elapsed := time.Since(start) @@ -273,16 +275,15 @@ func UnitOrder2(p *Player, Lv, EnergyMul int) float64 { func UnitChess1(p *Player) error { ChessMod := p.PlayMod.getChessMod() p.PushClientRes(ChessMod.BackData()) - EmitRetireTrigger1(p) + p.EmitRetireTrigger1() DailyTaskMod := p.PlayMod.getDailyTaskMod() p.PushClientRes(DailyTaskMod.BackData()) return nil } func UnitPlayroom(p *Player) error { - //PlayroomMod := p.PlayMod.getPlayroomMod() - //PlayroomMod.UnLock(15) - PlayroomBackData(p) + + p.PlayroomBackData() return nil } @@ -371,3 +372,21 @@ func UnitOrderPetReward(p *Player) error { } return nil } + +func UnitCatnip(p *Player) error { + //OrderMod := p.PlayMod.getOrderMod() + //KvMod := p.PlayMod.getKvMod() + ChessMod := p.PlayMod.getChessMod() + var buf bytes.Buffer + encode := gob.NewEncoder(&buf) + encode.Encode(ChessMod) + fmt.Printf("buf len:%dk\n", buf.Len()/1024) + return nil +} + +func Benchmark(player *Player) { + ChampshipMod := player.PlayMod.getChampshipMod() + ChampshipMod.AddScore([]int{949, 941, 10}) + player.HandleInChampshipRank() + player.HandleInUserRank() +} diff --git a/src/server/game/VarMgr.go b/src/server/game/VarMgr.go index 14897ea4..70c343f4 100644 --- a/src/server/game/VarMgr.go +++ b/src/server/game/VarMgr.go @@ -48,6 +48,9 @@ func (f *VarMgr) Init() { if f.data.(*VarData).UserVar == nil { f.data.(*VarData).UserVar = make(map[string]*VarUserData) } + if f.data.(*VarData).VarExpire == nil { + f.data.(*VarData).VarExpire = make(map[string]*VarExpireData) + } if f.getData().ZeroTime == GoUtil.ZeroTimestamp() { f.ZeroUpdate(&msg.Msg{}) } @@ -86,18 +89,21 @@ func (f *VarMgr) SetCatnipPartner(m *msg.Msg) (interface{}, error) { MyUid := GoUtil.Int(Param["uid"]) CatnipGameId := GoUtil.Int(Param["game_id"]) CatnipPartnerId := GoUtil.Int(Param["partner_uid"]) - myKey := fmt.Sprintf("catnip_partner_%d_%d", MyUid, CatnipGameId) - key := fmt.Sprintf("catnip_partner_%d_%d", CatnipPartnerId, CatnipGameId) - PartnerInfo := f.GetExpireVar(key) - if PartnerInfo.D != nil { - return nil, fmt.Errorf("catnip partner already set for uid %d in game %d", CatnipPartnerId, CatnipGameId) + myKey := fmt.Sprintf("catnip_partner_%d", MyUid) + key := fmt.Sprintf("catnip_partner_%d", CatnipPartnerId) + OtherPartnerInfo := f.GetExpireVar(key) + MyPartnerInfo := f.GetExpireVar(myKey) + MyOfPartnerList := GoUtil.IntSlice(MyPartnerInfo.D) + OtherOfPartnerList := GoUtil.IntSlice(OtherPartnerInfo.D) + if len(MyOfPartnerList) > 4 || len(OtherOfPartnerList) > 4 { + return nil, fmt.Errorf("catnip partner already full for uid %d in game %d", CatnipPartnerId, CatnipGameId) } f.SetExpireVar(key, &VarExpireData{ - D: MyUid, + D: append(OtherOfPartnerList, MyUid), T: m.End, }) f.SetExpireVar(myKey, &VarExpireData{ - D: CatnipPartnerId, + D: append(MyOfPartnerList, CatnipPartnerId), T: m.End, }) return nil, nil diff --git a/src/server/game/admin.go b/src/server/game/admin.go index 59c8befc..ba4a62e1 100644 --- a/src/server/game/admin.go +++ b/src/server/game/admin.go @@ -134,7 +134,7 @@ func ReqAdminShipping(args []interface{}) error { } Player := G_GameLogicPtr.GetPlayer(int64(OrderInfo.Uid)) if Player != nil { - go TriggerShippingOrderOrigin(Player, &msg.ReqShippingOrder{ + go Player.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{ OrderSn: req.OrderSn, }) res["Msg"] = "player online,triggered sync" diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index 9eef0a8b..ab86953d 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -10,8 +10,10 @@ import ( type CatnipMod struct { Id int Game map[int]*CatnipGame - Mul int // 倍数 - IsGetGrandReward bool // 是否领取过大丰收奖励 + Mul int // 倍数 + IsGetGrandReward bool // 是否领取过大丰收奖励 + InviteList map[int]*InviteInfo // 邀请列表,key: 邀请者ID, value: 被邀请者ID + BeInvitedList map[int]*InviteInfo // 被邀请列表,key: 被邀请者ID, value: 邀请者ID } type InviteInfo struct { @@ -20,15 +22,14 @@ type InviteInfo struct { } type CatnipGame struct { - Id int // 游戏ID - Partner int // 伙伴ID - Progress int // 进度 - PartnerAdd int // 伙伴贡献 - Reward []int // 已领取阶段奖励 - Status int // 0: Not Started, 1: In Progress, 2: Completed - InviteList map[int]*InviteInfo // 邀请列表,key: 邀请者ID, value: 被邀请者ID - BeInvitedList map[int]*InviteInfo // 被邀请列表,key: 被邀请者ID, value: 邀请者ID - EmojiId int // 表情ID + Id int // 游戏ID + Partner int // 伙伴ID + Progress int // 进度 + PartnerAdd int // 伙伴贡献 + Reward []int // 已领取阶段奖励 + Status int // 0: Not Started, 1: In Progress, 2: Completed + + EmojiId int // 表情ID } const ( @@ -43,6 +44,12 @@ func (c *CatnipMod) InitData() { if c.Game == nil { c.Game = make(map[int]*CatnipGame) } + if c.InviteList == nil { + c.InviteList = make(map[int]*InviteInfo) + } + if c.BeInvitedList == nil { + c.BeInvitedList = make(map[int]*InviteInfo) + } } func (c *CatnipMod) Login(Id int) int { @@ -59,14 +66,14 @@ func (c *CatnipMod) Login(Id int) int { c.Game = make(map[int]*CatnipGame) c.Mul = 1 // Default multiplier GameNum := catnipCfg.GetGameNum(c.Id) // Assuming 1 is the default game ID + c.InviteList = make(map[int]*InviteInfo) + c.BeInvitedList = make(map[int]*InviteInfo) for i := 1; i <= GameNum; i++ { c.Game[i] = &CatnipGame{ - Id: i, - Partner: 0, // No partner initially - Progress: 0, // Initial progress - Status: GAME_STATUS_IDLE, // Not started - InviteList: make(map[int]*InviteInfo), // Initialize invite list - BeInvitedList: make(map[int]*InviteInfo), // Initialize be invited list + Id: i, + Partner: 0, // No partner initially + Progress: 0, // Initial progress + Status: GAME_STATUS_IDLE, // Not started } } return c.Id @@ -76,75 +83,75 @@ func (c *CatnipMod) ZeroUpdate(Id int) { c.Login(Id) } -func (c *CatnipMod) Invite(Id, Uid int) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != 0 { - return fmt.Errorf("game with ID %d is already in progress or completed", Id) +func (c *CatnipMod) Invite(Uid, Id int) error { + if c.InviteList[Uid] != nil { + return fmt.Errorf("user with ID %d is already invited", Uid) } - if GameInfo.InviteList[Uid] != nil { - return fmt.Errorf("user with ID %d is already invited to game ID %d", Uid, Id) - } - - GameInfo.InviteList[Uid] = &InviteInfo{ - InviteId: Uid, + c.InviteList[Uid] = &InviteInfo{ + InviteId: Id, Time: GoUtil.Now(), } return nil } -func (c *CatnipMod) BeInvited(Id, Uid int, Time int64) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != GAME_STATUS_IDLE { - return fmt.Errorf("game with ID %d is already in progress or completed", Id) - } +func (c *CatnipMod) BeInvited(Uid int, Time int64) error { // Check if the user is already invited - invite := GameInfo.BeInvitedList[Uid] - if invite != nil && invite.InviteId == Id { - return fmt.Errorf("user with ID %d has already been invited to game ID %d", Uid, Id) + invite := c.BeInvitedList[Uid] + if invite != nil { + return fmt.Errorf("user with ID %d has already been invited ", Uid) } - GameInfo.BeInvitedList[Uid] = &InviteInfo{ - InviteId: Id, + c.BeInvitedList[Uid] = &InviteInfo{ + InviteId: Uid, Time: Time, } return nil } func (c *CatnipMod) Agree(Id, Uid int) ([]int, error) { - GameInfo, ok := c.Game[Id] - if !ok { - return nil, fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != GAME_STATUS_IDLE { - return nil, fmt.Errorf("game with ID %d is already in progress or completed", Id) - } - // Check if the user is in the invite list - _, exists := GameInfo.InviteList[Uid] + _, exists := c.BeInvitedList[Uid] if !exists { return nil, fmt.Errorf("user with ID %d is not invited to game ID %d", Uid, Id) } // Remove the invite after agreeing - delete(GameInfo.InviteList, Uid) - GameInfo.Partner = Uid // Set the partner for the game - GameInfo.Status = GAME_STATUS_COMPLETED // Set the game status to completed + + delete(c.BeInvitedList, Uid) + for _, GameInfo := range c.Game { + if GameInfo.Partner == 0 { + GameInfo.Partner = Uid + GameInfo.Status = GAME_STATUS_IN_PROGRESS + return []int{}, nil + } + } + return []int{}, nil +} + +func (c *CatnipMod) BeAgree(Id, Uid int) ([]int, error) { + info, exists := c.InviteList[Uid] + if !exists { + return nil, fmt.Errorf("user with ID %d is not invited to game ID %d", Uid, Id) + } + // Remove the invite after agreeing + GameInfo := c.Game[info.InviteId] + if GameInfo.Partner == 0 { + GameInfo.Partner = Uid + GameInfo.Status = GAME_STATUS_IN_PROGRESS + delete(c.InviteList, Uid) + return []int{}, nil + } + delete(c.InviteList, Uid) + for _, GameInfo := range c.Game { + if GameInfo.Partner == 0 { + GameInfo.Partner = Uid + GameInfo.Status = GAME_STATUS_IN_PROGRESS + return []int{}, nil + } + } return []int{}, nil } func (c *CatnipMod) DelInvited(Id, Uid int) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != GAME_STATUS_IDLE { - return fmt.Errorf("game with ID %d is already in progress or completed", Id) - } - delete(GameInfo.InviteList, Uid) + delete(c.InviteList, Uid) return nil } @@ -154,44 +161,39 @@ func (c *CatnipMod) Multiply(Mul int) error { } func (c *CatnipMod) Refuse(Id, Uid int) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != GAME_STATUS_IDLE { - return fmt.Errorf("game with ID %d is already in progress or completed", Id) - } - delete(GameInfo.BeInvitedList, Uid) + delete(c.BeInvitedList, Uid) return nil } -func (c *CatnipMod) Play(Id int) (int, int, int, []*item.Item, []*item.Item, error) { +func (c *CatnipMod) Play(Id int) (int, int, int, []*item.Item, []*item.Item, int, error) { GameInfo, ok := c.Game[Id] if !ok { - return 0, 0, 0, nil, nil, fmt.Errorf("game with ID %d does not exist", Id) + return 0, 0, 0, nil, nil, 0, fmt.Errorf("game with ID %d does not exist", Id) } - Id, Items, Growth := catnipCfg.GetJackpotItem(c.Mul) + if GameInfo.Status != GAME_STATUS_IN_PROGRESS { + return 0, 0, 0, nil, nil, 0, fmt.Errorf("game with ID %d is not in progress", Id) + } + Id, Items, Growth, FriendItems := catnipCfg.GetJackpotItem(c.Mul) + Growth = Growth * c.Mul if Growth > 0 { c.Growth(Id, Growth) } ItemCost := catnipCfg.GetItemCost(c.Id, c.Mul) GameInfo.Progress += Growth - return Id, Growth, GameInfo.Partner, Items, ItemCost, nil + return Id, Growth, GameInfo.Partner, Items, ItemCost, FriendItems, nil } -func (c *CatnipMod) Reward(Id, Progress int) ([]*item.Item, error) { +func (c *CatnipMod) Reward(Id int) ([]*item.Item, *CatnipGame, error) { GameInfo, ok := c.Game[Id] if !ok { - return nil, fmt.Errorf("game with Progress %d does not exist", Id) + return nil, nil, fmt.Errorf("game with Progress %d does not exist", Id) } - if GameInfo.Progress < Progress { - return nil, fmt.Errorf("game with ID %d has not reached the required progress %d", Id, Progress) + Items, Ids := catnipCfg.GetProgressReward(c.Id, GameInfo.Reward, GameInfo.Progress) + GameInfo.Reward = append(GameInfo.Reward, Ids...) + if Items == nil { + return nil, nil, fmt.Errorf("no reward found for progress %d in game ID %d", GameInfo.Progress, Id) } - if GoUtil.InArray(Progress, GameInfo.Reward) { - return nil, fmt.Errorf("reward for progress %d has already been claimed in game ID %d", Progress, Id) - } - GameInfo.Reward = append(GameInfo.Reward, Progress) - return catnipCfg.GetProgressReward(c.Id, Progress), nil + return Items, GameInfo, nil } func (c *CatnipMod) GrandReward() ([]*item.Item, error) { @@ -216,16 +218,37 @@ func (c *CatnipMod) Growth(Id, Growth int) { return // Game is not in progress } GameInfo.Progress += Growth - if GameInfo.Progress >= catnipCfg.GetGameNum(Id) { // Assuming the game ends when progress reaches a certain threshold + if GameInfo.Progress >= catnipCfg.GetGameMaxProgress(c.Id) { // Assuming the game ends when progress reaches a certain threshold GameInfo.Status = GAME_STATUS_COMPLETED } } -func (c *CatnipMod) SetEmoji(Id, EmojiId int) { - GameInfo, ok := c.Game[Id] - if !ok { - return // Game does not exist +func (c *CatnipMod) GrowthByUid(Uid, Growth int) { + for _, v := range c.Game { + if v.Partner == Uid { + v.Progress += Growth + v.PartnerAdd += Growth + if v.Progress >= catnipCfg.GetGameMaxProgress(c.Id) { // Assuming the game ends when progress reaches a certain threshold + v.Status = GAME_STATUS_COMPLETED + } + } } - // Here we can set the emoji for the game. This is a placeholder implementation. - GameInfo.EmojiId = EmojiId + +} + +func (c *CatnipMod) SetEmoji(Uid, EmojiId int) { + for _, v := range c.Game { + if v.Partner == Uid { + v.EmojiId = EmojiId + return + } + } +} + +func (c *CatnipMod) GetMultiple() int { + return c.Mul +} + +func (c *CatnipMod) GetGameInfo(Id int) *CatnipGame { + return c.Game[Id] } diff --git a/src/server/game/mod/decorate/Decorate.go b/src/server/game/mod/decorate/Decorate.go index a0703315..ed04d977 100644 --- a/src/server/game/mod/decorate/Decorate.go +++ b/src/server/game/mod/decorate/Decorate.go @@ -185,7 +185,7 @@ func (d *Decorate) GetDecorateReward(areaId int) ([]*item.Item, error) { return nil, fmt.Errorf("areaId already rewarded") } d.AreaReward = append(d.AreaReward, areaId) - return decorateCfg.GetDecoarteReward(areaId, 20), nil + return decorateCfg.GetAreaReward(areaId), nil } func (d *Decorate) GetAreaId() int { diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index 88297eda..3623036d 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -35,6 +35,7 @@ type ReplyInfo struct { AddTime int64 ReplyTime int64 EndTime int64 + Items []*item.Item } type ActLogInfo struct { @@ -69,7 +70,8 @@ type ApplyInfo struct { const ( REPLY_TYPE_GREETING = 1 // 问候 REPLY_TYPE_GREETING_Get = 2 // 收到问候 - REPLY_TYPE_CATNIP = 3 // 猫薄荷 + REPLY_TYPE_CATNIP = 3 // 猫薄荷加好友 + REPLY_TYPE_CATNIP_ITEMS = 4 // 收到猫薄荷好友道具 ) // 24小时内与玩家进行过以下互动的用户,若被选中参加本次宠物宝藏,在其头像旁添加礼物盒 @@ -500,9 +502,8 @@ func (f *FriendMod) GetActLogLast() *ActLogInfo { return f.ActivityLog[len(f.ActivityLog)-1] } -func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string, EndTime int64) { +func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string, EndTime int64, Items []*item.Item) { f.AutoId++ - f.ReplyList = append(f.ReplyList, &ReplyInfo{ Id: f.AutoId, Uid: Uid, @@ -511,6 +512,7 @@ func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string, EndTime int64) Status: 0, AddTime: GoUtil.Now(), EndTime: EndTime, + Items: Items, }) } diff --git a/src/server/game/mod/guessColor/guessColor.go b/src/server/game/mod/guessColor/guessColor.go index 532989bd..4c13e32d 100644 --- a/src/server/game/mod/guessColor/guessColor.go +++ b/src/server/game/mod/guessColor/guessColor.go @@ -89,9 +89,11 @@ func (g *GuessColorMod) FirstIn() []*item.Item { } func (g *GuessColorMod) Take(Map map[int32]int32, OMap map[int32]int32) { - g.MapList = append(g.MapList, Map) + if len(Map) > 0 { + g.MapList = append(g.MapList, Map) + g.Guess++ + } g.OMap = OMap - g.Guess++ } func (g *GuessColorMod) GetLoseItem() []*item.Item { diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index 623af111..22415fee 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -110,7 +110,8 @@ const ( HANDLE_TYPE_CHAMPSHIP_LOGIN // 锦标赛登录 HANDLE_TYPE_CHAMPSHIP_RANK_INFO // 锦标赛排名信息 - HANDLE_TYPE_SET_CATNIP_PARTNER + HANDLE_TYPE_SET_CATNIP_PARTNER // 设置猫薄荷伙伴 + HANDLE_TYPE_CATNIP_SEND_EMOJI // 发送猫薄荷表情 ) const ( diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index c286cfe4..91cabb17 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -501,7 +501,7 @@ func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul, OrderType int) ( } //获取订单体力范围和棋子数量 MinEnergy, MaxEnergy, ChessNum := getChessByDiff(lv, OrderDiff, OrderType) - mergeList := getChessFromPoolByEnergy(o, MinEnergy, MaxEnergy, ChessNum, Emit, EnergyMul, OrderDiff) + mergeList := getChessFromPoolByEnergy(o, MinEnergy, MaxEnergy, ChessNum, Emit, EnergyMul, OrderDiff, OrderType) return mergeList, OrderDiff, nil } @@ -626,7 +626,7 @@ func ShuffleColor(List []string, Last string) []string { } // 获取发射器系列 -func getEmitSeries(o *OrderMod, Emit []int) string { +func getEmitSeries(o *OrderMod, Emit []int, OrderType int) string { o.initColorShuffle(Emit) PopEmitId := "" NewSlice := make([]string, 0) @@ -652,6 +652,14 @@ func getEmitSeries(o *OrderMod, Emit []int) string { if o.LastColor == PopEmitId { continue } + + if OrderType == Pet_type { + EmitId := getEmitBySeries(Emit, PopEmitId) + EmitInfo, _ := mergeDataCfg.GetOne(EmitId) + if EmitInfo.Emit_Type == "auto" { + continue + } + } PopEmitIdProductNum := mergeDataCfg.GetEmitProductNumByColor(PopEmitId) o.initColorShuffle(Emit) // 单链棋子 且订单中已有两个 跳过 @@ -845,10 +853,10 @@ func (o *OrderMod) getChessIdPool(Emit []int, Color string, EnergyMul, Lv, MinEn } return Chess, ChessLv } -func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, Emit []int, EnergyMul, OrderDiff int) []int { +func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, Emit []int, EnergyMul, OrderDiff, OrderType int) []int { ColorArr := make([]string, 0) for i := 0; i < ChessNum; i++ { - ColorArr = append(ColorArr, getEmitSeries(o, Emit)) + ColorArr = append(ColorArr, getEmitSeries(o, Emit, OrderType)) } if len(ColorArr) == 2 && ColorArr[0] == ColorArr[1] { log.Default() @@ -876,7 +884,7 @@ func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, E // 从棋子池中获取棋子 func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) int { - Color := getEmitSeries(o, Emit) + Color := getEmitSeries(o, Emit, 0) EmitChessId := getEmitBySeries(Emit, Color) //ColorRand := mergeDataCfg.GetEmitProduceType(EmitChessId) // 从棋子池中获取棋子 diff --git a/src/server/gamedata/type.go b/src/server/gamedata/type.go index 0268123a..2bb48771 100644 --- a/src/server/gamedata/type.go +++ b/src/server/gamedata/type.go @@ -16,6 +16,7 @@ type MergeDataRecord struct { Type string `json:"Type"` Emit_Product string `json:"Emit_Product"` Color string `json:"Color"` + Emit_Type string `json:"Emit_Type"` } type StartOrderData struct { diff --git a/src/server/go.mod b/src/server/go.mod index b5f48239..5dd700d0 100644 --- a/src/server/go.mod +++ b/src/server/go.mod @@ -11,7 +11,6 @@ require ( github.com/alibabacloud-go/tea-utils/v2 v2.0.7 github.com/aliyun/credentials-go v1.4.6 github.com/go-sql-driver/mysql v1.8.1 - github.com/gorilla/mux v1.8.1 github.com/gorilla/websocket v1.5.3 github.com/jmoiron/sqlx v1.4.0 github.com/redis/go-redis/v9 v9.6.1 @@ -61,9 +60,9 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/google/uuid v1.6.0 // indirect + github.com/tuyou/galog v0.0.0 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - github.com/tuyou/galog v0.0.0 ) replace github.com/tuyou/galog => ./galog diff --git a/src/server/go.sum b/src/server/go.sum index 8db7fcaf..f3a9147f 100644 --- a/src/server/go.sum +++ b/src/server/go.sum @@ -124,8 +124,6 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= -github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index ffba600c..6e023587 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -1081,6 +1081,61 @@ func (ActLogType) EnumDescriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{11} } +type FRIEND_REPLY_TYPE int32 + +const ( + FRIEND_REPLY_TYPE_FRIEND_REPLY_TYPE_NONE FRIEND_REPLY_TYPE = 0 // 默认 + FRIEND_REPLY_TYPE_FRIEND_REPLY_TYPE_GREET FRIEND_REPLY_TYPE = 1 // 打招呼 + FRIEND_REPLY_TYPE_FRIEND_REPLY_TYPE_RETURN_GREET FRIEND_REPLY_TYPE = 2 // 被打招呼 + FRIEND_REPLY_TYPE_REPLY_TYPE_CATNIP FRIEND_REPLY_TYPE = 3 // 猫薄荷加好友 + FRIEND_REPLY_TYPE_REPLY_TYPE_CATNIP_ITEMS FRIEND_REPLY_TYPE = 4 // 收到猫薄荷好友道具 +) + +// Enum value maps for FRIEND_REPLY_TYPE. +var ( + FRIEND_REPLY_TYPE_name = map[int32]string{ + 0: "FRIEND_REPLY_TYPE_NONE", + 1: "FRIEND_REPLY_TYPE_GREET", + 2: "FRIEND_REPLY_TYPE_RETURN_GREET", + 3: "REPLY_TYPE_CATNIP", + 4: "REPLY_TYPE_CATNIP_ITEMS", + } + FRIEND_REPLY_TYPE_value = map[string]int32{ + "FRIEND_REPLY_TYPE_NONE": 0, + "FRIEND_REPLY_TYPE_GREET": 1, + "FRIEND_REPLY_TYPE_RETURN_GREET": 2, + "REPLY_TYPE_CATNIP": 3, + "REPLY_TYPE_CATNIP_ITEMS": 4, + } +) + +func (x FRIEND_REPLY_TYPE) Enum() *FRIEND_REPLY_TYPE { + p := new(FRIEND_REPLY_TYPE) + *p = x + return p +} + +func (x FRIEND_REPLY_TYPE) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FRIEND_REPLY_TYPE) Descriptor() protoreflect.EnumDescriptor { + return file_proto_Gameapi_proto_enumTypes[12].Descriptor() +} + +func (FRIEND_REPLY_TYPE) Type() protoreflect.EnumType { + return &file_proto_Gameapi_proto_enumTypes[12] +} + +func (x FRIEND_REPLY_TYPE) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FRIEND_REPLY_TYPE.Descriptor instead. +func (FRIEND_REPLY_TYPE) EnumDescriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{12} +} + type ClientReq struct { state protoimpl.MessageState `protogen:"open.v1"` Func string `protobuf:"bytes,1,opt,name=func,proto3" json:"func,omitempty"` // serverMode/functionID @@ -7243,27 +7298,27 @@ func (x *ResDecorateAll) GetMsg() string { return "" } -type ReqDecorateReward struct { +type ReqAreaReward struct { state protoimpl.MessageState `protogen:"open.v1"` AreaId int32 `protobuf:"varint,1,opt,name=AreaId,proto3" json:"AreaId,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *ReqDecorateReward) Reset() { - *x = ReqDecorateReward{} +func (x *ReqAreaReward) Reset() { + *x = ReqAreaReward{} mi := &file_proto_Gameapi_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ReqDecorateReward) String() string { +func (x *ReqAreaReward) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReqDecorateReward) ProtoMessage() {} +func (*ReqAreaReward) ProtoMessage() {} -func (x *ReqDecorateReward) ProtoReflect() protoreflect.Message { +func (x *ReqAreaReward) ProtoReflect() protoreflect.Message { mi := &file_proto_Gameapi_proto_msgTypes[108] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7275,19 +7330,19 @@ func (x *ReqDecorateReward) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReqDecorateReward.ProtoReflect.Descriptor instead. -func (*ReqDecorateReward) Descriptor() ([]byte, []int) { +// Deprecated: Use ReqAreaReward.ProtoReflect.Descriptor instead. +func (*ReqAreaReward) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{108} } -func (x *ReqDecorateReward) GetAreaId() int32 { +func (x *ReqAreaReward) GetAreaId() int32 { if x != nil { return x.AreaId } return 0 } -type ResDecorateReward struct { +type ResAreaReward struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` @@ -7295,20 +7350,20 @@ type ResDecorateReward struct { sizeCache protoimpl.SizeCache } -func (x *ResDecorateReward) Reset() { - *x = ResDecorateReward{} +func (x *ResAreaReward) Reset() { + *x = ResAreaReward{} mi := &file_proto_Gameapi_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ResDecorateReward) String() string { +func (x *ResAreaReward) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ResDecorateReward) ProtoMessage() {} +func (*ResAreaReward) ProtoMessage() {} -func (x *ResDecorateReward) ProtoReflect() protoreflect.Message { +func (x *ResAreaReward) ProtoReflect() protoreflect.Message { mi := &file_proto_Gameapi_proto_msgTypes[109] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7320,19 +7375,19 @@ func (x *ResDecorateReward) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ResDecorateReward.ProtoReflect.Descriptor instead. -func (*ResDecorateReward) Descriptor() ([]byte, []int) { +// Deprecated: Use ResAreaReward.ProtoReflect.Descriptor instead. +func (*ResAreaReward) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{109} } -func (x *ResDecorateReward) GetCode() RES_CODE { +func (x *ResAreaReward) GetCode() RES_CODE { if x != nil { return x.Code } return RES_CODE_FAIL } -func (x *ResDecorateReward) GetMsg() string { +func (x *ResAreaReward) GetMsg() string { if x != nil { return x.Msg } @@ -15102,6 +15157,7 @@ type ResFriendReply struct { AddTime int64 `protobuf:"varint,5,opt,name=AddTime,proto3" json:"AddTime,omitempty"` // 添加时间 EndTime int64 `protobuf:"varint,6,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // Player *ResPlayerSimple `protobuf:"bytes,7,opt,name=Player,proto3" json:"Player,omitempty"` // 玩家信息 + Items []*ItemInfo `protobuf:"bytes,8,rep,name=Items,proto3" json:"Items,omitempty"` // 奖励 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -15185,11 +15241,18 @@ func (x *ResFriendReply) GetPlayer() *ResPlayerSimple { return nil } +func (x *ResFriendReply) GetItems() []*ItemInfo { + if x != nil { + return x.Items + } + return nil +} + type ReqFriendReplyHandle struct { state protoimpl.MessageState `protogen:"open.v1"` LogId int32 `protobuf:"varint,1,opt,name=LogId,proto3" json:"LogId,omitempty"` // 时间线id Param string `protobuf:"bytes,2,opt,name=Param,proto3" json:"Param,omitempty"` // 回复内容 - Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 回复类型 1:打招呼 2:删除 3:查看 + Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 回复类型 1:处理 2:删除 3:查看 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -25868,12 +25931,13 @@ func (*ReqCatnip) Descriptor() ([]byte, []int) { type ResCatnip struct { state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 活动id - Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 - EndTime int32 `protobuf:"varint,3,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // 结束时间 - Template int32 `protobuf:"varint,4,opt,name=Template,proto3" json:"Template,omitempty"` // 模板 - GameList []*CatnipGame `protobuf:"bytes,5,rep,name=GameList,proto3" json:"GameList,omitempty"` // 小游戏列表 - Multiply int32 `protobuf:"varint,6,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 活动id + Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 + EndTime int32 `protobuf:"varint,3,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // 结束时间 + Template int32 `protobuf:"varint,4,opt,name=Template,proto3" json:"Template,omitempty"` // 模板 + GameList []*CatnipGame `protobuf:"bytes,5,rep,name=GameList,proto3" json:"GameList,omitempty"` // 小游戏列表 + Multiply int32 `protobuf:"varint,6,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 + FriendList []*CatnipInvite `protobuf:"bytes,7,rep,name=FriendList,proto3" json:"FriendList,omitempty"` // 好友列表 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -25950,19 +26014,25 @@ func (x *ResCatnip) GetMultiply() int32 { return 0 } +func (x *ResCatnip) GetFriendList() []*CatnipInvite { + if x != nil { + return x.FriendList + } + return nil +} + // 小游戏信息 type CatnipGame struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id - Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 - Progress int32 `protobuf:"varint,3,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 - Reward []int32 `protobuf:"varint,4,rep,packed,name=Reward,proto3" json:"Reward,omitempty"` // 已领取进度奖励列表 [100,150,200] - Partner *ResPlayerSimple `protobuf:"bytes,5,opt,name=Partner,proto3" json:"Partner,omitempty"` // 伙伴 - InviteList []*CatnipInvite `protobuf:"bytes,6,rep,name=InviteList,proto3" json:"InviteList,omitempty"` // 邀请列表 - BeInviteList []*CatnipInvite `protobuf:"bytes,7,rep,name=BeInviteList,proto3" json:"BeInviteList,omitempty"` // 被邀请列表 - Emoji int32 `protobuf:"varint,8,opt,name=Emoji,proto3" json:"Emoji,omitempty"` // 表情id - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id + Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 + Progress int32 `protobuf:"varint,3,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 + Reward []int32 `protobuf:"varint,4,rep,packed,name=Reward,proto3" json:"Reward,omitempty"` // 已领取进度奖励列表 [100,150,200] + Partner *ResPlayerSimple `protobuf:"bytes,5,opt,name=Partner,proto3" json:"Partner,omitempty"` // 伙伴 + Emoji int32 `protobuf:"varint,6,opt,name=Emoji,proto3" json:"Emoji,omitempty"` // 表情id + FriendProgress int32 `protobuf:"varint,7,opt,name=FriendProgress,proto3" json:"FriendProgress,omitempty"` // 好友进度 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CatnipGame) Reset() { @@ -26030,20 +26100,6 @@ func (x *CatnipGame) GetPartner() *ResPlayerSimple { return nil } -func (x *CatnipGame) GetInviteList() []*CatnipInvite { - if x != nil { - return x.InviteList - } - return nil -} - -func (x *CatnipGame) GetBeInviteList() []*CatnipInvite { - if x != nil { - return x.BeInviteList - } - return nil -} - func (x *CatnipGame) GetEmoji() int32 { if x != nil { return x.Emoji @@ -26051,10 +26107,19 @@ func (x *CatnipGame) GetEmoji() int32 { return 0 } +func (x *CatnipGame) GetFriendProgress() int32 { + if x != nil { + return x.FriendProgress + } + return 0 +} + type CatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` - Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id - Time int64 `protobuf:"varint,2,opt,name=Time,proto3" json:"Time,omitempty"` // 邀请时间 + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id + Time int64 `protobuf:"varint,2,opt,name=Time,proto3" json:"Time,omitempty"` // 邀请时间 + Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 状态 0 可以邀请,1 已邀请 2 被邀请 3 已满员 + Player *ResPlayerSimple `protobuf:"bytes,4,opt,name=Player,proto3" json:"Player,omitempty"` // 好友信息 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26103,6 +26168,20 @@ func (x *CatnipInvite) GetTime() int64 { return 0 } +func (x *CatnipInvite) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + +func (x *CatnipInvite) GetPlayer() *ResPlayerSimple { + if x != nil { + return x.Player + } + return nil +} + // 邀请好友 type ReqCatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26160,6 +26239,7 @@ type ResCatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Uid int64 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26208,6 +26288,13 @@ func (x *ResCatnipInvite) GetMsg() string { return "" } +func (x *ResCatnipInvite) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + // 同意邀请 type ReqCatnipAgree struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26265,6 +26352,7 @@ type ResCatnipAgree struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Uid int64 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26313,6 +26401,13 @@ func (x *ResCatnipAgree) GetMsg() string { return "" } +func (x *ResCatnipAgree) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + type ReqCatnipRefuse struct { state protoimpl.MessageState `protogen:"open.v1"` Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 游戏id @@ -26369,6 +26464,7 @@ type ResCatnipRefuse struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Uid int64 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26417,6 +26513,13 @@ func (x *ResCatnipRefuse) GetMsg() string { return "" } +func (x *ResCatnipRefuse) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + // 设置游戏倍数 type ReqCatnipMultiply struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26466,6 +26569,7 @@ type ResCatnipMultiply struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Multiply int32 `protobuf:"varint,3,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26514,6 +26618,13 @@ func (x *ResCatnipMultiply) GetMsg() string { return "" } +func (x *ResCatnipMultiply) GetMultiply() int32 { + if x != nil { + return x.Multiply + } + return 0 +} + // 游戏转盘 type ReqCatnipPlay struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26622,8 +26733,7 @@ func (x *ResCatnipPlay) GetId() int32 { // 领取阶段奖励 type ReqCatnipReward struct { state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id - Progress int32 `protobuf:"varint,2,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26665,13 +26775,6 @@ func (x *ReqCatnipReward) GetId() int32 { return 0 } -func (x *ReqCatnipReward) GetProgress() int32 { - if x != nil { - return x.Progress - } - return 0 -} - type ResCatnipReward struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` @@ -26870,6 +26973,8 @@ type ResCatnipEmoji struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + EmojiId int32 `protobuf:"varint,3,opt,name=EmojiId,proto3" json:"EmojiId,omitempty"` // 表情id + Id int32 `protobuf:"varint,4,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26918,6 +27023,20 @@ func (x *ResCatnipEmoji) GetMsg() string { return "" } +func (x *ResCatnipEmoji) GetEmojiId() int32 { + if x != nil { + return x.EmojiId + } + return 0 +} + +func (x *ResCatnipEmoji) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + // -------------------后台管理------------------- type AdminReq struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -27882,10 +28001,10 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x0eReqDecorateAll\"J\n" + "\x0eResDecorateAll\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"+\n" + - "\x11ReqDecorateReward\x12\x16\n" + - "\x06AreaId\x18\x01 \x01(\x05R\x06AreaId\"M\n" + - "\x11ResDecorateReward\x12&\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"'\n" + + "\rReqAreaReward\x12\x16\n" + + "\x06AreaId\x18\x01 \x01(\x05R\x06AreaId\"I\n" + + "\rResAreaReward\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"<\n" + "\fReqGmCommand\x12\x18\n" + @@ -28442,7 +28561,7 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x11ReqFriendTimeLine\"m\n" + "\x11ResFriendTimeLine\x12(\n" + "\x03Log\x18\x01 \x03(\v2\x16.tutorial.ResFriendLogR\x03Log\x12.\n" + - "\x05Reply\x18\x02 \x03(\v2\x18.tutorial.ResFriendReplyR\x05Reply\"\xc9\x01\n" + + "\x05Reply\x18\x02 \x03(\v2\x18.tutorial.ResFriendReplyR\x05Reply\"\xf3\x01\n" + "\x0eResFriendReply\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x12\n" + "\x04Type\x18\x02 \x01(\x05R\x04Type\x12\x14\n" + @@ -28450,7 +28569,8 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x06Status\x18\x04 \x01(\x05R\x06Status\x12\x18\n" + "\aAddTime\x18\x05 \x01(\x03R\aAddTime\x12\x18\n" + "\aEndTime\x18\x06 \x01(\x03R\aEndTime\x121\n" + - "\x06Player\x18\a \x01(\v2\x19.tutorial.ResPlayerSimpleR\x06Player\"V\n" + + "\x06Player\x18\a \x01(\v2\x19.tutorial.ResPlayerSimpleR\x06Player\x12(\n" + + "\x05Items\x18\b \x03(\v2\x12.tutorial.ItemInfoR\x05Items\"V\n" + "\x14ReqFriendReplyHandle\x12\x14\n" + "\x05LogId\x18\x01 \x01(\x05R\x05LogId\x12\x14\n" + "\x05Param\x18\x02 \x01(\tR\x05Param\x12\x12\n" + @@ -29256,61 +29376,66 @@ const file_proto_Gameapi_proto_rawDesc = "" + "ResCollect\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\v\n" + - "\tReqCatnip\"\xb7\x01\n" + + "\tReqCatnip\"\xef\x01\n" + "\tResCatnip\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x16\n" + "\x06Status\x18\x02 \x01(\x05R\x06Status\x12\x18\n" + "\aEndTime\x18\x03 \x01(\x05R\aEndTime\x12\x1a\n" + "\bTemplate\x18\x04 \x01(\x05R\bTemplate\x120\n" + "\bGameList\x18\x05 \x03(\v2\x14.tutorial.CatnipGameR\bGameList\x12\x1a\n" + - "\bMultiply\x18\x06 \x01(\x05R\bMultiply\"\xa7\x02\n" + + "\bMultiply\x18\x06 \x01(\x05R\bMultiply\x126\n" + + "\n" + + "FriendList\x18\a \x03(\v2\x16.tutorial.CatnipInviteR\n" + + "FriendList\"\xdb\x01\n" + "\n" + "CatnipGame\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x16\n" + "\x06Status\x18\x02 \x01(\x05R\x06Status\x12\x1a\n" + "\bProgress\x18\x03 \x01(\x05R\bProgress\x12\x16\n" + "\x06Reward\x18\x04 \x03(\x05R\x06Reward\x123\n" + - "\aPartner\x18\x05 \x01(\v2\x19.tutorial.ResPlayerSimpleR\aPartner\x126\n" + - "\n" + - "InviteList\x18\x06 \x03(\v2\x16.tutorial.CatnipInviteR\n" + - "InviteList\x12:\n" + - "\fBeInviteList\x18\a \x03(\v2\x16.tutorial.CatnipInviteR\fBeInviteList\x12\x14\n" + - "\x05Emoji\x18\b \x01(\x05R\x05Emoji\"4\n" + + "\aPartner\x18\x05 \x01(\v2\x19.tutorial.ResPlayerSimpleR\aPartner\x12\x14\n" + + "\x05Emoji\x18\x06 \x01(\x05R\x05Emoji\x12&\n" + + "\x0eFriendProgress\x18\a \x01(\x05R\x0eFriendProgress\"{\n" + "\fCatnipInvite\x12\x10\n" + "\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x12\n" + - "\x04Time\x18\x02 \x01(\x03R\x04Time\"3\n" + + "\x04Time\x18\x02 \x01(\x03R\x04Time\x12\x12\n" + + "\x04Type\x18\x03 \x01(\x05R\x04Type\x121\n" + + "\x06Player\x18\x04 \x01(\v2\x19.tutorial.ResPlayerSimpleR\x06Player\"3\n" + "\x0fReqCatnipInvite\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + - "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"K\n" + + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"]\n" + "\x0fResCatnipInvite\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"2\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x10\n" + + "\x03Uid\x18\x03 \x01(\x03R\x03Uid\"2\n" + "\x0eReqCatnipAgree\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + - "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"J\n" + + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"\\\n" + "\x0eResCatnipAgree\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"3\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x10\n" + + "\x03Uid\x18\x03 \x01(\x03R\x03Uid\"3\n" + "\x0fReqCatnipRefuse\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + - "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"K\n" + + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"]\n" + "\x0fResCatnipRefuse\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"/\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x10\n" + + "\x03Uid\x18\x03 \x01(\x03R\x03Uid\"/\n" + "\x11ReqCatnipMultiply\x12\x1a\n" + - "\bMultiply\x18\x01 \x01(\x05R\bMultiply\"M\n" + + "\bMultiply\x18\x01 \x01(\x05R\bMultiply\"i\n" + "\x11ResCatnipMultiply\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\x1f\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x1a\n" + + "\bMultiply\x18\x03 \x01(\x05R\bMultiply\"\x1f\n" + "\rReqCatnipPlay\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\"Y\n" + "\rResCatnipPlay\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x0e\n" + - "\x02Id\x18\x03 \x01(\x05R\x02Id\"=\n" + + "\x02Id\x18\x03 \x01(\x05R\x02Id\"!\n" + "\x0fReqCatnipReward\x12\x0e\n" + - "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x1a\n" + - "\bProgress\x18\x02 \x01(\x05R\bProgress\"K\n" + + "\x02Id\x18\x01 \x01(\x05R\x02Id\"K\n" + "\x0fResCatnipReward\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\x16\n" + @@ -29320,10 +29445,12 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\":\n" + "\x0eReqCatnipEmoji\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x18\n" + - "\aEmojiId\x18\x02 \x01(\x05R\aEmojiId\"J\n" + + "\aEmojiId\x18\x02 \x01(\x05R\aEmojiId\"t\n" + "\x0eResCatnipEmoji\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"2\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x18\n" + + "\aEmojiId\x18\x03 \x01(\x05R\aEmojiId\x12\x0e\n" + + "\x02Id\x18\x04 \x01(\x05R\x02Id\"2\n" + "\bAdminReq\x12\x12\n" + "\x04Func\x18\x01 \x01(\tR\x04Func\x12\x12\n" + "\x04Info\x18\x02 \x01(\fR\x04Info\"2\n" + @@ -29573,7 +29700,13 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x19ACT_LOG_TYPE_VISIT_UPVOTE\x10\x14\x12.\n" + "*ACT_LOG_TYPE_COMPLETE_HANDBOOK_ACHIEVEMENT\x10\x15\x12(\n" + "$ACT_LOG_TYPE_COMPLETE_CHAPTER_SCENES\x10\x16\x12!\n" + - "\x1dACT_LOG_TYPE_LOST_USER_RETURN\x10\x17B\bZ\x06../msgb\x06proto3" + "\x1dACT_LOG_TYPE_LOST_USER_RETURN\x10\x17*\xa4\x01\n" + + "\x11FRIEND_REPLY_TYPE\x12\x1a\n" + + "\x16FRIEND_REPLY_TYPE_NONE\x10\x00\x12\x1b\n" + + "\x17FRIEND_REPLY_TYPE_GREET\x10\x01\x12\"\n" + + "\x1eFRIEND_REPLY_TYPE_RETURN_GREET\x10\x02\x12\x15\n" + + "\x11REPLY_TYPE_CATNIP\x10\x03\x12\x1b\n" + + "\x17REPLY_TYPE_CATNIP_ITEMS\x10\x04B\bZ\x06../msgb\x06proto3" var ( file_proto_Gameapi_proto_rawDescOnce sync.Once @@ -29587,7 +29720,7 @@ func file_proto_Gameapi_proto_rawDescGZIP() []byte { return file_proto_Gameapi_proto_rawDescData } -var file_proto_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 12) +var file_proto_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 13) var file_proto_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 544) var file_proto_Gameapi_proto_goTypes = []any{ (ITEM_POP_LABEL)(0), // 0: tutorial.ITEM_POP_LABEL @@ -29602,615 +29735,616 @@ var file_proto_Gameapi_proto_goTypes = []any{ (LANG_TYPE)(0), // 9: tutorial.LANG_TYPE (LimitEventParam)(0), // 10: tutorial.LimitEventParam (ActLogType)(0), // 11: tutorial.ActLogType - (*ClientReq)(nil), // 12: tutorial.ClientReq - (*ReqOfflineReconnect)(nil), // 13: tutorial.ReqOfflineReconnect - (*ResOfflineReconnect)(nil), // 14: tutorial.ResOfflineReconnect - (*ReqBindFacebookAccount)(nil), // 15: tutorial.ReqBindFacebookAccount - (*ResBindFacebookAccount)(nil), // 16: tutorial.ResBindFacebookAccount - (*ReqOnlyBindFacebook)(nil), // 17: tutorial.ReqOnlyBindFacebook - (*ResOnlyBindFacebook)(nil), // 18: tutorial.ResOnlyBindFacebook - (*ReqUnBindFacebook)(nil), // 19: tutorial.ReqUnBindFacebook - (*ResUnBindFacebook)(nil), // 20: tutorial.ResUnBindFacebook - (*ReqSynGameData)(nil), // 21: tutorial.ReqSynGameData - (*ResSynGameData)(nil), // 22: tutorial.ResSynGameData - (*ForceKickOut)(nil), // 23: tutorial.ForceKickOut - (*ResServerVersion)(nil), // 24: tutorial.ResServerVersion - (*ResChessColorData)(nil), // 25: tutorial.ResChessColorData - (*ClientRes)(nil), // 26: tutorial.ClientRes - (*ReqRegisterAccount)(nil), // 27: tutorial.ReqRegisterAccount - (*ResRegisterAccount)(nil), // 28: tutorial.ResRegisterAccount - (*ReqLogin)(nil), // 29: tutorial.ReqLogin - (*ReqLoginCode)(nil), // 30: tutorial.ReqLoginCode - (*ResLoginCode)(nil), // 31: tutorial.ResLoginCode - (*ReqId2Verify)(nil), // 32: tutorial.ReqId2Verify - (*ResId2Verify)(nil), // 33: tutorial.ResId2Verify - (*ResLogin)(nil), // 34: tutorial.ResLogin - (*ReqChangePassword)(nil), // 35: tutorial.ReqChangePassword - (*ResChangePassword)(nil), // 36: tutorial.ResChangePassword - (*ReqPlayerBaseInfo)(nil), // 37: tutorial.ReqPlayerBaseInfo - (*ResPlayerBaseInfo)(nil), // 38: tutorial.ResPlayerBaseInfo - (*ReqPlayerAsset)(nil), // 39: tutorial.ReqPlayerAsset - (*ResPlayerAsset)(nil), // 40: tutorial.ResPlayerAsset - (*UpdateBaseItemInfo)(nil), // 41: tutorial.UpdateBaseItemInfo - (*NotifyRenewBuyEnergyCnt)(nil), // 42: tutorial.NotifyRenewBuyEnergyCnt - (*ReqRemoveAd)(nil), // 43: tutorial.ReqRemoveAd - (*ResRemoveAd)(nil), // 44: tutorial.ResRemoveAd - (*NotifyAddEnergy)(nil), // 45: tutorial.NotifyAddEnergy - (*ReqServerTime)(nil), // 46: tutorial.ReqServerTime - (*ResServerTime)(nil), // 47: tutorial.ResServerTime - (*ReqPlayerChessData)(nil), // 48: tutorial.ReqPlayerChessData - (*ResPlayerChessData)(nil), // 49: tutorial.ResPlayerChessData - (*ResPlayerChessInfo)(nil), // 50: tutorial.ResPlayerChessInfo - (*ReqGetChessRetireReward)(nil), // 51: tutorial.ReqGetChessRetireReward - (*ResGetChessRetireReward)(nil), // 52: tutorial.ResGetChessRetireReward - (*PartBag)(nil), // 53: tutorial.PartBag - (*PartBagGrid)(nil), // 54: tutorial.PartBagGrid - (*ReqPutPartInBag)(nil), // 55: tutorial.ReqPutPartInBag - (*ResPutPartInBag)(nil), // 56: tutorial.ResPutPartInBag - (*ChessHandle)(nil), // 57: tutorial.ChessHandle - (*UpdatePlayerChessData)(nil), // 58: tutorial.UpdatePlayerChessData - (*ResUpdatePlayerChessData)(nil), // 59: tutorial.ResUpdatePlayerChessData - (*ReqSeparateChess)(nil), // 60: tutorial.ReqSeparateChess - (*ResSeparateChess)(nil), // 61: tutorial.ResSeparateChess - (*ReqUpgradeChess)(nil), // 62: tutorial.ReqUpgradeChess - (*ResUpgradeChess)(nil), // 63: tutorial.ResUpgradeChess - (*ReqGetChessFromBuff)(nil), // 64: tutorial.ReqGetChessFromBuff - (*ResGetChessFromBuff)(nil), // 65: tutorial.ResGetChessFromBuff - (*ReqChessEx)(nil), // 66: tutorial.ReqChessEx - (*ResChessEx)(nil), // 67: tutorial.ResChessEx - (*ReqSourceChest)(nil), // 68: tutorial.ReqSourceChest - (*ResSourceChest)(nil), // 69: tutorial.ResSourceChest - (*ReqPlayroomOutline)(nil), // 70: tutorial.ReqPlayroomOutline - (*ResPlayroomOutline)(nil), // 71: tutorial.ResPlayroomOutline - (*ChessBag)(nil), // 72: tutorial.ChessBag - (*ChessBagGrid)(nil), // 73: tutorial.ChessBagGrid - (*ReqPutChessInBag)(nil), // 74: tutorial.ReqPutChessInBag - (*ResPutChessInBag)(nil), // 75: tutorial.ResPutChessInBag - (*ReqTakeChessOutBag)(nil), // 76: tutorial.ReqTakeChessOutBag - (*ResTakeChessOutBag)(nil), // 77: tutorial.ResTakeChessOutBag - (*ReqBuyChessBagGrid)(nil), // 78: tutorial.ReqBuyChessBagGrid - (*ResBuyChessBagGrid)(nil), // 79: tutorial.ResBuyChessBagGrid - (*ReqPlayerProfileData)(nil), // 80: tutorial.ReqPlayerProfileData - (*ResPlayerProfileData)(nil), // 81: tutorial.ResPlayerProfileData - (*ReqPlayerBriefProfileData)(nil), // 82: tutorial.ReqPlayerBriefProfileData - (*ResPlayerBriefProfileData)(nil), // 83: tutorial.ResPlayerBriefProfileData - (*ReqSetEnergyMul)(nil), // 84: tutorial.ReqSetEnergyMul - (*ResSetEnergyMul)(nil), // 85: tutorial.ResSetEnergyMul - (*ReqLang)(nil), // 86: tutorial.ReqLang - (*ResLang)(nil), // 87: tutorial.ResLang - (*BaseInfo)(nil), // 88: tutorial.BaseInfo - (*ReqUserInfo)(nil), // 89: tutorial.ReqUserInfo - (*UserInfo)(nil), // 90: tutorial.UserInfo - (*ReqSetName)(nil), // 91: tutorial.ReqSetName - (*ResSetName)(nil), // 92: tutorial.ResSetName - (*ReqSetPetName)(nil), // 93: tutorial.ReqSetPetName - (*ResSetPetName)(nil), // 94: tutorial.ResSetPetName - (*ReqBuyEnergy)(nil), // 95: tutorial.ReqBuyEnergy - (*ResBuyEnergy)(nil), // 96: tutorial.ResBuyEnergy - (*ReqGetEnergyByAD)(nil), // 97: tutorial.ReqGetEnergyByAD - (*ResGetEnergyByAD)(nil), // 98: tutorial.ResGetEnergyByAD - (*ReqGetHandbookReward)(nil), // 99: tutorial.ReqGetHandbookReward - (*ResGetHandbookReward)(nil), // 100: tutorial.ResGetHandbookReward - (*HandbookInfo)(nil), // 101: tutorial.HandbookInfo - (*Handbook)(nil), // 102: tutorial.Handbook - (*RegHandbookAllReward)(nil), // 103: tutorial.RegHandbookAllReward - (*ResHandbookAllReward)(nil), // 104: tutorial.ResHandbookAllReward - (*ReqRewardOrder)(nil), // 105: tutorial.ReqRewardOrder - (*ResRewardOrder)(nil), // 106: tutorial.ResRewardOrder - (*ReqCreatePetOrder)(nil), // 107: tutorial.ReqCreatePetOrder - (*ReqDelOrder)(nil), // 108: tutorial.ReqDelOrder - (*ResDelOrder)(nil), // 109: tutorial.ResDelOrder - (*ReqSellChessNum)(nil), // 110: tutorial.ReqSellChessNum - (*ResSellChessNum)(nil), // 111: tutorial.ResSellChessNum - (*Order)(nil), // 112: tutorial.Order - (*ResOrderList)(nil), // 113: tutorial.ResOrderList - (*ResDecorateInfo)(nil), // 114: tutorial.ResDecorateInfo - (*DecoratePart)(nil), // 115: tutorial.DecoratePart - (*ReqDecorate)(nil), // 116: tutorial.ReqDecorate - (*ResDecorate)(nil), // 117: tutorial.ResDecorate - (*ReqDecorateAll)(nil), // 118: tutorial.ReqDecorateAll - (*ResDecorateAll)(nil), // 119: tutorial.ResDecorateAll - (*ReqDecorateReward)(nil), // 120: tutorial.ReqDecorateReward - (*ResDecorateReward)(nil), // 121: tutorial.ResDecorateReward - (*ReqGmCommand)(nil), // 122: tutorial.ReqGmCommand - (*Card)(nil), // 123: tutorial.Card - (*ReqCardInfo)(nil), // 124: tutorial.ReqCardInfo - (*ResCardInfo)(nil), // 125: tutorial.ResCardInfo - (*ResNotifyCardTimes)(nil), // 126: tutorial.ResNotifyCardTimes - (*ReqCardSeasonFirstReward)(nil), // 127: tutorial.ReqCardSeasonFirstReward - (*ResCardSeasonFirstReward)(nil), // 128: tutorial.ResCardSeasonFirstReward - (*ReqCardHandbookReward)(nil), // 129: tutorial.ReqCardHandbookReward - (*ResCardHandbookReward)(nil), // 130: tutorial.ResCardHandbookReward - (*ReqMasterCard)(nil), // 131: tutorial.ReqMasterCard - (*ResMasterCard)(nil), // 132: tutorial.ResMasterCard - (*ReqCardCollectReward)(nil), // 133: tutorial.ReqCardCollectReward - (*ResCardCollectReward)(nil), // 134: tutorial.ResCardCollectReward - (*ReqExStarReward)(nil), // 135: tutorial.ReqExStarReward - (*ResExStarReward)(nil), // 136: tutorial.ResExStarReward - (*ReqAllCollectReward)(nil), // 137: tutorial.ReqAllCollectReward - (*ResAllCollectReward)(nil), // 138: tutorial.ResAllCollectReward - (*ReqCardGive)(nil), // 139: tutorial.ReqCardGive - (*ResCardGive)(nil), // 140: tutorial.ResCardGive - (*ReqAgreeCardGive)(nil), // 141: tutorial.ReqAgreeCardGive - (*ResAgreeCardGive)(nil), // 142: tutorial.ResAgreeCardGive - (*ReqRefuseCardGive)(nil), // 143: tutorial.ReqRefuseCardGive - (*ResRefuseCardGive)(nil), // 144: tutorial.ResRefuseCardGive - (*ReqCardSend)(nil), // 145: tutorial.ReqCardSend - (*ResCardSend)(nil), // 146: tutorial.ResCardSend - (*ReqCardExchange)(nil), // 147: tutorial.ReqCardExchange - (*ResCardExchange)(nil), // 148: tutorial.ResCardExchange - (*ReqSelectCardExchange)(nil), // 149: tutorial.ReqSelectCardExchange - (*ResSelectCardExchange)(nil), // 150: tutorial.ResSelectCardExchange - (*ReqAgreeCardExchange)(nil), // 151: tutorial.ReqAgreeCardExchange - (*ResAgreeCardExchange)(nil), // 152: tutorial.ResAgreeCardExchange - (*ReqRefuseCardSelect)(nil), // 153: tutorial.ReqRefuseCardSelect - (*ResRefuseCardSelect)(nil), // 154: tutorial.ResRefuseCardSelect - (*ReqRefuseCardExchange)(nil), // 155: tutorial.ReqRefuseCardExchange - (*ResRefuseCardExchange)(nil), // 156: tutorial.ResRefuseCardExchange - (*ReqGetFriendCard)(nil), // 157: tutorial.ReqGetFriendCard - (*ResGetFriendCard)(nil), // 158: tutorial.ResGetFriendCard - (*ReqGetGoldCard)(nil), // 159: tutorial.ReqGetGoldCard - (*ResGetGoldCard)(nil), // 160: tutorial.ResGetGoldCard - (*ReqGuideReward)(nil), // 161: tutorial.ReqGuideReward - (*ResGuideReward)(nil), // 162: tutorial.ResGuideReward - (*ReqGuidePlayroom)(nil), // 163: tutorial.ReqGuidePlayroom - (*ResGuidePlayroom)(nil), // 164: tutorial.ResGuidePlayroom - (*ResGuildInfo)(nil), // 165: tutorial.ResGuildInfo - (*ResGuideInfo)(nil), // 166: tutorial.ResGuideInfo - (*ResItemPop)(nil), // 167: tutorial.ResItemPop - (*ItemInfo)(nil), // 168: tutorial.ItemInfo - (*CardPack)(nil), // 169: tutorial.CardPack - (*ResGuideTask)(nil), // 170: tutorial.ResGuideTask - (*GuideTask)(nil), // 171: tutorial.GuideTask - (*ReqGetGuideTaskReward)(nil), // 172: tutorial.ReqGetGuideTaskReward - (*ResGetGuideTaskReward)(nil), // 173: tutorial.ResGetGuideTaskReward - (*ReqGetGuideActiveReward)(nil), // 174: tutorial.ReqGetGuideActiveReward - (*ResGetGuideActiveReward)(nil), // 175: tutorial.ResGetGuideActiveReward - (*ResDailyTask)(nil), // 176: tutorial.ResDailyTask - (*DailyWeek)(nil), // 177: tutorial.DailyWeek - (*DailyTask)(nil), // 178: tutorial.DailyTask - (*QuestProgress)(nil), // 179: tutorial.QuestProgress - (*ReqGetDailyTaskReward)(nil), // 180: tutorial.ReqGetDailyTaskReward - (*ResGetDailyTaskReward)(nil), // 181: tutorial.ResGetDailyTaskReward - (*ReqGetDailyWeekReward)(nil), // 182: tutorial.ReqGetDailyWeekReward - (*ResGetDailyWeekReward)(nil), // 183: tutorial.ResGetDailyWeekReward - (*ReqDailyUnlock)(nil), // 184: tutorial.ReqDailyUnlock - (*ResDailyUnlock)(nil), // 185: tutorial.ResDailyUnlock - (*ResFaceInfo)(nil), // 186: tutorial.ResFaceInfo - (*FaceInfo)(nil), // 187: tutorial.FaceInfo - (*ReqSetFace)(nil), // 188: tutorial.ReqSetFace - (*ResSetFace)(nil), // 189: tutorial.ResSetFace - (*ResAvatarInfo)(nil), // 190: tutorial.ResAvatarInfo - (*AvatarInfo)(nil), // 191: tutorial.AvatarInfo - (*ReqSetAvatar)(nil), // 192: tutorial.ReqSetAvatar - (*ResSetAvatar)(nil), // 193: tutorial.ResSetAvatar - (*EmojiInfo)(nil), // 194: tutorial.EmojiInfo - (*ReqSetEmoji)(nil), // 195: tutorial.ReqSetEmoji - (*ResSetEmoji)(nil), // 196: tutorial.ResSetEmoji - (*ResSevenLogin)(nil), // 197: tutorial.ResSevenLogin - (*SevenLoginReward)(nil), // 198: tutorial.SevenLoginReward - (*ReqGetSevenLoginReward)(nil), // 199: tutorial.ReqGetSevenLoginReward - (*ResGetSevenLoginReward)(nil), // 200: tutorial.ResGetSevenLoginReward - (*ReqGetMonthLoginReward)(nil), // 201: tutorial.ReqGetMonthLoginReward - (*ResGetMonthLoginReward)(nil), // 202: tutorial.ResGetMonthLoginReward - (*ResActivity)(nil), // 203: tutorial.ResActivity - (*ActivityInfo)(nil), // 204: tutorial.ActivityInfo - (*ReqActivityReward)(nil), // 205: tutorial.ReqActivityReward - (*ResActivityReward)(nil), // 206: tutorial.ResActivityReward - (*ReqLimitEvent)(nil), // 207: tutorial.ReqLimitEvent - (*ResLimitEvent)(nil), // 208: tutorial.ResLimitEvent - (*ResLimitEventProgress)(nil), // 209: tutorial.ResLimitEventProgress - (*ReqLimitEventReward)(nil), // 210: tutorial.ReqLimitEventReward - (*ResLimitEventReward)(nil), // 211: tutorial.ResLimitEventReward - (*ReqSelectLimitEvent)(nil), // 212: tutorial.ReqSelectLimitEvent - (*ResSelectLimitEvent)(nil), // 213: tutorial.ResSelectLimitEvent - (*LimitEvent)(nil), // 214: tutorial.LimitEvent - (*LimitEventNotify)(nil), // 215: tutorial.LimitEventNotify - (*ReqLimitEventLuckyCat)(nil), // 216: tutorial.ReqLimitEventLuckyCat - (*ResLimitEventLuckyCat)(nil), // 217: tutorial.ResLimitEventLuckyCat - (*ReqLimitSenceReward)(nil), // 218: tutorial.ReqLimitSenceReward - (*ResLimitSenceReward)(nil), // 219: tutorial.ResLimitSenceReward - (*ResChessRainReward)(nil), // 220: tutorial.ResChessRainReward - (*ReqFastProduceInfo)(nil), // 221: tutorial.ReqFastProduceInfo - (*ResFastProduceInfo)(nil), // 222: tutorial.ResFastProduceInfo - (*ReqFastProduceReward)(nil), // 223: tutorial.ReqFastProduceReward - (*ResFastProduceReward)(nil), // 224: tutorial.ResFastProduceReward - (*ReqCatTrickReward)(nil), // 225: tutorial.ReqCatTrickReward - (*ResCatTrickReward)(nil), // 226: tutorial.ResCatTrickReward - (*ReqSearchPlayer)(nil), // 227: tutorial.ReqSearchPlayer - (*ResSearchPlayer)(nil), // 228: tutorial.ResSearchPlayer - (*ReqFriendPlayerSimple)(nil), // 229: tutorial.ReqFriendPlayerSimple - (*ResFriendPlayerSimple)(nil), // 230: tutorial.ResFriendPlayerSimple - (*ResPlayerSimple)(nil), // 231: tutorial.ResPlayerSimple - (*ActLog)(nil), // 232: tutorial.ActLog - (*ResPlayerRank)(nil), // 233: tutorial.ResPlayerRank - (*ResFriendLog)(nil), // 234: tutorial.ResFriendLog - (*NotifyFriendLog)(nil), // 235: tutorial.NotifyFriendLog - (*FriendBubbleInfo)(nil), // 236: tutorial.FriendBubbleInfo - (*NotifyFriendCard)(nil), // 237: tutorial.NotifyFriendCard - (*ResFriendCard)(nil), // 238: tutorial.ResFriendCard - (*ReqKv)(nil), // 239: tutorial.ReqKv - (*ResKv)(nil), // 240: tutorial.ResKv - (*ReqFriendByCode)(nil), // 241: tutorial.ReqFriendByCode - (*ResFriendByCode)(nil), // 242: tutorial.ResFriendByCode - (*ReqFriendRecommend)(nil), // 243: tutorial.ReqFriendRecommend - (*ResFriendRecommend)(nil), // 244: tutorial.ResFriendRecommend - (*ReqFriendIgnore)(nil), // 245: tutorial.ReqFriendIgnore - (*ResFriendIgnore)(nil), // 246: tutorial.ResFriendIgnore - (*ReqFriendList)(nil), // 247: tutorial.ReqFriendList - (*ResFriendList)(nil), // 248: tutorial.ResFriendList - (*ReqAddNpc)(nil), // 249: tutorial.ReqAddNpc - (*ResAddNpc)(nil), // 250: tutorial.ResAddNpc - (*ReqFriendApply)(nil), // 251: tutorial.ReqFriendApply - (*ResFriendApply)(nil), // 252: tutorial.ResFriendApply - (*ResFriendApplyInfo)(nil), // 253: tutorial.ResFriendApplyInfo - (*ReqFriendCardMsg)(nil), // 254: tutorial.ReqFriendCardMsg - (*ResFriendCardMsg)(nil), // 255: tutorial.ResFriendCardMsg - (*ReqWishApplyList)(nil), // 256: tutorial.ReqWishApplyList - (*ResWishApplyList)(nil), // 257: tutorial.ResWishApplyList - (*ReqWishApply)(nil), // 258: tutorial.ReqWishApply - (*ResWishApply)(nil), // 259: tutorial.ResWishApply - (*ReqFriendTimeLine)(nil), // 260: tutorial.ReqFriendTimeLine - (*ResFriendTimeLine)(nil), // 261: tutorial.ResFriendTimeLine - (*ResFriendReply)(nil), // 262: tutorial.ResFriendReply - (*ReqFriendReplyHandle)(nil), // 263: tutorial.ReqFriendReplyHandle - (*ResFriendReplyHandle)(nil), // 264: tutorial.ResFriendReplyHandle - (*ResFriendBubble)(nil), // 265: tutorial.ResFriendBubble - (*ReqFriendTLUpvote)(nil), // 266: tutorial.ReqFriendTLUpvote - (*ResFriendTLUpvote)(nil), // 267: tutorial.ResFriendTLUpvote - (*ReqFriendTReward)(nil), // 268: tutorial.ReqFriendTReward - (*ResFriendTReward)(nil), // 269: tutorial.ResFriendTReward - (*ResFriendApplyNotify)(nil), // 270: tutorial.ResFriendApplyNotify - (*ReqApplyFriend)(nil), // 271: tutorial.ReqApplyFriend - (*ResApplyFriend)(nil), // 272: tutorial.ResApplyFriend - (*ReqAgreeFriend)(nil), // 273: tutorial.ReqAgreeFriend - (*ResAgreeFriend)(nil), // 274: tutorial.ResAgreeFriend - (*ReqRefuseFriend)(nil), // 275: tutorial.ReqRefuseFriend - (*ResRefuseFriend)(nil), // 276: tutorial.ResRefuseFriend - (*ReqDelFriend)(nil), // 277: tutorial.ReqDelFriend - (*ResDelFriend)(nil), // 278: tutorial.ResDelFriend - (*ReqRank)(nil), // 279: tutorial.ReqRank - (*ResRank)(nil), // 280: tutorial.ResRank - (*ReqMailList)(nil), // 281: tutorial.ReqMailList - (*ResMailList)(nil), // 282: tutorial.ResMailList - (*MailInfo)(nil), // 283: tutorial.MailInfo - (*MailNotify)(nil), // 284: tutorial.MailNotify - (*ReqReadMail)(nil), // 285: tutorial.ReqReadMail - (*ResReadMail)(nil), // 286: tutorial.ResReadMail - (*ReqGetMailReward)(nil), // 287: tutorial.ReqGetMailReward - (*ResGetMailReward)(nil), // 288: tutorial.ResGetMailReward - (*ReqDeleteMail)(nil), // 289: tutorial.ReqDeleteMail - (*ResDeleteMail)(nil), // 290: tutorial.ResDeleteMail - (*ResCharge)(nil), // 291: tutorial.ResCharge - (*LogoutPetWork)(nil), // 292: tutorial.LogoutPetWork - (*WeeklyDiscountInfo)(nil), // 293: tutorial.WeeklyDiscountInfo - (*WishList)(nil), // 294: tutorial.WishList - (*ReqAddWish)(nil), // 295: tutorial.ReqAddWish - (*ResAddWish)(nil), // 296: tutorial.ResAddWish - (*ReqGetWish)(nil), // 297: tutorial.ReqGetWish - (*ResGetWish)(nil), // 298: tutorial.ResGetWish - (*ReqSendWishBeg)(nil), // 299: tutorial.ReqSendWishBeg - (*ResSendWishBeg)(nil), // 300: tutorial.ResSendWishBeg - (*ResSpecialShop)(nil), // 301: tutorial.ResSpecialShop - (*ResChessShop)(nil), // 302: tutorial.ResChessShop - (*ReqFreeShop)(nil), // 303: tutorial.ReqFreeShop - (*ResFreeShop)(nil), // 304: tutorial.ResFreeShop - (*ReqBuyChessShop)(nil), // 305: tutorial.ReqBuyChessShop - (*ResBuyChessShop)(nil), // 306: tutorial.ResBuyChessShop - (*ReqBuyChessShop2)(nil), // 307: tutorial.ReqBuyChessShop2 - (*ResBuyChessShop2)(nil), // 308: tutorial.ResBuyChessShop2 - (*ReqRefreshChessShop)(nil), // 309: tutorial.ReqRefreshChessShop - (*ResRefreshChessShop)(nil), // 310: tutorial.ResRefreshChessShop - (*ReqEndless)(nil), // 311: tutorial.ReqEndless - (*ResEndless)(nil), // 312: tutorial.ResEndless - (*ResEndlessInfo)(nil), // 313: tutorial.ResEndlessInfo - (*ReqEndlessReward)(nil), // 314: tutorial.ReqEndlessReward - (*ResEndlessReward)(nil), // 315: tutorial.ResEndlessReward - (*ResPiggyBank)(nil), // 316: tutorial.ResPiggyBank - (*ReqPiggyBankReward)(nil), // 317: tutorial.ReqPiggyBankReward - (*ResPiggyBankReward)(nil), // 318: tutorial.ResPiggyBankReward - (*ReqChargeReceive)(nil), // 319: tutorial.ReqChargeReceive - (*ResChargeReceive)(nil), // 320: tutorial.ResChargeReceive - (*ReqCreateOrderSn)(nil), // 321: tutorial.ReqCreateOrderSn - (*ResCreateOrderSn)(nil), // 322: tutorial.ResCreateOrderSn - (*ReqShippingOrder)(nil), // 323: tutorial.ReqShippingOrder - (*ResShippingOrder)(nil), // 324: tutorial.ResShippingOrder - (*ReqChampship)(nil), // 325: tutorial.ReqChampship - (*ResChampship)(nil), // 326: tutorial.ResChampship - (*ReqChampshipReward)(nil), // 327: tutorial.ReqChampshipReward - (*ResChampshipReward)(nil), // 328: tutorial.ResChampshipReward - (*ReqChampshipRankReward)(nil), // 329: tutorial.ReqChampshipRankReward - (*ResChampshipRankReward)(nil), // 330: tutorial.ResChampshipRankReward - (*ReqChampshipRank)(nil), // 331: tutorial.ReqChampshipRank - (*ResChampshipRank)(nil), // 332: tutorial.ResChampshipRank - (*ReqChampshipPreRank)(nil), // 333: tutorial.ReqChampshipPreRank - (*ResChampshipPreRank)(nil), // 334: tutorial.ResChampshipPreRank - (*ResNotifyCard)(nil), // 335: tutorial.ResNotifyCard - (*ReqSetFacebookUrl)(nil), // 336: tutorial.ReqSetFacebookUrl - (*ResSetFacebookUrl)(nil), // 337: tutorial.ResSetFacebookUrl - (*ReqInviteFriendData)(nil), // 338: tutorial.ReqInviteFriendData - (*ResInviteFriendData)(nil), // 339: tutorial.ResInviteFriendData - (*ReqSelfInvited)(nil), // 340: tutorial.ReqSelfInvited - (*ResSelfInvited)(nil), // 341: tutorial.ResSelfInvited - (*NotifyInvitedSuccess)(nil), // 342: tutorial.NotifyInvitedSuccess - (*ReqGetInviteReward)(nil), // 343: tutorial.ReqGetInviteReward - (*ResGetInviteReward)(nil), // 344: tutorial.ResGetInviteReward - (*ReqAutoAddInviteFriend)(nil), // 345: tutorial.ReqAutoAddInviteFriend - (*ResAutoAddInviteFriend)(nil), // 346: tutorial.ResAutoAddInviteFriend - (*ReqAutoAddInviteFriend2)(nil), // 347: tutorial.ReqAutoAddInviteFriend2 - (*ResAutoAddInviteFriend2)(nil), // 348: tutorial.ResAutoAddInviteFriend2 - (*ReqMining)(nil), // 349: tutorial.ReqMining - (*ResMining)(nil), // 350: tutorial.ResMining - (*ReqMiningTake)(nil), // 351: tutorial.ReqMiningTake - (*ResMiningTake)(nil), // 352: tutorial.ResMiningTake - (*ReqMiningReward)(nil), // 353: tutorial.ReqMiningReward - (*ResMiningReward)(nil), // 354: tutorial.ResMiningReward - (*ReqActPass)(nil), // 355: tutorial.ReqActPass - (*ResActPass)(nil), // 356: tutorial.ResActPass - (*ReqActPassReward)(nil), // 357: tutorial.ReqActPassReward - (*ResActPassReward)(nil), // 358: tutorial.ResActPassReward - (*ResActRed)(nil), // 359: tutorial.ResActRed - (*NotifyActRed)(nil), // 360: tutorial.NotifyActRed - (*ActivityNotify)(nil), // 361: tutorial.ActivityNotify - (*ResItem)(nil), // 362: tutorial.ResItem - (*ItemNotify)(nil), // 363: tutorial.ItemNotify - (*ReqGuessColor)(nil), // 364: tutorial.ReqGuessColor - (*ResGuessColor)(nil), // 365: tutorial.ResGuessColor - (*Opponent)(nil), // 366: tutorial.opponent - (*ReqGuessColorTake)(nil), // 367: tutorial.ReqGuessColorTake - (*GuessColorInfo)(nil), // 368: tutorial.GuessColorInfo - (*ResGuessColorTake)(nil), // 369: tutorial.ResGuessColorTake - (*ReqGuessColorReward)(nil), // 370: tutorial.ReqGuessColorReward - (*ResGuessColorReward)(nil), // 371: tutorial.ResGuessColorReward - (*ReqRace)(nil), // 372: tutorial.ReqRace - (*ResRace)(nil), // 373: tutorial.ResRace - (*Raceopponent)(nil), // 374: tutorial.raceopponent - (*ReqRaceStart)(nil), // 375: tutorial.ReqRaceStart - (*ResRaceStart)(nil), // 376: tutorial.ResRaceStart - (*ReqRaceReward)(nil), // 377: tutorial.ReqRaceReward - (*ResRaceReward)(nil), // 378: tutorial.ResRaceReward - (*ReqPlayroom)(nil), // 379: tutorial.ReqPlayroom - (*ResPlayroom)(nil), // 380: tutorial.ResPlayroom - (*NotifyPlayroomTask)(nil), // 381: tutorial.NotifyPlayroomTask - (*ReqPlayroomTask)(nil), // 382: tutorial.ReqPlayroomTask - (*ResPlayroomTask)(nil), // 383: tutorial.ResPlayroomTask - (*ReqPlayroomTaskReward)(nil), // 384: tutorial.ReqPlayroomTaskReward - (*ResPlayroomTaskReward)(nil), // 385: tutorial.ResPlayroomTaskReward - (*ReqPlayroomUnlock)(nil), // 386: tutorial.ReqPlayroomUnlock - (*ResPlayroomUnlock)(nil), // 387: tutorial.ResPlayroomUnlock - (*ReqPlayroomUpvote)(nil), // 388: tutorial.ReqPlayroomUpvote - (*ResPlayroomUpvote)(nil), // 389: tutorial.ResPlayroomUpvote - (*PlayroomDress)(nil), // 390: tutorial.PlayroomDress - (*PlayroomDressInfo)(nil), // 391: tutorial.PlayroomDressInfo - (*PlayroomAirInfo)(nil), // 392: tutorial.PlayroomAirInfo - (*PlayroomCollectInfo)(nil), // 393: tutorial.PlayroomCollectInfo - (*ReqPlayroomDressSet)(nil), // 394: tutorial.ReqPlayroomDressSet - (*ResPlayroomDressSet)(nil), // 395: tutorial.ResPlayroomDressSet - (*ReqPlayroomPetAirSet)(nil), // 396: tutorial.ReqPlayroomPetAirSet - (*ResPlayroomPetAirSet)(nil), // 397: tutorial.ResPlayroomPetAirSet - (*ReqPlayroomWrokOutline)(nil), // 398: tutorial.ReqPlayroomWrokOutline - (*ResPlayroomWrokOutline)(nil), // 399: tutorial.ResPlayroomWrokOutline - (*NofiPlayroomStatus)(nil), // 400: tutorial.NofiPlayroomStatus - (*NotifyPlayroomWork)(nil), // 401: tutorial.NotifyPlayroomWork - (*NotifyPlayroomLose)(nil), // 402: tutorial.NotifyPlayroomLose - (*ChipInfo)(nil), // 403: tutorial.ChipInfo - (*NotifyPlayroomMood)(nil), // 404: tutorial.NotifyPlayroomMood - (*AdItem)(nil), // 405: tutorial.AdItem - (*NotifyPlayroomKiss)(nil), // 406: tutorial.NotifyPlayroomKiss - (*FriendRoom)(nil), // 407: tutorial.FriendRoom - (*RoomOpponent)(nil), // 408: tutorial.RoomOpponent - (*ReqPlayroomInfo)(nil), // 409: tutorial.ReqPlayroomInfo - (*ResPlayroomInfo)(nil), // 410: tutorial.ResPlayroomInfo - (*ReqPlayroomFlip)(nil), // 411: tutorial.ReqPlayroomFlip - (*ResPlayroomFlip)(nil), // 412: tutorial.ResPlayroomFlip - (*ReqPlayroomGuide)(nil), // 413: tutorial.ReqPlayroomGuide - (*ResPlayroomGuide)(nil), // 414: tutorial.ResPlayroomGuide - (*ReqPlayroomFlipReward)(nil), // 415: tutorial.ReqPlayroomFlipReward - (*ResPlayroomFlipReward)(nil), // 416: tutorial.ResPlayroomFlipReward - (*ReqPlayroomGame)(nil), // 417: tutorial.ReqPlayroomGame - (*ResPlayroomGame)(nil), // 418: tutorial.ResPlayroomGame - (*ReqPlayroomGameShowReward)(nil), // 419: tutorial.ReqPlayroomGameShowReward - (*ResPlayroomGameShowReward)(nil), // 420: tutorial.ResPlayroomGameShowReward - (*ReqPlayroomInteract)(nil), // 421: tutorial.ReqPlayroomInteract - (*ResPlayroomInteract)(nil), // 422: tutorial.ResPlayroomInteract - (*ReqPlayroomSetRoom)(nil), // 423: tutorial.ReqPlayroomSetRoom - (*ResPlayroomSetRoom)(nil), // 424: tutorial.ResPlayroomSetRoom - (*ReqPlayroomSelectReward)(nil), // 425: tutorial.ReqPlayroomSelectReward - (*ResPlayroomSelectReward)(nil), // 426: tutorial.ResPlayroomSelectReward - (*ReqPlayroomLose)(nil), // 427: tutorial.ReqPlayroomLose - (*ResPlayroomLose)(nil), // 428: tutorial.ResPlayroomLose - (*ReqPlayroomWork)(nil), // 429: tutorial.ReqPlayroomWork - (*ResPlayroomWork)(nil), // 430: tutorial.ResPlayroomWork - (*ReqPlayroomRest)(nil), // 431: tutorial.ReqPlayroomRest - (*ResPlayroomRest)(nil), // 432: tutorial.ResPlayroomRest - (*ReqPlayroomDraw)(nil), // 433: tutorial.ReqPlayroomDraw - (*ResPlayroomDraw)(nil), // 434: tutorial.ResPlayroomDraw - (*ReqPlayroomChip)(nil), // 435: tutorial.ReqPlayroomChip - (*ResPlayroomChip)(nil), // 436: tutorial.ResPlayroomChip - (*ReqPlayroomBuyItem)(nil), // 437: tutorial.ReqPlayroomBuyItem - (*ResPlayroomBuyItem)(nil), // 438: tutorial.ResPlayroomBuyItem - (*ReqPlayroomShop)(nil), // 439: tutorial.ReqPlayroomShop - (*ResPlayroomShop)(nil), // 440: tutorial.ResPlayroomShop - (*ReqFriendTreasure)(nil), // 441: tutorial.ReqFriendTreasure - (*ResFriendTreasure)(nil), // 442: tutorial.ResFriendTreasure - (*TreasureInfo)(nil), // 443: tutorial.TreasureInfo - (*ReqFriendTreasureStart)(nil), // 444: tutorial.ReqFriendTreasureStart - (*ResFriendTreasureStart)(nil), // 445: tutorial.ResFriendTreasureStart - (*ReqFriendTreasureEnd)(nil), // 446: tutorial.ReqFriendTreasureEnd - (*ResFriendTreasureEnd)(nil), // 447: tutorial.ResFriendTreasureEnd - (*ReqFriendTreasureFilp)(nil), // 448: tutorial.ReqFriendTreasureFilp - (*ResFriendTreasureFilp)(nil), // 449: tutorial.ResFriendTreasureFilp - (*ResFriendTreasureStar)(nil), // 450: tutorial.ResFriendTreasureStar - (*ReqKafkaLog)(nil), // 451: tutorial.ReqKafkaLog - (*ReqCollectInfo)(nil), // 452: tutorial.ReqCollectInfo - (*ResCollectInfo)(nil), // 453: tutorial.ResCollectInfo - (*CollectItem)(nil), // 454: tutorial.CollectItem - (*ReqCollect)(nil), // 455: tutorial.ReqCollect - (*ResCollect)(nil), // 456: tutorial.ResCollect - (*ReqCatnip)(nil), // 457: tutorial.ReqCatnip - (*ResCatnip)(nil), // 458: tutorial.ResCatnip - (*CatnipGame)(nil), // 459: tutorial.CatnipGame - (*CatnipInvite)(nil), // 460: tutorial.CatnipInvite - (*ReqCatnipInvite)(nil), // 461: tutorial.ReqCatnipInvite - (*ResCatnipInvite)(nil), // 462: tutorial.ResCatnipInvite - (*ReqCatnipAgree)(nil), // 463: tutorial.ReqCatnipAgree - (*ResCatnipAgree)(nil), // 464: tutorial.ResCatnipAgree - (*ReqCatnipRefuse)(nil), // 465: tutorial.ReqCatnipRefuse - (*ResCatnipRefuse)(nil), // 466: tutorial.ResCatnipRefuse - (*ReqCatnipMultiply)(nil), // 467: tutorial.ReqCatnipMultiply - (*ResCatnipMultiply)(nil), // 468: tutorial.ResCatnipMultiply - (*ReqCatnipPlay)(nil), // 469: tutorial.ReqCatnipPlay - (*ResCatnipPlay)(nil), // 470: tutorial.ResCatnipPlay - (*ReqCatnipReward)(nil), // 471: tutorial.ReqCatnipReward - (*ResCatnipReward)(nil), // 472: tutorial.ResCatnipReward - (*ReqCatnipGrandReward)(nil), // 473: tutorial.ReqCatnipGrandReward - (*ResCatnipGrandReward)(nil), // 474: tutorial.ResCatnipGrandReward - (*ReqCatnipEmoji)(nil), // 475: tutorial.ReqCatnipEmoji - (*ResCatnipEmoji)(nil), // 476: tutorial.ResCatnipEmoji - (*AdminReq)(nil), // 477: tutorial.AdminReq - (*AdminRes)(nil), // 478: tutorial.AdminRes - (*ReqAdminInfo)(nil), // 479: tutorial.ReqAdminInfo - (*ReqReloadServerMail)(nil), // 480: tutorial.ReqReloadServerMail - (*ReqServerInfo)(nil), // 481: tutorial.ReqServerInfo - (*ReqReload)(nil), // 482: tutorial.ReqReload - (*ReqAdminGm)(nil), // 483: tutorial.ReqAdminGm - (*ReqAdminBan)(nil), // 484: tutorial.ReqAdminBan - (*ReqAdminShipping)(nil), // 485: tutorial.ReqAdminShipping - nil, // 486: tutorial.ResChessColorData.MChessColorDataEntry - nil, // 487: tutorial.UpdateBaseItemInfo.MUpdateItemEntry - nil, // 488: tutorial.ResPlayerChessData.MChessDataEntry - nil, // 489: tutorial.ReqPutPartInBag.MChessDataEntry - nil, // 490: tutorial.UpdatePlayerChessData.MChessDataEntry - nil, // 491: tutorial.ReqSeparateChess.MChessDataEntry - nil, // 492: tutorial.ReqUpgradeChess.MChessDataEntry - nil, // 493: tutorial.ReqGetChessFromBuff.MChessDataEntry - nil, // 494: tutorial.ReqChessEx.MChessDataEntry - nil, // 495: tutorial.ReqSourceChest.MChessDataEntry - nil, // 496: tutorial.ReqPlayroomOutline.MChessDataEntry - nil, // 497: tutorial.ReqPutChessInBag.MChessDataEntry - nil, // 498: tutorial.ReqTakeChessOutBag.MChessDataEntry - nil, // 499: tutorial.ResPlayerBriefProfileData.SetEmojiEntry - nil, // 500: tutorial.UserInfo.SetEmojiEntry - nil, // 501: tutorial.ReqRewardOrder.MChessDataEntry - nil, // 502: tutorial.ResCardInfo.AllCardEntry - nil, // 503: tutorial.ResCardInfo.HandbookEntry - nil, // 504: tutorial.ResGuildInfo.RewardEntry - nil, // 505: tutorial.ResGuideInfo.RewardEntry - nil, // 506: tutorial.ResGuideTask.TaskEntry - nil, // 507: tutorial.ResDailyTask.WeekRewardEntry - nil, // 508: tutorial.ResDailyTask.DailyTaskEntry - nil, // 509: tutorial.ResLimitEvent.LimitEventListEntry - nil, // 510: tutorial.ResLimitEventProgress.ProgressRewardEntry - nil, // 511: tutorial.LimitEvent.ParamEntry - nil, // 512: tutorial.ReqLimitEventLuckyCat.MChessDataEntry - nil, // 513: tutorial.ResFriendPlayerSimple.EmojiEntry - nil, // 514: tutorial.ResFriendPlayerSimple.PlayroomEntry - nil, // 515: tutorial.ResFriendPlayerSimple.DressSetEntry - nil, // 516: tutorial.ResFriendPlayerSimple.PhysiologyEntry - nil, // 517: tutorial.ResPlayerSimple.EmojiEntry - nil, // 518: tutorial.ResKv.KvEntry - nil, // 519: tutorial.ResRank.RankListEntry - nil, // 520: tutorial.ResMailList.MailListEntry - nil, // 521: tutorial.ResCharge.SpecialShopEntry - nil, // 522: tutorial.ResCharge.ChessShopEntry - nil, // 523: tutorial.ResCharge.GiftEntry - nil, // 524: tutorial.ResCharge.WeeklyDiscountEntry - nil, // 525: tutorial.ReqBuyChessShop2.MChessDataEntry - nil, // 526: tutorial.ResEndless.EndlessListEntry - nil, // 527: tutorial.ResChampshipRank.RankListEntry - nil, // 528: tutorial.ResChampshipPreRank.RankListEntry - nil, // 529: tutorial.ResNotifyCard.CardEntry - nil, // 530: tutorial.ResNotifyCard.MasterEntry - nil, // 531: tutorial.ResNotifyCard.HandbookEntry - nil, // 532: tutorial.ResMining.MapEntry - nil, // 533: tutorial.ReqMiningTake.MapEntry - nil, // 534: tutorial.ResActRed.RedEntry - nil, // 535: tutorial.ResItem.ItemEntry - nil, // 536: tutorial.ItemNotify.ItemEntry - nil, // 537: tutorial.ResGuessColor.OMapEntry - nil, // 538: tutorial.ReqGuessColorTake.OMapEntry - nil, // 539: tutorial.GuessColorInfo.MapEntry - nil, // 540: tutorial.ResPlayroom.PlayroomEntry - nil, // 541: tutorial.ResPlayroom.MoodEntry - nil, // 542: tutorial.ResPlayroom.PhysiologyEntry - nil, // 543: tutorial.ResPlayroom.DressEntry - nil, // 544: tutorial.ResPlayroom.DressSetEntry - nil, // 545: tutorial.ResPlayroom.WeeklyDiscountEntry - nil, // 546: tutorial.ReqPlayroomDressSet.DressSetEntry - nil, // 547: tutorial.NotifyPlayroomMood.MoodEntry - nil, // 548: tutorial.NotifyPlayroomMood.PhysiologyEntry - nil, // 549: tutorial.ResPlayroomInfo.PlayroomEntry - nil, // 550: tutorial.ResPlayroomInfo.ItemsEntry - nil, // 551: tutorial.ResPlayroomInfo.FlipEntry - nil, // 552: tutorial.ResPlayroomInfo.EmojiEntry - nil, // 553: tutorial.ResPlayroomInfo.DressSetEntry - nil, // 554: tutorial.ResPlayroomGame.ItemsEntry - nil, // 555: tutorial.ReqPlayroomSetRoom.PlayroomEntry + (FRIEND_REPLY_TYPE)(0), // 12: tutorial.FRIEND_REPLY_TYPE + (*ClientReq)(nil), // 13: tutorial.ClientReq + (*ReqOfflineReconnect)(nil), // 14: tutorial.ReqOfflineReconnect + (*ResOfflineReconnect)(nil), // 15: tutorial.ResOfflineReconnect + (*ReqBindFacebookAccount)(nil), // 16: tutorial.ReqBindFacebookAccount + (*ResBindFacebookAccount)(nil), // 17: tutorial.ResBindFacebookAccount + (*ReqOnlyBindFacebook)(nil), // 18: tutorial.ReqOnlyBindFacebook + (*ResOnlyBindFacebook)(nil), // 19: tutorial.ResOnlyBindFacebook + (*ReqUnBindFacebook)(nil), // 20: tutorial.ReqUnBindFacebook + (*ResUnBindFacebook)(nil), // 21: tutorial.ResUnBindFacebook + (*ReqSynGameData)(nil), // 22: tutorial.ReqSynGameData + (*ResSynGameData)(nil), // 23: tutorial.ResSynGameData + (*ForceKickOut)(nil), // 24: tutorial.ForceKickOut + (*ResServerVersion)(nil), // 25: tutorial.ResServerVersion + (*ResChessColorData)(nil), // 26: tutorial.ResChessColorData + (*ClientRes)(nil), // 27: tutorial.ClientRes + (*ReqRegisterAccount)(nil), // 28: tutorial.ReqRegisterAccount + (*ResRegisterAccount)(nil), // 29: tutorial.ResRegisterAccount + (*ReqLogin)(nil), // 30: tutorial.ReqLogin + (*ReqLoginCode)(nil), // 31: tutorial.ReqLoginCode + (*ResLoginCode)(nil), // 32: tutorial.ResLoginCode + (*ReqId2Verify)(nil), // 33: tutorial.ReqId2Verify + (*ResId2Verify)(nil), // 34: tutorial.ResId2Verify + (*ResLogin)(nil), // 35: tutorial.ResLogin + (*ReqChangePassword)(nil), // 36: tutorial.ReqChangePassword + (*ResChangePassword)(nil), // 37: tutorial.ResChangePassword + (*ReqPlayerBaseInfo)(nil), // 38: tutorial.ReqPlayerBaseInfo + (*ResPlayerBaseInfo)(nil), // 39: tutorial.ResPlayerBaseInfo + (*ReqPlayerAsset)(nil), // 40: tutorial.ReqPlayerAsset + (*ResPlayerAsset)(nil), // 41: tutorial.ResPlayerAsset + (*UpdateBaseItemInfo)(nil), // 42: tutorial.UpdateBaseItemInfo + (*NotifyRenewBuyEnergyCnt)(nil), // 43: tutorial.NotifyRenewBuyEnergyCnt + (*ReqRemoveAd)(nil), // 44: tutorial.ReqRemoveAd + (*ResRemoveAd)(nil), // 45: tutorial.ResRemoveAd + (*NotifyAddEnergy)(nil), // 46: tutorial.NotifyAddEnergy + (*ReqServerTime)(nil), // 47: tutorial.ReqServerTime + (*ResServerTime)(nil), // 48: tutorial.ResServerTime + (*ReqPlayerChessData)(nil), // 49: tutorial.ReqPlayerChessData + (*ResPlayerChessData)(nil), // 50: tutorial.ResPlayerChessData + (*ResPlayerChessInfo)(nil), // 51: tutorial.ResPlayerChessInfo + (*ReqGetChessRetireReward)(nil), // 52: tutorial.ReqGetChessRetireReward + (*ResGetChessRetireReward)(nil), // 53: tutorial.ResGetChessRetireReward + (*PartBag)(nil), // 54: tutorial.PartBag + (*PartBagGrid)(nil), // 55: tutorial.PartBagGrid + (*ReqPutPartInBag)(nil), // 56: tutorial.ReqPutPartInBag + (*ResPutPartInBag)(nil), // 57: tutorial.ResPutPartInBag + (*ChessHandle)(nil), // 58: tutorial.ChessHandle + (*UpdatePlayerChessData)(nil), // 59: tutorial.UpdatePlayerChessData + (*ResUpdatePlayerChessData)(nil), // 60: tutorial.ResUpdatePlayerChessData + (*ReqSeparateChess)(nil), // 61: tutorial.ReqSeparateChess + (*ResSeparateChess)(nil), // 62: tutorial.ResSeparateChess + (*ReqUpgradeChess)(nil), // 63: tutorial.ReqUpgradeChess + (*ResUpgradeChess)(nil), // 64: tutorial.ResUpgradeChess + (*ReqGetChessFromBuff)(nil), // 65: tutorial.ReqGetChessFromBuff + (*ResGetChessFromBuff)(nil), // 66: tutorial.ResGetChessFromBuff + (*ReqChessEx)(nil), // 67: tutorial.ReqChessEx + (*ResChessEx)(nil), // 68: tutorial.ResChessEx + (*ReqSourceChest)(nil), // 69: tutorial.ReqSourceChest + (*ResSourceChest)(nil), // 70: tutorial.ResSourceChest + (*ReqPlayroomOutline)(nil), // 71: tutorial.ReqPlayroomOutline + (*ResPlayroomOutline)(nil), // 72: tutorial.ResPlayroomOutline + (*ChessBag)(nil), // 73: tutorial.ChessBag + (*ChessBagGrid)(nil), // 74: tutorial.ChessBagGrid + (*ReqPutChessInBag)(nil), // 75: tutorial.ReqPutChessInBag + (*ResPutChessInBag)(nil), // 76: tutorial.ResPutChessInBag + (*ReqTakeChessOutBag)(nil), // 77: tutorial.ReqTakeChessOutBag + (*ResTakeChessOutBag)(nil), // 78: tutorial.ResTakeChessOutBag + (*ReqBuyChessBagGrid)(nil), // 79: tutorial.ReqBuyChessBagGrid + (*ResBuyChessBagGrid)(nil), // 80: tutorial.ResBuyChessBagGrid + (*ReqPlayerProfileData)(nil), // 81: tutorial.ReqPlayerProfileData + (*ResPlayerProfileData)(nil), // 82: tutorial.ResPlayerProfileData + (*ReqPlayerBriefProfileData)(nil), // 83: tutorial.ReqPlayerBriefProfileData + (*ResPlayerBriefProfileData)(nil), // 84: tutorial.ResPlayerBriefProfileData + (*ReqSetEnergyMul)(nil), // 85: tutorial.ReqSetEnergyMul + (*ResSetEnergyMul)(nil), // 86: tutorial.ResSetEnergyMul + (*ReqLang)(nil), // 87: tutorial.ReqLang + (*ResLang)(nil), // 88: tutorial.ResLang + (*BaseInfo)(nil), // 89: tutorial.BaseInfo + (*ReqUserInfo)(nil), // 90: tutorial.ReqUserInfo + (*UserInfo)(nil), // 91: tutorial.UserInfo + (*ReqSetName)(nil), // 92: tutorial.ReqSetName + (*ResSetName)(nil), // 93: tutorial.ResSetName + (*ReqSetPetName)(nil), // 94: tutorial.ReqSetPetName + (*ResSetPetName)(nil), // 95: tutorial.ResSetPetName + (*ReqBuyEnergy)(nil), // 96: tutorial.ReqBuyEnergy + (*ResBuyEnergy)(nil), // 97: tutorial.ResBuyEnergy + (*ReqGetEnergyByAD)(nil), // 98: tutorial.ReqGetEnergyByAD + (*ResGetEnergyByAD)(nil), // 99: tutorial.ResGetEnergyByAD + (*ReqGetHandbookReward)(nil), // 100: tutorial.ReqGetHandbookReward + (*ResGetHandbookReward)(nil), // 101: tutorial.ResGetHandbookReward + (*HandbookInfo)(nil), // 102: tutorial.HandbookInfo + (*Handbook)(nil), // 103: tutorial.Handbook + (*RegHandbookAllReward)(nil), // 104: tutorial.RegHandbookAllReward + (*ResHandbookAllReward)(nil), // 105: tutorial.ResHandbookAllReward + (*ReqRewardOrder)(nil), // 106: tutorial.ReqRewardOrder + (*ResRewardOrder)(nil), // 107: tutorial.ResRewardOrder + (*ReqCreatePetOrder)(nil), // 108: tutorial.ReqCreatePetOrder + (*ReqDelOrder)(nil), // 109: tutorial.ReqDelOrder + (*ResDelOrder)(nil), // 110: tutorial.ResDelOrder + (*ReqSellChessNum)(nil), // 111: tutorial.ReqSellChessNum + (*ResSellChessNum)(nil), // 112: tutorial.ResSellChessNum + (*Order)(nil), // 113: tutorial.Order + (*ResOrderList)(nil), // 114: tutorial.ResOrderList + (*ResDecorateInfo)(nil), // 115: tutorial.ResDecorateInfo + (*DecoratePart)(nil), // 116: tutorial.DecoratePart + (*ReqDecorate)(nil), // 117: tutorial.ReqDecorate + (*ResDecorate)(nil), // 118: tutorial.ResDecorate + (*ReqDecorateAll)(nil), // 119: tutorial.ReqDecorateAll + (*ResDecorateAll)(nil), // 120: tutorial.ResDecorateAll + (*ReqAreaReward)(nil), // 121: tutorial.ReqAreaReward + (*ResAreaReward)(nil), // 122: tutorial.ResAreaReward + (*ReqGmCommand)(nil), // 123: tutorial.ReqGmCommand + (*Card)(nil), // 124: tutorial.Card + (*ReqCardInfo)(nil), // 125: tutorial.ReqCardInfo + (*ResCardInfo)(nil), // 126: tutorial.ResCardInfo + (*ResNotifyCardTimes)(nil), // 127: tutorial.ResNotifyCardTimes + (*ReqCardSeasonFirstReward)(nil), // 128: tutorial.ReqCardSeasonFirstReward + (*ResCardSeasonFirstReward)(nil), // 129: tutorial.ResCardSeasonFirstReward + (*ReqCardHandbookReward)(nil), // 130: tutorial.ReqCardHandbookReward + (*ResCardHandbookReward)(nil), // 131: tutorial.ResCardHandbookReward + (*ReqMasterCard)(nil), // 132: tutorial.ReqMasterCard + (*ResMasterCard)(nil), // 133: tutorial.ResMasterCard + (*ReqCardCollectReward)(nil), // 134: tutorial.ReqCardCollectReward + (*ResCardCollectReward)(nil), // 135: tutorial.ResCardCollectReward + (*ReqExStarReward)(nil), // 136: tutorial.ReqExStarReward + (*ResExStarReward)(nil), // 137: tutorial.ResExStarReward + (*ReqAllCollectReward)(nil), // 138: tutorial.ReqAllCollectReward + (*ResAllCollectReward)(nil), // 139: tutorial.ResAllCollectReward + (*ReqCardGive)(nil), // 140: tutorial.ReqCardGive + (*ResCardGive)(nil), // 141: tutorial.ResCardGive + (*ReqAgreeCardGive)(nil), // 142: tutorial.ReqAgreeCardGive + (*ResAgreeCardGive)(nil), // 143: tutorial.ResAgreeCardGive + (*ReqRefuseCardGive)(nil), // 144: tutorial.ReqRefuseCardGive + (*ResRefuseCardGive)(nil), // 145: tutorial.ResRefuseCardGive + (*ReqCardSend)(nil), // 146: tutorial.ReqCardSend + (*ResCardSend)(nil), // 147: tutorial.ResCardSend + (*ReqCardExchange)(nil), // 148: tutorial.ReqCardExchange + (*ResCardExchange)(nil), // 149: tutorial.ResCardExchange + (*ReqSelectCardExchange)(nil), // 150: tutorial.ReqSelectCardExchange + (*ResSelectCardExchange)(nil), // 151: tutorial.ResSelectCardExchange + (*ReqAgreeCardExchange)(nil), // 152: tutorial.ReqAgreeCardExchange + (*ResAgreeCardExchange)(nil), // 153: tutorial.ResAgreeCardExchange + (*ReqRefuseCardSelect)(nil), // 154: tutorial.ReqRefuseCardSelect + (*ResRefuseCardSelect)(nil), // 155: tutorial.ResRefuseCardSelect + (*ReqRefuseCardExchange)(nil), // 156: tutorial.ReqRefuseCardExchange + (*ResRefuseCardExchange)(nil), // 157: tutorial.ResRefuseCardExchange + (*ReqGetFriendCard)(nil), // 158: tutorial.ReqGetFriendCard + (*ResGetFriendCard)(nil), // 159: tutorial.ResGetFriendCard + (*ReqGetGoldCard)(nil), // 160: tutorial.ReqGetGoldCard + (*ResGetGoldCard)(nil), // 161: tutorial.ResGetGoldCard + (*ReqGuideReward)(nil), // 162: tutorial.ReqGuideReward + (*ResGuideReward)(nil), // 163: tutorial.ResGuideReward + (*ReqGuidePlayroom)(nil), // 164: tutorial.ReqGuidePlayroom + (*ResGuidePlayroom)(nil), // 165: tutorial.ResGuidePlayroom + (*ResGuildInfo)(nil), // 166: tutorial.ResGuildInfo + (*ResGuideInfo)(nil), // 167: tutorial.ResGuideInfo + (*ResItemPop)(nil), // 168: tutorial.ResItemPop + (*ItemInfo)(nil), // 169: tutorial.ItemInfo + (*CardPack)(nil), // 170: tutorial.CardPack + (*ResGuideTask)(nil), // 171: tutorial.ResGuideTask + (*GuideTask)(nil), // 172: tutorial.GuideTask + (*ReqGetGuideTaskReward)(nil), // 173: tutorial.ReqGetGuideTaskReward + (*ResGetGuideTaskReward)(nil), // 174: tutorial.ResGetGuideTaskReward + (*ReqGetGuideActiveReward)(nil), // 175: tutorial.ReqGetGuideActiveReward + (*ResGetGuideActiveReward)(nil), // 176: tutorial.ResGetGuideActiveReward + (*ResDailyTask)(nil), // 177: tutorial.ResDailyTask + (*DailyWeek)(nil), // 178: tutorial.DailyWeek + (*DailyTask)(nil), // 179: tutorial.DailyTask + (*QuestProgress)(nil), // 180: tutorial.QuestProgress + (*ReqGetDailyTaskReward)(nil), // 181: tutorial.ReqGetDailyTaskReward + (*ResGetDailyTaskReward)(nil), // 182: tutorial.ResGetDailyTaskReward + (*ReqGetDailyWeekReward)(nil), // 183: tutorial.ReqGetDailyWeekReward + (*ResGetDailyWeekReward)(nil), // 184: tutorial.ResGetDailyWeekReward + (*ReqDailyUnlock)(nil), // 185: tutorial.ReqDailyUnlock + (*ResDailyUnlock)(nil), // 186: tutorial.ResDailyUnlock + (*ResFaceInfo)(nil), // 187: tutorial.ResFaceInfo + (*FaceInfo)(nil), // 188: tutorial.FaceInfo + (*ReqSetFace)(nil), // 189: tutorial.ReqSetFace + (*ResSetFace)(nil), // 190: tutorial.ResSetFace + (*ResAvatarInfo)(nil), // 191: tutorial.ResAvatarInfo + (*AvatarInfo)(nil), // 192: tutorial.AvatarInfo + (*ReqSetAvatar)(nil), // 193: tutorial.ReqSetAvatar + (*ResSetAvatar)(nil), // 194: tutorial.ResSetAvatar + (*EmojiInfo)(nil), // 195: tutorial.EmojiInfo + (*ReqSetEmoji)(nil), // 196: tutorial.ReqSetEmoji + (*ResSetEmoji)(nil), // 197: tutorial.ResSetEmoji + (*ResSevenLogin)(nil), // 198: tutorial.ResSevenLogin + (*SevenLoginReward)(nil), // 199: tutorial.SevenLoginReward + (*ReqGetSevenLoginReward)(nil), // 200: tutorial.ReqGetSevenLoginReward + (*ResGetSevenLoginReward)(nil), // 201: tutorial.ResGetSevenLoginReward + (*ReqGetMonthLoginReward)(nil), // 202: tutorial.ReqGetMonthLoginReward + (*ResGetMonthLoginReward)(nil), // 203: tutorial.ResGetMonthLoginReward + (*ResActivity)(nil), // 204: tutorial.ResActivity + (*ActivityInfo)(nil), // 205: tutorial.ActivityInfo + (*ReqActivityReward)(nil), // 206: tutorial.ReqActivityReward + (*ResActivityReward)(nil), // 207: tutorial.ResActivityReward + (*ReqLimitEvent)(nil), // 208: tutorial.ReqLimitEvent + (*ResLimitEvent)(nil), // 209: tutorial.ResLimitEvent + (*ResLimitEventProgress)(nil), // 210: tutorial.ResLimitEventProgress + (*ReqLimitEventReward)(nil), // 211: tutorial.ReqLimitEventReward + (*ResLimitEventReward)(nil), // 212: tutorial.ResLimitEventReward + (*ReqSelectLimitEvent)(nil), // 213: tutorial.ReqSelectLimitEvent + (*ResSelectLimitEvent)(nil), // 214: tutorial.ResSelectLimitEvent + (*LimitEvent)(nil), // 215: tutorial.LimitEvent + (*LimitEventNotify)(nil), // 216: tutorial.LimitEventNotify + (*ReqLimitEventLuckyCat)(nil), // 217: tutorial.ReqLimitEventLuckyCat + (*ResLimitEventLuckyCat)(nil), // 218: tutorial.ResLimitEventLuckyCat + (*ReqLimitSenceReward)(nil), // 219: tutorial.ReqLimitSenceReward + (*ResLimitSenceReward)(nil), // 220: tutorial.ResLimitSenceReward + (*ResChessRainReward)(nil), // 221: tutorial.ResChessRainReward + (*ReqFastProduceInfo)(nil), // 222: tutorial.ReqFastProduceInfo + (*ResFastProduceInfo)(nil), // 223: tutorial.ResFastProduceInfo + (*ReqFastProduceReward)(nil), // 224: tutorial.ReqFastProduceReward + (*ResFastProduceReward)(nil), // 225: tutorial.ResFastProduceReward + (*ReqCatTrickReward)(nil), // 226: tutorial.ReqCatTrickReward + (*ResCatTrickReward)(nil), // 227: tutorial.ResCatTrickReward + (*ReqSearchPlayer)(nil), // 228: tutorial.ReqSearchPlayer + (*ResSearchPlayer)(nil), // 229: tutorial.ResSearchPlayer + (*ReqFriendPlayerSimple)(nil), // 230: tutorial.ReqFriendPlayerSimple + (*ResFriendPlayerSimple)(nil), // 231: tutorial.ResFriendPlayerSimple + (*ResPlayerSimple)(nil), // 232: tutorial.ResPlayerSimple + (*ActLog)(nil), // 233: tutorial.ActLog + (*ResPlayerRank)(nil), // 234: tutorial.ResPlayerRank + (*ResFriendLog)(nil), // 235: tutorial.ResFriendLog + (*NotifyFriendLog)(nil), // 236: tutorial.NotifyFriendLog + (*FriendBubbleInfo)(nil), // 237: tutorial.FriendBubbleInfo + (*NotifyFriendCard)(nil), // 238: tutorial.NotifyFriendCard + (*ResFriendCard)(nil), // 239: tutorial.ResFriendCard + (*ReqKv)(nil), // 240: tutorial.ReqKv + (*ResKv)(nil), // 241: tutorial.ResKv + (*ReqFriendByCode)(nil), // 242: tutorial.ReqFriendByCode + (*ResFriendByCode)(nil), // 243: tutorial.ResFriendByCode + (*ReqFriendRecommend)(nil), // 244: tutorial.ReqFriendRecommend + (*ResFriendRecommend)(nil), // 245: tutorial.ResFriendRecommend + (*ReqFriendIgnore)(nil), // 246: tutorial.ReqFriendIgnore + (*ResFriendIgnore)(nil), // 247: tutorial.ResFriendIgnore + (*ReqFriendList)(nil), // 248: tutorial.ReqFriendList + (*ResFriendList)(nil), // 249: tutorial.ResFriendList + (*ReqAddNpc)(nil), // 250: tutorial.ReqAddNpc + (*ResAddNpc)(nil), // 251: tutorial.ResAddNpc + (*ReqFriendApply)(nil), // 252: tutorial.ReqFriendApply + (*ResFriendApply)(nil), // 253: tutorial.ResFriendApply + (*ResFriendApplyInfo)(nil), // 254: tutorial.ResFriendApplyInfo + (*ReqFriendCardMsg)(nil), // 255: tutorial.ReqFriendCardMsg + (*ResFriendCardMsg)(nil), // 256: tutorial.ResFriendCardMsg + (*ReqWishApplyList)(nil), // 257: tutorial.ReqWishApplyList + (*ResWishApplyList)(nil), // 258: tutorial.ResWishApplyList + (*ReqWishApply)(nil), // 259: tutorial.ReqWishApply + (*ResWishApply)(nil), // 260: tutorial.ResWishApply + (*ReqFriendTimeLine)(nil), // 261: tutorial.ReqFriendTimeLine + (*ResFriendTimeLine)(nil), // 262: tutorial.ResFriendTimeLine + (*ResFriendReply)(nil), // 263: tutorial.ResFriendReply + (*ReqFriendReplyHandle)(nil), // 264: tutorial.ReqFriendReplyHandle + (*ResFriendReplyHandle)(nil), // 265: tutorial.ResFriendReplyHandle + (*ResFriendBubble)(nil), // 266: tutorial.ResFriendBubble + (*ReqFriendTLUpvote)(nil), // 267: tutorial.ReqFriendTLUpvote + (*ResFriendTLUpvote)(nil), // 268: tutorial.ResFriendTLUpvote + (*ReqFriendTReward)(nil), // 269: tutorial.ReqFriendTReward + (*ResFriendTReward)(nil), // 270: tutorial.ResFriendTReward + (*ResFriendApplyNotify)(nil), // 271: tutorial.ResFriendApplyNotify + (*ReqApplyFriend)(nil), // 272: tutorial.ReqApplyFriend + (*ResApplyFriend)(nil), // 273: tutorial.ResApplyFriend + (*ReqAgreeFriend)(nil), // 274: tutorial.ReqAgreeFriend + (*ResAgreeFriend)(nil), // 275: tutorial.ResAgreeFriend + (*ReqRefuseFriend)(nil), // 276: tutorial.ReqRefuseFriend + (*ResRefuseFriend)(nil), // 277: tutorial.ResRefuseFriend + (*ReqDelFriend)(nil), // 278: tutorial.ReqDelFriend + (*ResDelFriend)(nil), // 279: tutorial.ResDelFriend + (*ReqRank)(nil), // 280: tutorial.ReqRank + (*ResRank)(nil), // 281: tutorial.ResRank + (*ReqMailList)(nil), // 282: tutorial.ReqMailList + (*ResMailList)(nil), // 283: tutorial.ResMailList + (*MailInfo)(nil), // 284: tutorial.MailInfo + (*MailNotify)(nil), // 285: tutorial.MailNotify + (*ReqReadMail)(nil), // 286: tutorial.ReqReadMail + (*ResReadMail)(nil), // 287: tutorial.ResReadMail + (*ReqGetMailReward)(nil), // 288: tutorial.ReqGetMailReward + (*ResGetMailReward)(nil), // 289: tutorial.ResGetMailReward + (*ReqDeleteMail)(nil), // 290: tutorial.ReqDeleteMail + (*ResDeleteMail)(nil), // 291: tutorial.ResDeleteMail + (*ResCharge)(nil), // 292: tutorial.ResCharge + (*LogoutPetWork)(nil), // 293: tutorial.LogoutPetWork + (*WeeklyDiscountInfo)(nil), // 294: tutorial.WeeklyDiscountInfo + (*WishList)(nil), // 295: tutorial.WishList + (*ReqAddWish)(nil), // 296: tutorial.ReqAddWish + (*ResAddWish)(nil), // 297: tutorial.ResAddWish + (*ReqGetWish)(nil), // 298: tutorial.ReqGetWish + (*ResGetWish)(nil), // 299: tutorial.ResGetWish + (*ReqSendWishBeg)(nil), // 300: tutorial.ReqSendWishBeg + (*ResSendWishBeg)(nil), // 301: tutorial.ResSendWishBeg + (*ResSpecialShop)(nil), // 302: tutorial.ResSpecialShop + (*ResChessShop)(nil), // 303: tutorial.ResChessShop + (*ReqFreeShop)(nil), // 304: tutorial.ReqFreeShop + (*ResFreeShop)(nil), // 305: tutorial.ResFreeShop + (*ReqBuyChessShop)(nil), // 306: tutorial.ReqBuyChessShop + (*ResBuyChessShop)(nil), // 307: tutorial.ResBuyChessShop + (*ReqBuyChessShop2)(nil), // 308: tutorial.ReqBuyChessShop2 + (*ResBuyChessShop2)(nil), // 309: tutorial.ResBuyChessShop2 + (*ReqRefreshChessShop)(nil), // 310: tutorial.ReqRefreshChessShop + (*ResRefreshChessShop)(nil), // 311: tutorial.ResRefreshChessShop + (*ReqEndless)(nil), // 312: tutorial.ReqEndless + (*ResEndless)(nil), // 313: tutorial.ResEndless + (*ResEndlessInfo)(nil), // 314: tutorial.ResEndlessInfo + (*ReqEndlessReward)(nil), // 315: tutorial.ReqEndlessReward + (*ResEndlessReward)(nil), // 316: tutorial.ResEndlessReward + (*ResPiggyBank)(nil), // 317: tutorial.ResPiggyBank + (*ReqPiggyBankReward)(nil), // 318: tutorial.ReqPiggyBankReward + (*ResPiggyBankReward)(nil), // 319: tutorial.ResPiggyBankReward + (*ReqChargeReceive)(nil), // 320: tutorial.ReqChargeReceive + (*ResChargeReceive)(nil), // 321: tutorial.ResChargeReceive + (*ReqCreateOrderSn)(nil), // 322: tutorial.ReqCreateOrderSn + (*ResCreateOrderSn)(nil), // 323: tutorial.ResCreateOrderSn + (*ReqShippingOrder)(nil), // 324: tutorial.ReqShippingOrder + (*ResShippingOrder)(nil), // 325: tutorial.ResShippingOrder + (*ReqChampship)(nil), // 326: tutorial.ReqChampship + (*ResChampship)(nil), // 327: tutorial.ResChampship + (*ReqChampshipReward)(nil), // 328: tutorial.ReqChampshipReward + (*ResChampshipReward)(nil), // 329: tutorial.ResChampshipReward + (*ReqChampshipRankReward)(nil), // 330: tutorial.ReqChampshipRankReward + (*ResChampshipRankReward)(nil), // 331: tutorial.ResChampshipRankReward + (*ReqChampshipRank)(nil), // 332: tutorial.ReqChampshipRank + (*ResChampshipRank)(nil), // 333: tutorial.ResChampshipRank + (*ReqChampshipPreRank)(nil), // 334: tutorial.ReqChampshipPreRank + (*ResChampshipPreRank)(nil), // 335: tutorial.ResChampshipPreRank + (*ResNotifyCard)(nil), // 336: tutorial.ResNotifyCard + (*ReqSetFacebookUrl)(nil), // 337: tutorial.ReqSetFacebookUrl + (*ResSetFacebookUrl)(nil), // 338: tutorial.ResSetFacebookUrl + (*ReqInviteFriendData)(nil), // 339: tutorial.ReqInviteFriendData + (*ResInviteFriendData)(nil), // 340: tutorial.ResInviteFriendData + (*ReqSelfInvited)(nil), // 341: tutorial.ReqSelfInvited + (*ResSelfInvited)(nil), // 342: tutorial.ResSelfInvited + (*NotifyInvitedSuccess)(nil), // 343: tutorial.NotifyInvitedSuccess + (*ReqGetInviteReward)(nil), // 344: tutorial.ReqGetInviteReward + (*ResGetInviteReward)(nil), // 345: tutorial.ResGetInviteReward + (*ReqAutoAddInviteFriend)(nil), // 346: tutorial.ReqAutoAddInviteFriend + (*ResAutoAddInviteFriend)(nil), // 347: tutorial.ResAutoAddInviteFriend + (*ReqAutoAddInviteFriend2)(nil), // 348: tutorial.ReqAutoAddInviteFriend2 + (*ResAutoAddInviteFriend2)(nil), // 349: tutorial.ResAutoAddInviteFriend2 + (*ReqMining)(nil), // 350: tutorial.ReqMining + (*ResMining)(nil), // 351: tutorial.ResMining + (*ReqMiningTake)(nil), // 352: tutorial.ReqMiningTake + (*ResMiningTake)(nil), // 353: tutorial.ResMiningTake + (*ReqMiningReward)(nil), // 354: tutorial.ReqMiningReward + (*ResMiningReward)(nil), // 355: tutorial.ResMiningReward + (*ReqActPass)(nil), // 356: tutorial.ReqActPass + (*ResActPass)(nil), // 357: tutorial.ResActPass + (*ReqActPassReward)(nil), // 358: tutorial.ReqActPassReward + (*ResActPassReward)(nil), // 359: tutorial.ResActPassReward + (*ResActRed)(nil), // 360: tutorial.ResActRed + (*NotifyActRed)(nil), // 361: tutorial.NotifyActRed + (*ActivityNotify)(nil), // 362: tutorial.ActivityNotify + (*ResItem)(nil), // 363: tutorial.ResItem + (*ItemNotify)(nil), // 364: tutorial.ItemNotify + (*ReqGuessColor)(nil), // 365: tutorial.ReqGuessColor + (*ResGuessColor)(nil), // 366: tutorial.ResGuessColor + (*Opponent)(nil), // 367: tutorial.opponent + (*ReqGuessColorTake)(nil), // 368: tutorial.ReqGuessColorTake + (*GuessColorInfo)(nil), // 369: tutorial.GuessColorInfo + (*ResGuessColorTake)(nil), // 370: tutorial.ResGuessColorTake + (*ReqGuessColorReward)(nil), // 371: tutorial.ReqGuessColorReward + (*ResGuessColorReward)(nil), // 372: tutorial.ResGuessColorReward + (*ReqRace)(nil), // 373: tutorial.ReqRace + (*ResRace)(nil), // 374: tutorial.ResRace + (*Raceopponent)(nil), // 375: tutorial.raceopponent + (*ReqRaceStart)(nil), // 376: tutorial.ReqRaceStart + (*ResRaceStart)(nil), // 377: tutorial.ResRaceStart + (*ReqRaceReward)(nil), // 378: tutorial.ReqRaceReward + (*ResRaceReward)(nil), // 379: tutorial.ResRaceReward + (*ReqPlayroom)(nil), // 380: tutorial.ReqPlayroom + (*ResPlayroom)(nil), // 381: tutorial.ResPlayroom + (*NotifyPlayroomTask)(nil), // 382: tutorial.NotifyPlayroomTask + (*ReqPlayroomTask)(nil), // 383: tutorial.ReqPlayroomTask + (*ResPlayroomTask)(nil), // 384: tutorial.ResPlayroomTask + (*ReqPlayroomTaskReward)(nil), // 385: tutorial.ReqPlayroomTaskReward + (*ResPlayroomTaskReward)(nil), // 386: tutorial.ResPlayroomTaskReward + (*ReqPlayroomUnlock)(nil), // 387: tutorial.ReqPlayroomUnlock + (*ResPlayroomUnlock)(nil), // 388: tutorial.ResPlayroomUnlock + (*ReqPlayroomUpvote)(nil), // 389: tutorial.ReqPlayroomUpvote + (*ResPlayroomUpvote)(nil), // 390: tutorial.ResPlayroomUpvote + (*PlayroomDress)(nil), // 391: tutorial.PlayroomDress + (*PlayroomDressInfo)(nil), // 392: tutorial.PlayroomDressInfo + (*PlayroomAirInfo)(nil), // 393: tutorial.PlayroomAirInfo + (*PlayroomCollectInfo)(nil), // 394: tutorial.PlayroomCollectInfo + (*ReqPlayroomDressSet)(nil), // 395: tutorial.ReqPlayroomDressSet + (*ResPlayroomDressSet)(nil), // 396: tutorial.ResPlayroomDressSet + (*ReqPlayroomPetAirSet)(nil), // 397: tutorial.ReqPlayroomPetAirSet + (*ResPlayroomPetAirSet)(nil), // 398: tutorial.ResPlayroomPetAirSet + (*ReqPlayroomWrokOutline)(nil), // 399: tutorial.ReqPlayroomWrokOutline + (*ResPlayroomWrokOutline)(nil), // 400: tutorial.ResPlayroomWrokOutline + (*NofiPlayroomStatus)(nil), // 401: tutorial.NofiPlayroomStatus + (*NotifyPlayroomWork)(nil), // 402: tutorial.NotifyPlayroomWork + (*NotifyPlayroomLose)(nil), // 403: tutorial.NotifyPlayroomLose + (*ChipInfo)(nil), // 404: tutorial.ChipInfo + (*NotifyPlayroomMood)(nil), // 405: tutorial.NotifyPlayroomMood + (*AdItem)(nil), // 406: tutorial.AdItem + (*NotifyPlayroomKiss)(nil), // 407: tutorial.NotifyPlayroomKiss + (*FriendRoom)(nil), // 408: tutorial.FriendRoom + (*RoomOpponent)(nil), // 409: tutorial.RoomOpponent + (*ReqPlayroomInfo)(nil), // 410: tutorial.ReqPlayroomInfo + (*ResPlayroomInfo)(nil), // 411: tutorial.ResPlayroomInfo + (*ReqPlayroomFlip)(nil), // 412: tutorial.ReqPlayroomFlip + (*ResPlayroomFlip)(nil), // 413: tutorial.ResPlayroomFlip + (*ReqPlayroomGuide)(nil), // 414: tutorial.ReqPlayroomGuide + (*ResPlayroomGuide)(nil), // 415: tutorial.ResPlayroomGuide + (*ReqPlayroomFlipReward)(nil), // 416: tutorial.ReqPlayroomFlipReward + (*ResPlayroomFlipReward)(nil), // 417: tutorial.ResPlayroomFlipReward + (*ReqPlayroomGame)(nil), // 418: tutorial.ReqPlayroomGame + (*ResPlayroomGame)(nil), // 419: tutorial.ResPlayroomGame + (*ReqPlayroomGameShowReward)(nil), // 420: tutorial.ReqPlayroomGameShowReward + (*ResPlayroomGameShowReward)(nil), // 421: tutorial.ResPlayroomGameShowReward + (*ReqPlayroomInteract)(nil), // 422: tutorial.ReqPlayroomInteract + (*ResPlayroomInteract)(nil), // 423: tutorial.ResPlayroomInteract + (*ReqPlayroomSetRoom)(nil), // 424: tutorial.ReqPlayroomSetRoom + (*ResPlayroomSetRoom)(nil), // 425: tutorial.ResPlayroomSetRoom + (*ReqPlayroomSelectReward)(nil), // 426: tutorial.ReqPlayroomSelectReward + (*ResPlayroomSelectReward)(nil), // 427: tutorial.ResPlayroomSelectReward + (*ReqPlayroomLose)(nil), // 428: tutorial.ReqPlayroomLose + (*ResPlayroomLose)(nil), // 429: tutorial.ResPlayroomLose + (*ReqPlayroomWork)(nil), // 430: tutorial.ReqPlayroomWork + (*ResPlayroomWork)(nil), // 431: tutorial.ResPlayroomWork + (*ReqPlayroomRest)(nil), // 432: tutorial.ReqPlayroomRest + (*ResPlayroomRest)(nil), // 433: tutorial.ResPlayroomRest + (*ReqPlayroomDraw)(nil), // 434: tutorial.ReqPlayroomDraw + (*ResPlayroomDraw)(nil), // 435: tutorial.ResPlayroomDraw + (*ReqPlayroomChip)(nil), // 436: tutorial.ReqPlayroomChip + (*ResPlayroomChip)(nil), // 437: tutorial.ResPlayroomChip + (*ReqPlayroomBuyItem)(nil), // 438: tutorial.ReqPlayroomBuyItem + (*ResPlayroomBuyItem)(nil), // 439: tutorial.ResPlayroomBuyItem + (*ReqPlayroomShop)(nil), // 440: tutorial.ReqPlayroomShop + (*ResPlayroomShop)(nil), // 441: tutorial.ResPlayroomShop + (*ReqFriendTreasure)(nil), // 442: tutorial.ReqFriendTreasure + (*ResFriendTreasure)(nil), // 443: tutorial.ResFriendTreasure + (*TreasureInfo)(nil), // 444: tutorial.TreasureInfo + (*ReqFriendTreasureStart)(nil), // 445: tutorial.ReqFriendTreasureStart + (*ResFriendTreasureStart)(nil), // 446: tutorial.ResFriendTreasureStart + (*ReqFriendTreasureEnd)(nil), // 447: tutorial.ReqFriendTreasureEnd + (*ResFriendTreasureEnd)(nil), // 448: tutorial.ResFriendTreasureEnd + (*ReqFriendTreasureFilp)(nil), // 449: tutorial.ReqFriendTreasureFilp + (*ResFriendTreasureFilp)(nil), // 450: tutorial.ResFriendTreasureFilp + (*ResFriendTreasureStar)(nil), // 451: tutorial.ResFriendTreasureStar + (*ReqKafkaLog)(nil), // 452: tutorial.ReqKafkaLog + (*ReqCollectInfo)(nil), // 453: tutorial.ReqCollectInfo + (*ResCollectInfo)(nil), // 454: tutorial.ResCollectInfo + (*CollectItem)(nil), // 455: tutorial.CollectItem + (*ReqCollect)(nil), // 456: tutorial.ReqCollect + (*ResCollect)(nil), // 457: tutorial.ResCollect + (*ReqCatnip)(nil), // 458: tutorial.ReqCatnip + (*ResCatnip)(nil), // 459: tutorial.ResCatnip + (*CatnipGame)(nil), // 460: tutorial.CatnipGame + (*CatnipInvite)(nil), // 461: tutorial.CatnipInvite + (*ReqCatnipInvite)(nil), // 462: tutorial.ReqCatnipInvite + (*ResCatnipInvite)(nil), // 463: tutorial.ResCatnipInvite + (*ReqCatnipAgree)(nil), // 464: tutorial.ReqCatnipAgree + (*ResCatnipAgree)(nil), // 465: tutorial.ResCatnipAgree + (*ReqCatnipRefuse)(nil), // 466: tutorial.ReqCatnipRefuse + (*ResCatnipRefuse)(nil), // 467: tutorial.ResCatnipRefuse + (*ReqCatnipMultiply)(nil), // 468: tutorial.ReqCatnipMultiply + (*ResCatnipMultiply)(nil), // 469: tutorial.ResCatnipMultiply + (*ReqCatnipPlay)(nil), // 470: tutorial.ReqCatnipPlay + (*ResCatnipPlay)(nil), // 471: tutorial.ResCatnipPlay + (*ReqCatnipReward)(nil), // 472: tutorial.ReqCatnipReward + (*ResCatnipReward)(nil), // 473: tutorial.ResCatnipReward + (*ReqCatnipGrandReward)(nil), // 474: tutorial.ReqCatnipGrandReward + (*ResCatnipGrandReward)(nil), // 475: tutorial.ResCatnipGrandReward + (*ReqCatnipEmoji)(nil), // 476: tutorial.ReqCatnipEmoji + (*ResCatnipEmoji)(nil), // 477: tutorial.ResCatnipEmoji + (*AdminReq)(nil), // 478: tutorial.AdminReq + (*AdminRes)(nil), // 479: tutorial.AdminRes + (*ReqAdminInfo)(nil), // 480: tutorial.ReqAdminInfo + (*ReqReloadServerMail)(nil), // 481: tutorial.ReqReloadServerMail + (*ReqServerInfo)(nil), // 482: tutorial.ReqServerInfo + (*ReqReload)(nil), // 483: tutorial.ReqReload + (*ReqAdminGm)(nil), // 484: tutorial.ReqAdminGm + (*ReqAdminBan)(nil), // 485: tutorial.ReqAdminBan + (*ReqAdminShipping)(nil), // 486: tutorial.ReqAdminShipping + nil, // 487: tutorial.ResChessColorData.MChessColorDataEntry + nil, // 488: tutorial.UpdateBaseItemInfo.MUpdateItemEntry + nil, // 489: tutorial.ResPlayerChessData.MChessDataEntry + nil, // 490: tutorial.ReqPutPartInBag.MChessDataEntry + nil, // 491: tutorial.UpdatePlayerChessData.MChessDataEntry + nil, // 492: tutorial.ReqSeparateChess.MChessDataEntry + nil, // 493: tutorial.ReqUpgradeChess.MChessDataEntry + nil, // 494: tutorial.ReqGetChessFromBuff.MChessDataEntry + nil, // 495: tutorial.ReqChessEx.MChessDataEntry + nil, // 496: tutorial.ReqSourceChest.MChessDataEntry + nil, // 497: tutorial.ReqPlayroomOutline.MChessDataEntry + nil, // 498: tutorial.ReqPutChessInBag.MChessDataEntry + nil, // 499: tutorial.ReqTakeChessOutBag.MChessDataEntry + nil, // 500: tutorial.ResPlayerBriefProfileData.SetEmojiEntry + nil, // 501: tutorial.UserInfo.SetEmojiEntry + nil, // 502: tutorial.ReqRewardOrder.MChessDataEntry + nil, // 503: tutorial.ResCardInfo.AllCardEntry + nil, // 504: tutorial.ResCardInfo.HandbookEntry + nil, // 505: tutorial.ResGuildInfo.RewardEntry + nil, // 506: tutorial.ResGuideInfo.RewardEntry + nil, // 507: tutorial.ResGuideTask.TaskEntry + nil, // 508: tutorial.ResDailyTask.WeekRewardEntry + nil, // 509: tutorial.ResDailyTask.DailyTaskEntry + nil, // 510: tutorial.ResLimitEvent.LimitEventListEntry + nil, // 511: tutorial.ResLimitEventProgress.ProgressRewardEntry + nil, // 512: tutorial.LimitEvent.ParamEntry + nil, // 513: tutorial.ReqLimitEventLuckyCat.MChessDataEntry + nil, // 514: tutorial.ResFriendPlayerSimple.EmojiEntry + nil, // 515: tutorial.ResFriendPlayerSimple.PlayroomEntry + nil, // 516: tutorial.ResFriendPlayerSimple.DressSetEntry + nil, // 517: tutorial.ResFriendPlayerSimple.PhysiologyEntry + nil, // 518: tutorial.ResPlayerSimple.EmojiEntry + nil, // 519: tutorial.ResKv.KvEntry + nil, // 520: tutorial.ResRank.RankListEntry + nil, // 521: tutorial.ResMailList.MailListEntry + nil, // 522: tutorial.ResCharge.SpecialShopEntry + nil, // 523: tutorial.ResCharge.ChessShopEntry + nil, // 524: tutorial.ResCharge.GiftEntry + nil, // 525: tutorial.ResCharge.WeeklyDiscountEntry + nil, // 526: tutorial.ReqBuyChessShop2.MChessDataEntry + nil, // 527: tutorial.ResEndless.EndlessListEntry + nil, // 528: tutorial.ResChampshipRank.RankListEntry + nil, // 529: tutorial.ResChampshipPreRank.RankListEntry + nil, // 530: tutorial.ResNotifyCard.CardEntry + nil, // 531: tutorial.ResNotifyCard.MasterEntry + nil, // 532: tutorial.ResNotifyCard.HandbookEntry + nil, // 533: tutorial.ResMining.MapEntry + nil, // 534: tutorial.ReqMiningTake.MapEntry + nil, // 535: tutorial.ResActRed.RedEntry + nil, // 536: tutorial.ResItem.ItemEntry + nil, // 537: tutorial.ItemNotify.ItemEntry + nil, // 538: tutorial.ResGuessColor.OMapEntry + nil, // 539: tutorial.ReqGuessColorTake.OMapEntry + nil, // 540: tutorial.GuessColorInfo.MapEntry + nil, // 541: tutorial.ResPlayroom.PlayroomEntry + nil, // 542: tutorial.ResPlayroom.MoodEntry + nil, // 543: tutorial.ResPlayroom.PhysiologyEntry + nil, // 544: tutorial.ResPlayroom.DressEntry + nil, // 545: tutorial.ResPlayroom.DressSetEntry + nil, // 546: tutorial.ResPlayroom.WeeklyDiscountEntry + nil, // 547: tutorial.ReqPlayroomDressSet.DressSetEntry + nil, // 548: tutorial.NotifyPlayroomMood.MoodEntry + nil, // 549: tutorial.NotifyPlayroomMood.PhysiologyEntry + nil, // 550: tutorial.ResPlayroomInfo.PlayroomEntry + nil, // 551: tutorial.ResPlayroomInfo.ItemsEntry + nil, // 552: tutorial.ResPlayroomInfo.FlipEntry + nil, // 553: tutorial.ResPlayroomInfo.EmojiEntry + nil, // 554: tutorial.ResPlayroomInfo.DressSetEntry + nil, // 555: tutorial.ResPlayroomGame.ItemsEntry + nil, // 556: tutorial.ReqPlayroomSetRoom.PlayroomEntry } var file_proto_Gameapi_proto_depIdxs = []int32{ - 486, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry + 487, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry 6, // 1: tutorial.ReqLogin.type:type_name -> tutorial.LOGIN_TYPE 2, // 2: tutorial.ResId2Verify.ResultCode:type_name -> tutorial.RES_CODE - 487, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry - 488, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry - 72, // 5: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag - 53, // 6: tutorial.ResPlayerChessInfo.PartBag:type_name -> tutorial.PartBag + 488, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry + 489, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry + 73, // 5: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag + 54, // 6: tutorial.ResPlayerChessInfo.PartBag:type_name -> tutorial.PartBag 2, // 7: tutorial.ResGetChessRetireReward.code:type_name -> tutorial.RES_CODE - 54, // 8: tutorial.PartBag.PartBagGrids:type_name -> tutorial.PartBagGrid - 489, // 9: tutorial.ReqPutPartInBag.mChessData:type_name -> tutorial.ReqPutPartInBag.MChessDataEntry + 55, // 8: tutorial.PartBag.PartBagGrids:type_name -> tutorial.PartBagGrid + 490, // 9: tutorial.ReqPutPartInBag.mChessData:type_name -> tutorial.ReqPutPartInBag.MChessDataEntry 2, // 10: tutorial.ResPutPartInBag.code:type_name -> tutorial.RES_CODE 1, // 11: tutorial.ChessHandle.type:type_name -> tutorial.HANDLE_TYPE - 490, // 12: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry - 57, // 13: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle + 491, // 12: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry + 58, // 13: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle 2, // 14: tutorial.ResUpdatePlayerChessData.code:type_name -> tutorial.RES_CODE - 491, // 15: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry + 492, // 15: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry 2, // 16: tutorial.ResSeparateChess.code:type_name -> tutorial.RES_CODE - 492, // 17: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry + 493, // 17: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry 2, // 18: tutorial.ResUpgradeChess.code:type_name -> tutorial.RES_CODE - 493, // 19: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry + 494, // 19: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry 2, // 20: tutorial.ResGetChessFromBuff.code:type_name -> tutorial.RES_CODE 8, // 21: tutorial.ReqChessEx.Type:type_name -> tutorial.CHESS_EX_TYPE - 494, // 22: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry + 495, // 22: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry 2, // 23: tutorial.ResChessEx.code:type_name -> tutorial.RES_CODE - 495, // 24: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry + 496, // 24: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry 2, // 25: tutorial.ResSourceChest.code:type_name -> tutorial.RES_CODE - 496, // 26: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry + 497, // 26: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry 2, // 27: tutorial.ResPlayroomOutline.code:type_name -> tutorial.RES_CODE - 73, // 28: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid - 497, // 29: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry + 74, // 28: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid + 498, // 29: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry 2, // 30: tutorial.ResPutChessInBag.code:type_name -> tutorial.RES_CODE - 498, // 31: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry + 499, // 31: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry 2, // 32: tutorial.ResTakeChessOutBag.code:type_name -> tutorial.RES_CODE 2, // 33: tutorial.ResBuyChessBagGrid.code:type_name -> tutorial.RES_CODE - 499, // 34: tutorial.ResPlayerBriefProfileData.SetEmoji:type_name -> tutorial.ResPlayerBriefProfileData.SetEmojiEntry + 500, // 34: tutorial.ResPlayerBriefProfileData.SetEmoji:type_name -> tutorial.ResPlayerBriefProfileData.SetEmojiEntry 2, // 35: tutorial.ResSetEnergyMul.ResultCode:type_name -> tutorial.RES_CODE 9, // 36: tutorial.ReqLang.Lang:type_name -> tutorial.LANG_TYPE 2, // 37: tutorial.ResLang.ResultCode:type_name -> tutorial.RES_CODE 9, // 38: tutorial.BaseInfo.Lang:type_name -> tutorial.LANG_TYPE - 191, // 39: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo - 187, // 40: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo - 194, // 41: tutorial.UserInfo.EmojiList:type_name -> tutorial.EmojiInfo - 500, // 42: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry + 192, // 39: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo + 188, // 40: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo + 195, // 41: tutorial.UserInfo.EmojiList:type_name -> tutorial.EmojiInfo + 501, // 42: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry 2, // 43: tutorial.ResSetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 44: tutorial.ResSetPetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 45: tutorial.ResBuyEnergy.Code:type_name -> tutorial.RES_CODE 2, // 46: tutorial.ResGetEnergyByAD.Code:type_name -> tutorial.RES_CODE 2, // 47: tutorial.ResGetHandbookReward.Code:type_name -> tutorial.RES_CODE - 101, // 48: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo + 102, // 48: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo 2, // 49: tutorial.ResHandbookAllReward.Code:type_name -> tutorial.RES_CODE - 501, // 50: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry + 502, // 50: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry 2, // 51: tutorial.ResRewardOrder.Code:type_name -> tutorial.RES_CODE 2, // 52: tutorial.ResDelOrder.Code:type_name -> tutorial.RES_CODE - 168, // 53: tutorial.Order.Items:type_name -> tutorial.ItemInfo - 112, // 54: tutorial.ResOrderList.OrderList:type_name -> tutorial.Order - 115, // 55: tutorial.ResDecorateInfo.Parts:type_name -> tutorial.DecoratePart - 168, // 56: tutorial.DecoratePart.Items:type_name -> tutorial.ItemInfo + 169, // 53: tutorial.Order.Items:type_name -> tutorial.ItemInfo + 113, // 54: tutorial.ResOrderList.OrderList:type_name -> tutorial.Order + 116, // 55: tutorial.ResDecorateInfo.Parts:type_name -> tutorial.DecoratePart + 169, // 56: tutorial.DecoratePart.Items:type_name -> tutorial.ItemInfo 2, // 57: tutorial.ResDecorate.Code:type_name -> tutorial.RES_CODE 2, // 58: tutorial.ResDecorateAll.Code:type_name -> tutorial.RES_CODE - 2, // 59: tutorial.ResDecorateReward.Code:type_name -> tutorial.RES_CODE - 123, // 60: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card - 502, // 61: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry - 503, // 62: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry + 2, // 59: tutorial.ResAreaReward.Code:type_name -> tutorial.RES_CODE + 124, // 60: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card + 503, // 61: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry + 504, // 62: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry 2, // 63: tutorial.ResCardSeasonFirstReward.Code:type_name -> tutorial.RES_CODE 2, // 64: tutorial.ResCardHandbookReward.Code:type_name -> tutorial.RES_CODE 2, // 65: tutorial.ResMasterCard.Code:type_name -> tutorial.RES_CODE @@ -30229,232 +30363,233 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 78: tutorial.ResGetFriendCard.Code:type_name -> tutorial.RES_CODE 2, // 79: tutorial.ResGuideReward.Code:type_name -> tutorial.RES_CODE 2, // 80: tutorial.ResGuidePlayroom.Code:type_name -> tutorial.RES_CODE - 504, // 81: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry - 505, // 82: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry - 168, // 83: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo - 169, // 84: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack - 506, // 85: tutorial.ResGuideTask.Task:type_name -> tutorial.ResGuideTask.TaskEntry - 179, // 86: tutorial.GuideTask.Progress:type_name -> tutorial.QuestProgress + 505, // 81: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry + 506, // 82: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry + 169, // 83: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo + 170, // 84: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack + 507, // 85: tutorial.ResGuideTask.Task:type_name -> tutorial.ResGuideTask.TaskEntry + 180, // 86: tutorial.GuideTask.Progress:type_name -> tutorial.QuestProgress 2, // 87: tutorial.ResGetGuideTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 88: tutorial.ResGetGuideActiveReward.Code:type_name -> tutorial.RES_CODE - 507, // 89: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry - 508, // 90: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry - 168, // 91: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo - 179, // 92: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress - 168, // 93: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo + 508, // 89: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry + 509, // 90: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry + 169, // 91: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo + 180, // 92: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress + 169, // 93: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo 2, // 94: tutorial.ResGetDailyTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 95: tutorial.ResGetDailyWeekReward.Code:type_name -> tutorial.RES_CODE 2, // 96: tutorial.ResDailyUnlock.Code:type_name -> tutorial.RES_CODE - 187, // 97: tutorial.ResFaceInfo.FaceList:type_name -> tutorial.FaceInfo + 188, // 97: tutorial.ResFaceInfo.FaceList:type_name -> tutorial.FaceInfo 2, // 98: tutorial.ResSetFace.Code:type_name -> tutorial.RES_CODE - 191, // 99: tutorial.ResAvatarInfo.AvatarList:type_name -> tutorial.AvatarInfo + 192, // 99: tutorial.ResAvatarInfo.AvatarList:type_name -> tutorial.AvatarInfo 2, // 100: tutorial.ResSetAvatar.Code:type_name -> tutorial.RES_CODE 2, // 101: tutorial.ResSetEmoji.Code:type_name -> tutorial.RES_CODE - 198, // 102: tutorial.ResSevenLogin.WeekReward:type_name -> tutorial.SevenLoginReward - 198, // 103: tutorial.ResSevenLogin.MonthReward:type_name -> tutorial.SevenLoginReward - 168, // 104: tutorial.SevenLoginReward.Item1:type_name -> tutorial.ItemInfo - 168, // 105: tutorial.SevenLoginReward.Item2:type_name -> tutorial.ItemInfo - 168, // 106: tutorial.SevenLoginReward.Item3:type_name -> tutorial.ItemInfo + 199, // 102: tutorial.ResSevenLogin.WeekReward:type_name -> tutorial.SevenLoginReward + 199, // 103: tutorial.ResSevenLogin.MonthReward:type_name -> tutorial.SevenLoginReward + 169, // 104: tutorial.SevenLoginReward.Item1:type_name -> tutorial.ItemInfo + 169, // 105: tutorial.SevenLoginReward.Item2:type_name -> tutorial.ItemInfo + 169, // 106: tutorial.SevenLoginReward.Item3:type_name -> tutorial.ItemInfo 2, // 107: tutorial.ResGetSevenLoginReward.Code:type_name -> tutorial.RES_CODE 2, // 108: tutorial.ResGetMonthLoginReward.Code:type_name -> tutorial.RES_CODE - 204, // 109: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo + 205, // 109: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo 2, // 110: tutorial.ResActivityReward.Code:type_name -> tutorial.RES_CODE - 509, // 111: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry - 510, // 112: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry + 510, // 111: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry + 511, // 112: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry 2, // 113: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE 2, // 114: tutorial.ResSelectLimitEvent.Code:type_name -> tutorial.RES_CODE - 511, // 115: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry - 512, // 116: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry + 512, // 115: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry + 513, // 116: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry 2, // 117: tutorial.ResLimitEventLuckyCat.Code:type_name -> tutorial.RES_CODE 2, // 118: tutorial.ResLimitSenceReward.Code:type_name -> tutorial.RES_CODE - 168, // 119: tutorial.ResChessRainReward.Items:type_name -> tutorial.ItemInfo + 169, // 119: tutorial.ResChessRainReward.Items:type_name -> tutorial.ItemInfo 2, // 120: tutorial.ResFastProduceReward.Code:type_name -> tutorial.RES_CODE 2, // 121: tutorial.ResCatTrickReward.Code:type_name -> tutorial.RES_CODE - 231, // 122: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple - 513, // 123: tutorial.ResFriendPlayerSimple.Emoji:type_name -> tutorial.ResFriendPlayerSimple.EmojiEntry - 514, // 124: tutorial.ResFriendPlayerSimple.Playroom:type_name -> tutorial.ResFriendPlayerSimple.PlayroomEntry - 515, // 125: tutorial.ResFriendPlayerSimple.DressSet:type_name -> tutorial.ResFriendPlayerSimple.DressSetEntry - 232, // 126: tutorial.ResFriendPlayerSimple.Last:type_name -> tutorial.ActLog - 516, // 127: tutorial.ResFriendPlayerSimple.Physiology:type_name -> tutorial.ResFriendPlayerSimple.PhysiologyEntry - 517, // 128: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry - 231, // 129: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple - 234, // 130: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog - 236, // 131: tutorial.NotifyFriendLog.Bubble:type_name -> tutorial.FriendBubbleInfo - 168, // 132: tutorial.FriendBubbleInfo.Items:type_name -> tutorial.ItemInfo - 238, // 133: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard - 518, // 134: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry + 232, // 122: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple + 514, // 123: tutorial.ResFriendPlayerSimple.Emoji:type_name -> tutorial.ResFriendPlayerSimple.EmojiEntry + 515, // 124: tutorial.ResFriendPlayerSimple.Playroom:type_name -> tutorial.ResFriendPlayerSimple.PlayroomEntry + 516, // 125: tutorial.ResFriendPlayerSimple.DressSet:type_name -> tutorial.ResFriendPlayerSimple.DressSetEntry + 233, // 126: tutorial.ResFriendPlayerSimple.Last:type_name -> tutorial.ActLog + 517, // 127: tutorial.ResFriendPlayerSimple.Physiology:type_name -> tutorial.ResFriendPlayerSimple.PhysiologyEntry + 518, // 128: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry + 232, // 129: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple + 235, // 130: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog + 237, // 131: tutorial.NotifyFriendLog.Bubble:type_name -> tutorial.FriendBubbleInfo + 169, // 132: tutorial.FriendBubbleInfo.Items:type_name -> tutorial.ItemInfo + 239, // 133: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard + 519, // 134: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry 2, // 135: tutorial.ResFriendByCode.Code:type_name -> tutorial.RES_CODE - 231, // 136: tutorial.ResFriendByCode.Player:type_name -> tutorial.ResPlayerSimple - 231, // 137: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple + 232, // 136: tutorial.ResFriendByCode.Player:type_name -> tutorial.ResPlayerSimple + 232, // 137: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple 2, // 138: tutorial.ResFriendIgnore.Code:type_name -> tutorial.RES_CODE - 231, // 139: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple + 232, // 139: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple 2, // 140: tutorial.ResAddNpc.Code:type_name -> tutorial.RES_CODE - 253, // 141: tutorial.ResFriendApply.ApplyList:type_name -> tutorial.ResFriendApplyInfo - 231, // 142: tutorial.ResFriendApplyInfo.Player:type_name -> tutorial.ResPlayerSimple - 238, // 143: tutorial.ResFriendCardMsg.MsgList:type_name -> tutorial.ResFriendCard - 253, // 144: tutorial.ResWishApplyList.ApplyList:type_name -> tutorial.ResFriendApplyInfo + 254, // 141: tutorial.ResFriendApply.ApplyList:type_name -> tutorial.ResFriendApplyInfo + 232, // 142: tutorial.ResFriendApplyInfo.Player:type_name -> tutorial.ResPlayerSimple + 239, // 143: tutorial.ResFriendCardMsg.MsgList:type_name -> tutorial.ResFriendCard + 254, // 144: tutorial.ResWishApplyList.ApplyList:type_name -> tutorial.ResFriendApplyInfo 2, // 145: tutorial.ResWishApply.Code:type_name -> tutorial.RES_CODE - 234, // 146: tutorial.ResFriendTimeLine.Log:type_name -> tutorial.ResFriendLog - 262, // 147: tutorial.ResFriendTimeLine.Reply:type_name -> tutorial.ResFriendReply - 231, // 148: tutorial.ResFriendReply.Player:type_name -> tutorial.ResPlayerSimple - 2, // 149: tutorial.ResFriendReplyHandle.Code:type_name -> tutorial.RES_CODE - 236, // 150: tutorial.ResFriendBubble.Bubble:type_name -> tutorial.FriendBubbleInfo - 2, // 151: tutorial.ResFriendTLUpvote.Code:type_name -> tutorial.RES_CODE - 2, // 152: tutorial.ResFriendTReward.Code:type_name -> tutorial.RES_CODE - 231, // 153: tutorial.ResFriendApplyNotify.Player:type_name -> tutorial.ResPlayerSimple - 2, // 154: tutorial.ResApplyFriend.Code:type_name -> tutorial.RES_CODE - 2, // 155: tutorial.ResAgreeFriend.Code:type_name -> tutorial.RES_CODE - 231, // 156: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple - 2, // 157: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE - 2, // 158: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE - 519, // 159: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry - 520, // 160: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry - 168, // 161: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo - 283, // 162: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo - 2, // 163: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE - 2, // 164: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE - 2, // 165: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE - 521, // 166: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry - 522, // 167: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry - 523, // 168: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry - 294, // 169: tutorial.ResCharge.Wish:type_name -> tutorial.WishList - 524, // 170: tutorial.ResCharge.WeeklyDiscount:type_name -> tutorial.ResCharge.WeeklyDiscountEntry - 2, // 171: tutorial.ResAddWish.Code:type_name -> tutorial.RES_CODE - 2, // 172: tutorial.ResGetWish.Code:type_name -> tutorial.RES_CODE - 2, // 173: tutorial.ResSendWishBeg.Code:type_name -> tutorial.RES_CODE - 2, // 174: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE - 2, // 175: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE - 525, // 176: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry - 2, // 177: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE - 2, // 178: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE - 526, // 179: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry - 168, // 180: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo - 2, // 181: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE - 2, // 182: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE - 2, // 183: tutorial.ResChargeReceive.Code:type_name -> tutorial.RES_CODE - 2, // 184: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE - 2, // 185: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE - 2, // 186: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE - 527, // 187: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry - 528, // 188: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry - 529, // 189: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry - 530, // 190: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry - 531, // 191: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry - 2, // 192: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE - 532, // 193: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry - 533, // 194: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry - 2, // 195: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE - 2, // 196: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE - 2, // 197: tutorial.ResActPassReward.Code:type_name -> tutorial.RES_CODE - 534, // 198: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry - 204, // 199: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo - 535, // 200: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry - 536, // 201: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry - 368, // 202: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo - 537, // 203: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry - 366, // 204: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent - 368, // 205: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.GuessColorInfo - 538, // 206: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry - 539, // 207: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry - 2, // 208: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE - 2, // 209: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE - 374, // 210: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent - 2, // 211: tutorial.ResRaceStart.Code:type_name -> tutorial.RES_CODE - 2, // 212: tutorial.ResRaceReward.Code:type_name -> tutorial.RES_CODE - 168, // 213: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo - 408, // 214: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent - 407, // 215: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom - 540, // 216: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry - 393, // 217: tutorial.ResPlayroom.collect:type_name -> tutorial.PlayroomCollectInfo - 541, // 218: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry - 168, // 219: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo - 403, // 220: tutorial.ResPlayroom.Chip:type_name -> tutorial.ChipInfo - 542, // 221: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry - 543, // 222: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry - 544, // 223: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry - 392, // 224: tutorial.ResPlayroom.PetAir:type_name -> tutorial.PlayroomAirInfo - 178, // 225: tutorial.ResPlayroom.DailyTask:type_name -> tutorial.DailyTask - 405, // 226: tutorial.ResPlayroom.AdItem:type_name -> tutorial.AdItem - 407, // 227: tutorial.ResPlayroom.Target:type_name -> tutorial.FriendRoom - 545, // 228: tutorial.ResPlayroom.WeeklyDiscount:type_name -> tutorial.ResPlayroom.WeeklyDiscountEntry - 178, // 229: tutorial.NotifyPlayroomTask.DailyTask:type_name -> tutorial.DailyTask - 2, // 230: tutorial.ResPlayroomTask.Code:type_name -> tutorial.RES_CODE - 2, // 231: tutorial.ResPlayroomTaskReward.Code:type_name -> tutorial.RES_CODE - 2, // 232: tutorial.ResPlayroomUnlock.Code:type_name -> tutorial.RES_CODE - 2, // 233: tutorial.ResPlayroomUpvote.Code:type_name -> tutorial.RES_CODE - 391, // 234: tutorial.PlayroomDress.List:type_name -> tutorial.PlayroomDressInfo - 546, // 235: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry - 2, // 236: tutorial.ResPlayroomDressSet.Code:type_name -> tutorial.RES_CODE - 2, // 237: tutorial.ResPlayroomPetAirSet.Code:type_name -> tutorial.RES_CODE - 2, // 238: tutorial.ResPlayroomWrokOutline.Code:type_name -> tutorial.RES_CODE - 168, // 239: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo - 403, // 240: tutorial.NotifyPlayroomLose.Chip:type_name -> tutorial.ChipInfo - 547, // 241: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry - 548, // 242: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry - 405, // 243: tutorial.NotifyPlayroomMood.AdItem:type_name -> tutorial.AdItem - 549, // 244: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry - 550, // 245: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry - 551, // 246: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry - 552, // 247: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry - 553, // 248: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry - 2, // 249: tutorial.ResPlayroomFlip.Code:type_name -> tutorial.RES_CODE - 2, // 250: tutorial.ResPlayroomGuide.Code:type_name -> tutorial.RES_CODE - 2, // 251: tutorial.ResPlayroomFlipReward.Code:type_name -> tutorial.RES_CODE - 2, // 252: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE - 554, // 253: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry - 168, // 254: tutorial.ResPlayroomGameShowReward.Items:type_name -> tutorial.ItemInfo - 2, // 255: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE - 555, // 256: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry - 2, // 257: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE - 2, // 258: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE - 2, // 259: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE - 2, // 260: tutorial.ResPlayroomWork.Code:type_name -> tutorial.RES_CODE - 2, // 261: tutorial.ResPlayroomRest.Code:type_name -> tutorial.RES_CODE - 2, // 262: tutorial.ResPlayroomDraw.Code:type_name -> tutorial.RES_CODE - 2, // 263: tutorial.ResPlayroomChip.Code:type_name -> tutorial.RES_CODE - 2, // 264: tutorial.ResPlayroomBuyItem.Code:type_name -> tutorial.RES_CODE - 2, // 265: tutorial.ResPlayroomShop.Code:type_name -> tutorial.RES_CODE - 443, // 266: tutorial.ResFriendTreasure.List:type_name -> tutorial.TreasureInfo - 443, // 267: tutorial.ReqFriendTreasureStart.List:type_name -> tutorial.TreasureInfo - 2, // 268: tutorial.ResFriendTreasureStart.Code:type_name -> tutorial.RES_CODE - 2, // 269: tutorial.ResFriendTreasureEnd.Code:type_name -> tutorial.RES_CODE - 2, // 270: tutorial.ResFriendTreasureFilp.Code:type_name -> tutorial.RES_CODE - 454, // 271: tutorial.ResCollectInfo.Items:type_name -> tutorial.CollectItem - 168, // 272: tutorial.CollectItem.Items:type_name -> tutorial.ItemInfo - 2, // 273: tutorial.ResCollect.Code:type_name -> tutorial.RES_CODE - 459, // 274: tutorial.ResCatnip.GameList:type_name -> tutorial.CatnipGame - 231, // 275: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple - 460, // 276: tutorial.CatnipGame.InviteList:type_name -> tutorial.CatnipInvite - 460, // 277: tutorial.CatnipGame.BeInviteList:type_name -> tutorial.CatnipInvite - 2, // 278: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE - 2, // 279: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE - 2, // 280: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE - 2, // 281: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE - 2, // 282: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE - 2, // 283: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE - 2, // 284: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE - 2, // 285: tutorial.ResCatnipEmoji.Code:type_name -> tutorial.RES_CODE - 171, // 286: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask - 177, // 287: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek - 178, // 288: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask - 214, // 289: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent - 231, // 290: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple - 283, // 291: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo - 301, // 292: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop - 302, // 293: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop - 293, // 294: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 313, // 295: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo - 233, // 296: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 233, // 297: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 390, // 298: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress - 293, // 299: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 168, // 300: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo - 168, // 301: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo - 302, // [302:302] is the sub-list for method output_type - 302, // [302:302] is the sub-list for method input_type - 302, // [302:302] is the sub-list for extension type_name - 302, // [302:302] is the sub-list for extension extendee - 0, // [0:302] is the sub-list for field type_name + 235, // 146: tutorial.ResFriendTimeLine.Log:type_name -> tutorial.ResFriendLog + 263, // 147: tutorial.ResFriendTimeLine.Reply:type_name -> tutorial.ResFriendReply + 232, // 148: tutorial.ResFriendReply.Player:type_name -> tutorial.ResPlayerSimple + 169, // 149: tutorial.ResFriendReply.Items:type_name -> tutorial.ItemInfo + 2, // 150: tutorial.ResFriendReplyHandle.Code:type_name -> tutorial.RES_CODE + 237, // 151: tutorial.ResFriendBubble.Bubble:type_name -> tutorial.FriendBubbleInfo + 2, // 152: tutorial.ResFriendTLUpvote.Code:type_name -> tutorial.RES_CODE + 2, // 153: tutorial.ResFriendTReward.Code:type_name -> tutorial.RES_CODE + 232, // 154: tutorial.ResFriendApplyNotify.Player:type_name -> tutorial.ResPlayerSimple + 2, // 155: tutorial.ResApplyFriend.Code:type_name -> tutorial.RES_CODE + 2, // 156: tutorial.ResAgreeFriend.Code:type_name -> tutorial.RES_CODE + 232, // 157: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple + 2, // 158: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE + 2, // 159: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE + 520, // 160: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry + 521, // 161: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry + 169, // 162: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo + 284, // 163: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo + 2, // 164: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE + 2, // 165: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE + 2, // 166: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE + 522, // 167: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry + 523, // 168: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry + 524, // 169: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry + 295, // 170: tutorial.ResCharge.Wish:type_name -> tutorial.WishList + 525, // 171: tutorial.ResCharge.WeeklyDiscount:type_name -> tutorial.ResCharge.WeeklyDiscountEntry + 2, // 172: tutorial.ResAddWish.Code:type_name -> tutorial.RES_CODE + 2, // 173: tutorial.ResGetWish.Code:type_name -> tutorial.RES_CODE + 2, // 174: tutorial.ResSendWishBeg.Code:type_name -> tutorial.RES_CODE + 2, // 175: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE + 2, // 176: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE + 526, // 177: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry + 2, // 178: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE + 2, // 179: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE + 527, // 180: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry + 169, // 181: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo + 2, // 182: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE + 2, // 183: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE + 2, // 184: tutorial.ResChargeReceive.Code:type_name -> tutorial.RES_CODE + 2, // 185: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE + 2, // 186: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE + 2, // 187: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE + 528, // 188: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry + 529, // 189: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry + 530, // 190: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry + 531, // 191: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry + 532, // 192: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry + 2, // 193: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE + 533, // 194: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry + 534, // 195: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry + 2, // 196: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE + 2, // 197: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE + 2, // 198: tutorial.ResActPassReward.Code:type_name -> tutorial.RES_CODE + 535, // 199: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry + 205, // 200: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo + 536, // 201: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry + 537, // 202: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry + 369, // 203: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo + 538, // 204: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry + 367, // 205: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent + 369, // 206: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.GuessColorInfo + 539, // 207: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry + 540, // 208: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry + 2, // 209: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE + 2, // 210: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE + 375, // 211: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent + 2, // 212: tutorial.ResRaceStart.Code:type_name -> tutorial.RES_CODE + 2, // 213: tutorial.ResRaceReward.Code:type_name -> tutorial.RES_CODE + 169, // 214: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo + 409, // 215: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent + 408, // 216: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom + 541, // 217: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry + 394, // 218: tutorial.ResPlayroom.collect:type_name -> tutorial.PlayroomCollectInfo + 542, // 219: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry + 169, // 220: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo + 404, // 221: tutorial.ResPlayroom.Chip:type_name -> tutorial.ChipInfo + 543, // 222: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry + 544, // 223: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry + 545, // 224: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry + 393, // 225: tutorial.ResPlayroom.PetAir:type_name -> tutorial.PlayroomAirInfo + 179, // 226: tutorial.ResPlayroom.DailyTask:type_name -> tutorial.DailyTask + 406, // 227: tutorial.ResPlayroom.AdItem:type_name -> tutorial.AdItem + 408, // 228: tutorial.ResPlayroom.Target:type_name -> tutorial.FriendRoom + 546, // 229: tutorial.ResPlayroom.WeeklyDiscount:type_name -> tutorial.ResPlayroom.WeeklyDiscountEntry + 179, // 230: tutorial.NotifyPlayroomTask.DailyTask:type_name -> tutorial.DailyTask + 2, // 231: tutorial.ResPlayroomTask.Code:type_name -> tutorial.RES_CODE + 2, // 232: tutorial.ResPlayroomTaskReward.Code:type_name -> tutorial.RES_CODE + 2, // 233: tutorial.ResPlayroomUnlock.Code:type_name -> tutorial.RES_CODE + 2, // 234: tutorial.ResPlayroomUpvote.Code:type_name -> tutorial.RES_CODE + 392, // 235: tutorial.PlayroomDress.List:type_name -> tutorial.PlayroomDressInfo + 547, // 236: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry + 2, // 237: tutorial.ResPlayroomDressSet.Code:type_name -> tutorial.RES_CODE + 2, // 238: tutorial.ResPlayroomPetAirSet.Code:type_name -> tutorial.RES_CODE + 2, // 239: tutorial.ResPlayroomWrokOutline.Code:type_name -> tutorial.RES_CODE + 169, // 240: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo + 404, // 241: tutorial.NotifyPlayroomLose.Chip:type_name -> tutorial.ChipInfo + 548, // 242: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry + 549, // 243: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry + 406, // 244: tutorial.NotifyPlayroomMood.AdItem:type_name -> tutorial.AdItem + 550, // 245: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry + 551, // 246: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry + 552, // 247: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry + 553, // 248: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry + 554, // 249: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry + 2, // 250: tutorial.ResPlayroomFlip.Code:type_name -> tutorial.RES_CODE + 2, // 251: tutorial.ResPlayroomGuide.Code:type_name -> tutorial.RES_CODE + 2, // 252: tutorial.ResPlayroomFlipReward.Code:type_name -> tutorial.RES_CODE + 2, // 253: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE + 555, // 254: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry + 169, // 255: tutorial.ResPlayroomGameShowReward.Items:type_name -> tutorial.ItemInfo + 2, // 256: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE + 556, // 257: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry + 2, // 258: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE + 2, // 259: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE + 2, // 260: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE + 2, // 261: tutorial.ResPlayroomWork.Code:type_name -> tutorial.RES_CODE + 2, // 262: tutorial.ResPlayroomRest.Code:type_name -> tutorial.RES_CODE + 2, // 263: tutorial.ResPlayroomDraw.Code:type_name -> tutorial.RES_CODE + 2, // 264: tutorial.ResPlayroomChip.Code:type_name -> tutorial.RES_CODE + 2, // 265: tutorial.ResPlayroomBuyItem.Code:type_name -> tutorial.RES_CODE + 2, // 266: tutorial.ResPlayroomShop.Code:type_name -> tutorial.RES_CODE + 444, // 267: tutorial.ResFriendTreasure.List:type_name -> tutorial.TreasureInfo + 444, // 268: tutorial.ReqFriendTreasureStart.List:type_name -> tutorial.TreasureInfo + 2, // 269: tutorial.ResFriendTreasureStart.Code:type_name -> tutorial.RES_CODE + 2, // 270: tutorial.ResFriendTreasureEnd.Code:type_name -> tutorial.RES_CODE + 2, // 271: tutorial.ResFriendTreasureFilp.Code:type_name -> tutorial.RES_CODE + 455, // 272: tutorial.ResCollectInfo.Items:type_name -> tutorial.CollectItem + 169, // 273: tutorial.CollectItem.Items:type_name -> tutorial.ItemInfo + 2, // 274: tutorial.ResCollect.Code:type_name -> tutorial.RES_CODE + 460, // 275: tutorial.ResCatnip.GameList:type_name -> tutorial.CatnipGame + 461, // 276: tutorial.ResCatnip.FriendList:type_name -> tutorial.CatnipInvite + 232, // 277: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple + 232, // 278: tutorial.CatnipInvite.Player:type_name -> tutorial.ResPlayerSimple + 2, // 279: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE + 2, // 280: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE + 2, // 281: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE + 2, // 282: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE + 2, // 283: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE + 2, // 284: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE + 2, // 285: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE + 2, // 286: tutorial.ResCatnipEmoji.Code:type_name -> tutorial.RES_CODE + 172, // 287: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask + 178, // 288: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 179, // 289: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 215, // 290: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 232, // 291: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 284, // 292: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 302, // 293: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 303, // 294: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 294, // 295: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 314, // 296: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 234, // 297: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 234, // 298: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 391, // 299: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress + 294, // 300: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 169, // 301: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo + 169, // 302: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo + 303, // [303:303] is the sub-list for method output_type + 303, // [303:303] is the sub-list for method input_type + 303, // [303:303] is the sub-list for extension type_name + 303, // [303:303] is the sub-list for extension extendee + 0, // [0:303] is the sub-list for field type_name } func init() { file_proto_Gameapi_proto_init() } @@ -30467,7 +30602,7 @@ func file_proto_Gameapi_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_Gameapi_proto_rawDesc), len(file_proto_Gameapi_proto_rawDesc)), - NumEnums: 12, + NumEnums: 13, NumMessages: 544, NumExtensions: 0, NumServices: 0, diff --git a/src/server/test/catnip_test.go b/src/server/test/catnip_test.go new file mode 100644 index 00000000..32e844fb --- /dev/null +++ b/src/server/test/catnip_test.go @@ -0,0 +1,52 @@ +package test + +import ( + "testing" + + "google.golang.org/protobuf/proto" + + "server/game" + "server/msg" +) + +func TestCatnipBackData(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("aaa001") + game.G_GameLogicPtr.SetPlayer(p1) + p1.CatnipBackData() +} + +func TestReqCatnipEmoji(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("aaa001") + game.G_GameLogicPtr.SetPlayer(p1) + + req := &msg.ReqCatnipEmoji{ + Id: 1, + EmojiId: 1, + } + data, err := proto.Marshal(req) + if err != nil { + t.Fatalf("proto.Marshal error: %v", err) + } + + if err := game.ReqCatnipEmoji(p1, data); err != nil { + t.Fatalf("ReqCatnipEmoji returned error: %v", err) + } +} + +func TestReqCatnipReward(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("aaa001") + game.G_GameLogicPtr.SetPlayer(p1) + req := &msg.ReqCatnipReward{ + Id: 2, + } + data, err := proto.Marshal(req) + if err != nil { + t.Fatalf("proto.Marshal error: %v", err) + } + if err := game.ReqCatnipReward(p1, data); err != nil { + t.Fatalf("ReqCatnipReward returned error: %v", err) + } +} diff --git a/src/server/test/conf/server.json b/src/server/test/conf/server.json new file mode 100644 index 00000000..c6779e49 --- /dev/null +++ b/src/server/test/conf/server.json @@ -0,0 +1,48 @@ +{ + "AppID": 1, + "LogLevel": "debug", + "LogPath": "./log", + "TCPAddr": ":3601", + "WSAddr": ":3566", + "MySqlAddr": "127.0.0.1", + "MySqlPort": "3306", + "MySqlUsr": "root", + "MySqlPwd": "IOagNEq3C84c-20CmHEin5iODVc=", + "MaxConnNum": 20000, + "DbName": "Merge_Pet_1", + "HttpPort": ":8081", + "AppPath": "./app", + "TELOGDIR" : "./teLog/", + + "GameName": "Merge_Pet_Local", + + "ServerType":"node", + + "ServerID": 1, + "ServerOpenTime": "2018-01-01 00:00:00", + "ServerName": "Merge_Pet", + "ServerStatus" : 1, + "ServerCenter" : 1, + "GameConfPath": "D:/Github/pet_home_server/src/server/gamedata/config/", + + "ListenAddr":":9001", + "CenterAddr": "pethome.bywaystudios.com:9000", + "RemoteAddr":"host.docker.internal:9001", + + "RedisAddr":"127.0.0.1", + "RedisPort" :"6379", + "RedisPwd" :"", + + "RedisWriteAddr":"127.0.0.1:6379", + "RedisReadAddrs":"127.0.0.1:6379", + "RedisMasterName":"mymaster", + "RedisConnType":"Direct", + + "GoogleVerify":false, + "Partition":3, + "KafkaHost":"kafka-server", + "CountryCode":"004", + "KafkaPort":"9092", + "Version":"1.0.0", + "IdVerify":false +}