diff --git a/modules/entertainment/api_getlist.go b/modules/entertainment/api_getlist.go index 1c504e0a7..febbae441 100644 --- a/modules/entertainment/api_getlist.go +++ b/modules/entertainment/api_getlist.go @@ -34,6 +34,8 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.EntertainGetList for _, v := range this.module.configure.GetGameConsumeIntegral() { list.Playtype = append(list.Playtype, v.Key) // 配置读取一个玩法 } + list.Touxiang = 0 + update["touxiang"] = list.Touxiang // 每天投降次数清0 update["rtime"] = list.Rtime update["playtype"] = list.Playtype _, endSeasonTime := utils.GetMonthStartEnd() diff --git a/modules/entertainment/api_surrender.go b/modules/entertainment/api_surrender.go new file mode 100644 index 000000000..36ae850d0 --- /dev/null +++ b/modules/entertainment/api_surrender.go @@ -0,0 +1,27 @@ +package entertainment + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" +) + +//参数校验 +func (this *apiComp) SurrenderCheck(session comm.IUserSession, req *pb.EntertainSurrenderReq) (errdata *pb.ErrorData) { + if req.Roomid == "" { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ReqParameterError, + Title: pb.ErrorCode_ReqParameterError.ToString(), + } + } + return +} + +func (this *apiComp) Surrender(session comm.IUserSession, req *pb.EntertainSurrenderReq) (errdata *pb.ErrorData) { + + if errdata = this.module.gameMgr.RoomDistribute(req.Roomid, session, "surrender", req); errdata == nil { + // 操作消息返回 + session.SendMsg(string(this.module.GetType()), "surrender", &pb.EntertainSurrenderResp{}) + } + + return +} diff --git a/modules/entertainment/room.go b/modules/entertainment/room.go index 6f37b7ff1..fd9dd6faa 100644 --- a/modules/entertainment/room.go +++ b/modules/entertainment/room.go @@ -181,7 +181,7 @@ func (this *Room) AiOperator() { if this.player1.Score == this.player2.Score { this.MaxRound += 1 // 增加一回合 } else { - this.GameOver() + this.GameOver(nil) } return } @@ -339,7 +339,7 @@ func (this *Room) ReceiveMessage(session comm.IUserSession, stype string, msg pr if this.player1.Score == this.player2.Score { this.MaxRound += 1 // 增加一回合 } else { - this.GameOver() + this.GameOver(nil) } return } @@ -476,6 +476,7 @@ func (this *Room) ReceiveMessage(session comm.IUserSession, stype string, msg pr } //this.operatetimer = timewheel.Add(time.Second*time.Duration(this.MaxTime), this.operateTimeOut) case "offline": + req := msg.(*pb.RPCGeneralReqA2) fmt.Printf("useroffline: %v\n", req) @@ -496,35 +497,71 @@ func (this *Room) ReceiveMessage(session comm.IUserSession, stype string, msg pr this.ModifyUserRoomInfoData() } } + + case "surrender": + if this.Status != 2 { // 不是游戏中 直接返回 + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_EntertainNoGamePlayering, + Title: pb.ErrorCode_EntertainNoGamePlayering.ToString(), + } + return + } + if list, err := this.module.model.getEntertainmList(session.GetUserId()); err == nil { + if list.Touxiang >= 3 { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_EntertainMaxTouxiangCount, + Title: pb.ErrorCode_EntertainMaxTouxiangCount.ToString(), + } + } + list.Touxiang += 1 + this.module.model.modifyEntertainmList(session.GetUserId(), map[string]interface{}{ + "touxiang": list.Touxiang, + }) + var winner *pb.PlayerData + if this.player1.Userinfo.Uid == session.GetUserId() { + winner = this.player2 + } else { + winner = this.player1 + } + this.GameOver(winner) + } else { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return + } } return } // 游戏结束 -func (this *Room) GameOver() (errdata *pb.ErrorData) { +func (this *Room) GameOver(winner *pb.PlayerData) (errdata *pb.ErrorData) { var ( atno []*pb.UserAtno winindex int32 bReward bool res []*cfg.Gameatn - winner *pb.PlayerData lostPlayer *pb.PlayerData // 输的玩家 box *pb.BoxData // 是否可以获得宝箱奖励 ) - winner = this.player1 bReward = true - if this.player1.Score < this.player2.Score { - winner = this.player2 - winindex = 1 - if this.RoomType == 2 { // 赢家是AI 的话不发奖 - bReward = false + if winner == nil { + if this.player1.Score < this.player2.Score { + winner = this.player2 + winindex = 1 + if this.RoomType == 2 { // 赢家是AI 的话不发奖 + bReward = false + } + } else { + winner = this.player1 } } if bReward { // 发奖 if user, err := this.module.ModuleUser.GetUser(winner.Userinfo.Uid); err == nil { if conf, err := this.module.configure.GetGameConsumeintegral(user.Consumeexp); err == nil { - //res = append(res, conf.Onereward...) 这奖励手动领取 res = append(res, conf.Rewards...) for _, v := range res { if v.A == "attr" && v.T == "consumeexp" { @@ -538,7 +575,7 @@ func (this *Room) GameOver() (errdata *pb.ErrorData) { if errdata, atno = this.module.DispenseAtno(this.szSession[winindex], res, true); errdata != nil { return } - go this.module.WriteUserLog(winner.Userinfo.Uid, "GameOver", comm.GMResAddType, "xxlGameReward", atno) + go this.module.WriteUserLog(winner.Userinfo.Uid, "gameover", comm.GMResAddType, "xxlGameReward", atno) this.szSession[winindex].Push() } @@ -759,7 +796,7 @@ func (this *Room) AutoOperator(uid string) { if this.player1.Score == this.player2.Score { this.MaxRound += 1 // 增加一回合 } else { - this.GameOver() + this.GameOver(nil) } return } diff --git a/pb/entertain_msg.pb.go b/pb/entertain_msg.pb.go index 5e98042f6..debcc0790 100644 --- a/pb/entertain_msg.pb.go +++ b/pb/entertain_msg.pb.go @@ -2156,6 +2156,92 @@ func (x *EntertainStarTimerPush) GetPower() string { return "" } +// 申请投降 surrender +type EntertainSurrenderReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Roomid string `protobuf:"bytes,1,opt,name=roomid,proto3" json:"roomid"` //房间号 +} + +func (x *EntertainSurrenderReq) Reset() { + *x = EntertainSurrenderReq{} + if protoimpl.UnsafeEnabled { + mi := &file_entertain_entertain_msg_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntertainSurrenderReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntertainSurrenderReq) ProtoMessage() {} + +func (x *EntertainSurrenderReq) ProtoReflect() protoreflect.Message { + mi := &file_entertain_entertain_msg_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntertainSurrenderReq.ProtoReflect.Descriptor instead. +func (*EntertainSurrenderReq) Descriptor() ([]byte, []int) { + return file_entertain_entertain_msg_proto_rawDescGZIP(), []int{38} +} + +func (x *EntertainSurrenderReq) GetRoomid() string { + if x != nil { + return x.Roomid + } + return "" +} + +type EntertainSurrenderResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *EntertainSurrenderResp) Reset() { + *x = EntertainSurrenderResp{} + if protoimpl.UnsafeEnabled { + mi := &file_entertain_entertain_msg_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntertainSurrenderResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntertainSurrenderResp) ProtoMessage() {} + +func (x *EntertainSurrenderResp) ProtoReflect() protoreflect.Message { + mi := &file_entertain_entertain_msg_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntertainSurrenderResp.ProtoReflect.Descriptor instead. +func (*EntertainSurrenderResp) Descriptor() ([]byte, []int) { + return file_entertain_entertain_msg_proto_rawDescGZIP(), []int{39} +} + var File_entertain_entertain_msg_proto protoreflect.FileDescriptor var file_entertain_entertain_msg_proto_rawDesc = []byte{ @@ -2369,8 +2455,13 @@ var file_entertain_entertain_msg_proto_rawDesc = []byte{ 0x74, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x50, 0x75, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x77, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x06, - 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x22, 0x2f, + 0x0a, 0x15, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x53, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x69, 0x64, 0x22, + 0x18, 0x0a, 0x16, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x53, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, + 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2385,7 +2476,7 @@ func file_entertain_entertain_msg_proto_rawDescGZIP() []byte { return file_entertain_entertain_msg_proto_rawDescData } -var file_entertain_entertain_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 40) +var file_entertain_entertain_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 42) var file_entertain_entertain_msg_proto_goTypes = []interface{}{ (*EntertainMatchReq)(nil), // 0: EntertainMatchReq (*EntertainMatchResp)(nil), // 1: EntertainMatchResp @@ -2425,42 +2516,44 @@ var file_entertain_entertain_msg_proto_goTypes = []interface{}{ (*EntertainOperatorOverReq)(nil), // 35: EntertainOperatorOverReq (*EntertainOperatorOverResp)(nil), // 36: EntertainOperatorOverResp (*EntertainStarTimerPush)(nil), // 37: EntertainStarTimerPush - nil, // 38: EntertainChangePush.CardEntry - nil, // 39: EntertainChangePush.SkillEntry - (*PlayerData)(nil), // 40: PlayerData - (*MapData)(nil), // 41: MapData - (*UserAtno)(nil), // 42: UserAtno - (*BoxData)(nil), // 43: BoxData - (*DBXXLData)(nil), // 44: DBXXLData + (*EntertainSurrenderReq)(nil), // 38: EntertainSurrenderReq + (*EntertainSurrenderResp)(nil), // 39: EntertainSurrenderResp + nil, // 40: EntertainChangePush.CardEntry + nil, // 41: EntertainChangePush.SkillEntry + (*PlayerData)(nil), // 42: PlayerData + (*MapData)(nil), // 43: MapData + (*UserAtno)(nil), // 44: UserAtno + (*BoxData)(nil), // 45: BoxData + (*DBXXLData)(nil), // 46: DBXXLData } var file_entertain_entertain_msg_proto_depIdxs = []int32{ - 40, // 0: EntertainStartGamePush.user1:type_name -> PlayerData - 40, // 1: EntertainStartGamePush.user2:type_name -> PlayerData - 41, // 2: EntertainStartGamePush.mpadata:type_name -> MapData - 41, // 3: EntertainOperatorRstPush.mpadata:type_name -> MapData - 40, // 4: EntertainOperatorRstPush.user1:type_name -> PlayerData - 40, // 5: EntertainOperatorRstPush.user2:type_name -> PlayerData - 40, // 6: EntertainGameOverPush.user1:type_name -> PlayerData - 40, // 7: EntertainGameOverPush.user2:type_name -> PlayerData - 41, // 8: EntertainGameOverPush.mpadata:type_name -> MapData - 42, // 9: EntertainGameOverPush.reward:type_name -> UserAtno - 43, // 10: EntertainGameOverPush.box:type_name -> BoxData - 40, // 11: EntertainEnterRoomPush.user1:type_name -> PlayerData - 40, // 12: EntertainEnterRoomPush.user2:type_name -> PlayerData - 41, // 13: EntertainReconnectResp.mpadata:type_name -> MapData - 40, // 14: EntertainReconnectResp.user1:type_name -> PlayerData - 40, // 15: EntertainReconnectResp.user2:type_name -> PlayerData - 41, // 16: EntertainRefreshPlatResp.mpadata:type_name -> MapData - 41, // 17: EntertainRefreshPush.mpadata:type_name -> MapData - 44, // 18: EntertainGetListResp.data:type_name -> DBXXLData - 44, // 19: EntertainRewardResp.data:type_name -> DBXXLData - 42, // 20: EntertainRewardResp.reward:type_name -> UserAtno - 38, // 21: EntertainChangePush.card:type_name -> EntertainChangePush.CardEntry - 39, // 22: EntertainChangePush.skill:type_name -> EntertainChangePush.SkillEntry - 40, // 23: EntertainJoinCreateRoomPush.user1:type_name -> PlayerData - 40, // 24: EntertainJoinCreateRoomPush.user2:type_name -> PlayerData - 43, // 25: EntertainBoxRewardResp.box:type_name -> BoxData - 42, // 26: EntertainBoxRewardResp.reward:type_name -> UserAtno + 42, // 0: EntertainStartGamePush.user1:type_name -> PlayerData + 42, // 1: EntertainStartGamePush.user2:type_name -> PlayerData + 43, // 2: EntertainStartGamePush.mpadata:type_name -> MapData + 43, // 3: EntertainOperatorRstPush.mpadata:type_name -> MapData + 42, // 4: EntertainOperatorRstPush.user1:type_name -> PlayerData + 42, // 5: EntertainOperatorRstPush.user2:type_name -> PlayerData + 42, // 6: EntertainGameOverPush.user1:type_name -> PlayerData + 42, // 7: EntertainGameOverPush.user2:type_name -> PlayerData + 43, // 8: EntertainGameOverPush.mpadata:type_name -> MapData + 44, // 9: EntertainGameOverPush.reward:type_name -> UserAtno + 45, // 10: EntertainGameOverPush.box:type_name -> BoxData + 42, // 11: EntertainEnterRoomPush.user1:type_name -> PlayerData + 42, // 12: EntertainEnterRoomPush.user2:type_name -> PlayerData + 43, // 13: EntertainReconnectResp.mpadata:type_name -> MapData + 42, // 14: EntertainReconnectResp.user1:type_name -> PlayerData + 42, // 15: EntertainReconnectResp.user2:type_name -> PlayerData + 43, // 16: EntertainRefreshPlatResp.mpadata:type_name -> MapData + 43, // 17: EntertainRefreshPush.mpadata:type_name -> MapData + 46, // 18: EntertainGetListResp.data:type_name -> DBXXLData + 46, // 19: EntertainRewardResp.data:type_name -> DBXXLData + 44, // 20: EntertainRewardResp.reward:type_name -> UserAtno + 40, // 21: EntertainChangePush.card:type_name -> EntertainChangePush.CardEntry + 41, // 22: EntertainChangePush.skill:type_name -> EntertainChangePush.SkillEntry + 42, // 23: EntertainJoinCreateRoomPush.user1:type_name -> PlayerData + 42, // 24: EntertainJoinCreateRoomPush.user2:type_name -> PlayerData + 45, // 25: EntertainBoxRewardResp.box:type_name -> BoxData + 44, // 26: EntertainBoxRewardResp.reward:type_name -> UserAtno 27, // [27:27] is the sub-list for method output_type 27, // [27:27] is the sub-list for method input_type 27, // [27:27] is the sub-list for extension type_name @@ -2932,6 +3025,30 @@ func file_entertain_entertain_msg_proto_init() { return nil } } + file_entertain_entertain_msg_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntertainSurrenderReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_entertain_entertain_msg_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntertainSurrenderResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -2939,7 +3056,7 @@ func file_entertain_entertain_msg_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_entertain_entertain_msg_proto_rawDesc, NumEnums: 0, - NumMessages: 40, + NumMessages: 42, NumExtensions: 0, NumServices: 0, }, diff --git a/pb/errorcode.pb.go b/pb/errorcode.pb.go index 20b4e8704..765b3c401 100644 --- a/pb/errorcode.pb.go +++ b/pb/errorcode.pb.go @@ -457,15 +457,17 @@ const ( //捕羊大赛的 ErrorCode_CapturesheepRankCloseed ErrorCode = 5101 //排位比赛不在开启时间内 // xxl - ErrorCode_EntertainCantSwap ErrorCode = 5201 //不能交换 - ErrorCode_EntertainNoPower ErrorCode = 5202 //对方操作 - ErrorCode_EntertainNoHeroSkill ErrorCode = 5203 //没找到该英雄对应的技能 - ErrorCode_EntertainNoEnergy ErrorCode = 5204 //技能能量不足 - ErrorCode_EntertainCreateFailed ErrorCode = 5205 // 创建房间失败 - ErrorCode_EntertainPlayerNoReady ErrorCode = 5206 // 玩家1还没准备不能开始游戏 - ErrorCode_EntertainNotMaster ErrorCode = 5207 // 不是房主 不能解散 - ErrorCode_EntertainDissolveFailed ErrorCode = 5208 // 游戏中不允许解散 - ErrorCode_EntertainBoxEndTime ErrorCode = 5209 // 宝箱开启时间没到 + ErrorCode_EntertainCantSwap ErrorCode = 5201 //不能交换 + ErrorCode_EntertainNoPower ErrorCode = 5202 //对方操作 + ErrorCode_EntertainNoHeroSkill ErrorCode = 5203 //没找到该英雄对应的技能 + ErrorCode_EntertainNoEnergy ErrorCode = 5204 //技能能量不足 + ErrorCode_EntertainCreateFailed ErrorCode = 5205 // 创建房间失败 + ErrorCode_EntertainPlayerNoReady ErrorCode = 5206 // 玩家1还没准备不能开始游戏 + ErrorCode_EntertainNotMaster ErrorCode = 5207 // 不是房主 不能解散 + ErrorCode_EntertainDissolveFailed ErrorCode = 5208 // 游戏中不允许解散 + ErrorCode_EntertainBoxEndTime ErrorCode = 5209 // 宝箱开启时间没到 + ErrorCode_EntertainMaxTouxiangCount ErrorCode = 5210 // 达到每日最大投降次数 + ErrorCode_EntertainNoGamePlayering ErrorCode = 5211 // 非游戏中 不能投降 // integral ErrorCode_TntegralDayMaxChallenge ErrorCode = 5301 // 当日挑战达上限 ) @@ -871,6 +873,8 @@ var ( 5207: "EntertainNotMaster", 5208: "EntertainDissolveFailed", 5209: "EntertainBoxEndTime", + 5210: "EntertainMaxTouxiangCount", + 5211: "EntertainNoGamePlayering", 5301: "TntegralDayMaxChallenge", } ErrorCode_value = map[string]int32{ @@ -1272,6 +1276,8 @@ var ( "EntertainNotMaster": 5207, "EntertainDissolveFailed": 5208, "EntertainBoxEndTime": 5209, + "EntertainMaxTouxiangCount": 5210, + "EntertainNoGamePlayering": 5211, "TntegralDayMaxChallenge": 5301, } ) @@ -1307,7 +1313,7 @@ var File_errorcode_proto protoreflect.FileDescriptor var file_errorcode_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2a, 0xa0, 0x4a, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x6f, 0x2a, 0xdf, 0x4a, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, @@ -1899,10 +1905,14 @@ var file_errorcode_proto_rawDesc = []byte{ 0x0a, 0x17, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xd8, 0x28, 0x12, 0x18, 0x0a, 0x13, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x42, 0x6f, 0x78, 0x45, 0x6e, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x10, 0xd9, 0x28, 0x12, 0x1c, 0x0a, 0x17, 0x54, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x6c, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, - 0x65, 0x10, 0xb5, 0x29, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x6d, 0x65, 0x10, 0xd9, 0x28, 0x12, 0x1e, 0x0a, 0x19, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x74, + 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x54, 0x6f, 0x75, 0x78, 0x69, 0x61, 0x6e, 0x67, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x10, 0xda, 0x28, 0x12, 0x1d, 0x0a, 0x18, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x74, + 0x61, 0x69, 0x6e, 0x4e, 0x6f, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x10, 0xdb, 0x28, 0x12, 0x1c, 0x0a, 0x17, 0x54, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x6c, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, + 0x10, 0xb5, 0x29, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var (