Compare commits

...

99 Commits

Author SHA1 Message Date
sk 71b5e2599d Merge branch 'release' into 0507 2024-05-07 13:46:54 +08:00
sk cb1a157813 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-07 13:42:27 +08:00
kxdd 04cf926909 Merge branch 'dev_pigbank' into develop 2024-05-07 13:43:15 +08:00
kxdd 7b79b0defd 存钱罐 tienlen场景判断修改 2024-05-07 13:41:24 +08:00
sk 6aed244c8c update data
还原
DB_Createroom.xlsx
DB_Game_Drop.xlsx
2024-05-07 09:53:38 +08:00
kxdd ad4a424024 Merge branch 'dev_newTimeitem' into develop
# Conflicts:
#	gamesrv/tienlen/playerdata_tienlen.go
2024-05-06 18:34:37 +08:00
sk 6ffe1d5375 更新v卡掉落表 2024-05-06 17:55:32 +08:00
kxdd e6b3084bc5 Merge branch 'dev_pigbank' into develop 2024-05-06 17:15:37 +08:00
kxdd 161d215ffd --bug=1000247 --user=李海亮 存钱罐购买后相关问题 https://www.tapd.cn/31044302/s/1010551 2024-05-06 17:14:59 +08:00
kxdd 7113465765 记牌器优化 2024-05-06 16:37:09 +08:00
kxdd bbf2e11d8b 记牌器调整添加
--story=1000618 --user=李海亮 记牌器调整 https://www.tapd.cn/31044302/s/1010552
2024-05-06 16:18:11 +08:00
sk 1430e96752 update data 2024-05-06 16:09:25 +08:00
sk 9338164838 兼容以0开头的手机号登录 2024-05-06 15:45:06 +08:00
kxdd 7756f3ae19 还原本来的道具功能
--task=1000620 --user=李海亮 记牌器调整多道具修改逻辑 https://www.tapd.cn/31044302/s/1010514
2024-05-06 13:44:49 +08:00
sk 23b44237d8 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-06 11:32:29 +08:00
sk d6cb1f3266 兼容以0开头的手机号登录 2024-05-06 11:19:41 +08:00
sk 404017c33e no message 2024-05-06 11:19:41 +08:00
kxdd 83f571b543 Merge branch 'dev_pigbank' into develop 2024-05-06 10:31:22 +08:00
kxdd 84373d1297 【对局失败后存钱罐内没有存钱】https://www.tapd.cn/31044302/bugtrace/bugs/view?bug_id=1131044302001000241 2024-05-06 10:30:45 +08:00
kxdd 016ea68379 Merge branch 'dev_pigbank' into develop 2024-04-30 18:45:34 +08:00
kxdd 7c689dc6ec 存钱罐修改 2024-04-30 18:44:51 +08:00
sk 1979637197 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-30 17:45:51 +08:00
kxdd eaf8dd734f Merge branch 'dev_pigbank' into develop 2024-04-30 17:33:39 +08:00
kxdd 72b5f14b62 存钱罐修改 2024-04-30 17:32:57 +08:00
kxdd 909523ec3e Merge branch 'dev_pigbank' into develop
# Conflicts:
#	common/constant.go
#	data/DB_Pigbank_Prop.dat
#	data/DB_Pigbank_Prop.json
#	gamesrv/tienlen/playerdata_tienlen.go
#	protocol/server/pbdata.pb.go
#	xlsx/DB_Pigbank_Prop.xls
存钱罐功能
2024-04-30 14:22:18 +08:00
kxdd b10cf493b5 存钱罐添加日志 2024-04-30 14:05:36 +08:00
kxdd c2d7c1bfb5 存钱罐功能 2024-04-30 09:45:40 +08:00
sk f4205e72ac no message 2024-04-29 18:20:38 +08:00
sk bd92567666 解决冲突 2024-04-29 17:20:53 +08:00
sk 1231f711dc xlsx工具支持索引 2024-04-29 16:50:35 +08:00
sk c6c507ecb0 修复手机号登录问题 2024-04-29 16:47:05 +08:00
kxdd a01eba7242 Merge branch 'dev_timeitem' into develop 2024-04-29 11:40:17 +08:00
kxdd 2fbb9d0d0e 记牌器时效道具修改 2024-04-29 11:39:50 +08:00
lihailiang f7ae511332 存钱罐数据添加 2024-04-29 11:33:53 +08:00
lihailiang c65946aec0 Merge branch 'dev_timeitem' into develop 2024-04-29 10:10:06 +08:00
kxdd 4b04e554f8 记牌器配置修改 2024-04-29 09:54:43 +08:00
kxdd a2bfdd1d01 合并代码 2024-04-28 18:30:00 +08:00
lihailiang 03a67c3778 Merge branch 'dev_timeitem' into develop
# Conflicts:
#	common/constant.go
#	data/DB_GameItem.dat
#	protocol/server/pbdata.pb.go
#	protocol/server/server.pb.go
#	tools/xlsx2binary/agc.go
#	xlsx/DB_GameItem.xlsx
2024-04-28 18:23:13 +08:00
sk cad0f24bd8 机器人比赛场数量参数 2024-04-28 18:02:16 +08:00
kxdd a7ec02b38e 1.记牌器道具时限修改
2.存钱罐数据创建
2024-04-28 17:36:08 +08:00
kxdd a6a255f04b 1.记牌器时限修改
2.存钱罐配置数据
2024-04-28 17:34:49 +08:00
by 95701368a6 上传服务器脚本提交 2024-04-28 17:30:08 +08:00
sk 0cc96a5747 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-28 16:47:49 +08:00
sk 3bfcaaf110 修复钻石账变记录 2024-04-28 16:47:41 +08:00
by cfa469a02e log修改 2024-04-28 15:51:13 +08:00
sk 0da4aa2f09 evt_online临时删除 2024-04-28 15:28:55 +08:00
sk cc4125fee5 机器人互动表情 2024-04-28 14:59:13 +08:00
sk 2e6928f317 添加渠道信息 2024-04-28 11:45:43 +08:00
sk 4d9fee9b11 机器人互动表情 2024-04-28 11:34:37 +08:00
sk 864074490b 忽略xlsx2binary 2024-04-26 18:22:42 +08:00
kxdd ec0d303cb6 道具时限类道具修改 2024-04-26 17:46:21 +08:00
sk 23621acfbf 提交public仓库 2024-04-26 17:11:41 +08:00
sk 05844ea78d update 2024-04-26 16:36:56 +08:00
sk 4ac9879f72 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-26 16:32:49 +08:00
by 42302a32a5 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-05-06 00:00:47 +08:00
by 948c209a2c 周卡礼包 2024-05-06 00:00:35 +08:00
sk 853e7771f9 登录返回服务器时间戳 2024-04-26 16:32:40 +08:00
sk ebad03fce1 创建订单添加渠道 2024-04-26 15:25:19 +08:00
sk 40822ad4d0 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-26 15:11:01 +08:00
by 0595d999f4 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-04-26 14:58:36 +08:00
by 06d5ac5fad 周卡礼包需求修改 2024-04-26 14:58:31 +08:00
by 7fb33896de 周卡礼包需求修改 2024-04-26 14:57:26 +08:00
sk 2fe90f46a5 游戏牌局统计 2024-04-26 14:51:37 +08:00
sk fe0904c4fb 破产消息添加渠道 2024-04-26 13:51:36 +08:00
sk c40b779c39 成就任务 2024-04-26 13:40:47 +08:00
sk 7c11fc955b Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-26 11:42:03 +08:00
sk a6e65f236f 成就任务 2024-04-26 11:18:56 +08:00
by feeb04a7ed 周卡礼包 2024-04-26 10:21:36 +08:00
lihailiang e2e2a446bf tienlen时效类道具控制 2024-04-26 10:08:55 +08:00
sk b6aa7bec3c 任务系统优化 2024-04-26 09:44:25 +08:00
lihailiang 1efb19dce6 添加时效类道具功能 2024-04-25 17:41:53 +08:00
sk 2e0e6c72d0 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-25 16:44:11 +08:00
sk 77fbd7dfba 拉霸数据统计 2024-04-25 16:41:53 +08:00
by 60145c2325 log类型修改 2024-04-25 15:29:14 +08:00
sk ec635783c4 evt_online添加渠道信息 2024-04-25 13:34:23 +08:00
by f54082163b 周卡礼包 2024-04-25 11:45:32 +08:00
by d8e03cf53d 删除周卡测试代码 2024-04-25 11:40:17 +08:00
by aa79d36e9f Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-04-25 11:39:29 +08:00
by cc56a160af 周卡礼包 2024-04-25 11:39:24 +08:00
sk aa3a713699 evt_online添加渠道信息 2024-04-25 09:46:57 +08:00
sk 0cba0b0b25 Merge branch 'develop' into tongji 2024-04-24 17:22:25 +08:00
sk 5be9e98ae0 update_public.bat 2024-04-24 16:57:28 +08:00
sk 4e32e4861e no message 2024-04-24 16:49:54 +08:00
sk 88f9723217 update 2024-04-24 16:41:44 +08:00
sk 65d206eae0 水池添加调节赔率和新手池 2024-04-24 16:26:57 +08:00
sk 82b406cbcd 水池添加调节赔率和新手池 2024-04-24 16:26:35 +08:00
sk f81781f92d update 2024-04-24 16:02:23 +08:00
sk 456744f16a update data 2024-04-24 15:57:06 +08:00
sk b5c44ff2bb 复仇者联盟 2024-04-24 15:54:49 +08:00
sk 3a5039727b 优化账号表 2024-04-23 15:10:48 +08:00
WIN-20240218AEU\Administrator ebd1653b86 log修改 2024-04-23 15:08:43 +08:00
sk 7ecebe62e6 账号表补充渠道信息 2024-04-23 14:28:13 +08:00
by b15f3a250b git public 提交 2024-04-23 11:39:24 +08:00
by dc8b4a5baa proto编辑提交 2024-04-23 10:30:53 +08:00
by 9f4d1089cb Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-04-23 10:29:21 +08:00
by 91ec9259bb 玩家等级排行榜 2024-04-23 09:58:57 +08:00
sk 12383a1e20 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-23 09:05:26 +08:00
sk 0de01b7eaa 复仇者联盟 2024-04-22 18:39:27 +08:00
kxdd 5c37af3fe1 添加记牌器 2024-04-22 18:36:04 +08:00
211 changed files with 11723 additions and 19421 deletions

1
.gitignore vendored
View File

@ -20,6 +20,7 @@ _cgo_gotypes.go
_cgo_export.* _cgo_export.*
_testmain.go _testmain.go
tools/xlsx2binary/agc.go
*.exe *.exe
*.exe~ *.exe~

View File

@ -313,6 +313,9 @@ const (
GainWay_TaskReward = 62 //62.任务奖励 GainWay_TaskReward = 62 //62.任务奖励
GainWay_Interact = 63 //63.房间内互动效果 GainWay_Interact = 63 //63.房间内互动效果
GainWay_Collect = 64 //64.集卡活动 GainWay_Collect = 64 //64.集卡活动
GainWay_WeekCardAward = 65 //65.周卡每日奖励
GainWay_PigrankTakeCoin = 66 //66.存钱罐领取耗费钻石
GainWay_PigrankGainCoin = 67 //66.存钱罐打开获取金币
) )
// 后台选择 金币变化类型 的充值 类型id号起始 // 后台选择 金币变化类型 的充值 类型id号起始
@ -612,6 +615,10 @@ const (
ItemIDWeekScore = 100004 // 周活跃积分 ItemIDWeekScore = 100004 // 周活跃积分
ItemIDGiftBox = 50001 // 碎片礼盒 ItemIDGiftBox = 50001 // 碎片礼盒
ItemIDCollectBox = 50002 // 集卡礼盒 ItemIDCollectBox = 50002 // 集卡礼盒
ItemIDLike = 100007 // 点赞
ItemIDCoffee = 100008 // 咖啡
ItemIDBucket = 100009 // 水桶
ItemIDSlippers = 100010 // 拖鞋
) )
func ToItemId(id int32) int32 { func ToItemId(id int32) int32 {
@ -638,6 +645,7 @@ const (
ItemTypeVipExp = 10 //VIP经验 ItemTypeVipExp = 10 //VIP经验
ItemTypeShopScore = 11 //积分 ItemTypeShopScore = 11 //积分
ItemTypeInteract = 12 // 互动表情 ItemTypeInteract = 12 // 互动表情
ItemTypeExpireTime = 15 // 时效类道具
) )
func GetKeyNoviceGameId(gameId int) string { func GetKeyNoviceGameId(gameId int) string {
@ -718,6 +726,7 @@ const (
TaskActivityTypeWeek = 2 // 每周任务 TaskActivityTypeWeek = 2 // 每周任务
TaskActivityTypeNovice = 3 // 新手任务 TaskActivityTypeNovice = 3 // 新手任务
TaskActivityTypeInvite = 4 // 邀请任务 TaskActivityTypeInvite = 4 // 邀请任务
TaskActivityTypeAchieve = 5 // 成就任务
) )
const HeadRange = 3 // 机器人头像id范围 const HeadRange = 3 // 机器人头像id范围

View File

@ -76,4 +76,30 @@
9ѓр<D193><18> ПЕџџџџ <20><>пРJ(<28>ЈжЙ0d8 @<40>џџџџџџџџHрљџџџџџџџP 9ѓр<D193><18> ПЕџџџџ <20><>пРJ(<28>ЈжЙ0d8 @<40>џџџџџџџџHрљџџџџџџџP
:єр<D194><18>АЄМ<D084>§џџџ <20>алУє(<28>ШЏ %0d8 @<40>џџџџџџџџHрљџџџџџџџP :єр<D194><18>АЄМ<D084>§џџџ <20>алУє(<28>ШЏ %0d8 @<40>џџџџџџџџHрљџџџџџџџP
;ѕр<D195><18>Е­Йёџџџ <20><>ЪвЦ(<28>шэЁК0d8 @<40>џџџџџџџџHрљџџџџџџџP ;ѕр<D195><18>Е­Йёџџџ <20><>ЪвЦ(<28>шэЁК0d8 @<40>џџџџџџџџHрљџџџџџџџP
;öà–€À×µåÅÿÿÿ €À¨Êš:(€ ·‡é0d8 @œÿÿÿÿÿÿÿÿHàùÿÿÿÿÿÿÿP ;öà–€À×µåÅÿÿÿ €À¨Êš:(€ ·‡é0d8 @œÿÿÿÿÿÿÿÿHàùÿÿÿÿÿÿÿP
ÑÛ·€›îÀ–± €ÚÄ XÈ` ÝŒ
ÒÛ·€ŽÎ€áë €„¯_XÈ`À¤ÿ
ÓÛ·€Æ†<C386>€åšw €”ëÜ`À¶üš
ÔÛ·€Œ<E282AC>ž€Êµî €¨Ö¹`€íøµ
᩸€›îÀ–± €ÚÄ XÈ` ÝŒ
⩸€ŽÎ€áë €„¯_XÈ`À¤ÿ
㩸€Æ†<C386>€åšw €”ëÜ`À¶üš
䩸€Œ<E282AC>ž€Êµî €¨Ö¹`€íøµ
ñ÷¸€›îÀ–± €ÚÄ XÈ` ÝŒ
ò÷¸€ŽÎ€áë €„¯_XÈ`À¤ÿ
ó÷¸€Æ†<C386>€åšw €”ëÜ`À¶üš
ô÷¸€Œ<E282AC>ž€Êµî €¨Ö¹`€íøµ
<08>ƹ€›îÀ–± €„¯_XÈ` ÝŒ
‚ƹ€Æ†<C386>€åšw €”ëÜ`À¶üš
ƒÆ¹€Œ<E282AC>ž€Êµî €¨Ö¹`€íøµ
‘”º€›îÀ–± €„¯_XÈ` ÝŒ
’”º€Æ†<C386>€åšw €”ëÜ`À¶üš
“”º€Œ<E282AC>ž€Êµî €¨Ö¹`€íøµ
¡âº€›îÀ–± €ÚÄ XÈ` ÝŒ
¢âº€ŽÎ€áë €„¯_XÈ`À¤ÿ
£âº€Æ†<C386>€åšw €”ëÜ`À¶üš
¤âº€Œ<E282AC>ž€Êµî €¨Ö¹`€íøµ
±°»€›îÀ–± €ÚÄ XÈ` ÝŒ
²°»€ŽÎ€áë €„¯_XÈ`À¤ÿ
³°»€Æ†<C386>€åšw €”ëÜ`À¶üš
´°»€Œ<E282AC>ž€Êµî €¨Ö¹`€íøµ

View File

@ -857,6 +857,214 @@
"LowerOdds": -100, "LowerOdds": -100,
"LowerOddsMax": -800, "LowerOddsMax": -800,
"ProfitRate": 20 "ProfitRate": 20
},
{
"Id": 3010001,
"InitValue": 6000000,
"LowerLimit": 5000000,
"UpperLimit": 20000000,
"CtrlRate": 200,
"InitNovicValue": 6500000
},
{
"Id": 3010002,
"InitValue": 60000000,
"LowerLimit": 50000000,
"UpperLimit": 200000000,
"CtrlRate": 200,
"InitNovicValue": 65000000
},
{
"Id": 3010003,
"InitValue": 300000000,
"LowerLimit": 250000000,
"UpperLimit": 1000000000,
"CtrlRate": 200,
"InitNovicValue": 325000000
},
{
"Id": 3010004,
"InitValue": 600000000,
"LowerLimit": 500000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 650000000
},
{
"Id": 3020001,
"InitValue": 6000000,
"LowerLimit": 5000000,
"UpperLimit": 20000000,
"CtrlRate": 200,
"InitNovicValue": 6500000
},
{
"Id": 3020002,
"InitValue": 60000000,
"LowerLimit": 50000000,
"UpperLimit": 200000000,
"CtrlRate": 200,
"InitNovicValue": 65000000
},
{
"Id": 3020003,
"InitValue": 300000000,
"LowerLimit": 250000000,
"UpperLimit": 1000000000,
"CtrlRate": 200,
"InitNovicValue": 325000000
},
{
"Id": 3020004,
"InitValue": 600000000,
"LowerLimit": 500000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 650000000
},
{
"Id": 3030001,
"InitValue": 6000000,
"LowerLimit": 5000000,
"UpperLimit": 20000000,
"CtrlRate": 200,
"InitNovicValue": 6500000
},
{
"Id": 3030002,
"InitValue": 60000000,
"LowerLimit": 50000000,
"UpperLimit": 200000000,
"CtrlRate": 200,
"InitNovicValue": 65000000
},
{
"Id": 3030003,
"InitValue": 300000000,
"LowerLimit": 250000000,
"UpperLimit": 1000000000,
"CtrlRate": 200,
"InitNovicValue": 325000000
},
{
"Id": 3030004,
"InitValue": 600000000,
"LowerLimit": 500000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 650000000
},
{
"Id": 3040001,
"InitValue": 6000000,
"LowerLimit": 5000000,
"UpperLimit": 200000000,
"CtrlRate": 200,
"InitNovicValue": 6500000
},
{
"Id": 3040002,
"InitValue": 300000000,
"LowerLimit": 250000000,
"UpperLimit": 1000000000,
"CtrlRate": 200,
"InitNovicValue": 325000000
},
{
"Id": 3040003,
"InitValue": 600000000,
"LowerLimit": 500000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 650000000
},
{
"Id": 3050001,
"InitValue": 6000000,
"LowerLimit": 5000000,
"UpperLimit": 200000000,
"CtrlRate": 200,
"InitNovicValue": 6500000
},
{
"Id": 3050002,
"InitValue": 300000000,
"LowerLimit": 250000000,
"UpperLimit": 1000000000,
"CtrlRate": 200,
"InitNovicValue": 325000000
},
{
"Id": 3050003,
"InitValue": 600000000,
"LowerLimit": 500000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 650000000
},
{
"Id": 3060001,
"InitValue": 6000000,
"LowerLimit": 5000000,
"UpperLimit": 20000000,
"CtrlRate": 200,
"InitNovicValue": 6500000
},
{
"Id": 3060002,
"InitValue": 60000000,
"LowerLimit": 50000000,
"UpperLimit": 200000000,
"CtrlRate": 200,
"InitNovicValue": 65000000
},
{
"Id": 3060003,
"InitValue": 300000000,
"LowerLimit": 250000000,
"UpperLimit": 1000000000,
"CtrlRate": 200,
"InitNovicValue": 325000000
},
{
"Id": 3060004,
"InitValue": 600000000,
"LowerLimit": 500000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 650000000
},
{
"Id": 3070001,
"InitValue": 6000000,
"LowerLimit": 5000000,
"UpperLimit": 20000000,
"CtrlRate": 200,
"InitNovicValue": 6500000
},
{
"Id": 3070002,
"InitValue": 60000000,
"LowerLimit": 50000000,
"UpperLimit": 200000000,
"CtrlRate": 200,
"InitNovicValue": 65000000
},
{
"Id": 3070003,
"InitValue": 300000000,
"LowerLimit": 250000000,
"UpperLimit": 1000000000,
"CtrlRate": 200,
"InitNovicValue": 325000000
},
{
"Id": 3070004,
"InitValue": 600000000,
"LowerLimit": 500000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 650000000
} }
] ]
} }

Binary file not shown.

File diff suppressed because it is too large Load Diff

BIN
data/DB_GiftCard.dat Normal file

Binary file not shown.

20
data/DB_GiftCard.json Normal file
View File

@ -0,0 +1,20 @@
{
"Arr": [
{
"Id": 1,
"ShopID": 970001,
"Name": "7日礼品卡",
"Rewards": {
"100001": 5000000,
"50001": 10
},
"DayRewards": {
"100001": 1000000
},
"Time": 7,
"Equity": [
0
]
}
]
}

View File

@ -0,0 +1,4 @@
 
 (
<18>チラ/ 2

View File

@ -0,0 +1,22 @@
{
"Arr": [
{
"Id": 1,
"BuyCountMin": 1,
"BuyCountMax": 1,
"CostDiamond": 30
},
{
"Id": 2,
"BuyCountMin": 2,
"BuyCountMax": 2,
"CostDiamond": 40
},
{
"Id": 3,
"BuyCountMin": 3,
"BuyCountMax": 99999999,
"CostDiamond": 50
}
]
}

4
data/DB_Pigbank_Prop.dat Normal file
View File

@ -0,0 +1,4 @@
 BankMaxCoinÀÓ
 WinCoinRate
 LoseCoinRate

19
data/DB_Pigbank_Prop.json Normal file
View File

@ -0,0 +1,19 @@
{
"Arr": [
{
"Id": 1,
"PorpName": "BankMaxCoin",
"PropValue": 15000000
},
{
"Id": 2,
"PorpName": "WinCoinRate",
"PropValue": 5
},
{
"Id": 3,
"PorpName": "LoseCoinRate",
"PropValue": 10
}
]
}

View File

@ -1,5 +1,5 @@
6Ó†Ô†Õ†Ö†׆"¡<>À„= 6Ó†Ô†Õ†Ö†׆"¡<>À„=
.к<EFBFBD>л<>и<>й<EFBFBD>"Ё<>Р<>= .и<EFBFBD>й<>к<>л<EFBFBD>"Ё<>Р<>=
Wг<EFBFBD>е<>к<>и<>й<>л<>д<>ж<>з<EFBFBD>" Ё<><10>­т Wд<EFBFBD>е<>ж<>з<>л<>г<>и<>й<>к<EFBFBD>" Ё<><10>­т
]з<EFBFBD>и<>й<>к<>л<>м<>д<>е<>г<>ж<EFBFBD>"Ђ<>є ]м<EFBFBD>д<>ж<>з<>и<>л<>г<>е<>й<>к<EFBFBD>"Ђ<>є

Binary file not shown.

View File

@ -2,6 +2,7 @@
"Arr": [ "Arr": [
{ {
"Id": 1, "Id": 1,
"Order": 1,
"ActivityType": 1, "ActivityType": 1,
"TaskType": 1, "TaskType": 1,
"TargetTimes": 1, "TargetTimes": 1,
@ -17,6 +18,7 @@
}, },
{ {
"Id": 2, "Id": 2,
"Order": 2,
"ActivityType": 1, "ActivityType": 1,
"TaskType": 2, "TaskType": 2,
"TargetTimes": 1, "TargetTimes": 1,
@ -32,6 +34,7 @@
}, },
{ {
"Id": 3, "Id": 3,
"Order": 3,
"ActivityType": 1, "ActivityType": 1,
"TaskType": 3, "TaskType": 3,
"TargetTimes": 1, "TargetTimes": 1,
@ -43,6 +46,7 @@
}, },
{ {
"Id": 4, "Id": 4,
"Order": 4,
"ActivityType": 1, "ActivityType": 1,
"TaskType": 4, "TaskType": 4,
"TargetTimes": 1, "TargetTimes": 1,
@ -55,6 +59,7 @@
}, },
{ {
"Id": 5, "Id": 5,
"Order": 5,
"ActivityType": 1, "ActivityType": 1,
"TaskType": 5, "TaskType": 5,
"TargetTimes": 10, "TargetTimes": 10,
@ -67,6 +72,7 @@
}, },
{ {
"Id": 6, "Id": 6,
"Order": 6,
"ActivityType": 1, "ActivityType": 1,
"TaskType": 6, "TaskType": 6,
"TargetTimes": 1, "TargetTimes": 1,
@ -79,6 +85,7 @@
}, },
{ {
"Id": 7, "Id": 7,
"Order": 1,
"ActivityType": 2, "ActivityType": 2,
"TaskType": 14, "TaskType": 14,
"TargetTimes": 200, "TargetTimes": 200,
@ -89,6 +96,7 @@
}, },
{ {
"Id": 8, "Id": 8,
"Order": 2,
"ActivityType": 2, "ActivityType": 2,
"TaskType": 14, "TaskType": 14,
"TargetTimes": 300, "TargetTimes": 300,
@ -99,6 +107,7 @@
}, },
{ {
"Id": 9, "Id": 9,
"Order": 3,
"ActivityType": 2, "ActivityType": 2,
"TaskType": 14, "TaskType": 14,
"TargetTimes": 400, "TargetTimes": 400,
@ -109,6 +118,7 @@
}, },
{ {
"Id": 10, "Id": 10,
"Order": 4,
"ActivityType": 2, "ActivityType": 2,
"TaskType": 14, "TaskType": 14,
"TargetTimes": 500, "TargetTimes": 500,
@ -119,6 +129,7 @@
}, },
{ {
"Id": 11, "Id": 11,
"Order": 5,
"ActivityType": 2, "ActivityType": 2,
"TaskType": 14, "TaskType": 14,
"TargetTimes": 600, "TargetTimes": 600,
@ -129,6 +140,7 @@
}, },
{ {
"Id": 12, "Id": 12,
"Order": 1,
"ActivityType": 3, "ActivityType": 3,
"TaskType": 10, "TaskType": 10,
"TargetTimes": 1, "TargetTimes": 1,
@ -140,6 +152,7 @@
}, },
{ {
"Id": 13, "Id": 13,
"Order": 2,
"ActivityType": 3, "ActivityType": 3,
"TaskType": 5, "TaskType": 5,
"TargetTimes": 10, "TargetTimes": 10,
@ -152,6 +165,7 @@
}, },
{ {
"Id": 14, "Id": 14,
"Order": 3,
"ActivityType": 3, "ActivityType": 3,
"TaskType": 11, "TaskType": 11,
"TargetTimes": 10000000, "TargetTimes": 10000000,
@ -162,6 +176,7 @@
}, },
{ {
"Id": 15, "Id": 15,
"Order": 4,
"ActivityType": 3, "ActivityType": 3,
"TaskType": 4, "TaskType": 4,
"TargetTimes": 10, "TargetTimes": 10,
@ -174,6 +189,7 @@
}, },
{ {
"Id": 16, "Id": 16,
"Order": 5,
"ActivityType": 3, "ActivityType": 3,
"TaskType": 16, "TaskType": 16,
"TargetTimes": 3, "TargetTimes": 3,
@ -185,9 +201,10 @@
}, },
{ {
"Id": 17, "Id": 17,
"Order": 1,
"ActivityType": 4, "ActivityType": 4,
"TaskType": 13, "TaskType": 13,
"TargetTimes": 1000, "TargetTimes": 10000,
"FinishTimes": 1, "FinishTimes": 1,
"Award": { "Award": {
"100001": 1000000, "100001": 1000000,
@ -196,9 +213,10 @@
}, },
{ {
"Id": 18, "Id": 18,
"Order": 2,
"ActivityType": 4, "ActivityType": 4,
"TaskType": 13, "TaskType": 13,
"TargetTimes": 10000, "TargetTimes": 50000,
"FinishTimes": 1, "FinishTimes": 1,
"Award": { "Award": {
"100001": 10000000, "100001": 10000000,
@ -207,9 +225,10 @@
}, },
{ {
"Id": 19, "Id": 19,
"Order": 3,
"ActivityType": 4, "ActivityType": 4,
"TaskType": 13, "TaskType": 13,
"TargetTimes": 20000, "TargetTimes": 200000,
"FinishTimes": 1, "FinishTimes": 1,
"Award": { "Award": {
"100001": 20000000, "100001": 20000000,
@ -218,14 +237,495 @@
}, },
{ {
"Id": 20, "Id": 20,
"Order": 4,
"ActivityType": 4, "ActivityType": 4,
"TaskType": 13, "TaskType": 13,
"TargetTimes": 50000, "TargetTimes": 1000000,
"FinishTimes": 1, "FinishTimes": 1,
"Award": { "Award": {
"100001": 50000000, "100001": 50000000,
"100002": 100 "100002": 100
} }
},
{
"Id": 10001,
"Order": 1,
"ActivityType": 5,
"TaskType": 11,
"TargetTimes": 100000000,
"FinishTimes": 1,
"Award": {
"100001": 1000000,
"100002": 10
},
"GameType": 1
},
{
"Id": 10002,
"Order": 7,
"ActivityType": 5,
"TaskType": 11,
"TargetTimes": 1000000000,
"FinishTimes": 1,
"Award": {
"100001": 2000000,
"100002": 20
},
"GameType": 1
},
{
"Id": 10003,
"Order": 13,
"ActivityType": 5,
"TaskType": 11,
"TargetTimes": 10000000000,
"FinishTimes": 1,
"Award": {
"100001": 3000000,
"100002": 30
},
"GameType": 1
},
{
"Id": 10004,
"Order": 19,
"ActivityType": 5,
"TaskType": 11,
"TargetTimes": 100000000000,
"FinishTimes": 1,
"Award": {
"100001": 5000000,
"100002": 50
},
"GameType": 1
},
{
"Id": 10005,
"Order": 25,
"ActivityType": 5,
"TaskType": 11,
"TargetTimes": 500000000000,
"FinishTimes": 1,
"Award": {
"100001": 10000000,
"100002": 100
},
"GameType": 1
},
{
"Id": 10006,
"Order": 31,
"ActivityType": 5,
"TaskType": 11,
"TargetTimes": 1000000000000,
"FinishTimes": 1,
"Award": {
"100001": 20000000,
"100002": 200
},
"GameType": 1
},
{
"Id": 20001,
"Order": 2,
"ActivityType": 5,
"TaskType": 5,
"TargetTimes": 100,
"FinishTimes": 1,
"Award": {
"100001": 1000000,
"100002": 10
},
"GameType": 1
},
{
"Id": 20002,
"Order": 8,
"ActivityType": 5,
"TaskType": 5,
"TargetTimes": 1000,
"FinishTimes": 1,
"Award": {
"100001": 2000000,
"100002": 20
},
"GameType": 1
},
{
"Id": 20003,
"Order": 14,
"ActivityType": 5,
"TaskType": 5,
"TargetTimes": 5000,
"FinishTimes": 1,
"Award": {
"100001": 3000000,
"100002": 30
},
"GameType": 1
},
{
"Id": 20004,
"Order": 20,
"ActivityType": 5,
"TaskType": 5,
"TargetTimes": 10000,
"FinishTimes": 1,
"Award": {
"100001": 5000000,
"100002": 50
},
"GameType": 1
},
{
"Id": 20005,
"Order": 26,
"ActivityType": 5,
"TaskType": 5,
"TargetTimes": 50000,
"FinishTimes": 1,
"Award": {
"100001": 10000000,
"100002": 100
},
"GameType": 1
},
{
"Id": 20006,
"Order": 32,
"ActivityType": 5,
"TaskType": 5,
"TargetTimes": 100000,
"FinishTimes": 1,
"Award": {
"100001": 20000000,
"100002": 200
},
"GameType": 1
},
{
"Id": 30001,
"Order": 3,
"ActivityType": 5,
"TaskType": 4,
"TargetTimes": 100,
"FinishTimes": 1,
"Award": {
"100001": 1000000,
"100002": 10
},
"GameType": 1
},
{
"Id": 30002,
"Order": 9,
"ActivityType": 5,
"TaskType": 4,
"TargetTimes": 1000,
"FinishTimes": 1,
"Award": {
"100001": 2000000,
"100002": 20
},
"GameType": 1
},
{
"Id": 30003,
"Order": 15,
"ActivityType": 5,
"TaskType": 4,
"TargetTimes": 5000,
"FinishTimes": 1,
"Award": {
"100001": 3000000,
"100002": 30
},
"GameType": 1
},
{
"Id": 30004,
"Order": 21,
"ActivityType": 5,
"TaskType": 4,
"TargetTimes": 10000,
"FinishTimes": 1,
"Award": {
"100001": 5000000,
"100002": 50
},
"GameType": 1
},
{
"Id": 30005,
"Order": 27,
"ActivityType": 5,
"TaskType": 4,
"TargetTimes": 50000,
"FinishTimes": 1,
"Award": {
"100001": 10000000,
"100002": 100
},
"GameType": 1
},
{
"Id": 30006,
"Order": 33,
"ActivityType": 5,
"TaskType": 4,
"TargetTimes": 100000,
"FinishTimes": 1,
"Award": {
"100001": 20000000,
"100002": 200
},
"GameType": 1
},
{
"Id": 40001,
"Order": 4,
"ActivityType": 5,
"TaskType": 6,
"TargetTimes": 100,
"FinishTimes": 1,
"Award": {
"100001": 1000000,
"100002": 10
},
"GameType": 1
},
{
"Id": 40002,
"Order": 10,
"ActivityType": 5,
"TaskType": 6,
"TargetTimes": 1000,
"FinishTimes": 1,
"Award": {
"100001": 2000000,
"100002": 20
},
"GameType": 1
},
{
"Id": 40003,
"Order": 16,
"ActivityType": 5,
"TaskType": 6,
"TargetTimes": 5000,
"FinishTimes": 1,
"Award": {
"100001": 3000000,
"100002": 30
},
"GameType": 1
},
{
"Id": 40004,
"Order": 22,
"ActivityType": 5,
"TaskType": 6,
"TargetTimes": 10000,
"FinishTimes": 1,
"Award": {
"100001": 5000000,
"100002": 50
},
"GameType": 1
},
{
"Id": 40005,
"Order": 28,
"ActivityType": 5,
"TaskType": 6,
"TargetTimes": 50000,
"FinishTimes": 1,
"Award": {
"100001": 10000000,
"100002": 100
},
"GameType": 1
},
{
"Id": 40006,
"Order": 34,
"ActivityType": 5,
"TaskType": 6,
"TargetTimes": 100000,
"FinishTimes": 1,
"Award": {
"100001": 20000000,
"100002": 200
},
"GameType": 1
},
{
"Id": 50001,
"Order": 5,
"ActivityType": 5,
"TaskType": 7,
"TargetTimes": 10,
"FinishTimes": 1,
"Award": {
"100001": 1000000,
"100002": 10
},
"Position": [
1,
1
]
},
{
"Id": 50002,
"Order": 11,
"ActivityType": 5,
"TaskType": 7,
"TargetTimes": 100,
"FinishTimes": 1,
"Award": {
"100001": 2000000,
"100002": 20
},
"Position": [
1,
1
]
},
{
"Id": 50003,
"Order": 17,
"ActivityType": 5,
"TaskType": 7,
"TargetTimes": 1000,
"FinishTimes": 1,
"Award": {
"100001": 3000000,
"100002": 30
},
"Position": [
1,
1
]
},
{
"Id": 50004,
"Order": 23,
"ActivityType": 5,
"TaskType": 7,
"TargetTimes": 10000,
"FinishTimes": 1,
"Award": {
"100001": 5000000,
"100002": 50
},
"Position": [
1,
1
]
},
{
"Id": 50005,
"Order": 29,
"ActivityType": 5,
"TaskType": 7,
"TargetTimes": 50000,
"FinishTimes": 1,
"Award": {
"100001": 10000000,
"100002": 100
},
"Position": [
1,
1
]
},
{
"Id": 50006,
"Order": 35,
"ActivityType": 5,
"TaskType": 7,
"TargetTimes": 100000,
"FinishTimes": 1,
"Award": {
"100001": 20000000,
"100002": 200
},
"Position": [
1,
1
]
},
{
"Id": 60001,
"Order": 6,
"ActivityType": 5,
"TaskType": 15,
"TargetTimes": 10,
"FinishTimes": 1,
"Award": {
"100001": 1000000,
"100002": 10
}
},
{
"Id": 60002,
"Order": 12,
"ActivityType": 5,
"TaskType": 15,
"TargetTimes": 20,
"FinishTimes": 1,
"Award": {
"100001": 2000000,
"100002": 20
}
},
{
"Id": 60003,
"Order": 18,
"ActivityType": 5,
"TaskType": 15,
"TargetTimes": 50,
"FinishTimes": 1,
"Award": {
"100001": 3000000,
"100002": 30
}
},
{
"Id": 60004,
"Order": 24,
"ActivityType": 5,
"TaskType": 15,
"TargetTimes": 100,
"FinishTimes": 1,
"Award": {
"100001": 5000000,
"100002": 50
}
},
{
"Id": 60005,
"Order": 30,
"ActivityType": 5,
"TaskType": 15,
"TargetTimes": 500,
"FinishTimes": 1,
"Award": {
"100001": 10000000,
"100002": 100
}
},
{
"Id": 60006,
"Order": 36,
"ActivityType": 5,
"TaskType": 15,
"TargetTimes": 1000,
"FinishTimes": 1,
"Award": {
"100001": 20000000,
"100002": 200
}
} }
] ]
} }

Binary file not shown.

View File

@ -23,11 +23,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
1 1
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -57,11 +52,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
2 2
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -91,11 +81,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
2 2
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -125,11 +110,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
3 3
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -159,11 +139,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
3 3
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -193,11 +168,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
4 4
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -227,11 +197,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
4 4
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -261,11 +226,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
3 3
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -295,11 +255,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
3 3
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -329,11 +284,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
4 4
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -363,11 +313,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
4 4
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -397,11 +342,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
0 0
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -431,11 +371,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
0 0
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -465,11 +400,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
0 0
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -499,11 +429,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
0 0
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -533,11 +458,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
0 0
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{ {
@ -567,11 +487,6 @@
], ],
"RewardOutlineID": [ "RewardOutlineID": [
0 0
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
] ]
}, },
{} {}

View File

@ -82,4 +82,39 @@ func init() {
} }
return nil return nil
}, broker.Queue(model.MQRankPlayerCoin), broker.DisableAutoAck(), rabbitmq.DurableQueue()) }, broker.Queue(model.MQRankPlayerCoin), broker.DisableAutoAck(), rabbitmq.DurableQueue())
//等级榜
mq.RegisterSubscriber(model.MQRankPlayerLevel, func(e broker.Event) (err error) {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.PlayerLevelInfo
err = json.Unmarshal(msg.Body, &log)
if err != nil {
return
}
logger.Logger.Tracef("SubscriberRankPlayerLevel: %+v", log)
core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error {
err := svc.RankPlayerLevelUpsert(&log)
if err != nil {
logger.Logger.Errorf("RankPlayerCoinUpsert err: %v", err)
}
return nil
}), true)
return
}
return nil
}, broker.Queue(model.MQRankPlayerLevel), broker.DisableAutoAck(), rabbitmq.DurableQueue())
} }

View File

@ -0,0 +1,72 @@
package svc
import (
"errors"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
var (
RankPlayerLevelDBName = "log"
RankPlayerLevelCollName = "log_rankplayerlevel"
RankPlayerLevelColError = errors.New("RankPlayerLevel collection open failed")
)
func RankPlayerLevelCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, RankPlayerLevelDBName)
if s != nil {
c, first := s.DB().C(RankPlayerLevelCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"exp"}, Background: true, Sparse: true})
}
return c
}
return nil
}
func RankPlayerLevelUpsert(args *model.PlayerLevelInfo) error {
cc := RankPlayerLevelCollection(args.Platform)
if cc == nil {
return RankPlayerLevelColError
}
_, err := cc.Upsert(bson.M{"snid": args.SnId}, args)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Error("RankPlayerCoinSvc.Upsert is err: ", err)
return err
}
return nil
}
type RankPlayerLevelSvc struct {
}
func (svc *RankPlayerLevelSvc) Upsert(args *model.PlayerLevelInfo, ret *bool) error {
err := RankPlayerLevelUpsert(args)
if err != nil {
return err
}
*ret = true
return nil
}
func (svc *RankPlayerLevelSvc) Find(args *model.FindPlayerLevelListArgs, ret *model.FindPlayerLevelListReply) error {
fc := RankPlayerLevelCollection(args.Platform)
if fc == nil {
return RankPlayerCoinColError
}
err := fc.Find(bson.M{}).Sort("-exp").Limit(model.GameParamData.RankPlayerLevelMaxNum).All(&ret.List)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Error("QueryMatchSeason is err: ", err)
return err
}
return nil
}
func init() {
rpc.Register(new(RankPlayerLevelSvc))
}

View File

@ -7,6 +7,7 @@ import (
"fmt" "fmt"
"io" "io"
"net/rpc" "net/rpc"
"strings"
"time" "time"
"github.com/globalsign/mgo" "github.com/globalsign/mgo"
@ -59,6 +60,11 @@ func (svc *AccountSvc) AccountIsExist(args *model.AccIsExistArg, ret *model.AccR
} }
acc := &model.Account{} acc := &model.Account{}
defer func() {
// 修改旧数据
// 补充渠道信息
svc.setParam(acc)
}()
switch args.LoginType { switch args.LoginType {
case common.LoginTypeGuest: case common.LoginTypeGuest:
@ -103,10 +109,30 @@ func (svc *AccountSvc) AccountIsExist(args *model.AccIsExistArg, ret *model.AccR
err := caccounts.Find(bson.M{"tel": args.Tel, "tagkey": args.TagKey}).One(acc) err := caccounts.Find(bson.M{"tel": args.Tel, "tagkey": args.TagKey}).One(acc)
if err != nil { if err != nil {
if errors.Is(err, mgo.ErrNotFound) { if errors.Is(err, mgo.ErrNotFound) {
ret.Tag = common.LoginNew // 兼容8550开头的手机号,8550和855算同一个区号
return nil if strings.HasPrefix(args.Tel, "855") {
tel := make([]byte, len(args.Tel)+1)
copy(tel, "8550")
copy(tel[4:], args.Tel[3:])
err = caccounts.Find(bson.M{"tel": string(tel), "tagkey": args.TagKey}).One(acc)
if err != nil {
if errors.Is(err, mgo.ErrNotFound) {
ret.Tag = common.LoginNew
return nil
} else {
return err
}
} else {
acc.Tel = args.Tel
caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"tel", args.Tel}}}})
}
} else {
ret.Tag = common.LoginNew
return nil
}
} else {
return err
} }
return err
} }
if args.CodeValid { if args.CodeValid {
@ -229,6 +255,35 @@ func (svc *AccountSvc) AccountIsExist(args *model.AccIsExistArg, ret *model.AccR
return nil return nil
} }
func (svc *AccountSvc) setParam(acc *model.Account) {
if acc == nil || (acc.Channel != "" && acc.Channel != "0") {
return
}
c := PlayerDataCollection(acc.Platform)
if c == nil {
return
}
p := new(model.PlayerData)
err := c.Find(bson.M{"snid": acc.SnId}).One(p)
if err != nil {
logger.Logger.Errorf("setChannel error:%v", err)
return
}
c = AccountCollection(acc.Platform)
if c == nil {
return
}
acc.Channel = p.Channel
if acc.Channel != "" {
err = c.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"channel", acc.Channel}}}})
if err != nil {
logger.Logger.Errorf("setChannel error:%v", err)
}
}
}
func (svc *AccountSvc) AccountTelIsRegiste(args *model.AccIsExistArg, exist *bool) error { func (svc *AccountSvc) AccountTelIsRegiste(args *model.AccIsExistArg, exist *bool) error {
caccounts := AccountCollection(args.Platform) caccounts := AccountCollection(args.Platform)
if caccounts != nil { if caccounts != nil {
@ -446,22 +501,22 @@ func (svc *AccountSvc) EditAccountPwd(acc *model.Account, ret *model.AccRet) err
return caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"backpassword", acc.TelPassWord}, {"telpassword", hashsum}}}}) return caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"backpassword", acc.TelPassWord}, {"telpassword", hashsum}}}})
} }
func (svc *AccountSvc) ResetBackAccountPwd(args *model.AccIdArg, ret *model.AccRet) error { //func (svc *AccountSvc) ResetBackAccountPwd(args *model.AccIdArg, ret *model.AccRet) error {
caccounts := AccountCollection(args.Platform) // caccounts := AccountCollection(args.Platform)
if caccounts == nil { // if caccounts == nil {
return ErrAccDBNotOpen // return ErrAccDBNotOpen
} // }
//
var acc model.Account // var acc model.Account
err := caccounts.Find(bson.M{"_id": bson.ObjectIdHex(args.AccId)}).One(&acc) // err := caccounts.Find(bson.M{"_id": bson.ObjectIdHex(args.AccId)}).One(&acc)
if err != nil { // if err != nil {
return err // return err
} // }
if len(acc.BackPassWord) > 0 { // if len(acc.BackPassWord) > 0 {
return caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"telpassword", acc.BackPassWord}}}}) // return caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"telpassword", acc.BackPassWord}}}})
} // }
return nil // return nil
} //}
/* /*
* 修改帐号密码 * 修改帐号密码
@ -506,7 +561,7 @@ func (svc *AccountSvc) UpdateAccountPlatformInfo(acc *model.Account, ret *model.
return caccounts.Update(bson.M{"_id": acc.AccountId}, return caccounts.Update(bson.M{"_id": acc.AccountId},
bson.D{{"$set", bson.M{"platform": acc.Platform, bson.D{{"$set", bson.M{"platform": acc.Platform,
"channel": acc.Channel, "promoter": acc.Promoter, "inviterid": acc.InviterId, "packegetag": acc.PackegeTag, "promotertree": acc.PromoterTree}}}) "channel": acc.Channel, "packegetag": acc.PackegeTag}}})
} }
func (svc *AccountSvc) GetRobotAccounts(limit int, accs *[]model.Account) error { func (svc *AccountSvc) GetRobotAccounts(limit int, accs *[]model.Account) error {

View File

@ -147,8 +147,8 @@ func (svc *PlayerDataSvc) GetPlayerData(args *model.GetPlayerDataArgs, ret *mode
name = "Guest" name = "Guest"
} }
pd = model.NewPlayerData(args.Acc, name, id, a.Channel, a.Platform, a.Promoter, a.InviterId, a.PromoterTree, a.Params, pd = model.NewPlayerData(args.Acc, name, id, a.Channel, a.Platform, a.Params,
a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.SubPromoter, a.TagKey, a.AccountType) a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.TagKey, a.AccountType)
if pd != nil { if pd != nil {
err = cplayerdata.Insert(pd) err = cplayerdata.Insert(pd)
if err != nil { if err != nil {
@ -222,8 +222,8 @@ func (svc *PlayerDataSvc) CreatePlayerDataByThird(args *model.CreatePlayer, ret
} }
var dataParams model.PlayerParams var dataParams model.PlayerParams
json.Unmarshal([]byte(a.Params), &dataParams) json.Unmarshal([]byte(a.Params), &dataParams)
pd = model.NewPlayerDataThird(acc, name, args.HeadUrl, id, a.Channel, a.Platform, a.Promoter, a.InviterId, pd = model.NewPlayerDataThird(acc, name, args.HeadUrl, id, a.Channel, a.Platform, a.Params,
a.PromoterTree, a.Params, a.Tel, a.PackegeTag, dataParams.Ip, a.SubPromoter, a.TagKey, a.AccountType, a.DeviceOs) a.Tel, a.PackegeTag, dataParams.Ip, a.TagKey, a.AccountType, a.DeviceOs)
if pd != nil { if pd != nil {
err = cplayerdata.Insert(pd) err = cplayerdata.Insert(pd)
if err != nil { if err != nil {
@ -292,9 +292,8 @@ func (svc *PlayerDataSvc) CreatePlayerDataOnRegister(args *model.PlayerDataArg,
} }
var dataParams model.PlayerParams var dataParams model.PlayerParams
json.Unmarshal([]byte(a.Params), &dataParams) json.Unmarshal([]byte(a.Params), &dataParams)
pd = model.NewPlayerData(acc, name, id, a.Channel, a.Platform, a.Promoter, a.InviterId, pd = model.NewPlayerData(acc, name, id, a.Channel, a.Platform, a.Params, a.Tel, a.PackegeTag,
a.PromoterTree, a.Params, a.Tel, a.PackegeTag, dataParams.Ip, int64(args.AddCoin), dataParams.Ip, int64(args.AddCoin), "", a.DeviceInfo, a.TagKey, a.AccountType)
"", a.DeviceInfo, a.SubPromoter, a.TagKey, a.AccountType)
pd.HeadUrl = args.HeadUrl pd.HeadUrl = args.HeadUrl
if pd != nil { if pd != nil {
err = cplayerdata.Insert(pd) err = cplayerdata.Insert(pd)
@ -342,8 +341,8 @@ func (svc *PlayerDataSvc) GetPlayerDataBySnId(args *model.GetPlayerDataBySnIdArg
name = "Guest" name = "Guest"
} }
pd := model.NewPlayerData(a.AccountId.Hex(), name, a.SnId, a.Channel, a.Platform, a.Promoter, a.InviterId, a.PromoterTree, a.Params, pd := model.NewPlayerData(a.AccountId.Hex(), name, a.SnId, a.Channel, a.Platform, a.Params,
a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.SubPromoter, a.TagKey, a.AccountType) a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.TagKey, a.AccountType)
if pd != nil { if pd != nil {
err = cplayerdata.Insert(pd) err = cplayerdata.Insert(pd)
if err != nil { if err != nil {

View File

@ -2987,3 +2987,32 @@ func GetASliceInt32NotInB(a []int32, b []int32) []int32 {
return c return c
} }
func IsTwo(a []int32) bool {
if len(a) != 1 {
return false
}
return Value(a[0]) == 12 // 2
}
// IsBomb 是否炸弹
// isClass 是否经典版
func IsBomb(a []int32, isClass bool) bool {
var n int
var has bool
if isClass {
has, n = RulePopEnable(a)
} else {
has, n = RulePopEnable_yl(a)
}
if !has {
return false
}
switch n {
case Straight_Twin, Four_Bomb:
return true
}
return false
}

View File

@ -178,63 +178,52 @@ func (this *CSForceStartHandler) Process(s *netlib.Session, packetid int, data i
return nil return nil
} }
//type CSPlayerSwitchFlagPacketFactory struct { type CSPlayerSwitchFlagPacketFactory struct {
//} }
//type CSPlayerSwitchFlagHandler struct { type CSPlayerSwitchFlagHandler struct {
//} }
//
//func (this *CSPlayerSwitchFlagPacketFactory) CreatePacket() interface{} { func (this *CSPlayerSwitchFlagPacketFactory) CreatePacket() interface{} {
// pack := &gamehall.CSPlayerSwithFlag{} pack := &gamehall.CSPlayerSwithFlag{}
// return pack return pack
//} }
//
//func (this *CSPlayerSwitchFlagHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { func (this *CSPlayerSwitchFlagHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
// logger.Logger.Trace("CSPlayerSwitchFlagHandler Process recv ", data) logger.Logger.Trace("CSPlayerSwitchFlagHandler Process recv ", data)
// if msg, ok := data.(*gamehall.CSPlayerSwithFlag); ok { if msg, ok := data.(*gamehall.CSPlayerSwithFlag); ok {
// p := base.PlayerMgrSington.GetPlayer(sid) p := base.PlayerMgrSington.GetPlayer(sid)
// if p == nil { if p == nil {
// logger.Logger.Warn("CSPlayerSwitchFlagHandler p == nil") logger.Logger.Warn("CSPlayerSwitchFlagHandler p == nil")
// return nil return nil
// } }
// flag := int(msg.GetFlag()) flag := int(msg.GetFlag())
// //flag = 1 << uint(flag) logger.Logger.Trace("CSPlayerSwitchFlagHandler Process recv SnId(%v) Mark is %v", p.SnId, msg.GetMark())
// //if msg.Mark != nil { if msg.GetMark() == 0 { //0取消状态 1设置状态
// logger.Logger.Trace("CSPlayerSwitchFlagHandler Process recv SnId(%v) Mark is %v", p.SnId, msg.GetMark()) oldFlag := p.GetFlag()
// if msg.GetMark() == 0 { //0取消状态 1设置状态 if p.IsMarkFlag(flag) {
// oldFlag := p.GetFlag() p.UnmarkFlag(flag)
// if p.IsMarkFlag(flag) { }
// p.UnmarkFlag(flag) if flag == base.PlayerState_Leave {
// } if p.GetScene() != nil {
// if flag == base.PlayerState_Leave { //重置下房间状态
// if p.GetScene() != nil { p.GetScene().PlayerReturn(p, true)
// //重置下房间状态 }
// p.GetScene().PlayerReturn(p, true) }
// } if oldFlag != p.GetFlag() {
// } p.SyncFlag()
// if oldFlag != p.GetFlag() { }
// p.SyncFlag() } else { //设置状态
// } if flag == base.PlayerState_Leave {
// } else { //设置状态 p.ActiveLeave = false //被动暂离
// if flag == base.PlayerState_Leave { }
// p.ActiveLeave = false //被动暂离 if !p.IsMarkFlag(flag) {
// if p.GetScene() != nil { p.MarkFlag(flag)
// //todo dev fish 字游戏暂时被删除了 所以这里先注释掉 p.SyncFlag()
// //if p.GetScene().gameId == common.GameId_HFishing || p.GetScene().gameId == common.GameId_LFishing || }
// // p.GetScene().gameId == common.GameId_RFishing || p.GetScene().gameId == common.GameId_DFishing || }
// // p.GetScene().gameId == common.GameId_NFishing || p.GetScene().gameId == common.GameId_TFishing { }
// // p.GetScene().sp.OnPlayerOp(p.GetScene(), p, FishingPlayerOpLeave, []int64{}) return nil
// //} }
// }
// }
// if !p.IsMarkFlag(flag) {
// p.MarkFlag(flag)
// p.SyncFlag()
// }
// }
// //}
// }
// return nil
//}
func CSRoomEvent(s *netlib.Session, packetid int, data interface{}, sid int64) error { func CSRoomEvent(s *netlib.Session, packetid int, data interface{}, sid int64) error {
logger.Logger.Tracef("CSRoomEvent %v", data) logger.Logger.Tracef("CSRoomEvent %v", data)
@ -315,9 +304,9 @@ func init() {
common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_FORCESTART), &CSForceStartHandler{}) common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_FORCESTART), &CSForceStartHandler{})
netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_FORCESTART), &CSForceStartPacketFactory{}) netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_FORCESTART), &CSForceStartPacketFactory{})
// 同步玩家状态 // 同步玩家状态,如暂离状态取消
//common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_PLAYER_SWITCHFLAG), &CSPlayerSwitchFlagHandler{}) common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_PLAYER_SWITCHFLAG), &CSPlayerSwitchFlagHandler{})
//netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_PLAYER_SWITCHFLAG), &CSPlayerSwitchFlagPacketFactory{}) netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_PLAYER_SWITCHFLAG), &CSPlayerSwitchFlagPacketFactory{})
// 房间事件 // 房间事件
common.Register(int(gamehall.GameHallPacketID_PACKET_CSRoomEvent), gamehall.CSRoomEvent{}, CSRoomEvent) common.Register(int(gamehall.GameHallPacketID_PACKET_CSRoomEvent), gamehall.CSRoomEvent{}, CSRoomEvent)

View File

@ -427,7 +427,7 @@ func (this *SceneStateAvengersStart) OnPlayerOp(s *base.Scene, p *base.Player, o
//水池设置 //水池设置
coinPoolSetting := base.CoinPoolMgr.GetCoinPoolSetting(sceneEx.Platform, sceneEx.GetGameFreeId(), sceneEx.GroupId) coinPoolSetting := base.CoinPoolMgr.GetCoinPoolSetting(sceneEx.Platform, sceneEx.GetGameFreeId(), sceneEx.GroupId)
//baseRate := coinPoolSetting.GetBaseRate() //基础赔率 //baseRate := coinPoolSetting.GetBaseRate() //基础赔率
ctroRate := 500 //调节赔率 暗税系数 ctroRate := coinPoolSetting.GetCtrlRate() //调节赔率 暗税系数
//if baseRate >= 10000 || baseRate <= 0 || ctroRate < 0 || ctroRate >= 1000 || baseRate+ctroRate > 9900 { //if baseRate >= 10000 || baseRate <= 0 || ctroRate < 0 || ctroRate >= 1000 || baseRate+ctroRate > 9900 {
// logger.Logger.Warnf("AvengersErrorBaseRate [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, baseRate, ctroRate) // logger.Logger.Warnf("AvengersErrorBaseRate [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, baseRate, ctroRate)
// baseRate = 9700 // baseRate = 9700
@ -437,14 +437,14 @@ func (this *SceneStateAvengersStart) OnPlayerOp(s *base.Scene, p *base.Player, o
jackpotRate := ctroRate //奖池系数 jackpotRate := ctroRate //奖池系数
logger.Logger.Tracef("AvengersRates [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate, ctroRate) logger.Logger.Tracef("AvengersRates [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate, ctroRate)
//playerEx.IsFNovice(sceneEx.KeyGameId) playerEx.IsFNovice(sceneEx.KeyGameId)
isFoolPlayer := false isFoolPlayer := playerEx.IsFoolPlayer[sceneEx.KeyGameId]
var gamePoolCoin int64 var gamePoolCoin int64
//if isFoolPlayer { if isFoolPlayer {
// gamePoolCoin = base.CoinPoolMgr.GetNoviceCoinPool(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额 gamePoolCoin = base.CoinPoolMgr.GetNoviceCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额
//} else { } else {
gamePoolCoin = base.CoinPoolMgr.GetCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额 gamePoolCoin = base.CoinPoolMgr.GetCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额
//} }
prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额 prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额
// 奖池参数 // 奖池参数
@ -462,7 +462,7 @@ func (this *SceneStateAvengersStart) OnPlayerOp(s *base.Scene, p *base.Player, o
//p.Statics(sceneEx.KeyGameId, sceneEx.KeyGamefreeId, -totalBetValue, true) //p.Statics(sceneEx.KeyGameId, sceneEx.KeyGamefreeId, -totalBetValue, true)
if !p.IsRob && !sceneEx.Testing { if !p.IsRob && !sceneEx.Testing {
// 推送金币 // 推送金币
sceneEx.PushCoinPool(prizeFundAdd, false) sceneEx.PushCoinPool(prizeFundAdd, isFoolPlayer)
//base.CoinPoolMgr.PushCoin(sceneEx.GetGameFreeId(), sceneEx.GroupId, sceneEx.Platform, int64(float64(totalBetValue)*(float64(10000-ctroRate)/10000.0))) //base.CoinPoolMgr.PushCoin(sceneEx.GetGameFreeId(), sceneEx.GroupId, sceneEx.Platform, int64(float64(totalBetValue)*(float64(10000-ctroRate)/10000.0)))
} }
@ -583,8 +583,12 @@ func (this *SceneStateAvengersStart) OnPlayerOp(s *base.Scene, p *base.Player, o
playerEx.taxCoin = spinRes.TotalTaxScore playerEx.taxCoin = spinRes.TotalTaxScore
playerEx.AddServiceFee(playerEx.taxCoin) playerEx.AddServiceFee(playerEx.taxCoin)
} }
p.StaticsLaba(sceneEx.KeyGameId, sceneEx.KeyGamefreeId, totalBetValue, totalWinScore+spinRes.BonusGame.GetTotalPrizeValue()+spinRes.TotalTaxScore) sceneEx.StaticsLaba(&base.StaticLabaParam{
SnId: playerEx.SnId,
Gain: totalWinScore + spinRes.BonusGame.GetTotalPrizeValue() + spinRes.TotalTaxScore,
GainTax: spinRes.TotalTaxScore,
IsAddTimes: true,
})
this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, avengers.OpResultCode_OPRC_Sucess, append(params[:1], playerEx.betLines...)) this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, avengers.OpResultCode_OPRC_Sucess, append(params[:1], playerEx.betLines...))
//免费次数 //免费次数
@ -904,11 +908,10 @@ func AvengersCheckAndSaveLog(sceneEx *AvengersSceneData, playerEx *AvengersPlaye
//统计金币变动 //统计金币变动
//log1 //log1
logger.Logger.Trace("AvengersCheckAndSaveLog Save ", playerEx.SnId) logger.Logger.Trace("AvengersCheckAndSaveLog Save ", playerEx.SnId)
//changeCoin := playerEx.Coin - playerEx.StartCoin
changeCoin := playerEx.winCoin - playerEx.taxCoin - playerEx.CurrentBet changeCoin := playerEx.winCoin - playerEx.taxCoin - playerEx.CurrentBet
startCoin := playerEx.Coin - changeCoin startCoin := playerEx.Coin - changeCoin
playerEx.SaveSceneCoinLog(startCoin, changeCoin, //playerEx.SaveSceneCoinLog(startCoin, changeCoin,
playerEx.Coin, playerEx.CurrentBet, playerEx.taxCoin, playerEx.winCoin, playerEx.jackpotWinCoin, playerEx.smallGameWinCoin) // playerEx.Coin, playerEx.CurrentBet, playerEx.taxCoin, playerEx.winCoin, playerEx.jackpotWinCoin, playerEx.smallGameWinCoin)
//log2 //log2
playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin
@ -967,15 +970,8 @@ func AvengersCheckAndSaveLog(sceneEx *AvengersSceneData, playerEx *AvengersPlaye
Bet: proto.Int64(playerEx.CurrentBet), Bet: proto.Int64(playerEx.CurrentBet),
Gain: proto.Int64(playerEx.RollGameType.BaseResult.ChangeCoin), Gain: proto.Int64(playerEx.RollGameType.BaseResult.ChangeCoin),
Tax: proto.Int64(playerEx.taxCoin), Tax: proto.Int64(playerEx.taxCoin),
OtherTax: 0,
Coin: proto.Int64(playerEx.GetCoin()), Coin: proto.Int64(playerEx.GetCoin()),
FlowCoin: 0,
Lottery: 0,
Kind: 0,
Card: nil,
GameCoinTs: proto.Int64(playerEx.GameCoinTs), GameCoinTs: proto.Int64(playerEx.GameCoinTs),
WBGain: 0,
WinState: 0,
} }
gwPlayerBet := &server.GWPlayerData{ gwPlayerBet := &server.GWPlayerData{
SceneId: proto.Int(sceneEx.SceneId), SceneId: proto.Int(sceneEx.SceneId),

View File

@ -31,6 +31,7 @@ const (
var CoinPoolMgr = &CoinPoolManager{ var CoinPoolMgr = &CoinPoolManager{
CoinPool: new(sync.Map), CoinPool: new(sync.Map),
ProfitPool: new(sync.Map), ProfitPool: new(sync.Map),
NoviceCoinPool: new(sync.Map),
CoinPoolSetting: make(map[string]*webapi.CoinPoolSetting), CoinPoolSetting: make(map[string]*webapi.CoinPoolSetting),
curRunTime: make(map[string]int64), curRunTime: make(map[string]int64),
publicPond: new(sync.Map), publicPond: new(sync.Map),
@ -55,6 +56,9 @@ type CoinPoolManager struct {
//收益池 //收益池
ProfitPoolDBKey string ProfitPoolDBKey string
ProfitPool *sync.Map ProfitPool *sync.Map
//新手池
NoviceCoinPoolDBKey string
NoviceCoinPool *sync.Map
dirty bool dirty bool
@ -115,7 +119,8 @@ func (this *CoinPoolManager) SplitKey(key string) (gameFreeId, groupId int32, pl
// AddProfitPool 增加收益池 // AddProfitPool 增加收益池
func (this *CoinPoolManager) AddProfitPool(key string, coin int64) bool { func (this *CoinPoolManager) AddProfitPool(key string, coin int64) bool {
if this.getCoinPoolSetting(key).GetSwitch() == 1 { setting := this.getCoinPoolSetting(key)
if setting == nil || setting.GetSwitch() == 1 {
return false return false
} }
@ -178,10 +183,25 @@ func (this *CoinPoolManager) getCoinPoolCoin(key string) int64 {
return poolCoin return poolCoin
} }
// 获取调控池水位
func (this *CoinPoolManager) getNoviceCoinPoolCoin(key string) int64 {
poolValue, ok := this.NoviceCoinPool.Load(key)
if !ok {
return 0
}
poolCoin, ok := poolValue.(int64)
if !ok {
logger.Logger.Errorf("Error type convert in coinpoolmanager GetNoviceCoin:%v-%v", key, poolValue)
return 0
}
return poolCoin
}
// 减少调控池水位 // 减少调控池水位
// 返回当前水位 // 返回当前水位
func (this *CoinPoolManager) popCoin(key string, coin int64) (bool, int64) { func (this *CoinPoolManager) popCoin(key string, coin int64) (bool, int64) {
if this.getCoinPoolSetting(key).GetSwitch() == 1 { setting := this.getCoinPoolSetting(key)
if setting == nil || setting.GetSwitch() == 1 {
return false, 0 return false, 0
} }
@ -210,10 +230,44 @@ func (this *CoinPoolManager) popCoin(key string, coin int64) (bool, int64) {
return true, curValue return true, curValue
} }
// 减少调控池水位
// 返回当前水位
func (this *CoinPoolManager) popNoviceCoin(key string, coin int64) (bool, int64) {
setting := this.getCoinPoolSetting(key)
if setting == nil || setting.GetSwitch() == 1 {
return false, 0
}
poolValue, ok := this.NoviceCoinPool.Load(key)
if !ok {
return false, 0
}
poolCoin, ok := poolValue.(int64)
if !ok {
logger.Logger.Errorf("Error type convert in coinpoolmanager popNoviceCoin:%v-%v", key, poolValue)
return false, 0
}
//if poolCoin < coin {
// return false
//}
curValue := poolCoin - coin
if curValue < -99999999 {
curValue = -99999999
}
this.NoviceCoinPool.Store(key, curValue)
this.dirty = true
logger.Logger.Infof("$$$$$$$$新手金币池 %v 取出 %v 金币,现有金币 %v.$$$$$$$$", key, coin, curValue)
return true, curValue
}
// 增加调控池水位 // 增加调控池水位
// 返回当前水位 // 返回当前水位
func (this *CoinPoolManager) pushCoin(key string, coin int64) int64 { func (this *CoinPoolManager) pushCoin(key string, coin int64) int64 {
if this.getCoinPoolSetting(key).GetSwitch() == 1 { setting := this.getCoinPoolSetting(key)
if setting == nil || setting.GetSwitch() == 1 {
return 0 return 0
} }
@ -236,6 +290,33 @@ func (this *CoinPoolManager) pushCoin(key string, coin int64) int64 {
return poolCoin return poolCoin
} }
// 增加调控池水位
// 返回当前水位
func (this *CoinPoolManager) pushNoviceCoin(key string, coin int64) int64 {
setting := this.getCoinPoolSetting(key)
if setting == nil || setting.GetSwitch() == 1 {
return 0
}
poolValue, ok := this.NoviceCoinPool.Load(key)
if !ok {
this.NoviceCoinPool.Store(key, coin)
this.dirty = true
logger.Logger.Infof("$$$$$$$$新手金币池 %v 放入 %v 金币,现有金币 %v.$$$$$$$$", key, coin, coin)
return coin
}
poolCoin, ok := poolValue.(int64)
if !ok {
logger.Logger.Errorf("NoviceCoin pool push error type value:%v-%v", key, poolValue)
return 0
}
poolCoin += coin
this.NoviceCoinPool.Store(key, poolCoin)
this.dirty = true
logger.Logger.Infof("$$$$$$$$新手金币池 %v 放入 %v 金币,现有金币 %v.$$$$$$$$", key, coin, poolCoin)
return poolCoin
}
// PopCoin 减少调控池水位 // PopCoin 减少调控池水位
func (this *CoinPoolManager) PopCoin(gameFreeId, groupId int32, platform string, coin int64) bool { func (this *CoinPoolManager) PopCoin(gameFreeId, groupId int32, platform string, coin int64) bool {
if coin == 0 { if coin == 0 {
@ -243,16 +324,19 @@ func (this *CoinPoolManager) PopCoin(gameFreeId, groupId int32, platform string,
} }
key := this.GenKey(gameFreeId, platform, groupId) key := this.GenKey(gameFreeId, platform, groupId)
setting := this.getCoinPoolSetting(key)
if setting == nil || setting.GetSwitch() == 1 {
return true
}
poolVal := coin poolVal := coin
if coin < 0 { //负值为收益 if coin < 0 { //负值为收益
setting := this.getCoinPoolSetting(key) rate := this.GetProfitRate(setting)
if setting != nil && setting.GetSwitch() == 0 { if rate != 0 { //负值也生效???
rate := this.GetProfitRate(setting) profit := coin * int64(rate) / 1000
if rate != 0 { //负值也生效??? this.AddProfitPool(key, -profit)
profit := coin * int64(rate) / 1000 poolVal = coin - profit
this.AddProfitPool(key, -profit)
poolVal = coin - profit
}
} }
} }
ok, _ := this.popCoin(key, poolVal) ok, _ := this.popCoin(key, poolVal)
@ -267,7 +351,7 @@ func (this *CoinPoolManager) PopCoin(gameFreeId, groupId int32, platform string,
if ok { if ok {
poolCoin, ok := poolValue.(int64) poolCoin, ok := poolValue.(int64)
if ok { if ok {
if int64(setting.GetLowerLimit()) > poolCoin { if setting.GetLowerLimit() > poolCoin {
WarningCoinPool(Warning_CoinPoolLow, gameFreeId) WarningCoinPool(Warning_CoinPoolLow, gameFreeId)
} }
@ -288,17 +372,21 @@ func (this *CoinPoolManager) PushCoin(gameFreeId, groupId int32, platform string
if coin == 0 { if coin == 0 {
return return
} }
key := this.GenKey(gameFreeId, platform, groupId) key := this.GenKey(gameFreeId, platform, groupId)
setting := this.getCoinPoolSetting(key)
if setting == nil || setting.GetSwitch() == 1 {
return
}
poolVal := coin poolVal := coin
if coin > 0 { //处理收益池 if coin > 0 { //处理收益池
setting := this.getCoinPoolSetting(key) rate := this.GetProfitRate(setting)
if setting != nil && setting.GetSwitch() == 0 { if rate != 0 { //负值也生效???
rate := this.GetProfitRate(setting) profit := coin * int64(rate) / 1000
if rate != 0 { //负值也生效??? this.AddProfitPool(key, profit)
profit := coin * int64(rate) / 1000 poolVal = coin - profit
this.AddProfitPool(key, profit)
poolVal = coin - profit
}
} }
} }
@ -339,7 +427,15 @@ func (this *CoinPoolManager) UpdateCoinPoolSetting(setting *webapi.CoinPoolSetti
if initValue != 0 { //初始化水池 if initValue != 0 { //初始化水池
_, ok := this.CoinPool.Load(key) _, ok := this.CoinPool.Load(key)
if !ok { if !ok {
this.pushCoin(key, int64(initValue)) this.pushCoin(key, initValue)
}
}
// 新手调控池初始化
initValue = setting.GetInitNoviceValue()
if initValue != 0 { //初始化水池
_, ok := this.NoviceCoinPool.Load(key)
if !ok {
this.pushNoviceCoin(key, initValue)
} }
} }
} }
@ -411,25 +507,29 @@ func (this *CoinPoolManager) GetCoinPoolSettingByGame(platform string, gameId, g
setting := this.GetCoinPoolSetting(platform, id, groupId) setting := this.GetCoinPoolSetting(platform, id, groupId)
if setting != nil { if setting != nil {
s := &webapi.CoinPoolSetting{ s := &webapi.CoinPoolSetting{
Platform: setting.GetPlatform(), Platform: setting.GetPlatform(),
GameFreeId: setting.GetGameFreeId(), GameFreeId: setting.GetGameFreeId(),
ServerId: setting.GetServerId(), ServerId: setting.GetServerId(),
GroupId: setting.GetGroupId(), GroupId: setting.GetGroupId(),
InitValue: setting.GetInitValue(), InitValue: setting.GetInitValue(),
LowerLimit: setting.GetLowerLimit(), LowerLimit: setting.GetLowerLimit(),
UpperLimit: setting.GetUpperLimit(), UpperLimit: setting.GetUpperLimit(),
QuDu: setting.GetQuDu(), QuDu: setting.GetQuDu(),
UpperOdds: setting.GetUpperOdds(), UpperOdds: setting.GetUpperOdds(),
UpperOddsMax: setting.GetUpperOddsMax(), UpperOddsMax: setting.GetUpperOddsMax(),
LowerOdds: setting.GetLowerOdds(), LowerOdds: setting.GetLowerOdds(),
LowerOddsMax: setting.GetLowerOddsMax(), LowerOddsMax: setting.GetLowerOddsMax(),
ProfitRate: setting.GetProfitRate(), ProfitRate: setting.GetProfitRate(),
InitNoviceValue: setting.GetInitNoviceValue(),
CtrlRate: setting.GetCtrlRate(),
ResetTime: setting.GetResetTime(), ResetTime: setting.GetResetTime(),
Switch: setting.GetSwitch(), Switch: setting.GetSwitch(),
CoinValue: this.GetCoin(id, platform, groupId), // 当前水位 CoinValue: this.GetCoin(id, platform, groupId), // 当前水位
ProfitPool: this.GetProfitPoolCoin(id, platform, groupId), // 收益池水位 ProfitPool: this.GetProfitPoolCoin(id, platform, groupId), // 收益池水位
NoviceCoinValue: this.GetNoviceCoin(id, platform, groupId), // 新手池水位
} }
settings = append(settings, s) settings = append(settings, s)
} }
@ -479,6 +579,18 @@ func (this *CoinPoolManager) Init() {
} else { } else {
logger.Logger.Error("Unmarshal coin pool error:", err) logger.Logger.Error("Unmarshal coin pool error:", err)
} }
// 新手调控池
this.NoviceCoinPoolDBKey = fmt.Sprintf("NoviceCoinPoolManager_Srv%v", common.GetSelfSrvId())
data = model.GetStrKVGameData(this.NoviceCoinPoolDBKey)
noviceCoinPool := make(map[string]int64)
err = json.Unmarshal([]byte(data), &noviceCoinPool)
if err == nil {
for key, value := range noviceCoinPool {
this.NoviceCoinPool.Store(key, value)
}
} else {
logger.Logger.Error("Unmarshal novice coin pool error:", err)
}
// 收益池 // 收益池
this.ProfitPoolDBKey = fmt.Sprintf("ProfitPoolManager_Srv%v", common.GetSelfSrvId()) this.ProfitPoolDBKey = fmt.Sprintf("ProfitPoolManager_Srv%v", common.GetSelfSrvId())
data = model.GetStrKVGameData(this.ProfitPoolDBKey) data = model.GetStrKVGameData(this.ProfitPoolDBKey)
@ -525,6 +637,24 @@ func (this *CoinPoolManager) Save(asyn bool) {
} else { } else {
logger.Logger.Error("Marshal coin pool error:", err) logger.Logger.Error("Marshal coin pool error:", err)
} }
// 新手调控池
coinPool = make(map[string]int64)
this.NoviceCoinPool.Range(func(key, value interface{}) bool {
coinPool[key.(string)] = value.(int64)
return true
})
buff, err = json.Marshal(coinPool)
if err == nil {
if asyn {
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
return model.UptStrKVGameData(this.NoviceCoinPoolDBKey, string(buff))
}), nil, "UptStrKVGameData").Start()
} else {
model.UptStrKVGameData(this.NoviceCoinPoolDBKey, string(buff))
}
} else {
logger.Logger.Error("Marshal novice coin pool error:", err)
}
// 收益池 // 收益池
profitPool := make(map[string]int64) profitPool := make(map[string]int64)
this.ProfitPool.Range(func(key, value interface{}) bool { this.ProfitPool.Range(func(key, value interface{}) bool {
@ -620,29 +750,87 @@ func (this *CoinPoolManager) GetCoinPoolStatesByPlatform(platform string, games
return return
} }
func (this *CoinPoolManager) pushCoinNovice(key string, coin int64) {
}
func (this *CoinPoolManager) popCoinNovice(key string, coin int64) {
}
// PushCoinNovice 增加新手池水位 // PushCoinNovice 增加新手池水位
func (this *CoinPoolManager) PushCoinNovice(gameFreeId, groupId int32, platform string, coin int64) { func (this *CoinPoolManager) PushCoinNovice(gameFreeId, groupId int32, platform string, coin int64) {
if coin == 0 { if coin == 0 {
return return
} }
key := this.GenKey(gameFreeId, platform, groupId) key := this.GenKey(gameFreeId, platform, groupId)
this.pushCoinNovice(key, coin)
setting := this.getCoinPoolSetting(key)
if setting == nil || setting.GetSwitch() == 1 {
return
}
poolVal := coin
if coin > 0 { //处理收益池
rate := this.GetProfitRate(setting)
if rate != 0 { //负值也生效???
profit := coin * int64(rate) / 1000
this.AddProfitPool(key, profit)
poolVal = coin - profit
}
}
this.pushNoviceCoin(key, poolVal)
return
} }
// PopCoinNovice 减少新手池水位 // PopCoinNovice 减少新手池水位
func (this *CoinPoolManager) PopCoinNovice(gameFreeId, groupId int32, platform string, coin int64) { func (this *CoinPoolManager) PopCoinNovice(gameFreeId, groupId int32, platform string, coin int64) bool {
if coin == 0 {
return true
}
key := this.GenKey(gameFreeId, platform, groupId)
setting := this.getCoinPoolSetting(key)
if setting == nil || setting.GetSwitch() == 1 {
return true
}
poolVal := coin
if coin < 0 { //负值为收益
rate := this.GetProfitRate(setting)
if rate != 0 { //负值也生效???
profit := coin * int64(rate) / 1000
this.AddProfitPool(key, -profit)
poolVal = coin - profit
}
}
ok, _ := this.popNoviceCoin(key, poolVal)
if ok {
dbGameFree := srvdata.PBDB_GameFreeMgr.GetData(gameFreeId)
if dbGameFree != nil && dbGameFree.GetSceneType() != -1 { //非试玩场
//保存数据
//this.ReportCoinPoolRecEvent(gameFreeId, groupId, platform, -coin, curPoolVal, false)
setting := this.GetCoinPoolSetting(platform, gameFreeId, groupId)
if setting != nil {
poolValue, ok := this.NoviceCoinPool.Load(key)
if ok {
poolCoin, ok := poolValue.(int64)
if ok {
if int64(setting.GetLowerLimit()) > poolCoin {
WarningCoinPool(Warning_CoinPoolLow, gameFreeId)
}
if poolCoin < 0 {
WarningCoinPool(Warning_CoinPoolZero, gameFreeId)
}
}
}
}
}
return true
}
return false
} }
// GetNoviceCoin 获取新手池水位 // GetNoviceCoin 获取新手池水位
func (this *CoinPoolManager) GetNoviceCoin(gameFreeId int32, platform string, groupId int32) int64 { func (this *CoinPoolManager) GetNoviceCoin(gameFreeId int32, platform string, groupId int32) int64 {
return 0 key := this.GenKey(gameFreeId, platform, groupId)
return this.getNoviceCoinPoolCoin(key)
} }
// IsMaxOutHaveEnough 判定是否满足出分,out 为负值是出分,正值为收分 // IsMaxOutHaveEnough 判定是否满足出分,out 为负值是出分,正值为收分

View File

@ -1,29 +0,0 @@
package base
import (
"mongo.games.com/goserver/core"
)
var (
ForwardConfig = ForwardConfiguration{}
)
type ForwardConfiguration struct {
ForwardMakeCards bool
}
func (this *ForwardConfiguration) Name() string {
return "forward"
}
func (this *ForwardConfiguration) Init() error {
return nil
}
func (this *ForwardConfiguration) Close() error {
return nil
}
func init() {
core.RegistePackage(&ForwardConfig)
}

View File

@ -1,13 +0,0 @@
package base
import (
"mongo.games.com/game/common"
)
var BroadJackpotGame = []int{
common.GameId_IceAge,
common.GameId_TamQuoc,
common.GameId_CaiShen,
common.GameId_Avengers,
common.GameId_EasterIsland,
}

View File

@ -1,13 +0,0 @@
package base
type InterventionData struct {
Webuser string
Flag int32
NumOfGames int32
}
type InterventionResults struct {
Key string
Webuser string
Results string
}

View File

@ -1,145 +0,0 @@
package base
import (
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/utils"
"sync/atomic"
"time"
)
type ElementPool struct {
key int32
pool chan interface{}
}
type ElementProducer struct {
times int64
cnt int32
max int32
pool []*ElementPool
nf ProduceFunc //正常的生产函数
bf ProduceFunc //保底的生产函数
quit bool
}
type ProduceFunc func() (interface{}, int32)
type ElementProducerMgr struct {
producer map[int32]*ElementProducer
}
var ElementProducerMgrSington = &ElementProducerMgr{
producer: make(map[int32]*ElementProducer),
}
func CreateElementProducer(max int32, nf, bf ProduceFunc) *ElementProducer {
ep := &ElementProducer{
max: max,
nf: nf,
bf: bf,
pool: make([]*ElementPool, max, max),
}
return ep
}
func (ep *ElementProducer) Start() {
go _start_produce_routine(ep)
}
func (ep *ElementProducer) Stop() {
ep.quit = true
}
func (ep *ElementProducer) FetchOneElement(key int32) interface{} {
if key < 0 || key >= int32(len(ep.pool)) {
return nil
}
pool := ep.pool[key]
if pool != nil {
select {
case d, ok := <-pool.pool:
if ok {
atomic.AddInt32(&ep.cnt, -1)
return d
} else {
//向下取一个结果
for i := key - 1; i >= 0; i-- {
if ep.pool[i] != nil && len(ep.pool[i].pool) != 0 {
return ep.FetchOneElement(i)
}
}
d, _ := ep.bf()
return d
}
default:
}
}
//向下取一个结果
for i := key - 1; i >= 0; i-- {
if ep.pool[i] != nil && len(ep.pool[i].pool) != 0 {
return ep.FetchOneElement(i)
}
}
d, _ := ep.bf()
return d
}
func (ep *ElementProducer) Dump() {
logger.Logger.Tracef("[[[[[[[[[[[[[[[total=%v, calcu=%v]]]]]]]]]]]]]]]", ep.cnt, ep.times)
for i := 0; i < len(ep.pool); i++ {
epp := ep.pool[i]
if epp != nil && len(epp.pool) != 0 {
logger.Logger.Tracef("[key=%v] [count=%v]", i, len(epp.pool))
}
}
}
func _start_produce_routine(ep *ElementProducer) {
defer utils.DumpStackIfPanic("_start_produce_routine")
var idle = 0
for !ep.quit {
val, key := ep.nf()
atomic.AddInt64(&ep.times, 1)
if key >= 0 && key < int32(len(ep.pool)) {
epp := ep.pool[key]
if epp == nil {
epp = &ElementPool{key: key, pool: make(chan interface{}, 128)}
ep.pool[key] = epp
}
select {
case epp.pool <- val:
atomic.AddInt32(&ep.cnt, 1)
case <-time.After(time.Millisecond):
idle++
}
}
if idle >= 10000 {
idle = 0
//ep.Dump()
}
}
}
func (this *ElementProducerMgr) GetProducer(id int32) *ElementProducer {
if p, exist := this.producer[id]; exist {
return p
}
return nil
}
func (this *ElementProducerMgr) SetProducer(id int32, p *ElementProducer) {
if op, exist := this.producer[id]; exist {
if op != nil {
op.Stop()
}
}
this.producer[id] = p
}
func (this *ElementProducerMgr) StopAll() {
for _, p := range this.producer {
if p != nil {
p.Stop()
}
}
}

View File

@ -479,6 +479,12 @@ func (this *Player) AddCoin(num int64, gainWay int32, syncFlag int, oper, remark
this.scene.NewBigCoinNotice(this, int64(num), 5) this.scene.NewBigCoinNotice(this, int64(num), 5)
} }
} }
//增加玩家经验
if num > 0 {
exp := num / 100
this.AddPlayerExp(exp)
logger.Logger.Trace("玩家获取金币 增加玩家经验值:", exp)
}
if (syncFlag & SyncFlag_ToClient) != 0 { if (syncFlag & SyncFlag_ToClient) != 0 {
pack := &player.SCPlayerCoinChange{ pack := &player.SCPlayerCoinChange{
SnId: proto.Int32(this.SnId), SnId: proto.Int32(this.SnId),
@ -861,88 +867,6 @@ func (this *Player) Statics(keyGameId string, keyGameFreeId string, gain int64,
////} ////}
} }
// 拉霸游戏 一局一条
func (this *Player) StaticsLaba(keyGameId string, keyGameFreeId string, totalIn, totalOut int64) {
if this.scene == nil || this.scene.Testing { //测试场|自建房和机器人不统计
return
}
if totalIn < 0 || totalOut < 0 {
return
}
if this.IsRob && !this.scene.IsRobFightGame() {
return
}
if this.TodayGameData == nil {
this.TodayGameData = &model.PlayerGameCtrlData{}
}
if this.TodayGameData.CtrlData == nil {
this.TodayGameData.CtrlData = make(map[string]*model.PlayerGameStatics)
}
statics := make([]*model.PlayerGameStatics, 0, 4)
//当天数据统计
//按场次分
if data, ok := this.TodayGameData.CtrlData[keyGameFreeId]; ok {
statics = append(statics, data)
} else {
gs := model.NewPlayerGameStatics()
this.TodayGameData.CtrlData[keyGameFreeId] = gs
statics = append(statics, gs)
}
//按游戏分
if data, ok := this.TodayGameData.CtrlData[keyGameId]; ok {
statics = append(statics, data)
} else {
data = model.NewPlayerGameStatics()
this.TodayGameData.CtrlData[keyGameId] = data
statics = append(statics, data)
}
//按游戏场次进行的统计
if data, ok := this.GDatas[keyGameFreeId]; ok {
statics = append(statics, &data.Statics)
} else {
data = &model.PlayerGameInfo{FirstTime: time.Now(), Statics: *model.NewPlayerGameStatics()}
this.GDatas[keyGameFreeId] = data
statics = append(statics, &data.Statics)
}
if data, ok := this.GDatas[keyGameId]; ok {
statics = append(statics, &data.Statics)
} else {
data = &model.PlayerGameInfo{FirstTime: time.Now(), Statics: *model.NewPlayerGameStatics()}
this.GDatas[keyGameId] = data
statics = append(statics, &data.Statics)
}
gain := totalOut - totalIn
for _, data := range statics {
if data != nil {
data.TotalIn += totalIn
data.TotalOut += totalOut
data.GameTimes++
if gain > 0 {
data.WinGameTimes++
} else if gain < 0 {
data.LoseGameTimes++
} else {
data.DrawGameTimes++
}
}
}
//玩家身上元数据
this.GameTimes++
if gain > 0 {
this.winTimes++
this.WinTimes++
} else if gain < 0 {
this.lostTimes++
this.FailTimes++
} else {
this.DrawTimes++
}
}
//func (this *Player) CheckType(gamefreeId, gameId int32) *server.DB_PlayerType { //func (this *Player) CheckType(gamefreeId, gameId int32) *server.DB_PlayerType {
// types := srvdata.PlayerTypeMgrSington.GetPlayerType(gamefreeId) // types := srvdata.PlayerTypeMgrSington.GetPlayerType(gamefreeId)
// cnt := len(types) // cnt := len(types)
@ -1425,38 +1349,32 @@ func (this *Player) SetFishLevel(level int64) {
this.FishExp = int64(data.Exp) this.FishExp = int64(data.Exp)
}*/ }*/
// 增加捕鱼经验 // 增加玩家经验
func (this *Player) AddPlayerExp(exp int64) bool { func (this *Player) AddPlayerExp(exp int64) bool {
this.FishExp += exp this.Exp += exp
if this.FishExp >= int64(math.MaxInt64) { if this.Exp >= int64(math.MaxInt64) {
this.FishExp = int64(math.MaxInt64) this.Exp = int64(math.MaxInt64)
} }
maxExp := srvdata.PBDB_PlayerExpMgr.Datas.Arr[len(srvdata.PBDB_PlayerExpMgr.Datas.Arr)-1].Exp maxExp := srvdata.PBDB_PlayerExpMgr.Datas.Arr[len(srvdata.PBDB_PlayerExpMgr.Datas.Arr)-1].Exp
if this.FishExp > int64(maxExp) { if this.Exp > int64(maxExp) {
this.FishExp = int64(maxExp) this.Exp = int64(maxExp)
} }
//oldLevel := this.Level
oldLevel := this.FishLevel
//获取等级 //获取等级
for _, playerExp := range srvdata.PBDB_PlayerExpMgr.Datas.Arr { for _, playerExp := range srvdata.PBDB_PlayerExpMgr.Datas.Arr {
if this.FishExp >= int64(playerExp.Exp) { if this.Exp >= int64(playerExp.Exp) {
this.FishLevel = int64(playerExp.Id) this.Level = int64(playerExp.Id)
} else { } else {
break break
} }
} }
//升级 pack := &player.SCPlayerUpLevel{
if this.FishLevel != oldLevel { Level: this.Level,
////通知客户端 Exp: this.Exp,
pack := &player.SCPlayerUpLevel{
Level: this.FishLevel,
Exp: this.FishExp,
}
//通知客户端玩家提升等级
this.SendToClient(int(player.PlayerPacketID_PACKET_SC_PlayerUpLevel), pack)
return true
} }
return false //通知客户端玩家提升等级
this.SendToClient(int(player.PlayerPacketID_PACKET_SC_PlayerUpLevel), pack)
return true
} }
// 解锁炮倍 // 解锁炮倍
@ -1488,3 +1406,21 @@ func (this *Player) UnPlayerPowerListEx(powerId int32) {
} }
return return
} }
// 获取周卡权益
// typeId : 1-破产救济金领取翻倍 2-排位赛积分提升5%
func (this *Player) GetWeekCardPrivilege(typeId int32) bool {
logger.Logger.Trace("玩家请求获取周卡权益!")
now := time.Now().Unix()
for id, endTime := range this.WeekCardTime {
if endTime > now {
data := srvdata.PBDB_GiftCardMgr.GetData(id)
for _, equity := range data.GetEquity() {
if equity == typeId {
return true
}
}
}
}
return false
}

View File

@ -1,11 +1,9 @@
package base package base
import ( import (
"bytes"
"fmt" "fmt"
"math/rand" "math/rand"
"strconv" "strconv"
"strings"
"time" "time"
rawproto "google.golang.org/protobuf/proto" rawproto "google.golang.org/protobuf/proto"
@ -1725,13 +1723,6 @@ func GetSaveGamePlayerListLogParam(platform, channel, promoter, packageTag, logi
} }
} }
func IsFishGame(gameId int) bool {
if gameId == common.GameId_HFishing || gameId == common.GameId_TFishing {
return true
}
return false
}
func (this *Scene) SaveFriendRecord(snid int32, isWin int32, billCoin int64, baseScore int32) { func (this *Scene) SaveFriendRecord(snid int32, isWin int32, billCoin int64, baseScore int32) {
if this.SceneMode == common.SceneMode_Private { if this.SceneMode == common.SceneMode_Private {
return return
@ -2034,6 +2025,7 @@ func (this *Scene) RobotLeaveHundred() {
} }
} }
} }
func (this *Scene) RandInt(args ...int) int { func (this *Scene) RandInt(args ...int) int {
switch len(args) { switch len(args) {
case 0: case 0:
@ -2079,208 +2071,6 @@ func (this *Scene) GetRecordId() string {
return fmt.Sprintf("%d%d%v%d", this.GameId, this.SceneId, this.GameNowTime.Format(ReplayIdTf), this.NumOfGames) return fmt.Sprintf("%d%d%v%d", this.GameId, this.SceneId, this.GameNowTime.Format(ReplayIdTf), this.NumOfGames)
} }
//func (this *Scene) TryUseMatchNextBaseData() {
// data := this.matchChgData
// if data != nil {
// this.matchChgData = nil
// this.SetParamEx(common.PARAMEX_MATCH_BASESCORE, data.NextBaseScore)
// this.SetParamEx(common.PARAMEX_MATCH_OUTSCORE, data.NextOutScore)
// this.DbGameFree.BaseScore = proto.Int32(data.NextBaseScore)
// //同步给玩家
// pack := &match.SCMatchBaseScoreChange{
// MatchId: proto.Int32(this.GetParamEx(common.PARAMEX_MATCH_COPYID)),
// BaseScore: proto.Int32(data.NextBaseScore),
// OutScore: proto.Int32(data.NextOutScore),
// }
// proto.SetDefaults(pack)
// this.Broadcast(int(match.MatchPacketID_PACKET_SC_MATCH_BASESCORECHANGE), pack, 0)
// }
//}
// ///////////////////////////////////////////////////////////////////
func (this *Scene) resultHistoryRemove(n int) {
var i int
for ; i < len(this.resultHistory); i++ {
for j := 1; j < len(this.resultHistory[i]); j++ {
if this.resultHistory[i][j] == n {
this.resultHistory[i] = append(this.resultHistory[i][:j], this.resultHistory[i][j+1:]...)
if len(this.resultHistory[i]) <= 1 {
this.resultHistory = append(this.resultHistory[:i], this.resultHistory[i+1:]...)
}
return
}
}
}
}
func (this *Scene) GetResultHistoryResult(n int) int {
for i := 0; i < len(this.resultHistory); i++ {
for j := 1; j < len(this.resultHistory[i]); j++ {
if this.resultHistory[i][j] == n {
return this.resultHistory[i][0]
}
}
}
return -1
}
func (this *Scene) GetResult() int {
return this.results[this.LoopNum]
}
func (this *Scene) resultCheck() {
logger.Logger.Tracef("历史记录: %v\n调控配置: %v", this.resultHistory, this.results)
for i := 0; i < len(this.resultHistory); i++ {
m := this.resultHistory[i][0]
for j := 1; j < len(this.resultHistory[i]); j++ {
if this.results[this.resultHistory[i][j]] != m {
logger.Logger.Errorf("不匹配 局数:%d 配置结果:%d 历史记录的结果:%d",
this.resultHistory[i][j], this.results[this.resultHistory[i][j]], m)
}
}
}
}
func (this *Scene) AddLoopNum() {
//defer this.resultCheck()
// 维护 resultHistory
this.resultHistoryRemove(this.LoopNum)
this.results[this.LoopNum] = common.DefaultResult
this.LoopNum++
if this.LoopNum == common.MaxLoopNum {
this.LoopNum = 0
}
}
func (this *Scene) ProtoResults() []*server.EResult {
ret := []*server.EResult{}
for i := 0; i < len(this.resultHistory); i++ {
if len(this.resultHistory[i]) <= 1 {
continue
}
temp := new(server.EResult)
temp.Result = proto.Int(this.resultHistory[i][0])
buf := bytes.NewBufferString("")
buf.WriteString(fmt.Sprint(this.resultHistory[i][1]))
for j := 2; j < len(this.resultHistory[i]); j++ {
buf.WriteString(fmt.Sprint(",", this.resultHistory[i][j]))
}
temp.Index = proto.String(buf.String())
ret = append(ret, temp)
}
return ret
}
func (this *Scene) ParserResults(str, user string) {
for _, v := range strings.Split(strings.TrimSpace(str), ",") {
ns := strings.Split(v, ":")
if len(ns) != 2 {
continue
}
i, err := strconv.Atoi(ns[0])
if err != nil {
continue
}
n, err := strconv.Atoi(ns[1])
if err != nil {
continue
}
if n < 0 || n >= len(this.results) {
continue
}
this.results[i] = n
}
this.WebUser = user
}
// ParserResults1 只能解析一种控制结果的设置
func (this *Scene) ParserResults1(str, user string) *server.GWRoomResults {
// 维护 resultHistory
ret := &server.GWRoomResults{
Code: proto.Int(0),
}
arr := strings.Split(strings.TrimSpace(str), ",")
if len(arr) == 0 {
ret.Code = proto.Int(3)
ret.Msg = proto.String("参数错误")
return ret
}
ns := strings.Split(arr[0], ":")
if len(ns) != 2 {
ret.Code = proto.Int(3)
ret.Msg = proto.String("参数错误")
return ret
}
n, err := strconv.Atoi(ns[1])
if err != nil {
ret.Code = proto.Int(3)
ret.Msg = proto.String("参数错误")
return ret
}
//logger.Logger.Tracef("控牌设置历史 %s", str)
//defer this.resultCheck()
var is []int
if n == common.DefaultResult {
for _, v := range arr {
ns := strings.Split(v, ":")
if len(ns) != 2 {
continue
}
// 局数
i, err := strconv.Atoi(ns[0])
if err != nil {
continue
}
if i < 0 || i >= len(this.results) {
ret.Code = proto.Int(2)
ret.Msg = proto.String(fmt.Sprintf("局数错误 第%d局", i))
return ret
}
is = append(is, i)
}
for _, v := range is {
this.resultHistoryRemove(v)
this.results[v] = common.DefaultResult
}
this.WebUser = user
return ret
}
// 设置
indexes := []int{n}
for _, v := range arr {
ns := strings.Split(v, ":")
if len(ns) != 2 {
continue
}
// 局数
i, err := strconv.Atoi(ns[0])
if err != nil {
continue
}
if i < 0 || i >= len(this.results) {
ret.Code = proto.Int(2)
ret.Msg = proto.String(fmt.Sprintf("局数错误 第%d局", i))
return ret
}
if this.results[i] != common.DefaultResult {
ret.Code = proto.Int(1)
ret.Msg = proto.String(fmt.Sprintf("重复设置第%d局", i))
return ret
}
is = append(is, i)
}
for _, v := range is {
this.results[v] = n
indexes = append(indexes, v)
}
this.resultHistory = append(this.resultHistory, indexes)
this.WebUser = user
return ret
}
func (this *Scene) RandTakeCoin(p *Player) (takeCoin, leaveCoin, gameTimes int64) { func (this *Scene) RandTakeCoin(p *Player) (takeCoin, leaveCoin, gameTimes int64) {
if p.IsRob && p.IsLocal { if p.IsRob && p.IsLocal {
dbGameFree := this.DbGameFree dbGameFree := this.DbGameFree
@ -2554,9 +2344,9 @@ func (this *Scene) SyncPlayerDatas(param *PlayerDataParam) int64 {
type StaticParam struct { type StaticParam struct {
SnId int32 // 玩家id SnId int32 // 玩家id
Gain int64 // 金币(税后) Gain int64 // 赢金币(税后)
GainTax int64 // 赢取金币时的税收 GainTax int64 // 赢取金币时的税收
IsAddTimes bool // 是否记录游戏次数 IsAddTimes bool // 是否统计游戏次数
HasRobotGaming bool // 是否有机器人玩本局游戏 HasRobotGaming bool // 是否有机器人玩本局游戏
WinState int32 // 输赢状态 1 赢 2 输 3 和 WinState int32 // 输赢状态 1 赢 2 输 3 和
} }
@ -2567,6 +2357,7 @@ func (this *Scene) IsControl(hasRobotGaming bool) bool {
} }
// Statistics 玩家游戏数据统计 // Statistics 玩家游戏数据统计
// 包含水池统计,黑白名单统计,新手调控统计,个人水池统计
func (this *Scene) Statistics(param *StaticParam) { func (this *Scene) Statistics(param *StaticParam) {
if param == nil { if param == nil {
return return
@ -2637,7 +2428,6 @@ func (this *Scene) Statistics(param *StaticParam) {
p.TodayGameData.CtrlData[keyGameId] = data p.TodayGameData.CtrlData[keyGameId] = data
statics = append(statics, data) statics = append(statics, data)
} }
// 按场次分 // 按场次分
if data, ok := p.GDatas[keyGameFreeId]; ok { if data, ok := p.GDatas[keyGameFreeId]; ok {
if data.FirstTime.IsZero() { if data.FirstTime.IsZero() {
@ -2754,9 +2544,13 @@ func (this *Scene) Statistics(param *StaticParam) {
} }
// 玩家身上元数据 // 玩家身上元数据
p.GameTimes++ if param.IsAddTimes {
p.GameTimes++
}
if param.Gain > 0 { if param.Gain > 0 {
p.WinTimes++ if param.IsAddTimes {
p.WinTimes++
}
p.WinCoin += totalOut p.WinCoin += totalOut
p.TaxCoin += param.GainTax p.TaxCoin += param.GainTax
if isPlayerPool && common.IsPlayerPool(this.GameId) { if isPlayerPool && common.IsPlayerPool(this.GameId) {
@ -2764,13 +2558,17 @@ func (this *Scene) Statistics(param *StaticParam) {
p.PlayerTax += param.GainTax p.PlayerTax += param.GainTax
} }
} else if param.Gain < 0 { } else if param.Gain < 0 {
p.FailTimes++ if param.IsAddTimes {
p.FailTimes++
}
p.FailCoin += totalIn p.FailCoin += totalIn
if isPlayerPool && common.IsPlayerPool(this.GameId) { if isPlayerPool && common.IsPlayerPool(this.GameId) {
p.TotalIn += totalIn p.TotalIn += totalIn
} }
} else { } else {
p.DrawTimes++ if param.IsAddTimes {
p.DrawTimes++
}
} }
// 水池统计 // 水池统计
@ -2787,27 +2585,129 @@ func (this *Scene) Statistics(param *StaticParam) {
} }
} }
type StaticLabaParam struct {
SnId int32 // 玩家id
Gain int64 // 输赢金币(税后)
GainTax int64 // 赢取金币时的税收
IsAddTimes bool // 是否统计游戏次数
}
// StaticsLaba 拉霸游戏数据统计,一次下注记录一次
// 不含水池统计,黑白名单统计,在游戏中另外处理
func (this *Scene) StaticsLaba(param *StaticLabaParam) {
if param == nil {
return
}
p := this.GetPlayer(param.SnId)
if p == nil || p.IsRob {
return
}
// 比赛场,私人房不统计
if this.IsMatchScene() || this.IsPrivateScene() {
return
}
var totalIn int64
var totalOut int64
now := time.Now()
if param.Gain > 0 {
totalOut = param.Gain + param.GainTax
} else {
totalIn = -param.Gain
}
var statics []*model.PlayerGameStatics
keyGameId := strconv.Itoa(this.GetGameId())
keyGameFreeId := strconv.Itoa(int(this.GetGameFreeId()))
// 当天数据统计
// 按场次分
if data, ok := p.TodayGameData.CtrlData[keyGameFreeId]; ok {
statics = append(statics, data)
} else {
gs := model.NewPlayerGameStatics()
p.TodayGameData.CtrlData[keyGameFreeId] = gs
statics = append(statics, gs)
}
// 按游戏分
if data, ok := p.TodayGameData.CtrlData[keyGameId]; ok {
statics = append(statics, data)
} else {
data = model.NewPlayerGameStatics()
p.TodayGameData.CtrlData[keyGameId] = data
statics = append(statics, data)
}
// 按场次分
if data, ok := p.GDatas[keyGameFreeId]; ok {
if data.FirstTime.IsZero() {
data.FirstTime = now
}
statics = append(statics, &data.Statics)
} else {
data = &model.PlayerGameInfo{FirstTime: now}
p.GDatas[keyGameFreeId] = data
statics = append(statics, &data.Statics)
}
// 按游戏分
if data, ok := p.GDatas[keyGameId]; ok {
if data.FirstTime.IsZero() {
data.FirstTime = now
}
statics = append(statics, &data.Statics)
} else {
data = &model.PlayerGameInfo{FirstTime: now}
p.GDatas[keyGameId] = data
statics = append(statics, &data.Statics)
}
for _, data := range statics {
if data != nil {
data.TotalIn += totalIn
data.TotalOut += totalOut
data.Tax += param.GainTax
if param.IsAddTimes {
data.GameTimes++
if param.Gain > 0 {
data.WinGameTimes++
data.WinGameTimesNum++
data.LoseGameTimesNum = 0
} else if param.Gain < 0 {
data.LoseGameTimes++
data.LoseGameTimesNum++
data.WinGameTimesNum = 0
} else {
data.DrawGameTimes++
data.WinGameTimesNum = 0
data.LoseGameTimesNum = 0
}
}
}
}
// 玩家身上元数据
if param.IsAddTimes {
p.GameTimes++
}
if param.Gain > 0 {
if param.IsAddTimes {
p.WinTimes++
}
p.WinCoin += totalOut
p.TaxCoin += param.GainTax
} else if param.Gain < 0 {
if param.IsAddTimes {
p.FailTimes++
}
p.FailCoin += totalIn
} else {
if param.IsAddTimes {
p.DrawTimes++
}
}
}
func (this *Scene) TryRelease() { func (this *Scene) TryRelease() {
if !this.IsMatchScene() && this.realPlayerNum == 0 { if !this.IsMatchScene() && this.realPlayerNum == 0 {
this.Destroy(true) this.Destroy(true)
} }
} }
//type PlayerGamePoolParam struct {
// SnId int32
// HasRobotGaming bool // 是否有机器人玩本局游戏
// Gain int64 // 普通非黑白,非新手,非机器人的玩家输赢总额,需要扣税后的值(赢分扣税)
//}
// PushGamePool 将普通非黑白,新手,机器人的玩家输赢金额放入场次水池
//func (this *Scene) PushGamePool(param *PlayerGamePoolParam) {
// if this.IsMatchScene() || this.IsPrivateScene() || (this.IsFreePublic() && !param.HasRobotGaming) {
// return
// }
// p := this.GetPlayer(param.SnId)
// _, isNovice := p.NoviceOdds(this.GameId)
// if p == nil || p.IsRob || p.WBLevel != 0 || isNovice {
// return
// }
// CoinPoolMgr.PushCoin(this.GetGameFreeId(), this.GroupId, this.Platform, -param.Gain)
//}

View File

@ -430,18 +430,18 @@ func (this *SceneStateCaiShenStart) OnPlayerOp(s *base.Scene, p *base.Player, op
//水池设置 //水池设置
coinPoolSetting := base.CoinPoolMgr.GetCoinPoolSetting(sceneEx.Platform, sceneEx.GetGameFreeId(), sceneEx.GroupId) coinPoolSetting := base.CoinPoolMgr.GetCoinPoolSetting(sceneEx.Platform, sceneEx.GetGameFreeId(), sceneEx.GroupId)
//baseRate := coinPoolSetting.GetBaseRate() //基础赔率 //baseRate := coinPoolSetting.GetBaseRate() //基础赔率
ctroRate := 500 //调节赔率 暗税系数 ctroRate := coinPoolSetting.GetCtrlRate() //调节赔率 暗税系数
jackpotRate := ctroRate //奖池系数 jackpotRate := ctroRate //奖池系数
logger.Logger.Tracef("CaiShenRates [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate, ctroRate) logger.Logger.Tracef("CaiShenRates [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate, ctroRate)
playerEx.IsFNovice(sceneEx.KeyGameId) playerEx.IsFNovice(sceneEx.KeyGameId)
isFoolPlayer := false isFoolPlayer := playerEx.IsFoolPlayer[sceneEx.KeyGameId]
var gamePoolCoin int64 var gamePoolCoin int64
//if isFoolPlayer { if isFoolPlayer {
// gamePoolCoin = base.CoinPoolMgr.GetNoviceCoinPool(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额 gamePoolCoin = base.CoinPoolMgr.GetNoviceCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额
//} else { } else {
gamePoolCoin = base.CoinPoolMgr.GetCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额 gamePoolCoin = base.CoinPoolMgr.GetCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额
//} }
prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额 prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额
// 奖池参数 // 奖池参数
@ -483,7 +483,7 @@ func (this *SceneStateCaiShenStart) OnPlayerOp(s *base.Scene, p *base.Player, op
var slotDataIsOk bool var slotDataIsOk bool
for { for {
var symbolType rule.Symbol var symbolType rule.Symbol
if gamePoolCoin < int64(coinPoolSetting.GetLowerLimit()) { // userInfo.prizeFund < limit * roomId if gamePoolCoin < coinPoolSetting.GetLowerLimit() { // userInfo.prizeFund < limit * roomId
symbolType = rule.SYMBOL1 symbolType = rule.SYMBOL1
} else { } else {
symbolType = rule.SYMBOL2 symbolType = rule.SYMBOL2
@ -569,8 +569,12 @@ func (this *SceneStateCaiShenStart) OnPlayerOp(s *base.Scene, p *base.Player, op
playerEx.taxCoin = spinRes.TotalTaxScore playerEx.taxCoin = spinRes.TotalTaxScore
playerEx.AddServiceFee(playerEx.taxCoin) playerEx.AddServiceFee(playerEx.taxCoin)
} }
p.StaticsLaba(sceneEx.KeyGameId, sceneEx.KeyGamefreeId, totalBetValue, totalWinScore+spinRes.BonusGame.GetTotalPrizeValue()+spinRes.TotalTaxScore) sceneEx.StaticsLaba(&base.StaticLabaParam{
SnId: playerEx.SnId,
Gain: totalWinScore + spinRes.BonusGame.GetTotalPrizeValue() - totalBetValue,
GainTax: spinRes.TotalTaxScore,
IsAddTimes: true,
})
this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, caishen.OpResultCode_OPRC_Sucess, append(params[:1], playerEx.betLines...)) this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, caishen.OpResultCode_OPRC_Sucess, append(params[:1], playerEx.betLines...))
//免费次数 //免费次数
@ -995,8 +999,8 @@ func CaiShenCheckAndSaveLog(sceneEx *CaiShenSceneData, playerEx *CaiShenPlayerDa
//changeCoin := playerEx.Coin - playerEx.StartCoin //changeCoin := playerEx.Coin - playerEx.StartCoin
changeCoin := playerEx.winCoin - playerEx.taxCoin - playerEx.CurrentBet changeCoin := playerEx.winCoin - playerEx.taxCoin - playerEx.CurrentBet
startCoin := playerEx.Coin - changeCoin startCoin := playerEx.Coin - changeCoin
playerEx.SaveSceneCoinLog(startCoin, changeCoin, //playerEx.SaveSceneCoinLog(startCoin, changeCoin,
playerEx.Coin, playerEx.CurrentBet, playerEx.taxCoin, playerEx.winCoin, playerEx.jackpotWinCoin, playerEx.smallGameWinCoin) // playerEx.Coin, playerEx.CurrentBet, playerEx.taxCoin, playerEx.winCoin, playerEx.jackpotWinCoin, playerEx.smallGameWinCoin)
//log2 //log2
playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin
@ -1055,15 +1059,8 @@ func CaiShenCheckAndSaveLog(sceneEx *CaiShenSceneData, playerEx *CaiShenPlayerDa
Bet: proto.Int64(playerEx.CurrentBet), Bet: proto.Int64(playerEx.CurrentBet),
Gain: proto.Int64(playerEx.RollGameType.BaseResult.ChangeCoin), Gain: proto.Int64(playerEx.RollGameType.BaseResult.ChangeCoin),
Tax: proto.Int64(playerEx.taxCoin), Tax: proto.Int64(playerEx.taxCoin),
OtherTax: 0,
Coin: proto.Int64(playerEx.GetCoin()), Coin: proto.Int64(playerEx.GetCoin()),
FlowCoin: 0,
Lottery: 0,
Kind: 0,
Card: nil,
GameCoinTs: proto.Int64(playerEx.GameCoinTs), GameCoinTs: proto.Int64(playerEx.GameCoinTs),
WBGain: 0,
WinState: 0,
} }
gwPlayerBet := &server.GWPlayerData{ gwPlayerBet := &server.GWPlayerData{
SceneId: proto.Int(sceneEx.SceneId), SceneId: proto.Int(sceneEx.SceneId),

View File

@ -441,6 +441,8 @@ func CreatePlayerData(p *base.Player) *chesstitians.ChesstitiansPlayerData {
Pos: proto.Int(p.GetPos()), Pos: proto.Int(p.GetPos()),
ChessGrade: proto.Int64(p.ChessGrade), ChessGrade: proto.Int64(p.ChessGrade),
IsRob: proto.Bool(p.IsRob), IsRob: proto.Bool(p.IsRob),
Level: proto.Int64(p.Level),
Exp: proto.Int64(p.Exp),
} }
ex, ok := p.GetExtraData().(*PlayerEx) ex, ok := p.GetExtraData().(*PlayerEx)
if ok { if ok {
@ -1313,10 +1315,6 @@ func (this *SceneStateBilled) OnEnter(s *base.Scene) {
if isSave { if isSave {
// 牌局记录 // 牌局记录
sceneEx.SaveGameDetailedLog(logid, info, &base.GameDetailedParam{}) sceneEx.SaveGameDetailedLog(logid, info, &base.GameDetailedParam{})
if !sceneEx.IsMatchScene() {
sceneEx.SetSystemCoinOut(sceneEx.SystemCoinOut())
base.CoinPoolMgr.PushCoin(sceneEx.GetCoinSceneTypeId(), sceneEx.GetGroupId(), sceneEx.GetPlatform(), sceneEx.GetSystemCoinOut())
}
} }
} }
sceneEx.NotifySceneRoundPause() sceneEx.NotifySceneRoundPause()

View File

@ -419,17 +419,17 @@ func (this *SceneStateEasterIslandStart) OnPlayerOp(s *base.Scene, p *base.Playe
taxRate = 500 taxRate = 500
} }
coinPoolSetting := base.CoinPoolMgr.GetCoinPoolSetting(sceneEx.Platform, sceneEx.GetGameFreeId(), sceneEx.GroupId) coinPoolSetting := base.CoinPoolMgr.GetCoinPoolSetting(sceneEx.Platform, sceneEx.GetGameFreeId(), sceneEx.GroupId)
ctroRate := 500 //调节赔率 暗税系数 ctroRate := coinPoolSetting.GetCtrlRate() //调节赔率 暗税系数
logger.Logger.Tracef("EasterIslandRates [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate, ctroRate) logger.Logger.Tracef("EasterIslandRates [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate, ctroRate)
playerEx.IsFNovice(sceneEx.KeyGameId) playerEx.IsFNovice(sceneEx.KeyGameId)
isFoolPlayer := false isFoolPlayer := playerEx.IsFoolPlayer[sceneEx.KeyGameId]
var gamePoolCoin int64 var gamePoolCoin int64
//if isFoolPlayer { if isFoolPlayer {
// gamePoolCoin = base.CoinPoolMgr.GetNoviceCoinPool(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额 gamePoolCoin = base.CoinPoolMgr.GetNoviceCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额
//} else { } else {
gamePoolCoin = base.CoinPoolMgr.GetCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额 gamePoolCoin = base.CoinPoolMgr.GetCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额
//} }
prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额 prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额
jackpotParams := sceneEx.DbGameFree.GetJackpot() // 奖池参数 jackpotParams := sceneEx.DbGameFree.GetJackpot() // 奖池参数
var jackpotInit = int64(jackpotParams[rule.EL_JACKPOT_InitJackpot] * sceneEx.DbGameFree.GetBaseScore()) //奖池初始值 var jackpotInit = int64(jackpotParams[rule.EL_JACKPOT_InitJackpot] * sceneEx.DbGameFree.GetBaseScore()) //奖池初始值
@ -466,7 +466,7 @@ func (this *SceneStateEasterIslandStart) OnPlayerOp(s *base.Scene, p *base.Playe
var slotDataIsOk bool var slotDataIsOk bool
for { for {
var symbolType rule.Symbol var symbolType rule.Symbol
if gamePoolCoin < int64(coinPoolSetting.GetLowerLimit()) { // userInfo.prizeFund < limit * roomId if gamePoolCoin < coinPoolSetting.GetLowerLimit() { // userInfo.prizeFund < limit * roomId
symbolType = rule.SYMBOL1 symbolType = rule.SYMBOL1
} else { } else {
symbolType = rule.SYMBOL2 symbolType = rule.SYMBOL2
@ -547,8 +547,12 @@ func (this *SceneStateEasterIslandStart) OnPlayerOp(s *base.Scene, p *base.Playe
playerEx.taxCoin = spinRes.TotalTaxScore playerEx.taxCoin = spinRes.TotalTaxScore
playerEx.AddServiceFee(playerEx.taxCoin) playerEx.AddServiceFee(playerEx.taxCoin)
} }
p.StaticsLaba(sceneEx.KeyGameId, sceneEx.KeyGamefreeId, totalBetValue, totalWinScore+spinRes.BonusGame.GetTotalPrizeValue()+spinRes.TotalTaxScore) sceneEx.StaticsLaba(&base.StaticLabaParam{
SnId: playerEx.SnId,
Gain: totalWinScore + spinRes.BonusGame.GetTotalPrizeValue() - totalBetValue,
GainTax: spinRes.TotalTaxScore,
IsAddTimes: true,
})
this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, easterisland.OpResultCode_OPRC_Sucess, append(params[:1], playerEx.betLines...)) this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, easterisland.OpResultCode_OPRC_Sucess, append(params[:1], playerEx.betLines...))
var isFreeFlag bool var isFreeFlag bool
@ -864,8 +868,8 @@ func EasterIslandCheckAndSaveLog(sceneEx *EasterIslandSceneData, playerEx *Easte
//changeCoin := playerEx.Coin - playerEx.StartCoin //changeCoin := playerEx.Coin - playerEx.StartCoin
changeCoin := playerEx.winCoin - playerEx.taxCoin - playerEx.CurrentBet changeCoin := playerEx.winCoin - playerEx.taxCoin - playerEx.CurrentBet
startCoin := playerEx.Coin - changeCoin startCoin := playerEx.Coin - changeCoin
playerEx.SaveSceneCoinLog(startCoin, changeCoin, //playerEx.SaveSceneCoinLog(startCoin, changeCoin,
playerEx.Coin, playerEx.CurrentBet, playerEx.taxCoin, playerEx.winCoin, playerEx.jackpotWinCoin, playerEx.smallGameWinCoin) // playerEx.Coin, playerEx.CurrentBet, playerEx.taxCoin, playerEx.winCoin, playerEx.jackpotWinCoin, playerEx.smallGameWinCoin)
//log2 //log2
playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin

View File

@ -942,11 +942,11 @@ func (this *FishingSceneData) fishSettlements(fishs []*Fish, player *FishingPlay
fishlogger.Infof("玩家:%v ,鱼死亡扣除金币池: %v ,当前金币池剩余:%v", player.SnId, coin, player.MoneyPond) fishlogger.Infof("玩家:%v ,鱼死亡扣除金币池: %v ,当前金币池剩余:%v", player.SnId, coin, player.MoneyPond)
fishlogger.Infof("fishSettlements player %v coin %v dropCoin %v , moneyPond = %v", player.SnId, player.CoinCache, coin, player.MoneyPond) fishlogger.Infof("fishSettlements player %v coin %v dropCoin %v , moneyPond = %v", player.SnId, player.CoinCache, coin, player.MoneyPond)
pack.AddExp = sumExp pack.AddExp = sumExp
oldLevel := player.FishLevel oldLevel := player.Level
player.AddPlayerExp(int64(sumExp)) player.AddPlayerExp(int64(sumExp))
if oldLevel != player.FishLevel { if oldLevel != player.Level {
//触发炮倍解锁事件 //触发炮倍解锁事件
player.PlayerEvent(fishing.Event_Player_UpLevel, player.FishLevel) player.PlayerEvent(fishing.Event_Player_UpLevel, player.Level)
} }
pack.CurrentPlayerCoin = proto.Int64(player.CoinCache) pack.CurrentPlayerCoin = proto.Int64(player.CoinCache)
proto.SetDefaults(pack) proto.SetDefaults(pack)

View File

@ -1,7 +1,6 @@
package fishing package fishing
import ( import (
"math"
"mongo.games.com/game/common" "mongo.games.com/game/common"
"mongo.games.com/game/gamerule/fishing" "mongo.games.com/game/gamerule/fishing"
"mongo.games.com/game/gamesrv/base" "mongo.games.com/game/gamesrv/base"
@ -99,8 +98,8 @@ func (this *ScenePolicyFishing) OnPlayerLeave(s *base.Scene, p *base.Player, rea
if playerEx.GetCurrentCoin() == 0 { if playerEx.GetCurrentCoin() == 0 {
playerEx.SetCurrentCoin(playerEx.GetTakeCoin()) playerEx.SetCurrentCoin(playerEx.GetTakeCoin())
} }
playerEx.SaveSceneCoinLog(playerEx.GetCurrentCoin(), int64(playerEx.CoinCache-playerEx.GetCurrentCoin()), //playerEx.SaveSceneCoinLog(playerEx.GetCurrentCoin(), int64(playerEx.CoinCache-playerEx.GetCurrentCoin()),
playerEx.GetCoin(), 0, int64(math.Floor(playerEx.taxCoin+0.5)), playerEx.winCoin, 0, 0) // playerEx.GetCoin(), 0, int64(math.Floor(playerEx.taxCoin+0.5)), playerEx.winCoin, 0, 0)
playerEx.SetCurrentCoin(playerEx.GetCoin()) playerEx.SetCurrentCoin(playerEx.GetCoin())
} }
} }
@ -221,8 +220,8 @@ func FishingSendRoomInfo(p *base.Player, sceneEx *FishingSceneData) {
NiceId: proto.Int32(pp.NiceId), NiceId: proto.Int32(pp.NiceId),
UnMaxPower: proto.Int64(pp.UnMaxPower), UnMaxPower: proto.Int64(pp.UnMaxPower),
UnPowerList: pp.PowerList, UnPowerList: pp.PowerList,
FishLevel: proto.Int64(pp.FishLevel), Level: proto.Int64(pp.Level),
FishExp: proto.Int64(pp.FishExp), Exp: proto.Int64(pp.Exp),
} }
for _, v := range pp.RobotSnIds { for _, v := range pp.RobotSnIds {
pd.RobotSnIds = append(pd.RobotSnIds, v) pd.RobotSnIds = append(pd.RobotSnIds, v)
@ -586,8 +585,8 @@ func (this *SceneBaseStateFishing) OnPlayerEvent(s *base.Scene, p *base.Player,
NiceId: proto.Int32(playerEx.NiceId), NiceId: proto.Int32(playerEx.NiceId),
UnMaxPower: proto.Int64(playerEx.UnMaxPower), UnMaxPower: proto.Int64(playerEx.UnMaxPower),
UnPowerList: playerEx.PowerList, UnPowerList: playerEx.PowerList,
FishLevel: proto.Int64(playerEx.FishLevel), Level: proto.Int64(playerEx.Level),
FishExp: proto.Int64(playerEx.FishExp), Exp: proto.Int64(playerEx.Exp),
}, },
} }
for _, v := range playerEx.RobotSnIds { for _, v := range playerEx.RobotSnIds {

View File

@ -397,7 +397,7 @@ func (this *SceneStateIceAgeStart) OnPlayerOp(s *base.Scene, p *base.Player, opc
//水池设置 //水池设置
coinPoolSetting := base.GetCoinPoolMgr().GetCoinPoolSetting(sceneEx.GetPlatform(), sceneEx.GetGameFreeId(), sceneEx.GetGroupId()) coinPoolSetting := base.GetCoinPoolMgr().GetCoinPoolSetting(sceneEx.GetPlatform(), sceneEx.GetGameFreeId(), sceneEx.GetGroupId())
//baseRate := coinPoolSetting.GetBaseRate() //基础赔率 //baseRate := coinPoolSetting.GetBaseRate() //基础赔率
ctroRate := 500 //调节赔率 暗税系数 ctroRate := coinPoolSetting.GetCtrlRate() //调节赔率 暗税系数
//if baseRate >= 10000 || baseRate <= 0 || ctroRate < 0 || ctroRate >= 1000 || baseRate+ctroRate > 9900 { //if baseRate >= 10000 || baseRate <= 0 || ctroRate < 0 || ctroRate >= 1000 || baseRate+ctroRate > 9900 {
// logger.Logger.Warnf("IceAgeErrorBaseRate [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, baseRate, ctroRate) // logger.Logger.Warnf("IceAgeErrorBaseRate [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, baseRate, ctroRate)
// baseRate = 9700 // baseRate = 9700
@ -408,13 +408,13 @@ func (this *SceneStateIceAgeStart) OnPlayerOp(s *base.Scene, p *base.Player, opc
logger.Logger.Tracef("IceAgeRates [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate, ctroRate) logger.Logger.Tracef("IceAgeRates [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate, ctroRate)
playerEx.IsFNovice(sceneEx.KeyGameId) playerEx.IsFNovice(sceneEx.KeyGameId)
isFoolPlayer := false isFoolPlayer := playerEx.IsFoolPlayer[sceneEx.KeyGameId]
var gamePoolCoin int64 var gamePoolCoin int64
//if isFoolPlayer { if isFoolPlayer {
// gamePoolCoin = base.CoinPoolMgr.GetNoviceCoinPool(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额 gamePoolCoin = base.CoinPoolMgr.GetNoviceCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额
//} else { } else {
gamePoolCoin = base.CoinPoolMgr.GetCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额 gamePoolCoin = base.CoinPoolMgr.GetCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额
//} }
prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额 prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额
var jackpotParam = sceneEx.GetDBGameFree().GetJackpot() // 奖池参数 var jackpotParam = sceneEx.GetDBGameFree().GetJackpot() // 奖池参数
@ -579,7 +579,12 @@ func (this *SceneStateIceAgeStart) OnPlayerOp(s *base.Scene, p *base.Player, opc
playerEx.taxCoin = spinRes.TotalTaxScore playerEx.taxCoin = spinRes.TotalTaxScore
playerEx.AddServiceFee(playerEx.taxCoin) playerEx.AddServiceFee(playerEx.taxCoin)
} }
p.StaticsLaba(sceneEx.KeyGameId, sceneEx.KeyGamefreeId, totalBetValue, spinRes.TotalPrizeLine+spinRes.TotalPrizeBonus+spinRes.TotalTaxScore) sceneEx.StaticsLaba(&base.StaticLabaParam{
SnId: playerEx.SnId,
Gain: spinRes.TotalPrizeLine + spinRes.TotalPrizeBonus - totalBetValue,
GainTax: spinRes.TotalTaxScore,
IsAddTimes: true,
})
var isFreeFlag bool var isFreeFlag bool
//免费次数 //免费次数
@ -913,8 +918,8 @@ func IceAgeCheckAndSaveLog(sceneEx *IceAgeSceneData, playerEx *IceAgePlayerData)
//changeCoin := playerEx.GetCoin() - playerEx.GetStartCoin() //changeCoin := playerEx.GetCoin() - playerEx.GetStartCoin()
changeCoin := playerEx.winCoin - playerEx.taxCoin - playerEx.CurrentBet changeCoin := playerEx.winCoin - playerEx.taxCoin - playerEx.CurrentBet
startCoin := playerEx.Coin - changeCoin startCoin := playerEx.Coin - changeCoin
playerEx.SaveSceneCoinLog(startCoin, changeCoin, //playerEx.SaveSceneCoinLog(startCoin, changeCoin,
playerEx.GetCoin(), playerEx.GetCurrentBet(), playerEx.taxCoin, playerEx.winCoin, playerEx.jackpotWinCoin, playerEx.smallGameWinCoin) // playerEx.GetCoin(), playerEx.GetCurrentBet(), playerEx.taxCoin, playerEx.winCoin, playerEx.jackpotWinCoin, playerEx.smallGameWinCoin)
//log2 //log2
playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin

View File

@ -440,13 +440,16 @@ func (s *RichBlessedSceneData) SendPlayerBet(p *RichBlessedPlayerData) {
betCoin = 0 betCoin = 0
} }
playerBet := &server.PlayerData{ playerBet := &server.PlayerData{
SnId: proto.Int32(p.SnId), SnId: proto.Int32(p.SnId),
Bet: proto.Int64(betCoin), Bet: proto.Int64(betCoin),
Gain: proto.Int64(p.Coin - p.startCoin), Gain: proto.Int64(p.Coin - p.startCoin),
Tax: proto.Int64(p.taxCoin), Tax: proto.Int64(p.taxCoin),
Coin: p.Coin,
GameCoinTs: p.GameCoinTs,
} }
gwPlayerBet := &server.GWPlayerData{ gwPlayerBet := &server.GWPlayerData{
GameFreeId: proto.Int32(s.DbGameFree.GetId()), GameFreeId: proto.Int32(s.DbGameFree.GetId()),
SceneId: int32(s.SceneId),
} }
gwPlayerBet.Datas = append(gwPlayerBet.Datas, playerBet) gwPlayerBet.Datas = append(gwPlayerBet.Datas, playerBet)
s.SyncPlayerDatas(&base.PlayerDataParam{ s.SyncPlayerDatas(&base.PlayerDataParam{

View File

@ -1126,14 +1126,6 @@ func (this *StateBilled) OnEnter(s *base.Scene) {
// 本局下注才记录 // 本局下注才记录
if sceneEx.logic.IsCurRoundBet(playerEx.CurBetData) { if sceneEx.logic.IsCurRoundBet(playerEx.CurBetData) {
sceneEx.Statistics(&base.StaticParam{
SnId: playerEx.SnId,
Gain: playerEx.gainCoin,
GainTax: playerEx.taxCoin,
IsAddTimes: true,
HasRobotGaming: sceneEx.robotNum > 0,
})
logger.Logger.Trace("SmallRocketSaveLog Save ", playerEx.SnId) logger.Logger.Trace("SmallRocketSaveLog Save ", playerEx.SnId)
TotalBetValue := sceneEx.logic.GetRoundBetCoin(playerEx.CurBetData) TotalBetValue := sceneEx.logic.GetRoundBetCoin(playerEx.CurBetData)
@ -1142,7 +1134,13 @@ func (this *StateBilled) OnEnter(s *base.Scene) {
changeCoin := playerEx.gainCoin - playerEx.taxCoin - int64(TotalBetValue) changeCoin := playerEx.gainCoin - playerEx.taxCoin - int64(TotalBetValue)
startCoin := playerEx.Coin - changeCoin startCoin := playerEx.Coin - changeCoin
playerEx.SaveSceneCoinLog(startCoin, changeCoin, playerEx.GetCoin(), int64(TotalBetValue), playerEx.taxCoin, playerEx.gainCoin, 0, 0) sceneEx.StaticsLaba(&base.StaticLabaParam{
SnId: playerEx.SnId,
Gain: changeCoin,
GainTax: playerEx.taxCoin,
IsAddTimes: true,
})
//playerEx.SaveSceneCoinLog(startCoin, changeCoin, playerEx.GetCoin(), int64(TotalBetValue), playerEx.taxCoin, playerEx.gainCoin, 0, 0)
//GainTotalBetVal := sceneEx.logic.GetRoundGainCoin(playerEx.betData, ) //GainTotalBetVal := sceneEx.logic.GetRoundGainCoin(playerEx.betData, )
LogBaseResult := model.SmallRocketBaseResultType{} LogBaseResult := model.SmallRocketBaseResultType{}
@ -1211,23 +1209,21 @@ func (this *StateBilled) OnEnter(s *base.Scene) {
// 提前离开的 // 提前离开的
for _, playerEx := range sceneEx.PlayerBackup { for _, playerEx := range sceneEx.PlayerBackup {
if playerEx != nil && playerEx.isBilled { if playerEx != nil && playerEx.isBilled {
if sceneEx.logic.IsCurRoundBet(playerEx.CurBetData) {
sceneEx.Statistics(&base.StaticParam{
SnId: playerEx.SnId,
Gain: playerEx.gainCoin,
GainTax: playerEx.taxCoin,
IsAddTimes: true,
HasRobotGaming: sceneEx.robotNum > 0,
})
}
TotalBetValue := sceneEx.logic.GetRoundBetCoin(playerEx.CurBetData) TotalBetValue := sceneEx.logic.GetRoundBetCoin(playerEx.CurBetData)
// 统计金币变动 // 统计金币变动
changeCoin := playerEx.gainCoin - playerEx.taxCoin - int64(TotalBetValue) changeCoin := playerEx.gainCoin - playerEx.taxCoin - int64(TotalBetValue)
startCoin := playerEx.Coin - changeCoin startCoin := playerEx.Coin - changeCoin
// playerEx.SaveSceneCoinLog(startCoin, changeCoin, playerEx.Coin, int64(TotalBetValue), playerEx.taxCoin, playerEx.gainCoin, 0, 0) if sceneEx.logic.IsCurRoundBet(playerEx.CurBetData) {
sceneEx.StaticsLaba(&base.StaticLabaParam{
SnId: playerEx.SnId,
Gain: changeCoin,
GainTax: playerEx.taxCoin,
IsAddTimes: true,
})
}
//playerEx.SaveSceneCoinLog(startCoin, changeCoin, playerEx.Coin, int64(TotalBetValue), playerEx.taxCoin, playerEx.gainCoin, 0, 0)
LogBaseResult := model.SmallRocketBaseResultType{} LogBaseResult := model.SmallRocketBaseResultType{}
LogBaseResult.RoomId = int32(sceneEx.GetSceneId()) LogBaseResult.RoomId = int32(sceneEx.GetSceneId())

View File

@ -395,18 +395,18 @@ func (this *SceneStateTamQuocStart) OnPlayerOp(s *base.Scene, p *base.Player, op
} }
//水池设置 //水池设置
coinPoolSetting := base.CoinPoolMgr.GetCoinPoolSetting(sceneEx.Platform, sceneEx.GetGameFreeId(), sceneEx.GroupId) coinPoolSetting := base.CoinPoolMgr.GetCoinPoolSetting(sceneEx.Platform, sceneEx.GetGameFreeId(), sceneEx.GroupId)
ctroRate := 500 //调节赔率 暗税系数 ctroRate := coinPoolSetting.GetCtrlRate() //调节赔率 暗税系数
jackpotRate := ctroRate //奖池系数 jackpotRate := ctroRate //奖池系数
logger.Logger.Tracef("TamQuocRates [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate, ctroRate) logger.Logger.Tracef("TamQuocRates [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate, ctroRate)
playerEx.IsFNovice(sceneEx.KeyGameId) playerEx.IsFNovice(sceneEx.KeyGameId)
isFoolPlayer := false isFoolPlayer := playerEx.IsFoolPlayer[sceneEx.KeyGameId]
var gamePoolCoin int64 var gamePoolCoin int64
//if isFoolPlayer { if isFoolPlayer {
// gamePoolCoin = base.CoinPoolMgr.GetNoviceCoinPool(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额 gamePoolCoin = base.CoinPoolMgr.GetNoviceCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额
//} else { } else {
gamePoolCoin = base.CoinPoolMgr.GetCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额 gamePoolCoin = base.CoinPoolMgr.GetCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额
//} }
prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额 prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额
// 奖池参数 // 奖池参数
@ -442,7 +442,7 @@ func (this *SceneStateTamQuocStart) OnPlayerOp(s *base.Scene, p *base.Player, op
} }
var symbolType rule.Symbol var symbolType rule.Symbol
if gamePoolCoin <= int64(coinPoolSetting.GetLowerLimit()) { // 水池不足 if gamePoolCoin <= coinPoolSetting.GetLowerLimit() { // 水池不足
symbolType = rule.SYMBOL1 symbolType = rule.SYMBOL1
} else { } else {
symbolType = rule.SYMBOL2 symbolType = rule.SYMBOL2
@ -553,7 +553,12 @@ func (this *SceneStateTamQuocStart) OnPlayerOp(s *base.Scene, p *base.Player, op
playerEx.taxCoin = spinRes.TotalTaxScore playerEx.taxCoin = spinRes.TotalTaxScore
playerEx.AddServiceFee(playerEx.taxCoin) playerEx.AddServiceFee(playerEx.taxCoin)
} }
p.StaticsLaba(sceneEx.KeyGameId, sceneEx.KeyGamefreeId, totalBetValue, totalWinScore+spinRes.BonusGame.GetTotalPrizeValue()+spinRes.TotalTaxScore) sceneEx.StaticsLaba(&base.StaticLabaParam{
SnId: playerEx.SnId,
Gain: totalWinScore + spinRes.BonusGame.GetTotalPrizeValue() - totalBetValue,
GainTax: spinRes.TotalTaxScore,
IsAddTimes: true,
})
this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, tamquoc.OpResultCode_OPRC_Sucess, append(params[:1], playerEx.betLines...)) this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, tamquoc.OpResultCode_OPRC_Sucess, append(params[:1], playerEx.betLines...))
@ -749,8 +754,8 @@ func TamQuocCheckAndSaveLog(sceneEx *TamQuocSceneData, playerEx *TamQuocPlayerDa
//changeCoin := playerEx.Coin - playerEx.StartCoin //changeCoin := playerEx.Coin - playerEx.StartCoin
changeCoin := playerEx.winCoin - playerEx.taxCoin - playerEx.CurrentBet changeCoin := playerEx.winCoin - playerEx.taxCoin - playerEx.CurrentBet
startCoin := playerEx.Coin - changeCoin startCoin := playerEx.Coin - changeCoin
playerEx.SaveSceneCoinLog(startCoin, changeCoin, //playerEx.SaveSceneCoinLog(startCoin, changeCoin,
playerEx.Coin, playerEx.CurrentBet, playerEx.taxCoin, playerEx.winCoin, playerEx.jackpotWinCoin, playerEx.smallGameWinCoin) // playerEx.Coin, playerEx.CurrentBet, playerEx.taxCoin, playerEx.winCoin, playerEx.jackpotWinCoin, playerEx.smallGameWinCoin)
//log2 //log2
playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin

View File

@ -198,6 +198,8 @@ func (this *SceneEx) ThirteenWaterCreateRoomInfoPacket(s *base.Scene, p *base.Pl
IsStand: proto.Bool(playerEx.isStand), IsStand: proto.Bool(playerEx.isStand),
IsConfirm: proto.Bool(playerEx.deterMine), IsConfirm: proto.Bool(playerEx.deterMine),
RoleId: playerEx.PlayerData.GetRoleId(), RoleId: playerEx.PlayerData.GetRoleId(),
Level: proto.Int64(playerEx.PlayerData.Level),
Exp: proto.Int64(playerEx.PlayerData.Exp),
} }
ppp := &thirteen.Poker{} ppp := &thirteen.Poker{}
ppp.IndexType = -1 ppp.IndexType = -1

View File

@ -109,6 +109,8 @@ func (this *PolicyThirteen) OnPlayerEnter(s *base.Scene, p *base.Player) {
HeadOutLine: proto.Int32(p.HeadOutLine), HeadOutLine: proto.Int32(p.HeadOutLine),
VIP: proto.Int32(p.VIP), VIP: proto.Int32(p.VIP),
RoleId: p.PlayerData.GetRoleId(), RoleId: p.PlayerData.GetRoleId(),
Level: proto.Int64(p.Level),
Exp: proto.Int64(p.Exp),
}, },
} }
proto.SetDefaults(pack) proto.SetDefaults(pack)
@ -338,6 +340,8 @@ func (this *PolicyThirteen) OnAudienceSit(s *base.Scene, p *base.Player) {
HeadOutLine: proto.Int32(p.HeadOutLine), HeadOutLine: proto.Int32(p.HeadOutLine),
VIP: proto.Int32(p.VIP), VIP: proto.Int32(p.VIP),
RoleId: p.PlayerData.GetRoleId(), RoleId: p.PlayerData.GetRoleId(),
Level: proto.Int64(p.Level),
Exp: proto.Int64(p.Exp),
}, },
} }
proto.SetDefaults(pack) proto.SetDefaults(pack)
@ -1220,13 +1224,6 @@ func (this *StateBilled) OnEnter(s *base.Scene) {
if playerEx.score[6] > 0 { if playerEx.score[6] > 0 {
playerEx.AddCoin(playerEx.score[6]*int64(sceneEx.GetBaseScore()), common.GainWay_LeaveCombat, base.SyncFlag_ToClient, "system", s.GetSceneName()) playerEx.AddCoin(playerEx.score[6]*int64(sceneEx.GetBaseScore()), common.GainWay_LeaveCombat, base.SyncFlag_ToClient, "system", s.GetSceneName())
} }
sceneEx.Statistics(&base.StaticParam{
SnId: playerEx.SnId,
Gain: playerEx.gainCoin,
GainTax: playerEx.taxCoin,
IsAddTimes: true,
HasRobotGaming: sceneEx.robotNum > 0,
})
billed = append(billed, &thirteen.Billed{ billed = append(billed, &thirteen.Billed{
Pos: proto.Int32(int32(playerEx.Pos)), Pos: proto.Int32(int32(playerEx.Pos)),
Coin: proto.Int64(playerEx.Coin), Coin: proto.Int64(playerEx.Coin),
@ -1316,6 +1313,13 @@ func (this *StateBilled) OnEnter(s *base.Scene) {
person = append(person, p) person = append(person, p)
/// ///
if !o_player.IsRob { if !o_player.IsRob {
sceneEx.Statistics(&base.StaticParam{
SnId: o_player.SnId,
Gain: o_player.gainCoin,
GainTax: o_player.taxCoin,
IsAddTimes: true,
HasRobotGaming: sceneEx.robotNum > 0,
})
//有真人 存真人的映射表 //有真人 存真人的映射表
totalin, totalout := int64(0), int64(0) totalin, totalout := int64(0), int64(0)
if o_player.CurIsWin > 0 { if o_player.CurIsWin > 0 {

View File

@ -1,7 +1,9 @@
package tienlen package tienlen
import ( import (
"math"
"math/rand" "math/rand"
"mongo.games.com/game/protocol/player"
"strconv" "strconv"
"time" "time"
@ -9,6 +11,8 @@ import (
"mongo.games.com/game/gamesrv/base" "mongo.games.com/game/gamesrv/base"
"mongo.games.com/game/proto" "mongo.games.com/game/proto"
"mongo.games.com/game/protocol/tienlen" "mongo.games.com/game/protocol/tienlen"
"mongo.games.com/game/srvdata"
"mongo.games.com/goserver/core/logger"
) )
// 玩家身上的额外数据 // 玩家身上的额外数据
@ -209,3 +213,58 @@ func (this *TienLenPlayerData) LeaveAutoState(s *base.Scene) {
//logger.Logger.Trace("(this *TienLenPlayerData) LeaveAutoState", " player:", this.SnId, " Flag=", this.GetFlag()) //logger.Logger.Trace("(this *TienLenPlayerData) LeaveAutoState", " player:", this.SnId, " Flag=", this.GetFlag())
} }
} }
// 能否用记牌器
func (this *TienLenPlayerData) CanUseRecordItem() bool {
if this.ItemRecExpireTime >= time.Now().Unix() {
return true
}
return false
}
// 更新玩家存钱罐
func (this *TienLenPlayerData) UpdatePigbankCoin(gainTexCoin int64) {
if this.IsRobot() {
return
}
if this.PlayerData.WelfData == nil || this.PlayerData.WelfData.PigBank == nil {
return
}
fGetPropValue := func(propName string) int64 {
pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr()
for _, PropItem := range pool {
if PropItem.PorpName == propName {
return int64(PropItem.PropValue)
}
}
return 0
}
BankCoinMax := fGetPropValue("BankMaxCoin")
pack := &player.SCPigBankCoin{}
if gainTexCoin < 0 {
LoseCoinRate := fGetPropValue("LoseCoinRate")
pack.AddBankCoin = int64(math.Abs(math.Ceil(float64(gainTexCoin) * float64(LoseCoinRate) / 100.0)))
}
if gainTexCoin > 0 {
WinCoinRate := fGetPropValue("WinCoinRate")
pack.AddBankCoin = int64(math.Ceil(float64(gainTexCoin) * float64(WinCoinRate) / 100.0))
}
this.WelfData.PigBank.BankCoin += pack.AddBankCoin
if this.WelfData.PigBank.BankCoin > BankCoinMax {
this.WelfData.PigBank.BankCoin = BankCoinMax
}
pack.BankCoinMax = BankCoinMax
pack.BankCoin = this.WelfData.PigBank.BankCoin
logger.Logger.Trace("-------(this *TienLenPlayerData) UpdatePigbankCoin player SnId:", this.SnId, ";pack: ", pack, ";gainTexCoin: ", gainTexCoin)
this.SendToClient(int(player.PlayerPacketID_PACKET_SCPigBankCoin), pack)
}

View File

@ -611,6 +611,8 @@ func (this *TienLenSceneData) SendHandCard_Match() {
for j := int32(0); j < rule.HandCardNum; j++ { for j := int32(0); j < rule.HandCardNum; j++ {
pack.Cards = append(pack.Cards, seat.cards[j]) pack.Cards = append(pack.Cards, seat.cards[j])
} }
pack.IsOutRecord = seat.CanUseRecordItem()
proto.SetDefaults(pack) proto.SetDefaults(pack)
seat.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) seat.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack)
logger.Logger.Trace("SnId: ", seat.SnId, ";SCTienLenCard: ", pack.Cards) logger.Logger.Trace("SnId: ", seat.SnId, ";SCTienLenCard: ", pack.Cards)
@ -643,6 +645,7 @@ func (this *TienLenSceneData) SendHandCard_Match() {
for j := int32(0); j < rule.HandCardNum; j++ { for j := int32(0); j < rule.HandCardNum; j++ {
pack.Cards = append(pack.Cards, seat.cards[j]) pack.Cards = append(pack.Cards, seat.cards[j])
} }
pack.IsOutRecord = seat.CanUseRecordItem()
proto.SetDefaults(pack) proto.SetDefaults(pack)
seat.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) seat.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack)
logger.Logger.Trace("SnId: ", seat.SnId, ";SCTienLenCard: ", pack.Cards) logger.Logger.Trace("SnId: ", seat.SnId, ";SCTienLenCard: ", pack.Cards)
@ -1093,6 +1096,7 @@ func (this *TienLenSceneData) SendHandCardOdds() {
for j := int32(0); j < rule.HandCardNum; j++ { for j := int32(0); j < rule.HandCardNum; j++ {
pack.Cards = append(pack.Cards, p.cards[j]) pack.Cards = append(pack.Cards, p.cards[j])
} }
pack.IsOutRecord = p.CanUseRecordItem()
proto.SetDefaults(pack) proto.SetDefaults(pack)
p.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) p.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack)
logger.Logger.Trace("SnId: ", p.SnId, ";SCTienLenCard: ", pack) logger.Logger.Trace("SnId: ", p.SnId, ";SCTienLenCard: ", pack)
@ -1717,6 +1721,8 @@ func (this *TienLenSceneData) SendHandCardTest() {
for j := int32(0); j < rule.HandCardNum; j++ { for j := int32(0); j < rule.HandCardNum; j++ {
pack.Cards = append(pack.Cards, int32(seatPlayerEx.cards[j])) pack.Cards = append(pack.Cards, int32(seatPlayerEx.cards[j]))
} }
pack.IsOutRecord = seatPlayerEx.CanUseRecordItem()
proto.SetDefaults(pack) proto.SetDefaults(pack)
seatPlayerEx.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) seatPlayerEx.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack)
logger.Logger.Trace("player_id", seatPlayerEx.SnId, ";SCTienLenCard", pack.Cards) logger.Logger.Trace("player_id", seatPlayerEx.SnId, ";SCTienLenCard", pack.Cards)

View File

@ -363,6 +363,8 @@ func TienLenCreatePlayerData(p *base.Player, rankScore int64) *tienlen.TienLenPl
NiceId: proto.Int32(p.NiceId), NiceId: proto.Int32(p.NiceId),
Pos: proto.Int(p.GetPos()), Pos: proto.Int(p.GetPos()),
RankScore: rankScore, RankScore: rankScore,
Level: proto.Int64(p.Level),
Exp: proto.Int64(p.Exp),
} }
if playerEx != nil { if playerEx != nil {
pd.ThinkLongCnt = playerEx.ThinkLongCnt pd.ThinkLongCnt = playerEx.ThinkLongCnt
@ -382,6 +384,10 @@ func TienLenCreatePlayerData(p *base.Player, rankScore int64) *tienlen.TienLenPl
if len(p.MatchParams) > 1 { if len(p.MatchParams) > 1 {
pd.Lv = p.MatchParams[1] pd.Lv = p.MatchParams[1]
} }
if p.WelfData != nil && p.WelfData.PigBank != nil {
pd.PigBankCoin = p.WelfData.PigBank.BankCoin
}
logger.Logger.Trace("TienLenCreatePlayerData pd : ", pd) logger.Logger.Trace("TienLenCreatePlayerData pd : ", pd)
return pd return pd
@ -502,6 +508,17 @@ func TienLenCreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *TienLen
pack.LastDelCards = append(pack.LastDelCards, lastDelCard) pack.LastDelCards = append(pack.LastDelCards, lastDelCard)
insertNum++ insertNum++
} }
for _, cards := range sceneEx.card_play_action_seq_int32 {
for _, card := range cards {
if card >= 0 {
pack.OutCardRecord = append(pack.OutCardRecord, card)
}
}
}
pack.IsOutRecord = playerEx.CanUseRecordItem()
pack.ItemRecExpireTime = playerEx.ItemRecExpireTime
proto.SetDefaults(pack) proto.SetDefaults(pack)
return pack return pack
} }
@ -1646,6 +1663,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
var sceneTypeScore int64 // 场次额外积分 var sceneTypeScore int64 // 场次额外积分
var vipScore int64 // vip加成 var vipScore int64 // vip加成
var roleScore int64 // 角色加成 var roleScore int64 // 角色加成
var weekCardScore int64 // 周卡加成
var roleAdd int32 var roleAdd int32
var otherScore int64 // 额外总加分 var otherScore int64 // 额外总加分
oldRankScore := losePlayer.GetRankScore(sceneEx.GetDBGameFree().GetRankType()) oldRankScore := losePlayer.GetRankScore(sceneEx.GetDBGameFree().GetRankType())
@ -1682,8 +1700,12 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
// 角色加成分 // 角色加成分
_, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&losePlayer.PlayerData, common.RoleAddRankScore) _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&losePlayer.PlayerData, common.RoleAddRankScore)
roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0)) roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0))
//周卡加成
if losePlayer.GetWeekCardPrivilege(2) {
weekCardScore = int64(math.Ceil(float64(rankScore) * float64(5) / 100.0))
}
} }
otherScore = sceneTypeScore + vipScore + roleScore otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore
losePlayer.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算 losePlayer.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算
} }
losePlayer.winCoin -= gainScore losePlayer.winCoin -= gainScore
@ -1719,6 +1741,13 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
Addition: roleAdd, Addition: roleAdd,
Score: roleScore, Score: roleScore,
}) })
// 周卡加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
} }
isWin := int32(0) isWin := int32(0)
billCoin := losePlayer.bombScore - gainScore billCoin := losePlayer.bombScore - gainScore
@ -1796,6 +1825,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
var rankScore int64 // 排位积分 var rankScore int64 // 排位积分
var sceneTypeScore int64 // 场次额外积分 var sceneTypeScore int64 // 场次额外积分
var vipScore int64 // vip加成 var vipScore int64 // vip加成
var weekCardScore int64 // 周卡加成
var otherScore int64 // 额外总加分 var otherScore int64 // 额外总加分
oldRankScore := lastWinPlayer.GetRankScore(sceneEx.GetDBGameFree().GetRankType()) oldRankScore := lastWinPlayer.GetRankScore(sceneEx.GetDBGameFree().GetRankType())
lastWinScore := rule.GetLoseScore(lastWinPlayer.cards, true) lastWinScore := rule.GetLoseScore(lastWinPlayer.cards, true)
@ -1830,9 +1860,14 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
vipScore = int64(math.Ceil(float64(rankScore) * float64(lastWinPlayer.VipExtra) / 100.0)) vipScore = int64(math.Ceil(float64(rankScore) * float64(lastWinPlayer.VipExtra) / 100.0))
// 角色加成分 // 角色加成分
_, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&lastWinPlayer.PlayerData, common.RoleAddRankScore) _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&lastWinPlayer.PlayerData, common.RoleAddRankScore)
//周卡加成
if lastWinPlayer.GetWeekCardPrivilege(2) {
weekCardScore = int64(math.Ceil(float64(rankScore) * float64(5) / 100.0))
}
roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0)) roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0))
} }
otherScore = sceneTypeScore + vipScore + roleScore otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore
lastWinPlayer.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算 lastWinPlayer.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算
} }
lastWinPlayer.winCoin -= astWinGainScore lastWinPlayer.winCoin -= astWinGainScore
@ -1868,6 +1903,13 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
Addition: roleAdd, Addition: roleAdd,
Score: roleScore, Score: roleScore,
}) })
// 周卡加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
} }
isWin := int32(0) isWin := int32(0)
billCoin := lastWinPlayer.bombScore - astWinGainScore billCoin := lastWinPlayer.bombScore - astWinGainScore
@ -1923,6 +1965,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
var rankScore int64 // 排位积分 var rankScore int64 // 排位积分
var sceneTypeScore int64 // 场次额外积分 var sceneTypeScore int64 // 场次额外积分
var vipScore int64 // vip加成 var vipScore int64 // vip加成
var weekCardScore int64 // 周卡加成
var otherScore int64 // 额外总加分 var otherScore int64 // 额外总加分
oldRankScore := playerEx.GetRankScore(sceneEx.GetDBGameFree().GetRankType()) oldRankScore := playerEx.GetRankScore(sceneEx.GetDBGameFree().GetRankType())
rankScore = loseRankScore rankScore = loseRankScore
@ -1949,8 +1992,12 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
// 角色加成分 // 角色加成分
_, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&playerEx.PlayerData, common.RoleAddRankScore) _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&playerEx.PlayerData, common.RoleAddRankScore)
roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0)) roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0))
//周卡加成
if playerEx.GetWeekCardPrivilege(2) {
weekCardScore = int64(math.Ceil(float64(rankScore) * float64(5) / 100.0))
}
} }
otherScore = sceneTypeScore + vipScore + roleScore otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore
playerEx.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算 playerEx.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算
} }
playerEx.winCoin += gainScore playerEx.winCoin += gainScore
@ -1986,6 +2033,13 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
Addition: roleAdd, Addition: roleAdd,
Score: roleScore, Score: roleScore,
}) })
// 周卡加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
} }
isWin := int32(0) isWin := int32(0)
billCoin := playerEx.bombScore + gainScore billCoin := playerEx.bombScore + gainScore
@ -2040,6 +2094,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
var rankScore int64 // 排位积分 var rankScore int64 // 排位积分
var sceneTypeScore int64 // 场次额外积分 var sceneTypeScore int64 // 场次额外积分
var vipScore int64 // vip加成 var vipScore int64 // vip加成
var weekCardScore int64 // 周卡加成
var otherScore int64 // 额外总加分 var otherScore int64 // 额外总加分
oldRankScore := playerEx.GetRankScore(sceneEx.GetDBGameFree().GetRankType()) oldRankScore := playerEx.GetRankScore(sceneEx.GetDBGameFree().GetRankType())
rankScore = lastWinPlayerRankScore rankScore = lastWinPlayerRankScore
@ -2061,8 +2116,12 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
// 角色加成分 // 角色加成分
_, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&playerEx.PlayerData, common.RoleAddRankScore) _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&playerEx.PlayerData, common.RoleAddRankScore)
roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0)) roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0))
//周卡加成
if playerEx.GetWeekCardPrivilege(2) {
weekCardScore = int64(math.Ceil(float64(rankScore) * float64(5) / 100.0))
}
} }
otherScore = sceneTypeScore + vipScore + roleScore otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore
playerEx.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算 playerEx.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算
} }
playerEx.winCoin += gainScore playerEx.winCoin += gainScore
@ -2098,6 +2157,13 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
Addition: roleAdd, Addition: roleAdd,
Score: roleScore, Score: roleScore,
}) })
// 周卡加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
} }
isWin := int32(0) isWin := int32(0)
billCoin := playerEx.bombScore + gainScore billCoin := playerEx.bombScore + gainScore
@ -2153,6 +2219,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
var rankScore int64 // 排位积分 var rankScore int64 // 排位积分
var sceneTypeScore int64 // 场次额外积分 var sceneTypeScore int64 // 场次额外积分
var vipScore int64 // vip加成 var vipScore int64 // vip加成
var weekCardScore int64 // 周卡加成
var roleScore int64 // 角色加成 var roleScore int64 // 角色加成
var roleAdd int32 var roleAdd int32
var otherScore int64 // 额外总加分 var otherScore int64 // 额外总加分
@ -2219,8 +2286,12 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
// 角色加成分 // 角色加成分
_, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&playerEx.PlayerData, common.RoleAddRankScore) _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&playerEx.PlayerData, common.RoleAddRankScore)
roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0)) roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0))
//周卡加成
if playerEx.GetWeekCardPrivilege(2) {
weekCardScore = int64(math.Ceil(float64(rankScore) * float64(5) / 100.0))
}
} }
otherScore = sceneTypeScore + vipScore + roleScore otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore
playerEx.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算 playerEx.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算
} }
playerEx.winCoin -= gainScore playerEx.winCoin -= gainScore
@ -2257,6 +2328,13 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
Addition: roleAdd, Addition: roleAdd,
Score: roleScore, Score: roleScore,
}) })
// 周卡加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
} }
isWin := int32(0) isWin := int32(0)
@ -2338,6 +2416,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
var sceneTypeScore int64 // 场次额外积分 var sceneTypeScore int64 // 场次额外积分
var vipScore int64 // vip加成 var vipScore int64 // vip加成
var roleScore int64 // 角色加成 var roleScore int64 // 角色加成
var weekCardScore int64 // 周卡加成
var roleAdd int32 var roleAdd int32
var otherScore int64 // 额外总加分 var otherScore int64 // 额外总加分
playerEx := sceneEx.players[winSnid] playerEx := sceneEx.players[winSnid]
@ -2360,7 +2439,11 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
// 角色加成分 // 角色加成分
_, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&playerEx.PlayerData, common.RoleAddRankScore) _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&playerEx.PlayerData, common.RoleAddRankScore)
roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0)) roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0))
otherScore = sceneTypeScore + vipScore + roleScore //周卡加成
if playerEx.GetWeekCardPrivilege(2) {
weekCardScore = int64(math.Ceil(float64(rankScore) * float64(5) / 100.0))
}
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore
playerEx.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) playerEx.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore)
} }
playerEx.winCoin += gainScore playerEx.winCoin += gainScore
@ -2395,6 +2478,13 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
Addition: roleAdd, Addition: roleAdd,
Score: roleScore, Score: roleScore,
}) })
// 周卡加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
isWin := int32(0) isWin := int32(0)
billCoin := playerEx.bombScore + gainScore billCoin := playerEx.bombScore + gainScore
@ -2490,6 +2580,12 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
totalout += (o_player.BombCoin + o_player.BombTaxCoin) totalout += (o_player.BombCoin + o_player.BombTaxCoin)
} }
// 刷新存钱罐
playerEx, _ := s.GetPlayer(o_player.UserId).GetExtraData().(*TienLenPlayerData)
if playerEx != nil && (!(s.IsFreePublic() || s.IsMatchScene())) {
playerEx.UpdatePigbankCoin(o_player.GainCoin)
}
validFlow := totalin + totalout validFlow := totalin + totalout
validBet := common.AbsI64(totalin - totalout) validBet := common.AbsI64(totalin - totalout)
sceneEx.SaveFriendRecord(o_player.UserId, o_player.IsWin, o_player.BillCoin, sceneEx.GetBaseScore()) sceneEx.SaveFriendRecord(o_player.UserId, o_player.IsWin, o_player.BillCoin, sceneEx.GetBaseScore())

View File

@ -14,4 +14,6 @@ for /d %%s in (,*) do (
) )
cd .. cd ..
) )
pause pause

View File

@ -17,36 +17,31 @@ import (
// 登录次数,最后登录最后登出时间并不准确 // 登录次数,最后登录最后登出时间并不准确
type Account struct { type Account struct {
AccountId bson.ObjectId `bson:"_id"` AccountId bson.ObjectId `bson:"_id"`
SnId int32 //玩家账号直接在这里生成 SnId int32 //玩家账号直接在这里生成
UserName string //Service Provider AccountId UserName string //Service Provider AccountId
PassWord string //昵称密码 PassWord string //昵称密码
TelPassWord string //帐号密码 TelPassWord string //帐号密码
BackPassWord string //备份账号密码 BackPassWord string //备份账号密码
//VIP int32 //VIP帐号 等级 Platform string //平台
Platform string //平台 Channel string //渠道
Channel string //渠道 Tel string //电话号码
Promoter string //推广员 Params string //其他参数
SubPromoter string //子推广员 DeviceOs string //系统
InviterId int32 //邀请人ID PackegeTag string //包标识
PromoterTree int32 //推广树ID Package string //包名 android:包名 ios:bundleid
Tel string //电话号码 DeviceInfo string //设备信息
Params string //其他参数 LoginTimes int //登录次数
DeviceOs string //系统 State int64 //冻结到期时间戳
PackegeTag string //包标识 RegisteTime time.Time //注册时间
Package string //包名 android:包名 ios:bundleid LastLoginTime time.Time //最后一次登录时间
DeviceInfo string //设备信息 LastLogoutTime time.Time //最后一次登出时间
LoginTimes int //登录次数 Flag int32 //二次推广用户标记
State int64 //冻结到期时间戳 Remark string //备注信息
RegisteTime time.Time //注册时间 TagKey int32 //包标识关键字
LastLoginTime time.Time //最后一次登录时间 AccountType int32 //1.google 2.facebook
LastLogoutTime time.Time //最后一次登出时间 RegisterTs int64 // 注册时间戳
Flag int32 //二次推广用户标记 TelPassWordExpire int64 // 手机验证码登录过期时间戳
Remark string //备注信息
TagKey int32 //包标识关键字
AccountType int32 //1.google 2.facebook
RegisterTs int64 // 注册时间戳
TelPassWordExpire int64 // 手机验证码登录过期时间戳
} }
func NewAccount() *Account { func NewAccount() *Account {
@ -128,11 +123,7 @@ func InsertAccount(userName, passWord, platform, channel, promoter, params, devi
acc.Platform = platform acc.Platform = platform
acc.Channel = channel acc.Channel = channel
acc.Params = params acc.Params = params
acc.SubPromoter = subPromoter
acc.DeviceOs = deviceOs acc.DeviceOs = deviceOs
acc.Promoter = promoter
acc.InviterId = inviterId
acc.PromoterTree = promoterTree
acc.LastLoginTime = tCur acc.LastLoginTime = tCur
acc.RegisteTime = tCur acc.RegisteTime = tCur
acc.LoginTimes = 1 acc.LoginTimes = 1
@ -166,10 +157,7 @@ func InsertTelAccount(userName, passWord, platform, channel, promoter, params st
acc.TelPassWord = telpassword acc.TelPassWord = telpassword
acc.Platform = platform acc.Platform = platform
acc.Channel = channel acc.Channel = channel
acc.Promoter = promoter
acc.Params = params acc.Params = params
acc.InviterId = inviterId
acc.PromoterTree = promoterTree
acc.LastLoginTime = tCur acc.LastLoginTime = tCur
acc.RegisteTime = tCur acc.RegisteTime = tCur
acc.LoginTimes = 1 acc.LoginTimes = 1
@ -493,13 +481,10 @@ func UpdateAccountPlatformInfo(account string, platform, channel, promoter, invi
return ErrRPClientNoConn return ErrRPClientNoConn
} }
args := &Account{ args := &Account{
AccountId: bson.ObjectIdHex(account), AccountId: bson.ObjectIdHex(account),
Platform: strconv.Itoa(int(platform)), Platform: strconv.Itoa(int(platform)),
Channel: strconv.Itoa(int(channel)), Channel: strconv.Itoa(int(channel)),
Promoter: strconv.Itoa(int(promoter)), PackegeTag: packTag,
PromoterTree: promoterTree,
InviterId: inviterid,
PackegeTag: packTag,
} }
ret := &AccRet{} ret := &AccRet{}
err := rpcCli.CallWithTimeout("AccountSvc.UpdateAccountPlatformInfo", args, ret, time.Second*30) err := rpcCli.CallWithTimeout("AccountSvc.UpdateAccountPlatformInfo", args, ret, time.Second*30)

View File

@ -3,15 +3,11 @@ package model
import "time" import "time"
import "github.com/globalsign/mgo/bson" import "github.com/globalsign/mgo/bson"
// 破产次数统计
var (
BankruptLogCollName = "log_bankrupt"
)
// 破产次数统计 // 破产次数统计
type BankruptLog struct { type BankruptLog struct {
LogId bson.ObjectId `bson:"_id"` LogId bson.ObjectId `bson:"_id"`
SnId int32 //玩家id SnId int32 //玩家id
Channel string // 渠道
Platform string //平台名称 Platform string //平台名称
GameId int //游戏id GameId int //游戏id
GameFreeID int32 //房间id GameFreeID int32 //房间id
@ -26,10 +22,11 @@ func NewBankruptLog() *BankruptLog {
return log return log
} }
func NewBankruptLogEx(snid int32, gamefreeid int32, createtime, usecoin int64, platform string, gameId int) *BankruptLog { func NewBankruptLogEx(snid int32, gamefreeid int32, createtime, usecoin int64, platform, channel string, gameId int) *BankruptLog {
cl := NewBankruptLog() cl := NewBankruptLog()
cl.SnId = snid cl.SnId = snid
cl.Platform = platform cl.Platform = platform
cl.Channel = channel
cl.GameId = gameId cl.GameId = gameId
cl.GameFreeID = gamefreeid cl.GameFreeID = gamefreeid

View File

@ -20,20 +20,22 @@ var (
var CoinPoolSettingDatas = make(map[string]*CoinPoolSetting) var CoinPoolSettingDatas = make(map[string]*CoinPoolSetting)
type CoinPoolSetting struct { type CoinPoolSetting struct {
Id bson.ObjectId `bson:"_id"` Id bson.ObjectId `bson:"_id"`
Platform string // 平台id Platform string // 平台id
GameFreeId int32 // 游戏id GameFreeId int32 // 游戏id
GroupId int32 // 组id GroupId int32 // 组id
ServerId int32 // 服务器id ServerId int32 // 服务器id
InitValue int64 // 初始库存值 InitValue int64 // 初始库存值
LowerLimit int64 // 库存下限 LowerLimit int64 // 库存下限
UpperLimit int64 // 库存上限 UpperLimit int64 // 库存上限
QuDu int64 // 曲度值 QuDu int64 // 曲度值
UpperOdds int32 // 上线初始概率 UpperOdds int32 // 上线初始概率
UpperOddsMax int32 // 上线最大概率 UpperOddsMax int32 // 上线最大概率
LowerOdds int32 // 下线初始概率 LowerOdds int32 // 下线初始概率
LowerOddsMax int32 // 下线最大概率 LowerOddsMax int32 // 下线最大概率
ProfitRate int32 // 收益抽取比例 ProfitRate int32 // 收益抽取比例
CtrlRate int32 // 调节赔率
InitNoviceValue int64 // 新手初始库存值
// 扩展参数 // 扩展参数
ResetTime int64 // 重置时间 ResetTime int64 // 重置时间
UptTime time.Time // 更新时间 UptTime time.Time // 更新时间
@ -57,6 +59,8 @@ func NewCoinPoolSetting(platform string, groupId, gamefreeid, srverId int32, db
cl.ProfitRate = db.ProfitRate cl.ProfitRate = db.ProfitRate
cl.ResetTime = time.Now().Unix() cl.ResetTime = time.Now().Unix()
cl.UptTime = time.Now() cl.UptTime = time.Now()
cl.CtrlRate = db.CtrlRate
cl.InitNoviceValue = db.InitNovicValue
return cl return cl
} }

View File

@ -6,14 +6,13 @@ import (
const ( const (
DATASOURCE_NIL = iota DATASOURCE_NIL = iota
DATASOURCE_HUNDRED //1:百人场 百人牛牛、红黑、龙虎 奔驰宝马 森林舞会 红包 德州牛仔 鱼虾蟹 DATASOURCE_HUNDRED //1:百人场
DATASOURCE_FIGHT //2.对战场 经典牛牛、抢庄牛牛、推饼、赢三张、德州、十三水 斗地主、跑得快 二人麻将 十点半 DATASOURCE_FIGHT //2.对战场
DATASOURCE_ROLL //3.拉霸 水浒装 水果机 足球英豪 女赌神 世界杯 绝地求生 皇家老虎机 财神到 冰河世纪 财神 百战成神 复仇者联盟 复活岛 DATASOURCE_ROLL //3.拉霸
DATASOURCE_FISH //4.捕鱼 DATASOURCE_FISH //4.捕鱼
DATASOURCE_MINI //5.小游戏 candy、caothap、minipoker、luckydice
) )
// 百人场数据类型 ;百人牛牛、红黑、龙虎 奔驰宝马 森林舞会 // 百人场数据类型
func MarshalGameNoteByHUNDRED(hundRed interface{}) (data string, err error) { func MarshalGameNoteByHUNDRED(hundRed interface{}) (data string, err error) {
raw := &RabbitMQDataRaw{ raw := &RabbitMQDataRaw{
Source: DATASOURCE_HUNDRED, Source: DATASOURCE_HUNDRED,
@ -36,7 +35,7 @@ func UnMarshalGameNoteByHUNDRED(data string) (roll interface{}, err error) {
return return
} }
// 对战场数据类型 经典牛牛、抢庄牛牛、推饼、赢三张、德州、十三水 二人麻将、梭哈 // 对战场数据类型
func MarshalGameNoteByFIGHT(fight interface{}) (data string, err error) { func MarshalGameNoteByFIGHT(fight interface{}) (data string, err error) {
raw := &RabbitMQDataRaw{ raw := &RabbitMQDataRaw{
Source: DATASOURCE_FIGHT, Source: DATASOURCE_FIGHT,
@ -64,120 +63,6 @@ func MarshalGameNoteByROLL(roll interface{}) (data string, err error) {
return return
} }
// 小游戏
func MarshalGameNoteByMini(mini interface{}) (data string, err error) {
raw := &RabbitMQDataRaw{
Source: DATASOURCE_MINI,
Data: mini,
}
d, e := json.Marshal(raw)
if e == nil {
data = string(d[:])
}
err = e
return
}
// 冰河世纪游戏记录
func UnMarshalIceAgeGameNote(data string) (roll interface{}, err error) {
gnd := &IceAgeGameNoteData{}
if err := json.Unmarshal([]byte(data), gnd); err != nil {
return nil, err
}
roll = gnd.Data
return
}
// 复仇者联盟游戏记录
func UnMarshalAvengersGameNote(data string) (roll interface{}, err error) {
gnd := &AvengersGameNoteData{}
if err := json.Unmarshal([]byte(data), gnd); err != nil {
return nil, err
}
roll = gnd.Data
return
}
//// 复仇者联盟游戏记录
//func UnMarshalAvengersGameNote(data string) (roll interface{}, err error) {
// gnd := &AvengersGameNoteData{}
// if err := json.Unmarshal([]byte(data), gnd); err != nil {
// return nil, err
// }
// roll = gnd.Data
// return
//}
// 财神游戏记录
func UnMarshalCaiShenGameNote(data string) (roll interface{}, err error) {
gnd := &CaiShenGameNoteData{}
if err := json.Unmarshal([]byte(data), gnd); err != nil {
return nil, err
}
roll = gnd.Data
return
}
// 财神游戏记录
func UnMarshalTamQuocGameNote(data string) (roll interface{}, err error) {
gnd := &TamQuocGameNoteData{}
if err := json.Unmarshal([]byte(data), gnd); err != nil {
return nil, err
}
roll = gnd.Data
return
}
// 复活岛游戏记录
func UnMarshalEasterIslandGameNote(data string) (roll interface{}, err error) {
gnd := &EasterIslandGameNoteData{}
if err := json.Unmarshal([]byte(data), gnd); err != nil {
return nil, err
}
roll = gnd.Data
return
}
// 糖果游戏记录
func UnMarshalCandyGameNote(data string) (roll interface{}, err error) {
gnd := &CandyGameNoteData{}
if err := json.Unmarshal([]byte(data), gnd); err != nil {
return nil, err
}
roll = gnd.Data
return
}
// MiniPoker游戏记录
func UnMarshalMiniPokerGameNote(data string) (roll interface{}, err error) {
gnd := &MiniPokerGameNoteData{}
if err := json.Unmarshal([]byte(data), gnd); err != nil {
return nil, err
}
roll = gnd.Data
return
}
// CaoThap游戏记录
func UnMarshalCaoThapGameNote(data string) (roll interface{}, err error) {
gnd := &CaoThapGameNoteData{}
if err := json.Unmarshal([]byte(data), gnd); err != nil {
return nil, err
}
roll = gnd.Data
return
}
// 幸运骰子游戏记录
func UnMarshalLuckyDiceGameNote(data string) (roll interface{}, err error) {
gnd := &LuckyDiceGameNoteData{}
if err := json.Unmarshal([]byte(data), gnd); err != nil {
return nil, err
}
roll = gnd.Data
return
}
// 捕鱼 // 捕鱼
func MarshalGameNoteByFISH(fish interface{}) (data string, err error) { func MarshalGameNoteByFISH(fish interface{}) (data string, err error) {
raw := &RabbitMQDataRaw{ raw := &RabbitMQDataRaw{

View File

@ -86,6 +86,7 @@ type GameParam struct {
RankWinCoinMaxNum int // 收入榜最大人数 RankWinCoinMaxNum int // 收入榜最大人数
RankInviteMaxNum int32 // 邀请排行榜最大人数 RankInviteMaxNum int32 // 邀请排行榜最大人数
TestActSwitch bool // 开启所有活动开关 TestActSwitch bool // 开启所有活动开关
RankPlayerLevelMaxNum int //等级榜最大人数
} }
var GameParamPath = "../data/gameparam.json" var GameParamPath = "../data/gameparam.json"
@ -233,4 +234,7 @@ func InitGameParam() {
if GameParamData.WinCoinUpdateTime == 0 { if GameParamData.WinCoinUpdateTime == 0 {
GameParamData.WinCoinUpdateTime = 21 GameParamData.WinCoinUpdateTime = 21
} }
if GameParamData.RankPlayerLevelMaxNum == 0 {
GameParamData.RankPlayerLevelMaxNum = 100
}
} }

View File

@ -437,8 +437,8 @@ type PlayerData struct {
MoneyPond int64 //捕鱼个人金币池 MoneyPond int64 //捕鱼个人金币池
UnMaxPower int64 //捕鱼解锁最大炮倍数 UnMaxPower int64 //捕鱼解锁最大炮倍数
PowerList []int32 //解锁的炮台列表 PowerList []int32 //解锁的炮台列表
FishLevel int64 //捕鱼玩家等级 Level int64 //玩家等级
FishExp int64 //捕鱼经验值 Exp int64 //玩家经验值
VipShopData map[int32]*ShopData //玩家vip商店信息 VipShopData map[int32]*ShopData //玩家vip商店信息
VipShopRefreshCount int32 //vip当前已使用免费刷新次数 VipShopRefreshCount int32 //vip当前已使用免费刷新次数
VipExtra int32 //VIP赛季加成 VipExtra int32 //VIP赛季加成
@ -453,6 +453,9 @@ type PlayerData struct {
InviteSnId int32 // 邀请人 InviteSnId int32 // 邀请人
InviteScore int64 // 邀请积分 InviteScore int64 // 邀请积分
OtherCode string // 绑定的邀请码 OtherCode string // 绑定的邀请码
WeekCardTime map[int32]int64 // 周卡结束时间 key:类型 value结束时间
WeekCardAward map[int32]bool //周卡奖励领取状态false-未领取true已领取
ItemRecExpireTime int64 // 记牌器到期时间
} }
// 七日签到数据 // 七日签到数据
@ -462,6 +465,7 @@ type NewSignData struct {
AddupIndex []int32 //领取累计奖励 AddupIndex []int32 //领取累计奖励
TurnplateIdx []int32 //领取转盘下标 TurnplateIdx []int32 //领取转盘下标
VideoTicket int64 // 领取视频奖励时间戳 VideoTicket int64 // 领取视频奖励时间戳
} }
type TaskData struct { type TaskData struct {
@ -469,6 +473,11 @@ type TaskData struct {
Ts int64 // 任务完成时间戳 Ts int64 // 任务完成时间戳
} }
type PigBankData struct {
TakeTimes int32
BankCoin int64
}
type WelfareData struct { type WelfareData struct {
ReliefFundTimes int32 //救济金领取次数 ReliefFundTimes int32 //救济金领取次数
Sign7 *NewSignData //七日签到 Sign7 *NewSignData //七日签到
@ -481,6 +490,7 @@ type WelfareData struct {
VIPBag map[int32]map[int32]int32 //VIP充值礼包 key1-vipLevel key2 - shopId value- shopType (每日礼包 shopId的写死为0 value = 1) VIPBag map[int32]map[int32]int32 //VIP充值礼包 key1-vipLevel key2 - shopId value- shopType (每日礼包 shopId的写死为0 value = 1)
Task map[int32]*TaskData // 任务 Task map[int32]*TaskData // 任务
PhoneLotteryTask map[int32]*TaskData // 抽手机任务 PhoneLotteryTask map[int32]*TaskData // 抽手机任务
PigBank *PigBankData // 存钱罐
} }
func NewWelfareData() *WelfareData { func NewWelfareData() *WelfareData {
@ -489,6 +499,7 @@ func NewWelfareData() *WelfareData {
VIPBag: make(map[int32]map[int32]int32), VIPBag: make(map[int32]map[int32]int32),
Task: make(map[int32]*TaskData), Task: make(map[int32]*TaskData),
PhoneLotteryTask: make(map[int32]*TaskData), PhoneLotteryTask: make(map[int32]*TaskData),
PigBank: &PigBankData{},
} }
} }
@ -709,9 +720,9 @@ func (this *PlayerData) GetPlayerDataEncoder() (bytes.Buffer, error) {
return buf, err return buf, err
} }
func NewPlayerData(acc string, name string, id int32, channel, platform, promoter string, inviterId, func NewPlayerData(acc string, name string, id int32, channel, platform string, params, tel string,
promoterTree int32, params, tel string, packTag, ip string, addCoin int64, unionid, deviceInfo string, packTag, ip string, addCoin int64, unionid, deviceInfo string,
subPromoter string, tagkey, accountType int32) *PlayerData { tagkey, accountType int32) *PlayerData {
if len(name) == 0 { if len(name) == 0 {
logger.Logger.Trace("New player name is empty.") logger.Logger.Trace("New player name is empty.")
return nil return nil
@ -726,50 +737,48 @@ func NewPlayerData(acc string, name string, id int32, channel, platform, promote
isRobot := channel == common.Channel_Rob isRobot := channel == common.Channel_Rob
pd := &PlayerData{ pd := &PlayerData{
Id: bson.NewObjectId(), Id: bson.NewObjectId(),
AccountId: acc, AccountId: acc,
AccountType: accountType, AccountType: accountType,
Name: name, Name: name,
Channel: channel, Channel: channel,
Platform: platform, Platform: platform,
SnId: id, SnId: id,
InviterId: inviterId, Head: rand.Int31n(common.HeadRange),
PromoterTree: promoterTree, SafeBoxPassword: pwd,
Head: rand.Int31n(common.HeadRange), Ip: ip,
//Coin: int64(GameParamData.NewPlayerCoin) + addCoin, RegIp: ip,
SafeBoxPassword: pwd, Params: params,
Ip: ip, Tel: tel,
RegIp: ip, AgentType: 0,
Params: params, LastLoginTime: tNow.Local(),
Tel: tel, LastLogoutTime: tNow.AddDate(0, 0, -1).Local(),
SubBeUnderAgentCode: subPromoter, CreateTime: tNow.Local(),
AgentType: 0, Ver: VER_PLAYER_MAX - 1,
LastLoginTime: tNow.Local(), HeadOutLine: 1,
LastLogoutTime: tNow.AddDate(0, 0, -1).Local(), VIP: 0,
CreateTime: tNow.Local(), CoinPayTotal: 0,
Ver: VER_PLAYER_MAX - 1, MoneyPayTotal: 0,
HeadOutLine: 1, IsRob: isRobot,
VIP: 0, PackageID: packTag,
CoinPayTotal: 0, WBLevel: 0,
MoneyPayTotal: 0, WBCoinTotalOut: 0,
IsRob: isRobot, WBCoinTotalIn: 0,
BeUnderAgentCode: promoter, WBCoinLimit: 0,
PackageID: packTag, YesterdayGameData: NewPlayerGameCtrlData(),
WBLevel: 0, TodayGameData: NewPlayerGameCtrlData(),
WBCoinTotalOut: 0, TotalGameData: make(map[int][]*PlayerGameTotal),
WBCoinTotalIn: 0, GDatas: make(map[string]*PlayerGameInfo),
WBCoinLimit: 0, TagKey: tagkey,
YesterdayGameData: NewPlayerGameCtrlData(), ShopTotal: make(map[int32]*ShopTotal),
TodayGameData: NewPlayerGameCtrlData(), ShopLastLookTime: make(map[int32]int64),
TotalGameData: make(map[int][]*PlayerGameTotal), IsFoolPlayer: make(map[string]bool),
GDatas: make(map[string]*PlayerGameInfo),
TagKey: tagkey,
ShopTotal: make(map[int32]*ShopTotal),
ShopLastLookTime: make(map[int32]int64),
IsFoolPlayer: make(map[string]bool),
//测试数据 //测试数据
PowerList: []int32{1}, //默认炮台 PowerList: []int32{1}, //默认炮台
UnMaxPower: 10, //初始化炮倍最小倍数 UnMaxPower: 10, //初始化炮倍最小倍数
WeekCardTime: make(map[int32]int64),
WeekCardAward: make(map[int32]bool),
WelfData: NewWelfareData(),
} }
if tel != "" { if tel != "" {
@ -781,47 +790,43 @@ func NewPlayerData(acc string, name string, id int32, channel, platform, promote
return pd return pd
} }
func NewPlayerDataThird(acc string, name, headUrl string, id int32, channel, platform, promoter string, inviterId, func NewPlayerDataThird(acc string, name, headUrl string, id int32, channel, platform string, params, tel string,
promoterTree int32, params, tel string, packTag, ip string, subPromoter string, tagkey, accountType int32, deviceOS string) *PlayerData { packTag, ip string, tagkey, accountType int32, deviceOS string) *PlayerData {
if len(name) == 0 { if len(name) == 0 {
logger.Logger.Trace("New player name is empty.") logger.Logger.Trace("New player name is empty.")
return nil return nil
} }
tNow := time.Now() tNow := time.Now()
pd := &PlayerData{ pd := &PlayerData{
Id: bson.NewObjectId(), Id: bson.NewObjectId(),
AccountId: acc, AccountId: acc,
Name: name, Name: name,
Channel: channel, Channel: channel,
Platform: platform, Platform: platform,
SnId: id, SnId: id,
InviterId: inviterId, Head: rand.Int31n(common.HeadRange),
PromoterTree: promoterTree, HeadUrl: headUrl,
Head: rand.Int31n(common.HeadRange),
HeadUrl: headUrl,
//Coin: int64(GameParamData.NewPlayerCoin), //Coin: int64(GameParamData.NewPlayerCoin),
Ip: ip, Ip: ip,
RegIp: ip, RegIp: ip,
Params: params, Params: params,
Tel: tel, Tel: tel,
SubBeUnderAgentCode: subPromoter, LastLoginTime: tNow.Local(),
LastLoginTime: tNow.Local(), LastLogoutTime: tNow.AddDate(0, 0, -1).Local(),
LastLogoutTime: tNow.AddDate(0, 0, -1).Local(), CreateTime: tNow.Local(),
CreateTime: tNow.Local(), Ver: VER_PLAYER_MAX - 1,
Ver: VER_PLAYER_MAX - 1, HeadOutLine: 1,
HeadOutLine: 1, IsRob: false,
IsRob: false, PackageID: packTag,
BeUnderAgentCode: promoter, YesterdayGameData: NewPlayerGameCtrlData(),
PackageID: packTag, TodayGameData: NewPlayerGameCtrlData(),
YesterdayGameData: NewPlayerGameCtrlData(), TotalGameData: make(map[int][]*PlayerGameTotal),
TodayGameData: NewPlayerGameCtrlData(), GDatas: make(map[string]*PlayerGameInfo),
TotalGameData: make(map[int][]*PlayerGameTotal), TagKey: tagkey,
GDatas: make(map[string]*PlayerGameInfo), ShopTotal: make(map[int32]*ShopTotal),
TagKey: tagkey, ShopLastLookTime: make(map[int32]int64),
ShopTotal: make(map[int32]*ShopTotal), AccountType: accountType,
ShopLastLookTime: make(map[int32]int64), DeviceOS: deviceOS,
AccountType: accountType,
DeviceOS: deviceOS,
} }
pd.InitNewData(params) pd.InitNewData(params)

View File

@ -8,14 +8,9 @@ import (
) )
// GenerateOnline 在线统计 // GenerateOnline 在线统计
func GenerateOnline(online map[string]int) *RabbitMQData { func GenerateOnline(online map[string]map[string]int) *RabbitMQData {
m := map[int]int{} // 平台:真人数
for k, v := range online {
i, _ := strconv.Atoi(k)
m[i] = v
}
params := make(map[string]interface{}) params := make(map[string]interface{})
params["Online"] = m params["Online"] = online
params["Time"] = time.Now().Unix() params["Time"] = time.Now().Unix()
return NewRabbitMQData(mq.BackOnline, params) return NewRabbitMQData(mq.BackOnline, params)
} }
@ -31,9 +26,10 @@ func GenerateGameEvent(o *PlayerGameRecEvent) *RabbitMQData {
} }
// GenerateSystemFreeGive 系统免费赠送 // GenerateSystemFreeGive 系统免费赠送
func GenerateSystemFreeGive(snid int32, name, platform string, givetype, cointype int32, count int64) *RabbitMQData { func GenerateSystemFreeGive(snid int32, name, platform, channel string, givetype, cointype int32, count int64) *RabbitMQData {
params := make(map[string]string) params := make(map[string]string)
params["snid"] = strconv.Itoa(int(snid)) params["snid"] = strconv.Itoa(int(snid))
params["Channel"] = channel
params["name"] = name params["name"] = name
params["platform"] = platform params["platform"] = platform
params["givetype"] = strconv.Itoa(int(givetype)) //0创号赠送 1签到赠送转盘、签到、累签 2商城观看视频赠送 3破产补助 4vip领取 params["givetype"] = strconv.Itoa(int(givetype)) //0创号赠送 1签到赠送转盘、签到、累签 2商城观看视频赠送 3破产补助 4vip领取

View File

@ -10,6 +10,7 @@ const (
MQRankSeason = "log_rankplayerscore" MQRankSeason = "log_rankplayerscore"
MQRankPlayerCoin = "log_rankplayercoin" MQRankPlayerCoin = "log_rankplayercoin"
MQRankPlayerInvite = "log_rankplayerinvite" MQRankPlayerInvite = "log_rankplayerinvite"
MQRankPlayerLevel = "log_rankplayerlevel"
) )
type PlayerRankScore struct { type PlayerRankScore struct {
@ -208,3 +209,57 @@ func FindWinCoinTienlen(args *FindWinCoinArgs) (*FindWinCoinReply, error) {
} }
return ret, nil return ret, nil
} }
// 等级榜
type PlayerLevelInfo struct {
Platform string
SnId int32
Name string
Level int64
Exp int64
ModId int32 //头像
}
type FindPlayerLevelArgs struct {
Platform string
StartTs, EndTs int64
SnId int32
}
type FindPlayerLevelListArgs struct {
Platform string
StartTs, EndTs int64
}
type FindPlayerLevelListReply struct {
List []*PlayerLevelInfo
}
type FindPlayerLevelReply struct {
List *PlayerLevelInfo
}
func FindPlayerLevel(args *FindPlayerLevelArgs) (*FindPlayerLevelReply, error) {
if rpcCli == nil {
logger.Logger.Error("model.FindPlayerLevel rpcCli == nil")
return nil, nil
}
ret := new(FindPlayerLevelReply)
err := rpcCli.CallWithTimeout("GamePlayerListSvc.FindPlayerLevel", args, ret, time.Second*30)
if err != nil {
logger.Logger.Error("FindPlayerLevel error:", err)
return ret, err
}
return ret, nil
}
func FindPlayerLevelList(args *FindPlayerLevelListArgs) (*FindPlayerLevelListReply, error) {
if rpcCli == nil {
logger.Logger.Error("model.FindPlayerLevelList rpcCli == nil")
return nil, nil
}
ret := new(FindPlayerLevelListReply)
err := rpcCli.CallWithTimeout("RankPlayerLevelSvc.Find", args, ret, time.Second*30)
if err != nil {
logger.Logger.Error("GetPlayerLevelList error:", err)
return ret, err
}
return ret, nil
}

View File

@ -3,16 +3,12 @@ package model
import "time" import "time"
import "github.com/globalsign/mgo/bson" import "github.com/globalsign/mgo/bson"
// 破产金领取详情
var (
ReliefFundLogCollName = "log_relieffund"
)
// 破产金领取详情 // 破产金领取详情
type ReliefFundLog struct { type ReliefFundLog struct {
LogId bson.ObjectId `bson:"_id"` LogId bson.ObjectId `bson:"_id"`
SnId int32 //玩家id SnId int32 //玩家id
Platform string //平台名称 Platform string //平台名称
Channel string // 渠道
CreateTime int64 // 注册时间 CreateTime int64 // 注册时间
Ts int64 // 领取时间 Ts int64 // 领取时间
@ -26,10 +22,11 @@ func NewReliefFundLog() *ReliefFundLog {
return log return log
} }
func NewReliefFundLogEx(snid int32, gettype, cointype int32, getamount, createtime int64, platform string) *ReliefFundLog { func NewReliefFundLogEx(snid int32, gettype, cointype int32, getamount, createtime int64, platform, channel string) *ReliefFundLog {
cl := NewReliefFundLog() cl := NewReliefFundLog()
cl.SnId = snid cl.SnId = snid
cl.Platform = platform cl.Platform = platform
cl.Channel = channel
now := time.Now() now := time.Now()
cl.Ts = now.Unix() cl.Ts = now.Unix()

View File

@ -203,6 +203,8 @@ type ChesstitiansPlayerData struct {
WinCoin int64 `protobuf:"varint,33,opt,name=WinCoin,proto3" json:"WinCoin,omitempty"` // 本局输赢金币 WinCoin int64 `protobuf:"varint,33,opt,name=WinCoin,proto3" json:"WinCoin,omitempty"` // 本局输赢金币
OldChessGrade int64 `protobuf:"varint,34,opt,name=OldChessGrade,proto3" json:"OldChessGrade,omitempty"` // 原来的象棋积分 OldChessGrade int64 `protobuf:"varint,34,opt,name=OldChessGrade,proto3" json:"OldChessGrade,omitempty"` // 原来的象棋积分
TotalTime int32 `protobuf:"varint,35,opt,name=TotalTime,proto3" json:"TotalTime,omitempty"` // 下棋总时长,单位秒 TotalTime int32 `protobuf:"varint,35,opt,name=TotalTime,proto3" json:"TotalTime,omitempty"` // 下棋总时长,单位秒
Level int64 `protobuf:"varint,36,opt,name=Level,proto3" json:"Level,omitempty"` //玩家等级
Exp int64 `protobuf:"varint,37,opt,name=Exp,proto3" json:"Exp,omitempty"` //玩家经验值
} }
func (x *ChesstitiansPlayerData) Reset() { func (x *ChesstitiansPlayerData) Reset() {
@ -482,6 +484,20 @@ func (x *ChesstitiansPlayerData) GetTotalTime() int32 {
return 0 return 0
} }
func (x *ChesstitiansPlayerData) GetLevel() int64 {
if x != nil {
return x.Level
}
return 0
}
func (x *ChesstitiansPlayerData) GetExp() int64 {
if x != nil {
return x.Exp
}
return 0
}
type LastDelCard struct { type LastDelCard struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -2138,7 +2154,7 @@ var File_chesstitians_proto protoreflect.FileDescriptor
var file_chesstitians_proto_rawDesc = []byte{ var file_chesstitians_proto_rawDesc = []byte{
0x0a, 0x12, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x2e, 0x70, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61,
0x6e, 0x73, 0x22, 0x87, 0x08, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x6e, 0x73, 0x22, 0xaf, 0x08, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69,
0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a,
0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d,
0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
@ -2199,317 +2215,320 @@ var file_chesstitians_proto_rawDesc = []byte{
0x22, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x4f, 0x6c, 0x64, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x22, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x4f, 0x6c, 0x64, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47,
0x72, 0x61, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d,
0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69,
0x6d, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x24, 0x20, 0x01, 0x28,
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18,
0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x25, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74,
0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x0b, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x73, 0x22, 0xd1, 0x09, 0x0a, 0x16, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43,
0x69, 0x61, 0x6e, 0x73, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03,
0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0xd1, 0x09, 0x0a, 0x16, 0x53, 0x43,
0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x52, 0x6f, 0x6f, 0x6d,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01,
0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07,
0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43,
0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64,
0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a,
0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61,
0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61,
0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x18,
0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73,
0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x12, 0x3e, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52,
0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x65, 0x73, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75,
0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74,
0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x12, 0x3e, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28,
0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73,
0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61,
0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x75, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73,
0x72, 0x4f, 0x70, 0x49, 0x64, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x75, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18,
0x72, 0x4f, 0x70, 0x49, 0x64, 0x78, 0x12, 0x3d, 0x0a, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e,
0x6c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x49, 0x64, 0x78, 0x18, 0x0c,
0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x49, 0x64, 0x78, 0x12, 0x3d,
0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x52, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x0a, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0d,
0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69,
0x6d, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x61, 0x6e, 0x73, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x52,
0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x1e, 0x0a,
0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28,
0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a,
0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0f, 0x20,
0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65,
0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x18,
0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69,
0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4d, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11,
0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12,
0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x57, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18,
0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x63, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x18,
0x68, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x13, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12,
0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x75, 0x72, 0x50, 0x6c, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05,
0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x52, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75,
0x75, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6e, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12,
0x65, 0x78, 0x74, 0x4e, 0x65, 0x65, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x22, 0x0a, 0x0c, 0x43, 0x75, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18,
0x65, 0x78, 0x74, 0x4e, 0x65, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x75, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x65, 0x78, 0x74, 0x4e, 0x65, 0x65, 0x64, 0x18,
0x74, 0x63, 0x68, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x65, 0x78, 0x74, 0x4e, 0x65, 0x65, 0x64, 0x12,
0x73, 0x73, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x43, 0x68, 0x65, 0x73, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x1a,
0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6e, 0x61, 0x6c,
0x05, 0x52, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x41, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x73, 0x73, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x09,
0x63, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x41, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x52, 0x05, 0x43, 0x68, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x4d,
0x08, 0x43, 0x61, 0x73, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x08, 0x52, 0x6f, 0x76, 0x65, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x4d,
0x08, 0x43, 0x61, 0x73, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x6e, 0x70, 0x6f, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x41, 0x63, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09,
0x61, 0x73, 0x73, 0x61, 0x6e, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x45, 0x6e, 0x52, 0x03, 0x41, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x73, 0x74, 0x6c, 0x69, 0x6e,
0x70, 0x61, 0x73, 0x73, 0x61, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x65, 0x73, 0x73, 0x67, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x08, 0x52, 0x08, 0x43, 0x61, 0x73, 0x74, 0x6c, 0x69, 0x6e,
0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x65, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x6e, 0x70, 0x61, 0x73, 0x73, 0x61, 0x6e, 0x74, 0x18, 0x1f,
0x73, 0x73, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x56, 0x61, 0x72, 0x69, 0x61, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x45, 0x6e, 0x70, 0x61, 0x73, 0x73, 0x61, 0x6e, 0x74, 0x12,
0x6e, 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x20, 0x20,
0x74, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x61, 0x6d, 0x62, 0x6f, 0x64, 0x69, 0x61, 0x6e, 0x4d, 0x6f, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12,
0x76, 0x65, 0x18, 0x22, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0d, 0x43, 0x61, 0x6d, 0x62, 0x6f, 0x64, 0x18, 0x0a, 0x07, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05,
0x69, 0x61, 0x6e, 0x4d, 0x6f, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x07, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x61, 0x6d,
0x18, 0x23, 0x20, 0x03, 0x28, 0x08, 0x52, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x62, 0x6f, 0x64, 0x69, 0x61, 0x6e, 0x4d, 0x6f, 0x76, 0x65, 0x18, 0x22, 0x20, 0x03, 0x28, 0x08,
0x09, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6d, 0x61, 0x74, 0x65, 0x18, 0x24, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0d, 0x43, 0x61, 0x6d, 0x62, 0x6f, 0x64, 0x69, 0x61, 0x6e, 0x4d, 0x6f, 0x76, 0x65, 0x12,
0x52, 0x09, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x14, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x23, 0x20, 0x03, 0x28, 0x08, 0x52, 0x05,
0x74, 0x65, 0x70, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6d, 0x61,
0x74, 0x65, 0x70, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x74, 0x65, 0x18, 0x24, 0x20, 0x03, 0x28, 0x08, 0x52, 0x09, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6d,
0x75, 0x6d, 0x18, 0x26, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x75, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x65, 0x70, 0x53, 0x6e, 0x49, 0x64, 0x18,
0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x65, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x27, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x74, 0x65, 0x70, 0x53, 0x6e, 0x49, 0x64, 0x12,
0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x65, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x26, 0x20, 0x01, 0x28, 0x03,
0x1a, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x52, 0x07, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x65,
0x05, 0x52, 0x08, 0x44, 0x72, 0x61, 0x77, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x27, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74,
0x65, 0x78, 0x74, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x65, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, 0x53,
0x65, 0x78, 0x74, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x6e, 0x49, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x72, 0x61, 0x77, 0x53,
0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x65, 0x78, 0x74, 0x53, 0x6e, 0x49, 0x64, 0x18,
0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x65, 0x78, 0x74, 0x53, 0x6e, 0x49, 0x64, 0x12,
0x54, 0x79, 0x70, 0x65, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x2a, 0x20,
0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x47, 0x0a, 0x17, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12,
0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x2b, 0x20, 0x01,
0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x47, 0x0a,
0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x17, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x52,
0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4a, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74,
0x0a, 0x16, 0x43, 0x53, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06,
0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4a, 0x0a, 0x16, 0x43, 0x53, 0x43, 0x68, 0x65, 0x73,
0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70,
0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xbe, 0x02, 0x0a, 0x16, 0x53, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61,
0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x61, 0x6d, 0x22, 0xbe, 0x02, 0x0a, 0x16, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69,
0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a,
0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f,
0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12,
0x2e, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x6e, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x05, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69,
0x20, 0x03, 0x28, 0x08, 0x52, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
0x68, 0x65, 0x63, 0x6b, 0x6d, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x08, 0x52, 0x09, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a,
0x43, 0x68, 0x65, 0x63, 0x6b, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x65, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x08, 0x52, 0x05, 0x43, 0x68,
0x70, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x74, 0x65, 0x65, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6d, 0x61, 0x74, 0x65,
0x70, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x03, 0x28, 0x08, 0x52, 0x09, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6d, 0x61, 0x74,
0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x65, 0x70, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x07, 0x20,
0x1c, 0x0a, 0x09, 0x53, 0x74, 0x65, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x74, 0x65, 0x70, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a,
0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x65, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x65, 0x70, 0x4c,
0x52, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x55, 0x0a, 0x19, 0x53, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x65, 0x70,
0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69,
0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x69, 0x6d, 0x65, 0x22, 0x55, 0x0a, 0x19, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69,
0x74, 0x69, 0x61, 0x6e, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72,
0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x12, 0x38, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
0x74, 0x61, 0x22, 0x2d, 0x0a, 0x19, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x2e, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x2e, 0x43, 0x68,
0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12,
0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f,
0x73, 0x22, 0xc4, 0x02, 0x0a, 0x1c, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61,
0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c,
0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18,
0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07,
0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x57,
0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f,
0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f,
0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x54,
0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x54,
0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x6f,
0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53,
0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x61, 0x6e, 0x6b,
0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x61, 0x6e, 0x6b,
0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52,
0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f,
0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f,
0x72, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6c, 0x64, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72,
0x61, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x4f, 0x6c, 0x64, 0x43, 0x68,
0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x22, 0x5c, 0x0a, 0x18, 0x53, 0x43, 0x43, 0x68,
0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69,
0x6c, 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61,
0x6e, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50,
0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52,
0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x1d, 0x53, 0x43, 0x43, 0x68, 0x65,
0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, 0x61,
0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, 0x50,
0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73,
0x12, 0x1e, 0x0a, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e,
0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
0x05, 0x52, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x6f,
0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0b, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07,
0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x57,
0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, 0x6f,
0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, 0x6f,
0x69, 0x6e, 0x22, 0x86, 0x02, 0x0a, 0x12, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69,
0x74, 0x69, 0x61, 0x6e, 0x73, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72,
0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12,
0x14, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05,
0x43, 0x68, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x41, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x41, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x73, 0x74, 0x6c,
0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x08, 0x52, 0x08, 0x43, 0x61, 0x73, 0x74, 0x6c,
0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x6e, 0x70, 0x61, 0x73, 0x73, 0x61, 0x6e, 0x74,
0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x45, 0x6e, 0x70, 0x61, 0x73, 0x73, 0x61, 0x6e,
0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18,
0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x75, 0x6e,
0x64, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x61, 0x6d, 0x62, 0x6f, 0x64, 0x69, 0x61, 0x6e, 0x4d, 0x6f,
0x76, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0d, 0x43, 0x61, 0x6d, 0x62, 0x6f, 0x64,
0x69, 0x61, 0x6e, 0x4d, 0x6f, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b,
0x18, 0x08, 0x20, 0x03, 0x28, 0x08, 0x52, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1c, 0x0a,
0x09, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6d, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x08,
0x52, 0x09, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6d, 0x61, 0x74, 0x65, 0x22, 0x83, 0x02, 0x0a, 0x16,
0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x43, 0x61,
0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69,
0x74, 0x69, 0x61, 0x6e, 0x73, 0x2e, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74,
0x69, 0x61, 0x6e, 0x73, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x72, 0x61,
0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73,
0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x18,
0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x12, 0x1a,
0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f,
0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x4c, 0x6f,
0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73,
0x45, 0x6e, 0x74, 0x72, 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, 0x70, 0x0a, 0x16, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69,
0x61, 0x6e, 0x73, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x50,
0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a,
0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73,
0x4e, 0x65, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03,
0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x78, 0x44,
0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x78, 0x44, 0x65,
0x6c, 0x61, 0x79, 0x22, 0x40, 0x0a, 0x1e, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69,
0x74, 0x69, 0x61, 0x6e, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65,
0x72, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53,
0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65,
0x72, 0x53, 0x6e, 0x69, 0x64, 0x22, 0x43, 0x0a, 0x1f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73,
0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64,
0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69,
0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41,
0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0x9d, 0x05, 0x0a, 0x14, 0x53,
0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x41, 0x49, 0x44,
0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x42, 0x6f, 0x6d, 0x62, 0x5f, 0x6e, 0x75, 0x6d, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x42, 0x6f, 0x6d, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x2f,
0x0a, 0x14, 0x43, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x61, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x43, 0x61,
0x72, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x71, 0x12,
0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x30, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x30, 0x12,
0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x31, 0x18, 0x04,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x31, 0x12,
0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x32, 0x18, 0x05,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x32, 0x12,
0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x33, 0x18, 0x06,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x33, 0x12,
0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66,
0x74, 0x5f, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61,
0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f,
0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x08, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74,
0x31, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c,
0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d,
0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x32, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75,
0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65,
0x66, 0x74, 0x33, 0x12, 0x28, 0x0a, 0x10, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e,
0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x4f,
0x74, 0x68, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x24, 0x0a,
0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x30, 0x18,
0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72,
0x64, 0x73, 0x30, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61,
0x72, 0x64, 0x73, 0x5f, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61,
0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x31, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61,
0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x32, 0x12,
0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f,
0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43,
0x61, 0x72, 0x64, 0x73, 0x33, 0x12, 0x2a, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f,
0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64,
0x73, 0x12, 0x27, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x50, 0x6c, 0x61, 0x79,
0x65, 0x72, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0x0a, 0x18, 0x53, 0x43,
0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x46, 0x69, 0x72, 0x73,
0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20,
0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x6f, 0x0a, 0x19, 0x43, 0x53, 0x43, 0x68,
0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x44, 0x65, 0x76, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x2d, 0x0a, 0x19, 0x53, 0x43,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79,
0x0a, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x74, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01,
0x09, 0x52, 0x0a, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x74, 0x72, 0x12, 0x1a, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0xc4, 0x02, 0x0a, 0x1c, 0x43, 0x68,
0x08, 0x63, 0x75, 0x72, 0x4f, 0x70, 0x49, 0x64, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x08, 0x63, 0x75, 0x72, 0x4f, 0x70, 0x49, 0x64, 0x78, 0x2a, 0x2f, 0x0a, 0x0c, 0x4f, 0x70, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x2a, 0xb6, 0x05, 0x0a, 0x14, 0x43,
0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65,
0x74, 0x49, 0x44, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x68,
0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00,
0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65,
0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66,
0x6f, 0x10, 0xde, 0x2a, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x52, 0x6f, 0x6f,
0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xdf, 0x2a, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61,
0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xe0, 0x2a, 0x12, 0x22, 0x0a,
0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74,
0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xe1,
0x2a, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68,
0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xe2, 0x2a, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x14,
0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xe3, 0x2a, 0x12, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43,
0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18,
0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x43, 0x61, 0x72, 0x64, 0x10, 0xe4, 0x2a, 0x12, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a,
0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73,
0x65, 0x64, 0x10, 0xe5, 0x2a, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e,
0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x43, 0x75, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01,
0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0xe6, 0x2a, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x41, 0x43, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
0x6e, 0x73, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x52, 0x0a, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08,
0x64, 0x10, 0xe7, 0x2a, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x4e, 0x65, 0x78, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72,
0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a,
0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05,
0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6c,
0x64, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0d, 0x4f, 0x6c, 0x64, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65,
0x22, 0x5c, 0x0a, 0x18, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61,
0x6e, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x05,
0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68,
0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73,
0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d,
0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0xc9,
0x01, 0x0a, 0x1d, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e,
0x73, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64,
0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x57, 0x69, 0x6e, 0x50,
0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x57, 0x69,
0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x73, 0x65,
0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50,
0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69,
0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73,
0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18,
0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a,
0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x86, 0x02, 0x0a, 0x12, 0x53,
0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x43, 0x61, 0x72,
0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05,
0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x73, 0x73,
0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x43, 0x68, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a,
0x03, 0x41, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x41, 0x63, 0x74, 0x12,
0x1a, 0x0a, 0x08, 0x43, 0x61, 0x73, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28,
0x08, 0x52, 0x08, 0x43, 0x61, 0x73, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x45,
0x6e, 0x70, 0x61, 0x73, 0x73, 0x61, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
0x45, 0x6e, 0x70, 0x61, 0x73, 0x73, 0x61, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x65,
0x73, 0x73, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43,
0x68, 0x65, 0x73, 0x73, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x61, 0x6d,
0x62, 0x6f, 0x64, 0x69, 0x61, 0x6e, 0x4d, 0x6f, 0x76, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x08,
0x52, 0x0d, 0x43, 0x61, 0x6d, 0x62, 0x6f, 0x64, 0x69, 0x61, 0x6e, 0x4d, 0x6f, 0x76, 0x65, 0x12,
0x14, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x03, 0x28, 0x08, 0x52, 0x05,
0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6d, 0x61,
0x74, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x08, 0x52, 0x09, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6d,
0x61, 0x74, 0x65, 0x22, 0x83, 0x02, 0x0a, 0x16, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74,
0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x12, 0x48,
0x0a, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30,
0x2e, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x2e, 0x53, 0x43,
0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x43, 0x61, 0x72, 0x64,
0x54, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x52, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07,
0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54,
0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f,
0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f,
0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05,
0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x1a, 0x39,
0x0a, 0x0b, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 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, 0x70, 0x0a, 0x16, 0x53, 0x43, 0x43,
0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x43, 0x75, 0x72, 0x4f, 0x70,
0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x43,
0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64,
0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01,
0x28, 0x05, 0x52, 0x07, 0x45, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x22, 0x40, 0x0a, 0x1e, 0x53,
0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x55, 0x70, 0x64, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x10, 0xe8, 0x2a, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1e, 0x0a,
0x12, 0x2b, 0x0a, 0x26, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x22, 0x43, 0x0a,
0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x10, 0xe9, 0x2a, 0x12, 0x1c, 0x0a, 0x1f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x55,
0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d,
0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x41, 0x49, 0x10, 0xea, 0x2a, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e,
0x69, 0x61, 0x6e, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0xeb, 0x75, 0x6d, 0x22, 0x9d, 0x05, 0x0a, 0x14, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69,
0x2a, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x41, 0x49, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x42,
0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x6f, 0x6d, 0x62, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x42,
0x73, 0x74, 0x10, 0xec, 0x2a, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x6f, 0x6d, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x43, 0x61, 0x72, 0x64, 0x5f, 0x70,
0x43, 0x53, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x6c, 0x61, 0x79, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x02,
0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x76, 0x4f, 0x70, 0x10, 0xed, 0x2a, 0x12, 0x25, 0x0a, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x43, 0x61, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x41, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f,
0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61,
0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x30, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f,
0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61,
0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f,
0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61,
0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f,
0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61,
0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x33, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63,
0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30,
0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65,
0x66, 0x74, 0x5f, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43,
0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d,
0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x09, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66,
0x74, 0x32, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f,
0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75,
0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x28, 0x0a, 0x10, 0x4f,
0x74, 0x68, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18,
0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64,
0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f,
0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50,
0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x30, 0x12, 0x24, 0x0a, 0x0e, 0x50,
0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x31, 0x18, 0x0d, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73,
0x31, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64,
0x73, 0x5f, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65,
0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65,
0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x33, 0x12, 0x2a, 0x0a,
0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72,
0x64, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x50, 0x6c, 0x61,
0x79, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69,
0x6f, 0x6e, 0x22, 0x2c, 0x0a, 0x18, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74,
0x69, 0x61, 0x6e, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10,
0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73,
0x22, 0x6f, 0x0a, 0x19, 0x43, 0x53, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61,
0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x76, 0x4f, 0x70, 0x12, 0x16, 0x0a,
0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f,
0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x53, 0x74, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x4f, 0x70, 0x50, 0x61, 0x72,
0x61, 0x6d, 0x53, 0x74, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x4f, 0x70, 0x49, 0x64,
0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x4f, 0x70, 0x49, 0x64,
0x78, 0x2a, 0x2f, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73,
0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72,
0x10, 0x01, 0x2a, 0xb6, 0x05, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69,
0x61, 0x6e, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x1b, 0x0a, 0x17, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61,
0x6e, 0x73, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e,
0x73, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, 0x2a, 0x12, 0x23, 0x0a, 0x1e,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69,
0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x76, 0x4f, 0x70, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xdf,
0x10, 0xee, 0x2a, 0x42, 0x2c, 0x5a, 0x2a, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x2a, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x43, 0x68,
0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x63, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x4f, 0x70, 0x10, 0xe0, 0x2a, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c,
0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xe1, 0x2a, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61,
0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xe2, 0x2a,
0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65,
0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c,
0x65, 0x61, 0x76, 0x65, 0x10, 0xe3, 0x2a, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73,
0x43, 0x61, 0x72, 0x64, 0x10, 0xe4, 0x2a, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73,
0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0xe5, 0x2a, 0x12, 0x22, 0x0a,
0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74,
0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0xe6,
0x2a, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68,
0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47,
0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0xe7, 0x2a, 0x12, 0x2a, 0x0a, 0x25,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69,
0x74, 0x69, 0x61, 0x6e, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65,
0x72, 0x53, 0x6e, 0x69, 0x64, 0x10, 0xe8, 0x2a, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e,
0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e,
0x75, 0x6d, 0x10, 0xe9, 0x2a, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x41, 0x49,
0x10, 0xea, 0x2a, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x46, 0x69, 0x72, 0x73,
0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0xeb, 0x2a, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61,
0x6e, 0x73, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x10, 0xec, 0x2a, 0x12, 0x25, 0x0a,
0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74,
0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x76, 0x4f,
0x70, 0x10, 0xed, 0x2a, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x43, 0x68, 0x65, 0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x50, 0x6c, 0x61,
0x79, 0x65, 0x72, 0x44, 0x65, 0x76, 0x4f, 0x70, 0x10, 0xee, 0x2a, 0x42, 0x2c, 0x5a, 0x2a, 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, 0x63, 0x68, 0x65,
0x73, 0x73, 0x74, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
} }
var ( var (

View File

@ -67,6 +67,8 @@ message ChesstitiansPlayerData {
int64 WinCoin = 33; // int64 WinCoin = 33; //
int64 OldChessGrade = 34; // int64 OldChessGrade = 34; //
int32 TotalTime = 35; // , int32 TotalTime = 35; // ,
int64 Level = 36; //
int64 Exp = 37; //
} }
message LastDelCard { message LastDelCard {

View File

@ -359,8 +359,8 @@ type FishingPlayerData struct {
RobotSnIds []int32 `protobuf:"varint,21,rep,packed,name=RobotSnIds,proto3" json:"RobotSnIds,omitempty"` //代理的机器人们 RobotSnIds []int32 `protobuf:"varint,21,rep,packed,name=RobotSnIds,proto3" json:"RobotSnIds,omitempty"` //代理的机器人们
UnMaxPower int64 `protobuf:"varint,22,opt,name=UnMaxPower,proto3" json:"UnMaxPower,omitempty"` //解锁的最大炮倍 UnMaxPower int64 `protobuf:"varint,22,opt,name=UnMaxPower,proto3" json:"UnMaxPower,omitempty"` //解锁的最大炮倍
UnPowerList []int32 `protobuf:"varint,23,rep,packed,name=UnPowerList,proto3" json:"UnPowerList,omitempty"` //解锁的炮台 UnPowerList []int32 `protobuf:"varint,23,rep,packed,name=UnPowerList,proto3" json:"UnPowerList,omitempty"` //解锁的炮台
FishLevel int64 `protobuf:"varint,24,opt,name=FishLevel,proto3" json:"FishLevel,omitempty"` //捕鱼等级 Level int64 `protobuf:"varint,24,opt,name=Level,proto3" json:"Level,omitempty"` //捕鱼等级
FishExp int64 `protobuf:"varint,25,opt,name=FishExp,proto3" json:"FishExp,omitempty"` //捕鱼经验 Exp int64 `protobuf:"varint,25,opt,name=Exp,proto3" json:"Exp,omitempty"` //捕鱼经验
} }
func (x *FishingPlayerData) Reset() { func (x *FishingPlayerData) Reset() {
@ -556,16 +556,16 @@ func (x *FishingPlayerData) GetUnPowerList() []int32 {
return nil return nil
} }
func (x *FishingPlayerData) GetFishLevel() int64 { func (x *FishingPlayerData) GetLevel() int64 {
if x != nil { if x != nil {
return x.FishLevel return x.Level
} }
return 0 return 0
} }
func (x *FishingPlayerData) GetFishExp() int64 { func (x *FishingPlayerData) GetExp() int64 {
if x != nil { if x != nil {
return x.FishExp return x.Exp
} }
return 0 return 0
} }
@ -3882,7 +3882,7 @@ var File_fishing_proto protoreflect.FileDescriptor
var file_fishing_proto_rawDesc = []byte{ var file_fishing_proto_rawDesc = []byte{
0x0a, 0x0d, 0x66, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x0d, 0x66, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x07, 0x66, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x22, 0x95, 0x05, 0x0a, 0x11, 0x46, 0x69, 0x73, 0x07, 0x66, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x22, 0x85, 0x05, 0x0a, 0x11, 0x46, 0x69, 0x73,
0x68, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x68, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12,
0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
@ -3920,10 +3920,9 @@ var file_fishing_proto_rawDesc = []byte{
0x6f, 0x77, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x6e, 0x4d, 0x61, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x6e, 0x4d, 0x61,
0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65,
0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x17, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x55, 0x6e, 0x50, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x17, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x55, 0x6e, 0x50,
0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x69, 0x73, 0x68, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65,
0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x46, 0x69, 0x73, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x10,
0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x46, 0x69, 0x73, 0x68, 0x45, 0x78, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70,
0x70, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x46, 0x69, 0x73, 0x68, 0x45, 0x78, 0x70,
0x22, 0x85, 0x05, 0x0a, 0x11, 0x53, 0x43, 0x46, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x6f, 0x22, 0x85, 0x05, 0x0a, 0x11, 0x53, 0x43, 0x46, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x52, 0x6f,
0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 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, 0x12, 0x18, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18,

View File

@ -95,8 +95,8 @@ message FishingPlayerData {
repeated int32 RobotSnIds = 21; // repeated int32 RobotSnIds = 21; //
int64 UnMaxPower = 22;// int64 UnMaxPower = 22;//
repeated int32 UnPowerList= 23;// repeated int32 UnPowerList= 23;//
int64 FishLevel = 24;// int64 Level = 24;//
int64 FishExp = 25;// int64 Exp = 25;//
} }
// //

File diff suppressed because it is too large Load Diff

View File

@ -203,6 +203,8 @@ enum PlayerPacketID {
PACKET_SC_PhoneLotteryCount = 2820;// PACKET_SC_PhoneLotteryCount = 2820;//
PACKET_CSADV = 2821; // 广 PACKET_CSADV = 2821; // 广
PACKET_SCADV = 2822; // 广 PACKET_SCADV = 2822; // 广
PACKET_SCGetWeekCardAwary = 2823;//
PACKET_SCPigBankCoin = 2824;//
} }
// //
@ -305,11 +307,19 @@ message PlayerData {
map<int32,int64> RankScore =40;// map<int32,int64> RankScore =40;//
int64 UnMaxPower =41; // int64 UnMaxPower =41; //
repeated int32 PowerList =42; // repeated int32 PowerList =42; //
int64 FishLevel =43; // int64 Level =43; //
int64 FishExp =44; // int64 Exp =44; //
int32 VipShopRefreshCount =45; //vip当前已使用免费刷新次数 int32 VipShopRefreshCount =45; //vip当前已使用免费刷新次数
string Signature = 46; // string Signature = 46; //
int32 Age = 47; // int32 Age = 47; //
repeated WeekInfo WeekCard = 48;//
}
//
message WeekInfo{
int32 Id =1;
int64 WeekCardTime =2; //
bool weekCardAward = 3;//
} }
//线 LogicId //线 LogicId
message MiniGameInfo{ message MiniGameInfo{
@ -1150,4 +1160,20 @@ message CSADV {
// PACKET_SCADV // PACKET_SCADV
message SCADV { message SCADV {
repeated int32 Param = 1; // 0广 repeated int32 Param = 1; // 0广
} }
//
//PACKET_SCGetWeekCardAwary
message SCGetWeekCardAwary{
int32 id = 1;
repeated PayItem Items =2;
bool weekCardAward = 3;
WeekInfo WeekCard = 4;//
}
//
// PACKET_SCPigBankCoin
message SCPigBankCoin {
int64 BankCoin = 1;
int64 BankCoinMax = 2;
int64 AddBankCoin = 3;
}

View File

@ -39,6 +39,9 @@ const (
// 收入榜 // 收入榜
Rank_PACKET_RANK_CSWinCoin Rank = 10008 Rank_PACKET_RANK_CSWinCoin Rank = 10008
Rank_PACKET_RANK_SCWinCoin Rank = 10009 Rank_PACKET_RANK_SCWinCoin Rank = 10009
//等级榜
Rank_PACKET_RANK_CSLevel Rank = 10010
Rank_PACKET_RANK_SCLevel Rank = 10011
) )
// Enum value maps for Rank. // Enum value maps for Rank.
@ -55,6 +58,8 @@ var (
10007: "PACKET_SCInviteLog", 10007: "PACKET_SCInviteLog",
10008: "PACKET_RANK_CSWinCoin", 10008: "PACKET_RANK_CSWinCoin",
10009: "PACKET_RANK_SCWinCoin", 10009: "PACKET_RANK_SCWinCoin",
10010: "PACKET_RANK_CSLevel",
10011: "PACKET_RANK_SCLevel",
} }
Rank_value = map[string]int32{ Rank_value = map[string]int32{
"PACKET_RANK_ZERO": 0, "PACKET_RANK_ZERO": 0,
@ -68,6 +73,8 @@ var (
"PACKET_SCInviteLog": 10007, "PACKET_SCInviteLog": 10007,
"PACKET_RANK_CSWinCoin": 10008, "PACKET_RANK_CSWinCoin": 10008,
"PACKET_RANK_SCWinCoin": 10009, "PACKET_RANK_SCWinCoin": 10009,
"PACKET_RANK_CSLevel": 10010,
"PACKET_RANK_SCLevel": 10011,
} }
) )
@ -1349,6 +1356,214 @@ func (x *SCWinCoin) GetLimit() int32 {
return 0 return 0
} }
//等级排行榜
//RACKET_CSLevelRank
type CSPlayerLevelRank struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Skip int32 `protobuf:"varint,1,opt,name=Skip,proto3" json:"Skip,omitempty"`
Limit int32 `protobuf:"varint,2,opt,name=Limit,proto3" json:"Limit,omitempty"`
}
func (x *CSPlayerLevelRank) Reset() {
*x = CSPlayerLevelRank{}
if protoimpl.UnsafeEnabled {
mi := &file_rank_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CSPlayerLevelRank) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CSPlayerLevelRank) ProtoMessage() {}
func (x *CSPlayerLevelRank) ProtoReflect() protoreflect.Message {
mi := &file_rank_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CSPlayerLevelRank.ProtoReflect.Descriptor instead.
func (*CSPlayerLevelRank) Descriptor() ([]byte, []int) {
return file_rank_proto_rawDescGZIP(), []int{16}
}
func (x *CSPlayerLevelRank) GetSkip() int32 {
if x != nil {
return x.Skip
}
return 0
}
func (x *CSPlayerLevelRank) GetLimit() int32 {
if x != nil {
return x.Limit
}
return 0
}
type PlayerLevelRankInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id
Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` // 昵称
Level int64 `protobuf:"varint,3,opt,name=Level,proto3" json:"Level,omitempty"` // 等级
Rank int32 `protobuf:"varint,4,opt,name=Rank,proto3" json:"Rank,omitempty"` //排名
ModId int32 `protobuf:"varint,6,opt,name=ModId,proto3" json:"ModId,omitempty"` // 头像模型
}
func (x *PlayerLevelRankInfo) Reset() {
*x = PlayerLevelRankInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_rank_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PlayerLevelRankInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PlayerLevelRankInfo) ProtoMessage() {}
func (x *PlayerLevelRankInfo) ProtoReflect() protoreflect.Message {
mi := &file_rank_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PlayerLevelRankInfo.ProtoReflect.Descriptor instead.
func (*PlayerLevelRankInfo) Descriptor() ([]byte, []int) {
return file_rank_proto_rawDescGZIP(), []int{17}
}
func (x *PlayerLevelRankInfo) GetSnId() int32 {
if x != nil {
return x.SnId
}
return 0
}
func (x *PlayerLevelRankInfo) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *PlayerLevelRankInfo) GetLevel() int64 {
if x != nil {
return x.Level
}
return 0
}
func (x *PlayerLevelRankInfo) GetRank() int32 {
if x != nil {
return x.Rank
}
return 0
}
func (x *PlayerLevelRankInfo) GetModId() int32 {
if x != nil {
return x.ModId
}
return 0
}
//RACKET_SCLevelRank
type SCPlayerLevelRank struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Ranks []*PlayerLevelRankInfo `protobuf:"bytes,1,rep,name=Ranks,proto3" json:"Ranks,omitempty"` // 排行榜
Me *PlayerLevelRankInfo `protobuf:"bytes,2,opt,name=Me,proto3" json:"Me,omitempty"` // 玩家自己的排行信息
Skip int32 `protobuf:"varint,3,opt,name=Skip,proto3" json:"Skip,omitempty"` // 页数
Limit int32 `protobuf:"varint,4,opt,name=Limit,proto3" json:"Limit,omitempty"` // 每页数量
}
func (x *SCPlayerLevelRank) Reset() {
*x = SCPlayerLevelRank{}
if protoimpl.UnsafeEnabled {
mi := &file_rank_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SCPlayerLevelRank) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SCPlayerLevelRank) ProtoMessage() {}
func (x *SCPlayerLevelRank) ProtoReflect() protoreflect.Message {
mi := &file_rank_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SCPlayerLevelRank.ProtoReflect.Descriptor instead.
func (*SCPlayerLevelRank) Descriptor() ([]byte, []int) {
return file_rank_proto_rawDescGZIP(), []int{18}
}
func (x *SCPlayerLevelRank) GetRanks() []*PlayerLevelRankInfo {
if x != nil {
return x.Ranks
}
return nil
}
func (x *SCPlayerLevelRank) GetMe() *PlayerLevelRankInfo {
if x != nil {
return x.Me
}
return nil
}
func (x *SCPlayerLevelRank) GetSkip() int32 {
if x != nil {
return x.Skip
}
return 0
}
func (x *SCPlayerLevelRank) GetLimit() int32 {
if x != nil {
return x.Limit
}
return 0
}
var File_rank_proto protoreflect.FileDescriptor var File_rank_proto protoreflect.FileDescriptor
var file_rank_proto_rawDesc = []byte{ var file_rank_proto_rawDesc = []byte{
@ -1471,36 +1686,61 @@ var file_rank_proto_rawDesc = []byte{
0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x02, 0x4d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x02, 0x4d, 0x65, 0x12, 0x12, 0x0a, 0x04,
0x53, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70,
0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2a, 0xaa, 0x02, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x3d, 0x0a, 0x11, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79,
0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x5a, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x53,
0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x6b, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x12,
0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x7d, 0x0a, 0x13, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c,
0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x91, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04,
0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64,
0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20,
0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61,
0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x94, 0x4e, 0x12, 0x19, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14,
0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d,
0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x95, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x6f, 0x64, 0x49, 0x64, 0x22, 0x99, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x2f, 0x0a, 0x05, 0x52, 0x61,
0x96, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x61, 0x6e, 0x6b,
0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x97, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x6b,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x57, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x29, 0x0a, 0x02, 0x4d,
0x43, 0x6f, 0x69, 0x6e, 0x10, 0x98, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x50,
0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e,
0x10, 0x99, 0x4e, 0x2a, 0x76, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x66, 0x6f, 0x52, 0x02, 0x4d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x03,
0x65, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69,
0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x2a, 0xde, 0x02, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43,
0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12,
0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43,
0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x53, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x61, 0x78, 0x10, 0x04, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52,
0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x91, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50,
0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, 0x61, 0x6e, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69,
0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x6e, 0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52,
0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a,
0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x49,
0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x94, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
0x10, 0x95, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x96, 0x4e, 0x12, 0x17, 0x0a, 0x12,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c,
0x6f, 0x67, 0x10, 0x97, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x98,
0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b,
0x5f, 0x53, 0x43, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x99, 0x4e, 0x12, 0x18, 0x0a,
0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4c,
0x65, 0x76, 0x65, 0x6c, 0x10, 0x9a, 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9b,
0x4e, 0x2a, 0x76, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12,
0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f,
0x6e, 0x65, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79,
0x70, 0x65, 0x5f, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e,
0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x02, 0x12,
0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x6f,
0x6e, 0x74, 0x68, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54,
0x79, 0x70, 0x65, 0x5f, 0x4d, 0x61, 0x78, 0x10, 0x04, 0x42, 0x24, 0x5a, 0x22, 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, 0x72, 0x61, 0x6e, 0x6b, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -1516,26 +1756,29 @@ func file_rank_proto_rawDescGZIP() []byte {
} }
var file_rank_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_rank_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
var file_rank_proto_goTypes = []interface{}{ var file_rank_proto_goTypes = []interface{}{
(Rank)(0), // 0: rank.Rank (Rank)(0), // 0: rank.Rank
(RankInvite)(0), // 1: rank.RankInvite (RankInvite)(0), // 1: rank.RankInvite
(*CSRankMatch)(nil), // 2: rank.CSRankMatch (*CSRankMatch)(nil), // 2: rank.CSRankMatch
(*SeasonRank)(nil), // 3: rank.SeasonRank (*SeasonRank)(nil), // 3: rank.SeasonRank
(*SCRankMatch)(nil), // 4: rank.SCRankMatch (*SCRankMatch)(nil), // 4: rank.SCRankMatch
(*CSCoin)(nil), // 5: rank.CSCoin (*CSCoin)(nil), // 5: rank.CSCoin
(*PlayerCoin)(nil), // 6: rank.PlayerCoin (*PlayerCoin)(nil), // 6: rank.PlayerCoin
(*SCCoin)(nil), // 7: rank.SCCoin (*SCCoin)(nil), // 7: rank.SCCoin
(*CSInvite)(nil), // 8: rank.CSInvite (*CSInvite)(nil), // 8: rank.CSInvite
(*InviteRank)(nil), // 9: rank.InviteRank (*InviteRank)(nil), // 9: rank.InviteRank
(*SCInvite)(nil), // 10: rank.SCInvite (*SCInvite)(nil), // 10: rank.SCInvite
(*GateTransmit)(nil), // 11: rank.GateTransmit (*GateTransmit)(nil), // 11: rank.GateTransmit
(*InviteInfo)(nil), // 12: rank.InviteInfo (*InviteInfo)(nil), // 12: rank.InviteInfo
(*CSInviteLog)(nil), // 13: rank.CSInviteLog (*CSInviteLog)(nil), // 13: rank.CSInviteLog
(*SCInviteLog)(nil), // 14: rank.SCInviteLog (*SCInviteLog)(nil), // 14: rank.SCInviteLog
(*CSWinCoin)(nil), // 15: rank.CSWinCoin (*CSWinCoin)(nil), // 15: rank.CSWinCoin
(*WinCoinInfo)(nil), // 16: rank.WinCoinInfo (*WinCoinInfo)(nil), // 16: rank.WinCoinInfo
(*SCWinCoin)(nil), // 17: rank.SCWinCoin (*SCWinCoin)(nil), // 17: rank.SCWinCoin
(*CSPlayerLevelRank)(nil), // 18: rank.CSPlayerLevelRank
(*PlayerLevelRankInfo)(nil), // 19: rank.PlayerLevelRankInfo
(*SCPlayerLevelRank)(nil), // 20: rank.SCPlayerLevelRank
} }
var file_rank_proto_depIdxs = []int32{ var file_rank_proto_depIdxs = []int32{
3, // 0: rank.SCRankMatch.Ranks:type_name -> rank.SeasonRank 3, // 0: rank.SCRankMatch.Ranks:type_name -> rank.SeasonRank
@ -1547,11 +1790,13 @@ var file_rank_proto_depIdxs = []int32{
12, // 6: rank.SCInviteLog.List:type_name -> rank.InviteInfo 12, // 6: rank.SCInviteLog.List:type_name -> rank.InviteInfo
16, // 7: rank.SCWinCoin.Ranks:type_name -> rank.WinCoinInfo 16, // 7: rank.SCWinCoin.Ranks:type_name -> rank.WinCoinInfo
16, // 8: rank.SCWinCoin.Me:type_name -> rank.WinCoinInfo 16, // 8: rank.SCWinCoin.Me:type_name -> rank.WinCoinInfo
9, // [9:9] is the sub-list for method output_type 19, // 9: rank.SCPlayerLevelRank.Ranks:type_name -> rank.PlayerLevelRankInfo
9, // [9:9] is the sub-list for method input_type 19, // 10: rank.SCPlayerLevelRank.Me:type_name -> rank.PlayerLevelRankInfo
9, // [9:9] is the sub-list for extension type_name 11, // [11:11] is the sub-list for method output_type
9, // [9:9] is the sub-list for extension extendee 11, // [11:11] is the sub-list for method input_type
0, // [0:9] is the sub-list for field type_name 11, // [11:11] is the sub-list for extension type_name
11, // [11:11] is the sub-list for extension extendee
0, // [0:11] is the sub-list for field type_name
} }
func init() { file_rank_proto_init() } func init() { file_rank_proto_init() }
@ -1752,6 +1997,42 @@ func file_rank_proto_init() {
return nil return nil
} }
} }
file_rank_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CSPlayerLevelRank); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_rank_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PlayerLevelRankInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_rank_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SCPlayerLevelRank); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
} }
type x struct{} type x struct{}
out := protoimpl.TypeBuilder{ out := protoimpl.TypeBuilder{
@ -1759,7 +2040,7 @@ func file_rank_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_rank_proto_rawDesc, RawDescriptor: file_rank_proto_rawDesc,
NumEnums: 2, NumEnums: 2,
NumMessages: 16, NumMessages: 19,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View File

@ -19,6 +19,9 @@ enum Rank{
// //
PACKET_RANK_CSWinCoin = 10008; PACKET_RANK_CSWinCoin = 10008;
PACKET_RANK_SCWinCoin = 10009; PACKET_RANK_SCWinCoin = 10009;
//
PACKET_RANK_CSLevel = 10010;
PACKET_RANK_SCLevel = 10011;
} }
// //
@ -156,4 +159,25 @@ message SCWinCoin{
WinCoinInfo Me = 2; // WinCoinInfo Me = 2; //
int32 Skip = 3; // int32 Skip = 3; //
int32 Limit = 4; // int32 Limit = 4; //
}
//
//RACKET_CSLevelRank
message CSPlayerLevelRank{
int32 Skip = 1;
int32 Limit = 2;
}
message PlayerLevelRankInfo{
int32 SnId = 1; // id
string Name = 2; //
int64 Level = 3; //
int32 Rank = 4; //
int32 ModId = 6; //
}
//RACKET_SCLevelRank
message SCPlayerLevelRank{
repeated PlayerLevelRankInfo Ranks = 1; //
PlayerLevelRankInfo Me = 2; //
int32 Skip = 3; //
int32 Limit = 4; //
} }

File diff suppressed because it is too large Load Diff

View File

@ -681,6 +681,10 @@ message DB_GameCoinPool {
int32 ProfitRate = 10; int32 ProfitRate = 10;
int32 CtrlRate = 11;
int64 InitNovicValue = 12;
} }
message DB_GameCoinPoolArray { message DB_GameCoinPoolArray {
@ -1051,6 +1055,28 @@ message DB_GiftBoxArray {
repeated DB_GiftBox Arr = 1; repeated DB_GiftBox Arr = 1;
} }
message DB_GiftCard {
int32 Id = 1;
int32 ShopID = 2;
string Name = 3;
map<int64, int64> Rewards = 4;
map<int64, int64> DayRewards = 5;
int32 Time = 6;
repeated int32 Equity = 7;
}
message DB_GiftCardArray {
repeated DB_GiftCard Arr = 1;
}
message DB_IceAgeElementRate { message DB_IceAgeElementRate {
int32 Id = 1; int32 Id = 1;
@ -1241,6 +1267,36 @@ message DB_PhoneLotteryArray {
repeated DB_PhoneLottery Arr = 1; repeated DB_PhoneLottery Arr = 1;
} }
message DB_PigBank_Diamond {
int32 Id = 1;
int32 BuyCountMin = 2;
int32 BuyCountMax = 3;
int32 CostDiamond = 4;
}
message DB_PigBank_DiamondArray {
repeated DB_PigBank_Diamond Arr = 1;
}
message DB_Pigbank_Prop {
int32 Id = 1;
string PorpName = 2;
int32 PropValue = 3;
}
message DB_Pigbank_PropArray {
repeated DB_Pigbank_Prop Arr = 1;
}
message DB_PlayerExp { message DB_PlayerExp {
int32 Id = 1; int32 Id = 1;
@ -1479,19 +1535,21 @@ message DB_Task {
int32 Id = 1; int32 Id = 1;
int32 ActivityType = 2; int32 Order = 2;
int32 TaskType = 3; int32 ActivityType = 3;
int64 TargetTimes = 4; int32 TaskType = 4;
int64 FinishTimes = 5; int64 TargetTimes = 5;
map<int64, int64> Award = 6; int64 FinishTimes = 6;
int32 GameType = 7; map<int64, int64> Award = 7;
repeated int32 Position = 8; int32 GameType = 8;
repeated int32 Position = 9;
} }
@ -1573,8 +1631,6 @@ message DB_VIP {
map<int64, int64> Award = 18; map<int64, int64> Award = 18;
repeated string ParamName = 19;
} }
message DB_VIPArray { message DB_VIPArray {

File diff suppressed because it is too large Load Diff

View File

@ -593,22 +593,17 @@ message GWPlayerForceLeave{
//PACKET_GW_PLAYERDATA //PACKET_GW_PLAYERDATA
message PlayerData { message PlayerData {
int32 SnId = 1;//id int32 SnId = 1; // id
int64 Bet = 2;//() int64 Bet = 2; //
int64 Gain = 3;//, int64 Gain = 3; // ,
int64 Tax = 4;// Gain的税收 int64 Tax = 4; // Gain的税收
int64 OtherTax = 5;//(:) int64 Coin = 5; //
int64 Coin = 6;// int64 GameCoinTs = 6; //
int64 FlowCoin = 7;// int64 WBGain = 7; // ,
int64 Lottery = 8;// int32 WinState = 8; // 1: 2: 3:, Gain区分不了输赢的游戏必传这个参数
int32 Kind = 9;//
repeated int32 Card = 10;//
int64 GameCoinTs = 11;//
int64 WBGain = 12; //
int32 WinState = 13; // 1: 2: 3:
} }
message GWPlayerData { message GWPlayerData {
repeated PlayerData Datas = 1;// repeated PlayerData Datas = 1;//
int32 GameFreeId = 2;//id int32 GameFreeId = 2;//id
int32 SceneId = 4; //id int32 SceneId = 4; //id
} }

View File

@ -227,7 +227,7 @@ type CSTaskList struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
} }
func (x *CSTaskList) Reset() { func (x *CSTaskList) Reset() {
@ -275,7 +275,7 @@ type SCTaskList struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表 List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表
} }
@ -332,7 +332,7 @@ type CSTaskReward struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id
} }
@ -453,7 +453,7 @@ type SCTaskChange struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表 List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表
} }
@ -508,7 +508,7 @@ type CSTaskDebugInc struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id
AddNum int32 `protobuf:"varint,3,opt,name=AddNum,proto3" json:"AddNum,omitempty"` // 直接增加次数 AddNum int32 `protobuf:"varint,3,opt,name=AddNum,proto3" json:"AddNum,omitempty"` // 直接增加次数
} }

View File

@ -33,18 +33,18 @@ message TaskData{
// //
// PACKET_CSTaskList // PACKET_CSTaskList
message CSTaskList{ message CSTaskList{
int32 Tp = 1; // 1: 2: 3: 4: int32 Tp = 1; // 1: 2: 3: 4: 5:
} }
// PACKET_SCTaskList // PACKET_SCTaskList
message SCTaskList{ message SCTaskList{
int32 Tp = 1; // 1: 2: 3: 4: int32 Tp = 1; // 1: 2: 3: 4: 5:
repeated TaskData List = 2; // repeated TaskData List = 2; //
} }
// //
// PACKET_CSTaskReward // PACKET_CSTaskReward
message CSTaskReward{ message CSTaskReward{
int32 Tp = 1; // 1: 2: 3: 4: int32 Tp = 1; // 1: 2: 3: 4: 5:
int32 Id = 2; // id int32 Id = 2; // id
} }
// PACKET_SCTaskReward // PACKET_SCTaskReward
@ -57,12 +57,12 @@ message SCTaskReward{
// //
// PACKET_SCTaskChange // PACKET_SCTaskChange
message SCTaskChange{ message SCTaskChange{
int32 Tp = 1; // 1: 2: 3: 4: int32 Tp = 1; // 1: 2: 3: 4: 5:
repeated TaskData List = 2; // repeated TaskData List = 2; //
} }
message CSTaskDebugInc{ message CSTaskDebugInc{
int32 Tp = 1; // 1: 2: 3: 4: int32 Tp = 1; // 1: 2: 3: 4: 5:
int32 Id = 2; // id int32 Id = 2; // id
int32 AddNum = 3; // int32 AddNum = 3; //
} }

View File

@ -553,6 +553,8 @@ type ThirteenPlayerData struct {
IsConfirm bool `protobuf:"varint,25,opt,name=IsConfirm,proto3" json:"IsConfirm,omitempty"` // 是否确认牌型 IsConfirm bool `protobuf:"varint,25,opt,name=IsConfirm,proto3" json:"IsConfirm,omitempty"` // 是否确认牌型
IsLeave bool `protobuf:"varint,26,opt,name=IsLeave,proto3" json:"IsLeave,omitempty"` // 已经离场 IsLeave bool `protobuf:"varint,26,opt,name=IsLeave,proto3" json:"IsLeave,omitempty"` // 已经离场
RoleId int32 `protobuf:"varint,27,opt,name=RoleId,proto3" json:"RoleId,omitempty"` //使用中的角色id RoleId int32 `protobuf:"varint,27,opt,name=RoleId,proto3" json:"RoleId,omitempty"` //使用中的角色id
Level int64 `protobuf:"varint,28,opt,name=Level,proto3" json:"Level,omitempty"` //玩家等级
Exp int64 `protobuf:"varint,29,opt,name=Exp,proto3" json:"Exp,omitempty"` //玩家经验
} }
func (x *ThirteenPlayerData) Reset() { func (x *ThirteenPlayerData) Reset() {
@ -776,6 +778,20 @@ func (x *ThirteenPlayerData) GetRoleId() int32 {
return 0 return 0
} }
func (x *ThirteenPlayerData) GetLevel() int64 {
if x != nil {
return x.Level
}
return 0
}
func (x *ThirteenPlayerData) GetExp() int64 {
if x != nil {
return x.Exp
}
return 0
}
//玩家进入 //玩家进入
//PACKET_SCThirteenPlayerEnter //PACKET_SCThirteenPlayerEnter
type SCThirteenPlayerEnter struct { type SCThirteenPlayerEnter struct {
@ -1393,7 +1409,7 @@ var file_thirteen_proto_rawDesc = []byte{
0x03, 0x50, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12,
0x25, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x25, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
0x2e, 0x74, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x2e, 0x50, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x2e, 0x74, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x2e, 0x50, 0x6f, 0x6b, 0x65, 0x72, 0x52,
0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0xce, 0x05, 0x0a, 0x12, 0x54, 0x68, 0x69, 0x72, 0x74, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0xf6, 0x05, 0x0a, 0x12, 0x54, 0x68, 0x69, 0x72, 0x74,
0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a,
0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d,
0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
@ -1438,104 +1454,107 @@ var file_thirteen_proto_rawDesc = []byte{
0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x4c, 0x65, 0x61, 0x76, 0x65,
0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12,
0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52,
0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x15, 0x53, 0x43, 0x54, 0x68, 0x69, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c,
0x72, 0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x10, 0x0a,
0x12, 0x30, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x03, 0x45, 0x78, 0x70, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x22,
0x2e, 0x74, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x2e, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x49, 0x0a, 0x15, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61,
0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61,
0x74, 0x61, 0x22, 0x29, 0x0a, 0x15, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6e, 0x2e, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0xd4, 0x04, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x29, 0x0a, 0x15, 0x53, 0x43,
0x0a, 0x12, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x61, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0xd4, 0x04, 0x0a, 0x12, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72,
0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x74, 0x65, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06,
0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f,
0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18,
0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16,
0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f,
0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f,
0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03,
0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x18, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75,
0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61,
0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42,
0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74,
0x12, 0x36, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18,
0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x2e, 0x54, 0x68, 0x69, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52,
0x72, 0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79,
0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x68, 0x69, 0x72,
0x61, 0x6e, 0x64, 0x47, 0x65, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x44, 0x69, 0x74, 0x65, 0x65, 0x6e, 0x2e, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61,
0x73, 0x62, 0x61, 0x6e, 0x64, 0x47, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x68, 0x6f, 0x77, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73,
0x43, 0x61, 0x72, 0x64, 0x50, 0x6f, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x47, 0x65, 0x6e, 0x18, 0x0b,
0x68, 0x6f, 0x77, 0x43, 0x61, 0x72, 0x64, 0x50, 0x6f, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x67, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x47, 0x65, 0x6e,
0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x61, 0x72, 0x64, 0x50, 0x6f, 0x73, 0x18,
0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x78, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x61, 0x72, 0x64, 0x50,
0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x78, 0x6f, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0d, 0x20,
0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08,
0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e,
0x05, 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65,
0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63,
0x28, 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x6f, 0x72, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53,
0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x18, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47,
0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x44, 0x65, 0x64, 0x75, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61,
0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x65, 0x61, 0x76,
0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4c,
0x6d, 0x62, 0x61, 0x74, 0x22, 0x43, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x61, 0x76, 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x65,
0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52,
0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x22, 0x43, 0x0a, 0x13,
0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x5a, 0x0a, 0x13, 0x53, 0x43, 0x54,
0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x61, 0x72, 0x64, 0x73,
0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x41, 0x6c, 0x6c, 0x43,
0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x68, 0x69,
0x72, 0x74, 0x65, 0x65, 0x6e, 0x2e, 0x50, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x08, 0x41, 0x6c, 0x6c,
0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x68, 0x0a, 0x06, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12,
0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f,
0x73, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e,
0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12,
0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20,
0x01, 0x28, 0x03, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x22,
0x42, 0x0a, 0x10, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x42, 0x69, 0x6c,
0x6c, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x09, 0x41, 0x6c, 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65,
0x6e, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x09, 0x41, 0x6c, 0x6c, 0x42, 0x69, 0x6c,
0x6c, 0x65, 0x64, 0x22, 0x24, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65,
0x6e, 0x54, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x2a, 0xee, 0x02, 0x0a, 0x0d, 0x54, 0x57,
0x4d, 0x6d, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x48, 0x49, 0x52, 0x54, 0x45, 0x45, 0x4e, 0x5f, 0x5a,
0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e,
0x66, 0x6f, 0x10, 0xc2, 0x2b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x4f, 0x70, 0x10, 0xc3, 0x2b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74,
0x61, 0x74, 0x65, 0x10, 0xc4, 0x2b, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01,
0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72,
0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xc5, 0x2b, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x73, 0x22, 0x5a, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x53,
0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xc6, 0x2b, 0x12, 0x21, 0x0a, 0x1c, 0x68, 0x6f, 0x77, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65,
0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x10, 0xc7, 0x2b, 0x12, 0x12, 0x2b, 0x0a, 0x08, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03,
0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x2e, 0x50, 0x6f,
0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xc8, 0x2b, 0x12, 0x6b, 0x65, 0x72, 0x52, 0x08, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x68, 0x0a,
0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x06, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01,
0x74, 0x65, 0x65, 0x6e, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x61, 0x72, 0x64, 0x73, 0x10, 0xc9, 0x2b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69,
0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a,
0x72, 0x74, 0x65, 0x65, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0xca, 0x2b, 0x12, 0x1a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x62, 0x61,
0x65, 0x65, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x10, 0xcb, 0x2b, 0x2a, 0x2f, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x43, 0x6f, 0x6d,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x62, 0x61, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x42, 0x0a, 0x10, 0x53, 0x43, 0x54, 0x68, 0x69,
0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x09, 0x41,
0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6c, 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10,
0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x2e, 0x74, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64,
0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x74, 0x68, 0x69, 0x52, 0x09, 0x41, 0x6c, 0x6c, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x22, 0x24, 0x0a, 0x0e, 0x53,
0x72, 0x74, 0x65, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74,
0x61, 0x2a, 0xee, 0x02, 0x0a, 0x0d, 0x54, 0x57, 0x4d, 0x6d, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x65,
0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x48,
0x49, 0x52, 0x54, 0x45, 0x45, 0x4e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1e, 0x0a,
0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65,
0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xc2, 0x2b, 0x12, 0x1e, 0x0a,
0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65,
0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xc3, 0x2b, 0x12, 0x1f, 0x0a,
0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65,
0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xc4, 0x2b, 0x12, 0x21,
0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74,
0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xc5,
0x2b, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x68,
0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76,
0x65, 0x10, 0xc6, 0x2b, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43,
0x61, 0x72, 0x64, 0x73, 0x10, 0xc7, 0x2b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79,
0x65, 0x72, 0x4f, 0x70, 0x10, 0xc8, 0x2b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x53, 0x68, 0x6f, 0x77,
0x43, 0x61, 0x72, 0x64, 0x73, 0x10, 0xc9, 0x2b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x42, 0x69, 0x6c,
0x6c, 0x65, 0x64, 0x10, 0xca, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x54, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x10,
0xcb, 0x2b, 0x2a, 0x2f, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73,
0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f,
0x72, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, 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, 0x74, 0x68, 0x69, 0x72, 0x74, 0x65, 0x65, 0x6e, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

View File

@ -125,6 +125,8 @@ message ThirteenPlayerData {
bool IsConfirm = 25; // bool IsConfirm = 25; //
bool IsLeave = 26; // bool IsLeave = 26; //
int32 RoleId = 27; //使id int32 RoleId = 27; //使id
int64 Level = 28; //
int64 Exp = 29; //
} }
// //

View File

@ -194,6 +194,9 @@ type TienLenPlayerData struct {
CopyRoleId int32 `protobuf:"varint,24,opt,name=CopyRoleId,proto3" json:"CopyRoleId,omitempty"` //比赛场机器人假角色 CopyRoleId int32 `protobuf:"varint,24,opt,name=CopyRoleId,proto3" json:"CopyRoleId,omitempty"` //比赛场机器人假角色
RankScore int64 `protobuf:"varint,25,opt,name=RankScore,proto3" json:"RankScore,omitempty"` // 排位积分 RankScore int64 `protobuf:"varint,25,opt,name=RankScore,proto3" json:"RankScore,omitempty"` // 排位积分
ThinkLongCnt int32 `protobuf:"varint,26,opt,name=ThinkLongCnt,proto3" json:"ThinkLongCnt,omitempty"` // 长考次数 ThinkLongCnt int32 `protobuf:"varint,26,opt,name=ThinkLongCnt,proto3" json:"ThinkLongCnt,omitempty"` // 长考次数
Level int64 `protobuf:"varint,27,opt,name=Level,proto3" json:"Level,omitempty"` //玩家等级
Exp int64 `protobuf:"varint,28,opt,name=Exp,proto3" json:"Exp,omitempty"` //玩家经验
PigBankCoin int64 `protobuf:"varint,29,opt,name=PigBankCoin,proto3" json:"PigBankCoin,omitempty"` //存钱罐金币
} }
func (x *TienLenPlayerData) Reset() { func (x *TienLenPlayerData) Reset() {
@ -410,6 +413,27 @@ func (x *TienLenPlayerData) GetThinkLongCnt() int32 {
return 0 return 0
} }
func (x *TienLenPlayerData) GetLevel() int64 {
if x != nil {
return x.Level
}
return 0
}
func (x *TienLenPlayerData) GetExp() int64 {
if x != nil {
return x.Exp
}
return 0
}
func (x *TienLenPlayerData) GetPigBankCoin() int64 {
if x != nil {
return x.PigBankCoin
}
return 0
}
type LastDelCard struct { type LastDelCard struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -488,9 +512,12 @@ type SCTienLenRoomInfo struct {
NextNeed int32 `protobuf:"varint,25,opt,name=NextNeed,proto3" json:"NextNeed,omitempty"` //前多少名可以晋级下一轮 NextNeed int32 `protobuf:"varint,25,opt,name=NextNeed,proto3" json:"NextNeed,omitempty"` //前多少名可以晋级下一轮
MatchFinals int32 `protobuf:"varint,26,opt,name=MatchFinals,proto3" json:"MatchFinals,omitempty"` //0晋级赛 1半决赛 2是总决赛 MatchFinals int32 `protobuf:"varint,26,opt,name=MatchFinals,proto3" json:"MatchFinals,omitempty"` //0晋级赛 1半决赛 2是总决赛
// 比赛场相关 // 比赛场相关
RankType int32 `protobuf:"varint,27,opt,name=RankType,proto3" json:"RankType,omitempty"` // 排位类型 RankType int32 `protobuf:"varint,27,opt,name=RankType,proto3" json:"RankType,omitempty"` // 排位类型
SceneAdd int32 `protobuf:"varint,28,opt,name=SceneAdd,proto3" json:"SceneAdd,omitempty"` // 场次加成(百分比) SceneAdd int32 `protobuf:"varint,28,opt,name=SceneAdd,proto3" json:"SceneAdd,omitempty"` // 场次加成(百分比)
RecordId string `protobuf:"bytes,29,opt,name=RecordId,proto3" json:"RecordId,omitempty"` // 牌局ID RecordId string `protobuf:"bytes,29,opt,name=RecordId,proto3" json:"RecordId,omitempty"` // 牌局ID
OutCardRecord []int32 `protobuf:"varint,30,rep,packed,name=OutCardRecord,proto3" json:"OutCardRecord,omitempty"` //已打出去的牌
IsOutRecord bool `protobuf:"varint,31,opt,name=IsOutRecord,proto3" json:"IsOutRecord,omitempty"` //是否能用记牌器
ItemRecExpireTime int64 `protobuf:"varint,32,opt,name=ItemRecExpireTime,proto3" json:"ItemRecExpireTime,omitempty"` //记牌器到期时间
} }
func (x *SCTienLenRoomInfo) Reset() { func (x *SCTienLenRoomInfo) Reset() {
@ -707,6 +734,27 @@ func (x *SCTienLenRoomInfo) GetRecordId() string {
return "" return ""
} }
func (x *SCTienLenRoomInfo) GetOutCardRecord() []int32 {
if x != nil {
return x.OutCardRecord
}
return nil
}
func (x *SCTienLenRoomInfo) GetIsOutRecord() bool {
if x != nil {
return x.IsOutRecord
}
return false
}
func (x *SCTienLenRoomInfo) GetItemRecExpireTime() int64 {
if x != nil {
return x.ItemRecExpireTime
}
return 0
}
//房间状态更新 //房间状态更新
type SCTienLenRoomState struct { type SCTienLenRoomState struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -991,7 +1039,7 @@ type AddItem struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
ItemType int32 `protobuf:"varint,1,opt,name=ItemType,proto3" json:"ItemType,omitempty"` // 类型; 1场次加成 2道具 3宠物 4角色 5vip加成 ItemType int32 `protobuf:"varint,1,opt,name=ItemType,proto3" json:"ItemType,omitempty"` // 类型; 1场次加成 2道具 3宠物 4角色 5vip加成 6周卡加成
ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId,omitempty"` // ID ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId,omitempty"` // ID
Addition int32 `protobuf:"varint,3,opt,name=Addition,proto3" json:"Addition,omitempty"` // 加成(百分比) Addition int32 `protobuf:"varint,3,opt,name=Addition,proto3" json:"Addition,omitempty"` // 加成(百分比)
Score int64 `protobuf:"varint,4,opt,name=Score,proto3" json:"Score,omitempty"` // 加成分数 Score int64 `protobuf:"varint,4,opt,name=Score,proto3" json:"Score,omitempty"` // 加成分数
@ -1318,7 +1366,8 @@ type SCTienLenCard struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Cards []int32 `protobuf:"varint,1,rep,packed,name=Cards,proto3" json:"Cards,omitempty"` //手牌 Cards []int32 `protobuf:"varint,1,rep,packed,name=Cards,proto3" json:"Cards,omitempty"` //手牌
IsOutRecord bool `protobuf:"varint,2,opt,name=IsOutRecord,proto3" json:"IsOutRecord,omitempty"` // 是否有出牌记录
} }
func (x *SCTienLenCard) Reset() { func (x *SCTienLenCard) Reset() {
@ -1360,6 +1409,13 @@ func (x *SCTienLenCard) GetCards() []int32 {
return nil return nil
} }
func (x *SCTienLenCard) GetIsOutRecord() bool {
if x != nil {
return x.IsOutRecord
}
return false
}
//测试数据 //测试数据
type SCTienLenCardTest struct { type SCTienLenCardTest struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -1977,7 +2033,7 @@ var File_tienlen_proto protoreflect.FileDescriptor
var file_tienlen_proto_rawDesc = []byte{ var file_tienlen_proto_rawDesc = []byte{
0x0a, 0x0d, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x0d, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x07, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x22, 0x82, 0x06, 0x0a, 0x11, 0x54, 0x69, 0x65, 0x07, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x22, 0xcc, 0x06, 0x0a, 0x11, 0x54, 0x69, 0x65,
0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12,
0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
@ -2022,64 +2078,76 @@ var file_tienlen_proto_rawDesc = []byte{
0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12,
0x22, 0x0a, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x18, 0x22, 0x0a, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x18,
0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67,
0x43, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x43, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x1b, 0x20, 0x01,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x50,
0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x03,
0x0b, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x0b, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x1a, 0x38, 0x0a,
0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x64, 0x73, 0x22, 0xb5, 0x06, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x44,
0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18,
0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0xab, 0x07, 0x0a,
0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e,
0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72,
0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x72, 0x65,
0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03,
0x50, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08,
0x72, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x69, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x65, 0x4f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x69, 0x6d, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x65, 0x4f, 0x75, 0x74, 0x12, 0x34, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x18, 0x06, 0x20,
0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x12, 0x14,
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53,
0x61, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x18,
0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x12, 0x34,
0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x43, 0x75, 0x72, 0x4f, 0x70, 0x49, 0x64, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x1a, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65,
0x43, 0x75, 0x72, 0x4f, 0x70, 0x49, 0x64, 0x78, 0x12, 0x38, 0x0a, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x50, 0x6c, 0x61,
0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x79, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65,
0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65,
0x43, 0x61, 0x72, 0x64, 0x52, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x49,
0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x64, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x49,
0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x64, 0x78, 0x12, 0x38, 0x0a, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72,
0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c,
0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x65, 0x6e, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x52, 0x0c,
0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a,
0x53, 0x6e, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05,
0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c,
0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01,
0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73,
0x72, 0x4e, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x10,
0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64,
0x6e, 0x69, 0x64, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20,
0x6e, 0x69, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22,
0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x12,
0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e,
0x6f, 0x75, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x75, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x18, 0x13,
0x72, 0x4e, 0x75, 0x6d, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x75, 0x72, 0x50, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, 0x18,
0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x65, 0x78, 0x74, 0x0a, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52,
0x4e, 0x65, 0x65, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x65, 0x78, 0x74, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e,
0x4e, 0x65, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6e, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x22,
0x61, 0x6c, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x0a, 0x0c, 0x43, 0x75, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x18,
0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x75, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e,
0x70, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x65, 0x78, 0x74, 0x4e, 0x65, 0x65, 0x64, 0x18, 0x19,
0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, 0x64, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x65, 0x78, 0x74, 0x4e, 0x65, 0x65, 0x64, 0x12, 0x20,
0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, 0x64, 0x64, 0x12, 0x1a, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x1a, 0x20,
0x0a, 0x08, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73,
0x52, 0x08, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x22, 0x42, 0x0a, 0x12, 0x53, 0x43, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x1b, 0x20, 0x01,
0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08,
0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, 0x64, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, 0x64, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x49, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x75, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4f, 0x75, 0x74,
0x43, 0x61, 0x72, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73,
0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0b, 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x11,
0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d,
0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63,
0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x12, 0x53, 0x43,
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65,
0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
@ -2148,152 +2216,154 @@ var file_tienlen_proto_rawDesc = []byte{
0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73,
0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4c, 0x6f, 0x73,
0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x25, 0x0a, 0x0d, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x47, 0x0a, 0x0d, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c,
0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18,
0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x88, 0x02, 0x0a, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b,
0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x88,
0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x53, 0x43, 0x54, 0x02, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64,
0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x54, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01,
0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x47, 0x72, 0x61, 0x64, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x53,
0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74,
0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x47, 0x72,
0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x61, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61,
0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c,
0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x18, 0x04,
0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x12, 0x1a,
0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x39, 0x0a, 0x0b, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01,
0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x39,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7f, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7f, 0x0a, 0x11, 0x53, 0x43, 0x54,
0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10,
0x73, 0x4e, 0x65, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73,
0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x78, 0x44, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18,
0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07,
0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x3b, 0x0a, 0x19, 0x53, 0x43, 0x54, 0x69, 0x45, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45,
0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x05,
0x72, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x3b, 0x0a, 0x19, 0x53, 0x43,
0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73,
0x72, 0x53, 0x6e, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x1a, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65,
0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x73,
0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x1a, 0x53, 0x43, 0x54, 0x69, 0x65,
0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e,
0x63, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0xcb, 0x07, 0x0a, 0x0f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63,
0x4c, 0x65, 0x6e, 0x41, 0x49, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x42, 0x6f, 0x6d, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x75, 0x64, 0x69,
0x62, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x42, 0x6f, 0x6d, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0xcb, 0x07, 0x0a, 0x0f, 0x53, 0x43, 0x54, 0x69,
0x62, 0x4e, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x43, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x42,
0x79, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x6f, 0x6d, 0x62, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x42,
0x28, 0x09, 0x52, 0x11, 0x43, 0x61, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6d, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x43, 0x61, 0x72, 0x64, 0x5f, 0x70,
0x6f, 0x6e, 0x53, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x6c, 0x61, 0x79, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x02,
0x76, 0x65, 0x5f, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x43, 0x61, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x41, 0x63,
0x4d, 0x6f, 0x76, 0x65, 0x30, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f,
0x76, 0x65, 0x5f, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61,
0x4d, 0x6f, 0x76, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x30, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f,
0x76, 0x65, 0x5f, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61,
0x4d, 0x6f, 0x76, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f,
0x76, 0x65, 0x5f, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61,
0x4d, 0x6f, 0x76, 0x65, 0x33, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f,
0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61,
0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x27, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x33, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63,
0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28,
0x5f, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30,
0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63,
0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x32,
0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65,
0x66, 0x74, 0x5f, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43,
0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x28, 0x0a, 0x10, 0x4f, 0x74, 0x68, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d,
0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x09, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66,
0x72, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x32, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f,
0x72, 0x64, 0x73, 0x5f, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75,
0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x30, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x28, 0x0a, 0x10, 0x4f,
0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18,
0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x31, 0x12, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64,
0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f,
0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50,
0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x30, 0x12, 0x24, 0x0a, 0x0e, 0x50,
0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x31, 0x18, 0x0d, 0x20,
0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x33, 0x12, 0x2a, 0x0a, 0x11, 0x50, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73,
0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x31, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64,
0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x61, 0x73, 0x5f, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65,
0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65,
0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52,
0x52, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x33, 0x12, 0x2a, 0x0a,
0x12, 0x24, 0x0a, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x59, 0x75, 0x6c, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72,
0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x64, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x65, 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x46, 0x69, 0x72, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x50, 0x6c, 0x61,
0x74, 0x48, 0x61, 0x6e, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x46, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01,
0x69, 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x28, 0x05, 0x52, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69,
0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x14, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x59,
0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x75, 0x6c, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65,
0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x6e, 0x4c, 0x65, 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x46, 0x69,
0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x20, 0x0a, 0x0c, 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49,
0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x16, 0x20, 0x03, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61,
0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x32, 0x12, 0x20, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x14, 0x20, 0x03, 0x28, 0x05,
0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x17, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x20, 0x0a, 0x0c,
0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x15, 0x20, 0x03,
0x12, 0x19, 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x20,
0x28, 0x05, 0x52, 0x07, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x16,
0x73, 0x45, 0x6e, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x45, 0x6e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x32,
0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x18, 0x1a, 0x20, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33,
0x03, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x18, 0x17, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66,
0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x74, 0x33, 0x12, 0x19, 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x18,
0x57, 0x69, 0x6e, 0x22, 0x27, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a,
0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x05, 0x49, 0x73, 0x45, 0x6e, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73,
0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x41, 0x0a, 0x1b, 0x45, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x18,
0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12,
0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05,
0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x22, 0x27, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c,
0x05, 0x52, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x2a, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03,
0x3e, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x41,
0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x0a, 0x1b, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65,
0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x72, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x12, 0x22, 0x0a,
0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x2a, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20,
0xb6, 0x04, 0x0a, 0x0f, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e,
0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x69, 0x74, 0x2a, 0x3e, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72,
0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x29, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x69, 0x6e, 0x74, 0x10,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x02, 0x2a, 0xb6, 0x04, 0x0a, 0x0f, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x61, 0x63,
0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xfb, 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1d, 0x0a,
0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfc, 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x29, 0x12, 0x1e, 0x0a, 0x19,
0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfd, 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xfb, 0x29, 0x12, 0x1d, 0x0a, 0x18,
0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xfe, 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfc, 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50,
0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfd, 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c,
0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xff, 0x29, 0x12, 0x19, 0x0a, 0x14, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xfe, 0x29, 0x12, 0x20, 0x0a, 0x1b,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e,
0x43, 0x61, 0x72, 0x64, 0x10, 0x80, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xff, 0x29, 0x12, 0x19,
0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c,
0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x81, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x10, 0x80, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d,
0x70, 0x50, 0x6f, 0x73, 0x10, 0x82, 0x2a, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x81, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75,
0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x83, 0x2a, 0x12, 0x25, 0x0a, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x82, 0x2a, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43,
0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61,
0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x83, 0x2a, 0x12,
0x64, 0x10, 0x84, 0x2a, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e,
0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53,
0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x10, 0x85, 0x2a, 0x12, 0x17, 0x0a, 0x12, 0x6e, 0x69, 0x64, 0x10, 0x84, 0x2a, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x41, 0x49, 0x10, 0x86, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x10, 0x85, 0x2a, 0x12, 0x17,
0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c,
0x50, 0x6f, 0x73, 0x10, 0x87, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x65, 0x6e, 0x41, 0x49, 0x10, 0x86, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74,
0x73, 0x74, 0x10, 0x88, 0x2a, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x87, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b,
0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64,
0x6e, 0x67, 0x43, 0x6e, 0x74, 0x10, 0x89, 0x2a, 0x42, 0x27, 0x5a, 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x54, 0x65, 0x73, 0x74, 0x10, 0x88, 0x2a, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x54, 0x68, 0x69, 0x6e, 0x6b,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x10, 0x89, 0x2a, 0x42, 0x27, 0x5a, 0x25, 0x6d, 0x6f,
0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 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, 0x74, 0x69, 0x65, 0x6e,
0x6c, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

View File

@ -59,6 +59,9 @@ message TienLenPlayerData {
int32 CopyRoleId = 24;// int32 CopyRoleId = 24;//
int64 RankScore = 25; // int64 RankScore = 25; //
int32 ThinkLongCnt = 26; // int32 ThinkLongCnt = 26; //
int64 Level = 27; //
int64 Exp = 28; //
int64 PigBankCoin = 29; //
} }
message LastDelCard { message LastDelCard {
@ -95,6 +98,10 @@ message SCTienLenRoomInfo {
int32 RankType = 27; // int32 RankType = 27; //
int32 SceneAdd = 28; // int32 SceneAdd = 28; //
string RecordId = 29; // ID string RecordId = 29; // ID
repeated int32 OutCardRecord = 30 ;//
bool IsOutRecord = 31;//
int64 ItemRecExpireTime = 32; //
} }
// //
@ -126,7 +133,7 @@ message SCTienLenPlayerLeave {
} }
message AddItem { message AddItem {
int32 ItemType = 1; // ; 1 2 3 4 5vip加成 int32 ItemType = 1; // ; 1 2 3 4 5vip加成 6
int32 ItemId = 2; // ID int32 ItemId = 2; // ID
int32 Addition = 3; // int32 Addition = 3; //
int64 Score = 4; // int64 Score = 4; //
@ -163,6 +170,7 @@ message SCTienLenSmallGameBilled {
// //
message SCTienLenCard { message SCTienLenCard {
repeated int32 Cards = 1; // repeated int32 Cards = 1; //
bool IsOutRecord = 2; //
} }
// //

View File

@ -2199,25 +2199,26 @@ type CoinPoolSetting struct {
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// 水池配置(excel) // 水池配置(excel)
Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` //平台id Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` //平台id
GroupId int32 `protobuf:"varint,2,opt,name=GroupId,proto3" json:"GroupId,omitempty"` //组id GroupId int32 `protobuf:"varint,2,opt,name=GroupId,proto3" json:"GroupId,omitempty"` //组id
GameFreeId int32 `protobuf:"varint,3,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //游戏id GameFreeId int32 `protobuf:"varint,3,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //游戏id
ServerId int32 `protobuf:"varint,4,opt,name=ServerId,proto3" json:"ServerId,omitempty"` //服务器id ServerId int32 `protobuf:"varint,4,opt,name=ServerId,proto3" json:"ServerId,omitempty"` //服务器id
InitValue int64 `protobuf:"varint,5,opt,name=InitValue,proto3" json:"InitValue,omitempty"` //初始库存值 InitValue int64 `protobuf:"varint,5,opt,name=InitValue,proto3" json:"InitValue,omitempty"` //初始库存值
LowerLimit int64 `protobuf:"varint,6,opt,name=LowerLimit,proto3" json:"LowerLimit,omitempty"` //库存下限 LowerLimit int64 `protobuf:"varint,6,opt,name=LowerLimit,proto3" json:"LowerLimit,omitempty"` //库存下限
UpperLimit int64 `protobuf:"varint,7,opt,name=UpperLimit,proto3" json:"UpperLimit,omitempty"` //库存上限 UpperLimit int64 `protobuf:"varint,7,opt,name=UpperLimit,proto3" json:"UpperLimit,omitempty"` //库存上限
QuDu int64 `protobuf:"varint,8,opt,name=QuDu,proto3" json:"QuDu,omitempty"` // 曲度值 QuDu int64 `protobuf:"varint,8,opt,name=QuDu,proto3" json:"QuDu,omitempty"` // 曲度值
UpperOdds int32 `protobuf:"varint,9,opt,name=UpperOdds,proto3" json:"UpperOdds,omitempty"` // 上线初始概率 UpperOdds int32 `protobuf:"varint,9,opt,name=UpperOdds,proto3" json:"UpperOdds,omitempty"` // 上线初始概率
UpperOddsMax int32 `protobuf:"varint,10,opt,name=UpperOddsMax,proto3" json:"UpperOddsMax,omitempty"` // 上线最大概率 UpperOddsMax int32 `protobuf:"varint,10,opt,name=UpperOddsMax,proto3" json:"UpperOddsMax,omitempty"` // 上线最大概率
LowerOdds int32 `protobuf:"varint,11,opt,name=LowerOdds,proto3" json:"LowerOdds,omitempty"` // 下线初始概率 LowerOdds int32 `protobuf:"varint,11,opt,name=LowerOdds,proto3" json:"LowerOdds,omitempty"` // 下线初始概率
LowerOddsMax int32 `protobuf:"varint,12,opt,name=LowerOddsMax,proto3" json:"LowerOddsMax,omitempty"` // 下线最大概率 LowerOddsMax int32 `protobuf:"varint,12,opt,name=LowerOddsMax,proto3" json:"LowerOddsMax,omitempty"` // 下线最大概率
ProfitRate int32 `protobuf:"varint,13,opt,name=ProfitRate,proto3" json:"ProfitRate,omitempty"` //营收比例,千分比 ProfitRate int32 `protobuf:"varint,13,opt,name=ProfitRate,proto3" json:"ProfitRate,omitempty"` //营收比例,千分比
// 新增配置 ResetTime int64 `protobuf:"varint,14,opt,name=ResetTime,proto3" json:"ResetTime,omitempty"` // 重置时间
ResetTime int64 `protobuf:"varint,14,opt,name=ResetTime,proto3" json:"ResetTime,omitempty"` // 重置时间 Switch int32 `protobuf:"varint,15,opt,name=Switch,proto3" json:"Switch,omitempty"` // 开关 0开启 1关闭
Switch int32 `protobuf:"varint,15,opt,name=Switch,proto3" json:"Switch,omitempty"` // 开关 0开启 1关闭 CoinValue int64 `protobuf:"varint,16,opt,name=CoinValue,proto3" json:"CoinValue,omitempty"` // 当前水位
// 水池状态 ProfitPool int64 `protobuf:"varint,17,opt,name=ProfitPool,proto3" json:"ProfitPool,omitempty"` // 收益池水位
CoinValue int64 `protobuf:"varint,16,opt,name=CoinValue,proto3" json:"CoinValue,omitempty"` // 当前水位 CtrlRate int32 `protobuf:"varint,18,opt,name=CtrlRate,proto3" json:"CtrlRate,omitempty"` //调节赔率,万分比
ProfitPool int64 `protobuf:"varint,17,opt,name=ProfitPool,proto3" json:"ProfitPool,omitempty"` // 收益池水位 InitNoviceValue int64 `protobuf:"varint,19,opt,name=InitNoviceValue,proto3" json:"InitNoviceValue,omitempty"` // 新手池初始库存值
NoviceCoinValue int64 `protobuf:"varint,20,opt,name=NoviceCoinValue,proto3" json:"NoviceCoinValue,omitempty"` // 新手池水位
} }
func (x *CoinPoolSetting) Reset() { func (x *CoinPoolSetting) Reset() {
@ -2371,6 +2372,27 @@ func (x *CoinPoolSetting) GetProfitPool() int64 {
return 0 return 0
} }
func (x *CoinPoolSetting) GetCtrlRate() int32 {
if x != nil {
return x.CtrlRate
}
return 0
}
func (x *CoinPoolSetting) GetInitNoviceValue() int64 {
if x != nil {
return x.InitNoviceValue
}
return 0
}
func (x *CoinPoolSetting) GetNoviceCoinValue() int64 {
if x != nil {
return x.NoviceCoinValue
}
return 0
}
//邮件 //邮件
type MessageInfo struct { type MessageInfo struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -6079,7 +6101,7 @@ var file_common_proto_rawDesc = []byte{
0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4e, 0x75, 0x6d,
0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4e, 0x75, 0x6d,
0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x44, 0x61, 0x74, 0x61, 0x22, 0x8d, 0x04, 0x0a, 0x0f, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x22, 0xfd, 0x04, 0x0a, 0x0f, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f,
0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 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, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74,
0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18,
@ -6112,7 +6134,14 @@ var file_common_proto_rawDesc = []byte{
0x6c, 0x75, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x56, 0x6c, 0x75, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x50, 0x6f, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x50, 0x6f,
0x6f, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x6f, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74,
0x50, 0x6f, 0x6f, 0x6c, 0x22, 0xb5, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65,
0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65,
0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x69, 0x74, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x56, 0x61,
0x6c, 0x75, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x49, 0x6e, 0x69, 0x74, 0x4e,
0x6f, 0x76, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x4e, 0x6f,
0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x14, 0x20,
0x01, 0x28, 0x03, 0x52, 0x0f, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x22, 0xb5, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69,

View File

@ -268,12 +268,13 @@ message CoinPoolSetting{
int32 LowerOdds = 11; // 线 int32 LowerOdds = 11; // 线
int32 LowerOddsMax = 12; // 线 int32 LowerOddsMax = 12; // 线
int32 ProfitRate = 13;// int32 ProfitRate = 13;//
//
int64 ResetTime = 14; // int64 ResetTime = 14; //
int32 Switch =15; // 0 1 int32 Switch =15; // 0 1
//
int64 CoinValue = 16; // int64 CoinValue = 16; //
int64 ProfitPool = 17; // int64 ProfitPool = 17; //
int32 CtrlRate = 18; //
int64 InitNoviceValue = 19; //
int64 NoviceCoinValue = 20; //
} }
// //
message MessageInfo { message MessageInfo {

View File

@ -7172,6 +7172,7 @@ type SACreateOrder struct {
OrderId string `protobuf:"bytes,12,opt,name=OrderId,proto3" json:"OrderId,omitempty"` OrderId string `protobuf:"bytes,12,opt,name=OrderId,proto3" json:"OrderId,omitempty"`
Ts int64 `protobuf:"varint,13,opt,name=Ts,proto3" json:"Ts,omitempty"` Ts int64 `protobuf:"varint,13,opt,name=Ts,proto3" json:"Ts,omitempty"`
ExchangeOrderId string `protobuf:"bytes,14,opt,name=ExchangeOrderId,proto3" json:"ExchangeOrderId,omitempty"` //兑换订单号 ExchangeOrderId string `protobuf:"bytes,14,opt,name=ExchangeOrderId,proto3" json:"ExchangeOrderId,omitempty"` //兑换订单号
Channel string `protobuf:"bytes,15,opt,name=Channel,proto3" json:"Channel,omitempty"` // 渠道
} }
func (x *SACreateOrder) Reset() { func (x *SACreateOrder) Reset() {
@ -7304,6 +7305,13 @@ func (x *SACreateOrder) GetExchangeOrderId() string {
return "" return ""
} }
func (x *SACreateOrder) GetChannel() string {
if x != nil {
return x.Channel
}
return ""
}
type ASCreateOrder struct { type ASCreateOrder struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -9135,7 +9143,7 @@ var file_webapi_proto_rawDesc = []byte{
0x79, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 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, 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, 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, 0xa3, 0x03, 0x0a, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0xbd, 0x03, 0x0a,
0x0d, 0x53, 0x41, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 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, 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, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
@ -9162,111 +9170,113 @@ var file_webapi_proto_rawDesc = []byte{
0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x63, 0x68,
0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x09, 0x52, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72,
0x49, 0x64, 0x22, 0x45, 0x0a, 0x0d, 0x41, 0x53, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x0f, 0x20,
0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x45, 0x0a, 0x0d,
0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x41, 0x53, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a,
0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x54, 0x0a, 0x12, 0x53, 0x41, 0x57, 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, 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, 0x1c, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x28, 0x05, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a,
0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x42, 0x44, 0x61, 0x74, 0x61, 0x12, 0x06, 0x45, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x45,
0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x66, 0x0a, 0x12, 0x41, 0x53, 0x57, 0x65, 0x62, 0x41, 0x50, 0x49, 0x53, 0x79, 0x73, 0x74, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x6d, 0x50, 0x61, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x65, 0x22, 0x5f, 0x0a, 0x11, 0x41, 0x53, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50,
0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49,
0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64,
0x01, 0x28, 0x09, 0x52, 0x06, 0x45, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x0a, 0x11, 0x41, 0x53, 0x43, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61,
0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x65, 0x22, 0x48, 0x0a, 0x11, 0x53, 0x41, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01,
0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61,
0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73,
0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x1e, 0x0a, 0x0a,
0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x48, 0x0a, 0x11, 0x53, 0x41, 0x43, 0x61, 0x41, 0x53, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73,
0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x41, 0x0a, 0x0a,
0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x53, 0x41, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61,
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, 0x85, 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, 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, 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, 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, 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, 0x2a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22,
0xce, 0x01, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x7d, 0x0a, 0x09, 0x41, 0x53, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04,
0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64,
0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03,
0x03, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c,
0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x44, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c,
0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x44,
0x59, 0x42, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x44, 0x22, 0x40,
0x11, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x58, 0x49, 0x53, 0x54, 0x0a, 0x09, 0x53, 0x41, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x03, 0x54,
0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70,
0x08, 0x54, 0x65, 0x6c, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0a, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67,
0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x0b, 0x22, 0x85, 0x01, 0x0a, 0x13, 0x41, 0x53, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41,
0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74,
0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74,
0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 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, 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, 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, 0x2a, 0xce, 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, 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 ( var (

View File

@ -797,6 +797,7 @@ message SACreateOrder {
string OrderId = 12; string OrderId = 12;
int64 Ts = 13; int64 Ts = 13;
string ExchangeOrderId = 14; // string ExchangeOrderId = 14; //
string Channel = 15; //
} }
message ASCreateOrder { message ASCreateOrder {
int32 Tag = 1; //0. 1. int32 Tag = 1; //0. 1.

View File

@ -24,40 +24,46 @@ const (
type OpResultCode int32 type OpResultCode int32
const ( const (
OpResultCode_OPRC_Sucess OpResultCode = 0 //成功 OpResultCode_OPRC_Sucess OpResultCode = 0 //成功
OpResultCode_OPRC_Error OpResultCode = 1 //失败 OpResultCode_OPRC_Error OpResultCode = 1 //失败
OpResultCode_OPRC_NoTimes OpResultCode = 2 //没有领取次数 OpResultCode_OPRC_NoTimes OpResultCode = 2 //没有领取次数
OpResultCode_OPRC_CoinTooMore OpResultCode = 3 // 金币过多不符合领取 OpResultCode_OPRC_CoinTooMore OpResultCode = 3 // 金币过多不符合领取
OpResultCode_OPRC_ErrCoin OpResultCode = 4 // 钻石不足 OpResultCode_OPRC_ErrCoin OpResultCode = 4 // 钻石不足
OpResultCode_OPRC_AlreadyBind OpResultCode = 5 // 已经绑定过邀请人 OpResultCode_OPRC_AlreadyBind OpResultCode = 5 // 已经绑定过邀请人
OpResultCode_OPRC_BindSelf OpResultCode = 6 // 邀请人不能是自己 OpResultCode_OPRC_BindSelf OpResultCode = 6 // 邀请人不能是自己
OpResultCode_OPRC_MyInvite OpResultCode = 7 // 邀请人不能是我邀请的人 OpResultCode_OPRC_MyInvite OpResultCode = 7 // 邀请人不能是我邀请的人
OpResultCode_OPRC_NotExist OpResultCode = 8 // 邀请人不存在 OpResultCode_OPRC_NotExist OpResultCode = 8 // 邀请人不存在
OpResultCode_OPRC_DiamondLess OpResultCode = 9 // 钻石不足
OpResultCode_OPRC_PigbankNotFull OpResultCode = 10 // 存钱罐未满
) )
// Enum value maps for OpResultCode. // Enum value maps for OpResultCode.
var ( var (
OpResultCode_name = map[int32]string{ OpResultCode_name = map[int32]string{
0: "OPRC_Sucess", 0: "OPRC_Sucess",
1: "OPRC_Error", 1: "OPRC_Error",
2: "OPRC_NoTimes", 2: "OPRC_NoTimes",
3: "OPRC_CoinTooMore", 3: "OPRC_CoinTooMore",
4: "OPRC_ErrCoin", 4: "OPRC_ErrCoin",
5: "OPRC_AlreadyBind", 5: "OPRC_AlreadyBind",
6: "OPRC_BindSelf", 6: "OPRC_BindSelf",
7: "OPRC_MyInvite", 7: "OPRC_MyInvite",
8: "OPRC_NotExist", 8: "OPRC_NotExist",
9: "OPRC_DiamondLess",
10: "OPRC_PigbankNotFull",
} }
OpResultCode_value = map[string]int32{ OpResultCode_value = map[string]int32{
"OPRC_Sucess": 0, "OPRC_Sucess": 0,
"OPRC_Error": 1, "OPRC_Error": 1,
"OPRC_NoTimes": 2, "OPRC_NoTimes": 2,
"OPRC_CoinTooMore": 3, "OPRC_CoinTooMore": 3,
"OPRC_ErrCoin": 4, "OPRC_ErrCoin": 4,
"OPRC_AlreadyBind": 5, "OPRC_AlreadyBind": 5,
"OPRC_BindSelf": 6, "OPRC_BindSelf": 6,
"OPRC_MyInvite": 7, "OPRC_MyInvite": 7,
"OPRC_NotExist": 8, "OPRC_NotExist": 8,
"OPRC_DiamondLess": 9,
"OPRC_PigbankNotFull": 10,
} }
) )
@ -117,10 +123,14 @@ const (
SPacketID_PACKET_CSWelfRelief SPacketID = 2900 //救济金信息 SPacketID_PACKET_CSWelfRelief SPacketID = 2900 //救济金信息
SPacketID_PACKET_SCWelfRelief SPacketID = 2901 //救济金信息 SPacketID_PACKET_SCWelfRelief SPacketID = 2901 //救济金信息
// 邀请活动 // 邀请活动
SPacketID_PACKET_CSInviteInfo SPacketID = 2902 //邀请信息 SPacketID_PACKET_CSInviteInfo SPacketID = 2902 //邀请信息
SPacketID_PACKET_SCInviteInfo SPacketID = 2903 //邀请信息 SPacketID_PACKET_SCInviteInfo SPacketID = 2903 //邀请信息
SPacketID_PACKET_CSBindInvite SPacketID = 2904 //绑定邀请人 SPacketID_PACKET_CSBindInvite SPacketID = 2904 //绑定邀请人
SPacketID_PACKET_SCBindInvite SPacketID = 2905 //绑定邀请人 SPacketID_PACKET_SCBindInvite SPacketID = 2905 //绑定邀请人
SPacketID_PACKET_CSPigbankGetInfo SPacketID = 2910 // 存钱罐信息获取
SPacketID_PACKET_SCPigbankGetInfo SPacketID = 2911 // 存钱罐信息获取
SPacketID_PACKET_CSPigbankTakeCoin SPacketID = 2912 // 存钱罐领取金币
SPacketID_PACKET_SCPigbankTakeCoin SPacketID = 2913 // 存钱罐领取金币
) )
// Enum value maps for SPacketID. // Enum value maps for SPacketID.
@ -153,6 +163,10 @@ var (
2903: "PACKET_SCInviteInfo", 2903: "PACKET_SCInviteInfo",
2904: "PACKET_CSBindInvite", 2904: "PACKET_CSBindInvite",
2905: "PACKET_SCBindInvite", 2905: "PACKET_SCBindInvite",
2910: "PACKET_CSPigbankGetInfo",
2911: "PACKET_SCPigbankGetInfo",
2912: "PACKET_CSPigbankTakeCoin",
2913: "PACKET_SCPigbankTakeCoin",
} }
SPacketID_value = map[string]int32{ SPacketID_value = map[string]int32{
"PACKET_SHOP_ZERO": 0, "PACKET_SHOP_ZERO": 0,
@ -182,6 +196,10 @@ var (
"PACKET_SCInviteInfo": 2903, "PACKET_SCInviteInfo": 2903,
"PACKET_CSBindInvite": 2904, "PACKET_CSBindInvite": 2904,
"PACKET_SCBindInvite": 2905, "PACKET_SCBindInvite": 2905,
"PACKET_CSPigbankGetInfo": 2910,
"PACKET_SCPigbankGetInfo": 2911,
"PACKET_CSPigbankTakeCoin": 2912,
"PACKET_SCPigbankTakeCoin": 2913,
} }
) )
@ -2120,6 +2138,248 @@ func (x *SCBindInvite) GetOpRetCode() OpResultCode {
return OpResultCode_OPRC_Sucess return OpResultCode_OPRC_Sucess
} }
// 存钱罐信息
//PACKET_CSPigbankGetInfo
type CSPigbankGetInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *CSPigbankGetInfo) Reset() {
*x = CSPigbankGetInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_welfare_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CSPigbankGetInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CSPigbankGetInfo) ProtoMessage() {}
func (x *CSPigbankGetInfo) ProtoReflect() protoreflect.Message {
mi := &file_welfare_proto_msgTypes[32]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CSPigbankGetInfo.ProtoReflect.Descriptor instead.
func (*CSPigbankGetInfo) Descriptor() ([]byte, []int) {
return file_welfare_proto_rawDescGZIP(), []int{32}
}
// 存钱罐信息
//PACKET_SCPigbankGetInfo
type SCPigbankGetInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` //结果
BankCoin int64 `protobuf:"varint,2,opt,name=BankCoin,proto3" json:"BankCoin,omitempty"` // 当前已存金额
TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数
CostDiamond int64 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` // 耗费钻石
BankMaxCoin int64 `protobuf:"varint,5,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最储存值
}
func (x *SCPigbankGetInfo) Reset() {
*x = SCPigbankGetInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_welfare_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SCPigbankGetInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SCPigbankGetInfo) ProtoMessage() {}
func (x *SCPigbankGetInfo) ProtoReflect() protoreflect.Message {
mi := &file_welfare_proto_msgTypes[33]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SCPigbankGetInfo.ProtoReflect.Descriptor instead.
func (*SCPigbankGetInfo) Descriptor() ([]byte, []int) {
return file_welfare_proto_rawDescGZIP(), []int{33}
}
func (x *SCPigbankGetInfo) GetOpRetCode() OpResultCode {
if x != nil {
return x.OpRetCode
}
return OpResultCode_OPRC_Sucess
}
func (x *SCPigbankGetInfo) GetBankCoin() int64 {
if x != nil {
return x.BankCoin
}
return 0
}
func (x *SCPigbankGetInfo) GetTakeTimes() int32 {
if x != nil {
return x.TakeTimes
}
return 0
}
func (x *SCPigbankGetInfo) GetCostDiamond() int64 {
if x != nil {
return x.CostDiamond
}
return 0
}
func (x *SCPigbankGetInfo) GetBankMaxCoin() int64 {
if x != nil {
return x.BankMaxCoin
}
return 0
}
// 存钱罐领取金币
//PACKET_CSPigbankTakeCoin
type CSPigbankTakeCoin struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *CSPigbankTakeCoin) Reset() {
*x = CSPigbankTakeCoin{}
if protoimpl.UnsafeEnabled {
mi := &file_welfare_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CSPigbankTakeCoin) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CSPigbankTakeCoin) ProtoMessage() {}
func (x *CSPigbankTakeCoin) ProtoReflect() protoreflect.Message {
mi := &file_welfare_proto_msgTypes[34]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CSPigbankTakeCoin.ProtoReflect.Descriptor instead.
func (*CSPigbankTakeCoin) Descriptor() ([]byte, []int) {
return file_welfare_proto_rawDescGZIP(), []int{34}
}
// 存钱罐领取金币
//PACKET_SCPigbankTakeCoin
type SCPigbankTakeCoin struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 结果
TakeCoinNum int64 `protobuf:"varint,2,opt,name=TakeCoinNum,proto3" json:"TakeCoinNum,omitempty"` // 领取金币数量
TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数
CostDiamond int64 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` // 耗费钻石
BankMaxCoin int64 `protobuf:"varint,5,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最储存值
}
func (x *SCPigbankTakeCoin) Reset() {
*x = SCPigbankTakeCoin{}
if protoimpl.UnsafeEnabled {
mi := &file_welfare_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SCPigbankTakeCoin) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SCPigbankTakeCoin) ProtoMessage() {}
func (x *SCPigbankTakeCoin) ProtoReflect() protoreflect.Message {
mi := &file_welfare_proto_msgTypes[35]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SCPigbankTakeCoin.ProtoReflect.Descriptor instead.
func (*SCPigbankTakeCoin) Descriptor() ([]byte, []int) {
return file_welfare_proto_rawDescGZIP(), []int{35}
}
func (x *SCPigbankTakeCoin) GetOpRetCode() OpResultCode {
if x != nil {
return x.OpRetCode
}
return OpResultCode_OPRC_Sucess
}
func (x *SCPigbankTakeCoin) GetTakeCoinNum() int64 {
if x != nil {
return x.TakeCoinNum
}
return 0
}
func (x *SCPigbankTakeCoin) GetTakeTimes() int32 {
if x != nil {
return x.TakeTimes
}
return 0
}
func (x *SCPigbankTakeCoin) GetCostDiamond() int64 {
if x != nil {
return x.CostDiamond
}
return 0
}
func (x *SCPigbankTakeCoin) GetBankMaxCoin() int64 {
if x != nil {
return x.BankMaxCoin
}
return 0
}
var File_welfare_proto protoreflect.FileDescriptor var File_welfare_proto protoreflect.FileDescriptor
var file_welfare_proto_rawDesc = []byte{ var file_welfare_proto_rawDesc = []byte{
@ -2316,7 +2576,35 @@ var file_welfare_proto_rawDesc = []byte{
0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f,
0x64, 0x65, 0x2a, 0xb8, 0x01, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x64, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47,
0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xc5, 0x01, 0x0a, 0x10, 0x53, 0x43, 0x50, 0x69, 0x67,
0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, 0x0a, 0x09, 0x4f,
0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15,
0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01,
0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09,
0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f,
0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b,
0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x13,
0x0a, 0x11, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43,
0x6f, 0x69, 0x6e, 0x22, 0xcc, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e,
0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52,
0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77,
0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43,
0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20,
0x0a, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x75, 0x6d,
0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20,
0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20,
0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20,
0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64,
0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18,
0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f,
0x69, 0x6e, 0x2a, 0xe7, 0x01, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43,
0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65,
0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72,
0x6f, 0x72, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x54, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x54,
@ -2327,64 +2615,74 @@ var file_welfare_proto_rawDesc = []byte{
0x6e, 0x64, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x6e, 0x64, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e,
0x64, 0x53, 0x65, 0x6c, 0x66, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x4d, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x4d, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x08, 0x2a, 0xd3, 0x06, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x08, 0x12, 0x14, 0x0a,
0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x65, 0x73,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x73, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62,
0x00, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x61, 0x6e, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x0a, 0x2a, 0xcd, 0x07, 0x0a,
0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41,
0x44, 0x10, 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00,
0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45,
0x46, 0x55, 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44,
0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x10, 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b,
0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, 0x0a, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55,
0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, 0x12, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54,
0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, 0x0a, 0x1b,
0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47,
0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, 0x12, 0x1f,
0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9b, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46,
0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, 0x14, 0x12,
0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c,
0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9b, 0x14,
0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45,
0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9c,
0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57,
0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10,
0x9c, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x9d, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10,
0x10, 0x9d, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x9e, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10,
0x10, 0x9e, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x9f, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46,
0x10, 0x9f, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4f, 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49,
0x46, 0x4f, 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41,
0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x59, 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10,
0x41, 0x59, 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0xa3, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e,
0x10, 0xa3, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x46, 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41,
0x4e, 0x46, 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b,
0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49,
0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e,
0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x50, 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, 0x16,
0x4e, 0x50, 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, 0x6c,
0x54, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41,
0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66,
0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, 0x18,
0x66, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x49,
0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b,
0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10,
0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, 0x16,
0x10, 0xd9, 0x16, 0x42, 0x27, 0x5a, 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67,
0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xdf, 0x16, 0x12, 0x1d,
0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61,
0x6f, 0x74, 0x6f, 0x33, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe0, 0x16, 0x12, 0x1d, 0x0a,
0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e,
0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe1, 0x16, 0x42, 0x27, 0x5a, 0x25,
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,
0x6c, 0x66, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -2400,7 +2698,7 @@ func file_welfare_proto_rawDescGZIP() []byte {
} }
var file_welfare_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_welfare_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 32) var file_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 36)
var file_welfare_proto_goTypes = []interface{}{ var file_welfare_proto_goTypes = []interface{}{
(OpResultCode)(0), // 0: welfare.OpResultCode (OpResultCode)(0), // 0: welfare.OpResultCode
(SPacketID)(0), // 1: welfare.SPacketID (SPacketID)(0), // 1: welfare.SPacketID
@ -2436,6 +2734,10 @@ var file_welfare_proto_goTypes = []interface{}{
(*SCInviteInfo)(nil), // 31: welfare.SCInviteInfo (*SCInviteInfo)(nil), // 31: welfare.SCInviteInfo
(*CSBindInvite)(nil), // 32: welfare.CSBindInvite (*CSBindInvite)(nil), // 32: welfare.CSBindInvite
(*SCBindInvite)(nil), // 33: welfare.SCBindInvite (*SCBindInvite)(nil), // 33: welfare.SCBindInvite
(*CSPigbankGetInfo)(nil), // 34: welfare.CSPigbankGetInfo
(*SCPigbankGetInfo)(nil), // 35: welfare.SCPigbankGetInfo
(*CSPigbankTakeCoin)(nil), // 36: welfare.CSPigbankTakeCoin
(*SCPigbankTakeCoin)(nil), // 37: welfare.SCPigbankTakeCoin
} }
var file_welfare_proto_depIdxs = []int32{ var file_welfare_proto_depIdxs = []int32{
0, // 0: welfare.SCGetReliefFund.OpRetCode:type_name -> welfare.OpResultCode 0, // 0: welfare.SCGetReliefFund.OpRetCode:type_name -> welfare.OpResultCode
@ -2460,11 +2762,13 @@ var file_welfare_proto_depIdxs = []int32{
19, // 19: welfare.SCWelfareContinuousPayData.List:type_name -> welfare.WelfareSpree 19, // 19: welfare.SCWelfareContinuousPayData.List:type_name -> welfare.WelfareSpree
0, // 20: welfare.SCWelfareContinuousPay.OpRetCode:type_name -> welfare.OpResultCode 0, // 20: welfare.SCWelfareContinuousPay.OpRetCode:type_name -> welfare.OpResultCode
0, // 21: welfare.SCBindInvite.OpRetCode:type_name -> welfare.OpResultCode 0, // 21: welfare.SCBindInvite.OpRetCode:type_name -> welfare.OpResultCode
22, // [22:22] is the sub-list for method output_type 0, // 22: welfare.SCPigbankGetInfo.OpRetCode:type_name -> welfare.OpResultCode
22, // [22:22] is the sub-list for method input_type 0, // 23: welfare.SCPigbankTakeCoin.OpRetCode:type_name -> welfare.OpResultCode
22, // [22:22] is the sub-list for extension type_name 24, // [24:24] is the sub-list for method output_type
22, // [22:22] is the sub-list for extension extendee 24, // [24:24] is the sub-list for method input_type
0, // [0:22] is the sub-list for field type_name 24, // [24:24] is the sub-list for extension type_name
24, // [24:24] is the sub-list for extension extendee
0, // [0:24] is the sub-list for field type_name
} }
func init() { file_welfare_proto_init() } func init() { file_welfare_proto_init() }
@ -2857,6 +3161,54 @@ func file_welfare_proto_init() {
return nil return nil
} }
} }
file_welfare_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CSPigbankGetInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_welfare_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SCPigbankGetInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_welfare_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CSPigbankTakeCoin); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_welfare_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SCPigbankTakeCoin); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
} }
type x struct{} type x struct{}
out := protoimpl.TypeBuilder{ out := protoimpl.TypeBuilder{
@ -2864,7 +3216,7 @@ func file_welfare_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_welfare_proto_rawDesc, RawDescriptor: file_welfare_proto_rawDesc,
NumEnums: 2, NumEnums: 2,
NumMessages: 32, NumMessages: 36,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View File

@ -12,6 +12,9 @@ enum OpResultCode {
OPRC_BindSelf = 6; // OPRC_BindSelf = 6; //
OPRC_MyInvite = 7; // OPRC_MyInvite = 7; //
OPRC_NotExist = 8; // OPRC_NotExist = 8; //
OPRC_DiamondLess = 9; //
OPRC_PigbankNotFull = 10; //
} }
// //
enum SPacketID { enum SPacketID {
@ -45,6 +48,11 @@ enum SPacketID {
PACKET_SCInviteInfo = 2903;// PACKET_SCInviteInfo = 2903;//
PACKET_CSBindInvite = 2904;// PACKET_CSBindInvite = 2904;//
PACKET_SCBindInvite = 2905;// PACKET_SCBindInvite = 2905;//
PACKET_CSPigbankGetInfo = 2910;//
PACKET_SCPigbankGetInfo = 2911;//
PACKET_CSPigbankTakeCoin = 2912;//
PACKET_SCPigbankTakeCoin = 2913;//
} }
// //
@ -254,4 +262,35 @@ message CSBindInvite{
// PACKET_SCBindInvite // PACKET_SCBindInvite
message SCBindInvite{ message SCBindInvite{
OpResultCode OpRetCode = 1; // OpResultCode OpRetCode = 1; //
}
//
//PACKET_CSPigbankGetInfo
message CSPigbankGetInfo{
}
//
//PACKET_SCPigbankGetInfo
message SCPigbankGetInfo{
OpResultCode OpRetCode = 1; //
int64 BankCoin = 2; //
int32 TakeTimes = 3; //
int64 CostDiamond = 4; //
int64 BankMaxCoin = 5; //
}
//
//PACKET_CSPigbankTakeCoin
message CSPigbankTakeCoin{
}
//
//PACKET_SCPigbankTakeCoin
message SCPigbankTakeCoin{
OpResultCode OpRetCode = 1; //
int64 TakeCoinNum = 2; //
int32 TakeTimes = 3; //
int64 CostDiamond = 4; //
int64 BankMaxCoin = 5; //
} }

2
public

@ -1 +1 @@
Subproject commit b069a50a51c0cdcdc46071062cfb711bc1398cb3 Subproject commit a7fc5af077865e1daf27c8e04ff3247aa643a815

View File

@ -24,6 +24,8 @@ func init() {
com.Register(int(rankproto.Rank_PACKET_CSInviteLog), rankproto.CSInviteLog{}, CSInviteLog) com.Register(int(rankproto.Rank_PACKET_CSInviteLog), rankproto.CSInviteLog{}, CSInviteLog)
// 收入榜 // 收入榜
com.Register(int(rankproto.Rank_PACKET_RANK_CSWinCoin), rankproto.CSWinCoin{}, CSWinCoin) com.Register(int(rankproto.Rank_PACKET_RANK_CSWinCoin), rankproto.CSWinCoin{}, CSWinCoin)
//等级榜
com.Register(int(rankproto.Rank_PACKET_RANK_CSLevel), rankproto.CSPlayerLevelRank{}, CSPlayerLevelRank)
} }
func CSRankMatch(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error { func CSRankMatch(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error {
@ -381,3 +383,97 @@ func CSWinCoin(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data
}) })
return nil return nil
} }
// 玩家等级榜
func CSPlayerLevelRank(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error {
logger.Logger.Trace("CSPlayerLevelRank data:", data)
msg, ok := data.(*rankproto.CSPlayerLevelRank)
if !ok {
return nil
}
ret := &rankproto.SCPlayerLevelRank{}
var ranks []*rankproto.PlayerLevelRankInfo
var me *rankproto.PlayerLevelRankInfo
send := func() {
ret.Ranks = ranks
ret.Me = me
common.SendToGate(sid, int(rankproto.Rank_PACKET_RANK_SCLevel), ret, s)
logger.Logger.Tracef("SCWinCoin: %v", ret)
}
rank.PlayerLevelMgrInstance.Take(d.Platform, 0, func(list []*model.PlayerLevelInfo, err error) {
if err != nil {
logger.Logger.Errorf("CSPlayerLevelRank error: %v", err)
return
}
start, end := com.SkipLimitToStartEnd(msg.GetSkip(), msg.GetLimit(), len(list))
ret.Skip = start
ret.Limit = msg.GetLimit()
var i int32
for _, v := range list[start:end] {
r := &rankproto.PlayerLevelRankInfo{
SnId: v.SnId,
Name: v.Name,
Level: v.Level,
ModId: v.ModId,
Rank: i,
}
ranks = append(ranks, r)
i++
if v.SnId == d.Snid {
me = r
}
}
if len(list) > 0 && me == nil {
for k, v := range list {
if v.SnId == d.Snid {
me = &rankproto.PlayerLevelRankInfo{
SnId: v.SnId,
Name: v.Name,
Level: v.Level,
Rank: int32(k),
ModId: v.ModId,
}
break
}
}
}
if me == nil {
var err error
var ret *model.FindPlayerLevelReply
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
startTs, endTs := rank.StartEndTs()
ret, err = model.FindPlayerLevel(&model.FindPlayerLevelArgs{
Platform: d.Platform,
StartTs: startTs,
EndTs: endTs,
SnId: d.Snid,
})
if err != nil {
logger.Logger.Errorf("FindWinCoinTienlen error: %v", err)
}
return nil
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
if err == nil && ret.List != nil {
me = &rankproto.PlayerLevelRankInfo{
SnId: ret.List.SnId,
Name: ret.List.Name,
Rank: -1,
Level: ret.List.Level,
ModId: ret.List.ModId,
}
}
send()
})).Start()
} else {
send()
}
})
return nil
}

View File

@ -0,0 +1,22 @@
package rank
import (
"mongo.games.com/game/model"
"mongo.games.com/game/ranksrv/com"
"mongo.games.com/goserver/core/logger"
)
var PlayerLevelMgrInstance = com.NewListMgr[*model.PlayerLevelInfo](
func() int64 {
return int64(model.GameParamData.RankTimeout)
},
func(platform string, index int32) ([]*model.PlayerLevelInfo, error) {
logger.Logger.Tracef("load rank player level platform:%s", platform)
list, err := model.FindPlayerLevelList(&model.FindPlayerLevelListArgs{
Platform: platform,
})
if err != nil {
return nil, err
}
return list.List, nil
})

View File

@ -2,15 +2,17 @@ package base
import ( import (
"mongo.games.com/goserver/core" "mongo.games.com/goserver/core"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/netlib" "mongo.games.com/goserver/core/netlib"
) )
var Config = Configuration{} var Config = &Configuration{}
type Configuration struct { type Configuration struct {
Count int // 机器人总数 Count int // 机器人总数
AppId string // appID MatchCount int // 比赛机器人总数
Connects netlib.SessionConfig // 网络连接配置 AppId string // appID
Connects netlib.SessionConfig // 网络连接配置
} }
func (this *Configuration) Name() string { func (this *Configuration) Name() string {
@ -18,7 +20,10 @@ func (this *Configuration) Name() string {
} }
func (this *Configuration) Init() error { func (this *Configuration) Init() error {
//logger.Logger.Tracef("%+v", *this) logger.Logger.Tracef("%+v", *this)
if this.Count == 0 {
this.Count = 20
}
return nil return nil
} }
@ -27,5 +32,5 @@ func (this *Configuration) Close() error {
} }
func init() { func init() {
core.RegistePackage(&Config) core.RegistePackage(Config)
} }

58
robot/base/interaction.go Normal file
View File

@ -0,0 +1,58 @@
package base
import (
"math/rand"
"mongo.games.com/game/protocol/gamehall"
"mongo.games.com/goserver/core/netlib"
)
// 机器人互动操作
const (
none = -1
weixiao_01 = iota - 1
kaixin_02
kuqi_03
nanweiren_04
aini_05
dengyan_06
ganga_07
dahan_08
fahuo_09
maren_10
mihu_11
wulianxiao_12
shuashuai_13
haixiu_14
aixin_15
buai_16
zan_17
daozan_18
woshou_19
ok_20
fo_21
)
var (
Emote1 = []int{fahuo_09, dahan_08, nanweiren_04, dengyan_06, mihu_11, none}
Emote2 = []int{weixiao_01, dengyan_06, mihu_11, mihu_11, none}
Emote3 = []int{dengyan_06, fahuo_09, ganga_07, none}
Emote4 = []int{aini_05, wulianxiao_12, shuashuai_13, none}
Emote5 = []int{shuashuai_13, wulianxiao_12, none}
)
// SendEmote 随机表情
func SendEmote(s *netlib.Session, arr []int) {
e := arr[rand.Intn(len(arr))] // 随机一个表情
if e == -1 {
return
}
pack := &gamehall.CSRoomEvent{
Tp: 2,
Content: "",
Param: []int32{int32(e)},
}
DelaySendSecond(s, int(gamehall.GameHallPacketID_PACKET_CSRoomEvent), pack, 3, 5)
}

View File

@ -21,20 +21,16 @@ type PlayerMgr struct {
playersMapSnId map[int32]*player_proto.SCPlayerData // 玩家id:玩家信息 playersMapSnId map[int32]*player_proto.SCPlayerData // 玩家id:玩家信息
playersSession map[int32]*netlib.Session // 非比赛场; 玩家id:session playersSession map[int32]*netlib.Session // 非比赛场; 玩家id:session
playersMatchSession map[int32]*netlib.Session // 比赛场玩家id:session playersMatchSession map[int32]*netlib.Session // 比赛场玩家id:session
playerEnterType bool
} }
func (pm *PlayerMgr) AddPlayer(data *player_proto.SCPlayerData, s *netlib.Session) { func (pm *PlayerMgr) AddPlayer(data *player_proto.SCPlayerData, s *netlib.Session) {
snid := data.GetData().GetSnId() snid := data.GetData().GetSnId()
pm.playersMapSnId[snid] = data pm.playersMapSnId[snid] = data
// 给比赛场预留50%的机器人 if Config.Count-Config.MatchCount > len(pm.playersSession) {
if pm.playerEnterType {
pm.playerEnterType = false
pm.playersMatchSession[snid] = s
} else {
pm.playerEnterType = true
pm.playersSession[snid] = s pm.playersSession[snid] = s
} else {
pm.playersMatchSession[snid] = s
} }
} }

View File

@ -47,6 +47,13 @@ func (sm *SceneMgr) GetSceneDBGameFree(sceneId, gamefreeId int32) *server_proto.
return srvdata.PBDB_GameFreeMgr.GetData(gamefreeId) return srvdata.PBDB_GameFreeMgr.GetData(gamefreeId)
} }
func (sm *SceneMgr) IsFreeMode(sceneId int32) bool {
if data, exist := sm.sceneDBGameFree[sceneId]; exist {
return data.GetFreeMode() == 1
}
return false
}
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////
// / Module Implement [beg] // / Module Implement [beg]
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////

View File

@ -8,6 +8,7 @@ import (
"mongo.games.com/game/common" "mongo.games.com/game/common"
"mongo.games.com/game/gamerule/tienlen" "mongo.games.com/game/gamerule/tienlen"
"mongo.games.com/game/proto" "mongo.games.com/game/proto"
"mongo.games.com/game/protocol/gamehall"
proto_tienlen "mongo.games.com/game/protocol/tienlen" proto_tienlen "mongo.games.com/game/protocol/tienlen"
"mongo.games.com/game/robot/base" "mongo.games.com/game/robot/base"
"mongo.games.com/goserver/core/basic" "mongo.games.com/goserver/core/basic"
@ -19,6 +20,15 @@ import (
"strings" "strings"
) )
func SendEmote(s *netlib.Session, scene *TienLenScene, p *TienLenPlayer, arr []int, tp int) {
if !base.SceneMgrSingleton.IsFreeMode(scene.GetRoomId()) && !scene.IsMatchScene() {
if p.EmoteTimes[tp] == 0 {
base.SendEmote(s, arr)
}
p.EmoteTimes[tp]++
}
}
type SCTienLenRoomInfoPacketFactory struct { type SCTienLenRoomInfoPacketFactory struct {
} }
@ -79,16 +89,35 @@ func (this *SCTienLenPlayerOpHandler) Process(s *netlib.Session, packid int, pac
if int(scTienLenOp.GetOpRetCode()) == 0 { if int(scTienLenOp.GetOpRetCode()) == 0 {
switch scTienLenOp.GetOpCode() { switch scTienLenOp.GetOpCode() {
case tienlen.TienLenPlayerOpPlay: case tienlen.TienLenPlayerOpPlay:
delC := []int32{}
delCards := scTienLenOp.GetOpParam() delCards := scTienLenOp.GetOpParam()
for _, delcard := range delCards { for _, delcard := range delCards {
for i, card := range me.Cards { for i, card := range me.Cards {
if card != tienlen.InvalideCard && card == int32(delcard) { if card != tienlen.InvalideCard && card == int32(delcard) {
me.Cards[i] = tienlen.InvalideCard me.Cards[i] = tienlen.InvalideCard
delC = append(delC, card)
} }
} }
} }
lastPlayer := scene.GetPlayerBySnid(scene.LastOpSnid)
if lastPlayer != nil && lastPlayer.IsRobot() && me.SnId != lastPlayer.GetSnId() &&
(tienlen.IsTwo(scene.LastCards) || tienlen.IsBomb(scene.LastCards, !common.IsTienLenYuLe(int(scene.GetGameId())))) {
// 机器人出2/炸弹被压制
SendEmote(base.PlayerMgrSingleton.GetPlayerSession(scene.LastOpSnid), scene, lastPlayer.(*TienLenPlayer), base.Emote1, 1)
}
scene.LastCards = delC
scene.LastOpSnid = me.SnId
me.PassTimes = 0
case tienlen.TienLenPlayerOpPass: case tienlen.TienLenPlayerOpPass:
me.PassTimes++
if me.PassTimes >= 2 {
me.PassTimes = 0
// 机器人过牌两次
SendEmote(s, scene, me, base.Emote2, 2)
}
} }
} else { //操作失败 } else { //操作失败
switch scTienLenOp.GetOpCode() { switch scTienLenOp.GetOpCode() {
case tienlen.TienLenPlayerOpPlay: //出牌操作失败,改为过 case tienlen.TienLenPlayerOpPlay: //出牌操作失败,改为过
@ -440,6 +469,10 @@ func (this *SCTienLenCurOpPosHandler) Process(s *netlib.Session, packid int, pac
exDelayTs = notExDelayTs exDelayTs = notExDelayTs
minS = notExDelayminS minS = notExDelayminS
maxS = notExDelaymaxS maxS = notExDelaymaxS
if scene.FirstWinSnid == 0 {
SendEmote(s, scene, me, base.Emote5, 5)
scene.FirstWinSnid = me.SnId
}
} }
base.DelaySendMillisecond(s, int(proto_tienlen.TienLenPacketID_PACKET_CSTienLenPlayerOp), packOp, []int{exDelayTs + minS, exDelayTs + maxS}...) base.DelaySendMillisecond(s, int(proto_tienlen.TienLenPacketID_PACKET_CSTienLenPlayerOp), packOp, []int{exDelayTs + minS, exDelayTs + maxS}...)
} }
@ -573,6 +606,45 @@ func (this *SCTienLenAIHandler) Process(s *netlib.Session, packid int, pack inte
return nil return nil
} }
func SCRoomEvent(s *netlib.Session, packid int, pack interface{}) error {
logger.Logger.Tracef("SCRoomEvent %v", pack)
msg, ok := pack.(*gamehall.SCRoomEvent)
if !ok {
return nil
}
if msg.Content == "" || len(msg.Param) == 0 {
return nil
}
scene, ok := base.GetScene(s).(*TienLenScene)
if !ok {
return nil
}
p := scene.GetMe(s)
if p == nil {
return nil
}
pos, err := strconv.Atoi(msg.GetContent())
if err != nil {
return nil
}
if p.GetPos() != int32(pos) {
return nil
}
switch msg.Param[0] {
case common.ItemIDBucket, common.ItemIDSlippers:
SendEmote(s, scene, p.(*TienLenPlayer), base.Emote3, 3)
case common.ItemIDLike, common.ItemIDCoffee:
SendEmote(s, scene, p.(*TienLenPlayer), base.Emote4, 3)
}
return nil
}
func init() { func init() {
//SCTienLenRoomInfo //SCTienLenRoomInfo
netlib.RegisterHandler(int(proto_tienlen.TienLenPacketID_PACKET_SCTienLenRoomInfo), &SCTienLenRoomInfoHandler{}) netlib.RegisterHandler(int(proto_tienlen.TienLenPacketID_PACKET_SCTienLenRoomInfo), &SCTienLenRoomInfoHandler{})
@ -598,4 +670,6 @@ func init() {
//SCTienLenAIData //SCTienLenAIData
netlib.RegisterHandler(int(proto_tienlen.TienLenPacketID_PACKET_SCTienLenAI), &SCTienLenAIHandler{}) netlib.RegisterHandler(int(proto_tienlen.TienLenPacketID_PACKET_SCTienLenAI), &SCTienLenAIHandler{})
netlib.RegisterFactory(int(proto_tienlen.TienLenPacketID_PACKET_SCTienLenAI), &SCTienLenAIPacketFactory{}) netlib.RegisterFactory(int(proto_tienlen.TienLenPacketID_PACKET_SCTienLenAI), &SCTienLenAIPacketFactory{})
// SCRoomEvent
netlib.Register(int(gamehall.GameHallPacketID_PACKET_SCRoomEvent), gamehall.SCRoomEvent{}, SCRoomEvent)
} }

View File

@ -12,11 +12,16 @@ var TienLenNilPlayer *TienLenPlayer = nil
type TienLenPlayer struct { type TienLenPlayer struct {
base.BasePlayer base.BasePlayer
*proto_tienlen.TienLenPlayerData *proto_tienlen.TienLenPlayerData
data *tienlenApi.PredictRequest data *tienlenApi.PredictRequest
PassTimes int
EmoteTimes map[int]int // 事件触发次数
} }
func NewTienLenPlayer(data *proto_tienlen.TienLenPlayerData) *TienLenPlayer { func NewTienLenPlayer(data *proto_tienlen.TienLenPlayerData) *TienLenPlayer {
p := &TienLenPlayer{TienLenPlayerData: data} p := &TienLenPlayer{
TienLenPlayerData: data,
EmoteTimes: make(map[int]int),
}
p.Init() p.Init()
return p return p
} }
@ -26,7 +31,8 @@ func (p *TienLenPlayer) Init() {
} }
func (p *TienLenPlayer) Clear() { func (p *TienLenPlayer) Clear() {
p.PassTimes = 0
p.EmoteTimes = make(map[int]int)
} }
func (p *TienLenPlayer) MarkFlag(flag int32) { func (p *TienLenPlayer) MarkFlag(flag int32) {

View File

@ -13,7 +13,10 @@ import (
type TienLenScene struct { type TienLenScene struct {
base.BaseScene base.BaseScene
*proto_tienlen.SCTienLenRoomInfo *proto_tienlen.SCTienLenRoomInfo
players map[int32]*TienLenPlayer players map[int32]*TienLenPlayer
LastCards []int32 // 上一个机器人出的牌
LastOpSnid int32 // 上一个出牌的机器人
FirstWinSnid int32 // 第一个出完牌的玩家id
} }
type filterFunc func(*TienLenScene, *TienLenPlayer, []int32, []int32, []int32, bool) (bool, []int32) type filterFunc func(*TienLenScene, *TienLenPlayer, []int32, []int32, []int32, bool) (bool, []int32)
@ -47,6 +50,7 @@ func (s *TienLenScene) GetIsAllAi() bool {
return i == 4 return i == 4
} }
func (s *TienLenScene) Clear() { func (s *TienLenScene) Clear() {
s.FirstWinSnid = 0
for _, p := range s.players { for _, p := range s.players {
p.Clear() p.Clear()
} }

View File

@ -1,23 +0,0 @@
#!/bin/bash
workDir=""
cd $workDir
# 编译
cd ../dbproxy
go build
cd ../mgrsrv
go build
cd ../gatesrv
go build
cd ../worldsrv
go build
cd ../gamesrv
go build
cd ../robot
go build

View File

@ -1,11 +0,0 @@
#!/bin/bash
targetDir="/home/win88"
targetPrefix="win88"
#cp -f ../dbproxy targetDir/dbproxy/$targetPrefix_dbproxy
#cp -f ../mgrsrv targetDir/mgrsrv/$targetPrefix_mgrsrv
#cp -f ../gatesrv targetDir/gatesrv/$targetPrefix_gatesrv
cp -f ../worldsrv targetDir/worldsrv/$targetPrefix_worldsrv
cp -f ../gamesrv targetDir/gamesrv/$targetPrefix_gamesrv
cp -f ../robot targetDir/robot/$targetPrefix_robot

View File

@ -1,37 +0,0 @@
#!/bin/bash
workDir="/home/win88"
pkill -9 win88_gatesrv
pkill -9 win88_mgrsrv
pkill -9 win88_robot
pkill -2 win88_gamesrv
echo "================ gamesrv ==================="
echo "check gamesrv srv close state"
ps -ef | grep "win88"
echo "try close gamesrv..."
tail -f workDirgamesrv/all.log | awk '/shutdown/ {if(NR%10==0) {exit}; print}'
echo "Kill gamesrv"
pkill -2 win88_worldsrv
echo "================ worldsrv ==================="
echo "check worldsrv srv close state"
ps -ef | grep "win88"
echo "try close worldsrv..."
tail -f worldsrv/all.log | awk '/shutdown/ {if(NR%20==0) {exit}; print}'
echo "Kill worldsrv"
pkill -2 win88_dbproxy
echo "================ dbproxy ==================="
echo "check dbproxy srv close state"
ps -ef | grep "win88"
echo "try close dbproxy..."
tail -f dbproxy/all.log | awk '/shutdown/ {if(NR%1==0) {exit}; print}'
echo "Kill dbproxy"
pkill -9 win88_gamesrv
pkill -9 win88_worldsrv
pkill -9 win88_dbproxy
echo "check srv close state"
ps -ef | grep "win88"

View File

@ -1,22 +0,0 @@
#!/bin/bash
workDir="/home/win88"
cd $workDir
cd dbproxy
nohup ./win88_dbproxy >/dev/null &
cd $workDir/mgrsrv
nohup ./win88_mgrsrv >/dev/null &
cd $workDir/gatesrv
nohup ./win88_gatesrv >/dev/null &
cd $workDir/gamesrv
nohup ./win88_gamesrv >/dev/null &
cd $workDir/worldsrv
nohup ./win88_worldsrv >/dev/null &
echo "启动完毕 等待3秒 启动AI."
sleep 3
cd $workDir/robot
nohup ./win88_robot >/dev/null &
echo "check srv states..."
ps -ef | grep win88

View File

@ -2,6 +2,10 @@ package srvdata
import "encoding/json" import "encoding/json"
func init() {
DataMgr.RegisterLoader("DB_ClientVer.dat", ClientVersSingeton)
}
type ClientVer struct { type ClientVer struct {
MinApkVer int32 MinApkVer int32
LatestApkVer int32 LatestApkVer int32
@ -19,6 +23,16 @@ type ClientVers struct {
gameVers map[string]map[string]ClientVer gameVers map[string]map[string]ClientVer
} }
func (c *ClientVers) Load(fileFullPath string) error {
updateClientVers()
return nil
}
func (c *ClientVers) Reload(fileFullPath string) error {
updateClientVers()
return nil
}
func updateClientVers() error { func updateClientVers() error {
packVers := make(map[string]map[string]ClientVer) packVers := make(map[string]map[string]ClientVer)
gameVers := make(map[string]map[string]ClientVer) gameVers := make(map[string]map[string]ClientVer)

View File

@ -22,39 +22,12 @@ func (fmc *DatFileModifiedCommand) Done(o *basic.Object) error {
logger.Logger.Info("modified file name ======", fn) logger.Logger.Info("modified file name ======", fn)
// loader // loader
loader := DataMgr.GetLoader(fn) for k, v := range DataMgr.GetLoader(fn) {
if loader != nil { err := v.Reload(fmc.fileName)
err := loader.Reload(fmc.fileName)
if err != nil { if err != nil {
logger.Logger.Warn(fn, " loader err:", err) logger.Logger.Warnf("%v loader %v err: %v", fn, k, err)
} }
} }
// loaderAfter
loaderAfter := DataMgrAfter.GetLoader(fn)
if loaderAfter != nil {
for _, v := range loaderAfter {
err := v.Reload(fmc.fileName)
if err != nil {
logger.Logger.Warn(fn, " loaderAfter err:", err)
}
}
}
//todo 实现DataLoader
switch fn {
case "DB_ClientVer.dat":
err := updateClientVers()
if err != nil {
return err
}
case "DB_Createroom.dat":
CreateRoomMgrSington.Init()
case "DB_Game_Drop.dat":
GameDropMgrSington.Init()
case "DB_Game_Role.dat", "DB_Game_Pet.dat":
RolePetMgrSington.Init()
}
return nil return nil
} }
@ -167,45 +140,16 @@ func (this *Configuration) Init() error {
// 使用 DataLoader 加载 // 使用 DataLoader 加载
for _, fileName := range loaderFiles { for _, fileName := range loaderFiles {
// loader for k, v := range DataMgr.GetLoader(fileName) {
loader := DataMgr.GetLoader(fileName)
if loader != nil {
fullPath := filepath.Join(this.RootPath, fileName) fullPath := filepath.Join(this.RootPath, fileName)
err := loader.Load(fullPath) err := v.Load(fullPath)
if err != nil { if err != nil {
logger.Logger.Warnf("%v loader err: %v", fileName, err) logger.Logger.Warnf("%v loader %v err: %v", fileName, k, err)
} else { } else {
logger.Logger.Infof("%v loader success", fileName) logger.Logger.Infof("%v loader %v success", fileName, k)
}
} else {
logger.Logger.Warnf("%v no loader", fileName)
}
// loaderAfter 依赖xlsx数据
loaderAfter := DataMgrAfter.GetLoader(fileName)
if loaderAfter != nil {
fullPath := filepath.Join(this.RootPath, fileName)
for _, v := range loaderAfter {
err := v.Load(fullPath)
if err != nil {
logger.Logger.Warnf("%v loaderAfter err: %v", fileName, err)
} else {
logger.Logger.Infof("%v loaderAfter success", fileName)
}
} }
} }
} }
//todo 实现DataLoader
err = updateClientVers()
if err != nil {
return err
}
//DB_Createroom
CreateRoomMgrSington.Init()
GameDropMgrSington.Init()
//role pet
RolePetMgrSington.Init()
return nil return nil
} }

View File

@ -4,6 +4,10 @@ import (
"mongo.games.com/game/protocol/server" "mongo.games.com/game/protocol/server"
) )
func init() {
DataMgr.RegisterLoader("DB_Createroom.dat", CreateRoomMgrSington)
}
var CreateRoomMgrSington = &CreateRoomMgr{ var CreateRoomMgrSington = &CreateRoomMgr{
GameIdDatas: make(map[int32][]*server.DB_Createroom), GameIdDatas: make(map[int32][]*server.DB_Createroom),
Datas: make(map[int32][]*server.DB_Createroom), Datas: make(map[int32][]*server.DB_Createroom),
@ -14,6 +18,16 @@ type CreateRoomMgr struct {
Datas map[int32][]*server.DB_Createroom Datas map[int32][]*server.DB_Createroom
} }
func (this *CreateRoomMgr) Load(fileFullPath string) error {
CreateRoomMgrSington.Init()
return nil
}
func (this *CreateRoomMgr) Reload(fileFullPath string) error {
CreateRoomMgrSington.Init()
return nil
}
func (this *CreateRoomMgr) Init() { func (this *CreateRoomMgr) Init() {
this.Datas = make(map[int32][]*server.DB_Createroom) this.Datas = make(map[int32][]*server.DB_Createroom)
this.GameIdDatas = make(map[int32][]*server.DB_Createroom) this.GameIdDatas = make(map[int32][]*server.DB_Createroom)

View File

@ -5,6 +5,7 @@ import (
"encoding/hex" "encoding/hex"
"errors" "errors"
"os" "os"
"strings"
) )
var fileSignMap = make(map[string]string) var fileSignMap = make(map[string]string)
@ -120,3 +121,58 @@ func (this *ProtobufDataLoader) Reload(fileFullPath string) error {
return err return err
} }
var DataMgr = &dataMgr{
loaders: make(map[string]DataLoader),
afterLoaders: make(map[string][]DataLoader),
cacheGameFreeId: make(map[int32]CacheGameType),
}
type dataMgr struct {
loaders map[string]DataLoader
afterLoaders map[string][]DataLoader
cacheGameFreeId map[int32]CacheGameType
}
type CacheGameType struct {
Ids []int32
GameType int32
}
// register 注册数据加载器,这个应该只是自动生产的代码中会用到,其它地方用不到
func (this *dataMgr) register(name string, loader DataLoader) {
this.loaders[strings.ToLower(name)] = loader
}
// RegisterLoader 注册数据加载器,如果需要依赖配置表再生成新结构的数据用这个
// loader的方法调用会在配置表加载之后调用
func (this *dataMgr) RegisterLoader(name string, loader DataLoader) {
this.afterLoaders[strings.ToLower(name)] = append(this.afterLoaders[strings.ToLower(name)], loader)
}
func (this *dataMgr) GetLoader(name string) []DataLoader {
var ret []DataLoader
if loader, exist := this.loaders[strings.ToLower(name)]; exist {
ret = append(ret, loader)
}
if loader, exist := this.afterLoaders[strings.ToLower(name)]; exist {
ret = append(ret, loader...)
}
return ret
}
func (this *dataMgr) GetGameFreeIds(gameId, gameMode int32) (ids []int32, gameType int32) {
key := gameId<<16 | gameMode
if data, exist := this.cacheGameFreeId[key]; exist {
return data.Ids, data.GameType
} else {
for _, dbGameFree := range PBDB_GameFreeMgr.Datas.Arr {
if dbGameFree.GetGameId() == gameId && dbGameFree.GetGameMode() == gameMode {
ids = append(ids, dbGameFree.GetId())
gameType = dbGameFree.GetGameType()
}
}
this.cacheGameFreeId[key] = CacheGameType{Ids: ids, GameType: gameType}
}
return
}

View File

@ -1,66 +0,0 @@
package srvdata
import (
"strings"
)
var DataMgr = &dataMgr{
loaders: make(map[string]DataLoader),
cacheGameFreeId: make(map[int32]CacheGameType),
}
type dataMgr struct {
loaders map[string]DataLoader
cacheGameFreeId map[int32]CacheGameType
}
type CacheGameType struct {
Ids []int32
GameType int32
}
func (this *dataMgr) RegisteLoader(name string, loader DataLoader) {
this.loaders[strings.ToLower(name)] = loader
}
func (this *dataMgr) GetLoader(name string) DataLoader {
if loader, exist := this.loaders[strings.ToLower(name)]; exist {
return loader
}
return nil
}
func (this *dataMgr) GetGameFreeIds(gameId, gameMode int32) (ids []int32, gameType int32) {
key := gameId<<16 | gameMode
if data, exist := this.cacheGameFreeId[key]; exist {
return data.Ids, data.GameType
} else {
for _, dbGameFree := range PBDB_GameFreeMgr.Datas.Arr {
if dbGameFree.GetGameId() == gameId && dbGameFree.GetGameMode() == gameMode {
ids = append(ids, dbGameFree.GetId())
gameType = dbGameFree.GetGameType()
}
}
this.cacheGameFreeId[key] = CacheGameType{Ids: ids, GameType: gameType}
}
return
}
// DataMgrAfter 配置文件监听器这个加载数据会在DataMgr之后
var DataMgrAfter = &dataMgrAfter{
loaders: make(map[string][]DataLoader),
}
type dataMgrAfter struct {
loaders map[string][]DataLoader
}
func (this *dataMgrAfter) RegisterLoader(name string, loader DataLoader) {
this.loaders[strings.ToLower(name)] = append(this.loaders[strings.ToLower(name)], loader)
}
func (this *dataMgrAfter) GetLoader(name string) []DataLoader {
if loader, exist := this.loaders[strings.ToLower(name)]; exist {
return loader
}
return nil
}

View File

@ -10,11 +10,16 @@ import (
"mongo.games.com/game/protocol/server" "mongo.games.com/game/protocol/server"
) )
var PBDB_Activity1Mgr = &DB_Activity1Mgr{pool: make(map[int32]*server.DB_Activity1), Datas: &server.DB_Activity1Array{}} var PBDB_Activity1Mgr = &DB_Activity1Mgr{
Datas: &server.DB_Activity1Array{},
pool: make(map[int32]*server.DB_Activity1),
}
type DB_Activity1Mgr struct { type DB_Activity1Mgr struct {
Datas *server.DB_Activity1Array Datas *server.DB_Activity1Array
pool map[int32]*server.DB_Activity1 pool map[int32]*server.DB_Activity1
} }
func (this *DB_Activity1Mgr) unmarshal(data []byte) error { func (this *DB_Activity1Mgr) unmarshal(data []byte) error {
@ -34,6 +39,7 @@ func (this *DB_Activity1Mgr) reunmarshal(data []byte) error {
if existItem == nil { if existItem == nil {
this.pool[item.GetId()] = item this.pool[item.GetId()] = item
this.Datas.Arr = append(this.Datas.Arr, item) this.Datas.Arr = append(this.Datas.Arr, item)
} else { } else {
*existItem = *item *existItem = *item
} }
@ -54,6 +60,7 @@ func (this *DB_Activity1Mgr) arrangeData() {
for _, data := range dataArr { for _, data := range dataArr {
this.pool[data.GetId()] = data this.pool[data.GetId()] = data
} }
} }
@ -64,6 +71,7 @@ func (this *DB_Activity1Mgr) GetData(id int32) *server.DB_Activity1 {
return nil return nil
} }
func init() { func init() {
DataMgr.RegisteLoader("DB_Activity1.dat", &ProtobufDataLoader{dh: PBDB_Activity1Mgr}) DataMgr.register("DB_Activity1.dat", &ProtobufDataLoader{dh: PBDB_Activity1Mgr})
} }

View File

@ -10,11 +10,16 @@ import (
"mongo.games.com/game/protocol/server" "mongo.games.com/game/protocol/server"
) )
var PBDB_ActSignMgr = &DB_ActSignMgr{pool: make(map[int32]*server.DB_ActSign), Datas: &server.DB_ActSignArray{}} var PBDB_ActSignMgr = &DB_ActSignMgr{
Datas: &server.DB_ActSignArray{},
pool: make(map[int32]*server.DB_ActSign),
}
type DB_ActSignMgr struct { type DB_ActSignMgr struct {
Datas *server.DB_ActSignArray Datas *server.DB_ActSignArray
pool map[int32]*server.DB_ActSign pool map[int32]*server.DB_ActSign
} }
func (this *DB_ActSignMgr) unmarshal(data []byte) error { func (this *DB_ActSignMgr) unmarshal(data []byte) error {
@ -34,6 +39,7 @@ func (this *DB_ActSignMgr) reunmarshal(data []byte) error {
if existItem == nil { if existItem == nil {
this.pool[item.GetId()] = item this.pool[item.GetId()] = item
this.Datas.Arr = append(this.Datas.Arr, item) this.Datas.Arr = append(this.Datas.Arr, item)
} else { } else {
*existItem = *item *existItem = *item
} }
@ -54,6 +60,7 @@ func (this *DB_ActSignMgr) arrangeData() {
for _, data := range dataArr { for _, data := range dataArr {
this.pool[data.GetId()] = data this.pool[data.GetId()] = data
} }
} }
@ -64,6 +71,7 @@ func (this *DB_ActSignMgr) GetData(id int32) *server.DB_ActSign {
return nil return nil
} }
func init() { func init() {
DataMgr.RegisteLoader("DB_ActSign.dat", &ProtobufDataLoader{dh: PBDB_ActSignMgr}) DataMgr.register("DB_ActSign.dat", &ProtobufDataLoader{dh: PBDB_ActSignMgr})
} }

Some files were not shown because too many files have changed in this diff Show More