This commit is contained in:
liwei1dao 2024-01-19 20:48:27 +08:00
commit 448cbad2f7
11 changed files with 128 additions and 66 deletions

View File

@ -566,7 +566,7 @@ func (this *Room) GameOver(winner *pb.PlayerData) (errdata *pb.ErrorData) {
}
}
if lostPlayer.Userinfo.Uid != "999" {
if conf, err := this.module.configure.GetGameConsumeHero(lostPlayer.Cardid); err != nil {
if conf, err := this.module.configure.GetGameConsumeHero(lostPlayer.Cardid); err == nil {
update := map[string]interface{}{}
if list, err := this.module.model.getEntertainmList(lostPlayer.Userinfo.Uid); err == nil {
if list.Liansheng != 0 {
@ -583,7 +583,7 @@ func (this *Room) GameOver(winner *pb.PlayerData) (errdata *pb.ErrorData) {
break
}
}
if c, err := this.module.configure.GetGameConsumeHero(lostPlayer.Cardid); err != nil {
if c, err := this.module.configure.GetGameConsumeHero(lostPlayer.Cardid); err == nil {
if len(c.Lost) == 0 { // 容错处理
bDestruction = false
} else {

View File

@ -693,13 +693,6 @@ func (this *ModelHero) setTalentProperty(hero *pb.DBHero, conf *cfg.GameHeroTale
hero.TalentProperty[conf.Attr.A] += conf.Attr.N
_heroMap := make(map[string]interface{}, 0)
if conf.Skill != 0 {
hero.NormalSkill = append(hero.NormalSkill, &pb.SkillData{
SkillID: conf.Skill,
SkillLv: 1,
})
_heroMap["normalSkill"] = hero.NormalSkill
}
_heroMap["talentProperty"] = hero.TalentProperty
if err := this.ChangeList(hero.Uid, hero.Id, _heroMap); err != nil {

View File

@ -3,6 +3,7 @@ package plunder
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/redis"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
@ -41,6 +42,7 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PlunderCha
newShip map[string]*pb.ShipData
heros []*pb.DBHero
hids []string
lock *redis.RedisMutex
)
update = make(map[string]interface{})
changExp = make(map[string]int32, 0)
@ -94,6 +96,13 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PlunderCha
}
return
}
if list.Line[req.Pos].Oid != "" { // 运输中
errdata = &pb.ErrorData{
Code: pb.ErrorCode_PlundeShipRunning,
Title: pb.ErrorCode_PlundeShipRunning.ToString(),
}
return
}
// 校验通过
errdata, isWin = this.module.battle.CheckBattleReport(session, req.Report)
if errdata != nil {
@ -107,6 +116,15 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PlunderCha
}
return
}
if lock, err = this.module.modelLand.landMutexLock(list.Landid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
defer lock.Unlock()
if land, err = this.module.modelLand.getPlunderLandData(list.Landid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,

View File

@ -46,6 +46,13 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.PlunderGetListRe
return
}
}
if len(list.Source) == 0 {
list.Source, err = this.module.modelPlunder.refreshGoodsInfo()
list.Setout = []int32{}
this.module.modelPlunder.changePlunderData(session.GetUserId(), map[string]interface{}{
"source": list.Source,
})
}
session.SendMsg(string(this.module.GetType()), "getlist", &pb.PlunderGetListResp{
List: list,
Land: land,

View File

@ -98,16 +98,8 @@ func (this *apiComp) PvpChallenge(session comm.IUserSession, req *pb.PlunderPvpC
}
return
}
// 状态校验 状态 0 运输 1 正在被攻击 2 战败cd中 3 掠夺成功
if land.Ship[req.Oid].Status == 0 { // return
errdata = &pb.ErrorData{
Code: pb.ErrorCode_PlunderNotFoundShip,
Title: pb.ErrorCode_PlunderNotFoundShip.ToString(),
Message: fmt.Sprintf("Status err,curStutus :%d", land.Ship[req.Oid].Status),
}
return
}
if land.Ship[req.Oid].Status == 2 && land.Ship[req.Oid].Cd >= configure.Now().Unix() { // cd
if land.Ship[req.Oid].Status == 2 {
if land.Ship[req.Oid].Cd >= configure.Now().Unix() { // cd
errdata = &pb.ErrorData{
Code: pb.ErrorCode_PlundeShipCDIng,
Title: pb.ErrorCode_PlundeShipCDIng.ToString(),
@ -115,6 +107,18 @@ func (this *apiComp) PvpChallenge(session comm.IUserSession, req *pb.PlunderPvpC
}
return
}
land.Ship[req.Oid].Status = 0
}
// 状态校验 状态 0 运输 1 正在被攻击 2 战败cd中 3 掠夺成功
if land.Ship[req.Oid].Status != 0 { // return
errdata = &pb.ErrorData{
Code: pb.ErrorCode_PlunderNotFoundShip,
Title: pb.ErrorCode_PlunderNotFoundShip.ToString(),
Message: fmt.Sprintf("Status err,curStutus :%d", land.Ship[req.Oid].Status),
}
return
}
if heros, err = this.module.modelPlunder.queryUserHeros(session.GetUserId(), req.Battle.Format); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,

View File

@ -2,6 +2,7 @@ package plunder
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/redis"
"go_dreamfactory/pb"
)
@ -23,6 +24,7 @@ func (this *apiComp) Reach(session comm.IUserSession, req *pb.PlunderReachReq) (
list *pb.DBPlunder
land *pb.DBPlunderLand // 岛屿数据
//changeShip map[string]*pb.ShipData // 变化的信息
lock *redis.RedisMutex
)
//changeShip = make(map[string]*pb.ShipData, 0)
if errdata = this.ReachCheck(session, req); errdata != nil {
@ -36,6 +38,15 @@ func (this *apiComp) Reach(session comm.IUserSession, req *pb.PlunderReachReq) (
}
return
}
if lock, err = this.module.modelLand.landMutexLock(list.Landid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
defer lock.Unlock()
if land, err = this.module.modelLand.getPlunderLandData(list.Landid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,

View File

@ -70,6 +70,7 @@ func (this *modelLand) createPlunderLandData(uid string) (land *pb.DBPlunderLand
limtSocre = 0
}
uids = append(uids, uid) // 优先加入自己
uInfos = append(uInfos, comm.GetUserBaseInfo(user))
cur, err := this.DB.Find(core.SqlTable(comm.TableUser), bson.M{"gold": bson.M{"$gte": limtSocre}, "name": bson.M{"$ne": ""}}, options.Find().SetSkip(int64(0)).SetLimit(int64(30)))
for cur.Next(context.TODO()) {
tmp := &pb.DBUser{}

View File

@ -123,18 +123,31 @@ func (this *modelPlunder) queryUserHeros(uid string, heroids []string) (results
}
return
}
func (this *modelPlunder) queryPlunderInfos(uids []string, landid string) (data []*pb.DBPlunder, err error) {
results := make([]*pb.DBPlunder, 0)
var (
mp map[string]struct{} // 没找到的数据
results []*pb.DBPlunder
onfound []string
newdata map[string]interface{} = make(map[string]interface{})
unfound []string
)
results = make([]*pb.DBPlunder, 0)
mp = make(map[string]struct{})
if onfound, err = this.Gets(uids, &results); err != nil {
this.module.Errorln(err)
return
}
for _, v := range onfound {
mp[v] = struct{}{}
}
for _, v := range uids {
if _, ok := mp[v]; !ok {
unfound = append(unfound, v)
}
}
for _, v := range unfound {
temp := &pb.DBPlunder{
Id: primitive.NewObjectID().Hex(),
Uid: v,

View File

@ -23,7 +23,7 @@ const (
type ChatChannel int32
const (
ChatChannel_World ChatChannel = 0 //世界频道
ChatChannel_World ChatChannel = 0 //服聊天
ChatChannel_Union ChatChannel = 1 //工会频道
ChatChannel_Private ChatChannel = 2 //私有频道
ChatChannel_Area ChatChannel = 3 //区聊天

View File

@ -478,6 +478,7 @@ const (
ErrorCode_PlundeShipReach ErrorCode = 5404 //船已经达到不能被掠夺
ErrorCode_PlundeNormalShip ErrorCode = 5405 //普通船不能被掠夺
ErrorCode_PlundeShipCDIng ErrorCode = 5406 //掠夺cd中
ErrorCode_PlundeShipRunning ErrorCode = 5407 //运输中
)
// Enum value maps for ErrorCode.
@ -891,6 +892,7 @@ var (
5404: "PlundeShipReach",
5405: "PlundeNormalShip",
5406: "PlundeShipCDIng",
5407: "PlundeShipRunning",
}
ErrorCode_value = map[string]int32{
"Success": 0,
@ -1301,6 +1303,7 @@ var (
"PlundeShipReach": 5404,
"PlundeNormalShip": 5405,
"PlundeShipCDIng": 5406,
"PlundeShipRunning": 5407,
}
)
@ -1335,7 +1338,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, 0x89, 0x4c, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x6f, 0x2a, 0xa1, 0x4c, 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,
@ -1943,8 +1946,10 @@ var file_errorcode_proto_rawDesc = []byte{
0x75, 0x6e, 0x64, 0x65, 0x53, 0x68, 0x69, 0x70, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x9c, 0x2a,
0x12, 0x15, 0x0a, 0x10, 0x50, 0x6c, 0x75, 0x6e, 0x64, 0x65, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c,
0x53, 0x68, 0x69, 0x70, 0x10, 0x9d, 0x2a, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x6c, 0x75, 0x6e, 0x64,
0x65, 0x53, 0x68, 0x69, 0x70, 0x43, 0x44, 0x49, 0x6e, 0x67, 0x10, 0x9e, 0x2a, 0x42, 0x06, 0x5a,
0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x65, 0x53, 0x68, 0x69, 0x70, 0x43, 0x44, 0x49, 0x6e, 0x67, 0x10, 0x9e, 0x2a, 0x12, 0x16, 0x0a,
0x11, 0x50, 0x6c, 0x75, 0x6e, 0x64, 0x65, 0x53, 0x68, 0x69, 0x70, 0x52, 0x75, 0x6e, 0x6e, 0x69,
0x6e, 0x67, 0x10, 0x9f, 0x2a, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -36,6 +36,7 @@ type DBPlunder struct {
Refresh int32 `protobuf:"varint,8,opt,name=refresh,proto3" json:"refresh"` // 刷新次数
Ctime int64 `protobuf:"varint,9,opt,name=ctime,proto3" json:"ctime"` // 刷新时间 客户端不用
Score int32 `protobuf:"varint,10,opt,name=score,proto3" json:"score"` // 当前赛季积分
Etime int64 `protobuf:"varint,11,opt,name=etime,proto3" json:"etime"` // 结束时间
}
func (x *DBPlunder) Reset() {
@ -140,6 +141,13 @@ func (x *DBPlunder) GetScore() int32 {
return 0
}
func (x *DBPlunder) GetEtime() int64 {
if x != nil {
return x.Etime
}
return 0
}
type TransportLine struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -435,7 +443,7 @@ var file_plunder_plunder_db_proto_rawDesc = []byte{
0x72, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x62, 0x61, 0x74, 0x74,
0x6c, 0x65, 0x2f, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0xf5, 0x01, 0x0a, 0x09, 0x44, 0x42, 0x50, 0x6c, 0x75, 0x6e, 0x64, 0x65, 0x72,
0x74, 0x6f, 0x22, 0x8b, 0x02, 0x0a, 0x09, 0x44, 0x42, 0x50, 0x6c, 0x75, 0x6e, 0x64, 0x65, 0x72,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75,
0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
@ -450,47 +458,49 @@ var file_plunder_plunder_db_proto_rawDesc = []byte{
0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x14,
0x0a, 0x05, 0x63, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63,
0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0a, 0x20,
0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3f, 0x0a, 0x0d, 0x54, 0x72,
0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x1c, 0x0a,
0x09, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x52, 0x09, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x5d, 0x0a, 0x0b, 0x50,
0x6c, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74,
0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x74, 0x79, 0x70, 0x65,
0x12, 0x14, 0x0a, 0x05, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
0x05, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x03, 0x20,
0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0xac, 0x01, 0x0a, 0x08, 0x53,
0x68, 0x69, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x04, 0x6c, 0x69, 0x6e,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x50, 0x6c, 0x75, 0x6e, 0x64, 0x65,
0x72, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73,
0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61,
0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
0x02, 0x63, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20,
0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x64,
0x65, 0x66, 0x65, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x44, 0x42,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d,
0x74, 0x52, 0x06, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x22, 0xa1, 0x02, 0x0a, 0x0d, 0x44, 0x42,
0x50, 0x6c, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x4c, 0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2f, 0x0a, 0x05, 0x75,
0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x50,
0x6c, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x4c, 0x61, 0x6e, 0x64, 0x2e, 0x55, 0x69, 0x6e, 0x66, 0x6f,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x75, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x04,
0x73, 0x68, 0x69, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x42, 0x50,
0x6c, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x4c, 0x61, 0x6e, 0x64, 0x2e, 0x53, 0x68, 0x69, 0x70, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x73, 0x68, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x74,
0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x74, 0x69, 0x6d, 0x65,
0x1a, 0x47, 0x0a, 0x0a, 0x55, 0x69, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x0d, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x09, 0x53, 0x68, 0x69,
0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x53, 0x68, 0x69, 0x70, 0x44, 0x61,
0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a,
0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x74,
0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x74, 0x69, 0x6d, 0x65,
0x22, 0x3f, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e,
0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x6f, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x74, 0x69, 0x6d, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x74, 0x69, 0x6d,
0x65, 0x22, 0x5d, 0x0a, 0x0b, 0x50, 0x6c, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65,
0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x05, 0x69, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03,
0x63, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x10,
0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64,
0x22, 0xac, 0x01, 0x0a, 0x08, 0x53, 0x68, 0x69, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a,
0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12,
0x20, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e,
0x50, 0x6c, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x6e,
0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x64, 0x18,
0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x63, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x69,
0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e,
0x74, 0x12, 0x2c, 0x0a, 0x06, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x14, 0x2e, 0x44, 0x42, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74,
0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x74, 0x52, 0x06, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x22,
0xa1, 0x02, 0x0a, 0x0d, 0x44, 0x42, 0x50, 0x6c, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x4c, 0x61, 0x6e,
0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
0x64, 0x12, 0x2f, 0x0a, 0x05, 0x75, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x19, 0x2e, 0x44, 0x42, 0x50, 0x6c, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x4c, 0x61, 0x6e, 0x64,
0x2e, 0x55, 0x69, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x75, 0x69, 0x6e,
0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x04, 0x73, 0x68, 0x69, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x18, 0x2e, 0x44, 0x42, 0x50, 0x6c, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x4c, 0x61, 0x6e, 0x64,
0x2e, 0x53, 0x68, 0x69, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x73, 0x68, 0x69, 0x70,
0x12, 0x14, 0x0a, 0x05, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
0x05, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0x47, 0x0a, 0x0a, 0x55, 0x69, 0x6e, 0x66, 0x6f, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
0x42, 0x0a, 0x09, 0x53, 0x68, 0x69, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f,
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e,
0x53, 0x68, 0x69, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (