From 7591d58829d1253ce751bc2c8f99d8d9f01008ca Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 18 Oct 2024 10:27:22 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8B=89=E9=9C=B8?= =?UTF-8?q?=E5=85=A5=E5=9C=BA=E9=99=90=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_GameFree.dat | Bin 24124 -> 24144 bytes data/DB_GameFree.json | 13 +++++++++---- data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Task.dat | Bin 5439 -> 5439 bytes xlsx/DB_GameFree.xlsx | Bin 65611 -> 65616 bytes 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/data/DB_GameFree.dat b/data/DB_GameFree.dat index 93a0b0dac5767b64a722fe8e0c39d8872bfd7cab..9ed570013bf427b6cf7d22d1081b9237d012c275 100644 GIT binary patch delta 139 zcmdn9hw;K5#tjZpj0KY&qqJEjFi!BBoD=25SU7ooln#V@8_bo9hH|~4ofvZ`_eN`Q zgA{LIe8Ikh@z3PIXxYg(qve3c{D{`(LC8G#Jb7=l%w+eN%*k_Nbtm7A@dVSsv7U@f OlQ+ibOg;%^X#xOk_%+u6 delta 134 zcmcbxhjGsy#tjZpj5(7XqqHX%L^(0$PTm})!?A(!1^W)hEgvV_$4F0Ri>|5Doy?v;|XV{$9hh- Miq)Nb7ffpb0JwxSSO5S3 diff --git a/data/DB_GameFree.json b/data/DB_GameFree.json index b08696a..443ed6f 100644 --- a/data/DB_GameFree.json +++ b/data/DB_GameFree.json @@ -6502,6 +6502,7 @@ "Desc": "0", "ShowType": 2, "ShowId": 30800, + "LimitCoin": 10000, "BaseScore": 1000, "Turn": 30800, "BetDec": "1000", @@ -6535,6 +6536,7 @@ "Desc": "0", "ShowType": 2, "ShowId": 30900, + "LimitCoin": 10000, "BaseScore": 1000, "Turn": 30900, "BetDec": "1000", @@ -6568,6 +6570,7 @@ "Desc": "0", "ShowType": 2, "ShowId": 31000, + "LimitCoin": 10000, "BaseScore": 1000, "Turn": 31000, "BetDec": "1000", @@ -6601,6 +6604,7 @@ "Desc": "0", "ShowType": 2, "ShowId": 31100, + "LimitCoin": 10000, "BaseScore": 1000, "Turn": 31100, "BetDec": "1000", @@ -6634,6 +6638,7 @@ "Desc": "0", "ShowType": 2, "ShowId": 31200, + "LimitCoin": 10000, "BaseScore": 1000, "Turn": 31200, "BetDec": "1000", @@ -6674,7 +6679,7 @@ 0 ], "OtherIntParams": [ - 0 + 1 ], "RobotNumRng": [ 0 @@ -6707,7 +6712,7 @@ 0 ], "OtherIntParams": [ - 0 + 1 ], "RobotNumRng": [ 0 @@ -6740,7 +6745,7 @@ 0 ], "OtherIntParams": [ - 1 + 2 ], "RobotNumRng": [ 0 @@ -6773,7 +6778,7 @@ 0 ], "OtherIntParams": [ - 1 + 2 ], "RobotNumRng": [ 0 diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index bbb2d8c6a4a4c8554e124ba3042e4cf70c009d7d..b8001724899b5a83762f0e00d33a7f2cce194029 100644 GIT binary patch literal 384 zcmd-w<6snElw#w!*2WB`uS4m}Q2Gj#z6zq1I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUweP&B0>P`L9{s}1#XwsK0A}huH2?qr literal 384 zcmd-w<6snElw#w!*2WB`uS4m}Q2Gj#z6zq1I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwevm5{zl`jIC&c)@zG0{(eaT15* zW)JpqkmVp@nB_ogCSTw%m^_V3Y_k}rJ>z6!enFrB>*Q>%uam`iMJAVUADF}`ve|=2 ll?keq8S26Z%Y`=A@vUP-aUsZT*2%U4c_4!}?-6Kb0RURYMN0qx delta 256 zcmdn5wO?z)d`3YIj)lE!0vFntz1TRG09hiFH!xO0MH@P+prS^bt(dMb39@lqY-1K+ z@q%bta7b>lJnID^POuRRPS0Qjss`2vT*WD_2d%_5wRjFb0sh)vGs`Ug&>8@o9p=2F=EkWE06~j6@i)s^wZ`&0?jM{d2>iu diff --git a/xlsx/DB_GameFree.xlsx b/xlsx/DB_GameFree.xlsx index ac8e3acd5896bd420cd510af7f056132f9b8d1cb..2e8f1551c633a79aa8b67aa0f594029cc97f039f 100644 GIT binary patch delta 46327 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 delta 46294 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 From 8d9ef2a9280448c7d60860714e2add27f5b81147 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 18 Oct 2024 10:33:31 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B4=AD=E4=B9=B0=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocol/webapi/webapi.pb.go | 414 ++++++++++++++++++----------------- protocol/webapi/webapi.proto | 1 + webapi/deprecated.go | 3 +- worldsrv/shopmgr.go | 30 ++- 4 files changed, 241 insertions(+), 207 deletions(-) diff --git a/protocol/webapi/webapi.pb.go b/protocol/webapi/webapi.pb.go index a749cd7..a0f88c8 100644 --- a/protocol/webapi/webapi.pb.go +++ b/protocol/webapi/webapi.pb.go @@ -7265,6 +7265,7 @@ type SACreateOrder struct { ExchangeOrderId string `protobuf:"bytes,14,opt,name=ExchangeOrderId,proto3" json:"ExchangeOrderId,omitempty"` //兑换订单号 Channel string `protobuf:"bytes,15,opt,name=Channel,proto3" json:"Channel,omitempty"` // 渠道 ChannelID string `protobuf:"bytes,16,opt,name=ChannelID,proto3" json:"ChannelID,omitempty"` // 渠道ID + BuyType int32 `protobuf:"varint,17,opt,name=BuyType,proto3" json:"BuyType,omitempty"` // 购买类型 } func (x *SACreateOrder) Reset() { @@ -7411,6 +7412,13 @@ func (x *SACreateOrder) GetChannelID() string { return "" } +func (x *SACreateOrder) GetBuyType() int32 { + if x != nil { + return x.BuyType + } + return 0 +} + type ASCreateOrder struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -10294,7 +10302,7 @@ var file_webapi_proto_rawDesc = []byte{ 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, - 0x67, 0x22, 0xdb, 0x03, 0x0a, 0x0d, 0x53, 0x41, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, + 0x67, 0x22, 0xf5, 0x03, 0x0a, 0x0d, 0x53, 0x41, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, @@ -10323,213 +10331,215 @@ var file_webapi_proto_rawDesc = []byte{ 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x22, - 0x45, 0x0a, 0x0d, 0x41, 0x53, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x54, - 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x54, 0x0a, 0x12, 0x53, 0x41, 0x57, 0x65, 0x62, 0x41, - 0x50, 0x49, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, - 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x66, 0x0a, 0x12, - 0x41, 0x53, 0x57, 0x65, 0x62, 0x41, 0x50, 0x49, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x61, - 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x45, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x45, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x0a, 0x11, 0x41, 0x53, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, - 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x48, 0x0a, 0x11, 0x53, 0x41, 0x43, 0x61, 0x6c, 0x6c, 0x62, - 0x61, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, - 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, - 0x1e, 0x0a, 0x0a, 0x41, 0x53, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, - 0x41, 0x0a, 0x0a, 0x53, 0x41, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x21, 0x0a, - 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, - 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, - 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, - 0x73, 0x67, 0x22, 0x7d, 0x0a, 0x09, 0x41, 0x53, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x6d, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, - 0x6e, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, - 0x65, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, - 0x44, 0x22, 0x40, 0x0a, 0x09, 0x53, 0x41, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x6d, 0x73, 0x12, 0x21, - 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, - 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, - 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x4d, 0x73, 0x67, 0x22, 0xb9, 0x01, 0x0a, 0x13, 0x41, 0x53, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x43, - 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, - 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, - 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, - 0x74, 0x0a, 0x13, 0x53, 0x41, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, - 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x6f, - 0x6e, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x4f, 0x0a, 0x0b, 0x41, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x54, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x53, 0x6e, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x22, 0x42, 0x0a, 0x0b, 0x53, 0x41, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x54, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, - 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x0e, 0x41, 0x53, - 0x47, 0x65, 0x74, 0x49, 0x6d, 0x67, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x54, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x22, 0x77, - 0x0a, 0x0e, 0x53, 0x41, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x67, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x12, + 0x18, 0x0a, 0x07, 0x42, 0x75, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x42, 0x75, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x45, 0x0a, 0x0d, 0x41, 0x53, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x10, + 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, + 0x22, 0x54, 0x0a, 0x12, 0x53, 0x41, 0x57, 0x65, 0x62, 0x41, 0x50, 0x49, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x66, 0x0a, 0x12, 0x41, 0x53, 0x57, 0x65, 0x62, 0x41, + 0x50, 0x49, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x72, + 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x45, 0x72, 0x72, 0x4d, + 0x73, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, + 0x0a, 0x11, 0x41, 0x53, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, + 0x48, 0x0a, 0x11, 0x53, 0x41, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x1e, 0x0a, 0x0a, 0x41, 0x53, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x41, 0x0a, 0x0a, 0x53, 0x41, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, + 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x7d, 0x0a, 0x09, + 0x41, 0x53, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x50, 0x68, + 0x6f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x44, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x44, 0x22, 0x40, 0x0a, 0x09, 0x53, + 0x41, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, + 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, + 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0xb9, 0x01, + 0x0a, 0x13, 0x41, 0x53, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x12, 0x14, 0x0a, + 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4d, 0x6f, + 0x6e, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x54, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x74, 0x0a, 0x13, 0x53, 0x41, 0x47, + 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, - 0x54, 0x61, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x40, 0x0a, 0x0e, 0x41, 0x53, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x0e, 0x53, 0x41, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x54, - 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, - 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, - 0x22, 0x44, 0x0a, 0x12, 0x41, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x12, 0x53, 0x41, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x21, 0x0a, 0x03, - 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, - 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, - 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x9d, 0x01, 0x0a, 0x0d, 0x41, 0x53, 0x41, 0x64, 0x64, 0x49, - 0x74, 0x65, 0x6d, 0x42, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x52, - 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x44, 0x0a, 0x0d, 0x53, 0x41, 0x41, 0x64, 0x64, 0x49, 0x74, - 0x65, 0x6d, 0x42, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, - 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3d, 0x0a, 0x0b, 0x41, - 0x53, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x0b, 0x53, - 0x41, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x04, 0x49, 0x6e, - 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x4d, 0x53, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, - 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, - 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x22, 0x33, 0x0a, 0x07, 0x53, 0x4d, 0x53, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x53, 0x6d, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x53, 0x6d, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x0a, 0x41, 0x53, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x46, 0x0a, 0x14, 0x41, 0x53, 0x50, 0x6f, 0x70, - 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, - 0xa4, 0x01, 0x0a, 0x14, 0x53, 0x41, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, - 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, - 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, - 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x57, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, - 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x72, 0x74, 0x4e, - 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x22, 0x24, 0x0a, 0x0a, - 0x41, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, - 0x6f, 0x67, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x6f, 0x67, 0x49, - 0x64, 0x22, 0x7c, 0x0a, 0x0a, 0x53, 0x41, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, + 0x4f, 0x0a, 0x0b, 0x41, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6c, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, + 0x22, 0x42, 0x0a, 0x0b, 0x53, 0x41, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, - 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, - 0x48, 0x0a, 0x16, 0x41, 0x53, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x6c, 0x6c, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x74, 0x0a, 0x16, 0x53, 0x41, 0x47, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x0e, 0x41, 0x53, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x67, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x22, 0x77, 0x0a, 0x0e, 0x53, 0x41, 0x47, 0x65, + 0x74, 0x49, 0x6d, 0x67, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x1c, 0x0a, + 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, + 0x67, 0x22, 0x40, 0x0a, 0x0e, 0x41, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, + 0x6e, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x0e, 0x53, 0x41, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x44, 0x0a, 0x12, 0x41, 0x53, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x6e, 0x6b, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, + 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x22, 0x5d, 0x0a, 0x12, 0x53, 0x41, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4c, + 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x22, + 0x9d, 0x01, 0x0a, 0x0d, 0x41, 0x53, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x79, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x12, 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, + 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, + 0x44, 0x0a, 0x0d, 0x53, 0x41, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x79, 0x49, 0x64, + 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, + 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3d, 0x0a, 0x0b, 0x41, 0x53, 0x53, 0x4d, 0x53, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x53, 0x6e, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x0b, 0x53, 0x41, 0x53, 0x4d, 0x53, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x53, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x4d, 0x53, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x33, + 0x0a, 0x07, 0x53, 0x4d, 0x53, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6d, 0x73, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x6d, 0x73, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x0a, 0x41, 0x53, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, + 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x22, 0x46, 0x0a, 0x14, 0x41, 0x53, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0xa4, 0x01, 0x0a, 0x14, 0x53, 0x41, + 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, + 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x03, 0x54, + 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, + 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x12, + 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, + 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, + 0x47, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, + 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x22, 0x24, 0x0a, 0x0a, 0x41, 0x53, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x09, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, + 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, + 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x22, 0x7c, 0x0a, 0x0a, 0x53, + 0x41, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x12, + 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x48, 0x0a, 0x16, 0x41, 0x53, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x6c, 0x6c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, - 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x37, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, - 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x2a, - 0xdc, 0x01, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, - 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, - 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, - 0x03, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x44, - 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4a, - 0x59, 0x42, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, - 0x11, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x58, 0x49, 0x53, 0x54, - 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x08, 0x12, 0x0c, 0x0a, - 0x08, 0x54, 0x65, 0x6c, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0a, - 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x0b, - 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0c, 0x42, 0x26, - 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x22, 0x74, 0x0a, 0x16, 0x53, 0x41, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x6c, 0x6c, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, + 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, + 0x12, 0x37, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0xdc, 0x01, 0x0a, 0x07, 0x54, 0x61, + 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, + 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x50, + 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, + 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x6c, 0x61, + 0x79, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x65, 0x6c, 0x45, 0x78, + 0x69, 0x73, 0x74, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0a, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x65, + 0x6c, 0x4e, 0x6f, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, + 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0c, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, + 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/webapi/webapi.proto b/protocol/webapi/webapi.proto index 9a8e55c..0f9f309 100644 --- a/protocol/webapi/webapi.proto +++ b/protocol/webapi/webapi.proto @@ -811,6 +811,7 @@ message SACreateOrder { string ExchangeOrderId = 14; //兑换订单号 string Channel = 15; // 渠道 string ChannelID = 16; // 渠道ID + int32 BuyType = 17; // 购买类型 } message ASCreateOrder { int32 Tag = 1; //0.成功 1.失败 diff --git a/webapi/deprecated.go b/webapi/deprecated.go index 656fbdf..4540418 100644 --- a/webapi/deprecated.go +++ b/webapi/deprecated.go @@ -109,7 +109,7 @@ func ApiPopupWindowsConfig(appId string, body proto.Message) ([]byte, error) { // 支付订单 商城 func API_CreateOrder(appId, orderId string, configid, SnId, shopId int32, platform string, packageTag string, os, deviceId, shopname string, - amount [3]int32, consumptionamount int32, itemInfo []*webapi.ItemInfo, exchangeOrderId, channel, channelId string) *webapi.ASCreateOrder { + amount [3]int32, consumptionamount int32, itemInfo []*webapi.ItemInfo, exchangeOrderId, channel, channelId string, buyType int32) *webapi.ASCreateOrder { body := &webapi.SACreateOrder{ OrderId: orderId, SnId: SnId, @@ -127,6 +127,7 @@ func API_CreateOrder(appId, orderId string, configid, SnId, shopId int32, platfo ExchangeOrderId: exchangeOrderId, Channel: channel, ChannelID: channelId, + BuyType: buyType, } ret := &webapi.ASCreateOrder{} buff, err := postRequest(appId, "/create_order", nil, body, "http", DEFAULT_TIMEOUT) diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go index 78b77b4..e5f8a1b 100644 --- a/worldsrv/shopmgr.go +++ b/worldsrv/shopmgr.go @@ -84,6 +84,16 @@ const ( Shop_Status_NotSend // 3为审核不通过 Shop_Status_Revoke // 4为撤单 ) +const ( + Shop_Type_FirstPay = iota + 1 // 超值首冲 + Shop_Type_BlindBox // 开盲盒 + SHop_Type_ContinuousPay // 累计充值 + Shop_Type_WeekCard // 购买周卡 + Shop_Type_PigBank // 购买存钱罐 + Shop_Type_Permit //购买通行证 + Shop_Type_Shop //商城购买 + Shop_Type_Exchange //商城兑换 +) /* 1.兑换成功:兑换成功,请等待审核 @@ -1327,8 +1337,18 @@ func (this *ShopMgr) SendAPICreateOrder(p *Player, ConfigPayId int32, data any, logger.Logger.Errorf("model.InsertDbShopLog err:", err) return nil } + buyType := Shop_Type_Shop + if shopInfo.Page == ShopPagePermit { + buyType = Shop_Type_Permit + } + if shopInfo.Page == ShopPageDiamondBank { + buyType = Shop_Type_PigBank + } + if shopInfo.Page == ShopPageGift { + buyType = Shop_Type_WeekCard + } return webapi.API_CreateOrder(common.GetAppId(), dbShop.LogId.Hex(), ConfigPayId, p.SnId, shopInfo.Id, p.Platform, p.PackageID, p.DeviceOS, - p.DeviceId, shopInfo.Name, amount, costNum, webItemInfo, "", p.Channel, p.ChannelId) + p.DeviceId, shopInfo.Name, amount, costNum, webItemInfo, "", p.Channel, p.ChannelId, int32(buyType)) } else if cdata, ok := data.(*ExchangeShopInfo); ok { var info *shop.ExchangeType @@ -1353,7 +1373,7 @@ func (this *ShopMgr) SendAPICreateOrder(p *Player, ConfigPayId int32, data any, //兑换 充值订单 logger.Logger.Infof("客户端请求兑换 创建支付订单!AppId = %v,SnId = %v,Id = %v,dbShop.LogId.Hex() = %v,cash = %v", common.GetAppId(), p.SnId, cdata.Id, dbShop.LogId.Hex(), info.Cash*cdata.ExchangeNum) return webapi.API_CreateOrder(common.GetAppId(), dbShop.LogId.Hex(), ConfigPayId, p.SnId, cdata.Id, p.Platform, p.PackageID, p.DeviceOS, - p.DeviceId, cdata.Name, amount, info.Cash*cdata.ExchangeNum, nil, orderId, p.Channel, p.ChannelId) + p.DeviceId, cdata.Name, amount, info.Cash*cdata.ExchangeNum, nil, orderId, p.Channel, p.ChannelId, Shop_Type_Exchange) } else if bbd, ok := data.(*webapi_proto.BlindBoxData); ok { if bbd.Type == ShopTypeCoin { //金币 @@ -1370,7 +1390,7 @@ func (this *ShopMgr) SendAPICreateOrder(p *Player, ConfigPayId int32, data any, return nil } return webapi.API_CreateOrder(common.GetAppId(), dbShop.LogId.Hex(), ConfigPayId, p.SnId, 0, p.Platform, p.PackageID, p.DeviceOS, - p.DeviceId, bbd.Name, amount, int32(bbd.Price2), nil, "", p.Channel, p.ChannelId) + p.DeviceId, bbd.Name, amount, int32(bbd.Price2), nil, "", p.Channel, p.ChannelId, Shop_Type_BlindBox) } else if wfs, ok := data.(*webapi_proto.WelfareSpree); ok { var items []model.ItemInfo var webItemInfo []*webapi_proto.ItemInfo @@ -1391,8 +1411,10 @@ func (this *ShopMgr) SendAPICreateOrder(p *Player, ConfigPayId int32, data any, } } var gainWay int32 = common.GainWay_ActFirstPay + buyType := Shop_Type_FirstPay if remark == "ContinuousPay" { gainWay = common.GainWay_ActContinuousPay + buyType = SHop_Type_ContinuousPay } dbShop = this.NewDbShop(p, 0, amount[:], ShopConsumeMoney, int32(wfs.Price2), gainWay, items, 0, "", 0, remark, []int32{wfs.Day}) err := model.InsertDbShopLog(dbShop) @@ -1401,7 +1423,7 @@ func (this *ShopMgr) SendAPICreateOrder(p *Player, ConfigPayId int32, data any, return nil } return webapi.API_CreateOrder(common.GetAppId(), dbShop.LogId.Hex(), ConfigPayId, p.SnId, 0, p.Platform, p.PackageID, p.DeviceOS, - p.DeviceId, "FirstRecharge", amount, int32(wfs.Price2), webItemInfo, "", p.Channel, p.ChannelId) + p.DeviceId, "FirstRecharge", amount, int32(wfs.Price2), webItemInfo, "", p.Channel, p.ChannelId, int32(buyType)) } return nil }), task.CompleteNotifyWrapper(func(retdata interface{}, t task.Task) { From 1ad97c27a7f7827c062d0285d6f64eb659e67e46 Mon Sep 17 00:00:00 2001 From: "DESKTOP-45ANQ2C\\unis" <121212121@qq.com> Date: Fri, 18 Oct 2024 11:48:04 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E3=80=90=E5=A8=83=E5=A8=83=E6=9C=BA?= =?UTF-8?q?=E6=8A=93=E5=8F=96=E6=A6=82=E7=8E=87=E5=85=AC=E5=BC=8F=E3=80=91?= =?UTF-8?q?=20https://www.tapd.cn/31044302/prong/stories/view/113104430200?= =?UTF-8?q?1001287?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/random.go | 4 + gamerule/clawdoll/constants.go | 4 + gamesrv/clawdoll/action_clawdoll.go | 23 +++ gamesrv/clawdoll/scene_clawdoll.go | 64 +++++- gamesrv/clawdoll/scenepolicy_clawdoll.go | 52 +++++ protocol/webapi/common.pb.go | 253 +++++++++++++---------- protocol/webapi/common.proto | 4 + 7 files changed, 296 insertions(+), 108 deletions(-) diff --git a/common/random.go b/common/random.go index 947e026..d52052e 100644 --- a/common/random.go +++ b/common/random.go @@ -348,3 +348,7 @@ func GetBElementFromA(A []interface{}, B int) []interface{} { } } } + +func RandFloat(min, max float64) float64 { + return min + rand.Float64()*(max-min) +} diff --git a/gamerule/clawdoll/constants.go b/gamerule/clawdoll/constants.go index 0d7e9e9..a3bedae 100644 --- a/gamerule/clawdoll/constants.go +++ b/gamerule/clawdoll/constants.go @@ -32,6 +32,8 @@ const ( ClawDollSceneGrapTimeOut = time.Second * 5 //下抓防卡死强制变状态倒计时 ClawDollScenePayCoinTimeOut = time.Second * 2 //投币防卡死强制变状态倒计时 + + ClawDollSceneExceptTimeOut = time.Second * 80 // ) // 玩家操作 @@ -73,3 +75,5 @@ const ( Zego_ForbidRTCStream = iota + 1 Zego_ResumeRTCStream = iota + 1 ) + +var DebugSwitch bool = false diff --git a/gamesrv/clawdoll/action_clawdoll.go b/gamesrv/clawdoll/action_clawdoll.go index 3da5a08..e01c784 100644 --- a/gamesrv/clawdoll/action_clawdoll.go +++ b/gamesrv/clawdoll/action_clawdoll.go @@ -8,6 +8,7 @@ import ( "mongo.games.com/game/model" "mongo.games.com/game/protocol/clawdoll" "mongo.games.com/game/protocol/machine" + "mongo.games.com/game/srvdata" "mongo.games.com/goserver/core/basic" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" @@ -239,6 +240,28 @@ func (h *CSGetPlayerLogHandler) Process(s *netlib.Session, packetid int, data in var err error var ItemLogs []model.ClawdollSuccessItemLog + if rule.DebugSwitch { + var items []*model.Item + itemData := srvdata.GameItemMgr.Get(p.Platform, common.ItemIDClawdoll) + if itemData != nil { + items = append(items, &model.Item{ + ItemId: common.ItemIDClawdoll, + ItemNum: int64(machineInfo.CostItemNum), + }) + } + + p.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: items, + GainWay: common.GainWayClawdollCostItem, + Operator: "system", + Remark: "娃娃机上分扣除道具", + GameId: int64(sceneEx.GameId), + GameFreeId: int64(sceneEx.GetGameFreeId()), + }) + } + //娃娃机道具使用日志 task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { ItemLogs, err = model.GetClawdollSuccessItemLog(p.Platform, p.SnId) diff --git a/gamesrv/clawdoll/scene_clawdoll.go b/gamesrv/clawdoll/scene_clawdoll.go index 62f4f8d..49adc78 100644 --- a/gamesrv/clawdoll/scene_clawdoll.go +++ b/gamesrv/clawdoll/scene_clawdoll.go @@ -11,6 +11,7 @@ import ( "mongo.games.com/game/common" rule "mongo.games.com/game/gamerule/clawdoll" "mongo.games.com/game/gamesrv/base" + "mongo.games.com/game/model" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/clawdoll" "mongo.games.com/game/protocol/machine" @@ -23,6 +24,7 @@ import ( "mongo.games.com/goserver/srvlib" "net/http" "net/url" + "strconv" "time" ) @@ -66,6 +68,7 @@ type SceneEx struct { machineId int //娃娃机ID machineConn *netlib.Session //娃娃机链接 machineStatus int32 //娃娃机链接状态 0:离线 1:在线 + PayCoinCount int //娃娃机总投币次数 payCoinTimeHandle timer.TimerHandle //上分投币托管handle grabTimerHandle timer.TimerHandle //下抓托管handle @@ -237,6 +240,13 @@ func NewClawdollSceneData(s *base.Scene) *SceneEx { func (this *SceneEx) init() bool { this.Clear() + + this.PayCoinCount = this.LoadPayCoinCount() + return true +} + +func (this *SceneEx) ShutDown() bool { + this.SavePayCoinCount(false) return true } @@ -332,7 +342,30 @@ func (this *SceneEx) GetPlayGrabType(player *PlayerEx) int32 { return rule.ClawWeak } - if this.RoundId/2 == 0 && this.RoundId != 0 { + if this.PayCoinCount == 0 { + this.PayCoinCount = 1 + } + + machineId := this.GetDBGameFree().GetId() % 6080000 + machineInfo := this.GetMachineServerInfo(machineId, player.Platform) + if machineInfo == nil { + logger.Logger.Errorf("GetPlayGrabType machineId: %v, platform: %v", machineId, player.Platform) + return rule.ClawWeak + } + + ProfitRate := common.RandFloat(machineInfo.ProfitMin, machineInfo.ProfitMax) + strongRate := machineInfo.CatchPrice/machineInfo.BuyPrice*ProfitRate*float64(this.PayCoinCount) - 1 + if strongRate <= 0.00000 { + return rule.ClawWeak + } else if strongRate > 0.00000 && strongRate <= 0.99999 { + // 再次随机 + newRate := common.RandFromRangeInt64(0, 100) + if int64(strongRate*100) > newRate { + return rule.ClawStrong + } else { + return rule.ClawWeak + } + } else if strongRate >= 1.00000 { return rule.ClawStrong } @@ -464,6 +497,35 @@ func (this *SceneEx) PayCoinTimeHandle() { }), nil, rule.ClawDollScenePayCoinTimeOut, 1) } +// 得到投币次数 +func (this *SceneEx) LoadPayCoinCount() int { + machineId := this.GetDBGameFree().GetId() + PayCoinCountDBKey := fmt.Sprintf("Clawdoll_PayCoinCount_%v", machineId) + + data := model.GetStrKVGameData(PayCoinCountDBKey) + + PayCoinCount, err := strconv.Atoi(data) + if err == nil { + return PayCoinCount + } + return 0 +} + +// 保存投币次数 +func (this *SceneEx) SavePayCoinCount(asyn bool) { + machineId := this.GetDBGameFree().GetId() + PayCoinCountDBKey := fmt.Sprintf("Clawdoll_PayCoinCount_%v", machineId) + + saveBuff := strconv.Itoa(int(machineId)) + if asyn { + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + return model.UptStrKVGameData(PayCoinCountDBKey, string(saveBuff)) + }), nil, "UptStrKVGameData").Start() + } else { + model.UptStrKVGameData(PayCoinCountDBKey, string(saveBuff)) + } +} + // actionType : 1 禁止推流 ForbidRTCStream // actionType : 2 恢复推流 ResumeRTCStream func operateTask(sceneEx *SceneEx, times int, actionType int, platform string) { diff --git a/gamesrv/clawdoll/scenepolicy_clawdoll.go b/gamesrv/clawdoll/scenepolicy_clawdoll.go index f6b40fb..c685d62 100644 --- a/gamesrv/clawdoll/scenepolicy_clawdoll.go +++ b/gamesrv/clawdoll/scenepolicy_clawdoll.go @@ -530,6 +530,23 @@ func (this *StateWait) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, par // 1-前 2-后 3-左 4-右 5-投币 sceneEx.OnPlayerSMPerateOp(p.SnId, int32(sceneEx.machineId), rule.ButtonPayCoin) + if rule.DebugSwitch { + playerEx.CostPlayCoin() + + sceneEx.playingSnid = p.SnId + + //发送向前移动指令 + //sceneEx.OnPlayerSMPerateOp(p.SnId, int32(sceneEx.machineId), rule.ButtonBack) + + s.ChangeSceneState(rule.ClawDollSceneStateStart) + sceneEx.SetPlayingState(int32(rule.ClawDollSceneStateStart)) + + ClawdollBroadcastRoomState(s) + ClawdollSendPlayerInfo(s) + + ClawdollBroadcastPlayingInfo(s) + } + logger.Logger.Trace("(ClawDoll this *StateWait) OnPlayerOp payCoin, sceneId=", s.GetSceneId(), " player=", p.SnId, " machineId=", sceneEx.machineId) //sceneEx.OnPlayerSCOp(p, opcode, clawdoll.OpResultCode_OPRC_Success, params) @@ -672,6 +689,24 @@ func (this *PlayGame) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, para //1-弱力抓 2 -强力抓 sceneEx.OnPlayerSMGrabOp(p.SnId, int32(sceneEx.machineId), grapType) + if rule.DebugSwitch { + if sceneEx.RoundId/2 == 1 { + // 获得娃娃卡 + playerEx.CatchCardClawdoll() + + playerEx.IsWin = true + + } else { + playerEx.IsWin = false + } + + s.ChangeSceneState(rule.ClawDollSceneStateBilled) + sceneEx.SetPlayingState(int32(rule.ClawDollSceneStateBilled)) + + ClawdollBroadcastRoomState(s) + ClawdollSendPlayerInfo(s) + } + sceneEx.Gaming = false case rule.ClawDollPlayerOpMove: @@ -805,6 +840,7 @@ func (this *StateBilled) OnEnter(s *base.Scene) { } playerEx.lastIsWin = playerEx.IsWin + sceneEx.PayCoinCount++ playerEx.ReStartGame() } } @@ -895,6 +931,22 @@ func (this *StateWaitPayCoin) OnPlayerOp(s *base.Scene, p *base.Player, opcode i playerEx.ReStartGame() sceneEx.OnPlayerSCOp(p, opcode, clawdoll.OpResultCode_OPRC_Success, params) + if rule.DebugSwitch { + playerEx.CostPlayCoin() + + sceneEx.playingSnid = p.SnId + + //发送向前移动指令 + //sceneEx.OnPlayerSMPerateOp(p.SnId, int32(sceneEx.machineId), rule.ButtonBack) + + s.ChangeSceneState(rule.ClawDollSceneStateStart) + sceneEx.SetPlayingState(int32(rule.ClawDollSceneStateStart)) + + ClawdollBroadcastRoomState(s) + ClawdollSendPlayerInfo(s) + + ClawdollBroadcastPlayingInfo(s) + } case rule.ClawDollPlayerCancelPayCoin: if sceneEx.playingSnid != playerEx.SnId { diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index 5f5e46c..ad044f9 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -8303,15 +8303,19 @@ type MachineInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MachineId int32 `protobuf:"varint,1,opt,name=MachineId,proto3" json:"MachineId,omitempty"` //娃娃机Id - AppId int64 `protobuf:"varint,2,opt,name=AppId,proto3" json:"AppId,omitempty"` - ServerSecret string `protobuf:"bytes,3,opt,name=ServerSecret,proto3" json:"ServerSecret,omitempty"` - StreamId string `protobuf:"bytes,4,opt,name=StreamId,proto3" json:"StreamId,omitempty"` - CostItemNum int32 `protobuf:"varint,5,opt,name=CostItemNum,proto3" json:"CostItemNum,omitempty"` //消耗道具数量 - ItemId int32 `protobuf:"varint,6,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //获得道具Id - ItemNum int32 `protobuf:"varint,7,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //获得道具数量 - IconAddr string `protobuf:"bytes,8,opt,name=IconAddr,proto3" json:"IconAddr,omitempty"` //图片地址 - Name string `protobuf:"bytes,9,opt,name=Name,proto3" json:"Name,omitempty"` //场次名字 + MachineId int32 `protobuf:"varint,1,opt,name=MachineId,proto3" json:"MachineId,omitempty"` //娃娃机Id + AppId int64 `protobuf:"varint,2,opt,name=AppId,proto3" json:"AppId,omitempty"` + ServerSecret string `protobuf:"bytes,3,opt,name=ServerSecret,proto3" json:"ServerSecret,omitempty"` + StreamId string `protobuf:"bytes,4,opt,name=StreamId,proto3" json:"StreamId,omitempty"` + CostItemNum int32 `protobuf:"varint,5,opt,name=CostItemNum,proto3" json:"CostItemNum,omitempty"` //消耗道具数量 + ItemId int32 `protobuf:"varint,6,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //获得道具Id + ItemNum int32 `protobuf:"varint,7,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //获得道具数量 + IconAddr string `protobuf:"bytes,8,opt,name=IconAddr,proto3" json:"IconAddr,omitempty"` //图片地址 + Name string `protobuf:"bytes,9,opt,name=Name,proto3" json:"Name,omitempty"` //场次名字 + BuyPrice float64 `protobuf:"fixed64,10,opt,name=BuyPrice,proto3" json:"BuyPrice,omitempty"` //进货价 + CatchPrice float64 `protobuf:"fixed64,11,opt,name=CatchPrice,proto3" json:"CatchPrice,omitempty"` //一次抓取价格 + ProfitMin float64 `protobuf:"fixed64,12,opt,name=ProfitMin,proto3" json:"ProfitMin,omitempty"` //盈利区间最小值 + ProfitMax float64 `protobuf:"fixed64,13,opt,name=ProfitMax,proto3" json:"ProfitMax,omitempty"` //盈利区间最大值 } func (x *MachineInfo) Reset() { @@ -8409,6 +8413,34 @@ func (x *MachineInfo) GetName() string { return "" } +func (x *MachineInfo) GetBuyPrice() float64 { + if x != nil { + return x.BuyPrice + } + return 0 +} + +func (x *MachineInfo) GetCatchPrice() float64 { + if x != nil { + return x.CatchPrice + } + return 0 +} + +func (x *MachineInfo) GetProfitMin() float64 { + if x != nil { + return x.ProfitMin + } + return 0 +} + +func (x *MachineInfo) GetProfitMax() float64 { + if x != nil { + return x.ProfitMax + } + return 0 +} + // etcd /game/match_audience type MatchAudience struct { state protoimpl.MessageState @@ -10459,7 +10491,7 @@ var file_common_proto_rawDesc = []byte{ 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0x85, 0x02, 0x0a, 0x0b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0xfd, 0x02, 0x0a, 0x0b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, @@ -10475,104 +10507,111 @@ var file_common_proto_rawDesc = []byte{ 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x63, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x63, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x0d, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x4c, 0x0a, 0x0c, 0x53, 0x70, - 0x69, 0x72, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x72, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0xcc, 0x03, 0x0a, - 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, - 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, - 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, - 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x75, 0x79, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x42, 0x75, 0x79, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x43, 0x61, 0x74, 0x63, 0x68, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x4d, + 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, + 0x4d, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x4d, 0x61, 0x78, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x4d, 0x61, + 0x78, 0x22, 0x4f, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, + 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, + 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, + 0x54, 0x73, 0x22, 0x4c, 0x0a, 0x0c, 0x53, 0x70, 0x69, 0x72, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, + 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x10, + 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, + 0x22, 0x72, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x4f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, + 0x72, 0x74, 0x49, 0x64, 0x22, 0xcc, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, + 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, - 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, - 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0b, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, - 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, - 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x22, 0x96, 0x03, 0x0a, 0x10, - 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, - 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, - 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x46, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, - 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x4f, 0x6e, 0x22, 0x7f, 0x0a, 0x0d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, - 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x4f, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, - 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x5c, 0x0a, 0x11, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, - 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2b, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x6f, - 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0x7f, 0x0a, 0x0f, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, - 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4b, 0x65, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, - 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, - 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, - 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, + 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, + 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, + 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x55, 0x52, 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x55, 0x52, 0x49, 0x22, 0x96, 0x03, 0x0a, 0x10, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, + 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, + 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, + 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, + 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x75, 0x6c, 0x6c, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x75, 0x6c, 0x6c, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x41, 0x75, + 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x4f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x22, 0x7f, 0x0a, 0x0d, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x6e, 0x46, + 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x6e, 0x46, 0x6f, + 0x72, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x5c, 0x0a, + 0x11, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2b, + 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x77, + 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, + 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x7f, 0x0a, 0x0f, 0x50, + 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x26, 0x5a, 0x24, + 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index 1c62863..b47da19 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -921,6 +921,10 @@ message MachineInfo{ int32 ItemNum = 7; //获得道具数量 string IconAddr = 8;//图片地址 string Name = 9;//场次名字 + double BuyPrice = 10; //进货价 + double CatchPrice = 11; //一次抓取价格 + double ProfitMin = 12; //盈利区间最小值 + double ProfitMax = 13; //盈利区间最大值 } // etcd /game/match_audience message MatchAudience { From e476a7e74b0174e4f6d21b5962578d5b4c01f89e Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 18 Oct 2024 13:32:26 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/player.go | 8 ++++++++ model/rabbit_mq.go | 12 ++++++++++++ mq/keyconf.go | 1 + worldsrv/action_bag.go | 1 + worldsrv/action_phonelottery.go | 2 ++ worldsrv/action_task.go | 3 +++ worldsrv/action_welfare.go | 1 + worldsrv/player.go | 1 + worldsrv/shopmgr.go | 2 ++ worldsrv/welfmgr.go | 1 + 10 files changed, 32 insertions(+) diff --git a/model/player.go b/model/player.go index eb8f529..60b1b78 100644 --- a/model/player.go +++ b/model/player.go @@ -117,6 +117,14 @@ const ( SystemFreeGive_CoinType_Diamond //钻石 SystemFreeGive_CoinType_Tiem // 道具 ) +const ( + ActivityLog_Sign = iota + 1 // 签到 + ActivityLog_PhoneLottery //积分抽奖 + ActivityLog_DiamondLottery //钻石抽奖 + ActivityLog_CollectBox //开启礼盒集卡 + ActivityLog_WeekCard //领取周卡奖励 + ActivityLog_Permit //通行证 +) type PlayerGameCtrlData struct { CtrlData map[string]*PlayerGameStatics diff --git a/model/rabbit_mq.go b/model/rabbit_mq.go index 99d432c..f2a59a1 100644 --- a/model/rabbit_mq.go +++ b/model/rabbit_mq.go @@ -61,3 +61,15 @@ func GeneratePhoneLottery(snid int32, platform string, items string, lotteryType params["Ts"] = strconv.Itoa(int(time.Now().Unix())) return NewRabbitMQData(mq.BackPhoneLottery, params) } + +// GenerateActivityLog 活动参与log +// childType 1-点击行为 2-兑换行为 +func GenerateActivityLog(snid int32, platform string, typeId, childType int32) *mq.RabbitMQData { + params := make(map[string]string) + params["Snid"] = strconv.Itoa(int(snid)) + params["Platform"] = platform + params["TypeId"] = strconv.Itoa(int(typeId)) + params["ChildType"] = strconv.Itoa(int(childType)) + params["Ts"] = strconv.FormatInt(time.Now().Unix(), 10) + return NewRabbitMQData(mq.BackActivityLog, params) +} diff --git a/mq/keyconf.go b/mq/keyconf.go index 8ee8556..456bbcf 100644 --- a/mq/keyconf.go +++ b/mq/keyconf.go @@ -17,6 +17,7 @@ const ( BackSystemPermitJoin = "back_permitjoin" BackSystemPermitTask = "back_permittask" BackSystemJyb = "back_jyblog" + BackActivityLog = "back_activitylog" ) // mgrsrv diff --git a/worldsrv/action_bag.go b/worldsrv/action_bag.go index 4712c73..76a4dab 100644 --- a/worldsrv/action_bag.go +++ b/worldsrv/action_bag.go @@ -195,6 +195,7 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e } if !p.IsRob && tp1 >= 0 { mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_CollectBox, tp1, v.ItemNum)) + mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_CollectBox, 1)) } } } diff --git a/worldsrv/action_phonelottery.go b/worldsrv/action_phonelottery.go index d839959..c78d426 100644 --- a/worldsrv/action_phonelottery.go +++ b/worldsrv/action_phonelottery.go @@ -210,6 +210,7 @@ func (this *CSPhoneLotteryHandler) Process(s *netlib.Session, packetid int, data mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, model.SystemFreeGive_PhoneLottery, tp1, v.ItemNum)) } } + mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_PhoneLottery, 1)) } return nil } @@ -419,6 +420,7 @@ func (this *CSDiamondLotteryHandler) Process(s *netlib.Session, packetid int, da p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SC_DiamondLottery), pack) logger.Logger.Trace("返回钻石抽奖信息:", pack.String()) } + mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_DiamondLottery, 1)) } return nil } diff --git a/worldsrv/action_task.go b/worldsrv/action_task.go index 5fd0218..b399dd6 100644 --- a/worldsrv/action_task.go +++ b/worldsrv/action_task.go @@ -141,6 +141,9 @@ func SendReward(p *Player, m map[int64]int64, tp int32) { mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, giveType, tp, v.ItemNum)) } } + if giveType == model.SystemFreeGive_GiveType_TaskPermit { + mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_Permit, 1)) + } } func CSTaskList(s *netlib.Session, packetId int, data interface{}, sid int64) error { diff --git a/worldsrv/action_welfare.go b/worldsrv/action_welfare.go index 1afccc6..5a7e2a5 100644 --- a/worldsrv/action_welfare.go +++ b/worldsrv/action_welfare.go @@ -1132,6 +1132,7 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int Gain: gain, Ts: now.Unix(), }) + mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_Permit, 2)) } } diff --git a/worldsrv/player.go b/worldsrv/player.go index 422de51..3950071 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -4466,6 +4466,7 @@ func (this *Player) GetWeekCardAwary(id int32) { } ret.WeekCard = info this.SendToClient(int(playerproto.PlayerPacketID_PACKET_SCGetWeekCardAwary), ret) + mq.Write(model.GenerateActivityLog(this.SnId, this.Platform, model.ActivityLog_WeekCard, 1)) return } diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go index e5f8a1b..0fe111e 100644 --- a/worldsrv/shopmgr.go +++ b/worldsrv/shopmgr.go @@ -717,6 +717,7 @@ func (this *ShopMgr) GainShop(shopInfo *model.ShopInfo, p *Player, vipShopId, po p.AddDiamond(-costNum, 0, gainWay, "sys", shopName) case ShopConsumePhoneScore: p.AddPhoneScore(-costNum, 0, gainWay, "sys", shopName) + mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_PhoneLottery, 2)) case ShopConsumeDiamondScore: BagMgrSingleton.AddItems(&model.AddItemParam{ Platform: p.Platform, @@ -731,6 +732,7 @@ func (this *ShopMgr) GainShop(shopInfo *model.ShopInfo, p *Player, vipShopId, po Operator: "system", Remark: "商城购买消耗钻石积分", }) + mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_DiamondLottery, 2)) default: logger.Logger.Errorf("GainShop ConstType[%v] err", shopInfo.ConstType) return shop.OpResultCode_OPRC_Error diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 43ce87f..1cb2fd8 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -404,6 +404,7 @@ func (this *WelfareMgr) GetTurnplate(p *Player) { } logger.Logger.Tracef("GetTurnplate snid: %v pack: %v", p.SnId, pack) p.SendToClient(int(welfare.SPacketID_PACKET_SC_WELF_GETTURNPLATE), pack) + mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_Sign, 1)) } // GetTurnplteVideo 转盘视频奖励