diff --git a/src/server/game/BanMgr.go b/src/server/game/BanMgr.go index 744b81bf..1694f559 100644 --- a/src/server/game/BanMgr.go +++ b/src/server/game/BanMgr.go @@ -10,39 +10,49 @@ type BanMgr struct { } type BanData struct { - BanList map[int64]int64 // 玩家ID -> 是否被封禁 + NewBanList map[int64]*BanInfo // 新增的封禁列表 +} + +type BanInfo struct { + UserId int64 // 玩家ID + EndTime int64 // 封禁结束时间,0表示永久封禁 + Reason string // 封禁原因 } func (f *BanMgr) Init() { gob.Register(&BanData{}) f.key = BAN_MGR_KEY f.data = &BanData{ - BanList: make(map[int64]int64), + NewBanList: make(map[int64]*BanInfo), } // 注册处理函数 f.init() - if f.data.(*BanData).BanList == nil { - f.data.(*BanData).BanList = make(map[int64]int64) + if f.data.(*BanData).NewBanList == nil { + f.data.(*BanData).NewBanList = make(map[int64]*BanInfo) } } func (f *BanMgr) IsBanned(userId int64) bool { - if f.data.(*BanData).BanList == nil { + if f.data.(*BanData).NewBanList == nil { return false } - EndTime, banned := f.data.(*BanData).BanList[userId] + Info, banned := f.data.(*BanData).NewBanList[userId] if !banned { return false } - return EndTime > GoUtil.Now() || EndTime == 0 // 如果EndTime为0,表示永久封禁 + return Info.EndTime > GoUtil.Now() || Info.EndTime == 0 // 如果EndTime为0,表示永久封禁 } -func (f *BanMgr) BanUser(userId int64, endTime int64) { - f.data.(*BanData).BanList[userId] = endTime +func (f *BanMgr) BanUser(userId int64, endTime int64, reason string) { + f.data.(*BanData).NewBanList[userId] = &BanInfo{ + UserId: userId, + EndTime: endTime, + Reason: reason, + } f.SaveData() } func (f *BanMgr) UnbanUser(userId int64) { - delete(f.data.(*BanData).BanList, userId) + delete(f.data.(*BanData).NewBanList, userId) f.SaveData() } diff --git a/src/server/game/admin.go b/src/server/game/admin.go index 2a0f2d09..d193e812 100644 --- a/src/server/game/admin.go +++ b/src/server/game/admin.go @@ -26,6 +26,7 @@ var AdminFuncMap = map[string]func([]interface{}) error{ "ReqReloadServerMail": ReqReloadServerMail, "ReqReload": ReqReload, "ReqAdminGm": ReqAdminGm, + "ReqAdminBan": ReqAdminGm, } func AdminProcess(Func string, args []interface{}) { @@ -132,6 +133,7 @@ func AdminPlayerInfo(args []interface{}) error { res["Cumulative"] = player.PlayMod.getBaseMod().Cumulative res["RegisterTime"] = player.GetPlayerBaseMod().GetRegisterTime() res["TodayCumulative"] = player.PlayMod.getBaseMod().TodayCumulative + res["Ban"] = G_GameLogicPtr.BanMgr.IsBanned(player.M_DwUin) if online { res["Cumulative"] = int64(player.PlayMod.getBaseMod().Cumulative) + GoUtil.Now() - int64(player.PlayMod.getBaseMod().LoginTime) res["TodayCumulative"] = int64(player.PlayMod.getBaseMod().TodayCumulative) + GoUtil.Now() - int64(player.PlayMod.getBaseMod().LoginTime) @@ -219,11 +221,6 @@ func ReqAdminGm(args []interface{}) error { player.lock.Lock() defer player.lock.Unlock() err := ReqGmCommand_(player, req.Command) - - if err != nil { - res["Code"] = 1 - res["Msg"] = err.Error() - } if err != nil { res["Code"] = 1 res["Msg"] = err.Error() @@ -233,3 +230,24 @@ func ReqAdminGm(args []interface{}) error { AdminPlayerBack(a, res) return nil } + +func ReqAdminBan(args []interface{}) error { + a, buf := ParseAdminArgs(args) + req := &msg.ReqAdminBan{} + proto.Unmarshal(buf, req) + res := make(map[string]interface{}) + res["Code"] = 0 + res["Msg"] = "ok" + player := G_GameLogicPtr.GetPlayer(req.Uid) + if player == nil { + res["Code"] = 1 + res["Msg"] = "player not found" + AdminPlayerBack(a, res) + return nil + } + player.lock.Lock() + defer player.lock.Unlock() + G_GameLogicPtr.BanMgr.BanUser(player.M_DwUin, int64(req.Time), req.Reason) + AdminPlayerBack(a, res) + return nil +} diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index c55980df..ab9823d9 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -24966,6 +24966,66 @@ func (x *ReqAdminGm) GetCommand() string { return "" } +type ReqAdminBan struct { + state protoimpl.MessageState `protogen:"open.v1"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` // uid + Time int32 `protobuf:"varint,2,opt,name=Time,proto3" json:"Time,omitempty"` // 禁止时间 + Reason string `protobuf:"bytes,3,opt,name=Reason,proto3" json:"Reason,omitempty"` // 禁止原因 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReqAdminBan) Reset() { + *x = ReqAdminBan{} + mi := &file_proto_Gameapi_proto_msgTypes[440] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqAdminBan) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqAdminBan) ProtoMessage() {} + +func (x *ReqAdminBan) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[440] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqAdminBan.ProtoReflect.Descriptor instead. +func (*ReqAdminBan) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{440} +} + +func (x *ReqAdminBan) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + +func (x *ReqAdminBan) GetTime() int32 { + if x != nil { + return x.Time + } + return 0 +} + +func (x *ReqAdminBan) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + var File_proto_Gameapi_proto protoreflect.FileDescriptor const file_proto_Gameapi_proto_rawDesc = "" + @@ -26769,7 +26829,11 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\n" + "ReqAdminGm\x12\x10\n" + "\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x18\n" + - "\aCommand\x18\x02 \x01(\tR\aCommand*\xc8\n" + + "\aCommand\x18\x02 \x01(\tR\aCommand\"K\n" + + "\vReqAdminBan\x12\x10\n" + + "\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x12\n" + + "\x04Time\x18\x02 \x01(\x05R\x04Time\x12\x16\n" + + "\x06Reason\x18\x03 \x01(\tR\x06Reason*\xc8\n" + "\n" + "\x0eITEM_POP_LABEL\x12\f\n" + "\bPlayroom\x10\x00\x12\r\n" + @@ -26967,7 +27031,7 @@ func file_proto_Gameapi_proto_rawDescGZIP() []byte { } var file_proto_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 11) -var file_proto_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 502) +var file_proto_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 503) var file_proto_Gameapi_proto_goTypes = []any{ (ITEM_POP_LABEL)(0), // 0: tutorial.ITEM_POP_LABEL (HANDLE_TYPE)(0), // 1: tutorial.HANDLE_TYPE @@ -27420,100 +27484,101 @@ var file_proto_Gameapi_proto_goTypes = []any{ (*ReqServerInfo)(nil), // 448: tutorial.ReqServerInfo (*ReqReload)(nil), // 449: tutorial.ReqReload (*ReqAdminGm)(nil), // 450: tutorial.ReqAdminGm - nil, // 451: tutorial.ResChessColorData.MChessColorDataEntry - nil, // 452: tutorial.UpdateBaseItemInfo.MUpdateItemEntry - nil, // 453: tutorial.ResPlayerChessData.MChessDataEntry - nil, // 454: tutorial.UpdatePlayerChessData.MChessDataEntry - nil, // 455: tutorial.ReqSeparateChess.MChessDataEntry - nil, // 456: tutorial.ReqUpgradeChess.MChessDataEntry - nil, // 457: tutorial.ReqGetChessFromBuff.MChessDataEntry - nil, // 458: tutorial.ReqChessEx.MChessDataEntry - nil, // 459: tutorial.ReqSourceChest.MChessDataEntry - nil, // 460: tutorial.ReqPlayroomOutline.MChessDataEntry - nil, // 461: tutorial.ReqPutChessInBag.MChessDataEntry - nil, // 462: tutorial.ReqTakeChessOutBag.MChessDataEntry - nil, // 463: tutorial.ResPlayerBriefProfileData.SetEmojiEntry - nil, // 464: tutorial.UserInfo.SetEmojiEntry - nil, // 465: tutorial.ReqRewardOrder.MChessDataEntry - nil, // 466: tutorial.ResCardInfo.AllCardEntry - nil, // 467: tutorial.ResCardInfo.HandbookEntry - nil, // 468: tutorial.ResGuildInfo.RewardEntry - nil, // 469: tutorial.ResGuideInfo.RewardEntry - nil, // 470: tutorial.ResDailyTask.WeekRewardEntry - nil, // 471: tutorial.ResDailyTask.DailyTaskEntry - nil, // 472: tutorial.ResLimitEvent.LimitEventListEntry - nil, // 473: tutorial.ResLimitEventProgress.ProgressRewardEntry - nil, // 474: tutorial.LimitEvent.ParamEntry - nil, // 475: tutorial.ReqLimitEventLuckyCat.MChessDataEntry - nil, // 476: tutorial.ResPlayerSimple.EmojiEntry - nil, // 477: tutorial.ResKv.KvEntry - nil, // 478: tutorial.ResRank.RankListEntry - nil, // 479: tutorial.ResMailList.MailListEntry - nil, // 480: tutorial.ResCharge.SpecialShopEntry - nil, // 481: tutorial.ResCharge.ChessShopEntry - nil, // 482: tutorial.ResCharge.GiftEntry - nil, // 483: tutorial.ReqBuyChessShop2.MChessDataEntry - nil, // 484: tutorial.ResEndless.EndlessListEntry - nil, // 485: tutorial.ResChampshipRank.RankListEntry - nil, // 486: tutorial.ResChampshipPreRank.RankListEntry - nil, // 487: tutorial.ResNotifyCard.CardEntry - nil, // 488: tutorial.ResNotifyCard.MasterEntry - nil, // 489: tutorial.ResNotifyCard.HandbookEntry - nil, // 490: tutorial.ResMining.MapEntry - nil, // 491: tutorial.ReqMiningTake.MapEntry - nil, // 492: tutorial.ResActRed.RedEntry - nil, // 493: tutorial.ResItem.ItemEntry - nil, // 494: tutorial.ItemNotify.ItemEntry - nil, // 495: tutorial.ResGuessColor.OMapEntry - nil, // 496: tutorial.ReqGuessColorTake.OMapEntry - nil, // 497: tutorial.GuessColorInfo.MapEntry - nil, // 498: tutorial.ResPlayroom.PlayroomEntry - nil, // 499: tutorial.ResPlayroom.MoodEntry - nil, // 500: tutorial.ResPlayroom.PhysiologyEntry - nil, // 501: tutorial.ResPlayroom.DressEntry - nil, // 502: tutorial.ResPlayroom.DressSetEntry - nil, // 503: tutorial.ReqPlayroomDressSet.DressSetEntry - nil, // 504: tutorial.NotifyPlayroomMood.MoodEntry - nil, // 505: tutorial.NotifyPlayroomMood.PhysiologyEntry - nil, // 506: tutorial.ResPlayroomInfo.PlayroomEntry - nil, // 507: tutorial.ResPlayroomInfo.ItemsEntry - nil, // 508: tutorial.ResPlayroomInfo.FlipEntry - nil, // 509: tutorial.ResPlayroomInfo.EmojiEntry - nil, // 510: tutorial.ResPlayroomInfo.DressSetEntry - nil, // 511: tutorial.ResPlayroomGame.ItemsEntry - nil, // 512: tutorial.ReqPlayroomSetRoom.PlayroomEntry + (*ReqAdminBan)(nil), // 451: tutorial.ReqAdminBan + nil, // 452: tutorial.ResChessColorData.MChessColorDataEntry + nil, // 453: tutorial.UpdateBaseItemInfo.MUpdateItemEntry + nil, // 454: tutorial.ResPlayerChessData.MChessDataEntry + nil, // 455: tutorial.UpdatePlayerChessData.MChessDataEntry + nil, // 456: tutorial.ReqSeparateChess.MChessDataEntry + nil, // 457: tutorial.ReqUpgradeChess.MChessDataEntry + nil, // 458: tutorial.ReqGetChessFromBuff.MChessDataEntry + nil, // 459: tutorial.ReqChessEx.MChessDataEntry + nil, // 460: tutorial.ReqSourceChest.MChessDataEntry + nil, // 461: tutorial.ReqPlayroomOutline.MChessDataEntry + nil, // 462: tutorial.ReqPutChessInBag.MChessDataEntry + nil, // 463: tutorial.ReqTakeChessOutBag.MChessDataEntry + nil, // 464: tutorial.ResPlayerBriefProfileData.SetEmojiEntry + nil, // 465: tutorial.UserInfo.SetEmojiEntry + nil, // 466: tutorial.ReqRewardOrder.MChessDataEntry + nil, // 467: tutorial.ResCardInfo.AllCardEntry + nil, // 468: tutorial.ResCardInfo.HandbookEntry + nil, // 469: tutorial.ResGuildInfo.RewardEntry + nil, // 470: tutorial.ResGuideInfo.RewardEntry + nil, // 471: tutorial.ResDailyTask.WeekRewardEntry + nil, // 472: tutorial.ResDailyTask.DailyTaskEntry + nil, // 473: tutorial.ResLimitEvent.LimitEventListEntry + nil, // 474: tutorial.ResLimitEventProgress.ProgressRewardEntry + nil, // 475: tutorial.LimitEvent.ParamEntry + nil, // 476: tutorial.ReqLimitEventLuckyCat.MChessDataEntry + nil, // 477: tutorial.ResPlayerSimple.EmojiEntry + nil, // 478: tutorial.ResKv.KvEntry + nil, // 479: tutorial.ResRank.RankListEntry + nil, // 480: tutorial.ResMailList.MailListEntry + nil, // 481: tutorial.ResCharge.SpecialShopEntry + nil, // 482: tutorial.ResCharge.ChessShopEntry + nil, // 483: tutorial.ResCharge.GiftEntry + nil, // 484: tutorial.ReqBuyChessShop2.MChessDataEntry + nil, // 485: tutorial.ResEndless.EndlessListEntry + nil, // 486: tutorial.ResChampshipRank.RankListEntry + nil, // 487: tutorial.ResChampshipPreRank.RankListEntry + nil, // 488: tutorial.ResNotifyCard.CardEntry + nil, // 489: tutorial.ResNotifyCard.MasterEntry + nil, // 490: tutorial.ResNotifyCard.HandbookEntry + nil, // 491: tutorial.ResMining.MapEntry + nil, // 492: tutorial.ReqMiningTake.MapEntry + nil, // 493: tutorial.ResActRed.RedEntry + nil, // 494: tutorial.ResItem.ItemEntry + nil, // 495: tutorial.ItemNotify.ItemEntry + nil, // 496: tutorial.ResGuessColor.OMapEntry + nil, // 497: tutorial.ReqGuessColorTake.OMapEntry + nil, // 498: tutorial.GuessColorInfo.MapEntry + nil, // 499: tutorial.ResPlayroom.PlayroomEntry + nil, // 500: tutorial.ResPlayroom.MoodEntry + nil, // 501: tutorial.ResPlayroom.PhysiologyEntry + nil, // 502: tutorial.ResPlayroom.DressEntry + nil, // 503: tutorial.ResPlayroom.DressSetEntry + nil, // 504: tutorial.ReqPlayroomDressSet.DressSetEntry + nil, // 505: tutorial.NotifyPlayroomMood.MoodEntry + nil, // 506: tutorial.NotifyPlayroomMood.PhysiologyEntry + nil, // 507: tutorial.ResPlayroomInfo.PlayroomEntry + nil, // 508: tutorial.ResPlayroomInfo.ItemsEntry + nil, // 509: tutorial.ResPlayroomInfo.FlipEntry + nil, // 510: tutorial.ResPlayroomInfo.EmojiEntry + nil, // 511: tutorial.ResPlayroomInfo.DressSetEntry + nil, // 512: tutorial.ResPlayroomGame.ItemsEntry + nil, // 513: tutorial.ReqPlayroomSetRoom.PlayroomEntry } var file_proto_Gameapi_proto_depIdxs = []int32{ - 451, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry + 452, // 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 - 452, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry - 453, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry + 453, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry + 454, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry 65, // 5: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag 1, // 6: tutorial.ChessHandle.type:type_name -> tutorial.HANDLE_TYPE - 454, // 7: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry + 455, // 7: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry 50, // 8: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle 2, // 9: tutorial.ResUpdatePlayerChessData.code:type_name -> tutorial.RES_CODE - 455, // 10: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry + 456, // 10: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry 2, // 11: tutorial.ResSeparateChess.code:type_name -> tutorial.RES_CODE - 456, // 12: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry + 457, // 12: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry 2, // 13: tutorial.ResUpgradeChess.code:type_name -> tutorial.RES_CODE - 457, // 14: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry + 458, // 14: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry 2, // 15: tutorial.ResGetChessFromBuff.code:type_name -> tutorial.RES_CODE 8, // 16: tutorial.ReqChessEx.Type:type_name -> tutorial.CHESS_EX_TYPE - 458, // 17: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry + 459, // 17: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry 2, // 18: tutorial.ResChessEx.code:type_name -> tutorial.RES_CODE - 459, // 19: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry + 460, // 19: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry 2, // 20: tutorial.ResSourceChest.code:type_name -> tutorial.RES_CODE - 460, // 21: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry + 461, // 21: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry 2, // 22: tutorial.ResPlayroomOutline.code:type_name -> tutorial.RES_CODE 66, // 23: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid - 461, // 24: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry + 462, // 24: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry 2, // 25: tutorial.ResPutChessInBag.code:type_name -> tutorial.RES_CODE - 462, // 26: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry + 463, // 26: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry 2, // 27: tutorial.ResTakeChessOutBag.code:type_name -> tutorial.RES_CODE 2, // 28: tutorial.ResBuyChessBagGrid.code:type_name -> tutorial.RES_CODE - 463, // 29: tutorial.ResPlayerBriefProfileData.SetEmoji:type_name -> tutorial.ResPlayerBriefProfileData.SetEmojiEntry + 464, // 29: tutorial.ResPlayerBriefProfileData.SetEmoji:type_name -> tutorial.ResPlayerBriefProfileData.SetEmojiEntry 2, // 30: tutorial.ResSetEnergyMul.ResultCode:type_name -> tutorial.RES_CODE 9, // 31: tutorial.ReqLang.Lang:type_name -> tutorial.LANG_TYPE 2, // 32: tutorial.ResLang.ResultCode:type_name -> tutorial.RES_CODE @@ -27521,7 +27586,7 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 176, // 34: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo 172, // 35: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo 179, // 36: tutorial.UserInfo.EmojiList:type_name -> tutorial.EmojiInfo - 464, // 37: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry + 465, // 37: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry 2, // 38: tutorial.ResSetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 39: tutorial.ResSetPetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 40: tutorial.ResBuyEnergy.Code:type_name -> tutorial.RES_CODE @@ -27529,7 +27594,7 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 42: tutorial.ResGetHandbookReward.Code:type_name -> tutorial.RES_CODE 94, // 43: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo 2, // 44: tutorial.ResHandbookAllReward.Code:type_name -> tutorial.RES_CODE - 465, // 45: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry + 466, // 45: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry 2, // 46: tutorial.ResRewardOrder.Code:type_name -> tutorial.RES_CODE 2, // 47: tutorial.ResDelOrder.Code:type_name -> tutorial.RES_CODE 159, // 48: tutorial.Order.Items:type_name -> tutorial.ItemInfo @@ -27538,8 +27603,8 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 51: tutorial.ResDecorateAll.Code:type_name -> tutorial.RES_CODE 2, // 52: tutorial.ResDecorateReward.Code:type_name -> tutorial.RES_CODE 114, // 53: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card - 466, // 54: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry - 467, // 55: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry + 467, // 54: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry + 468, // 55: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry 2, // 56: tutorial.ResCardSeasonFirstReward.Code:type_name -> tutorial.RES_CODE 2, // 57: tutorial.ResCardHandbookReward.Code:type_name -> tutorial.RES_CODE 2, // 58: tutorial.ResMasterCard.Code:type_name -> tutorial.RES_CODE @@ -27558,12 +27623,12 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 71: tutorial.ResGetFriendCard.Code:type_name -> tutorial.RES_CODE 2, // 72: tutorial.ResGuideReward.Code:type_name -> tutorial.RES_CODE 2, // 73: tutorial.ResGuidePlayroom.Code:type_name -> tutorial.RES_CODE - 468, // 74: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry - 469, // 75: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry + 469, // 74: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry + 470, // 75: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry 159, // 76: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo 160, // 77: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack - 470, // 78: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry - 471, // 79: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry + 471, // 78: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry + 472, // 79: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry 159, // 80: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo 164, // 81: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress 159, // 82: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo @@ -27584,24 +27649,24 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 97: tutorial.ResGetMonthLoginReward.Code:type_name -> tutorial.RES_CODE 189, // 98: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo 2, // 99: tutorial.ResActivityReward.Code:type_name -> tutorial.RES_CODE - 472, // 100: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry - 473, // 101: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry + 473, // 100: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry + 474, // 101: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry 2, // 102: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE 2, // 103: tutorial.ResSelectLimitEvent.Code:type_name -> tutorial.RES_CODE - 474, // 104: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry - 475, // 105: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry + 475, // 104: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry + 476, // 105: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry 2, // 106: tutorial.ResLimitEventLuckyCat.Code:type_name -> tutorial.RES_CODE 2, // 107: tutorial.ResLimitSenceReward.Code:type_name -> tutorial.RES_CODE 159, // 108: tutorial.ResChessRainReward.Items:type_name -> tutorial.ItemInfo 2, // 109: tutorial.ResFastProduceReward.Code:type_name -> tutorial.RES_CODE 2, // 110: tutorial.ResCatTrickReward.Code:type_name -> tutorial.RES_CODE 214, // 111: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple - 476, // 112: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry + 477, // 112: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry 214, // 113: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple 216, // 114: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog 218, // 115: tutorial.NotifyFriendLog.Bubble:type_name -> tutorial.FriendBubbleInfo 220, // 116: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard - 477, // 117: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry + 478, // 117: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry 2, // 118: tutorial.ResFriendByCode.Code:type_name -> tutorial.RES_CODE 214, // 119: tutorial.ResFriendByCode.Player:type_name -> tutorial.ResPlayerSimple 214, // 120: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple @@ -27623,26 +27688,26 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 214, // 136: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple 2, // 137: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE 2, // 138: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE - 478, // 139: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry - 479, // 140: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry + 479, // 139: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry + 480, // 140: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry 159, // 141: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo 262, // 142: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo 2, // 143: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE 2, // 144: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE 2, // 145: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE - 480, // 146: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry - 481, // 147: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry - 482, // 148: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry + 481, // 146: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry + 482, // 147: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry + 483, // 148: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry 271, // 149: tutorial.ResCharge.Wish:type_name -> tutorial.WishList 2, // 150: tutorial.ResAddWish.Code:type_name -> tutorial.RES_CODE 2, // 151: tutorial.ResGetWish.Code:type_name -> tutorial.RES_CODE 2, // 152: tutorial.ResSendWishBeg.Code:type_name -> tutorial.RES_CODE 2, // 153: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE 2, // 154: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE - 483, // 155: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry + 484, // 155: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry 2, // 156: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE 2, // 157: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE - 484, // 158: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry + 485, // 158: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry 159, // 159: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo 2, // 160: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE 2, // 161: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE @@ -27650,26 +27715,26 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 163: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE 2, // 164: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE 2, // 165: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE - 485, // 166: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry - 486, // 167: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry - 487, // 168: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry - 488, // 169: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry - 489, // 170: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry + 486, // 166: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry + 487, // 167: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry + 488, // 168: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry + 489, // 169: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry + 490, // 170: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry 2, // 171: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE - 490, // 172: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry - 491, // 173: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry + 491, // 172: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry + 492, // 173: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry 2, // 174: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE 2, // 175: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE - 492, // 176: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry + 493, // 176: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry 189, // 177: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo - 493, // 178: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry - 494, // 179: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry + 494, // 178: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry + 495, // 179: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry 341, // 180: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo - 495, // 181: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry + 496, // 181: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry 339, // 182: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent 341, // 183: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.GuessColorInfo - 496, // 184: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry - 497, // 185: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry + 497, // 184: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry + 498, // 185: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry 2, // 186: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE 2, // 187: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE 347, // 188: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent @@ -27678,13 +27743,13 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 159, // 191: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo 378, // 192: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent 377, // 193: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom - 498, // 194: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry - 499, // 195: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry + 499, // 194: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry + 500, // 195: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry 159, // 196: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo 373, // 197: tutorial.ResPlayroom.Chip:type_name -> tutorial.ChipInfo - 500, // 198: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry - 501, // 199: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry - 502, // 200: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry + 501, // 198: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry + 502, // 199: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry + 503, // 200: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry 163, // 201: tutorial.ResPlayroom.DailyTask:type_name -> tutorial.DailyTask 375, // 202: tutorial.ResPlayroom.AdItem:type_name -> tutorial.AdItem 163, // 203: tutorial.NotifyPlayroomTask.DailyTask:type_name -> tutorial.DailyTask @@ -27692,28 +27757,28 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 205: tutorial.ResPlayroomTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 206: tutorial.ResPlayroomUnlock.Code:type_name -> tutorial.RES_CODE 2, // 207: tutorial.ResPlayroomUpvote.Code:type_name -> tutorial.RES_CODE - 503, // 208: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry + 504, // 208: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry 2, // 209: tutorial.ResPlayroomDressSet.Code:type_name -> tutorial.RES_CODE 2, // 210: tutorial.ResPlayroomPetAirSet.Code:type_name -> tutorial.RES_CODE 2, // 211: tutorial.ResPlayroomWrokOutline.Code:type_name -> tutorial.RES_CODE 159, // 212: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo 373, // 213: tutorial.NotifyPlayroomLose.Chip:type_name -> tutorial.ChipInfo - 504, // 214: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry - 505, // 215: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry + 505, // 214: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry + 506, // 215: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry 375, // 216: tutorial.NotifyPlayroomMood.AdItem:type_name -> tutorial.AdItem - 506, // 217: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry - 507, // 218: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry - 508, // 219: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry - 509, // 220: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry - 510, // 221: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry + 507, // 217: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry + 508, // 218: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry + 509, // 219: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry + 510, // 220: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry + 511, // 221: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry 2, // 222: tutorial.ResPlayroomFlip.Code:type_name -> tutorial.RES_CODE 2, // 223: tutorial.ResPlayroomGuide.Code:type_name -> tutorial.RES_CODE 2, // 224: tutorial.ResPlayroomFlipReward.Code:type_name -> tutorial.RES_CODE 2, // 225: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE - 511, // 226: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry + 512, // 226: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry 159, // 227: tutorial.ResPlayroomGameShowReward.Items:type_name -> tutorial.ItemInfo 2, // 228: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE - 512, // 229: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry + 513, // 229: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry 2, // 230: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE 2, // 231: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE 2, // 232: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE @@ -27771,7 +27836,7 @@ func file_proto_Gameapi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_Gameapi_proto_rawDesc), len(file_proto_Gameapi_proto_rawDesc)), NumEnums: 11, - NumMessages: 502, + NumMessages: 503, NumExtensions: 0, NumServices: 0, },