铁匠铺小游戏 概率双倍打造双倍

This commit is contained in:
meixiongfeng 2023-03-27 15:00:03 +08:00
parent faa1ae1768
commit 50d02359c7
14 changed files with 325 additions and 133 deletions

View File

@ -659,6 +659,7 @@
"t": "gold", "t": "gold",
"n": 30000 "n": 30000
} }
] ],
"game_make_TunkNum": 5
} }
] ]

View File

@ -344,7 +344,7 @@
"var": [ "var": [
{ {
"a": "item", "a": "item",
"t": "10012", "t": "100001",
"n": 60 "n": 60
} }
] ]

View File

@ -16956,7 +16956,7 @@
"Order": "", "Order": "",
"Limit": 10, "Limit": 10,
"ExecuteCnt": 1, "ExecuteCnt": 1,
"Type": 2, "Type": 3,
"Argu": [ "Argu": [
390001326, 390001326,
-1, -1,
@ -17712,7 +17712,7 @@
"ExecuteCnt": 1, "ExecuteCnt": 1,
"Type": 2, "Type": 2,
"Argu": [ "Argu": [
443006311, 443006211,
-1, -1,
1 1
], ],
@ -20301,7 +20301,7 @@
"From": 4, "From": 4,
"Where": [], "Where": [],
"Order": "", "Order": "",
"Limit": 1, "Limit": 10,
"ExecuteCnt": 1, "ExecuteCnt": 1,
"Type": 3, "Type": 3,
"Argu": [ "Argu": [
@ -23350,6 +23350,30 @@
"RevisiCondition": "", "RevisiCondition": "",
"RevisiParams": [] "RevisiParams": []
}, },
{
"Id": 224007011,
"EmitPR": 0,
"From": 1,
"Where": [],
"Order": "",
"Limit": 10,
"ExecuteCnt": 1,
"Type": 3,
"Argu": [
390001321,
1000,
1,
-1
],
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"DpsRevisiType": 0,
"DpsCondition": "",
"RevisiCondition": "",
"RevisiParams": []
},
{ {
"Id": 224007111, "Id": 224007111,
"EmitPR": 1000, "EmitPR": 1000,
@ -27124,7 +27148,7 @@
"ExecuteCnt": 1, "ExecuteCnt": 1,
"Type": 2, "Type": 2,
"Argu": [ "Argu": [
434005212, 434005211,
1, 1,
1 1
], ],

View File

@ -1178,7 +1178,7 @@
"CorrectPos": 0, "CorrectPos": 0,
"IsMelee": 0, "IsMelee": 0,
"act": "Skill_2", "act": "Skill_2",
"Type": 2, "Type": 1,
"CD": 4, "CD": 4,
"Target": 1, "Target": 1,
"ChildSkill": { "ChildSkill": {
@ -1207,7 +1207,7 @@
"CorrectPos": 0, "CorrectPos": 0,
"IsMelee": 0, "IsMelee": 0,
"act": "Skill_2", "act": "Skill_2",
"Type": 2, "Type": 1,
"CD": 3, "CD": 3,
"Target": 1, "Target": 1,
"ChildSkill": { "ChildSkill": {
@ -10869,7 +10869,7 @@
"CorrectPos": 0, "CorrectPos": 0,
"IsMelee": 0, "IsMelee": 0,
"act": "", "act": "",
"Type": 1, "Type": 3,
"CD": 0, "CD": 0,
"Target": 1, "Target": 1,
"ChildSkill": { "ChildSkill": {
@ -10988,7 +10988,7 @@
"CorrectPos": 0, "CorrectPos": 0,
"IsMelee": 0, "IsMelee": 0,
"act": "", "act": "",
"Type": 1, "Type": 3,
"CD": 0, "CD": 0,
"Target": 1, "Target": 1,
"ChildSkill": { "ChildSkill": {
@ -12626,7 +12626,7 @@
"act": "Skill_2", "act": "Skill_2",
"Type": 2, "Type": 2,
"CD": 0, "CD": 0,
"Target": 3, "Target": 0,
"ChildSkill": { "ChildSkill": {
"Id": [ "Id": [
243007211 243007211

View File

@ -0,0 +1,26 @@
[
{
"make_take": 1,
"make_text": {
"key": "newsmithy_game_make_text1",
"text": "未命中"
},
"probability": 0
},
{
"make_take": 2,
"make_text": {
"key": "newsmithy_game_make_text2",
"text": "普通打造"
},
"probability": 25
},
{
"make_take": 3,
"make_text": {
"key": "newsmithy_game_make_text3",
"text": "完美打造!"
},
"probability": 50
}
]

View File

@ -21,10 +21,10 @@ func (this *apiComp) ForgeEquipCheck(session comm.IUserSession, req *pb.SmithyFo
// 打造装备 // 打造装备
func (this *apiComp) ForgeEquip(session comm.IUserSession, req *pb.SmithyForgeEquipReq) (code pb.ErrorCode, data proto.Message) { func (this *apiComp) ForgeEquip(session comm.IUserSession, req *pb.SmithyForgeEquipReq) (code pb.ErrorCode, data proto.Message) {
var ( var (
stove *pb.DBStove stove *pb.DBStove
err error err error
update map[string]interface{} update map[string]interface{}
addProbability int32
costRes []*cfg.Gameatn costRes []*cfg.Gameatn
customLv int32 // 定制装备的等级 customLv int32 // 定制装备的等级
rsp *pb.SmithyForgeEquipResp rsp *pb.SmithyForgeEquipResp
@ -88,9 +88,8 @@ func (this *apiComp) ForgeEquip(session comm.IUserSession, req *pb.SmithyForgeEq
if req.Lava > 0 { // 是否是熔岩打造 if req.Lava > 0 { // 是否是熔岩打造
exemption := this.module.configure.GetGlobalConf().ExemptionTemperatureCos // 预计消耗温度 exemption := this.module.configure.GetGlobalConf().ExemptionTemperatureCos // 预计消耗温度
exemption_TemperatureCosNum := this.module.configure.GetGlobalConf().ExemptionTemperatureCosNum gloabNum := this.module.configure.GetGlobalConf().ExemptionTemperatureCosNum
exemption_TemperatureCosNum = req.Lava * exemption_TemperatureCosNum if needTemperatureCos > req.Lava*gloabNum {
if needTemperatureCos > exemption_TemperatureCosNum {
code = pb.ErrorCode_SmithyLackLava // 缺少熔岩 code = pb.ErrorCode_SmithyLackLava // 缺少熔岩
return return
} }
@ -132,7 +131,30 @@ func (this *apiComp) ForgeEquip(session comm.IUserSession, req *pb.SmithyForgeEq
if code = this.module.ConsumeRes(session, costRes, true); code != pb.ErrorCode_Success { if code = this.module.ConsumeRes(session, costRes, true); code != pb.ErrorCode_Success {
return return
} }
// 玩小游戏增加双倍产出校验
if req.SuiteId != 0 { // 定制才有
var (
hitLen int32
)
for k, v := range req.Hit {
confMake := this.module.configure.GetSmithyMake(k)
if confMake == nil {
code = pb.ErrorCode_ConfigNoFound
this.module.Errorf("GetSmithyMake配置没找到:%d", k)
return
}
hitLen += v
addProbability += v * confMake.Probability
}
// 总次数校验
maxHitCount := this.module.configure.GetGlobalConf().GameMakeTunkNum
if hitLen > maxHitCount {
code = pb.ErrorCode_ReqParameterError
this.module.Errorf("铁匠铺小游戏打造次数超过上限,当前打造次数:%d, 配置总次数:%d", hitLen, maxHitCount)
}
}
// 装备资源分发 // 装备资源分发
if customLv > 0 { if customLv > 0 {
sz := make([]int32, 4) // 最高 4个品质 sz := make([]int32, 4) // 最高 4个品质
@ -149,7 +171,7 @@ func (this *apiComp) ForgeEquip(session comm.IUserSession, req *pb.SmithyForgeEq
newdrop := this.module.modelStove.CheckUnlockSuid(req.ReelId, stove.Data[req.ReelId].Lv, reelcfg.BasicDrop) newdrop := this.module.modelStove.CheckUnlockSuid(req.ReelId, stove.Data[req.ReelId].Lv, reelcfg.BasicDrop)
res := this.module.configure.GetDropReward(newdrop) res := this.module.configure.GetDropReward(newdrop)
// 检查是否命中双倍打造 // 检查是否命中双倍打造
if ok := this.module.modelStove.CheckForgetwoEquip(req.ReelId, stove.Data[req.ReelId].Lv); ok { if ok := this.module.modelStove.CheckForgetwoEquip(req.ReelId, stove.Data[req.ReelId].Lv, addProbability); ok {
if err, atno := this.module.DispenseAtno(session, res, true); err == pb.ErrorCode_Success { if err, atno := this.module.DispenseAtno(session, res, true); err == pb.ErrorCode_Success {
for _, v := range atno { for _, v := range atno {
if eq, err1 := this.module.ModuleEquipment.QueryEquipment(session.GetUserId(), v.O); err1 == pb.ErrorCode_Success { if eq, err1 := this.module.ModuleEquipment.QueryEquipment(session.GetUserId(), v.O); err1 == pb.ErrorCode_Success {

View File

@ -22,6 +22,7 @@ const (
game_smithyatlaslv = "game_smithyatlaslv.json" // 收藏等级积分 game_smithyatlaslv = "game_smithyatlaslv.json" // 收藏等级积分
game_smithyatlasscore = "game_smithyatlasscore.json" // 图鉴积分 game_smithyatlasscore = "game_smithyatlasscore.json" // 图鉴积分
game_smithytask = "game_smithytask.json" //图鉴任务 game_smithytask = "game_smithytask.json" //图鉴任务
game_smithymake = "game_smithymake.json" //打铁小游戏
//game_smithyDrop = "game_smithydrop.json" //装备掉落 //game_smithyDrop = "game_smithydrop.json" //装备掉落
) )
@ -56,6 +57,7 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
err = this.LoadConfigure(game_smithyatlas, cfg.NewGameSmithyAtlas) err = this.LoadConfigure(game_smithyatlas, cfg.NewGameSmithyAtlas)
err = this.LoadConfigure(game_smithyatlaslv, cfg.NewGameSmithyAtlasLv) err = this.LoadConfigure(game_smithyatlaslv, cfg.NewGameSmithyAtlasLv)
err = this.LoadConfigure(game_smithytask, cfg.NewGameSmithyTask) err = this.LoadConfigure(game_smithytask, cfg.NewGameSmithyTask)
err = this.LoadConfigure(game_smithymake, cfg.NewGameSmithyMake)
return return
} }
@ -92,7 +94,7 @@ func (this *configureComp) CheckSmithyFirstReelConfigData(etype int32, id int32)
if v, err := this.GetConfigure(game_smithyreel); err == nil { if v, err := this.GetConfigure(game_smithyreel); err == nil {
if configure, ok := v.(*cfg.GameNewSmithy); ok { if configure, ok := v.(*cfg.GameNewSmithy); ok {
for _, v := range configure.GetDataList() { for _, v := range configure.GetDataList() {
if v.Type == etype{ if v.Type == etype {
if v.Id == id { if v.Id == id {
return true return true
} else { } else {
@ -258,3 +260,14 @@ func (this *configureComp) GetSmithyTask(taskId int32) (data *cfg.GameSmithyTask
this.module.Errorf("GetSmithyTask notfound taskId:%d", taskId) this.module.Errorf("GetSmithyTask notfound taskId:%d", taskId)
return return
} }
func (this *configureComp) GetSmithyMake(cid int32) (data *cfg.GameSmithyMakeData) {
if v, err := this.GetConfigure(game_smithymake); err == nil {
if configure, ok := v.(*cfg.GameSmithyMake); ok {
data = configure.Get(cid)
return
}
}
this.module.Errorf("GetSmithyMake notfound taskId:%d", cid)
return
}

View File

@ -81,7 +81,7 @@ func (this *modelStove) CheckTemperature(reelId int32, lv int32) (t int32) {
} }
// 限定 普通打造的时候检查额外概率制造两件装备 // 限定 普通打造的时候检查额外概率制造两件装备
func (this *modelStove) CheckForgetwoEquip(reelId int32, lv int32) (b bool) { func (this *modelStove) CheckForgetwoEquip(reelId int32, lv int32, addProbability int32) (b bool) {
var ( var (
index int32 index int32
value int32 value int32
@ -93,11 +93,11 @@ func (this *modelStove) CheckForgetwoEquip(reelId int32, lv int32) (b bool) {
} }
} }
} }
if value > 0 { value += addProbability
n, _ := rand.Int(rand.Reader, big.NewInt(1000)) // 千分比
if value < int32(n.Int64()) { n, _ := rand.Int(rand.Reader, big.NewInt(1000)) // 千分比
return true if value > int32(n.Int64()) {
} return true
} }
return false return false

View File

@ -25,7 +25,7 @@ type GourmetCreateFoodReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid"` Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid"` // 食谱ID
Material map[string]int32 `protobuf:"bytes,2,rep,name=material,proto3" json:"material" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` Material map[string]int32 `protobuf:"bytes,2,rep,name=material,proto3" json:"material" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
} }
@ -80,7 +80,7 @@ type GourmetCreateFoodResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid"` Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid"` // 获得的食谱
FirstGet bool `protobuf:"varint,2,opt,name=firstGet,proto3" json:"firstGet"` // 是否首次获得 FirstGet bool `protobuf:"varint,2,opt,name=firstGet,proto3" json:"firstGet"` // 是否首次获得
} }

View File

@ -112,11 +112,12 @@ type SmithyForgeEquipReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
ReelId int32 `protobuf:"varint,1,opt,name=reelId,proto3" json:"reelId"` // 卷轴ID ReelId int32 `protobuf:"varint,1,opt,name=reelId,proto3" json:"reelId"` // 卷轴ID
Lava int32 `protobuf:"varint,2,opt,name=lava,proto3" json:"lava"` // 添加熔岩 Lava int32 `protobuf:"varint,2,opt,name=lava,proto3" json:"lava"` // 添加熔岩
Quality int32 `protobuf:"varint,3,opt,name=quality,proto3" json:"quality"` // 精益制造 Quality int32 `protobuf:"varint,3,opt,name=quality,proto3" json:"quality"` // 精益制造
SuiteId int32 `protobuf:"varint,4,opt,name=suiteId,proto3" json:"suiteId"` // 套装ID (非定制传0 ) SuiteId int32 `protobuf:"varint,4,opt,name=suiteId,proto3" json:"suiteId"` // 套装ID (非定制传0 )
Position int32 `protobuf:"varint,5,opt,name=position,proto3" json:"position"` // 装备位置(没有指定位置传 -1) Position int32 `protobuf:"varint,5,opt,name=position,proto3" json:"position"` // 装备位置(没有指定位置传 -1)
Hit map[int32]int32 `protobuf:"bytes,6,rep,name=hit,proto3" json:"hit" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 敲击数据 key 敲打 cid value 敲打次数
} }
func (x *SmithyForgeEquipReq) Reset() { func (x *SmithyForgeEquipReq) Reset() {
@ -186,6 +187,13 @@ func (x *SmithyForgeEquipReq) GetPosition() int32 {
return 0 return 0
} }
func (x *SmithyForgeEquipReq) GetHit() map[int32]int32 {
if x != nil {
return x.Hit
}
return nil
}
type SmithyForgeEquipResp struct { type SmithyForgeEquipResp struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -1286,7 +1294,7 @@ var file_smithy_smithy_msg_proto_rawDesc = []byte{
0x68, 0x79, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x68, 0x79, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65,
0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
0x22, 0x91, 0x01, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x46, 0x6f, 0x72, 0x67, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x46, 0x6f, 0x72, 0x67, 0x65,
0x45, 0x71, 0x75, 0x69, 0x70, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x65, 0x6c, 0x45, 0x71, 0x75, 0x69, 0x70, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x65, 0x6c,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x65, 0x6c, 0x49, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x65, 0x6c, 0x49, 0x64,
0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x76, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x76, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
@ -1295,82 +1303,88 @@ var file_smithy_smithy_msg_proto_rawDesc = []byte{
0x0a, 0x07, 0x73, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x07, 0x73, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
0x07, 0x73, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x07, 0x73, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x22, 0x59, 0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x46, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x03, 0x68, 0x69, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28,
0x72, 0x67, 0x65, 0x45, 0x71, 0x75, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x23, 0x0a, 0x05, 0x0b, 0x32, 0x1d, 0x2e, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x46, 0x6f, 0x72, 0x67, 0x65, 0x45,
0x65, 0x71, 0x75, 0x69, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x71, 0x75, 0x69, 0x70, 0x52, 0x65, 0x71, 0x2e, 0x48, 0x69, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x5f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x71, 0x75, 0x69, 0x52, 0x03, 0x68, 0x69, 0x74, 0x1a, 0x36, 0x0a, 0x08, 0x48, 0x69, 0x74, 0x45, 0x6e, 0x74, 0x72,
0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x59, 0x0a,
0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x46, 0x6f, 0x72, 0x67, 0x65, 0x45, 0x71, 0x75, 0x69,
0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x23, 0x0a, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x5f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d,
0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61,
0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f,
0x76, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74,
0x68, 0x79, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x55, 0x70, 0x52, 0x65, 0x71, 0x22, 0x31, 0x0a, 0x11,
0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x55, 0x70, 0x52, 0x65, 0x73,
0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
0x12, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x55, 0x70, 0x3d, 0x0a, 0x0d, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x69, 0x73, 0x65, 0x52, 0x65, 0x71,
0x52, 0x65, 0x71, 0x22, 0x31, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x76, 0x65, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2e,
0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3d, 0x0a, 0x0d, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x0a, 0x0e, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x69, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70,
0x52, 0x69, 0x73, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12,
0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2e, 0x0a, 0x0e, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52,
0x69, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52,
0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x22, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54,
0x6f, 0x6f, 0x6c, 0x73, 0x55, 0x70, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0x31, 0x0a, 0x11, 0x53, 0x6d, 0x69,
0x74, 0x68, 0x79, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c,
0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44,
0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x13, 0x0a, 0x11,
0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65,
0x71, 0x22, 0x41, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x65, 0x72, 0x73, 0x22, 0x4b, 0x0a, 0x0d, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x65,
0x6c, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x71, 0x75, 0x69, 0x70, 0x49, 0x64,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x71, 0x75, 0x69, 0x70, 0x49, 0x64,
0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49,
0x64, 0x22, 0x79, 0x0a, 0x0e, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x65, 0x6c, 0x6c, 0x52,
0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65,
0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x71, 0x75, 0x69, 0x70, 0x49, 0x64, 0x73, 0x18,
0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x71, 0x75, 0x69, 0x70, 0x49, 0x64, 0x73, 0x12,
0x2b, 0x0a, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x22, 0x31, 0x0a, 0x0f,
0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x12,
0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x22,
0x3f, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x52,
0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65,
0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73,
0x22, 0x14, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x4c,
0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x22, 0x33, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x41, 0x74, 0x6c, 0x61, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a,
0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42,
0x41, 0x74, 0x6c, 0x61, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x28, 0x0a, 0x16, 0x53,
0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61,
0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x37, 0x0a, 0x17, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41,
0x74, 0x6c, 0x61, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70,
0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08,
0x2e, 0x44, 0x42, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x15, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x22,
0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x41, 0x77, 0x61, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x55, 0x70, 0x52,
0x72, 0x64, 0x52, 0x65, 0x71, 0x22, 0x34, 0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
0x74, 0x6c, 0x61, 0x73, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x69, 0x64, 0x22, 0x31, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x6f, 0x6f, 0x6c,
0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x73, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
0x41, 0x74, 0x6c, 0x61, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2c, 0x0a, 0x12, 0x53, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x52,
0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x43,
0x71, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x22, 0x41, 0x0a, 0x12, 0x53, 0x6d,
0x05, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x2d, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x69, 0x74, 0x68, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70,
0x74, 0x68, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20,
0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x6e,
0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x22, 0x4b, 0x0a,
0x68, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x22, 0x37, 0x0a, 0x0d, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1a,
0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x0a, 0x08, 0x65, 0x71, 0x75, 0x69, 0x70, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
0x65, 0x73, 0x70, 0x12, 0x21, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x52, 0x08, 0x65, 0x71, 0x75, 0x69, 0x70, 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75,
0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x22, 0x79, 0x0a, 0x0e, 0x53, 0x6d,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x69, 0x74, 0x68, 0x79, 0x53, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a,
0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08,
0x65, 0x71, 0x75, 0x69, 0x70, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
0x65, 0x71, 0x75, 0x69, 0x70, 0x49, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x09, 0x63, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x65, 0x72, 0x73, 0x22, 0x31, 0x0a, 0x0f, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x52,
0x65, 0x66, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74,
0x68, 0x79, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x09,
0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x0d, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09,
0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x6d, 0x69,
0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x22,
0x33, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x4c, 0x69,
0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x52, 0x04,
0x64, 0x61, 0x74, 0x61, 0x22, 0x28, 0x0a, 0x16, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74,
0x6c, 0x61, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x37,
0x0a, 0x17, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x41, 0x63, 0x74,
0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74,
0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x41, 0x74, 0x6c, 0x61,
0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68,
0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x22, 0x34,
0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x41, 0x77, 0x61,
0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x52, 0x04,
0x64, 0x61, 0x74, 0x61, 0x22, 0x2c, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x61,
0x73, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61,
0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b,
0x49, 0x64, 0x22, 0x2d, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x61, 0x73, 0x6b,
0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73,
0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49,
0x64, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x6c,
0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x22, 0x37, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x54, 0x61, 0x73, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x21, 0x0a, 0x05,
0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x54, 0x75,
0x6a, 0x69, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x42,
0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -1385,7 +1399,7 @@ func file_smithy_smithy_msg_proto_rawDescGZIP() []byte {
return file_smithy_smithy_msg_proto_rawDescData return file_smithy_smithy_msg_proto_rawDescData
} }
var file_smithy_smithy_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_smithy_smithy_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
var file_smithy_smithy_msg_proto_goTypes = []interface{}{ var file_smithy_smithy_msg_proto_goTypes = []interface{}{
(*SmithyGetStoveInfoReq)(nil), // 0: SmithyGetStoveInfoReq (*SmithyGetStoveInfoReq)(nil), // 0: SmithyGetStoveInfoReq
(*SmithyGetStoveInfoResp)(nil), // 1: SmithyGetStoveInfoResp (*SmithyGetStoveInfoResp)(nil), // 1: SmithyGetStoveInfoResp
@ -1413,31 +1427,33 @@ var file_smithy_smithy_msg_proto_goTypes = []interface{}{
(*SmithyTaskAwardResp)(nil), // 23: SmithyTaskAwardResp (*SmithyTaskAwardResp)(nil), // 23: SmithyTaskAwardResp
(*SmithyTasklistReq)(nil), // 24: SmithyTasklistReq (*SmithyTasklistReq)(nil), // 24: SmithyTasklistReq
(*SmithyTasklistResp)(nil), // 25: SmithyTasklistResp (*SmithyTasklistResp)(nil), // 25: SmithyTasklistResp
(*DBStove)(nil), // 26: DBStove nil, // 26: SmithyForgeEquipReq.HitEntry
(*DB_Equipment)(nil), // 27: DB_Equipment (*DBStove)(nil), // 27: DBStove
(*CustomerInfo)(nil), // 28: CustomerInfo (*DB_Equipment)(nil), // 28: DB_Equipment
(*DBAtlas)(nil), // 29: DBAtlas (*CustomerInfo)(nil), // 29: CustomerInfo
(*TujianTask)(nil), // 30: TujianTask (*DBAtlas)(nil), // 30: DBAtlas
(*TujianTask)(nil), // 31: TujianTask
} }
var file_smithy_smithy_msg_proto_depIdxs = []int32{ var file_smithy_smithy_msg_proto_depIdxs = []int32{
26, // 0: SmithyGetStoveInfoResp.data:type_name -> DBStove 27, // 0: SmithyGetStoveInfoResp.data:type_name -> DBStove
27, // 1: SmithyForgeEquipResp.equip:type_name -> DB_Equipment 26, // 1: SmithyForgeEquipReq.hit:type_name -> SmithyForgeEquipReq.HitEntry
26, // 2: SmithyForgeEquipResp.data:type_name -> DBStove 28, // 2: SmithyForgeEquipResp.equip:type_name -> DB_Equipment
26, // 3: SmithyStoveUpResp.data:type_name -> DBStove 27, // 3: SmithyForgeEquipResp.data:type_name -> DBStove
26, // 4: SmithyRiseResp.data:type_name -> DBStove 27, // 4: SmithyStoveUpResp.data:type_name -> DBStove
26, // 5: SmithyToolsUpResp.data:type_name -> DBStove 27, // 5: SmithyRiseResp.data:type_name -> DBStove
28, // 6: SmithyCustomerResp.customers:type_name -> CustomerInfo 27, // 6: SmithyToolsUpResp.data:type_name -> DBStove
28, // 7: SmithySellResp.customers:type_name -> CustomerInfo 29, // 7: SmithyCustomerResp.customers:type_name -> CustomerInfo
28, // 8: SmithyRefuseResp.customers:type_name -> CustomerInfo 29, // 8: SmithySellResp.customers:type_name -> CustomerInfo
29, // 9: SmithyAtlasListResp.data:type_name -> DBAtlas 29, // 9: SmithyRefuseResp.customers:type_name -> CustomerInfo
29, // 10: SmithyAtlasActivateResp.data:type_name -> DBAtlas 30, // 10: SmithyAtlasListResp.data:type_name -> DBAtlas
29, // 11: SmithyAtlasAwardResp.data:type_name -> DBAtlas 30, // 11: SmithyAtlasActivateResp.data:type_name -> DBAtlas
30, // 12: SmithyTasklistResp.tasks:type_name -> TujianTask 30, // 12: SmithyAtlasAwardResp.data:type_name -> DBAtlas
13, // [13:13] is the sub-list for method output_type 31, // 13: SmithyTasklistResp.tasks:type_name -> TujianTask
13, // [13:13] is the sub-list for method input_type 14, // [14:14] is the sub-list for method output_type
13, // [13:13] is the sub-list for extension type_name 14, // [14:14] is the sub-list for method input_type
13, // [13:13] is the sub-list for extension extendee 14, // [14:14] is the sub-list for extension type_name
0, // [0:13] is the sub-list for field type_name 14, // [14:14] is the sub-list for extension extendee
0, // [0:14] is the sub-list for field type_name
} }
func init() { file_smithy_smithy_msg_proto_init() } func init() { file_smithy_smithy_msg_proto_init() }
@ -1767,7 +1783,7 @@ func file_smithy_smithy_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_smithy_smithy_msg_proto_rawDesc, RawDescriptor: file_smithy_smithy_msg_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 26, NumMessages: 27,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type GameSmithyMake struct {
_dataMap map[int32]*GameSmithyMakeData
_dataList []*GameSmithyMakeData
}
func NewGameSmithyMake(_buf []map[string]interface{}) (*GameSmithyMake, error) {
_dataList := make([]*GameSmithyMakeData, 0, len(_buf))
dataMap := make(map[int32]*GameSmithyMakeData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameSmithyMakeData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.MakeTake] = _v
}
}
return &GameSmithyMake{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameSmithyMake) GetDataMap() map[int32]*GameSmithyMakeData {
return table._dataMap
}
func (table *GameSmithyMake) GetDataList() []*GameSmithyMakeData {
return table._dataList
}
func (table *GameSmithyMake) Get(key int32) *GameSmithyMakeData {
return table._dataMap[key]
}

View File

@ -0,0 +1,39 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameSmithyMakeData struct {
MakeTake int32
MakeText string
Probability int32
}
const TypeId_GameSmithyMakeData = -1032815830
func (*GameSmithyMakeData) GetTypeId() int32 {
return -1032815830
}
func (_v *GameSmithyMakeData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["make_take"].(float64); !_ok_ { err = errors.New("make_take error"); return }; _v.MakeTake = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["make_text"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.MakeText error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.MakeText, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["probability"].(float64); !_ok_ { err = errors.New("probability error"); return }; _v.Probability = int32(_tempNum_) }
return
}
func DeserializeGameSmithyMakeData(_buf map[string]interface{}) (*GameSmithyMakeData, error) {
v := &GameSmithyMakeData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -164,6 +164,7 @@ type Tables struct {
SmithyAtlas *GameSmithyAtlas SmithyAtlas *GameSmithyAtlas
SmithyAtlasLv *GameSmithyAtlasLv SmithyAtlasLv *GameSmithyAtlasLv
SmithyAtlasScore *GameSmithyAtlasScore SmithyAtlasScore *GameSmithyAtlasScore
SmithyMake *GameSmithyMake
SmithyTask *GameSmithyTask SmithyTask *GameSmithyTask
Dispatch_Task *GameDispatch_Task Dispatch_Task *GameDispatch_Task
Dispatch_Lv *GameDispatch_Lv Dispatch_Lv *GameDispatch_Lv
@ -1103,6 +1104,12 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.SmithyAtlasScore, err = NewGameSmithyAtlasScore(buf) ; err != nil { if tables.SmithyAtlasScore, err = NewGameSmithyAtlasScore(buf) ; err != nil {
return nil, err return nil, err
} }
if buf, err = loader("game_smithymake") ; err != nil {
return nil, err
}
if tables.SmithyMake, err = NewGameSmithyMake(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_smithytask") ; err != nil { if buf, err = loader("game_smithytask") ; err != nil {
return nil, err return nil, err
} }

View File

@ -195,6 +195,7 @@ type GameGlobalData struct {
PandamasRankAbove50 int32 PandamasRankAbove50 int32
PandamasRankedBelow50 int32 PandamasRankedBelow50 int32
MrylFlushed []*Gameatn MrylFlushed []*Gameatn
GameMakeTunkNum int32
} }
const TypeId_GameGlobalData = 477542761 const TypeId_GameGlobalData = 477542761
@ -817,6 +818,7 @@ func (_v *GameGlobalData)Deserialize(_buf map[string]interface{}) (err error) {
} }
} }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["game_make_TunkNum"].(float64); !_ok_ { err = errors.New("game_make_TunkNum error"); return }; _v.GameMakeTunkNum = int32(_tempNum_) }
return return
} }