Compare commits

...

90 Commits

Author SHA1 Message Date
sk 0fab663f61 update 2024-05-22 18:08:29 +08:00
sk e12bc1b03c Merge branch 'release' into develop 2024-05-22 18:02:07 +08:00
sk c86e28383d 比赛场代码优化 2024-05-21 15:08:16 +08:00
sk b1c74ab992 update data 2024-05-21 09:38:27 +08:00
by 4254d08e38 兑换增加错误码返回 2024-05-20 14:50:11 +08:00
by e9c29f1442 背包修改 2024-05-20 10:36:48 +08:00
by 64bcbb896e 添加道具接口增加扣除道具检测 2024-05-20 10:09:48 +08:00
kxdd a9aeb01e99 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-05-17 17:09:22 +08:00
kxdd cb873bde49 配置表更新 2024-05-17 17:09:13 +08:00
sk a7b7d8f22d update DB_GameItem.xlsx 2024-05-17 15:59:38 +08:00
sk c8d380c587 update DB_GameItem.xlsx 2024-05-17 15:58:51 +08:00
sk 8fb59d54fc 拉霸奖池金额数据类型错误 2024-05-17 15:44:48 +08:00
sk 8bdd4f09dc 绑定人数统计问题 2024-05-17 14:16:56 +08:00
sk 1857c82cb8 no message 2024-05-17 11:36:27 +08:00
sk 393ef19b14 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-17 11:32:17 +08:00
sk fa34c9c8b2 绑定邀请人任务 2024-05-17 11:31:27 +08:00
kxdd 9b3a1b4d7c Merge branch 'dev_timeitem_n1' into develop 2024-05-17 11:08:08 +08:00
kxdd c43068db93 记牌器赠送修改 2024-05-17 11:07:45 +08:00
sk 11af348377 比赛配置添加手机卡类型 2024-05-17 09:30:03 +08:00
sk 0739d1eb12 优化游戏类型判断 2024-05-17 09:16:49 +08:00
sk 3828311520 邀请分享链接 2024-05-16 15:22:26 +08:00
sk d298ed97e8 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-16 15:06:25 +08:00
sk 6dfe2301e0 修改游戏入口开关 2024-05-16 15:06:16 +08:00
by f1308bbb09 后台增加添加道具接口 2024-05-16 13:54:52 +08:00
by 5eb29259c1 后台增加添加道具接口 2024-05-16 11:59:52 +08:00
by 2ecbc2b1cb 后台增加添加道具接口 2024-05-16 09:59:18 +08:00
by 478ab9ea0a 兑换自提 添加道具走后台 2024-05-15 18:04:39 +08:00
kxdd f95eb75eb8 drop表格修改 2024-05-15 11:47:55 +08:00
by e58eb4d672 兑换创建订单增加telcharge字段 2024-05-15 10:12:41 +08:00
by 40263b3621 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-05-14 17:49:23 +08:00
by b0ba8e31ff 商城兑换修改 2024-05-14 17:49:18 +08:00
kxdd d6ce3816f4 Merge branch 'dev_pigbank_n1' into develop 2024-05-14 17:21:30 +08:00
kxdd 1f3133be78 存钱罐配置修改 2024-05-14 17:20:45 +08:00
sk 3e229a4bc9 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-14 11:45:46 +08:00
by 756ed06016 比赛log保存数据库修改 2024-05-14 11:44:31 +08:00
sk e2f1e997a0 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-14 11:40:01 +08:00
sk d0637ca1ce 更新任务系统配置 2024-05-14 11:39:50 +08:00
by 06695defa6 比赛log保存数据库修改 2024-05-14 11:38:44 +08:00
sk d534e73613 道具日志 2024-05-14 10:26:40 +08:00
sk 0059b6d0c5 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-13 18:49:19 +08:00
sk 7cabdd4d14 tienlen记牌器问题 2024-05-13 18:48:44 +08:00
sk edd992aecd 兑换商城自提,优化道具使用日志 2024-05-13 18:48:44 +08:00
kxdd e95d55ed10 Merge branch 'dev_timeitem_n1' into develop
# Conflicts:
#	model/player.go
2024-05-13 16:07:25 +08:00
kxdd 8a5752bf38 --story=1000624 --user=李海亮 记牌器优化二版 https://www.tapd.cn/31044302/s/1011279 2024-05-13 16:01:49 +08:00
kxdd c4161a6b39 --story=1000624 --user=李海亮 记牌器优化二版 https://www.tapd.cn/31044302/s/1011235 2024-05-13 15:18:13 +08:00
sk 1de1383383 tienlen排位加成 2024-05-13 12:02:16 +08:00
kxdd 075900766d Merge branch 'dev_newTimeitem' into dev_timeitem_n1 2024-05-13 11:39:21 +08:00
kxdd 052cfc1fe1 Merge branch 'dev_newTimeitem' into develop 2024-05-13 11:02:40 +08:00
kxdd a017518652 记牌器时间计算bug 2024-05-13 11:01:02 +08:00
kxdd 437ec223f7 --story=1000624 --user=李海亮 记牌器优化二版 https://www.tapd.cn/31044302/s/1011235 2024-05-13 10:52:53 +08:00
by 384f8b5b9c 删除打印log 2024-05-11 17:59:23 +08:00
by 355c6aae93 比赛场数据统计 2024-05-11 17:10:30 +08:00
sk 0e6487256a Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-11 17:06:58 +08:00
sk 5ac5c633a2 no message 2024-05-11 17:06:49 +08:00
sk 2eb19c9222 修改道具掉落功能 2024-05-11 17:00:47 +08:00
sk 7c02471d2c Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-11 16:54:25 +08:00
sk dcb54a2f58 修改道具掉落功能 2024-05-11 15:54:33 +08:00
sk f2d9d51dd6 好友申请列表 2024-05-11 15:17:02 +08:00
kxdd 579e27e17f --story=1000625 --user=李海亮 存钱罐购买限制补充 https://www.tapd.cn/31044302/s/1011001 2024-05-11 11:59:22 +08:00
sk ff78edf56b update 2024-05-11 11:02:24 +08:00
sk d7316c0ef2 review 2024-05-10 18:23:03 +08:00
sk 995cabbea6 update DB_GameItem.xlsx 2024-05-10 18:04:25 +08:00
sk 0d81105909 添加配置参数
CloseChannelSwitch 关闭渠道开关功能
2024-05-10 17:10:45 +08:00
sk 81f0d0fe43 update DB_GameItem.xlsx 2024-05-10 16:55:33 +08:00
sk 267c0492f6 解决冲突 2024-05-10 16:53:42 +08:00
sk f45708a8cc 道具掉落添加渠道开关 2024-05-10 16:38:10 +08:00
by 62bacfb0d2 兑换商城 自提功能实现 2024-05-10 16:24:09 +08:00
by b232f44a27 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-05-10 16:02:09 +08:00
by 16a41fff24 兑换商城 自提功能实现 2024-05-10 16:01:39 +08:00
sk 32fab5e0ca fix:游戏掉落道具 2024-05-10 15:30:14 +08:00
sk 5c90f2f0b7 fix:游戏掉落道具 2024-05-10 15:29:09 +08:00
sk 65258fe07e Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-10 15:15:08 +08:00
sk 085d1ef9b2 update DB_GameItem.xlsx 2024-05-10 15:14:53 +08:00
by 4553558144 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-05-10 15:13:31 +08:00
by 8c432f6f4e 好友申请记录 2024-05-10 15:13:25 +08:00
sk 9474b0dc30 修改游戏掉落物品配置规则 2024-05-10 14:47:38 +08:00
sk 061ee27ab7 update DB_GameItem.xlsx 2024-05-10 13:55:20 +08:00
sk 22dbae7f80 被邀请人充值任务 2024-05-10 11:44:58 +08:00
sk a943492d80 开启兑换渠道控制 2024-05-10 09:17:58 +08:00
sk 7dcd78d3ef 邀请分享链接简化
公告增加渠道参数
2024-05-09 17:18:16 +08:00
sk 5b758cdb80 update 2024-05-09 10:41:17 +08:00
sk 672881b9d2 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-08 18:49:23 +08:00
sk 6bd9d8f6c5 重置水池 2024-05-08 18:49:00 +08:00
sk 05f1e805b5 重置水池 2024-05-08 18:33:33 +08:00
sk 4753b4a71a 在线统计接口 2024-05-08 18:17:35 +08:00
by 666cbf64eb 等级榜修改 2024-05-08 18:07:07 +08:00
by 5eeec8469f 等级榜删除无用代码 2024-05-08 17:38:34 +08:00
by b000a8b05d 玩家等级榜log输出error修改 2024-05-08 17:36:14 +08:00
sk 64a1df39c5 代码优化 2024-05-08 16:36:07 +08:00
sk a822e21524 代码优化 2024-05-08 14:10:27 +08:00
150 changed files with 12104 additions and 11717 deletions

View File

@ -91,23 +91,20 @@ const (
GameId_Thr_XHJ = 901 //DG Game
)
// IsTienLen TienLen游戏
func IsTienLen(gameId int) bool {
return InSliceInt32(GetTienlenGameID(), int32(gameId))
}
func GetTienlenGameID() []int32 {
//todo 还要维护游戏id,好麻烦,还容易忘
return []int32{
GameId_TienLen, GameId_TienLen_yl,
GameId_TienLen_toend, GameId_TienLen_yl_toend,
GameId_TienLen_m, GameId_TienLen_m_toend,
GameId_TienLenSelect, GameId_TienLenSelect_toend,
GameId_TienLenSelect_yl, GameId_TienLenSelect_yl_toend,
GameId_TienLenRank, GameId_TienLenRank_toend,
GameId_TienLenRank_yl, GameId_TienLenRank_yl_toend,
}
}
const (
GameDifTienlen = "207" // tienlen
GameDifThirteen = "211" // 十三张
GameDifChess = "521" // 象棋
GameDifFish = "401" // 捕鱼
GameDifRocket = "607" // 小火箭
GameDifCaiShen = "301" // 财神
GameDifAvengers = "302" // 复仇者联盟
GameDifEaster = "303" // 复活节岛
GameDifIceAge = "304" // 冰河世纪
GameDifTamQuoc = "305" // 百战成神
GameDifFruits = "306" // 水果机
GameDifRichblessed = "307" // 多彩多福
)
// IsTienLenYuLe TienLen娱乐
func IsTienLenYuLe(gameId int) bool {
@ -138,39 +135,6 @@ func IsTienLenToEnd(gameId int) bool {
return false
}
// IsChess 象棋游戏
func IsChess(gameId int) bool {
switch gameId {
case GameId_Chesstitians,
GameId_ChesstitiansMakruk,
GameId_ChesstitiansCambodian,
GameId_ChesstitiansCambodianRobot:
return true
}
return false
}
// IsThirteen 十三张游戏
func IsThirteen(gameId int) bool {
switch gameId {
case GameID_Thirteen4,
GameID_Thirteen8,
GameID_ThirteenFree,
GameID_ThirteenFreeLaiZi:
return true
}
return false
}
// IsThirteen 十三张游戏
func IsSmallRocket(gameId int) bool {
switch gameId {
case GameId_SmallRoket:
return true
}
return false
}
// IsLocalGame 自动分场模式的游戏
// 根据 DB_Createroom.xlsx 给玩家分场或创建房间
func IsLocalGame(gameId int) bool {
@ -185,14 +149,6 @@ func IsLocalGame(gameId int) bool {
return false
}
// IsPlayerPool 需要统计在个人水池的游戏
func IsPlayerPool(gameId int) bool {
if IsTienLen(gameId) || IsThirteen(gameId) {
return true
}
return false
}
// 房间编号区间
const (
PrivateSceneStartId = 10000000
@ -219,23 +175,6 @@ const (
SceneMode_Thr //三方房间
)
// 场景级别
//const (
// SceneLvl_Test = -1 // 试玩场(不要钱)
// SceneLvl_Experience = 0 // 体验场(花小钱)
// SceneLvl_Primary = 1 // 初级场
// SceneLvl_Middle = 2 // 中级场
// SceneLvl_Senior = 3 // 高级场
// SceneLvl_Professor = 4 // 专家场
//)
// 房费选项
//const (
// RoomFee_Owner int32 = iota //房主
// RoomFee_AA //AA
// RoomFee_Max
//)
const (
Platform_Rob = "__$G_P$__"
Platform_Sys = "0"
@ -316,6 +255,10 @@ const (
GainWay_WeekCardAward = 65 //65.周卡每日奖励
GainWay_PigrankTakeCoin = 66 //66.存钱罐领取耗费钻石
GainWay_PigrankGainCoin = 67 //66.存钱罐打开获取金币
GainWay_ItemMove = 68 //68.道具赠送
GainWay_RoleUpgrade = 69 //69.角色升级
GainWay_PetUpgrade = 70 //70.宠物升级
GainWay_Game = 71 //71.玩游戏获得
)
// 后台选择 金币变化类型 的充值 类型id号起始
@ -712,6 +655,7 @@ const (
TaskTypeFirstLogin = 15 // 每日首次登录
TaskTypeInviteNum = 16 // 邀请绑定数量
TaskTypeTurnplate = 17 // 转盘抽奖次数
TaskTypeInviteRecharge = 18 // 被邀请人充值金额
)
const (
@ -791,3 +735,12 @@ const (
)
var PetIDs = []int32{PetIDChicken}
const (
InviteScoreRecharge = 10000 // 用户每充值$1邀请人获得积分
)
const (
ChannelSwitchExchange = 1
ChannelSwitchDropItem = 2
)

View File

@ -19,6 +19,8 @@ func (hw HandlerWrapper) Process(s *netlib.Session, packetid int, data interface
return hw(s, packetid, data, sid)
}
// RegisterHandler 消息注册
// Deprecated: use [common.Register] instead
func RegisterHandler(packetId int, h Handler) {
if _, ok := handlers[packetId]; ok {
panic(fmt.Sprintf("repeate register handler: %v Handler type=%v", packetId, reflect.TypeOf(h)))
@ -36,7 +38,11 @@ func GetHandler(packetId int) Handler {
}
func Register(mainId int, msgType interface{}, h func(s *netlib.Session, packetId int, data interface{}, sid int64) error) {
RegisterHandler(mainId, HandlerWrapper(h))
if _, ok := handlers[mainId]; ok {
panic(fmt.Sprintf("repeate register handler: %v Handler type=%v", mainId, reflect.TypeOf(h)))
}
handlers[mainId] = HandlerWrapper(h)
f := func() interface{} {
tp := reflect.TypeOf(msgType)
if tp.Kind() == reflect.Ptr {

View File

@ -40,6 +40,18 @@ func CopySliceIntToInt32(s []int) []int32 {
return nil
}
func CopySliceInt64ToInt32(s []int64) []int32 {
n := len(s)
if n != 0 {
temp := make([]int32, n)
for i := 0; i < n; i++ {
temp[i] = int32(s[i])
}
return temp
}
return nil
}
func CopySliceInt32ToInt(s []int32) []int {
n := len(s)
if n != 0 {

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -14,12 +14,12 @@
],
"Type": 1,
"Effect0": [
0,
1,
0,
1
],
"Effect": [
0,
1,
0,
1
],
@ -44,12 +44,12 @@
],
"Type": 2,
"Effect0": [
0,
1,
0,
1
],
"Effect": [
0,
1,
0,
1
],
@ -74,12 +74,12 @@
],
"Type": 2,
"Effect0": [
0,
1,
0,
1
],
"Effect": [
0,
1,
0,
1
],
@ -104,12 +104,12 @@
],
"Type": 2,
"Effect0": [
0,
1,
0,
1
],
"Effect": [
0,
1,
0,
1
],
@ -134,12 +134,12 @@
],
"Type": 3,
"Effect0": [
0,
1,
0,
1
],
"Effect": [
0,
1,
0,
1
],
@ -1269,7 +1269,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1283,11 +1283,12 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 1
},
{
"Id": 71002,
"Name": "热水壶",
"Name": "热水壶",
"ShowLocation": [
1,
1
@ -1297,7 +1298,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1311,11 +1312,12 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 1
},
{
"Id": 71003,
"Name": "便携式风扇",
"Name": "迷你小风扇",
"ShowLocation": [
1,
1
@ -1325,7 +1327,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1339,7 +1341,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 1
},
{
"Id": 72001,
@ -1353,7 +1356,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1367,11 +1370,12 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 2
},
{
"Id": 72002,
"Name": "床上用品套件",
"Name": "睡衣",
"ShowLocation": [
1,
1
@ -1381,7 +1385,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1395,7 +1399,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 2
},
{
"Id": 72003,
@ -1409,7 +1414,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1423,7 +1428,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 2
},
{
"Id": 72004,
@ -1437,7 +1443,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1451,7 +1457,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 2
},
{
"Id": 72005,
@ -1465,7 +1472,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1479,11 +1486,12 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 2
},
{
"Id": 73001,
"Name": "啤酒",
"Name": "哈奴曼啤酒",
"ShowLocation": [
1,
1
@ -1493,7 +1501,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1507,11 +1515,12 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 3
},
{
"Id": 73002,
"Name": "矿泉水",
"Name": "箱装纯净水",
"ShowLocation": [
1,
1
@ -1521,7 +1530,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1535,11 +1544,12 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 3
},
{
"Id": 73003,
"Name": "果汁",
"Name": "果汁箱装",
"ShowLocation": [
1,
1
@ -1549,7 +1559,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1563,11 +1573,12 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 3
},
{
"Id": 73004,
"Name": "可乐",
"Name": "可口可箱装",
"ShowLocation": [
1,
1
@ -1577,7 +1588,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1591,7 +1602,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 3
},
{
"Id": 74001,
@ -1605,7 +1617,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1619,11 +1631,12 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 4
},
{
"Id": 74002,
"Name": "洗发水和护发素",
"Name": "洗发水",
"ShowLocation": [
1,
1
@ -1633,7 +1646,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1647,7 +1660,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 4
},
{
"Id": 74003,
@ -1661,7 +1675,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1675,7 +1689,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 4
},
{
"Id": 74004,
@ -1689,7 +1704,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1703,11 +1718,12 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 4
},
{
"Id": 74005,
"Name": "按摩",
"Name": "按摩",
"ShowLocation": [
1,
1
@ -1717,7 +1733,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1731,7 +1747,37 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 4
},
{
"Id": 74006,
"Name": "护发素",
"ShowLocation": [
1,
1
],
"Classify": [
1,
1,
0
],
"Type": 16,
"Effect0": [
0,
1,
0
],
"Effect": [
0,
1,
0
],
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励",
"Entity": 4
},
{
"Id": 75001,
@ -1745,7 +1791,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1759,7 +1805,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 5
},
{
"Id": 75002,
@ -1773,7 +1820,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1787,7 +1834,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 5
},
{
"Id": 75003,
@ -1801,7 +1849,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1815,7 +1863,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 5
},
{
"Id": 75004,
@ -1829,7 +1878,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1843,7 +1892,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 5
},
{
"Id": 75005,
@ -1857,7 +1907,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1871,7 +1921,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 5
},
{
"Id": 75006,
@ -1885,7 +1936,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1899,11 +1950,12 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 5
},
{
"Id": 76001,
"Name": "智能手机",
"Name": "Tecno手机",
"ShowLocation": [
1,
1
@ -1913,7 +1965,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1927,7 +1979,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 6
},
{
"Id": 76002,
@ -1941,7 +1994,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1955,7 +2008,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 6
},
{
"Id": 76003,
@ -1969,7 +2023,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -1983,7 +2037,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 6
},
{
"Id": 76004,
@ -1997,7 +2052,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2011,7 +2066,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 6
},
{
"Id": 76005,
@ -2025,7 +2081,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2039,7 +2095,37 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 6
},
{
"Id": 76006,
"Name": "红米手机",
"ShowLocation": [
1,
1
],
"Classify": [
1,
1,
0
],
"Type": 16,
"Effect0": [
0,
1,
0
],
"Effect": [
0,
1,
0
],
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励",
"Entity": 6
},
{
"Id": 77001,
@ -2053,7 +2139,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2067,7 +2153,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 7
},
{
"Id": 77002,
@ -2081,7 +2168,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2095,7 +2182,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 7
},
{
"Id": 77003,
@ -2109,7 +2197,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2123,7 +2211,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 7
},
{
"Id": 77004,
@ -2137,7 +2226,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2151,11 +2240,12 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 7
},
{
"Id": 77005,
"Name": "按摩和美容服务",
"Name": "按摩",
"ShowLocation": [
1,
1
@ -2165,7 +2255,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2179,7 +2269,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 7
},
{
"Id": 78001,
@ -2193,7 +2284,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2207,11 +2298,12 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 8
},
{
"Id": 78002,
"Name": "酒店住宿",
"Name": "宾馆票",
"ShowLocation": [
1,
1
@ -2221,7 +2313,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2235,7 +2327,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 8
},
{
"Id": 78003,
@ -2249,7 +2342,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2263,7 +2356,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 8
},
{
"Id": 79001,
@ -2277,7 +2371,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2291,7 +2385,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 9
},
{
"Id": 79002,
@ -2305,7 +2400,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2319,7 +2414,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 9
},
{
"Id": 79003,
@ -2333,7 +2429,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2347,7 +2443,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 9
},
{
"Id": 79004,
@ -2361,7 +2458,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2375,7 +2472,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 9
},
{
"Id": 79005,
@ -2389,7 +2487,7 @@
1,
0
],
"Type": 4,
"Type": 16,
"Effect0": [
0,
1,
@ -2403,7 +2501,8 @@
"Composition": 1,
"CompositionMax": 9999,
"Location": "0",
"Describe": "可联系客服兑换实物奖励"
"Describe": "可联系客服兑换实物奖励",
"Entity": 9
}
]
}

View File

@ -1,210 +1,56 @@
Яа(Бъ:
Я<18>'(Бъ:
Я<18>N(Бъ:
Я<18>u(Бъ:
Я <>(Бъ:
ЯЈУ(Бъ:
ЯАъ(Бъ:
ЯИ<>(Бъ:
 ЯРИ(Бъ:
Ð ±ê(2
ˆ' ±ê(J2
<EFBFBD>N ±ê(•2
˜u ±ê2
 œ ±ê2
¨Ã ±ê2
°ê ±ê2
¸ ±ê(ˆ2
 À¸ ±ê2

ЯШп(Бъ:
 Яа<>(Бъ:
 Яи­(Бъ:
 Ярд(Бъ:
Яшћ(Бъ:
Я№Ђ(Бъ:
ЯјЩ(Бъ:
Я<18>ё(Бъ:
Я<18><>(Бъ:
Я<18>П(Бъ:
Я<18>ц(Бъ:
Я <>(Бъ:
Я<> (Бъ:
ЯР<> (Бъ:
Я<18>Ё(Бъ:
ЯрЇ(Бъ:
ЯАЎ(Бъ:
Я<18>Е(Бъ:
ЯаЛ(Бъ:
Я Т(Бъ:
Я№Ш!(Бъ:
ЯРЯ$(Бъ:
 Я<18>ж'(Бъ:
!Ярм*(Бъ:
"ЯАу-(Бъ:
#Я<18>ъ0(Бъ:
$Яа№3(Бъ:
%Я ї6(Бъ:
&Я№§9(Бъ:
'ЯР<>=(Бъ:
(Я<18><>z(Бъ:
)ЯР<>Б(Бъ:

*Я<18>­т(Бъ:2
+ЯРУ<D0A0>(Бъ:2K
,Я<18>кФ (Бъ:Kd
-ЯР№ѕ (Бъ:d}
.Я<18><>Ї(Бъ:}<7D>
/ЯР<>и(Бъ:<04>Џ
0Я<18>Д<EFBFBD>(Бъ:ЏШ
1ЯРЪК(Бъ:Шс
2Я<18>сы(Бъ:сњ
3аа(Бъ:
4а<18>'(Бъ:
5а<18>N(Бъ:
6а<18>u(Бъ:
7а <>(Бъ:
8аЈУ(Бъ:
9аАъ(Бъ:
:аИ<>(Бъ:
;аРИ(Бъ:
<аШп(Бъ:
=аа<>(Бъ:
>аи­(Бъ:
?ард(Бъ:
@ашћ(Бъ:
Aа№Ђ(Бъ:
BајЩ(Бъ:
Cа<18>ё(Бъ:
Dа<18><>(Бъ:
Eа<18>П(Бъ:
Fа<18>ц(Бъ:
Gа <>(Бъ:
Hа<> (Бъ:
IаР<> (Бъ:
Jа<18>Ё(Бъ:
KарЇ(Бъ:
LаАЎ(Бъ:
Mа<18>Е(Бъ:
NааЛ(Бъ:
Oа Т(Бъ:
Pа№Ш!(Бъ:
QаРЯ$(Бъ:
Rа<18>ж'(Бъ:
Sарм*(Бъ:
TаАу-(Бъ:
Uа<18>ъ0(Бъ:
Vаа№3(Бъ:
Wа ї6(Бъ:
Xа№§9(Бъ:
YаР<>=(Бъ:
Zа<18><>z(Бъ:
[аР<>Б(Бъ:

\а<18>­т(Бъ:2
]аРУ<D0A0>(Бъ:2K
^а<18>кФ (Бъ:Kd
_аР№ѕ (Бъ:d}
`а<18><>Ї(Бъ:}<7D>
aаР<>и(Бъ:<04>Џ
bа<18>Д<EFBFBD>(Бъ:ЏШ
cаРЪК(Бъ:Шс
dа<18>сы(Бъ:сњ
eба(Бъ:
fб<18>'(Бъ:
gб<18>N(Бъ:
hб<18>u(Бъ:
iб <>(Бъ:
jбЈУ(Бъ:
kбАъ(Бъ:
lбИ<>(Бъ:
mбРИ(Бъ:
nбШп(Бъ:
oба<>(Бъ:
pби­(Бъ:
qбрд(Бъ:
rбшћ(Бъ:
sб№Ђ(Бъ:
tбјЩ(Бъ:
uб<18>ё(Бъ:
vб<18><>(Бъ:
wб<18>П(Бъ:
xб<18>ц(Бъ:
yб <>(Бъ:
zб<> (Бъ:
{бР<> (Бъ:
|б<18>Ё(Бъ:
}брЇ(Бъ:
~бАЎ(Бъ:
б<18>Е(Бъ:
<08>баЛ(Бъ:
<08>б Т(Бъ:
<08>б№Ш!(Бъ:
<08>бРЯ$(Бъ:
<08>б<18>ж'(Бъ:
<08>брм*(Бъ:
<08>бАу-(Бъ:
<08>б<18>ъ0(Бъ:
<08>ба№3(Бъ:
<08>б ї6(Бъ:
<08>б№§9(Бъ:
<08>бР<>=(Бъ:
<08>б<18><>z(Бъ:
<08>бР<>Б(Бъ:

<08>б<18>­т(Бъ:2
<08>бРУ<D0A0>(Бъ:2K
<08>б<18>кФ (Бъ:Kd
<08>бР№ѕ (Бъ:d}
<08>б<18><>Ї(Бъ:}<7D>
<08>бР<>и(Бъ:<04>Џ
<08>б<18>Д<EFBFBD>(Бъ:ЏШ
<08>бРЪК(Бъ:Шс
<08>б<18>сы(Бъ:сњ
<08>ва(Бъ:
<08>в<18>'(Бъ:
<08>в<18>N(Бъ:
<08>в<18>u(Бъ:
<08>в <>(Бъ:
<08>вЈУ(Бъ:
<08>вАъ(Бъ:
<08>вИ<>(Бъ:
<08>вРИ(Бъ:
 вШп(Бъ:
Ёва<>(Бъ:
Ђви­(Бъ:
Ѓврд(Бъ:
Євшћ(Бъ:
Ѕв№Ђ(Бъ:
ІвјЩ(Бъ:
Їв<18>ё(Бъ:
Јв<18><>(Бъ:
Љв<18>П(Бъ:
Њв<18>ц(Бъ:
Ћв <>(Бъ:
Ќв<> (Бъ:
­вР<> (Бъ:
Ўв<18>Ё(Бъ:
ЏврЇ(Бъ:
АвАЎ(Бъ:
Бв<18>Е(Бъ:
ВваЛ(Бъ:
Гв Т(Бъ:
Дв№Ш!(Бъ:
ЕвРЯ$(Бъ:
Жв<18>ж'(Бъ:
Зврм*(Бъ:
ИвАу-(Бъ:
Йв<18>ъ0(Бъ:
Ква№3(Бъ:
Лв ї6(Бъ:
Мв№§9(Бъ:
НвР<>=(Бъ:
Ов<18><>z(Бъ:
ПвР<>Б(Бъ:

Рв<18>­т(Бъ:2
СвРУ<D0A0>(Бъ:2K
Тв<18>кФ (Бъ:Kd
УвР№ѕ (Бъ:d}
Фв<18><>Ї(Бъ:}<7D>
ХвР<>и(Бъ:<04>Џ
Цв<18>Д<EFBFBD>(Бъ:ЏШ
ЧвРЪК(Бъ:Шс
Шв<18>сы(Бъ:сњ
Èß ±ê2
 І ±ê2
 Ø­ ±ê2
 àÔ ±ê2
èû ±ê2
𢠱ê(<28>2
øÉ ±ê2
€ñ ±ê(¤ 2
ˆ˜ ±ê(î 2
<10>¿ ±ê
2
˜æ ±ê 2
 <> ±ê 2
ð“ ±ê(´2
Àš ±ê2
<10>¡ ±ê(<28>2
à§ ±ê(ç"2
°® ±ê(Î(2
€µ ±ê(´.2
л ±ê(42
 Â ±ê(<28>:2
ðÈ! ±ê(è?2
ÀÏ$ ±ê(ÎE2
 <10>Ö' ±ê(µK2
!àÜ* ±ê(<28>N2
"°ã- ±ê(<28>N2
#€ê0 ±ê(<28>N2
$Ðð3 ±ê(<28>N2
% ÷6 ±ê(<28>N2
&ðý9 ±ê(<28>N2
'À„= ±ê(<28>N2
(€‰z ±ê(<28>N2
)À–± ±ê(<28>N2
*€­â ±ê(<28>N2 
+ÀÓ ±ê(<28>N2
,€ÚÄ ±ê(<28>N2
-Àðõ ±ê(<28>N2#'
.€‡§ ±ê(<28>N2+/
/À<>Ø ±ê(<28>N226
0€´‰ ±ê(<28>N29=
1Àʺ ±ê(<28>N2AE
2€áë ±ê(<28>N2HL
3€Â×/ ±ê(<28>N2
4€£ÃG ±ê(<28>N2Ýá
5€„¯_ ±ê(<28>N2§«

File diff suppressed because it is too large Load Diff

View File

@ -2,3 +2,5 @@
 BankMaxCoin€­â
 WinCoinRate
 LoseCoinRate
 DayBuyMaxCnt

View File

@ -14,6 +14,11 @@
"Id": 3,
"PorpName": "LoseCoinRate",
"PropValue": 10
},
{
"Id": 4,
"PorpName": "DayBuyMaxCnt",
"PropValue": 3
}
]
}

Binary file not shown.

View File

@ -63,6 +63,54 @@
"Gain": {
"100002": 500
}
}
},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{}
]
}

Binary file not shown.

View File

@ -199,6 +199,78 @@
"100002": 10
}
},
{
"Id": 21,
"Order": 6,
"ActivityType": 3,
"TaskType": 18,
"TargetTimes": 10,
"FinishTimes": 1,
"Award": {
"100001": 250000,
"50001": 1
}
},
{
"Id": 22,
"Order": 7,
"ActivityType": 3,
"TaskType": 16,
"TargetTimes": 5,
"FinishTimes": 1,
"Award": {
"100001": 2500000,
"50001": 2
}
},
{
"Id": 23,
"Order": 8,
"ActivityType": 3,
"TaskType": 16,
"TargetTimes": 10,
"FinishTimes": 1,
"Award": {
"100001": 5000000,
"50001": 4
}
},
{
"Id": 24,
"Order": 9,
"ActivityType": 3,
"TaskType": 18,
"TargetTimes": 100,
"FinishTimes": 1,
"Award": {
"100001": 2500000,
"50001": 2
}
},
{
"Id": 25,
"Order": 10,
"ActivityType": 3,
"TaskType": 18,
"TargetTimes": 500,
"FinishTimes": 1,
"Award": {
"100001": 12500000,
"50001": 10
}
},
{
"Id": 26,
"Order": 11,
"ActivityType": 3,
"TaskType": 18,
"TargetTimes": 1000,
"FinishTimes": 1,
"Award": {
"100001": 25000000,
"50001": 20
}
},
{
"Id": 17,
"Order": 1,

View File

@ -2,12 +2,14 @@ package svc
import (
"errors"
"net/rpc"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
var (
@ -16,6 +18,12 @@ var (
FriendApplyColError = errors.New("friendapply collection open failed")
)
var (
FriendApplyListDBName = "log"
FriendApplyListCollName = "log_friendapplylist"
FriendApplyListColError = errors.New("friendapplylist collection open failed")
)
func FriendApplyCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, FriendApplyDBName)
if s != nil {
@ -28,6 +36,18 @@ func FriendApplyCollection(plt string) *mongo.Collection {
return nil
}
func FriendApplyListCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, FriendApplyListDBName)
if s != nil {
c, first := s.DB().C(FriendApplyListCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
}
return c
}
return nil
}
type FriendApplySvc struct {
}
@ -71,6 +91,49 @@ func (svc *FriendApplySvc) DelFriendApply(args *model.FriendApplyByKey, ret *boo
return nil
}
func (svc *FriendApplySvc) UpsertApplyList(args *model.ApplyListReq, ret *model.ApplyListRes) error {
cc := FriendApplyListCollection(args.Platform)
if cc == nil {
return FriendApplyListColError
}
if args.Data == nil || args.Data.SnId <= 0 {
return nil
}
_, err := cc.Upsert(bson.M{"snid": args.Data.SnId}, args.Data)
if err != nil && err != mgo.ErrNotFound {
logger.Logger.Error("UpsertApplyList is err: ", err)
return err
}
ret.Data = args.Data
return nil
}
func (svc *FriendApplySvc) QueryFriendApplyListBySnid(args *model.FriendApplyByKey, ret *model.ApplyListRes) error {
fc := FriendApplyListCollection(args.Platform)
if fc == nil {
return FriendApplyListColError
}
err := fc.Find(bson.M{"snid": args.SnId}).One(&ret.Data)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Error("QueryFriendApplyListBySnid is err: ", err)
return err
}
return nil
}
func (svc *FriendApplySvc) DelFriendApplyList(args *model.FriendApplyByKey, ret *bool) error {
cc := FriendApplyListCollection(args.Platform)
if cc == nil {
return FriendApplyListColError
}
err := cc.Remove(bson.M{"snid": args.SnId})
if err != nil {
logger.Logger.Error("DelFriendApplyList is err: ", err)
return err
}
return nil
}
var _FriendApplySvc = &FriendApplySvc{}
func init() {

View File

@ -8,9 +8,11 @@ import (
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/common"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/game/srvdata"
"mongo.games.com/goserver/core/logger"
)
@ -454,7 +456,7 @@ func (svc *GamePlayerListSvc) GetWinCoinListTienlen(args *model.FindWinCoinListA
var tc []*M
err := c.Pipe([]bson.M{
{"$match": bson.M{
"gameid": bson.M{"$in": common.GetTienlenGameID()},
"gameid": bson.M{"$in": srvdata.GameFreeMgr.GetGameId(common.GameDifTienlen)},
"ts": bson.M{"$gte": args.StartTs, "$lte": args.EndTs},
}},
{"$group": bson.M{
@ -517,7 +519,7 @@ func (svc *GamePlayerListSvc) GetWinCoinTienlen(args *model.FindWinCoinArgs, ret
err := c.Pipe([]bson.M{
{"$match": bson.M{
"snid": args.SnId,
"gameid": bson.M{"$in": common.GetTienlenGameID()},
"gameid": bson.M{"$in": srvdata.GameFreeMgr.GetGameId(common.GameDifTienlen)},
"ts": bson.M{"$gte": args.StartTs, "$lte": args.EndTs},
}},
{"$group": bson.M{

View File

@ -97,12 +97,18 @@ func (svc *BagSvc) AddBagItem(args *model.BagInfo, ret *bool) error {
}
for id, v := range args.BagItem {
if item, exist := bag.BagItem[id]; !exist {
if v.ItemNum <= 0 {
continue
}
bag.BagItem[id] = &model.Item{
ItemId: v.ItemId,
ItemNum: v.ItemNum,
ObtainTime: time.Now().Unix(),
}
} else {
if v.ItemNum < 0 && -v.ItemNum > item.ItemNum {
v.ItemNum = -item.ItemNum
}
item.ItemNum += v.ItemNum
}
}

View File

@ -48,6 +48,7 @@ func (b *BindScoreSvc) GetInviteScore(req *model.InviteScoreReq, ret *model.Invi
type M struct {
Score int64
Money int64
}
var tc []M
@ -58,6 +59,7 @@ func (b *BindScoreSvc) GetInviteScore(req *model.InviteScoreReq, ret *model.Invi
{"$group": bson.M{
"_id": nil,
"score": bson.M{"$sum": "$score"},
"money": bson.M{"$sum": "$money"},
}},
}).AllowDiskUse().All(&tc)
if err != nil {
@ -67,6 +69,7 @@ func (b *BindScoreSvc) GetInviteScore(req *model.InviteScoreReq, ret *model.Invi
if len(tc) > 0 {
ret.Score = tc[0].Score
ret.Money = tc[0].Money
c := PlayerDataCollection(req.Platform)
if c == nil {
return PlayerColError

View File

@ -53,4 +53,5 @@ const (
ETCDKEY_PLAYERPOOL = "/game/plt/playerpool/" // 个人水池调控配置
ETCDKEY_GAME_CONFIG = "/game/plt/gameconfig/" // 游戏管理/全局配置
ETCDKEY_ACT_PHONELOTTERY = "/game/act_phoneLottery"
ETCDKEY_ChannelSwitch = "/game/channel/switch" // 渠道开关
)

View File

@ -296,6 +296,10 @@ func init() {
common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_LEAVEROOM), &CSLeaveRoomHandler{})
netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_LEAVEROOM), &CSLeaveRoomPacketFactory{})
// 同步玩家状态,如暂离状态取消
common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_PLAYER_SWITCHFLAG), &CSPlayerSwitchFlagHandler{})
netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_PLAYER_SWITCHFLAG), &CSPlayerSwitchFlagPacketFactory{})
// 观众离开房间
common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCE_LEAVEROOM), &CSAudienceLeaveRoomHandler{})
netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCE_LEAVEROOM), &CSLeaveRoomPacketFactory{})
@ -304,10 +308,6 @@ func init() {
common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_FORCESTART), &CSForceStartHandler{})
netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_FORCESTART), &CSForceStartPacketFactory{})
// 同步玩家状态,如暂离状态取消
common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_PLAYER_SWITCHFLAG), &CSPlayerSwitchFlagHandler{})
netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_PLAYER_SWITCHFLAG), &CSPlayerSwitchFlagPacketFactory{})
// 房间事件
common.Register(int(gamehall.GameHallPacketID_PACKET_CSRoomEvent), gamehall.CSRoomEvent{}, CSRoomEvent)
}

View File

@ -111,6 +111,7 @@ func init() {
}
return nil
}))
//玩家进入
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_PLAYERENTER), netlib.PacketFactoryWrapper(func() interface{} {
return &server.WGPlayerEnter{}
@ -163,6 +164,7 @@ func init() {
p.LastSyncCoin = p.Coin
p.IsQM = IsQM
p.AppChannel = msg.GetAppChannel()
if sid == 0 && (scene != nil && !scene.IsMatchScene()) {
logger.Logger.Warnf("when WGPlayerEnter (sid == 0)")
@ -306,6 +308,7 @@ func init() {
p.SetTakeCoin(msg.GetTakeCoin())
p.LastSyncCoin = p.Coin
p.IsQM = IsQM
p.AppChannel = msg.GetAppChannel()
if scene != nil {
scene.AudienceEnter(p, isload)
if !p.IsRobot() && !scene.Testing {
@ -447,52 +450,6 @@ func init() {
return nil
}))
//玩家充值
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_RECHARGE), netlib.PacketFactoryWrapper(func() interface{} {
return &server.WGHundredOp{}
}))
netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_RECHARGE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("WGHundredOp Process recv ", pack)
if wgHundredOp, ok := pack.(*server.WGHundredOp); ok {
if wgHundredOp.GetOpCode() == 1 {
snid := wgHundredOp.GetSnid()
param := wgHundredOp.GetParams()
p := base.PlayerMgrSington.GetPlayerBySnId(snid)
if p == nil {
logger.Logger.Warn("WGHundredOp p == nil")
return nil
}
scene := p.GetScene()
if scene == nil {
logger.Logger.Warn("WGHundredOp p.scene == nil")
return nil
}
if !scene.HasPlayer(p) {
return nil
}
//同步用户的充值累加额
if len(param) > 0 {
p.CoinPayTotal += param[0]
if p.TodayGameData != nil {
p.TodayGameData.RechargeCoin += param[0]
}
}
//第2个参数是vip
if len(param) > 1 && p.VIP < int32(param[1]) {
p.VIP = int32(param[1])
}
scene.GetScenePolicy().OnPlayerEvent(scene, p, base.PlayerEventRecharge, param)
return nil
}
return nil
}
return nil
}))
//同步水池设置
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_COINPOOLSETTING), netlib.PacketFactoryWrapper(func() interface{} {
return &webapi.CoinPoolSetting{}
@ -506,7 +463,7 @@ func init() {
return nil
}))
// 重置水池水位
// 重置或修改水池水位
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_RESETCOINPOOL), netlib.PacketFactoryWrapper(func() interface{} {
return &server.WGResetCoinPool{}
}))
@ -529,14 +486,6 @@ func init() {
p := base.PlayerMgrSington.GetPlayerBySnId(wgSetPlayerBlackLevel.GetSnId())
if p != nil {
p.WBLevel = wgSetPlayerBlackLevel.GetWBLevel()
if p.WBLevel > 0 {
p.WhiteLevel = p.WBLevel
} else if p.WBLevel < 0 {
p.BlackLevel = -p.WBLevel
} else {
p.WhiteLevel = 0
p.BlackLevel = 0
}
p.WBCoinLimit = wgSetPlayerBlackLevel.GetWBCoinLimit()
p.WBMaxNum = wgSetPlayerBlackLevel.GetMaxNum()
p.WBState = wgSetPlayerBlackLevel.GetState()
@ -550,7 +499,7 @@ func init() {
return nil
}))
//同步游戏状态
// 修改服务状态
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_SERVER_STATE), netlib.PacketFactoryWrapper(func() interface{} {
return &server.ServerState{}
}))
@ -563,254 +512,23 @@ func init() {
return nil
}))
//netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_DTRoomInfo), netlib.PacketFactoryWrapper(func() interface{} {
// return &server.WGDTRoomInfo{}
//}))
//netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_DTRoomInfo), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
// logger.Logger.Trace("SSPacketID_PACKET_WG_DTRoomInfo Process recv ", pack)
// if msg, ok := pack.(*server.WGDTRoomInfo); ok {
// scene := base.SceneMgrSington.GetScene(int(msg.GetRoomId()))
// if scene != nil {
// data := scene.GetScenePolicy().PacketGameData(scene)
// if pack, ok := data.(*server.GWDTRoomInfo); ok {
// pack.DataKey = proto.String(msg.GetDataKey())
// pack.RoomId = proto.Int32(msg.GetRoomId())
// } else {
// logger.Logger.Warn("Covert DT scene packet game data error.")
// }
// scene.SendToWorld(int(server.SSPacketID_PACKET_GW_DTRoomInfo), data)
// }
// return nil
// }
// return nil
//}))
//
//netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_DTRoomFlag), netlib.PacketFactoryWrapper(func() interface{} {
// return &server.WGDTRoomFlag{}
//}))
//netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_DTRoomFlag), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
// logger.Logger.Trace("SSPacketID_PACKET_WG_DTRoomFlag Process recv ", pack)
// if msg, ok := pack.(*server.WGDTRoomFlag); ok {
// scene := base.SceneMgrSington.GetScene(int(msg.GetRoomId()))
// if scene != nil {
// data := base.InterventionData{
// Webuser: msg.GetWebuser(),
// Flag: msg.GetFlag(),
// NumOfGames: msg.GetNumGames(),
// }
// scene.GetScenePolicy().InterventionGame(scene, data)
// }
// return nil
// }
// return nil
//}))
//
//netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_DTRoomResults), netlib.PacketFactoryWrapper(func() interface{} {
// return &server.WGRoomResults{}
//}))
//netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_DTRoomResults), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
// logger.Logger.Trace("SSPacketID_PACKET_WG_DTRoomResults Process recv:", pack)
// if msg, ok := pack.(*server.WGRoomResults); ok {
// scene := base.SceneMgrSington.GetScene(int(msg.GetRoomId()))
// if scene != nil {
// data := base.InterventionResults{
// Key: msg.GetDataKey(),
// Webuser: msg.GetWebuser(),
// Results: msg.GetResults(),
// }
// ret := scene.GetScenePolicy().InterventionGame(scene, data)
// if pack, ok := ret.(*server.GWRoomResults); ok {
// pack.DataKey = proto.String(msg.GetDataKey())
// } else {
// logger.Logger.Warn("Covert DTRoomResults scene packet game data error.")
// }
// scene.SendToWorld(int(server.SSPacketID_PACKET_GW_DTRoomResults), ret)
// }
// return nil
// }
// return nil
//}))
//netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_PlayerOnGameCount), netlib.PacketFactoryWrapper(func() interface{} {
// return &server.WGPayerOnGameCount{}
//}))
//netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_PlayerOnGameCount), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
// logger.Logger.Trace("SSPacketID_PACKET_WG_PlayerOnGameCount Process recv ", pack)
// if msg, ok := pack.(*server.WGPayerOnGameCount); ok {
// base.CoinPoolMgr.LastDayDtCount = nil
// for _, value := range msg.GetDTCount() {
// base.CoinPoolMgr.LastDayDtCount = append(base.CoinPoolMgr.LastDayDtCount, int(value))
// }
// return nil
// }
// return nil
//}))
//netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_SyncPlayerSafeBoxCoin), netlib.PacketFactoryWrapper(func() interface{} {
// return &server.WGSyncPlayerSafeBoxCoin{}
//}))
//netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_SyncPlayerSafeBoxCoin), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
// logger.Logger.Trace("WGSyncPlayerSafeBoxCoin Process recv ", pack)
// if msg, ok := pack.(*server.WGSyncPlayerSafeBoxCoin); ok {
// p := base.PlayerMgrSington.GetPlayerBySnId(msg.GetSnId())
// if p != nil {
// p.SafeBoxCoin = msg.GetSafeBoxCoin()
// }
// return nil
// }
// return nil
//}))
//更新俱乐部房间配置
//netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_CLUB_MESSAGE), netlib.PacketFactoryWrapper(func() interface{} {
// return &server.WGClubMessage{}
//}))
//netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_CLUB_MESSAGE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
// logger.Logger.Trace("receive WGClubMessage:", pack)
// if msg, ok := pack.(*server.WGClubMessage); ok {
// sceneIds := msg.GetSceneIds()
// for _, id := range sceneIds {
// s := base.SceneMgrSington.GetScene(int(id))
// if s != nil {
// if msg.GetPumpCoin() > 0 {
// s.PumpCoin = int32(msg.GetPumpCoin())
// }
// if msg.GetDBGameFree() != nil {
// s.DbGameFree = msg.GetDBGameFree()
// }
// }
// }
// }
// return nil
//}))
//更新NiceId
//netlib.RegisterFactory(int(server.SSPacketID_PACKET_GW_NICEIDREBIND), netlib.PacketFactoryWrapper(func() interface{} {
// return &server.WGNiceIdRebind{}
//}))
//netlib.RegisterHandler(int(server.SSPacketID_PACKET_GW_NICEIDREBIND), netlib.HandlerWrapper(func(s *netlib.Session,
// packetid int, pack interface{}) error {
// logger.Logger.Trace("receive WGNiceIdRebind:", pack)
// if msg, ok := pack.(*server.WGNiceIdRebind); ok {
// player := base.PlayerMgrSington.GetPlayerBySnId(msg.GetUser())
// if player != nil {
// player.NiceId = msg.GetNewId()
// }
// }
// return nil
//}))
//
//netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_INVITEROBENTERCOINSCENEQUEUE), netlib.PacketFactoryWrapper(func() interface{} {
// return &server.WGInviteRobEnterCoinSceneQueue{}
//}))
//netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_INVITEROBENTERCOINSCENEQUEUE), netlib.HandlerWrapper(func(s *netlib.Session,
// packetid int, pack interface{}) error {
// logger.Logger.Trace("receive WGInviteRobEnterCoinSceneQueue:", pack)
// if msg, ok := pack.(*server.WGInviteRobEnterCoinSceneQueue); ok {
// base.NpcServerAgentSingleton.QueueInvite(msg.GetGameFreeId(), msg.GetPlatform(), msg.GetRobNum())
// }
// return nil
//}))
//
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_GAMEFORCESTART), netlib.PacketFactoryWrapper(func() interface{} {
return &server.WGGameForceStart{}
}))
netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_GAMEFORCESTART), netlib.HandlerWrapper(func(s *netlib.Session,
packetid int, pack interface{}) error {
logger.Logger.Trace("receive WGGameForceStart:", pack)
if msg, ok := pack.(*server.WGGameForceStart); ok {
scene := base.SceneMgrSington.GetScene(int(msg.GetSceneId()))
if scene != nil {
scene.GetScenePolicy().ForceStart(scene)
scene.NotifySceneRoundStart(1)
}
}
return nil
}))
//邀请机器人进比赛
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_INVITEMATCHROB), netlib.PacketFactoryWrapper(func() interface{} {
return &server.WGInviteMatchRob{}
}))
netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_INVITEMATCHROB), netlib.HandlerWrapper(func(s *netlib.Session,
packetid int, pack interface{}) error {
//logger.Logger.Trace("receive WGInviteMatchRob:", pack)
netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_INVITEMATCHROB), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive WGInviteMatchRob:", pack)
if msg, ok := pack.(*server.WGInviteMatchRob); ok {
base.NpcServerAgentSingleton.MatchInvite(msg.GetRoomId(), msg.GetMatchId(), msg.GetPlatform(), msg.GetRobNum(), msg.GetNeedAwait())
}
return nil
}))
//比赛场底分变化
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_SCENEMATCHBASECHANGE), netlib.PacketFactoryWrapper(func() interface{} {
return &server.WGSceneMatchBaseChange{}
}))
netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_SCENEMATCHBASECHANGE), netlib.HandlerWrapper(func(s *netlib.Session,
packetid int, pack interface{}) error {
logger.Logger.Trace("WGSceneMatchBaseChange Process recv ", pack)
if msg, ok := pack.(*server.WGSceneMatchBaseChange); ok {
ids := msg.GetSceneIds()
for _, id := range ids {
s := base.SceneMgrSington.GetScene(int(id))
if s != nil {
if s.GetMatchChgData() == nil {
s.SetMatchChgData(&base.SceneMatchChgData{})
}
if s.GetMatchChgData() != nil {
s.GetMatchChgData().NextBaseScore = msg.GetBaseScore()
s.GetMatchChgData().NextOutScore = msg.GetOutScore()
}
}
}
}
return nil
}))
//玩家退赛
//netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_PLAYERQUITMATCH), netlib.PacketFactoryWrapper(func() interface{} {
// return &server.WGPlayerQuitMatch{}
//}))
//netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_PLAYERQUITMATCH), netlib.HandlerWrapper(func(s *netlib.Session,
// packetid int, pack interface{}) error {
// logger.Logger.Trace("WGPlayerQuitMatch Process recv ", pack)
// if msg, ok := pack.(*server.WGPlayerQuitMatch); ok {
// p := base.PlayerMgrSington.GetPlayerBySnId(msg.GetSnId())
// if p == nil {
// return nil
// }
// scene := base.SceneMgrSington.GetScene(int(msg.GetSceneId()))
// if scene == nil {
// return nil
// }
// if scene.GetParamEx(common.PARAMEX_MATCH_COPYID) != msg.GetMatchId() {
// return nil
// }
// //if scene.mp != nil {
// // if scene.mp.OnMatchBreak(scene, p.pos) {
// // //base.PlayerMgrSington.DelPlayerBySnId(p.SnId)
// // //p.gateSess = nil
// // //p.worldSess = nil
// // //p.gateSid = 0
// // //p.sid = 0
// // p.SetIParam(common.PlayerIParam_IsQuit, 1)
// // p.MarkFlag(base.PlayerState_Leave)
// // p.MarkFlag(PlayerState_Auto)
// // p.MarkFlag(PlayerState_MatchQuit)
// // p.SyncFlag()
// // }
// //}
// }
// return nil
//}))
//玩家中转消息
netlib.RegisterFactory(int(server.SSPacketID_PACKET_SS_REDIRECTTOPLAYER), netlib.PacketFactoryWrapper(func() interface{} {
return &server.SSRedirectToPlayer{}
}))
netlib.RegisterHandler(int(server.SSPacketID_PACKET_SS_REDIRECTTOPLAYER), netlib.HandlerWrapper(func(s *netlib.Session,
packetid int, pack interface{}) error {
netlib.RegisterHandler(int(server.SSPacketID_PACKET_SS_REDIRECTTOPLAYER), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("SSRedirectToPlayer Process recv ", pack)
if msg, ok := pack.(*server.SSRedirectToPlayer); ok {
p := base.PlayerMgrSington.GetPlayerBySnId(msg.GetSnId())
@ -823,111 +541,6 @@ func init() {
return nil
}))
////同步玩家排名信息
//netlib.RegisterFactory(int(match.MatchPacketID_PACKET_SS_MATCH_PLAYERDATA), netlib.PacketFactoryWrapper(func() interface{} {
// return &match.SSMatchPlayerData{}
//}))
//netlib.RegisterHandler(int(match.MatchPacketID_PACKET_SS_MATCH_PLAYERDATA), netlib.HandlerWrapper(func(s *netlib.Session,
// packetid int, pack interface{}) error {
// logger.Logger.Trace("SSMatchPlayerData Process recv ", pack)
// if msg, ok := pack.(*match.SSMatchPlayerData); ok {
// scene := base.SceneMgrSington.GetScene(int(msg.GetSceneId()))
// if scene == nil {
// return nil
// }
// if !scene.IsMatchScene() {
// return nil
// }
// for _, mp := range msg.GetMatchPlayerData() {
// if data, ok := scene.Players[mp.GetSnId()]; ok {
// data.Iparams[common.PlayerIParam_MatchRank] = int64(mp.GetRank())
// }
// }
// }
// return nil
//}))
//由worldsrv通知gamesrv向玩家发送奖池信息
//netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_GAMEJACKPOT), netlib.PacketFactoryWrapper(func() interface{} {
// return &server.WGGameJackpot{}
//}))
//netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_GAMEJACKPOT), netlib.HandlerWrapper(func(s *netlib.Session,
// packetid int, pack interface{}) error {
// logger.Logger.Trace("WGGameJackpot Process recv ", pack)
// if msg, ok := pack.(*server.WGGameJackpot); ok {
// sid := msg.GetSid()
// gateSid := msg.GetGateSid()
// platform := msg.GetPlatform()
// info := msg.GetInfo()
//
// var sessionId srvlib.SessionId
// sessionId.Set(gateSid)
// gateSess := srvlib.ServerSessionMgrSington.GetSession(int(sessionId.AreaId()), int(sessionId.SrvType()), int(sessionId.SrvId()))
// pack := &gamehall.SCHundredSceneGetGameJackpot{}
// for _, v := range info {
// if common.InSliceInt(base.BroadJackpotGame, int(v.GameId)) { //不是小游戏且需要广播游戏奖池
// jpfi := &gamehall.GameJackpotFundInfo{
// GameFreeId: proto.Int32(int32(v.GameFreeId)),
// }
//
// //
// str := base.XSlotsPoolMgr.GetPool(v.GetGameFreeId(), platform)
// if str != "" {
// jackpot := &base.XSlotJackpotPool{}
// err := json.Unmarshal([]byte(str), jackpot)
// if err == nil {
// jpfi.JackPotFund = jackpot.JackpotFund
// }
// }
//
// //初始化奖池金额
// if jpfi.JackPotFund == 0 {
// dbGameFree := srvdata.PBDB_GameFreeMgr.GetData(v.GameFreeId)
// if dbGameFree != nil {
// params := dbGameFree.GetJackpot()
// jpfi.JackPotFund = int64(params[0] * dbGameFree.GetBaseScore())
// }
// }
// pack.GameJackpotFund = append(pack.GameJackpotFund, jpfi)
// }
// }
//
// proto.SetDefaults(pack)
// common.SendToGate(sid, int(gamehall.HundredScenePacketID_PACKET_SC_GAMEJACKPOT), pack, gateSess)
// logger.Logger.Trace("SCHundredSceneGetGameJackpot:", pack)
// }
// return nil
//}))
//单控
//netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_SINGLEADJUST), netlib.PacketFactoryWrapper(func() interface{} {
// return &server.WGSingleAdjust{}
//}))
//netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_SINGLEADJUST), netlib.HandlerWrapper(func(s *netlib.Session,
// packetid int, pack interface{}) error {
// logger.Logger.Trace("WGSingleAdjust Process recv ", pack)
// if msg, ok := pack.(*server.WGSingleAdjust); ok {
// //修改内存
// sa := model.UnmarshalSingleAdjust(msg.PlayerSingleAdjust)
// if sa == nil {
// logger.Logger.Warn("WGSingleAdjust sa == nil")
// return nil
// }
// p := base.PlayerMgrSington.GetPlayerBySnId(sa.SnId)
// if p == nil {
// logger.Logger.Warn("WGSingleAdjust p == nil")
// return nil
// }
// switch msg.Option {
// case 1, 2:
// p.UpsertSingleAdjust(sa)
// case 3:
// p.DeleteSingleAdjust(sa.Platform, sa.GameFreeId)
// }
// }
// return nil
//}))
//玩家离开
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_PlayerLEAVE), netlib.PacketFactoryWrapper(func() interface{} {
return &server.WGPlayerLeave{}
@ -946,23 +559,19 @@ func init() {
return nil
}))
//黑白名单开关
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_WBCtrlCfg), netlib.PacketFactoryWrapper(func() interface{} {
return &server.WbCtrlCfg{}
//玩家离开
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_BUYRECTIMEITEM), netlib.PacketFactoryWrapper(func() interface{} {
return &server.WGBuyRecTimeItem{}
}))
netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_WBCtrlCfg), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive WGPlayerLeaveGame")
if msg, ok := pack.(*server.WbCtrlCfg); ok {
for _, id := range msg.GameIds {
ss := base.SceneMgrSington.GetSceneByGameId(msg.Platform, id)
for _, scene := range ss {
scene.RealCtrl = msg.RealCtrl
scene.Novice = msg.Novice
scene.Welfare = msg.Welfare
scene.KillPoints = msg.KillPoints
}
netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_BUYRECTIMEITEM), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive WGBuyRecTimeItem")
if msg, ok := pack.(*server.WGBuyRecTimeItem); ok {
p := base.PlayerMgrSington.GetPlayerBySnId(msg.GetSnId())
if p != nil {
p.UpdateBuyRecTimeItem(msg.ExpireTime, msg.Diamond)
}
}
return nil
}))
}

View File

@ -32,7 +32,7 @@ func (this *CSAvengersOpHandler) Process(s *netlib.Session, packetid int, data i
logger.Logger.Warn("CSAvengersOpHandler p.scene == nil")
return nil
}
if scene.GameId != common.GameId_Avengers {
if scene.KeyGameDif != common.GameDifAvengers {
logger.Logger.Error("CSAvengersOpHandler gameId Error ", scene.GameId)
return nil
}

View File

@ -125,12 +125,12 @@ func (this *AvengersPlayerData) SavePlayerGameData(gameFreeId string) {
// 黑白名单的限制是否生效
func (this *AvengersPlayerData) CheckBlackWriteList(isWin bool) bool {
if isWin && this.BlackLevel > 0 && this.BlackLevel <= 10 {
if rand.Int31n(100) < this.BlackLevel*10 {
if isWin && -this.WBLevel > 0 && -this.WBLevel <= 10 {
if rand.Int31n(100) < -this.WBLevel*10 {
return true
}
} else if !isWin && this.WhiteLevel > 0 && this.WhiteLevel <= 10 {
if rand.Int31n(100) < this.WhiteLevel*10 {
} else if !isWin && this.WBLevel > 0 && this.WBLevel <= 10 {
if rand.Int31n(100) < this.WBLevel*10 {
return true
}
}

View File

@ -233,7 +233,7 @@ func AvengersSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *AvengersSceneD
Creator: proto.Int32(s.Creator),
GameId: proto.Int(s.GameId),
RoomMode: proto.Int(s.GameMode),
Params: s.Params,
Params: common.CopySliceInt64ToInt32(s.Params),
State: proto.Int(s.SceneState.GetState()),
Jackpot: proto.Int64(sceneEx.jackpot.VirtualJK),
GameFreeId: proto.Int32(s.DbGameFree.Id),
@ -547,7 +547,7 @@ func (this *SceneStateAvengersStart) OnPlayerOp(s *base.Scene, p *base.Player, o
writeBlackTryTimes++
goto WriteBlack
} else if writeBlackTryTimes >= 100 && writeBlackTryTimes != 999 {
logger.Logger.Warnf("AvengersWriteBlackTryTimesOver [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, gamePoolCoin, playerEx.BlackLevel, playerEx.WhiteLevel)
logger.Logger.Warnf("AvengersWriteBlackTryTimesOver [%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, gamePoolCoin, playerEx.WBLevel)
}
//if playerEx.DebugGame && sceneEx.SceneType == 1 {

View File

@ -513,7 +513,7 @@ func (this *CoinPoolManager) GetCoinPoolSetting(platform string, gamefreeid, gro
// GetCoinPoolSettingByGame 获取水池配置
func (this *CoinPoolManager) GetCoinPoolSettingByGame(platform string, gameId, gameMode, groupId int32) (settings []*webapi.CoinPoolSetting) {
ids, _ := srvdata.DataMgr.GetGameFreeIds(gameId, gameMode)
ids, _ := srvdata.GameFreeMgr.GetGameFreeIds(gameId, gameMode)
for _, id := range ids {
setting := this.GetCoinPoolSetting(platform, id, groupId)
if setting != nil {

View File

@ -20,6 +20,8 @@ func init() {
etcd.Register(etcd.ETCDKEY_GAME_CONFIG, webapi.GameConfig{}, platformConfigEtcd)
// 集卡活动
etcd.Register(etcd.ETCDKEY_ACT_Collect, webapi.WelfareCollectConfig{}, platformConfigEtcd)
// 渠道开关
etcd.Register(etcd.ETCDKEY_ChannelSwitch, webapi.ChannelSwitchConfig{}, platformConfigEtcd)
}
func platformConfigEtcd(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
@ -33,6 +35,8 @@ func platformConfigEtcd(ctx context.Context, completeKey string, isInit bool, ev
ConfigMgrInst.GetConfig(d.Platform).GameConfig = d
case *webapi.WelfareCollectConfig:
ConfigMgrInst.GetConfig(d.Platform).WelfareCollectConfig = d
case *webapi.ChannelSwitchConfig:
ConfigMgrInst.GetConfig(d.Platform).ChannelSwitch[d.GetTp()] = d
default:
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)
}

View File

@ -16,7 +16,6 @@ import (
//rawproto "github.com/golang/protobuf/proto"
"math/rand"
"strconv"
"time"
)
@ -113,15 +112,13 @@ type Player struct {
cparams map[string]string //平台登陆数据
Iparams map[int]int64 //整形参数
sparams map[int]string //字符参数
WhiteLevel int32 //todo 使用WBLevel
BlackLevel int32 //todo 使用WBLevel
SingleAdjust *model.PlayerSingleAdjust
IsLocal bool //是否本地player
Items map[int32]int64 //背包数据
MatchParams []int32 //比赛参数 排名、段位、假snid、假角色
IsLocal bool //是否本地player
Items map[int32]int64 //背包数据
MatchParams []int32 //比赛参数 排名、段位、假snid、假角色
MatchRobotGrades []MatchRobotGrade
TestLog []string // 调试日志
RankScore map[int32]int64 // 段位积分
AppChannel string // app渠道(玩家本次登录使用的包的渠道类型,换登录包,这个值也会变;玩家model.PlayerData存储的渠道是玩家第一次登录的渠道不会修改)
}
type MatchRobotGrade struct {
@ -147,7 +144,7 @@ func NewPlayer(sid int64, data []byte, ws, gs *netlib.Session) *Player {
// 需要make的统一在这里初始化默认值别的地方就不用再初始化了
p.PlayerData = model.PlayerData{
TotalGameData: make(map[int][]*model.PlayerGameTotal),
//TotalGameData: make(map[int][]*model.PlayerGameTotal),
GDatas: make(map[string]*model.PlayerGameInfo),
ShopTotal: make(map[int32]*model.ShopTotal),
ShopLastLookTime: make(map[int32]int64),
@ -174,11 +171,6 @@ func (this *Player) init(data []byte) bool {
if this.GDatas == nil {
this.GDatas = make(map[string]*model.PlayerGameInfo)
}
if this.WBLevel > 0 {
this.WhiteLevel = this.WBLevel
} else if this.WBLevel < 0 {
this.BlackLevel = -this.WBLevel
}
return true
}
@ -721,38 +713,29 @@ func (this *Player) AddServiceFee(tax int64) {
}
}
func (this *Player) GetStaticsData(gameDiff string) (winCoin int64, lostCoin int64) {
if this.PlayerData.GDatas != nil {
if data, ok := this.PlayerData.GDatas[gameDiff]; ok {
winCoin, lostCoin = data.Statics.TotalOut, data.Statics.TotalIn
return
}
}
return
}
func (this *Player) SaveReportForm(showId, sceneMode int, keyGameId string, profitCoin, flow int64, validBet int64) {
//个人报表统计
if this.TotalGameData == nil {
this.TotalGameData = make(map[int][]*model.PlayerGameTotal)
}
if this.TotalGameData[showId] == nil {
this.TotalGameData[showId] = []*model.PlayerGameTotal{new(model.PlayerGameTotal)}
}
td := this.TotalGameData[showId][len(this.TotalGameData[showId])-1]
td.ProfitCoin += profitCoin
td.BetCoin += validBet
td.FlowCoin += flow
///////////////最多盈利
if pgs, exist := this.GDatas[keyGameId]; exist {
if pgs.Statics.MaxSysOut < profitCoin {
pgs.Statics.MaxSysOut = profitCoin
}
} else {
gs := model.NewPlayerGameStatics()
gs.MaxSysOut = profitCoin
this.GDatas[keyGameId] = &model.PlayerGameInfo{FirstTime: time.Now(), Statics: *gs}
}
}
//func (this *Player) SaveReportForm(showId, sceneMode int, keyGameId string, profitCoin, flow int64, validBet int64) {
// //个人报表统计
// if this.TotalGameData == nil {
// this.TotalGameData = make(map[int][]*model.PlayerGameTotal)
// }
// if this.TotalGameData[showId] == nil {
// this.TotalGameData[showId] = []*model.PlayerGameTotal{new(model.PlayerGameTotal)}
// }
// td := this.TotalGameData[showId][len(this.TotalGameData[showId])-1]
// td.ProfitCoin += profitCoin
// td.BetCoin += validBet
// td.FlowCoin += flow
// ///////////////最多盈利
// if pgs, exist := this.GDatas[keyGameId]; exist {
// if pgs.Statics.MaxSysOut < profitCoin {
// pgs.Statics.MaxSysOut = profitCoin
// }
// } else {
// gs := model.NewPlayerGameStatics()
// gs.MaxSysOut = profitCoin
// this.GDatas[keyGameId] = &model.PlayerGameInfo{FirstTime: time.Now(), Statics: *gs}
// }
//}
// Statics 弃用,使用 Scene.Statistics 方法
// 个人投入产出汇总以游戏id为key存储
@ -867,109 +850,6 @@ func (this *Player) Statics(keyGameId string, keyGameFreeId string, gain int64,
////}
}
//func (this *Player) CheckType(gamefreeId, gameId int32) *server.DB_PlayerType {
// types := srvdata.PlayerTypeMgrSington.GetPlayerType(gamefreeId)
// cnt := len(types)
// if cnt > 0 {
// var pgs *model.PlayerGameStatics
// if this.GDatas != nil {
// if d, exist := this.GDatas[strconv.Itoa(int(gameId))]; exist {
// pgs = &d.Statics
// }
// }
//
// //赔率 产出/投入 万分比
// odds := int64(float64(float64(pgs.TotalOut+1)/float64(pgs.TotalIn+1)) * 10000)
// if odds > 10000000 {
// odds = 10000000
// }
// for i := 0; i < cnt; i++ {
// t := types[i]
// if t != nil {
// if this.CoinPayTotal >= int64(t.GetPayLowerLimit()) && this.CoinPayTotal <= int64(t.GetPayUpperLimit()) &&
// pgs.GameTimes >= int64(t.GetGameTimeLowerLimit()) && pgs.GameTimes <= int64(t.GetGameTimeUpperLimit()) &&
// pgs.TotalIn >= int64(t.GetTotalInLowerLimit()) && pgs.TotalIn <= int64(t.GetTotalInUpperLimit()) &&
// odds >= int64(t.GetOddsLowerLimit()) && odds <= int64(t.GetOddsUpperLimit()) {
// return t
// }
// }
// }
// }
// return nil
//}
// 计算玩家赔率 产出/投入
func (this *Player) LoseRate(gamefreeId, gameId int32) (rate float64) {
rate = -1
if this.GDatas != nil {
if d, exist := this.GDatas[strconv.Itoa(int(gameId))]; exist {
rate = float64(float64(d.Statics.TotalOut+1) / float64(d.Statics.TotalIn+1))
return rate
}
}
return rate
}
// 计算玩家赔率 产出/投入
func (this *Player) LoseRateKeyGameid(gameKeyId string) (rate float64) {
rate = -1
var pgs *model.PlayerGameStatics
if this.GDatas != nil {
if d, exist := this.GDatas[gameKeyId]; exist {
pgs = &d.Statics
}
}
rate = float64(float64(pgs.TotalOut+1) / float64(pgs.TotalIn+1))
return
}
// 是否是新手判定
//
// func (this *Player) IsFoolPlayerBy(gameId string) {
// if this.IsRob || this.GDatas == nil {
// return
// }
// if this.GDatas[gameId] == nil {
// return
// }
// if this.IsFoolPlayer == nil {
// this.IsFoolPlayer = make(map[string]bool)
// }
// if model.GameParamData.BirdPlayerFlag == false {
// this.IsFoolPlayer[gameId] = false
// return
// }
// playerDate := this.GDatas[gameId]
// //金花游戏局数小于10局并且总产出<100000并且总产出/(总投入+10000<=2的玩家定义为新手玩家
// if playerDate.Statics.GameTimes < 10 && playerDate.Statics.TotalOut < 100000 &&
// playerDate.Statics.TotalOut/(playerDate.Statics.TotalIn+10000) <= 2 {
// this.IsFoolPlayer[gameId] = true
// } else {
// this.IsFoolPlayer[gameId] = false
// }
// }
//func (this *Player) PlayerGameNewCheck(gameDiff string) bool {
// if this.IsRob {
// return false
// }
// if this.GDatas == nil {
// return true
// }
// gameId := gameDiff
// if this.GDatas[gameId] == nil {
// return true
// }
// playerDate := this.GDatas[gameId]
// if playerDate.Statics.GameTimes > int64(model.GameParamData.GamePlayerCheckNum) {
// return true
// } else {
// return false
// }
//}
func (this *Player) SendTrusteeshipTips() {
pack := &player.SCTrusteeshipTips{
Trusteeship: proto.Int32(this.Trusteeship),
@ -1424,3 +1304,56 @@ func (this *Player) GetWeekCardPrivilege(typeId int32) bool {
}
return false
}
// UpdatePigBankCoin 更新玩家存钱罐
func (this *Player) 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)
}
// UpdateBuyRecTimeItem 购买记牌器后更新时间、钻石
func (this *Player) UpdateBuyRecTimeItem(expireTime, diamond int64) {
this.Diamond = diamond
this.ItemRecExpireTime = expireTime
}

View File

@ -61,7 +61,7 @@ type Scene struct {
SceneMode int // 房间模式,如:公共房间 common.SceneMode_Public
SceneType int // 场次,新手场,中级场...
Platform string // 平台id
Params []int32
Params []int64
paramsEx []int32
Creator int32
agentor int32
@ -102,8 +102,9 @@ type Scene struct {
replayAddId int32
KeyGameId string //游戏类型唯一ID
KeyGamefreeId string //游戏场次唯一id
GroupId int32 //分组id
bEnterAfterStart bool //是否允许中途加入
KeyGameDif string
GroupId int32 //分组id
bEnterAfterStart bool //是否允许中途加入
ClubId int32
RoomId string //俱乐部那个包间
RoomPos int32 //房间桌号
@ -123,12 +124,12 @@ type Scene struct {
WebUser string // 操作人
resultHistory [][]int // 记录数 [控制结果,局数...]
BaseScore int32 //tienlen游戏底分
MatchId int32 //标记本次比赛的id并不是后台id
MatchId int64 //标记本次比赛的id并不是后台id
MatchFinals bool //比赛场决赛
MatchRound int32
MatchCurPlayerNum int32
MatchNextNeed int32
MatchType int32 // 0.普通场 1.锦标赛 2.冠军赛 3.vip专属
MatchRound int64
MatchCurPlayerNum int64
MatchNextNeed int64
MatchType int64 // 0.普通场 1.锦标赛 2.冠军赛 3.vip专属
MatchStop bool
RealCtrl bool
Novice bool
@ -136,7 +137,7 @@ type Scene struct {
KillPoints bool
}
func NewScene(ws *netlib.Session, sceneId, gameMode, sceneMode, gameId int, platform string, params []int32,
func NewScene(ws *netlib.Session, sceneId, gameMode, sceneMode, gameId int, platform string, params []int64,
agentor, creator int32, replayCode string, hallId, groupId, totalOfGames int32, dbGameFree *server.DB_GameFree, bEnterAfterStart bool, baseScore int32, playerNum int, cherank []int32, paramsEx ...int32) *Scene {
sp := GetScenePolicy(gameId, gameMode)
if sp == nil {
@ -247,9 +248,9 @@ func (this *Scene) init() bool {
}
}
//this.keyGameId = strconv.Itoa(int(this.dbGameFree.GetGameId()))
this.KeyGameId = this.DbGameFree.GetGameDif()
this.KeyGameId = strconv.Itoa(int(this.DbGameFree.GetGameId()))
this.KeyGamefreeId = strconv.Itoa(int(this.DbGameFree.GetId()))
this.KeyGameDif = this.DbGameFree.GetGameDif()
}
// test
//for i := 0; i < 100; i++ {
@ -266,7 +267,7 @@ func (this *Scene) init() bool {
return true
}
func (this *Scene) GetParam(idx int) int32 {
func (this *Scene) GetParam(idx int) int64 {
if idx < 0 || idx >= len(this.Params) {
return -1
}
@ -386,10 +387,10 @@ func (this *Scene) GetSceneMode() int {
func (this *Scene) SetSceneMode(sceneMode int) {
this.SceneMode = sceneMode
}
func (this *Scene) GetParams() []int32 {
func (this *Scene) GetParams() []int64 {
return this.Params
}
func (this *Scene) SetParams(params []int32) {
func (this *Scene) SetParams(params []int64) {
this.Params = params
}
func (this *Scene) GetParamsEx() []int32 {
@ -561,7 +562,7 @@ func (this *Scene) PlayerEnter(p *Player, isLoaded bool) {
//避免游戏接口异常
utils.RunPanicless(func() { this.sp.OnPlayerEnter(this, p) })
if p.BlackLevel > 0 {
if p.WBLevel < 0 {
WarningBlackPlayer(p.SnId, this.DbGameFree.Id)
}
@ -613,7 +614,7 @@ func (this *Scene) PlayerLeave(p *Player, reason int, isBill bool) {
LostTimes: proto.Int(p.lostTimes),
TotalConvertibleFlow: proto.Int64(p.TotalConvertibleFlow),
ValidCacheBetTotal: proto.Int64(p.ValidCacheBetTotal),
MatchId: proto.Int32(this.MatchId),
MatchId: this.MatchId,
CurIsWin: proto.Int64(p.CurIsWin), // 负数:输 0平局 正数:赢
}
matchRobotGrades := p.MatchRobotGrades
@ -821,7 +822,7 @@ func (this *Scene) PlayerReturn(p *Player, isLoaded bool) {
RoomId: proto.Int(this.SceneId),
GameId: proto.Int(this.GameId),
ModeType: proto.Int(this.GameMode),
Params: this.Params,
Params: common.CopySliceInt64ToInt32(this.Params),
HallId: proto.Int32(this.hallId),
IsLoaded: proto.Bool(isLoaded),
OpRetCode: gamehall.OpResultCode_Game_OPRC_Sucess_Game,
@ -1746,8 +1747,8 @@ func (this *Scene) SaveGamePlayerListLog(snid int32, param *SaveGamePlayerListLo
playerEx.TotalFlow += totalFlow
playerEx.ValidCacheBetTotal += param.ValidBet
//报表统计
playerEx.SaveReportForm(int(this.DbGameFree.GetGameClass()), this.SceneMode, this.KeyGameId,
param.WinAmountNoAnyTax, totalFlow, param.ValidBet)
//playerEx.SaveReportForm(int(this.DbGameFree.GetGameClass()), this.SceneMode, this.KeyGameId,
// param.WinAmountNoAnyTax, totalFlow, param.ValidBet)
//分配利润
ProfitDistribution(playerEx, param.TaxCoin, param.ClubPumpCoin, totalFlow)
//上报游戏事件
@ -2119,7 +2120,19 @@ func (this *Scene) TryBillExGameDrop(p *Player) {
if baseScore == 0 {
return
}
dropInfo := srvdata.GameDropMgrSington.GetDropInfoByBaseScore(int32(this.GameId), baseScore)
// 场次掉落开关
if this.DbGameFree.IsDrop != 1 {
return
}
// 渠道开关
conf := ConfigMgrInst.GetConfig(p.Platform).ChannelSwitch[common.ChannelSwitchDropItem]
if !model.GameParamData.CloseChannelSwitch && (conf == nil || !common.InSliceString(conf.OnChannelName, p.AppChannel)) {
return
}
dropInfo := srvdata.GameDropMgrSingleton.GetDropInfoByBaseScore(baseScore)
if dropInfo != nil && len(dropInfo) != 0 && p.Items != nil {
realDrop := make(map[int32]int32)
for _, drop := range dropInfo {
@ -2149,7 +2162,18 @@ func (this *Scene) TryBillExGameDrop(p *Player) {
itemData := srvdata.PBDB_GameItemMgr.GetData(id)
if itemData != nil {
//logType 0获得 1消耗
log := model.NewItemLogEx(p.Platform, p.SnId, 0, itemData.Id, itemData.Name, int64(num), "tienlen游戏掉落")
log := model.NewItemLogEx(model.ItemParam{
Platform: p.Platform,
SnId: p.SnId,
LogType: 0,
ItemId: itemData.Id,
ItemName: itemData.Name,
Count: int64(num),
Remark: "tienlen游戏掉落",
TypeId: common.GainWay_Interact,
GameId: int64(this.GameId),
GameFreeId: int64(this.GetGameFreeId()),
})
if log != nil {
logger.Logger.Trace("WriteLog: ", log)
LogChannelSingleton.WriteLog(log)
@ -2185,7 +2209,18 @@ func (this *Scene) DropCollectBox(p *Player) {
pack.Items = map[int32]int32{itemData.Id: 1}
remark := fmt.Sprintf("游戏掉落%v", itemData.Id)
//logType 0获得 1消耗
log := model.NewItemLogEx(p.Platform, p.SnId, 0, itemData.Id, itemData.Name, 1, remark)
log := model.NewItemLogEx(model.ItemParam{
Platform: p.Platform,
SnId: p.SnId,
LogType: 0,
ItemId: itemData.Id,
ItemName: itemData.Name,
Count: 1,
Remark: remark,
TypeId: common.GainWay_Game,
GameId: int64(this.GameId),
GameFreeId: int64(this.GetGameFreeId()),
})
if log != nil {
logger.Logger.Trace("WriteLog: ", log)
LogChannelSingleton.WriteLog(log)
@ -2329,10 +2364,6 @@ func (this *Scene) SyncPlayerDatas(param *PlayerDataParam) int64 {
if v.WBGain != 0 {
if p := this.GetPlayer(v.SnId); p != nil {
n = p.WBUpdate(v.WBGain)
if p.WBLevel == 0 {
p.BlackLevel = 0
p.WhiteLevel = 0
}
}
}
}
@ -2553,7 +2584,7 @@ func (this *Scene) Statistics(param *StaticParam) {
}
p.WinCoin += totalOut
p.TaxCoin += param.GainTax
if isPlayerPool && common.IsPlayerPool(this.GameId) {
if isPlayerPool && srvdata.GameFreeMgr.IsPlayerPool(this.GameId) {
p.TotalOut += totalOut
p.PlayerTax += param.GainTax
}
@ -2562,7 +2593,7 @@ func (this *Scene) Statistics(param *StaticParam) {
p.FailTimes++
}
p.FailCoin += totalIn
if isPlayerPool && common.IsPlayerPool(this.GameId) {
if isPlayerPool && srvdata.GameFreeMgr.IsPlayerPool(this.GameId) {
p.TotalIn += totalIn
}
} else {

View File

@ -33,7 +33,7 @@ func (this *SceneMgr) makeKey(gameid, gamemode int) int {
}
func (this *SceneMgr) CreateScene(s *netlib.Session, sceneId, gameMode, sceneMode, gameId int, platform string,
params []int32, agentor, creator int32, replayCode string, hallId, groupId, totalOfGames int32,
params []int64, agentor, creator int32, replayCode string, hallId, groupId, totalOfGames int32,
dbGameFree *server.DB_GameFree, bEnterAfterStart bool, baseScore int32, playerNum int, chessRank []int32, paramsEx ...int32) *Scene {
scene := NewScene(s, sceneId, gameMode, sceneMode, gameId, platform, params, agentor, creator, replayCode,
hallId, groupId, totalOfGames, dbGameFree, bEnterAfterStart, baseScore, playerNum, chessRank, paramsEx...)

View File

@ -32,7 +32,7 @@ func (this *CSCaiShenOpHandler) Process(s *netlib.Session, packetid int, data in
logger.Logger.Warn("CSCaiShenOpHandler p.scene == nil")
return nil
}
if scene.GameId != common.GameId_CaiShen {
if scene.KeyGameDif != common.GameDifCaiShen {
logger.Logger.Error("CSCaiShenOpHandler gameId Error ", scene.GameId)
return nil
}

View File

@ -125,12 +125,12 @@ func (this *CaiShenPlayerData) SavePlayerGameData(gameFreeId string) {
// 黑白名单的限制是否生效
func (this *CaiShenPlayerData) CheckBlackWriteList(isWin bool) bool {
if isWin && this.BlackLevel > 0 && this.BlackLevel <= 10 {
if rand.Int31n(100) < this.BlackLevel*10 {
if isWin && -this.WBLevel > 0 && -this.WBLevel <= 10 {
if rand.Int31n(100) < -this.WBLevel*10 {
return true
}
} else if !isWin && this.WhiteLevel > 0 && this.WhiteLevel <= 10 {
if rand.Int31n(100) < this.WhiteLevel*10 {
} else if !isWin && this.WBLevel > 0 && this.WBLevel <= 10 {
if rand.Int31n(100) < this.WBLevel*10 {
return true
}
}

View File

@ -234,7 +234,7 @@ func CaiShenSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *CaiShenSceneDat
Creator: proto.Int32(s.Creator),
GameId: proto.Int(s.GameId),
RoomMode: proto.Int(s.GameMode),
Params: s.Params,
Params: common.CopySliceInt64ToInt32(s.Params),
State: proto.Int(s.SceneState.GetState()),
Jackpot: proto.Int64(sceneEx.jackpot.VirtualJK),
GameFreeId: proto.Int32(s.DbGameFree.Id),
@ -543,7 +543,7 @@ func (this *SceneStateCaiShenStart) OnPlayerOp(s *base.Scene, p *base.Player, op
writeBlackTryTimes++
goto WriteBlack
} else if writeBlackTryTimes >= 100 && writeBlackTryTimes != 999 {
logger.Logger.Warnf("CaiShenWriteBlackTryTimesOver [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, gamePoolCoin, playerEx.BlackLevel, playerEx.WhiteLevel)
logger.Logger.Warnf("CaiShenWriteBlackTryTimesOver [%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, gamePoolCoin, playerEx.WBLevel)
}
// 奖池水池处理
if spinRes.IsJackpot {

View File

@ -30,7 +30,7 @@ func (h *CSPlayerOpHandler) Process(s *netlib.Session, packetid int, data interf
logger.Logger.Warn("CSPlayerOpHandler p.scene == nil")
return nil
}
if !common.IsChess(scene.GetGameId()) {
if scene.KeyGameDif != common.GameDifChess {
logger.Logger.Error("CSPlayerOpHandler gameId Error ", scene.GameId)
return nil
}
@ -72,7 +72,7 @@ func (h *CSPlayerDevOpHandler) Process(s *netlib.Session, packetid int, data int
logger.Logger.Warn("CSPlayerDevOpHandler p.scene == nil")
return nil
}
if !common.IsChess(scene.GetGameId()) {
if scene.KeyGameDif != common.GameDifChess {
logger.Logger.Error("CSPlayerDevOpHandler gameId Error ", scene.GameId)
return nil
}

View File

@ -1,10 +1,10 @@
package chesstitians
import (
"time"
rule "mongo.games.com/game/gamerule/chess"
"mongo.games.com/game/gamesrv/base"
"mongo.games.com/game/model"
"time"
)
// PlayerEx 玩家身上的额外数据
@ -32,9 +32,6 @@ func (p *PlayerEx) init() {
p.oldGrade = 0
p.totalTime = 0
p.lastTime = time.Time{}
if !p.GetScene().IsMatchScene() && !p.GetScene().IsPrivateScene() { //非比赛场 非私有房间
p.LoadPlayerGameInfo(p.GetScene().KeyGameId)
}
}
func (p *PlayerEx) Clear() {
@ -54,21 +51,6 @@ func (p *PlayerEx) CanOp() bool {
return false
}
func (p *PlayerEx) LoadPlayerGameInfo(keyGameId string) {
if p.IsRob {
return
}
if p.GDatas == nil {
p.GDatas = make(map[string]*model.PlayerGameInfo)
}
if data, exist := p.GDatas[keyGameId]; !exist {
data = new(model.PlayerGameInfo)
data.Statics.TotalOut = 920000
data.Statics.TotalIn = 1000000
p.GDatas[keyGameId] = data
}
}
// GetTotalTime 获取玩家总下棋消耗的操作时长,单位秒
func (p *PlayerEx) GetTotalTime() int32 {
if s := p.GetScene(); s != nil && s.GetSceneState().GetState() == rule.SceneStatePlayerOp && p.IsGameing() {

View File

@ -481,7 +481,7 @@ func CreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *SceneEx, playe
Creator: proto.Int32(s.GetCreator()),
GameId: proto.Int(s.GetGameId()),
RoomMode: proto.Int(s.GetSceneMode()),
Params: s.GetParams(),
Params: common.CopySliceInt64ToInt32(s.GetParams()),
State: proto.Int32(int32(s.GetSceneState().GetState())),
TimeOut: proto.Int(s.GetSceneState().GetTimeout(s)),
NumOfGames: proto.Int(sceneEx.NumOfGames),
@ -493,10 +493,6 @@ func CreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *SceneEx, playe
MaxPlayerNum: proto.Int(s.GetPlayerNum()),
GameFreeId: proto.Int32(s.GetDBGameFree().GetId()),
SceneType: proto.Int32(s.GetDBGameFree().GetSceneType()),
// 比赛场相关
Round: proto.Int32(s.MatchRound),
CurPlayerNum: proto.Int32(s.MatchCurPlayerNum),
NextNeed: proto.Int32(s.MatchNextNeed),
// 计步
StepSnId: proto.Int32(sceneEx.stepSnId),
StepNum: int64(sceneEx.stepNum),
@ -529,7 +525,7 @@ func CreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *SceneEx, playe
pack.IsMatch = int32(0)
// 0.普通场 1.锦标赛 2.冠军赛 3.vip专属
if s.IsMatchScene() {
pack.IsMatch = s.MatchType
}
pack.MatchFinals = 0
if s.MatchFinals {

View File

@ -32,7 +32,7 @@ func (this *CSEasterIslandOpHandler) Process(s *netlib.Session, packetid int, da
logger.Logger.Warn("CSEasterIslandOpHandler p.scene == nil")
return nil
}
if scene.GameId != common.GameId_EasterIsland {
if scene.KeyGameDif != common.GameDifEaster {
logger.Logger.Error("CSEasterIslandOpHandler gameId Error ", scene.GameId)
return nil
}

View File

@ -124,12 +124,12 @@ func (this *EasterIslandPlayerData) SavePlayerGameData(gameFreeId string) {
// 黑白名单的限制是否生效
func (this *EasterIslandPlayerData) CheckBlackWriteList(isWin bool) bool {
if isWin && this.BlackLevel > 0 && this.BlackLevel <= 10 {
if rand.Int31n(100) < this.BlackLevel*10 {
if isWin && -this.WBLevel > 0 && -this.WBLevel <= 10 {
if rand.Int31n(100) < -this.WBLevel*10 {
return true
}
} else if !isWin && this.WhiteLevel > 0 && this.WhiteLevel <= 10 {
if rand.Int31n(100) < this.WhiteLevel*10 {
} else if !isWin && this.WBLevel > 0 && this.WBLevel <= 10 {
if rand.Int31n(100) < this.WBLevel*10 {
return true
}
}

View File

@ -234,7 +234,7 @@ func EasterIslandSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *EasterIsla
Creator: proto.Int32(s.Creator),
GameId: proto.Int(s.GameId),
RoomMode: proto.Int(s.GameMode),
Params: s.Params,
Params: common.CopySliceInt64ToInt32(s.Params),
State: proto.Int(s.SceneState.GetState()),
Jackpot: proto.Int64(sceneEx.jackpot.VirtualJK),
GameFreeId: proto.Int32(s.DbGameFree.Id),
@ -523,7 +523,7 @@ func (this *SceneStateEasterIslandStart) OnPlayerOp(s *base.Scene, p *base.Playe
writeBlackTryTimes++
goto WriteBlack
} else if writeBlackTryTimes >= 100 && writeBlackTryTimes != 999 {
logger.Logger.Warnf("EasterIslandWriteBlackTryTimesOver [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, gamePoolCoin, playerEx.BlackLevel, playerEx.WhiteLevel)
logger.Logger.Warnf("EasterIslandWriteBlackTryTimesOver [%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, gamePoolCoin, playerEx.WBLevel)
}
// 奖池水池处理
if spinRes.IsJackpot {

View File

@ -358,7 +358,7 @@ func (this *FishingPlayerData) NewStatics(betCoin, gain int64) {
// end
//黑白名单不参与投入产出统计,影响自己和他人体验
if this.WhiteLevel != 0 || this.WhiteFlag != 0 || this.BlackLevel != 0 || this.GMLevel > 0 {
if this.WBLevel != 0 || this.WhiteFlag != 0 || this.GMLevel > 0 {
return
}

View File

@ -185,7 +185,7 @@ func FishingSendRoomInfo(p *base.Player, sceneEx *FishingSceneData) {
RoomMode: proto.Int(sceneEx.sceneMode),
AgentId: proto.Int32(sceneEx.agentor),
SceneType: proto.Int(sceneEx.sceneType),
Params: sceneEx.GetParams(),
Params: common.CopySliceInt64ToInt32(sceneEx.GetParams()),
NumOfGames: proto.Int(sceneEx.GetNumOfGames()),
State: proto.Int(sceneEx.GetSceneState().GetState()),
TimeOut: proto.Int(sceneEx.GetSceneState().GetTimeout(sceneEx.Scene)),

View File

@ -152,7 +152,7 @@ func FruitsCreateRoomInfoPacket(s *base.Scene, sceneEx *FruitsSceneData, playerE
GameId: proto.Int(s.GameId),
RoomMode: proto.Int(s.SceneMode),
SceneType: proto.Int(s.SceneType),
Params: s.Params,
Params: common.CopySliceInt64ToInt32(s.Params),
NumOfGames: proto.Int(sceneEx.NumOfGames),
State: proto.Int(s.SceneState.GetState()),
ParamsEx: s.DbGameFree.OtherIntParams,

View File

@ -33,7 +33,7 @@ func (this *CSIceAgeOpHandler) Process(s *netlib.Session, packetid int, data int
logger.Logger.Warn("CSIceAgeOpHandler p.scene == nil")
return nil
}
if scene.GameId != common.GameId_IceAge {
if scene.KeyGameDif != common.GameDifIceAge {
logger.Logger.Error("CSIceAgeOpHandler gameId Error ", scene.GameId)
return nil
}

View File

@ -123,12 +123,12 @@ func (this *IceAgePlayerData) SavePlayerGameData(gameFreeId string) {
// 黑白名单的限制是否生效
func (this *IceAgePlayerData) CheckBlackWriteList(isWin bool) bool {
if isWin && this.BlackLevel > 0 && this.BlackLevel <= 10 {
if rand.Int31n(100) < this.BlackLevel*10 {
if isWin && -this.WBLevel > 0 && -this.WBLevel <= 10 {
if rand.Int31n(100) < -this.WBLevel*10 {
return true
}
} else if !isWin && this.WhiteLevel > 0 && this.WhiteLevel <= 10 {
if rand.Int31n(100) < this.WhiteLevel*10 {
} else if !isWin && this.WBLevel > 0 && this.WBLevel <= 10 {
if rand.Int31n(100) < this.WBLevel*10 {
return true
}
}

View File

@ -234,7 +234,7 @@ func IceAgeSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *IceAgeSceneData,
Creator: proto.Int32(s.GetCreator()),
GameId: proto.Int(s.GetGameId()),
RoomMode: proto.Int(s.GetSceneMode()),
Params: s.GetParams(),
Params: common.CopySliceInt64ToInt32(s.GetParams()),
State: proto.Int(s.GetSceneState().GetState()),
Jackpot: proto.Int64(sceneEx.jackpot.VirtualJK),
GameFreeId: proto.Int32(s.GetDBGameFree().GetId()),
@ -543,7 +543,7 @@ func (this *SceneStateIceAgeStart) OnPlayerOp(s *base.Scene, p *base.Player, opc
writeBlackTryTimes++
goto WriteBlack
} else if writeBlackTryTimes >= 100 && writeBlackTryTimes != 999 {
logger.Logger.Warnf("IceAgeWriteBlackTryTimesOver [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, gamePoolCoin, playerEx.BlackLevel, playerEx.WhiteLevel)
logger.Logger.Warnf("IceAgeWriteBlackTryTimesOver [%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, gamePoolCoin, playerEx.WBLevel)
}
///////////测试游戏数据 开始//////////

View File

@ -152,7 +152,7 @@ func RichBlessedCreateRoomInfoPacket(s *base.Scene, sceneEx *RichBlessedSceneDat
GameId: proto.Int(s.GameId),
RoomMode: proto.Int(s.SceneMode),
SceneType: proto.Int(s.SceneType),
Params: s.Params,
Params: common.CopySliceInt64ToInt32(s.Params),
NumOfGames: proto.Int(sceneEx.NumOfGames),
State: proto.Int(s.SceneState.GetState()),
ParamsEx: common.Int64ToInt32(s.DbGameFree.OtherIntParams), //s.GetParamsEx(),

View File

@ -33,7 +33,7 @@ func (h *CSPlayerOpHandler) Process(s *netlib.Session, packetid int, data interf
return nil
}
if !common.IsSmallRocket(scene.GetGameId()) {
if scene.KeyGameDif != common.GameDifRocket {
logger.Logger.Error("CSPlayerOpHandler gameId Error ", scene.GameId)
return nil
}

View File

@ -3,12 +3,13 @@ package smallrocket
import (
"time"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/common"
rule "mongo.games.com/game/gamerule/smallrocket"
"mongo.games.com/game/gamesrv/base"
"mongo.games.com/game/proto"
"mongo.games.com/game/protocol/smallrocket"
"mongo.games.com/goserver/core/logger"
)
type PlayerData struct {
@ -142,7 +143,7 @@ func (this *SceneEx) SamllRocketCreateRoomInfoPacket(s *base.Scene, p *base.Play
RoomId: proto.Int(s.GetSceneId()),
GameId: proto.Int(s.GetGameId()),
RoomMode: proto.Int(s.GetSceneMode()),
Params: this.Params,
Params: common.CopySliceInt64ToInt32(s.Params),
State: proto.Int(s.GetSceneState().GetState()),
TimeOut: proto.Int(s.GetSceneState().GetTimeout(s)),
BombMul: proto.Float32(float32(0)),

View File

@ -3,7 +3,7 @@ package tamquoc
import (
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/netlib"
"mongo.games.com/game/common"
"mongo.games.com/game/gamesrv/base"
"mongo.games.com/game/protocol/tamquoc"
@ -32,7 +32,7 @@ func (this *CSTamQuocOpHandler) Process(s *netlib.Session, packetid int, data in
logger.Logger.Warn("CSTamQuocOpHandler p.scene == nil")
return nil
}
if scene.GameId != common.GameId_TamQuoc {
if scene.KeyGameDif != common.GameDifTamQuoc {
logger.Logger.Error("CSTamQuocOpHandler gameId Error ", scene.GameId)
return nil
}

View File

@ -121,12 +121,12 @@ func (this *TamQuocPlayerData) SavePlayerGameData(gameFreeId string) {
// 黑白名单的限制是否生效
func (this *TamQuocPlayerData) CheckBlackWriteList(isWin bool) bool {
if isWin && this.BlackLevel > 0 && this.BlackLevel <= 10 {
if rand.Int31n(100) < this.BlackLevel*10 {
if isWin && -this.WBLevel > 0 && -this.WBLevel <= 10 {
if rand.Int31n(100) < -this.WBLevel*10 {
return true
}
} else if !isWin && this.WhiteLevel > 0 && this.WhiteLevel <= 10 {
if rand.Int31n(100) < this.WhiteLevel*10 {
} else if !isWin && this.WBLevel > 0 && this.WBLevel <= 10 {
if rand.Int31n(100) < this.WBLevel*10 {
return true
}
}

View File

@ -230,7 +230,7 @@ func TamQuocSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *TamQuocSceneDat
Creator: proto.Int32(s.Creator),
GameId: proto.Int(s.GameId),
RoomMode: proto.Int(s.GameMode),
Params: s.Params,
Params: common.CopySliceInt64ToInt32(s.Params),
State: proto.Int(s.SceneState.GetState()),
Jackpot: proto.Int64(sceneEx.jackpot.VirtualJK),
GameFreeId: proto.Int32(s.GetDBGameFree().GetId()),
@ -526,7 +526,7 @@ func (this *SceneStateTamQuocStart) OnPlayerOp(s *base.Scene, p *base.Player, op
writeBlackTryTimes++
goto WriteBlack
} else if writeBlackTryTimes >= 100 && writeBlackTryTimes != 999 {
logger.Logger.Warnf("TamquocWriteBlackTryTimesOver [%v][%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, gamePoolCoin, playerEx.BlackLevel, playerEx.WhiteLevel)
logger.Logger.Warnf("TamquocWriteBlackTryTimesOver [%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, gamePoolCoin, playerEx.WBLevel)
}
// 奖池水池处理

View File

@ -30,7 +30,7 @@ func (h *CSPlayerOpHandler) Process(s *netlib.Session, packetid int, data interf
logger.Logger.Warn("CSPlayerOpHandler p.scene == nil")
return nil
}
if !common.IsThirteen(scene.GetGameId()) {
if scene.KeyGameDif != common.GameDifThirteen {
logger.Logger.Error("CSPlayerOpHandler gameId Error ", scene.GameId)
return nil
}

View File

@ -174,10 +174,10 @@ func (this *SceneEx) ThirteenWaterCreateRoomInfoPacket(s *base.Scene, p *base.Pl
State: proto.Int(s.GetSceneState().GetState()),
TimeOut: proto.Int(s.GetSceneState().GetTimeout(s)),
DisbandGen: proto.Int(this.GetDisbandGen()),
BaseScore: proto.Int32(this.GetBaseScore()),
BaseScore: int32(this.GetBaseScore()),
LeaveDeduct: this.GetDBGameFree().GetLeaveDeduct(),
LeaveCombat: this.GetDBGameFree().GetLeaveCombat(),
Params: this.Params,
Params: common.CopySliceInt64ToInt32(s.Params),
}
// 玩家信息
for _, playerEx := range this.players {
@ -360,7 +360,7 @@ func (this *SceneEx) ThirteenWaterCreateRoomInfoPacket(s *base.Scene, p *base.Pl
return pack
}
func (this *SceneEx) GetBaseScore() int32 { //游戏底分
func (this *SceneEx) GetBaseScore() int64 { //游戏底分
if this.DbGameFree.FreeMode == 1 {
baseScore := this.GetParam(rule.ParamBaseScore)
if baseScore > 0 {
@ -369,7 +369,7 @@ func (this *SceneEx) GetBaseScore() int32 { //游戏底分
}
if this.DbGameFree != nil {
return this.DbGameFree.GetBaseScore()
return int64(this.DbGameFree.GetBaseScore())
}
return 1
}

View File

@ -1258,7 +1258,7 @@ func (this *StateBilled) OnEnter(s *base.Scene) {
RoomId: int32(sceneEx.SceneId),
RoomRounds: int32(sceneEx.NumOfGames),
RoomType: int32(sceneEx.SceneType),
BaseScore: sceneEx.GetBaseScore(),
BaseScore: int32(sceneEx.GetBaseScore()),
NowRound: int32(sceneEx.NumOfGames),
ClubRate: sceneEx.Scene.PumpCoin,
}

View File

@ -31,7 +31,7 @@ func (this *CSTienLenPlayerOpHandler) Process(s *netlib.Session, packetid int, d
logger.Logger.Warn("CSTienLenPlayerOpHandler p.scene == nil")
return nil
}
if !common.IsTienLen(scene.GetGameId()) {
if scene.KeyGameDif != common.GameDifTienlen {
logger.Logger.Error("CSTienLenPlayerOpHandler gameId Error ", scene.GameId)
return nil
}

View File

@ -1,9 +1,7 @@
package tienlen
import (
"math"
"math/rand"
"mongo.games.com/game/protocol/player"
"strconv"
"time"
@ -11,8 +9,6 @@ import (
"mongo.games.com/game/gamesrv/base"
"mongo.games.com/game/proto"
"mongo.games.com/game/protocol/tienlen"
"mongo.games.com/game/srvdata"
"mongo.games.com/goserver/core/logger"
)
// 玩家身上的额外数据
@ -221,50 +217,3 @@ func (this *TienLenPlayerData) CanUseRecordItem() bool {
}
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

@ -1575,7 +1575,6 @@ func (this *TienLenSceneData) SendHandCardOdds() {
if player.IsGameing() && !player.IsRob {
pack := &tienlen.SCTienLenCardTest{}
pack.Totalout, pack.Totalin = player.TotalOutIn(int32(this.GetGameId()))
pack.LoseRate = player.LoseRate(this.GetGameFreeId(), int32(this.GetGameId()))
if Grades != nil {
pack.Grades = make(map[int32]int32)
for id, grade := range Grades {
@ -2022,3 +2021,36 @@ func (this *TienLenSceneData) SystemCoinOut() int64 {
}
return systemGain
}
func (this *TienLenSceneData) SendFirstGiveTimeItem(p *base.Player) {
if p.IsRobot() {
return
}
if !p.PlayerData.IsTakeExpireItem {
itemID := int32(60001)
itemData := srvdata.PBDB_GameItemMgr.GetData(itemID)
if itemData == nil {
return
}
p.PlayerData.IsTakeExpireItem = true
if p.ItemRecExpireTime <= 0 {
p.ItemRecExpireTime = time.Now().Unix() + int64(itemData.Time)*3600*1
} else {
if p.ItemRecExpireTime >= time.Now().Unix() {
p.ItemRecExpireTime += int64(itemData.Time) * 3600 * 1
} else {
p.ItemRecExpireTime = time.Now().Unix() + int64(itemData.Time)*3600*1
}
}
pack := &tienlen.SCTienLenPlayerFirstGiveItemItem{}
pack.ItemId = itemID
pack.ItemRecExpireTime = p.ItemRecExpireTime
p.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenFirstGiveItemItem), pack)
}
}

View File

@ -399,7 +399,7 @@ func TienLenCreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *TienLen
Creator: proto.Int32(s.GetCreator()),
GameId: proto.Int(s.GetGameId()),
RoomMode: proto.Int(s.GetSceneMode()),
Params: s.GetParams(),
Params: common.CopySliceInt64ToInt32(s.GetParams()),
State: proto.Int32(int32(s.GetSceneState().GetState())),
TimeOut: proto.Int(s.GetSceneState().GetTimeout(s)),
NumOfGames: proto.Int(sceneEx.NumOfGames),
@ -412,15 +412,15 @@ func TienLenCreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *TienLen
RankType: s.GetDBGameFree().GetRankType(),
SceneAdd: s.GetDBGameFree().GetSceneAdd(),
// 比赛场相关
Round: proto.Int32(s.MatchRound),
CurPlayerNum: proto.Int32(s.MatchCurPlayerNum),
NextNeed: proto.Int32(s.MatchNextNeed),
Round: int32(s.MatchRound),
CurPlayerNum: int32(s.MatchCurPlayerNum),
NextNeed: int32(s.MatchNextNeed),
RecordId: sceneEx.recordId,
}
pack.IsMatch = int32(0)
// 0.普通场 1.锦标赛 2.冠军赛 3.vip专属
if s.IsMatchScene() {
pack.IsMatch = s.MatchType
pack.IsMatch = int32(s.MatchType)
}
pack.MatchFinals = 0
if s.MatchFinals {
@ -906,6 +906,9 @@ func (this *SceneHandCardStateTienLen) OnEnter(s *base.Scene) {
playerEx := sceneEx.seats[i]
if playerEx != nil {
if playerEx.IsGameing() {
// 首次进入赠送记牌器
sceneEx.SendFirstGiveTimeItem(playerEx.Player)
playerEx.GameTimes++
sceneEx.curGamingPlayerNum++
if playerEx.IsRob {
@ -1070,6 +1073,7 @@ func (this *ScenePlayerOpStateTienLen) OnPlayerOp(s *base.Scene, p *base.Player,
if this.SceneBaseStateTienLen.OnPlayerOp(s, p, opcode, params) {
return true
}
sceneEx, _ := s.GetExtraData().(*TienLenSceneData)
if sceneEx != nil {
playerEx, _ := p.GetExtraData().(*TienLenPlayerData)
@ -1547,9 +1551,48 @@ func (this *SceneBilledStateTienLen) CanChangeTo(s base.SceneState) bool {
func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
this.SceneBaseStateTienLen.OnEnter(s)
this.BroadcastRoomState(s, this.GetState())
//在这里执行结算
if sceneEx, ok := s.GetExtraData().(*TienLenSceneData); ok {
addItems := func(billData *tienlen.TienLenPlayerGameBilled, sceneTypeScore, vipAdd, vipScore, roleAdd, roleScore, weekCardScore int64) {
// 场次加成配置
if sceneTypeScore > 0 {
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 1,
ItemId: 0,
Addition: sceneEx.GetDBGameFree().GetSceneAdd(),
Score: sceneTypeScore,
})
}
// vip加成
if vipScore > 0 {
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 5,
ItemId: 0,
Addition: int32(vipAdd),
Score: vipScore,
})
}
// 角色加成
if roleScore > 0 {
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 4,
ItemId: 0,
Addition: int32(roleAdd),
Score: roleScore,
})
}
// 周卡加成
if weekCardScore > 0 {
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
}
}
winScore := int64(0)
winRankScore := int64(0)
pack := &tienlen.SCTienLenGameBilled{}
@ -1719,34 +1762,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
}
billData.WinRankScore = billData.RankScore - oldRankScore
if otherScore > 0 {
// 场次加成配置
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 1,
ItemId: 0,
Addition: sceneEx.GetDBGameFree().GetSceneAdd(),
Score: sceneTypeScore,
})
// vip加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 5,
ItemId: 0,
Addition: losePlayer.VipExtra,
Score: vipScore,
})
// 角色加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 4,
ItemId: 0,
Addition: roleAdd,
Score: roleScore,
})
// 周卡加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
addItems(billData, sceneTypeScore, int64(losePlayer.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore)
}
isWin := int32(0)
billCoin := losePlayer.bombScore - gainScore
@ -1881,34 +1897,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
}
billData.WinRankScore = billData.RankScore - oldRankScore
if otherScore > 0 {
// 场次加成配置
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 1,
ItemId: 0,
Addition: sceneEx.GetDBGameFree().GetSceneAdd(),
Score: sceneTypeScore,
})
// vip加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 5,
ItemId: 0,
Addition: lastWinPlayer.VipExtra,
Score: vipScore,
})
// 角色加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 4,
ItemId: 0,
Addition: roleAdd,
Score: roleScore,
})
// 周卡加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
addItems(billData, sceneTypeScore, int64(lastWinPlayer.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore)
}
isWin := int32(0)
billCoin := lastWinPlayer.bombScore - astWinGainScore
@ -2011,34 +2000,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
}
billData.WinRankScore = billData.RankScore - oldRankScore
if otherScore > 0 {
// 场次加成配置
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 1,
ItemId: 0,
Addition: sceneEx.GetDBGameFree().GetSceneAdd(),
Score: sceneTypeScore,
})
// vip加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 5,
ItemId: 0,
Addition: playerEx.VipExtra,
Score: vipScore,
})
// 角色加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 4,
ItemId: 0,
Addition: roleAdd,
Score: roleScore,
})
// 周卡加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
addItems(billData, sceneTypeScore, int64(playerEx.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore)
}
isWin := int32(0)
billCoin := playerEx.bombScore + gainScore
@ -2135,34 +2097,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
}
billData.WinRankScore = billData.RankScore - oldRankScore
if otherScore > 0 {
// 场次加成配置
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 1,
ItemId: 0,
Addition: sceneEx.GetDBGameFree().GetSceneAdd(),
Score: sceneTypeScore,
})
// vip加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 5,
ItemId: 0,
Addition: playerEx.VipExtra,
Score: vipScore,
})
// 角色加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 4,
ItemId: 0,
Addition: roleAdd,
Score: roleScore,
})
// 周卡加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
addItems(billData, sceneTypeScore, int64(playerEx.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore)
}
isWin := int32(0)
billCoin := playerEx.bombScore + gainScore
@ -2306,34 +2241,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
}
billData.WinRankScore = billData.RankScore - oldRankScore
if otherScore > 0 {
// 场次加成配置
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 1,
ItemId: 0,
Addition: sceneEx.GetDBGameFree().GetSceneAdd(),
Score: sceneTypeScore,
})
// vip加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 5,
ItemId: 0,
Addition: playerEx.VipExtra,
Score: vipScore,
})
// 角色加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 4,
ItemId: 0,
Addition: roleAdd,
Score: roleScore,
})
// 周卡加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
addItems(billData, sceneTypeScore, int64(playerEx.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore)
}
isWin := int32(0)
@ -2456,34 +2364,9 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
AddScore: otherScore,
TianHu: playerEx.tianHu,
}
// 场次加成配置
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 1,
ItemId: 0,
Addition: sceneEx.GetDBGameFree().GetSceneAdd(),
Score: sceneTypeScore,
})
// vip加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 5,
ItemId: 0,
Addition: playerEx.VipExtra,
Score: vipScore,
})
// 角色加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 4,
ItemId: 0,
Addition: roleAdd,
Score: roleScore,
})
// 周卡加成
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 6,
ItemId: 0,
Addition: 5,
Score: weekCardScore,
})
if otherScore > 0 {
addItems(billData, sceneTypeScore, int64(playerEx.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore)
}
isWin := int32(0)
billCoin := playerEx.bombScore + gainScore
@ -2580,9 +2463,9 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
}
// 刷新存钱罐
playerEx, _ := s.GetPlayer(o_player.UserId).GetExtraData().(*TienLenPlayerData)
playerEx := s.GetPlayer(o_player.UserId)
if playerEx != nil && (!(s.IsFreePublic() || s.IsMatchScene())) {
playerEx.UpdatePigbankCoin(o_player.GainCoin)
playerEx.UpdatePigBankCoin(o_player.GainCoin)
}
validFlow := totalin + totalout

View File

@ -243,6 +243,8 @@ func init() {
admin.MyAdminApp.Route("/api/player/update_tel", WorldSrvApi)
// 删除账号
admin.MyAdminApp.Route("/api/player/delete", WorldSrvApi)
//添加道具
admin.MyAdminApp.Route("/api/player/AddItem", WorldSrvApi)
}
func Stats() map[string]ApiStats {

View File

@ -1,6 +1,8 @@
package model
import (
"strconv"
"mongo.games.com/game/protocol/shop"
"mongo.games.com/game/protocol/webapi"
)
@ -60,11 +62,32 @@ type ShopInfo struct {
AmountFinal int64 // 实际获得数量
}
func (this *ShopInfo) GetName() string {
return this.Name + "|" + strconv.Itoa(int(this.Id))
}
func (this *ShopInfo) GetItems() []ItemInfo {
var ret []ItemInfo
if this.ItemId > 0 {
ret = append(ret, ItemInfo{
ItemId: this.ItemId,
ItemNum: this.Amount,
})
}
for _, v := range this.AddItemInfo {
ret = append(ret, ItemInfo{
ItemId: v.ItemId,
ItemNum: v.ItemNum,
})
}
return ret
}
type AllConfig struct {
// 平台配置
Platform *webapi.Platform
// 客户端游戏入口开关
EntrySwitch *webapi.EntrySwitch
EntrySwitch map[int32]*webapi.EntrySwitch
// 公告
CommonNotices *webapi.CommonNoticeList
// 七日签到
@ -92,6 +115,8 @@ type AllConfig struct {
*webapi.ExchangeShopList
// 商店
ShopInfos map[int32]*ShopInfo // 商品id:商品信息
// 渠道开关
ChannelSwitch map[int32]*webapi.ChannelSwitchConfig
}
type GlobalConfig struct {
@ -117,7 +142,9 @@ func (cm *ConfigMgr) GetConfig(platform string) *AllConfig {
if !ok {
c = &AllConfig{
// todo 初始化默认值
ShopInfos: make(map[int32]*ShopInfo),
EntrySwitch: make(map[int32]*webapi.EntrySwitch),
ShopInfos: make(map[int32]*ShopInfo),
ChannelSwitch: make(map[int32]*webapi.ChannelSwitchConfig),
}
cm.platform[platform] = c
}

View File

@ -1,9 +1,10 @@
package model
import (
"time"
"github.com/globalsign/mgo/bson"
"mongo.games.com/goserver/core/logger"
"time"
)
type FriendApply struct {
@ -43,7 +44,7 @@ func UpsertFriendApply(platform string, snid int32, fa *FriendApply) *FriendAppl
logger.Logger.Error("model.UpsertFriendApply rpcCli == nil")
return nil
}
if fa.ApplySnids == nil || len(fa.ApplySnids) == 0 {
if len(fa.ApplySnids) == 0 {
DelFriendApply(platform, snid)
return nil
}
@ -52,8 +53,8 @@ func UpsertFriendApply(platform string, snid int32, fa *FriendApply) *FriendAppl
SnId: snid,
FA: fa,
}
var ret *FriendApplyRet
err := rpcCli.CallWithTimeout("FriendApplySvc.UpsertFriendApply", args, &ret, time.Second*30)
ret := &FriendApplyRet{}
err := rpcCli.CallWithTimeout("FriendApplySvc.UpsertFriendApply", args, ret, time.Second*30)
if err != nil {
logger.Logger.Warn("UpsertFriendApply error:", err)
return nil
@ -70,14 +71,12 @@ func QueryFriendApplyBySnid(platform string, snid int32) (fa *FriendApply, err e
Platform: platform,
SnId: snid,
}
var ret *FriendApplyRet
err = rpcCli.CallWithTimeout("FriendApplySvc.QueryFriendApplyByKey", args, &ret, time.Second*30)
ret := &FriendApplyRet{}
err = rpcCli.CallWithTimeout("FriendApplySvc.QueryFriendApplyByKey", args, ret, time.Second*30)
if err != nil {
logger.Logger.Warn("QueryFriendApplyBySnid error:", err)
}
if ret != nil {
fa = ret.FA
}
fa = ret.FA
return
}
@ -96,3 +95,84 @@ func DelFriendApply(platform string, snid int32) {
}
return
}
//===========================
// Apply List
//===========================
type ApplyList struct {
//Id bson.ObjectId `bson:"_id"`
SnId int32
List []int32
}
func NewApplyList(snId int32) *ApplyList {
return &ApplyList{
SnId: snId,
}
}
type ApplyListReq struct {
Platform string
Data *ApplyList
}
type ApplyListRes struct {
Data *ApplyList
}
func UpsertApplyList(platform string, data *ApplyList) {
if rpcCli == nil {
logger.Logger.Error("model.UpsertApplyList rpcCli == nil")
return
}
if len(data.List) == 0 {
DelFriendApplyList(platform, data.SnId)
return
}
args := &ApplyListReq{
Platform: platform,
Data: data,
}
ret := &ApplyListRes{}
err := rpcCli.CallWithTimeout("FriendApplySvc.UpsertApplyList", args, ret, time.Second*30)
if err != nil {
logger.Logger.Warn("UpsertApplyList error:", err)
return
}
return
}
func QueryFriendApplyListBySnid(platform string, snid int32) (data *ApplyList, err error) {
if rpcCli == nil {
logger.Logger.Error("model.QueryFriendApplyListBySnid rpcCli == nil")
return
}
args := &FriendApplyByKey{
Platform: platform,
SnId: snid,
}
ret := &ApplyListRes{}
err = rpcCli.CallWithTimeout("FriendApplySvc.QueryFriendApplyListBySnid", args, ret, time.Second*30)
if err != nil {
logger.Logger.Warn("QueryFriendApplyListBySnid error:", err)
}
data = ret.Data
return
}
func DelFriendApplyList(platform string, snid int32) {
if rpcCli == nil {
logger.Logger.Error("model.DelFriendApplyList rpcCli == nil")
return
}
args := &FriendApplyByKey{
Platform: platform,
SnId: snid,
}
err := rpcCli.CallWithTimeout("FriendApplySvc.DelFriendApplyList", args, nil, time.Second*30)
if err != nil {
logger.Logger.Warn("DelFriendApplyList error:", err)
}
return
}

View File

@ -20,14 +20,14 @@ type FriendRecord struct {
GameId int32 //游戏场次
BaseScore int32 //底分
BillCoin int64 //输赢分(税后)
MatchType int32
MatchType int64
Ts int64
}
func NewFriendRecordLog() *FriendRecord {
return &FriendRecord{LogId: bson.NewObjectId()}
}
func NewFriendRecordLogEx(platform string, snid, isWin, gameId, baseScore int32, billCoin int64, matchType int32) *FriendRecord {
func NewFriendRecordLogEx(platform string, snid, isWin, gameId, baseScore int32, billCoin int64, matchType int64) *FriendRecord {
fri := NewFriendRecordLog()
fri.Platform = platform
fri.SnId = snid

View File

@ -42,7 +42,7 @@ type GameDetailedLog struct {
Platform string //平台id
Channel string //渠道
Promoter string //推广员
MatchId int32 //比赛ID
MatchId int64 //比赛ID
SceneId int32 //场景ID
GameMode int32 //游戏类型
GameFreeid int32 //游戏类型房间号

View File

@ -87,6 +87,7 @@ type GameParam struct {
RankInviteMaxNum int32 // 邀请排行榜最大人数
TestActSwitch bool // 开启所有活动开关
RankPlayerLevelMaxNum int //等级榜最大人数
CloseChannelSwitch bool //关闭渠道开关功能
}
var GameParamPath = "../data/gameparam.json"

View File

@ -49,8 +49,8 @@ type GamePlayerListLog struct {
RoomType int32 //房间类型
GameDif string //游戏标识
GameClass int32 //游戏类型 1棋牌 2电子 3百人 4捕鱼 5视讯 6彩票 7体育
MatchId int32
MatchType int32 //0.普通场 1.锦标赛 2.冠军赛 3.vip专属
MatchId int64
MatchType int64 //0.普通场 1.锦标赛 2.冠军赛 3.vip专属
Ts int32
IsFree bool //拉霸专用 是否免费
WinSmallGame int64 //拉霸专用 小游戏奖励
@ -63,7 +63,7 @@ func NewGamePlayerListLog() *GamePlayerListLog {
}
func NewGamePlayerListLogEx(snid int32, gamedetailedlogid string, platform, channel, promoter, packageTag string, gameid, baseScore,
sceneid, gamemode, gamefreeid int32, totalin, totalout int64, clubId int32, clubRoom string, taxCoin, pumpCoin int64, roomType int32,
betAmount, winAmountNoAnyTax int64, key, name string, gameClass int32, isFirst bool, matchid, matchType int32,
betAmount, winAmountNoAnyTax int64, key, name string, gameClass int32, isFirst bool, matchid, matchType int64,
isFree bool, winSmallGame, winTotal int64) *GamePlayerListLog {
cl := NewGamePlayerListLog()
cl.SnId = snid

View File

@ -53,6 +53,7 @@ type InviteScore struct {
Tp int32 // 积分类型 common.InviteScoreType~
Score int64 // 积分
Ts int64 // 时间戳
Money int64 // 充值金额
}
type InviteScoreReq struct {
@ -61,16 +62,18 @@ type InviteScoreReq struct {
}
type InviteScoreRet struct {
Score int64
ZScore int64
Score int64 // 包含扣积分
ZScore int64 // 只包含大于0的积分
Money int64 // 充值金额
}
// GetInviteScore 查询总积分
// 下级玩家所有积分
func GetInviteScore(plt string, snid int32) (int64, int64, error) {
// 返回 包含扣积分只包含大于0的积分充值金额
func GetInviteScore(plt string, snid int32) (int64, int64, int64, error) {
if rpcCli == nil {
logger.Logger.Warnf("rpcCli is nil")
return 0, 0, errors.New("rpcCli is nil")
return 0, 0, 0, errors.New("rpcCli is nil")
}
req := &InviteScoreReq{
@ -81,10 +84,10 @@ func GetInviteScore(plt string, snid int32) (int64, int64, error) {
err := rpcCli.CallWithTimeout("BindScoreSvc.GetInviteScore", req, ret, time.Second*30)
if err != nil {
logger.Logger.Warnf("GetInviteScore err:%v", err)
return 0, 0, err
return 0, 0, 0, err
}
return ret.Score, ret.ZScore, err
return ret.Score, ret.ZScore, ret.Money, err
}
// SaveInviteScore 保存积分变更记录

View File

@ -1,41 +1,61 @@
package model
import (
"github.com/globalsign/mgo/bson"
"time"
"github.com/globalsign/mgo/bson"
)
var (
ItemLogDBName = "log"
ItemLogCollName = "log_itemlog"
TopicProbeItemLogAck = "ack_itemlog"
ItemLogDBName = "log"
ItemLogCollName = "log_itemlog"
)
type ItemLog struct {
LogId bson.ObjectId `bson:"_id"`
Platform string //平台
SnId int32 //玩家id
LogType int32 //记录类型 0.获取 1.消耗
ItemId int32 //道具id
ItemName string //道具名称
Count int64 //个数
CreateTs int64 //记录时间
Remark string //备注
LogId bson.ObjectId `bson:"_id"`
Platform string //平台
SnId int32 //玩家id
LogType int32 //记录类型 0.获取 1.消耗
ItemId int32 //道具id
ItemName string //道具名称
Count int64 //个数
CreateTs int64 //记录时间
Remark string //备注
TypeId int32 // 变化类型
GameId int32 // 游戏id,游戏中获得时有值
GameFreeId int32 // 场次id,游戏中获得时有值
}
func NewItemLog() *ItemLog {
log := &ItemLog{LogId: bson.NewObjectId()}
return log
}
func NewItemLogEx(platform string, snId, logType, itemId int32, itemName string, count int64, remark string) *ItemLog {
type ItemParam struct {
Platform string // 平台
SnId int32 // 玩家id
LogType int32 // 记录类型 0.获取 1.消耗
ItemId int32 // 道具id
ItemName string // 道具名称
Count int64 // 个数
Remark string // 备注
TypeId int32 // 变化类型
GameId int64 // 游戏id,游戏中获得时有值
GameFreeId int64 // 场次id,游戏中获得时有值
}
func NewItemLogEx(param ItemParam) *ItemLog {
itemLog := NewItemLog()
itemLog.Platform = platform
itemLog.SnId = snId
itemLog.LogType = logType
itemLog.ItemId = itemId
itemLog.ItemName = itemName
itemLog.Count = count
itemLog.Platform = param.Platform
itemLog.SnId = param.SnId
itemLog.LogType = param.LogType
itemLog.ItemId = param.ItemId
itemLog.ItemName = param.ItemName
itemLog.Count = param.Count
itemLog.CreateTs = time.Now().Unix()
itemLog.Remark = remark
itemLog.Remark = param.Remark
itemLog.TypeId = param.TypeId
itemLog.GameId = int32(param.GameId)
itemLog.GameFreeId = int32(param.GameFreeId)
return itemLog
}

View File

@ -7,32 +7,15 @@ import (
"github.com/globalsign/mgo/bson"
)
const (
MATCHPLAYER_FLAG_ISROB uint = iota //机器人
MATCHPLAYER_FLAG_ISFIRST //首次参赛
MATCHPLAYER_FLAG_ISNEWBIE //新人
MATCHPLAYER_FLAG_ISQUIT //退赛
MATCHPLAYER_FLAG_SIGNUP_USEFREE //免费报名
MATCHPLAYER_FLAG_SIGNUP_USETICKET //使用报名券报名
MATCHPLAYER_FLAG_SIGNUP_USECOIN //使用金币报名
)
// 比赛各阶段时间消耗
type MatchProcessTimeSpend struct {
Name string //赛程名称
MMType int32 //赛制类型
Spend int32 //用时,单位:秒
}
// 比赛参赛人员信息
type MatchPlayer struct {
SnId int32 //玩家id
Flag int32 //玩家类型,二进制 第1位:1是机器人,0玩家 第2位:1首次参加 0:非首次参加 第3位:1新人 0:老玩家 第4位:1退赛 0未退赛 第5位: 1免费报名 第6位: 1使用入场券报名 第7位: 1使用金币报名
Spend int32 //报名消耗
Gain int32 //获得奖励
Rank int32 //名次
WaitTime int32 //从报名到开始比赛的等待时间 单位:秒
MatchTime int32 //比赛中用时 从开始比赛到比赛结束总的用时 单位:秒
SnId int32 //玩家id
CostCoin int64 //报名消耗金币
CostDiamond int64 //报名消耗钻石
Coin int64 //比赛获得金币
Diamond int64 //比赛获得钻石
Item map[int32]int64 //比赛获得物品id
Rank int32 //名次
}
// 比赛牌局记录
@ -47,35 +30,14 @@ type MatchGameLog struct {
// 比赛详情
type MatchLog struct {
Id bson.ObjectId `bson:"_id"`
Platform string //平台编号
MatchId int32 //比赛编号
MatchName string //比赛名称
GameFreeId int32 //游戏类型
StartTime time.Time //开始时间
EndTime time.Time //结束时间
Players []*MatchPlayer //参赛人员数据
TimeSpend []*MatchProcessTimeSpend //赛程用时
GameLogs []*MatchGameLog //牌局记录
}
func (ml *MatchLog) AppendMatchProcess(name string, mmtype int32, spend int32) {
ml.TimeSpend = append(ml.TimeSpend, &MatchProcessTimeSpend{
Name: name,
MMType: mmtype,
Spend: spend,
})
}
func (ml *MatchLog) AppendGameLog(name string, gamelogId string, processIdx, numOfGame, spendTime int32, snids []int32) {
ml.GameLogs = append(ml.GameLogs, &MatchGameLog{
Name: name,
GameLogId: gamelogId,
ProcessIdx: processIdx,
NumOfGame: numOfGame,
SpendTime: spendTime,
SnIds: snids,
})
Id bson.ObjectId `bson:"_id"`
Platform string //平台编号
MatchId int32 //比赛编号
MatchName string //比赛名称
GameFreeId int32 //游戏类型
StartTime time.Time //开始时间
EndTime time.Time //结束时间
Players []*MatchPlayer //参赛人员数据
}
var (

View File

@ -320,108 +320,108 @@ type MatchFreeSignupRec struct {
}
type PlayerData struct {
Id bson.ObjectId `bson:"_id"`
AccountId string //账号id
AccountType int32 //账号类型
SnId int32 //数字唯一id
NiceId int32 //靓号
Name string //名字
Remark string //备注
Platform string //平台
Channel string //渠道信息
DeviceOS string //设备操作系统
DeviceId string //设备id
PackageID string //推广包标识 对应客户端的packagetag
Package string //包信息 android:包名 ios:bundleid
IsRob bool //是否是机器人
Head int32 //头像
HeadUrl string //头像
Sex int32 //性别
HeadOutLine int32 //头像框
VIP int32 //VIP帐号 等级
GMLevel int32 //GM等级
WinTimes int32 //胜利次数
FailTimes int32 //失败次数
DrawTimes int32 //平局次数
WinCoin int64 //总赢钱数量(税前)
FailCoin int64 //总输钱数量
TaxCoin int64 //总税收
Tel string //电话号码
Ip string //最后登录ip地址
RegIp string //注册ip地址
City string //城市
Params string //其他参数
AlipayAccount string //支付宝账号
AlipayAccName string //支付宝实名
Bank string //绑定的银行名称
BankAccount string //绑定的银行账号
BankAccName string //绑定的银行账号
Coin int64 //金豆
CoinPayTs int64 //金豆冲账时间戳
CoinPayTotal int64 //在线总充值金额
MoneyPayTotal int64 //在线总充值金额(实充)
CoinExchangeTotal int64 //总提现金额 兑换
SafeBoxCoin int64 //保险箱金币
SafeBoxPassword string //保险箱密码
Diamond int64 //钻石
InviterId int32 //邀请人Id
InviterName string //邀请人名称
InviterHead int32 //邀请人头像
BeUnderAgentCode string //隶属经销商(推广人)
SubBeUnderAgentCode string //经销商子id
Flags int64 //标记
GameCoinTs int64 //游服金币对账时间戳
Ver int32 //数据版本号
CheckSum uint32 //校验码(预防暴库修改数据)
UpgradeTime time.Time //升级账号时间,绑定手机号时间
CreateTime time.Time //创建时间
LastLoginTime time.Time //最后登陆时间
LastLogoutTime time.Time //缓存数据清除时间,最后数据持久化时间
AllowSpeakTime int64 //允许下次发言的时间戳
AgentType int32 //代理类型 0:普通用户 其它为代理
GameTax int64 //总游戏税收
SafeBoxCoinTs int64 //保险箱冲账时间戳
WhiteFlag int32 //特殊白名单标记
WBCoinTotalOut int64 //加入黑白名单后玩家总产出
WBCoinTotalIn int64 //加入黑白名单后玩家总投入
WBCoinLimit int64 //黑白名单输赢额度,额度变为0时自动解除黑白名单
WBMaxNum int32 //黑白名单最大干预次数
WBTime time.Time //黑白名单操作时间
WBState int32 //调控状态
TotalCoin int64 //总金币
PromoterTree int32 //推广树信息
TotalConvertibleFlow int64 //玩家流水总额 默认1:1 //流水统计使用
TotalFlow int64 //历史总流水
CanExchangeBeforeRecharge int64 //充值之前可兑换金额 //流水统计使用
LastRechargeWinCoin int64 //充值后流水
BlacklistType int32 //黑名单作用域和后台一样都是采用位标记的表示形式 // 0是不限制 第1位是游戏登录 第2位是兑换 第3位是充值注意这个地方是黑名单管理的作用域+1 //主要是为了在mgo没有设置黑名单类型的时候默认是不限制的
ForceVip int32 //强制VIP等级通过后台设置如果设置了当前值就不再通过paytotal计算vip等级
LastExchangeTime int64 //最后兑换时间
LastExchangeOrder string //最后的赠与订单
LogicLevels []int32 //用户分层信息
AutomaticTags []int32 //用户自动化标记
TelephonePromoter int32 //电销推广员标识,用于电销标记
TelephoneCallNum int32 //电销次数
Ticket int64 //比赛券
TicketPayTs int64 //比赛券冲账时间点
TicketTotal int64 //累计总获得比赛券数量
TicketTotalDel int64 //累计清理掉的数量
Grade int64 //积分
TagKey int32 //包标识关键字
LoginTimes int //用户登录次数
YesterdayGameData *PlayerGameCtrlData //昨日游戏统计数据
TodayGameData *PlayerGameCtrlData //今日游戏统计数据
IsFoolPlayer map[string]bool //每个游戏是否是新手玩家
TotalGameData map[int][]*PlayerGameTotal //统计数据 1.棋牌 2.电子 3.捕鱼 4.视讯 5.彩票 6.体育 7.个人房间 8.俱乐部房间 9.三方游戏
GDatas map[string]*PlayerGameInfo //玩家游戏统计数据 key:gameFreeId, key:gameid
MarkInfo string //用来备注玩家信息
DeviceInfo string //设备信息
WBLevel int32 //黑白名单 白:[1,10] 黑:[-1,-10]
ShopTotal map[int32]*ShopTotal //key为商品id
ShopLastLookTime map[int32]int64 //商品上一次的观看时间
Roles *RolePetInfo //人物
Pets *RolePetInfo //宠物
WelfData *WelfareData //活动数据
Id bson.ObjectId `bson:"_id"`
AccountId string //账号id
AccountType int32 //账号类型
SnId int32 //数字唯一id
NiceId int32 //靓号
Name string //名字
Remark string //备注
Platform string //平台
Channel string //渠道信息
DeviceOS string //设备操作系统
DeviceId string //设备id
PackageID string //推广包标识 对应客户端的packagetag
Package string //包信息 android:包名 ios:bundleid
IsRob bool //是否是机器人
Head int32 //头像
HeadUrl string //头像
Sex int32 //性别
HeadOutLine int32 //头像框
VIP int32 //VIP帐号 等级
GMLevel int32 //GM等级
WinTimes int32 //胜利次数
FailTimes int32 //失败次数
DrawTimes int32 //平局次数
WinCoin int64 //总赢钱数量(税前)
FailCoin int64 //总输钱数量
TaxCoin int64 //总税收
Tel string //电话号码
Ip string //最后登录ip地址
RegIp string //注册ip地址
City string //城市
Params string //其他参数
AlipayAccount string //支付宝账号
AlipayAccName string //支付宝实名
Bank string //绑定的银行名称
BankAccount string //绑定的银行账号
BankAccName string //绑定的银行账号
Coin int64 //金豆
CoinPayTs int64 //金豆冲账时间戳
CoinPayTotal int64 //在线总充值金额
MoneyPayTotal int64 //在线总充值金额(实充)
CoinExchangeTotal int64 //总提现金额 兑换
SafeBoxCoin int64 //保险箱金币
SafeBoxPassword string //保险箱密码
Diamond int64 //钻石
InviterId int32 //邀请人Id
InviterName string //邀请人名称
InviterHead int32 //邀请人头像
BeUnderAgentCode string //隶属经销商(推广人)
SubBeUnderAgentCode string //经销商子id
Flags int64 //标记
GameCoinTs int64 //游服金币对账时间戳
Ver int32 //数据版本号
CheckSum uint32 //校验码(预防暴库修改数据)
UpgradeTime time.Time //升级账号时间,绑定手机号时间
CreateTime time.Time //创建时间
LastLoginTime time.Time //最后登陆时间
LastLogoutTime time.Time //缓存数据清除时间,最后数据持久化时间
AllowSpeakTime int64 //允许下次发言的时间戳
AgentType int32 //代理类型 0:普通用户 其它为代理
GameTax int64 //总游戏税收
SafeBoxCoinTs int64 //保险箱冲账时间戳
WhiteFlag int32 //特殊白名单标记
WBCoinTotalOut int64 //加入黑白名单后玩家总产出
WBCoinTotalIn int64 //加入黑白名单后玩家总投入
WBCoinLimit int64 //黑白名单输赢额度,额度变为0时自动解除黑白名单
WBMaxNum int32 //黑白名单最大干预次数
WBTime time.Time //黑白名单操作时间
WBState int32 //调控状态
TotalCoin int64 //总金币
PromoterTree int32 //推广树信息
TotalConvertibleFlow int64 //玩家流水总额 默认1:1 //流水统计使用
TotalFlow int64 //历史总流水
CanExchangeBeforeRecharge int64 //充值之前可兑换金额 //流水统计使用
LastRechargeWinCoin int64 //充值后流水
BlacklistType int32 //黑名单作用域和后台一样都是采用位标记的表示形式 // 0是不限制 第1位是游戏登录 第2位是兑换 第3位是充值注意这个地方是黑名单管理的作用域+1 //主要是为了在mgo没有设置黑名单类型的时候默认是不限制的
ForceVip int32 //强制VIP等级通过后台设置如果设置了当前值就不再通过paytotal计算vip等级
LastExchangeTime int64 //最后兑换时间
LastExchangeOrder string //最后的赠与订单
LogicLevels []int32 //用户分层信息
AutomaticTags []int32 //用户自动化标记
TelephonePromoter int32 //电销推广员标识,用于电销标记
TelephoneCallNum int32 //电销次数
Ticket int64 //比赛券
TicketPayTs int64 //比赛券冲账时间点
TicketTotal int64 //累计总获得比赛券数量
TicketTotalDel int64 //累计清理掉的数量
Grade int64 //积分
TagKey int32 //包标识关键字
LoginTimes int //用户登录次数
YesterdayGameData *PlayerGameCtrlData //昨日游戏统计数据
TodayGameData *PlayerGameCtrlData //今日游戏统计数据
IsFoolPlayer map[string]bool //每个游戏是否是新手玩家
//TotalGameData map[int][]*PlayerGameTotal //统计数据 1.棋牌 2.电子 3.捕鱼 4.视讯 5.彩票 6.体育 7.个人房间 8.俱乐部房间 9.三方游戏
GDatas map[string]*PlayerGameInfo //玩家游戏统计数据 key:gameFreeId, key:gameid
MarkInfo string //用来备注玩家信息
DeviceInfo string //设备信息
WBLevel int32 //黑白名单 白:[1,10] 黑:[-1,-10]
ShopTotal map[int32]*ShopTotal //key为商品id
ShopLastLookTime map[int32]int64 //商品上一次的观看时间
Roles *RolePetInfo //人物
Pets *RolePetInfo //宠物
WelfData *WelfareData //活动数据
*SignData
VipMatchTimes int32 //VIP比赛场参与次数
ChessGrade int64 // 国际象棋游戏积分
@ -454,8 +454,10 @@ type PlayerData struct {
InviteScore int64 // 邀请积分
OtherCode string // 绑定的邀请码
WeekCardTime map[int32]int64 // 周卡结束时间 key:类型 value结束时间
WeekCardAward map[int32]bool //周卡奖励领取状态false-未领取true已领取
WeekCardAward map[int32]bool // 周卡奖励领取状态false-未领取true已领取
ItemRecExpireTime int64 // 记牌器到期时间
RequestAddFriend map[int32]int64 // 玩家申请好友记录
IsTakeExpireItem bool // 是否领取
}
// 七日签到数据
@ -474,8 +476,9 @@ type TaskData struct {
}
type PigBankData struct {
TakeTimes int32
BankCoin int64
TakeTimes int32
BankCoin int64
DayBuyTimes int32
}
type WelfareData struct {
@ -767,18 +770,19 @@ func NewPlayerData(acc string, name string, id int32, channel, platform string,
WBCoinLimit: 0,
YesterdayGameData: NewPlayerGameCtrlData(),
TodayGameData: NewPlayerGameCtrlData(),
TotalGameData: make(map[int][]*PlayerGameTotal),
GDatas: make(map[string]*PlayerGameInfo),
TagKey: tagkey,
ShopTotal: make(map[int32]*ShopTotal),
ShopLastLookTime: make(map[int32]int64),
IsFoolPlayer: make(map[string]bool),
//TotalGameData: make(map[int][]*PlayerGameTotal),
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}, //默认炮台
UnMaxPower: 10, //初始化炮倍最小倍数
WeekCardTime: make(map[int32]int64),
WeekCardAward: make(map[int32]bool),
WelfData: NewWelfareData(),
PowerList: []int32{1}, //默认炮台
UnMaxPower: 10, //初始化炮倍最小倍数
WeekCardTime: make(map[int32]int64),
WeekCardAward: make(map[int32]bool),
WelfData: NewWelfareData(),
RequestAddFriend: make(map[int32]int64),
}
if tel != "" {
@ -820,13 +824,13 @@ func NewPlayerDataThird(acc string, name, headUrl string, id int32, channel, pla
PackageID: packTag,
YesterdayGameData: NewPlayerGameCtrlData(),
TodayGameData: NewPlayerGameCtrlData(),
TotalGameData: make(map[int][]*PlayerGameTotal),
GDatas: make(map[string]*PlayerGameInfo),
TagKey: tagkey,
ShopTotal: make(map[int32]*ShopTotal),
ShopLastLookTime: make(map[int32]int64),
AccountType: accountType,
DeviceOS: deviceOS,
//TotalGameData: make(map[int][]*PlayerGameTotal),
GDatas: make(map[string]*PlayerGameInfo),
TagKey: tagkey,
ShopTotal: make(map[int32]*ShopTotal),
ShopLastLookTime: make(map[int32]int64),
AccountType: accountType,
DeviceOS: deviceOS,
}
pd.InitNewData(params)

View File

@ -149,6 +149,7 @@ const (
FriendPacketID_PACKET_SCFriendUnreadData FriendPacketID = 2711 // 未读消息数据
FriendPacketID_PACKET_CSFuzzyQueryPlayer FriendPacketID = 2712 //根据id或者昵称查询玩家
FriendPacketID_PACKET_SCFuzzyQueryPlayer FriendPacketID = 2713
FriendPacketID_PACKET_SCRequestAddFriend FriendPacketID = 2714 //申请记录
)
// Enum value maps for FriendPacketID.
@ -169,6 +170,7 @@ var (
2711: "PACKET_SCFriendUnreadData",
2712: "PACKET_CSFuzzyQueryPlayer",
2713: "PACKET_SCFuzzyQueryPlayer",
2714: "PACKET_SCRequestAddFriend",
}
FriendPacketID_value = map[string]int32{
"PACKET_FriendPACKET_ZERO": 0,
@ -186,6 +188,7 @@ var (
"PACKET_SCFriendUnreadData": 2711,
"PACKET_CSFuzzyQueryPlayer": 2712,
"PACKET_SCFuzzyQueryPlayer": 2713,
"PACKET_SCRequestAddFriend": 2714,
}
)
@ -1525,6 +1528,54 @@ func (x *SCFuzzyQueryPlayer) GetPlayers() []*PlayerInfo {
return nil
}
//PACKET_SCRequestAddFriend
type SCRequestAddFriend struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
RequestAddFriend []int32 `protobuf:"varint,1,rep,packed,name=RequestAddFriend,proto3" json:"RequestAddFriend,omitempty"`
}
func (x *SCRequestAddFriend) Reset() {
*x = SCRequestAddFriend{}
if protoimpl.UnsafeEnabled {
mi := &file_friend_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SCRequestAddFriend) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SCRequestAddFriend) ProtoMessage() {}
func (x *SCRequestAddFriend) ProtoReflect() protoreflect.Message {
mi := &file_friend_proto_msgTypes[19]
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 SCRequestAddFriend.ProtoReflect.Descriptor instead.
func (*SCRequestAddFriend) Descriptor() ([]byte, []int) {
return file_friend_proto_rawDescGZIP(), []int{19}
}
func (x *SCRequestAddFriend) GetRequestAddFriend() []int32 {
if x != nil {
return x.RequestAddFriend
}
return nil
}
var File_friend_proto protoreflect.FileDescriptor
var file_friend_proto_rawDesc = []byte{
@ -1670,87 +1721,93 @@ var file_friend_proto_rawDesc = []byte{
0x01, 0x28, 0x09, 0x52, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
0x74, 0x12, 0x2c, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x12, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x50, 0x6c, 0x61, 0x79,
0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x2a,
0xf3, 0x05, 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, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
0x5f, 0x4e, 0x6f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0xe9, 0x07, 0x12, 0x1b, 0x0a, 0x16,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x41, 0x6c, 0x72, 0x65,
0x61, 0x64, 0x79, 0x41, 0x64, 0x64, 0x10, 0xea, 0x07, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79,
0x41, 0x70, 0x70, 0x6c, 0x79, 0x10, 0xeb, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4d, 0x61,
0x78, 0x10, 0xec, 0x07, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x69,
0x65, 0x6e, 0x64, 0x5f, 0x44, 0x65, 0x73, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4d, 0x61,
0x78, 0x10, 0xed, 0x07, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x69,
0x65, 0x6e, 0x64, 0x5f, 0x44, 0x65, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x69,
0x65, 0x6e, 0x64, 0x4d, 0x61, 0x78, 0x10, 0xee, 0x07, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x4e,
0x6f, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x10, 0xef, 0x07, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f,
0x4e, 0x6f, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0xf0, 0x07, 0x12, 0x24, 0x0a, 0x1f,
0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22,
0x40, 0x0a, 0x12, 0x53, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52,
0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e,
0x64, 0x2a, 0xf3, 0x05, 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, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x69, 0x65,
0x6e, 0x64, 0x5f, 0x4e, 0x6f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0xe9, 0x07, 0x12, 0x1b,
0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x41, 0x6c,
0x72, 0x65, 0x61, 0x64, 0x79, 0x41, 0x64, 0x64, 0x10, 0xea, 0x07, 0x12, 0x1d, 0x0a, 0x18, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x41, 0x6c, 0x72, 0x65, 0x61,
0x64, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x10, 0xeb, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
0x4d, 0x61, 0x78, 0x10, 0xec, 0x07, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x44, 0x65, 0x73, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
0x4d, 0x61, 0x78, 0x10, 0xed, 0x07, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x44, 0x65, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x78, 0x10, 0xee, 0x07, 0x12, 0x1f, 0x0a, 0x1a, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
0x5f, 0x4e, 0x6f, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x10, 0xef, 0x07, 0x12, 0x20, 0x0a, 0x1b,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e,
0x64, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10,
0xf1, 0x07, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74,
0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x6d, 0x69,
0x74, 0x10, 0xf2, 0x07, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f,
0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xf3, 0x07, 0x12, 0x24, 0x0a, 0x1f, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x53,
0x63, 0x65, 0x6e, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x10, 0xf4, 0x07, 0x12,
0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72,
0x69, 0x65, 0x6e, 0x64, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64,
0x10, 0xf5, 0x07, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69,
0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d,
0x69, 0x74, 0x10, 0xf6, 0x07, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e,
0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4e,
0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xf7, 0x07, 0x12, 0x26, 0x0a, 0x21, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x43, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10,
0xf8, 0x07, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74,
0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x46, 0x75, 0x6c, 0x6c,
0x10, 0xf9, 0x07, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69,
0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x10,
0xfa, 0x07, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74,
0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x50, 0x6f, 0x73, 0x49, 0x73, 0x45, 0x72, 0x72,
0x6f, 0x72, 0x10, 0xfb, 0x07, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e,
0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x48, 0x61, 0x64, 0x49, 0x6e,
0x52, 0x6f, 0x6f, 0x6d, 0x10, 0xfc, 0x07, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x4e, 0x6f, 0x74, 0x4f, 0x70, 0x4d, 0x79, 0x73, 0x65,
0x6c, 0x66, 0x10, 0xfd, 0x07, 0x2a, 0xc9, 0x03, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x8c, 0x15,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x46, 0x72, 0x69,
0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x8d, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x10,
0x8e, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x10, 0x8f, 0x15, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79,
0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x90, 0x15, 0x12, 0x20, 0x0a, 0x1b,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c,
0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x91, 0x15, 0x12, 0x1a,
0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74,
0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0x92, 0x15, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69,
0x65, 0x6e, 0x64, 0x10, 0x93, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f,
0x70, 0x10, 0x94, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x10,
0x95, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x10, 0x96,
0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x46, 0x72,
0x69, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x10, 0x97,
0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x46, 0x75,
0x7a, 0x7a, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0x98,
0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x46, 0x75,
0x7a, 0x7a, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0x99,
0x15, 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, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
0x64, 0x5f, 0x4e, 0x6f, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0xf0, 0x07, 0x12, 0x24,
0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69,
0x65, 0x6e, 0x64, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73,
0x74, 0x10, 0xf1, 0x07, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69,
0x6d, 0x69, 0x74, 0x10, 0xf2, 0x07, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49,
0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x52, 0x6f, 0x6f, 0x6d,
0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xf3, 0x07, 0x12, 0x24, 0x0a, 0x1f, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x10, 0xf4,
0x07, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x43, 0x6c, 0x6f, 0x73,
0x65, 0x64, 0x10, 0xf5, 0x07, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e,
0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4c,
0x69, 0x6d, 0x69, 0x74, 0x10, 0xf6, 0x07, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x47, 0x61, 0x6d,
0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xf7, 0x07, 0x12, 0x26, 0x0a, 0x21,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e,
0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x43, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x65,
0x72, 0x10, 0xf8, 0x07, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x46, 0x75,
0x6c, 0x6c, 0x10, 0xf9, 0x07, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e,
0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x69, 0x6e,
0x67, 0x10, 0xfa, 0x07, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x50, 0x6f, 0x73, 0x49, 0x73, 0x45,
0x72, 0x72, 0x6f, 0x72, 0x10, 0xfb, 0x07, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x48, 0x61, 0x64,
0x49, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x10, 0xfc, 0x07, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x4e, 0x6f, 0x74, 0x4f, 0x70, 0x4d, 0x79,
0x73, 0x65, 0x6c, 0x66, 0x10, 0xfd, 0x07, 0x2a, 0xe9, 0x03, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65,
0x6e, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x10,
0x8c, 0x15, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x8d, 0x15, 0x12, 0x16, 0x0a, 0x11,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f,
0x70, 0x10, 0x8e, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x10, 0x8f, 0x15, 0x12, 0x20, 0x0a, 0x1b,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c,
0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x90, 0x15, 0x12, 0x20,
0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x51, 0x75, 0x65, 0x72, 0x79,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x91, 0x15,
0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0x92, 0x15, 0x12, 0x1a, 0x0a, 0x15,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0x93, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e,
0x64, 0x4f, 0x70, 0x10, 0x94, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f,
0x70, 0x10, 0x95, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61,
0x10, 0x96, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61,
0x10, 0x97, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x46, 0x75, 0x7a, 0x7a, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x10, 0x98, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x46, 0x75, 0x7a, 0x7a, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x10, 0x99, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
0x10, 0x9a, 0x15, 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, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (
@ -1766,7 +1823,7 @@ func file_friend_proto_rawDescGZIP() []byte {
}
var file_friend_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_friend_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
var file_friend_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_friend_proto_goTypes = []interface{}{
(OpResultCode)(0), // 0: friend.OpResultCode
(FriendPacketID)(0), // 1: friend.FriendPacketID
@ -1789,6 +1846,7 @@ var file_friend_proto_goTypes = []interface{}{
(*CSFuzzyQueryPlayer)(nil), // 18: friend.CSFuzzyQueryPlayer
(*PlayerInfo)(nil), // 19: friend.PlayerInfo
(*SCFuzzyQueryPlayer)(nil), // 20: friend.SCFuzzyQueryPlayer
(*SCRequestAddFriend)(nil), // 21: friend.SCRequestAddFriend
}
var file_friend_proto_depIdxs = []int32{
3, // 0: friend.SCFriendList.FriendArr:type_name -> friend.FriendInfo
@ -2042,6 +2100,18 @@ func file_friend_proto_init() {
return nil
}
}
file_friend_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SCRequestAddFriend); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
@ -2049,7 +2119,7 @@ func file_friend_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_friend_proto_rawDesc,
NumEnums: 2,
NumMessages: 19,
NumMessages: 20,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -46,6 +46,7 @@ enum FriendPacketID {
PACKET_SCFriendUnreadData = 2711; //
PACKET_CSFuzzyQueryPlayer = 2712; //id或者昵称查询玩家
PACKET_SCFuzzyQueryPlayer = 2713;
PACKET_SCRequestAddFriend = 2714; //
}
//
@ -183,6 +184,10 @@ message SCFuzzyQueryPlayer {
string QueryContent = 1;
repeated PlayerInfo Players = 2;
}
//PACKET_SCRequestAddFriend
message SCRequestAddFriend{
repeated int32 RequestAddFriend = 1;
}

View File

@ -6032,7 +6032,8 @@ type SCChangeEntrySwitch struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
GameCfg []int32 `protobuf:"varint,1,rep,packed,name=GameCfg,proto3" json:"GameCfg,omitempty"` //界面入口开关
Index int32 `protobuf:"varint,1,opt,name=Index,proto3" json:"Index,omitempty"` // 游戏id
Switch []bool `protobuf:"varint,2,rep,packed,name=Switch,proto3" json:"Switch,omitempty"` // 0游戏入口开关 1hot开关 2new开关
}
func (x *SCChangeEntrySwitch) Reset() {
@ -6067,9 +6068,16 @@ func (*SCChangeEntrySwitch) Descriptor() ([]byte, []int) {
return file_game_proto_rawDescGZIP(), []int{86}
}
func (x *SCChangeEntrySwitch) GetGameCfg() []int32 {
func (x *SCChangeEntrySwitch) GetIndex() int32 {
if x != nil {
return x.GameCfg
return x.Index
}
return 0
}
func (x *SCChangeEntrySwitch) GetSwitch() []bool {
if x != nil {
return x.Switch
}
return nil
}
@ -6687,19 +6695,20 @@ type CommonNotice struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Sort int32 `protobuf:"varint,1,opt,name=Sort,proto3" json:"Sort,omitempty"`
Title string `protobuf:"bytes,2,opt,name=Title,proto3" json:"Title,omitempty"`
Content string `protobuf:"bytes,3,opt,name=Content,proto3" json:"Content,omitempty"`
TypeName string `protobuf:"bytes,4,opt,name=TypeName,proto3" json:"TypeName,omitempty"`
Type int32 `protobuf:"varint,5,opt,name=Type,proto3" json:"Type,omitempty"`
StartTime int32 `protobuf:"varint,6,opt,name=StartTime,proto3" json:"StartTime,omitempty"`
EndTime int32 `protobuf:"varint,7,opt,name=EndTime,proto3" json:"EndTime,omitempty"`
Platform string `protobuf:"bytes,8,opt,name=Platform,proto3" json:"Platform,omitempty"`
CategoryType int32 `protobuf:"varint,9,opt,name=CategoryType,proto3" json:"CategoryType,omitempty"`
ImgUrl string `protobuf:"bytes,10,opt,name=ImgUrl,proto3" json:"ImgUrl,omitempty"`
NoticeId int32 `protobuf:"varint,11,opt,name=NoticeId,proto3" json:"NoticeId,omitempty"`
IsLoop int32 `protobuf:"varint,12,opt,name=IsLoop,proto3" json:"IsLoop,omitempty"`
LoopTime int32 `protobuf:"varint,13,opt,name=LoopTime,proto3" json:"LoopTime,omitempty"`
Sort int32 `protobuf:"varint,1,opt,name=Sort,proto3" json:"Sort,omitempty"`
Title string `protobuf:"bytes,2,opt,name=Title,proto3" json:"Title,omitempty"`
Content string `protobuf:"bytes,3,opt,name=Content,proto3" json:"Content,omitempty"`
TypeName string `protobuf:"bytes,4,opt,name=TypeName,proto3" json:"TypeName,omitempty"`
Type int32 `protobuf:"varint,5,opt,name=Type,proto3" json:"Type,omitempty"`
StartTime int32 `protobuf:"varint,6,opt,name=StartTime,proto3" json:"StartTime,omitempty"`
EndTime int32 `protobuf:"varint,7,opt,name=EndTime,proto3" json:"EndTime,omitempty"`
Platform string `protobuf:"bytes,8,opt,name=Platform,proto3" json:"Platform,omitempty"`
CategoryType int32 `protobuf:"varint,9,opt,name=CategoryType,proto3" json:"CategoryType,omitempty"`
ImgUrl string `protobuf:"bytes,10,opt,name=ImgUrl,proto3" json:"ImgUrl,omitempty"`
NoticeId int32 `protobuf:"varint,11,opt,name=NoticeId,proto3" json:"NoticeId,omitempty"`
IsLoop int32 `protobuf:"varint,12,opt,name=IsLoop,proto3" json:"IsLoop,omitempty"`
LoopTime int32 `protobuf:"varint,13,opt,name=LoopTime,proto3" json:"LoopTime,omitempty"`
OnChannelName []string `protobuf:"bytes,14,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"`
}
func (x *CommonNotice) Reset() {
@ -6825,6 +6834,13 @@ func (x *CommonNotice) GetLoopTime() int32 {
return 0
}
func (x *CommonNotice) GetOnChannelName() []string {
if x != nil {
return x.OnChannelName
}
return nil
}
type PlayerRecord struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -7774,407 +7790,410 @@ var file_game_proto_rawDesc = []byte{
0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e,
0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x52, 0x07, 0x47, 0x61, 0x6d,
0x65, 0x43, 0x66, 0x67, 0x22, 0x2f, 0x0a, 0x13, 0x53, 0x43, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x47,
0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61,
0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x43, 0x53, 0x45, 0x6e, 0x74, 0x65,
0x72, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a,
0x06, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41,
0x70, 0x6b, 0x56, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x18,
0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x22, 0xf2, 0x01,
0x0a, 0x0b, 0x53, 0x43, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a,
0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e,
0x65, 0x43, 0x66, 0x67, 0x22, 0x43, 0x0a, 0x13, 0x53, 0x43, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65,
0x78, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28,
0x08, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x43, 0x53,
0x45, 0x6e, 0x74, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x70, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28,
0x05, 0x52, 0x06, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73,
0x56, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x56, 0x65,
0x72, 0x22, 0xf2, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x47, 0x61, 0x6d,
0x65, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06,
0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18,
0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x69, 0x6e, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72,
0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72,
0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70,
0x6b, 0x56, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x56, 0x65,
0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x56,
0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x56,
0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74,
0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x22, 0x3c, 0x0a, 0x0a, 0x43, 0x53, 0x51, 0x75, 0x69, 0x74,
0x47, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x73, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e,
0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x49, 0x73, 0x41, 0x75, 0x64, 0x69,
0x65, 0x6e, 0x63, 0x65, 0x22, 0x69, 0x0a, 0x0a, 0x53, 0x43, 0x51, 0x75, 0x69, 0x74, 0x47, 0x61,
0x6d, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52,
0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f,
0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22,
0x5b, 0x0a, 0x0b, 0x43, 0x53, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x12, 0x1c,
0x0a, 0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08,
0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x22, 0x6d, 0x0a, 0x0b,
0x53, 0x43, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x50,
0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1c, 0x0a,
0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c,
0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c,
0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x22, 0x27, 0x0a, 0x0d, 0x43,
0x53, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06,
0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f,
0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x0d, 0x53, 0x43, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e,
0x63, 0x65, 0x53, 0x69, 0x74, 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, 0x33, 0x0a,
0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e,
0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f,
0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03,
0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c,
0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28,
0x05, 0x52, 0x09, 0x4d, 0x69, 0x6e, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c,
0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72,
0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x18, 0x06, 0x20,
0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x12, 0x22,
0x0a, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x18, 0x07,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x56,
0x65, 0x72, 0x22, 0x3c, 0x0a, 0x0a, 0x43, 0x53, 0x51, 0x75, 0x69, 0x74, 0x47, 0x61, 0x6d, 0x65,
0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64,
0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x73, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x49, 0x73, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65,
0x22, 0x69, 0x0a, 0x0a, 0x53, 0x43, 0x51, 0x75, 0x69, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x33,
0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b,
0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43,
0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20,
0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x5b, 0x0a, 0x0b, 0x43,
0x53, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f,
0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c,
0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x74, 0x69,
0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x61, 0x74, 0x69,
0x74, 0x75, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x22, 0x6d, 0x0a, 0x0b, 0x53, 0x43, 0x55, 0x70,
0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x6e,
0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f,
0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x74, 0x69, 0x74,
0x75, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x61, 0x74, 0x69, 0x74,
0x75, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x22, 0x27, 0x0a, 0x0d, 0x43, 0x53, 0x41, 0x75, 0x64,
0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64,
0x22, 0x5c, 0x0a, 0x0d, 0x53, 0x43, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69,
0x74, 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, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43,
0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65,
0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x77,
0x0a, 0x11, 0x43, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74,
0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20,
0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x50,
0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50,
0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4f, 0x70, 0x74, 0x18, 0x03,
0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, 0x70, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61,
0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74,
0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xe2, 0x02, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d,
0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05,
0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74,
0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65,
0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09,
0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52,
0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e,
0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64,
0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65,
0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08,
0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4c, 0x6f,
0x6f, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70,
0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01,
0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xc0, 0x01, 0x0a,
0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a,
0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x12, 0x2c, 0x0a,
0x11, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x6f, 0x67,
0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65,
0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x54,
0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f,
0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75,
0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75,
0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54,
0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06,
0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x22,
0xbc, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x6e, 0x64, 0x4e,
0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c,
0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x4c, 0x69,
0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68,
0x61, 0x6c, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65,
0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x18,
0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c,
0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x05, 0x47,
0x6c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x73, 0x18,
0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x73, 0x22, 0x10,
0x0a, 0x0e, 0x53, 0x43, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x22, 0x4d, 0x0a, 0x0b, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12,
0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12,
0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72,
0x61, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22,
0xa4, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12,
0x64, 0x65, 0x22, 0x77, 0x0a, 0x11, 0x43, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x6e,
0x64, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e,
0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12,
0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x05, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4f,
0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, 0x70, 0x74, 0x12, 0x1c, 0x0a,
0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x88, 0x03, 0x0a, 0x0c,
0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04,
0x53, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74,
0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
0x12, 0x1a, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04,
0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65,
0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20,
0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18,
0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52,
0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74,
0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74,
0x66, 0x6f, 0x72, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x74, 0x65,
0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6d, 0x67, 0x55,
0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c,
0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01,
0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73,
0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65,
0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d,
0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e,
0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xc0, 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65,
0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46,
0x72, 0x65, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d,
0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44,
0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64,
0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e,
0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12,
0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54,
0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4d,
0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x11, 0x53, 0x43,
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12,
0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70,
0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x02, 0x54, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52,
0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01,
0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x2a, 0xe6, 0x09, 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x10,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65,
0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d,
0x65, 0x10, 0xf8, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d,
0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf9,
0x07, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61,
0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x10, 0xfa, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x10, 0xfb, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f,
0x6f, 0x6d, 0x48, 0x61, 0x64, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10,
0xfc, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53,
0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfe, 0x07, 0x12,
0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61,
0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x80, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x10, 0x90, 0x08, 0x12, 0x2c, 0x0a, 0x27, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f,
0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x10, 0x92, 0x08, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x6e,
0x6c, 0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x6d, 0x62, 0x65,
0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x93, 0x08, 0x12, 0x1e,
0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, 0x73, 0x56, 0x65,
0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x94, 0x08, 0x12, 0x1e,
0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65,
0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x95, 0x08, 0x12, 0x1b,
0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6f, 0x73, 0x46,
0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x98, 0x08, 0x12, 0x23, 0x0a, 0x1e, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x46, 0x6f,
0x72, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9a, 0x08,
0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64,
0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9d, 0x08, 0x12, 0x22,
0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76,
0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10,
0x9e, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x6d, 0x65, 0x49,
0x70, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x08, 0x12,
0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45,
0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa0, 0x08, 0x12, 0x1a, 0x0a,
0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72,
0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x49, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x67,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa3, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x4f, 0x70, 0x59, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xba, 0x08,
0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x6f,
0x6f, 0x6d, 0x49, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10,
0xc9, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x72, 0x69, 0x76, 0x61,
0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xca, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x74, 0x10, 0xcb, 0x08, 0x12,
0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63,
0x65, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x63, 0x65, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65,
0x10, 0xb3, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65,
0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x10, 0xb4, 0x08, 0x12, 0x26, 0x0a, 0x21, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x44, 0x6f, 0x77, 0x6e, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb5, 0x08, 0x12,
0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x72, 0x65, 0x47,
0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb6, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc8, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xcf, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x4d, 0x75, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xd9, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x70,
0x72, 0x63, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x73, 0x43, 0x6c,
0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x27, 0x12, 0x1b, 0x0a, 0x16, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x45, 0x72, 0x72,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa8, 0x46, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x44, 0x67, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d,
0x65, 0x10, 0xa9, 0x46, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f,
0x50, 0x6c, 0x61, 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xaa, 0x46, 0x12,
0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x51, 0x75, 0x6f, 0x74, 0x61,
0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xab,
0x46, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x72, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb2, 0x46, 0x2a,
0xd0, 0x17, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b,
0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17,
0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4a, 0x4f, 0x49, 0x4e,
0x47, 0x41, 0x4d, 0x45, 0x10, 0x98, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x99, 0x11,
0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52,
0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9a, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52,
0x4f, 0x4f, 0x4d, 0x10, 0x9b, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9c, 0x11,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e,
0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9d, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f,
0x4f, 0x4d, 0x10, 0x9e, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9f, 0x11,
0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55,
0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d,
0x10, 0xa0, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa1, 0x11, 0x12, 0x18, 0x0a,
0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x43, 0x6f,
0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74,
0x12, 0x2c, 0x0a, 0x05, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65,
0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x05, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x18,
0x0a, 0x07, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52,
0x07, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x53, 0x43, 0x4e, 0x6f,
0x74, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x4d, 0x0a, 0x0b, 0x43, 0x53,
0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e,
0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74,
0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x03,
0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xa4, 0x01, 0x0a, 0x0b, 0x53, 0x43,
0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43,
0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65,
0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e,
0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x10,
0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73,
0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61,
0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73,
0x2a, 0xe6, 0x09, 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53,
0x75, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10,
0x01, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f,
0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf8, 0x07, 0x12, 0x1b,
0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78,
0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf9, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65,
0x64, 0x10, 0xfa, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f,
0x6d, 0x49, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfb, 0x07, 0x12,
0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x45,
0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfc, 0x07, 0x12, 0x1b, 0x0a, 0x16,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e,
0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfe, 0x07, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61,
0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10,
0x80, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x6f, 0x6e, 0x65, 0x79,
0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x90,
0x08, 0x12, 0x2c, 0x0a, 0x27, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x4e,
0x6f, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x92, 0x08, 0x12,
0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x6c, 0x6c, 0x6f,
0x77, 0x43, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x93, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x94, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x95, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6f, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x10, 0x98, 0x08, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63,
0x65, 0x6e, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x57, 0x61, 0x74, 0x63, 0x68,
0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9a, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9d, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e,
0x74, 0x61, 0x69, 0x6e, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9e, 0x08, 0x12, 0x1b, 0x0a, 0x16,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x6d, 0x65, 0x49, 0x70, 0x46, 0x6f, 0x72, 0x62, 0x69,
0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x10, 0xa0, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x43, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65,
0x10, 0xa2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x4f, 0x74,
0x68, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10,
0xa3, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x70, 0x59, 0x69, 0x65,
0x6c, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xba, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x46, 0x61,
0x69, 0x6c, 0x65, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc9, 0x08, 0x12, 0x24, 0x0a, 0x1f,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10,
0xca, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e,
0x6f, 0x74, 0x45, 0x78, 0x69, 0x74, 0x10, 0xcb, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x53, 0x63, 0x65, 0x6e,
0x63, 0x65, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb3, 0x08, 0x12, 0x22, 0x0a,
0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb4,
0x08, 0x12, 0x26, 0x0a, 0x21, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52,
0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x4d, 0x61,
0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb5, 0x08, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x72, 0x65, 0x47, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43,
0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10,
0xb6, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64,
0x50, 0x6c, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x10, 0xc8, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f,
0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65,
0x10, 0xcf, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x75, 0x73, 0x74,
0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d,
0x65, 0x10, 0xd9, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x70, 0x72, 0x63, 0x5f, 0x43, 0x6c, 0x75,
0x62, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x73, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x10, 0x9f, 0x27, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67,
0x5f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10,
0xa8, 0x46, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x4c, 0x6f,
0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa9, 0x46, 0x12, 0x19,
0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x45, 0x72,
0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xaa, 0x46, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x44, 0x67, 0x5f, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f,
0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xab, 0x46, 0x12, 0x1c, 0x0a, 0x17, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x73,
0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb2, 0x46, 0x2a, 0xd0, 0x17, 0x0a, 0x10, 0x47, 0x61,
0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18,
0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c,
0x6c, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x98,
0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4a,
0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x99, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f,
0x4f, 0x4d, 0x10, 0x9a, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9b, 0x11,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e,
0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9c, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f,
0x4d, 0x10, 0x9d, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
0x53, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9e, 0x11, 0x12,
0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x54,
0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9f, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45,
0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xa0, 0x11, 0x12, 0x18, 0x0a,
0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52,
0x47, 0x41, 0x4d, 0x45, 0x10, 0xa1, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa2,
0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51,
0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa3, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45,
0x10, 0xa4, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x43, 0x41, 0x52, 0x44, 0x47, 0x41, 0x49, 0x4e, 0x57, 0x41, 0x59, 0x10, 0xa5, 0x11, 0x12,
0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x41, 0x53,
0x4b, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa6, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa7,
0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54,
0x41, 0x53, 0x4b, 0x43, 0x48, 0x47, 0x10, 0xa8, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x43, 0x4b, 0x43, 0x4f, 0x4d, 0x50, 0x4c,
0x45, 0x54, 0x45, 0x10, 0xa9, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x44, 0x45, 0x4c, 0x10, 0xaa, 0x11, 0x12, 0x1c,
0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x41, 0x43, 0x4b,
0x44, 0x52, 0x41, 0x57, 0x50, 0x52, 0x49, 0x5a, 0x45, 0x10, 0xab, 0x11, 0x12, 0x1c, 0x0a, 0x17,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x43, 0x4b, 0x44, 0x52,
0x41, 0x57, 0x50, 0x52, 0x49, 0x5a, 0x45, 0x10, 0xac, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x47, 0x45, 0x4e, 0x54,
0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xaf, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x47, 0x45, 0x4e, 0x54,
0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xb0, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x47, 0x45, 0x4e, 0x54,
0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xb1, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x42, 0x55, 0x59, 0x10,
0xb2, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x53, 0x48, 0x4f, 0x50, 0x42, 0x55, 0x59, 0x10, 0xb3, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x4c, 0x49, 0x53,
0x54, 0x10, 0xb4, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
0x53, 0x5f, 0x47, 0x45, 0x54, 0x4c, 0x41, 0x54, 0x45, 0x4c, 0x59, 0x47, 0x41, 0x4d, 0x45, 0x49,
0x44, 0x53, 0x10, 0xb5, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x4c, 0x41, 0x54, 0x45, 0x4c, 0x59, 0x47, 0x41, 0x4d, 0x45,
0x49, 0x44, 0x53, 0x10, 0xb6, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49,
0x47, 0x10, 0xb7, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10,
0xb8, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
0x10, 0xb9, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc0, 0x11, 0x12, 0x18, 0x0a,
0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52,
0x47, 0x41, 0x4d, 0x45, 0x10, 0xa2, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa3, 0x11,
0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55,
0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa4, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x41, 0x52, 0x44, 0x47, 0x41, 0x49, 0x4e, 0x57,
0x41, 0x59, 0x10, 0xa5, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa6, 0x11, 0x12, 0x17,
0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x53, 0x4b,
0x4c, 0x49, 0x53, 0x54, 0x10, 0xa7, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x43, 0x48, 0x47, 0x10, 0xa8, 0x11, 0x12,
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x43,
0x4b, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xa9, 0x11, 0x12, 0x16, 0x0a, 0x11,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x44, 0x45,
0x4c, 0x10, 0xaa, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
0x53, 0x5f, 0x54, 0x41, 0x43, 0x4b, 0x44, 0x52, 0x41, 0x57, 0x50, 0x52, 0x49, 0x5a, 0x45, 0x10,
0xab, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x54, 0x41, 0x43, 0x4b, 0x44, 0x52, 0x41, 0x57, 0x50, 0x52, 0x49, 0x5a, 0x45, 0x10, 0xac, 0x11,
0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45,
0x54, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xaf, 0x11,
0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45,
0x54, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xb0, 0x11,
0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45,
0x4c, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xb1, 0x11,
0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48,
0x4f, 0x50, 0x42, 0x55, 0x59, 0x10, 0xb2, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x42, 0x55, 0x59, 0x10, 0xb3, 0x11,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x49,
0x4d, 0x49, 0x54, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xb4, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x4c, 0x41, 0x54, 0x45, 0x4c,
0x59, 0x47, 0x41, 0x4d, 0x45, 0x49, 0x44, 0x53, 0x10, 0xb5, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x4c, 0x41, 0x54, 0x45,
0x4c, 0x59, 0x47, 0x41, 0x4d, 0x45, 0x49, 0x44, 0x53, 0x10, 0xb6, 0x11, 0x12, 0x1c, 0x0a, 0x17,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d,
0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0xb7, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43,
0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0xb8, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x47, 0x41, 0x4d, 0x45,
0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0xb9, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x48, 0x41, 0x4c, 0x4c,
0x10, 0xc0, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc1, 0x11, 0x12, 0x18, 0x0a,
0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45,
0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc2, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc3,
0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48,
0x41, 0x4c, 0x4c, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc4, 0x11, 0x12, 0x1b,
0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x41, 0x4c, 0x4c,
0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc5, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x50, 0x4c, 0x41,
0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xc6, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x50, 0x4c, 0x41,
0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xc7, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x53, 0x54, 0x41,
0x54, 0x45, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x10, 0xc8, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x41, 0x4c, 0x4c, 0x50, 0x4c, 0x41, 0x59,
0x45, 0x52, 0x4e, 0x55, 0x4d, 0x10, 0xc9, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x55, 0x4c, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49,
0x4e, 0x46, 0x4f, 0x10, 0xca, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x42, 0x55, 0x4c, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x46,
0x4f, 0x10, 0xcb, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
0x53, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49,
0x53, 0x54, 0x10, 0xcc, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c,
0x49, 0x53, 0x54, 0x10, 0xcd, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x44, 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10,
0xce, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x45, 0x4e, 0x54, 0x45, 0x52, 0x44, 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xcf, 0x11, 0x12, 0x1a,
0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56,
0x45, 0x44, 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd0, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x44, 0x47, 0x47,
0x41, 0x4d, 0x45, 0x10, 0xd1, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52,
0x47, 0x45, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, 0xd2, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43,
0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x53, 0x54, 0x49, 0x43, 0x10,
0xd3, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53, 0x54, 0x41, 0x54,
0x49, 0x43, 0x53, 0x54, 0x49, 0x43, 0x10, 0xd4, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f,
0x55, 0x4e, 0x54, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0xd5, 0x11, 0x12, 0x23,
0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49,
0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52,
0x10, 0xd6, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10,
0xd7, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x45, 0x4e, 0x54, 0x45, 0x52, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd8,
0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c,
0x45, 0x41, 0x56, 0x45, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd9, 0x11,
0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45,
0x41, 0x56, 0x45, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xda, 0x11, 0x12,
0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52,
0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdb, 0x11, 0x12, 0x1c, 0x0a,
0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44,
0x47, 0x41, 0x4d, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdc, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41,
0x4d, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10,
0xdd, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45,
0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xde, 0x11, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45,
0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x53, 0x54, 0x41,
0x54, 0x45, 0x10, 0xdf, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45,
0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe0, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52, 0x49, 0x56, 0x41,
0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe1, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43,
0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc1, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc2,
0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c,
0x45, 0x41, 0x56, 0x45, 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc3, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x41, 0x4c, 0x4c, 0x52, 0x4f, 0x4f,
0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc4, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x41, 0x4c, 0x4c, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49,
0x53, 0x54, 0x10, 0xc5, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54,
0x45, 0x52, 0x10, 0xc6, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41,
0x56, 0x45, 0x10, 0xc7, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x43, 0x48, 0x41, 0x4e,
0x47, 0x10, 0xc8, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x5f, 0x48, 0x41, 0x4c, 0x4c, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4e, 0x55, 0x4d, 0x10,
0xc9, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x42, 0x55, 0x4c, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xca, 0x11,
0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x55,
0x4c, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xcb, 0x11, 0x12, 0x1f,
0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x55, 0x53, 0x54,
0x4f, 0x4d, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcc, 0x11, 0x12,
0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x55, 0x53,
0x54, 0x4f, 0x4d, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcd, 0x11,
0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e,
0x54, 0x45, 0x52, 0x44, 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xce, 0x11, 0x12, 0x1a, 0x0a, 0x15,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x44,
0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xcf, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x44, 0x47, 0x47, 0x41, 0x4d,
0x45, 0x10, 0xd0, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x44, 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd1, 0x11,
0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c,
0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x41, 0x4e, 0x53, 0x57,
0x45, 0x52, 0x10, 0xd2, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53,
0x54, 0x41, 0x54, 0x49, 0x43, 0x53, 0x54, 0x49, 0x43, 0x10, 0xd3, 0x11, 0x12, 0x25, 0x0a, 0x20,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41,
0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x53, 0x54, 0x49, 0x43,
0x10, 0xd4, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x54, 0x52, 0x41,
0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0xd5, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55,
0x4e, 0x54, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0xd6, 0x11, 0x12, 0x1d, 0x0a,
0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52,
0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd7, 0x11, 0x12, 0x1d, 0x0a, 0x18,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x54,
0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd8, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x54, 0x48,
0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd9, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x54, 0x48, 0x52,
0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xda, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45,
0x4c, 0x49, 0x53, 0x54, 0x10, 0xdb, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x4c, 0x49,
0x53, 0x54, 0x10, 0xdc, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x41, 0x4c, 0x41,
0x4e, 0x43, 0x45, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xdd, 0x11, 0x12, 0x25, 0x0a, 0x20,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47,
0x41, 0x4d, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45,
0x10, 0xde, 0x11, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43,
0x45, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xdf, 0x11, 0x12,
0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45,
0x41, 0x54, 0x45, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe0,
0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43,
0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d,
0x10, 0xe1, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c,
0x49, 0x53, 0x54, 0x10, 0xe2, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f,
0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe3, 0x11, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54,
0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe2, 0x11, 0x12, 0x21, 0x0a, 0x1c,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49,
0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe3, 0x11, 0x12,
0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54,
0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x52, 0x59, 0x10, 0xe4, 0x11, 0x12,
0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54,
0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x48, 0x49, 0x53, 0x54, 0x4f,
0x52, 0x59, 0x10, 0xe4, 0x11, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f,
0x4d, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x52, 0x59, 0x10, 0xe5, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59,
0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe6, 0x11, 0x12, 0x21,
0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x45, 0x53, 0x54,
0x52, 0x4f, 0x59, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe7,
0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51,
0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe8, 0x11, 0x12,
0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x45,
0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe9, 0x11, 0x12, 0x1a, 0x0a,
0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53,
0x55, 0x42, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xeb, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4f, 0x42, 0x53, 0x45, 0x52,
0x56, 0x45, 0x10, 0xec, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xed, 0x11, 0x12,
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x59, 0x4e,
0x43, 0x47, 0x41, 0x4d, 0x45, 0x46, 0x52, 0x45, 0x45, 0x10, 0xee, 0x11, 0x12, 0x1a, 0x0a, 0x15,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52,
0x59, 0x53, 0x59, 0x4e, 0x43, 0x10, 0xef, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x4c, 0x4f, 0x47,
0x10, 0xf0, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x4c, 0x4f, 0x47, 0x10, 0xf1, 0x11, 0x12, 0x1a,
0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x4f, 0x54, 0x54,
0x45, 0x52, 0x59, 0x42, 0x49, 0x4c, 0x4c, 0x10, 0xf2, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x4c, 0x4f,
0x43, 0x10, 0xf3, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x10, 0xf4, 0x11, 0x12, 0x1a,
0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49,
0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xf5, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45,
0x53, 0x49, 0x54, 0x10, 0xf6, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf7, 0x11,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4f,
0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf8, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x45, 0x4e,
0x54, 0x52, 0x59, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xf9, 0x11, 0x12, 0x1b, 0x0a, 0x16,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65,
0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xfa, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d,
0x10, 0xc1, 0x3e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc2, 0x3e, 0x12, 0x1a, 0x0a,
0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52,
0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc3, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f,
0x4f, 0x4d, 0x10, 0xc4, 0x3e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc5, 0x3e,
0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x4f,
0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc6, 0x3e, 0x12, 0x21, 0x0a, 0x1c, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43,
0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc7, 0x3e, 0x12, 0x20,
0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59,
0x45, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x46, 0x4c, 0x41, 0x47, 0x10, 0xc8, 0x3e,
0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f,
0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xc9, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10,
0xca, 0x3e, 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, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
0x52, 0x59, 0x10, 0xe5, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54,
0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe6, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x50, 0x52, 0x49,
0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe7, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f,
0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe8, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d,
0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe9, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x54,
0x10, 0xeb, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, 0x45, 0x10, 0xec, 0x11, 0x12,
0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d,
0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xed, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x47, 0x41, 0x4d, 0x45, 0x46,
0x52, 0x45, 0x45, 0x10, 0xee, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x53, 0x59, 0x4e, 0x43, 0x10,
0xef, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x4c, 0x4f, 0x47, 0x10, 0xf0, 0x11, 0x12, 0x19, 0x0a,
0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45,
0x52, 0x59, 0x4c, 0x4f, 0x47, 0x10, 0xf1, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x42, 0x49, 0x4c,
0x4c, 0x10, 0xf2, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
0x53, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x10, 0xf3, 0x11, 0x12, 0x18,
0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x4c, 0x4f,
0x41, 0x44, 0x4c, 0x4f, 0x43, 0x10, 0xf4, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49,
0x54, 0x10, 0xf5, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xf6, 0x11,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x4f,
0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf7, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43,
0x45, 0x10, 0xf8, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x53, 0x57, 0x49,
0x54, 0x43, 0x48, 0x10, 0xf9, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x10, 0xfa, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc1, 0x3e, 0x12, 0x18, 0x0a,
0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45,
0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc2, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d,
0x10, 0xc3, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc4, 0x3e, 0x12,
0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x4f, 0x52,
0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc5, 0x3e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41,
0x52, 0x54, 0x10, 0xc6, 0x3e, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56,
0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc7, 0x3e, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x53, 0x57, 0x49,
0x54, 0x43, 0x48, 0x46, 0x4c, 0x41, 0x47, 0x10, 0xc8, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74,
0x10, 0xc9, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xca, 0x3e, 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, 0x67, 0x61,
0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -747,7 +747,8 @@ message SCChangeGameStatus {
//PACKET_SC_CHANGEENTRYSWITCH
message SCChangeEntrySwitch {
repeated int32 GameCfg = 1; //
int32 Index = 1; // id
repeated bool Switch = 2; // 0 1hot开关 2new开关
}
//PACKET_CS_ENTERGAME
@ -825,6 +826,7 @@ message CommonNotice {
int32 NoticeId = 11;
int32 IsLoop=12;
int32 LoopTime=13;
repeated string OnChannelName = 14;
}
message PlayerRecord {
int32 GameFreeid = 1; //

File diff suppressed because it is too large Load Diff

View File

@ -134,6 +134,11 @@ message SCGameConfig {
repeated GameConfig GameCfg = 1;//
}
message EntrySwitch {
int32 Index = 1; // (id)
repeated bool Switch = 2; // 0 1hot开关 2new开关
}
//PACKET_SC_LOGIN
message SCLogin {
OpResultCode OpRetCode = 1; //
@ -146,13 +151,14 @@ message SCLogin {
repeated GameVer SubGameVer = 8;//
repeated LoginGameInfo GameInfo = 9;//
repeated int32 ThrGameId = 10;//id
repeated int32 EntrySwitch = 11;//
repeated int32 EntrySwitch = 11;//;
string CurrencyType = 12; // USD KHR VND
int32 CurrencyRatio = 13; //
string ApkUrl = 14;//apk
string IpaUrl = 15;//ipa
string Token = 16;// md5(+AppId)
string ClientParam = 17;//
repeated EntrySwitch GameSwitch = 18;//
}
//
message Bulletion{

File diff suppressed because it is too large Load Diff

View File

@ -205,6 +205,8 @@ enum PlayerPacketID {
PACKET_SCADV = 2822; // 广
PACKET_SCGetWeekCardAwary = 2823;//
PACKET_SCPigBankCoin = 2824;//
PACKET_CSExchangeChannel = 2825; //
PACKET_SCExchangeChannel = 2826; //
}
//
@ -313,6 +315,7 @@ message PlayerData {
string Signature = 46; //
int32 Age = 47; //
repeated WeekInfo WeekCard = 48;//
repeated int32 RequestAddFriend = 49;//
}
//
@ -1177,3 +1180,11 @@ message SCPigBankCoin {
int64 BankCoinMax = 2;
int64 AddBankCoin = 3;
}
// PACKET_CSExchangeChannel
message CSExchangeChannel{}
// PACKET_SCExchangeChannel
message SCExchangeChannel{
repeated string OnChannelName = 1; //
}

File diff suppressed because it is too large Load Diff

View File

@ -835,6 +835,8 @@ message DB_GameFree {
int32 RatioMax = 71;
int32 IsDrop = 72;
}
message DB_GameFreeArray {
@ -875,6 +877,8 @@ message DB_GameItem {
string Value = 16;
int32 Entity = 17;
}
message DB_GameItemArray {
@ -947,17 +951,15 @@ message DB_Game_Drop {
int32 Id = 1;
int32 GameId = 2;
int32 Bet = 2;
int32 Bet = 3;
int32 ItemName1 = 3;
int32 ItemName1 = 4;
int32 ItemId1 = 4;
int32 ItemId1 = 5;
int32 Rate1 = 5;
int32 Rate1 = 6;
repeated int32 Amount1 = 7;
repeated int32 Amount1 = 6;
}

View File

@ -121,6 +121,7 @@ const (
SSPacketID_PACKET_GW_DTROOMRESULTS SSPacketID = 1549
SSPacketID_PACKET_WG_SINGLEADJUST SSPacketID = 1550
SSPacketID_PACKET_GW_ADDSINGLEADJUST SSPacketID = 1551
SSPacketID_PACKET_WG_BUYRECTIMEITEM SSPacketID = 1552
)
// Enum value maps for SSPacketID.
@ -220,6 +221,7 @@ var (
1549: "PACKET_GW_DTROOMRESULTS",
1550: "PACKET_WG_SINGLEADJUST",
1551: "PACKET_GW_ADDSINGLEADJUST",
1552: "PACKET_WG_BUYRECTIMEITEM",
}
SSPacketID_value = map[string]int32{
"PACKET_SERVER_ZERO": 0,
@ -316,6 +318,7 @@ var (
"PACKET_GW_DTROOMRESULTS": 1549,
"PACKET_WG_SINGLEADJUST": 1550,
"PACKET_GW_ADDSINGLEADJUST": 1551,
"PACKET_WG_BUYRECTIMEITEM": 1552,
}
)
@ -848,7 +851,7 @@ type WGCreateScene struct {
SceneId int32 `protobuf:"varint,1,opt,name=SceneId,proto3" json:"SceneId,omitempty"`
GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"`
GameMode int32 `protobuf:"varint,3,opt,name=GameMode,proto3" json:"GameMode,omitempty"`
Params []int32 `protobuf:"varint,4,rep,packed,name=Params,proto3" json:"Params,omitempty"`
Params []int64 `protobuf:"varint,4,rep,packed,name=Params,proto3" json:"Params,omitempty"`
Creator int32 `protobuf:"varint,5,opt,name=Creator,proto3" json:"Creator,omitempty"`
Agentor int32 `protobuf:"varint,6,opt,name=Agentor,proto3" json:"Agentor,omitempty"`
ReplayCode string `protobuf:"bytes,7,opt,name=ReplayCode,proto3" json:"ReplayCode,omitempty"`
@ -923,7 +926,7 @@ func (x *WGCreateScene) GetGameMode() int32 {
return 0
}
func (x *WGCreateScene) GetParams() []int32 {
func (x *WGCreateScene) GetParams() []int64 {
if x != nil {
return x.Params
}
@ -1304,6 +1307,7 @@ type WGPlayerEnter struct {
Items map[int32]int64 `protobuf:"bytes,17,rep,name=Items,proto3" json:"Items,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
MatchParams []int32 `protobuf:"varint,18,rep,packed,name=MatchParams,proto3" json:"MatchParams,omitempty"` //比赛参数
RankScore map[int32]int64 `protobuf:"bytes,19,rep,name=RankScore,proto3" json:"RankScore,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 排位积分
AppChannel string `protobuf:"bytes,20,opt,name=AppChannel,proto3" json:"AppChannel,omitempty"` // 包渠道
}
func (x *WGPlayerEnter) Reset() {
@ -1471,6 +1475,13 @@ func (x *WGPlayerEnter) GetRankScore() map[int32]int64 {
return nil
}
func (x *WGPlayerEnter) GetAppChannel() string {
if x != nil {
return x.AppChannel
}
return ""
}
//从观众席坐到座位
//PACKET_WG_AUDIENCESIT
type WGAudienceSit struct {
@ -1638,7 +1649,7 @@ type GWPlayerLeave struct {
TotalConvertibleFlow int64 `protobuf:"varint,13,opt,name=TotalConvertibleFlow,proto3" json:"TotalConvertibleFlow,omitempty"` //流水
ValidCacheBetTotal int64 `protobuf:"varint,14,opt,name=ValidCacheBetTotal,proto3" json:"ValidCacheBetTotal,omitempty"` //有效下注缓存
Items map[int32]int64 `protobuf:"bytes,15,rep,name=Items,proto3" json:"Items,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
MatchId int32 `protobuf:"varint,16,opt,name=MatchId,proto3" json:"MatchId,omitempty"` //比赛场id
MatchId int64 `protobuf:"varint,16,opt,name=MatchId,proto3" json:"MatchId,omitempty"` //比赛场id
CurIsWin int64 `protobuf:"varint,17,opt,name=CurIsWin,proto3" json:"CurIsWin,omitempty"` //本局是否赢 负数:输 0平局 正数:赢
MatchRobotGrades map[int32]int32 `protobuf:"bytes,18,rep,name=MatchRobotGrades,proto3" json:"MatchRobotGrades,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //比赛数据
RankScore map[int32]int64 `protobuf:"bytes,19,rep,name=RankScore,proto3" json:"RankScore,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 排位积分
@ -1781,7 +1792,7 @@ func (x *GWPlayerLeave) GetItems() map[int32]int64 {
return nil
}
func (x *GWPlayerLeave) GetMatchId() int32 {
func (x *GWPlayerLeave) GetMatchId() int64 {
if x != nil {
return x.MatchId
}
@ -8597,6 +8608,70 @@ func (x *WbCtrlCfg) GetGameIds() []int32 {
return nil
}
//PACKET_WG_BUYRECTIMEITEM
type WGBuyRecTimeItem struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"`
ExpireTime int64 `protobuf:"varint,2,opt,name=ExpireTime,proto3" json:"ExpireTime,omitempty"`
Diamond int64 `protobuf:"varint,3,opt,name=Diamond,proto3" json:"Diamond,omitempty"`
}
func (x *WGBuyRecTimeItem) Reset() {
*x = WGBuyRecTimeItem{}
if protoimpl.UnsafeEnabled {
mi := &file_server_proto_msgTypes[112]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *WGBuyRecTimeItem) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*WGBuyRecTimeItem) ProtoMessage() {}
func (x *WGBuyRecTimeItem) ProtoReflect() protoreflect.Message {
mi := &file_server_proto_msgTypes[112]
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 WGBuyRecTimeItem.ProtoReflect.Descriptor instead.
func (*WGBuyRecTimeItem) Descriptor() ([]byte, []int) {
return file_server_proto_rawDescGZIP(), []int{112}
}
func (x *WGBuyRecTimeItem) GetSnId() int32 {
if x != nil {
return x.SnId
}
return 0
}
func (x *WGBuyRecTimeItem) GetExpireTime() int64 {
if x != nil {
return x.ExpireTime
}
return 0
}
func (x *WGBuyRecTimeItem) GetDiamond() int64 {
if x != nil {
return x.Diamond
}
return 0
}
var File_server_proto protoreflect.FileDescriptor
var file_server_proto_rawDesc = []byte{
@ -8648,7 +8723,7 @@ var file_server_proto_rawDesc = []byte{
0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08,
0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28,
0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x67,
0x65, 0x6e, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x67, 0x65,
@ -8703,7 +8778,7 @@ var file_server_proto_rawDesc = []byte{
0x52, 0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24,
0x0a, 0x0d, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x18,
0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d,
0x65, 0x43, 0x66, 0x67, 0x22, 0xa3, 0x06, 0x0a, 0x0d, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65,
0x65, 0x43, 0x66, 0x67, 0x22, 0xc3, 0x06, 0x0a, 0x0d, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65,
0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65,
0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53,
@ -8746,7 +8821,9 @@ var file_server_proto_rawDesc = []byte{
0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x57, 0x47, 0x50, 0x6c, 0x61,
0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f,
0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f,
0x72, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x41, 0x70, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e,
0x65, 0x6c, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 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,
0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e,
@ -8801,7 +8878,7 @@ var file_server_proto_rawDesc = []byte{
0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68,
0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49,
0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49,
0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x11, 0x20,
0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x57, 0x0a,
0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65,
@ -9574,189 +9651,197 @@ var file_server_proto_rawDesc = []byte{
0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74,
0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69,
0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, 0x06,
0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x2a, 0xaa, 0x16,
0x0a, 0x0a, 0x53, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x5a, 0x45,
0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
0x42, 0x5f, 0x43, 0x55, 0x52, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0xe8, 0x07, 0x12, 0x1b, 0x0a,
0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45,
0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xe9, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x49, 0x4e, 0x46, 0x4f,
0x10, 0xea, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53,
0x5f, 0x44, 0x49, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0xec, 0x07, 0x12, 0x16, 0x0a,
0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x5f, 0x53, 0x52, 0x56, 0x43, 0x54,
0x52, 0x4c, 0x10, 0xed, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x57, 0x47, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10,
0xf4, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x47, 0x5f,
0x42, 0x49, 0x4e, 0x44, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x54, 0x41, 0x47, 0x10, 0xf5, 0x07, 0x12,
0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x43, 0x55, 0x53,
0x54, 0x4f, 0x4d, 0x54, 0x41, 0x47, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54,
0x10, 0xf6, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47,
0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xcd, 0x08, 0x12,
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x45, 0x53,
0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xce, 0x08, 0x12, 0x1a, 0x0a, 0x15,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52,
0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xcf, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56,
0x45, 0x10, 0xd0, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
0x57, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x52, 0x4f, 0x4f, 0x4d, 0x43, 0x41, 0x52, 0x44,
0x10, 0xd1, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57,
0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xd2, 0x08,
0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c,
0x41, 0x59, 0x45, 0x52, 0x44, 0x52, 0x4f, 0x50, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xd3, 0x08, 0x12,
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41,
0x59, 0x45, 0x52, 0x52, 0x45, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0xd4, 0x08, 0x12, 0x20, 0x0a, 0x1b,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52,
0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd5, 0x08, 0x12, 0x22,
0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59,
0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x55, 0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10,
0xd6, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f,
0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x10, 0xd7, 0x08, 0x12,
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x52, 0x45, 0x50,
0x4c, 0x41, 0x59, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xd8, 0x08, 0x12, 0x16, 0x0a, 0x11,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45,
0x43, 0x10, 0xd9, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57,
0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10,
0xda, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f,
0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xdb, 0x08,
0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43,
0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xdc, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x52,
0x4f, 0x42, 0x4f, 0x54, 0x10, 0xdd, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x4b, 0x49, 0x43, 0x4b, 0x4f, 0x55,
0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0xde, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x4e, 0x41, 0x4c, 0x59,
0x53, 0x49, 0x53, 0x10, 0xdf, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x47, 0x57, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x42, 0x49, 0x4c, 0x4c, 0x4d, 0x4f, 0x4e, 0x45,
0x59, 0x10, 0xe1, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57,
0x47, 0x5f, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x4e, 0x49, 0x44, 0x10, 0xe2, 0x08,
0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x55,
0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xe3, 0x08, 0x12, 0x17, 0x0a, 0x12,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52,
0x47, 0x45, 0x10, 0xe4, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xe5, 0x08,
0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x52,
0x41, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45,
0x10, 0xe6, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57,
0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x4e, 0x44, 0x10, 0xe7, 0x08, 0x12, 0x19, 0x0a, 0x14,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x52, 0x45,
0x43, 0x4f, 0x52, 0x44, 0x10, 0xe8, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, 0x4f, 0x52, 0x43, 0x45,
0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xe9, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x53,
0x4f, 0x43, 0x4f, 0x52, 0x45, 0x10, 0xea, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41,
0x10, 0xeb, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57,
0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73,
0x61, 0x67, 0x65, 0x10, 0xec, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x57, 0x44, 0x5f, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61,
0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xed, 0x08, 0x12, 0x20, 0x0a, 0x1b,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52,
0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xee, 0x08, 0x12, 0x1f,
0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x49,
0x54, 0x45, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xef, 0x08, 0x12,
0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x4c, 0x6f, 0x67,
0x69, 0x6e, 0x52, 0x65, 0x63, 0x10, 0xf0, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
0x10, 0xf1, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52,
0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x10, 0xf2, 0x08, 0x12, 0x1a,
0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x6c, 0x61, 0x79,
0x65, 0x72, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xf3, 0x08, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x57, 0x42, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66,
0x67, 0x10, 0xf4, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0xdc, 0x0b,
0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x52, 0x45,
0x42, 0x55, 0x49, 0x4c, 0x44, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xdd, 0x0b, 0x12, 0x1a, 0x0a,
0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45,
0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x45, 0x57, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45,
0x10, 0xdf, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57,
0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0xe0, 0x0b,
0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x4f,
0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0xe1, 0x0b,
0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x45,
0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x4c, 0x45, 0x56, 0x45,
0x4c, 0x10, 0xe2, 0x0b, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
0x57, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x56, 0x45, 0x57, 0x42, 0x4c,
0x45, 0x56, 0x45, 0x4c, 0x10, 0xe3, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x52, 0x41, 0x4d,
0x10, 0xe4, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57,
0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x4f, 0x47, 0x10,
0xe5, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f,
0x53, 0x59, 0x4e, 0x43, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe6,
0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50,
0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x10, 0xea, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x0b,
0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x79,
0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43,
0x6f, 0x69, 0x6e, 0x10, 0xec, 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x50, 0x4f, 0x4f,
0x4c, 0x10, 0xed, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57,
0x47, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0xee,
0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47,
0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x4c, 0x4f, 0x47, 0x10, 0xef, 0x0b, 0x12, 0x18,
0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45,
0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xf0, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x4c, 0x49, 0x53,
0x54, 0x10, 0xf1, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf2, 0x0b,
0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x49,
0x43, 0x45, 0x49, 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xf3, 0x0b, 0x12, 0x1c, 0x0a,
0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45,
0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf4, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41,
0x55, 0x54, 0x4f, 0x4d, 0x41, 0x52, 0x4b, 0x54, 0x41, 0x47, 0x10, 0xf5, 0x0b, 0x12, 0x2b, 0x0a,
0x26, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54,
0x45, 0x52, 0x4f, 0x42, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x53, 0x43, 0x45,
0x4e, 0x45, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xf6, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x46, 0x4f, 0x52, 0x43,
0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xf7, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x54, 0x43, 0x4f, 0x4e,
0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x10, 0xf8, 0x0b, 0x12,
0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x48, 0x41,
0x4e, 0x47, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0xf9, 0x0b,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x54, 0x5f, 0x50, 0x4c,
0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x59, 0x10, 0xfa, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4d, 0x41,
0x54, 0x43, 0x48, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xfb, 0x0b, 0x12, 0x1f, 0x0a, 0x1a,
0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x22, 0x60, 0x0a,
0x10, 0x57, 0x47, 0x42, 0x75, 0x79, 0x52, 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x74, 0x65,
0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54,
0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72,
0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x2a,
0xc9, 0x16, 0x0a, 0x0a, 0x53, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16,
0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f,
0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x47, 0x42, 0x5f, 0x43, 0x55, 0x52, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0xe8, 0x07, 0x12,
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, 0x53, 0x54, 0x41,
0x54, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xe9, 0x07, 0x12, 0x17, 0x0a, 0x12,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x49, 0x4e,
0x46, 0x4f, 0x10, 0xea, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x53, 0x5f, 0x44, 0x49, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0xec, 0x07, 0x12,
0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x5f, 0x53, 0x52, 0x56,
0x43, 0x54, 0x52, 0x4c, 0x10, 0xed, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54,
0x45, 0x10, 0xf4, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x47, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x54, 0x41, 0x47, 0x10, 0xf5,
0x07, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x43,
0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x41, 0x47, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41,
0x53, 0x54, 0x10, 0xf6, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x57, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xcd,
0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44,
0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xce, 0x08, 0x12, 0x1a,
0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59,
0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xcf, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45,
0x41, 0x56, 0x45, 0x10, 0xd0, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x47, 0x57, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x52, 0x4f, 0x4f, 0x4d, 0x43, 0x41,
0x52, 0x44, 0x10, 0xd1, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x47, 0x57, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10,
0xd2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f,
0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x52, 0x4f, 0x50, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xd3,
0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50,
0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0xd4, 0x08, 0x12, 0x20,
0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59,
0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd5, 0x08,
0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c,
0x41, 0x59, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x55, 0x4e, 0x42, 0x49, 0x4e,
0x44, 0x10, 0xd6, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57,
0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x10, 0xd7,
0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x52,
0x45, 0x50, 0x4c, 0x41, 0x59, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xd8, 0x08, 0x12, 0x16,
0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45,
0x52, 0x45, 0x43, 0x10, 0xd9, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x57, 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x45, 0x4e, 0x54, 0x45,
0x52, 0x10, 0xda, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
0x57, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10,
0xdb, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f,
0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xdc, 0x08, 0x12, 0x1a, 0x0a,
0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54,
0x45, 0x52, 0x4f, 0x42, 0x4f, 0x54, 0x10, 0xdd, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x4b, 0x49, 0x43, 0x4b,
0x4f, 0x55, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0xde, 0x08, 0x12, 0x1a, 0x0a, 0x15,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x4e, 0x41,
0x4c, 0x59, 0x53, 0x49, 0x53, 0x10, 0xdf, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x42, 0x49, 0x4c, 0x4c, 0x4d, 0x4f,
0x4e, 0x45, 0x59, 0x10, 0xe1, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x4e, 0x49, 0x44, 0x10,
0xe2, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f,
0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xe3, 0x08, 0x12, 0x17,
0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x43, 0x48,
0x41, 0x52, 0x47, 0x45, 0x10, 0xe4, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10,
0xe5, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f,
0x47, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45,
0x4e, 0x45, 0x10, 0xe6, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x4e, 0x44, 0x10, 0xe7, 0x08, 0x12, 0x19,
0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x46, 0x49, 0x53, 0x48,
0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xe8, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, 0x4f, 0x52,
0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xe9, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49,
0x4e, 0x53, 0x4f, 0x43, 0x4f, 0x52, 0x45, 0x10, 0xea, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41,
0x54, 0x41, 0x10, 0xeb, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65,
0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xec, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65,
0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xed, 0x08, 0x12, 0x20,
0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72,
0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xee, 0x08,
0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e,
0x56, 0x49, 0x54, 0x45, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xef,
0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x4c,
0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x10, 0xf0, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61,
0x69, 0x6c, 0x10, 0xf1, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x57, 0x52, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x10, 0xf2, 0x08,
0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x6c,
0x61, 0x79, 0x65, 0x72, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xf3, 0x08, 0x12, 0x18, 0x0a, 0x13,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x57, 0x42, 0x43, 0x74, 0x72, 0x6c,
0x43, 0x66, 0x67, 0x10, 0xf4, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10,
0xdc, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f,
0x52, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xdd, 0x0b, 0x12,
0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41,
0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x45, 0x57, 0x4e, 0x4f, 0x54, 0x49,
0x43, 0x45, 0x10, 0xdf, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10,
0xe0, 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f,
0x43, 0x4f, 0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10,
0xe1, 0x0b, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f,
0x53, 0x45, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x4c, 0x45,
0x56, 0x45, 0x4c, 0x10, 0xe2, 0x0b, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x47, 0x57, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x56, 0x45, 0x57,
0x42, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe3, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x52,
0x41, 0x4d, 0x10, 0xe4, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x4f,
0x47, 0x10, 0xe5, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
0x57, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e,
0x10, 0xe6, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47,
0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75,
0x6e, 0x74, 0x10, 0xea, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x47, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x10,
0xeb, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f,
0x53, 0x79, 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f,
0x78, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xec, 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x50,
0x4f, 0x4f, 0x4c, 0x10, 0xed, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x57, 0x47, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45,
0x10, 0xee, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57,
0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x4c, 0x4f, 0x47, 0x10, 0xef, 0x0b,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41,
0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xf0, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x4c,
0x49, 0x53, 0x54, 0x10, 0xf1, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10,
0xf2, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f,
0x4e, 0x49, 0x43, 0x45, 0x49, 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xf3, 0x0b, 0x12,
0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41,
0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf4, 0x0b, 0x12, 0x20, 0x0a,
0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45,
0x52, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x52, 0x4b, 0x54, 0x41, 0x47, 0x10, 0xf5, 0x0b, 0x12,
0x2b, 0x0a, 0x26, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56,
0x49, 0x54, 0x45, 0x52, 0x4f, 0x42, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x53,
0x43, 0x45, 0x4e, 0x45, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xf6, 0x0b, 0x12, 0x1d, 0x0a, 0x18,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x46, 0x4f,
0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xf7, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x54, 0x43,
0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x10, 0xf8,
0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43,
0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10,
0xf9, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x54, 0x5f,
0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x59, 0x10, 0xfa, 0x0b, 0x12, 0x20, 0x0a, 0x1b,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52,
0x4d, 0x41, 0x54, 0x43, 0x48, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0xfc, 0x0b, 0x12, 0x1e, 0x0a,
0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45,
0x52, 0x51, 0x55, 0x49, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0xfd, 0x0b, 0x12, 0x23, 0x0a,
0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45,
0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x41, 0x53, 0x45, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10,
0xfe, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f,
0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x54, 0x4f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52,
0x10, 0xff, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47,
0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x52, 0x4f, 0x42, 0x10,
0x80, 0x0c, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f,
0x47, 0x41, 0x4d, 0x45, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x10, 0x83, 0x0c, 0x12, 0x23,
0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59,
0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45,
0x10, 0x85, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47,
0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x4e,
0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x86, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56,
0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x87, 0x0c, 0x12, 0x1f, 0x0a,
0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52,
0x4f, 0x59, 0x4d, 0x49, 0x4e, 0x49, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x88, 0x0c, 0x12, 0x1b,
0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x44, 0x45, 0x53, 0x54,
0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x89, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49,
0x4e, 0x46, 0x4f, 0x10, 0x8a, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x8b,
0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44,
0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8c, 0x0c, 0x12,
0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52,
0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8d, 0x0c, 0x12, 0x1b, 0x0a,
0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c,
0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8e, 0x0c, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x44, 0x44, 0x53, 0x49, 0x4e, 0x47, 0x4c,
0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8f, 0x0c, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f,
0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61,
0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76,
0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xfb, 0x0b, 0x12, 0x1f,
0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59,
0x45, 0x52, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0xfc, 0x0b, 0x12,
0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41,
0x59, 0x45, 0x52, 0x51, 0x55, 0x49, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0xfd, 0x0b, 0x12,
0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x43, 0x45,
0x4e, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x41, 0x53, 0x45, 0x43, 0x48, 0x41, 0x4e, 0x47,
0x45, 0x10, 0xfe, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x53, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x54, 0x4f, 0x50, 0x4c, 0x41, 0x59,
0x45, 0x52, 0x10, 0xff, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x52, 0x4f,
0x42, 0x10, 0x80, 0x0c, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57,
0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x10, 0x83, 0x0c,
0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c,
0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41,
0x4d, 0x45, 0x10, 0x85, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x4d,
0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x86, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45,
0x41, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x87, 0x0c, 0x12,
0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x45, 0x53,
0x54, 0x52, 0x4f, 0x59, 0x4d, 0x49, 0x4e, 0x49, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x88, 0x0c,
0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x44, 0x45,
0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x89, 0x0c, 0x12, 0x19, 0x0a,
0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f,
0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x8a, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f,
0x10, 0x8b, 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47,
0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8c,
0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44,
0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8d, 0x0c, 0x12,
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x49, 0x4e,
0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8e, 0x0c, 0x12, 0x1e, 0x0a, 0x19,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x44, 0x44, 0x53, 0x49, 0x4e,
0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8f, 0x0c, 0x12, 0x1d, 0x0a, 0x18,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x42, 0x55, 0x59, 0x52, 0x45, 0x43,
0x54, 0x49, 0x4d, 0x45, 0x49, 0x54, 0x45, 0x4d, 0x10, 0x90, 0x0c, 0x42, 0x26, 0x5a, 0x24, 0x6d,
0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67,
0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72,
0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -9772,7 +9857,7 @@ func file_server_proto_rawDescGZIP() []byte {
}
var file_server_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_server_proto_msgTypes = make([]protoimpl.MessageInfo, 117)
var file_server_proto_msgTypes = make([]protoimpl.MessageInfo, 118)
var file_server_proto_goTypes = []interface{}{
(SSPacketID)(0), // 0: server.SSPacketID
(SGBindGroupTag_OpCode)(0), // 1: server.SGBindGroupTag.OpCode
@ -9888,25 +9973,26 @@ var file_server_proto_goTypes = []interface{}{
(*GWAddSingleAdjust)(nil), // 111: server.GWAddSingleAdjust
(*WGSingleAdjust)(nil), // 112: server.WGSingleAdjust
(*WbCtrlCfg)(nil), // 113: server.WbCtrlCfg
nil, // 114: server.WGPlayerEnter.ItemsEntry
nil, // 115: server.WGPlayerEnter.RankScoreEntry
nil, // 116: server.GWPlayerLeave.ItemsEntry
nil, // 117: server.GWPlayerLeave.MatchRobotGradesEntry
nil, // 118: server.GWPlayerLeave.RankScoreEntry
(*DB_GameFree)(nil), // 119: server.DB_GameFree
(*WGBuyRecTimeItem)(nil), // 114: server.WGBuyRecTimeItem
nil, // 115: server.WGPlayerEnter.ItemsEntry
nil, // 116: server.WGPlayerEnter.RankScoreEntry
nil, // 117: server.GWPlayerLeave.ItemsEntry
nil, // 118: server.GWPlayerLeave.MatchRobotGradesEntry
nil, // 119: server.GWPlayerLeave.RankScoreEntry
(*DB_GameFree)(nil), // 120: server.DB_GameFree
}
var file_server_proto_depIdxs = []int32{
1, // 0: server.SGBindGroupTag.Code:type_name -> server.SGBindGroupTag.OpCode
4, // 1: server.ServerCtrl.Params:type_name -> server.OpResultParam
119, // 2: server.WGCreateScene.DBGameFree:type_name -> server.DB_GameFree
120, // 2: server.WGCreateScene.DBGameFree:type_name -> server.DB_GameFree
85, // 3: server.WGPlayerEnter.IParams:type_name -> server.PlayerIParam
86, // 4: server.WGPlayerEnter.SParams:type_name -> server.PlayerSParam
87, // 5: server.WGPlayerEnter.CParams:type_name -> server.PlayerCParam
114, // 6: server.WGPlayerEnter.Items:type_name -> server.WGPlayerEnter.ItemsEntry
115, // 7: server.WGPlayerEnter.RankScore:type_name -> server.WGPlayerEnter.RankScoreEntry
116, // 8: server.GWPlayerLeave.Items:type_name -> server.GWPlayerLeave.ItemsEntry
117, // 9: server.GWPlayerLeave.MatchRobotGrades:type_name -> server.GWPlayerLeave.MatchRobotGradesEntry
118, // 10: server.GWPlayerLeave.RankScore:type_name -> server.GWPlayerLeave.RankScoreEntry
115, // 6: server.WGPlayerEnter.Items:type_name -> server.WGPlayerEnter.ItemsEntry
116, // 7: server.WGPlayerEnter.RankScore:type_name -> server.WGPlayerEnter.RankScoreEntry
117, // 8: server.GWPlayerLeave.Items:type_name -> server.GWPlayerLeave.ItemsEntry
118, // 9: server.GWPlayerLeave.MatchRobotGrades:type_name -> server.GWPlayerLeave.MatchRobotGradesEntry
119, // 10: server.GWPlayerLeave.RankScore:type_name -> server.GWPlayerLeave.RankScoreEntry
26, // 11: server.ReplaySequene.Sequenes:type_name -> server.ReplayRecord
27, // 12: server.GRReplaySequene.Rec:type_name -> server.ReplaySequene
25, // 13: server.GRReplaySequene.Datas:type_name -> server.ReplayPlayerData
@ -9917,8 +10003,8 @@ var file_server_proto_depIdxs = []int32{
53, // 18: server.GWPlayerStatics.Datas:type_name -> server.PlayerStatics
60, // 19: server.GWPlayerData.Datas:type_name -> server.PlayerData
62, // 20: server.GWPlayerWinScore.PlayerWinScores:type_name -> server.PlayerWinScore
119, // 21: server.GRGameFreeData.DBGameFree:type_name -> server.DB_GameFree
119, // 22: server.WGClubMessage.DBGameFree:type_name -> server.DB_GameFree
120, // 21: server.GRGameFreeData.DBGameFree:type_name -> server.DB_GameFree
120, // 22: server.WGClubMessage.DBGameFree:type_name -> server.DB_GameFree
76, // 23: server.GWPLAYERWINCOIN.player:type_name -> server.PLAYERWINCOININFO
81, // 24: server.ProfitControlPlatformCfg.GameCfg:type_name -> server.ProfitControlGameCfg
82, // 25: server.WGProfitControlCorrect.Cfg:type_name -> server.ProfitControlPlatformCfg
@ -11285,6 +11371,18 @@ func file_server_proto_init() {
return nil
}
}
file_server_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WGBuyRecTimeItem); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
@ -11292,7 +11390,7 @@ func file_server_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_server_proto_rawDesc,
NumEnums: 2,
NumMessages: 117,
NumMessages: 118,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -106,6 +106,7 @@ enum SSPacketID {
PACKET_GW_DTROOMRESULTS = 1549;
PACKET_WG_SINGLEADJUST = 1550;
PACKET_GW_ADDSINGLEADJUST = 1551;
PACKET_WG_BUYRECTIMEITEM = 1552;
}
//PACKET_SG_BINDGROUPTAG
@ -164,7 +165,7 @@ message WGCreateScene {
int32 SceneId = 1;
int32 GameId = 2;
int32 GameMode = 3;
repeated int32 Params = 4;
repeated int64 Params = 4;
int32 Creator = 5;
int32 Agentor = 6;
string ReplayCode = 7;
@ -228,6 +229,7 @@ message WGPlayerEnter {
map<int32, int64> Items = 17;
repeated int32 MatchParams = 18;//
map<int32, int64> RankScore = 19;//
string AppChannel = 20; //
}
//
@ -265,7 +267,7 @@ message GWPlayerLeave{
int64 TotalConvertibleFlow = 13; //
int64 ValidCacheBetTotal = 14; //
map<int32, int64> Items = 15;
int32 MatchId = 16;//id
int64 MatchId = 16;//id
int64 CurIsWin = 17;// 0
map<int32, int32> MatchRobotGrades = 18;//
map<int32, int64> RankScore = 19;//
@ -985,4 +987,11 @@ message WbCtrlCfg{
bool Welfare = 4;//
bool KillPoints = 5;//
repeated int32 GameIds = 6;
}
//PACKET_WG_BUYRECTIMEITEM
message WGBuyRecTimeItem{
int32 SnId = 1;
int64 ExpireTime = 2;
int64 Diamond = 3;
}

View File

@ -24,31 +24,33 @@ const (
type OpResultCode int32
const (
OpResultCode_OPRC_Sucess OpResultCode = 0 //成功
OpResultCode_OPRC_Error OpResultCode = 1 //失败
OpResultCode_OPRC_VCoinNotEnough OpResultCode = 2 //V卡不够
OpResultCode_OPRC_ExchangeLimit OpResultCode = 3 //今日兑换已达上限,请明日再来
OpResultCode_OPRC_ExchangeNotEnough OpResultCode = 4 //该物品已被兑换完
OpResultCode_OPRC_ExchangeDataRtt OpResultCode = 5 //输入信息有误
OpResultCode_OPRC_ExchangeSoldOut OpResultCode = 6 //该商品已下架
OpResultCode_OPRC_ExchangeLimitAcc OpResultCode = 7 //账号被限制,无法进行该操作
OpResultCode_OPRC_JCoinNotEnough OpResultCode = 8 //金券不足
OpResultCode_OPRC_VipLevelNotEnough OpResultCode = 9 //Vip等级不足
OpResultCode_OPRC_Sucess OpResultCode = 0 //成功
OpResultCode_OPRC_Error OpResultCode = 1 //失败
OpResultCode_OPRC_VCoinNotEnough OpResultCode = 2 //V卡不够
OpResultCode_OPRC_ExchangeLimit OpResultCode = 3 //今日兑换已达上限,请明日再来
OpResultCode_OPRC_ExchangeNotEnough OpResultCode = 4 //该物品已被兑换完
OpResultCode_OPRC_ExchangeDataRtt OpResultCode = 5 //输入信息有误
OpResultCode_OPRC_ExchangeSoldOut OpResultCode = 6 //该商品已下架
OpResultCode_OPRC_ExchangeLimitAcc OpResultCode = 7 //账号被限制,无法进行该操作
OpResultCode_OPRC_JCoinNotEnough OpResultCode = 8 //金券不足
OpResultCode_OPRC_VipLevelNotEnough OpResultCode = 9 //Vip等级不足
OpResultCode_OPRC_NotSIMCode OpResultCode = 10 //兑换码不足
)
// Enum value maps for OpResultCode.
var (
OpResultCode_name = map[int32]string{
0: "OPRC_Sucess",
1: "OPRC_Error",
2: "OPRC_VCoinNotEnough",
3: "OPRC_ExchangeLimit",
4: "OPRC_ExchangeNotEnough",
5: "OPRC_ExchangeDataRtt",
6: "OPRC_ExchangeSoldOut",
7: "OPRC_ExchangeLimitAcc",
8: "OPRC_JCoinNotEnough",
9: "OPRC_VipLevelNotEnough",
0: "OPRC_Sucess",
1: "OPRC_Error",
2: "OPRC_VCoinNotEnough",
3: "OPRC_ExchangeLimit",
4: "OPRC_ExchangeNotEnough",
5: "OPRC_ExchangeDataRtt",
6: "OPRC_ExchangeSoldOut",
7: "OPRC_ExchangeLimitAcc",
8: "OPRC_JCoinNotEnough",
9: "OPRC_VipLevelNotEnough",
10: "OPRC_NotSIMCode",
}
OpResultCode_value = map[string]int32{
"OPRC_Sucess": 0,
@ -61,6 +63,7 @@ var (
"OPRC_ExchangeLimitAcc": 7,
"OPRC_JCoinNotEnough": 8,
"OPRC_VipLevelNotEnough": 9,
"OPRC_NotSIMCode": 10,
}
)
@ -1145,12 +1148,13 @@ type CSShopExchange struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
GoodsId int32 `protobuf:"varint,1,opt,name=GoodsId,proto3" json:"GoodsId,omitempty"` //商品ID
UserName string `protobuf:"bytes,2,opt,name=UserName,proto3" json:"UserName,omitempty"` //兑换人姓名
Mobile string `protobuf:"bytes,3,opt,name=Mobile,proto3" json:"Mobile,omitempty"` //兑换人手机号
Comment string `protobuf:"bytes,4,opt,name=Comment,proto3" json:"Comment,omitempty"` //备注信息
Id int32 `protobuf:"varint,5,opt,name=Id,proto3" json:"Id,omitempty"` //兑换方式Id ExType中的id对应3种兑换方式
Amount int32 `protobuf:"varint,6,opt,name=Amount,proto3" json:"Amount,omitempty"` //兑换数量
GoodsId int32 `protobuf:"varint,1,opt,name=GoodsId,proto3" json:"GoodsId,omitempty"` //商品ID
UserName string `protobuf:"bytes,2,opt,name=UserName,proto3" json:"UserName,omitempty"` //兑换人姓名
Mobile string `protobuf:"bytes,3,opt,name=Mobile,proto3" json:"Mobile,omitempty"` //兑换人手机号
Comment string `protobuf:"bytes,4,opt,name=Comment,proto3" json:"Comment,omitempty"` //备注信息
Id int32 `protobuf:"varint,5,opt,name=Id,proto3" json:"Id,omitempty"` //兑换方式Id ExType中的id对应3种兑换方式
Amount int32 `protobuf:"varint,6,opt,name=Amount,proto3" json:"Amount,omitempty"` //兑换数量
ExchangeType int32 `protobuf:"varint,7,opt,name=ExchangeType,proto3" json:"ExchangeType,omitempty"` //兑换类型 1-自提 2-后台
}
func (x *CSShopExchange) Reset() {
@ -1227,6 +1231,13 @@ func (x *CSShopExchange) GetAmount() int32 {
return 0
}
func (x *CSShopExchange) GetExchangeType() int32 {
if x != nil {
return x.ExchangeType
}
return 0
}
type SCShopExchange struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -1344,6 +1355,7 @@ type ShopExchangeInfo struct {
DayPlayLimit int32 `protobuf:"varint,8,opt,name=DayPlayLimit,proto3" json:"DayPlayLimit,omitempty"` // 个人单日购买
ExType []*ExchangeType `protobuf:"bytes,9,rep,name=ExType,proto3" json:"ExType,omitempty"` //兑换方式
TelCharge int32 `protobuf:"varint,10,opt,name=TelCharge,proto3" json:"TelCharge,omitempty"` //话费
ItemId int32 `protobuf:"varint,11,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //转化的道具Id
}
func (x *ShopExchangeInfo) Reset() {
@ -1448,6 +1460,13 @@ func (x *ShopExchangeInfo) GetTelCharge() int32 {
return 0
}
func (x *ShopExchangeInfo) GetItemId() int32 {
if x != nil {
return x.ItemId
}
return 0
}
type ExchangeType struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -2359,7 +2378,7 @@ var file_shop_proto_rawDesc = []byte{
0x50, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x2e, 0x0a, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73,
0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68,
0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0xa0, 0x01, 0x0a, 0x0e, 0x43, 0x53, 0x53, 0x68,
0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0xc4, 0x01, 0x0a, 0x0e, 0x43, 0x53, 0x53, 0x68,
0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f,
0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f,
0x64, 0x73, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
@ -2369,168 +2388,173 @@ var file_shop_proto_rawDesc = []byte{
0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65,
0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01,
0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x74, 0x0a, 0x0e, 0x53, 0x43,
0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x07,
0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e,
0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49,
0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64,
0x22, 0x14, 0x0a, 0x12, 0x43, 0x53, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xb0, 0x02, 0x0a, 0x10, 0x53, 0x68, 0x6f, 0x70, 0x45,
0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x54,
0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12,
0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a,
0x04, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x52, 0x75, 0x6c,
0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01,
0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53,
0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x61, 0x79,
0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x44,
0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12,
0x2a, 0x0a, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54,
0x79, 0x70, 0x65, 0x52, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54,
0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x22, 0x60, 0x0a, 0x0c, 0x45, 0x78, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69,
0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12,
0x16, 0x0a, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18,
0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49,
0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x70, 0x0a, 0x12, 0x53,
0x43, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73,
0x74, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x2c, 0x0a, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16,
0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0xc9, 0x01,
0x0a, 0x09, 0x43, 0x53, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47,
0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f,
0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50,
0x61, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x75, 0x79, 0x49, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x42, 0x75, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a,
0x0a, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a,
0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64,
0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78,
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0x4b, 0x0a, 0x09, 0x53, 0x43, 0x50,
0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f,
0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74,
0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x2a, 0x0a, 0x10, 0x43, 0x53, 0x47, 0x65, 0x74, 0x50,
0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70,
0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79,
0x70, 0x65, 0x22, 0x3c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16,
0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75,
0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d,
0x22, 0xd3, 0x01, 0x0a, 0x0b, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74,
0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f,
0x6e, 0x73, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06,
0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d,
0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f,
0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x49, 0x74,
0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f,
0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52,
0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x07, 0x20, 0x01,
0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x39, 0x0a, 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50,
0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x49, 0x6e,
0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e,
0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x49, 0x6e, 0x66,
0x6f, 0x22, 0x4a, 0x0a, 0x0c, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64,
0x72, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64,
0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x12, 0x0e, 0x0a,
0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x38, 0x0a,
0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72,
0x73, 0x12, 0x24, 0x0a, 0x05, 0x41, 0x64, 0x64, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61,
0x52, 0x05, 0x41, 0x64, 0x64, 0x72, 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x72, 0x44,
0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x59, 0x0a, 0x0f, 0x53, 0x43,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x22, 0x0a,
0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68,
0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66,
0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x80, 0x02, 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, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x56, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02,
0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75,
0x67, 0x68, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x74, 0x74, 0x10, 0x05, 0x12, 0x18,
0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53,
0x6f, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63,
0x63, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x43, 0x6f, 0x69,
0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x74,
0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x09, 0x2a, 0x91, 0x05, 0x0a, 0x09, 0x53, 0x50, 0x61,
0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49,
0x4e, 0x46, 0x4f, 0x10, 0xc4, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xc5, 0x13,
0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48,
0x4f, 0x50, 0x5f, 0x41, 0x44, 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc6, 0x13, 0x12, 0x1c,
0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50,
0x5f, 0x41, 0x44, 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc7, 0x13, 0x12, 0x1d, 0x0a, 0x18,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56,
0x43, 0x50, 0x41, 0x59, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc8, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56, 0x43,
0x50, 0x41, 0x59, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc9, 0x13, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43,
0x48, 0x41, 0x4e, 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xca, 0x13, 0x12, 0x22,
0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50,
0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10,
0xcb, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcc, 0x13,
0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48,
0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcd, 0x13, 0x12, 0x20,
0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50,
0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xce, 0x13,
0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48,
0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10,
0xcf, 0x13, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x49,
0x56, 0x45, 0x43, 0x4f, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd2, 0x13, 0x12, 0x15,
0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x41, 0x59, 0x49, 0x4e,
0x46, 0x4f, 0x10, 0xd3, 0x13, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd4, 0x13, 0x12, 0x1c, 0x0a, 0x17,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49,
0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xd5, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46,
0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xd6, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, 0x44, 0x44, 0x52, 0x10,
0xd7, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50,
0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, 0x44, 0x44, 0x52, 0x10, 0xd8, 0x13, 0x12, 0x1e, 0x0a, 0x19,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45,
0x5f, 0x56, 0x49, 0x50, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xd9, 0x13, 0x12, 0x1e, 0x0a, 0x19,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45,
0x5f, 0x56, 0x49, 0x50, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xda, 0x13, 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, 0x73, 0x68,
0x6f, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x78,
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x74,
0x0a, 0x0e, 0x53, 0x43, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a,
0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x52, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72,
0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64,
0x65, 0x72, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x53, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78,
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xc8, 0x02, 0x0a, 0x10, 0x53,
0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54,
0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a,
0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d,
0x65, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64,
0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12,
0x1c, 0x0a, 0x09, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01,
0x28, 0x05, 0x52, 0x09, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a,
0x0b, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0b, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12,
0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18,
0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69,
0x6d, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12,
0x1c, 0x0a, 0x09, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01,
0x28, 0x05, 0x52, 0x09, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x16, 0x0a,
0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49,
0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x60, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4a,
0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a, 0x50, 0x72,
0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
0x05, 0x52, 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20,
0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x70, 0x0a, 0x12, 0x53, 0x43, 0x53, 0x68, 0x6f,
0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a,
0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12,
0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x49,
0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x68, 0x6f,
0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e,
0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x09, 0x43, 0x53,
0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49,
0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61,
0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x75, 0x79, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x42, 0x75, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x45,
0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65,
0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e,
0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0x4b, 0x0a, 0x09, 0x53, 0x43, 0x50, 0x61, 0x79, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55,
0x72, 0x6c, 0x22, 0x2a, 0x0a, 0x10, 0x43, 0x53, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x49, 0x6e,
0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3c,
0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74,
0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d,
0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0xd3, 0x01, 0x0a,
0x0b, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07,
0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f,
0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d,
0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e,
0x73, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73,
0x75, 0x6d, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f,
0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75,
0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
0x12, 0x2a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e,
0x66, 0x6f, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05,
0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61,
0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02,
0x54, 0x73, 0x22, 0x39, 0x0a, 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x49, 0x6e,
0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x50, 0x61, 0x79, 0x49,
0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x4a, 0x0a,
0x0c, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a,
0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f,
0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18,
0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x38, 0x0a, 0x10, 0x53, 0x43, 0x47,
0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x24, 0x0a,
0x05, 0x41, 0x64, 0x64, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73,
0x68, 0x6f, 0x70, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x64,
0x64, 0x72, 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12,
0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12,
0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41,
0x64, 0x64, 0x72, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56,
0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x59, 0x0a, 0x0f, 0x53, 0x43, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x69, 0x6e, 0x66,
0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53,
0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a,
0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x2a, 0x95, 0x02, 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, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x43, 0x6f, 0x69,
0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d,
0x69, 0x74, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x04,
0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x74, 0x74, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x6f, 0x6c, 0x64, 0x4f,
0x75, 0x74, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x63, 0x10, 0x07, 0x12,
0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74,
0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75,
0x67, 0x68, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74,
0x53, 0x49, 0x4d, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x0a, 0x2a, 0x91, 0x05, 0x0a, 0x09, 0x53, 0x50,
0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a,
0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f,
0x49, 0x4e, 0x46, 0x4f, 0x10, 0xc4, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xc5,
0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53,
0x48, 0x4f, 0x50, 0x5f, 0x41, 0x44, 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc6, 0x13, 0x12,
0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f,
0x50, 0x5f, 0x41, 0x44, 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc7, 0x13, 0x12, 0x1d, 0x0a,
0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f,
0x56, 0x43, 0x50, 0x41, 0x59, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc8, 0x13, 0x12, 0x1d, 0x0a, 0x18,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56,
0x43, 0x50, 0x41, 0x59, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc9, 0x13, 0x12, 0x22, 0x0a, 0x1d, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58,
0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xca, 0x13, 0x12,
0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f,
0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44,
0x10, 0xcb, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcc,
0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53,
0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcd, 0x13, 0x12,
0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f,
0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xce,
0x13, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53,
0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54,
0x10, 0xcf, 0x13, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x53, 0x43, 0x5f, 0x47,
0x49, 0x56, 0x45, 0x43, 0x4f, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd2, 0x13, 0x12,
0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x41, 0x59, 0x49,
0x4e, 0x46, 0x4f, 0x10, 0xd3, 0x13, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd4, 0x13, 0x12, 0x1c, 0x0a,
0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59,
0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xd5, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e,
0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xd6, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, 0x44, 0x44, 0x52,
0x10, 0xd7, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, 0x44, 0x44, 0x52, 0x10, 0xd8, 0x13, 0x12, 0x1e, 0x0a,
0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54,
0x45, 0x5f, 0x56, 0x49, 0x50, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xd9, 0x13, 0x12, 0x1e, 0x0a,
0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54,
0x45, 0x5f, 0x56, 0x49, 0x50, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xda, 0x13, 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, 0x73,
0x68, 0x6f, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -13,6 +13,7 @@ enum OpResultCode {
OPRC_ExchangeLimitAcc = 7; //,
OPRC_JCoinNotEnough = 8;//
OPRC_VipLevelNotEnough = 9;//Vip等级不足
OPRC_NotSIMCode = 10;//
}
//
enum SPacketID {
@ -151,6 +152,7 @@ message CSShopExchange{
string Comment = 4; //
int32 Id = 5;//Id ExType中的id3
int32 Amount = 6;//
int32 ExchangeType = 7; // 1- 2-
}
message SCShopExchange{
OpResultCode RetCode = 1;
@ -172,6 +174,7 @@ message ShopExchangeInfo{
int32 DayPlayLimit = 8; //
repeated ExchangeType ExType = 9;//
int32 TelCharge = 10; //
int32 ItemId = 11;//Id
}

View File

@ -91,6 +91,7 @@ const (
TienLenPacketID_PACKET_SCTienLenFirstOpPos TienLenPacketID = 5383 //首出玩家
TienLenPacketID_PACKET_SCTienLenCardTest TienLenPacketID = 5384 //测试数据
TienLenPacketID_PACKET_SCTienLenThinkLongCnt TienLenPacketID = 5385 // 长考次数
TienLenPacketID_PACKET_SCTienLenFirstGiveItemItem TienLenPacketID = 5386 // 第一次赠送记牌器道具
)
// Enum value maps for TienLenPacketID.
@ -113,6 +114,7 @@ var (
5383: "PACKET_SCTienLenFirstOpPos",
5384: "PACKET_SCTienLenCardTest",
5385: "PACKET_SCTienLenThinkLongCnt",
5386: "PACKET_SCTienLenFirstGiveItemItem",
}
TienLenPacketID_value = map[string]int32{
"PACKET_TienLenZERO": 0,
@ -132,6 +134,7 @@ var (
"PACKET_SCTienLenFirstOpPos": 5383,
"PACKET_SCTienLenCardTest": 5384,
"PACKET_SCTienLenThinkLongCnt": 5385,
"PACKET_SCTienLenFirstGiveItemItem": 5386,
}
)
@ -2029,6 +2032,62 @@ func (x *SCTienLenPlayerThinkLongCnt) GetThinkLongCnt() int32 {
return 0
}
//PACKET_SCTienLenFirstGiveItemItem
type SCTienLenPlayerFirstGiveItemItem struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` // 赠送的道具ID
ItemRecExpireTime int64 `protobuf:"varint,2,opt,name=ItemRecExpireTime,proto3" json:"ItemRecExpireTime,omitempty"` // 道具到期时间
}
func (x *SCTienLenPlayerFirstGiveItemItem) Reset() {
*x = SCTienLenPlayerFirstGiveItemItem{}
if protoimpl.UnsafeEnabled {
mi := &file_tienlen_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SCTienLenPlayerFirstGiveItemItem) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SCTienLenPlayerFirstGiveItemItem) ProtoMessage() {}
func (x *SCTienLenPlayerFirstGiveItemItem) ProtoReflect() protoreflect.Message {
mi := &file_tienlen_proto_msgTypes[20]
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 SCTienLenPlayerFirstGiveItemItem.ProtoReflect.Descriptor instead.
func (*SCTienLenPlayerFirstGiveItemItem) Descriptor() ([]byte, []int) {
return file_tienlen_proto_rawDescGZIP(), []int{20}
}
func (x *SCTienLenPlayerFirstGiveItemItem) GetItemId() int32 {
if x != nil {
return x.ItemId
}
return 0
}
func (x *SCTienLenPlayerFirstGiveItemItem) GetItemRecExpireTime() int64 {
if x != nil {
return x.ItemRecExpireTime
}
return 0
}
var File_tienlen_proto protoreflect.FileDescriptor
var file_tienlen_proto_rawDesc = []byte{
@ -2321,49 +2380,58 @@ var file_tienlen_proto_rawDesc = []byte{
0x72, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x12, 0x22, 0x0a,
0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e,
0x74, 0x2a, 0x3e, 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, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x69, 0x6e, 0x74, 0x10,
0x02, 0x2a, 0xb6, 0x04, 0x0a, 0x0f, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x61, 0x63,
0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1d, 0x0a,
0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65,
0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x29, 0x12, 0x1e, 0x0a, 0x19,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e,
0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xfb, 0x29, 0x12, 0x1d, 0x0a, 0x18,
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,
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, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xff, 0x29, 0x12, 0x19,
0x0a, 0x14, 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, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d,
0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x81, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75,
0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x82, 0x2a, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61,
0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x83, 0x2a, 0x12,
0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e,
0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53,
0x6e, 0x69, 0x64, 0x10, 0x84, 0x2a, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x10, 0x85, 0x2a, 0x12, 0x17,
0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c,
0x65, 0x6e, 0x41, 0x49, 0x10, 0x86, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74,
0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x87, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b,
0x74, 0x22, 0x68, 0x0a, 0x20, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c,
0x61, 0x79, 0x65, 0x72, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x69, 0x76, 0x65, 0x49, 0x74, 0x65,
0x6d, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x2c, 0x0a,
0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69,
0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65,
0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x2a, 0x3e, 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, 0x12, 0x0d, 0x0a, 0x09,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x2a, 0xde, 0x04, 0x0a, 0x0f,
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12,
0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65,
0x6e, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49,
0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x29, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74,
0x61, 0x74, 0x65, 0x10, 0xfb, 0x29, 0x12, 0x1d, 0x0a, 0x18, 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, 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, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xff, 0x29, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64,
0x54, 0x65, 0x73, 0x74, 0x10, 0x88, 0x2a, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x54, 0x68, 0x69, 0x6e, 0x6b,
0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x10, 0x89, 0x2a, 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, 0x74, 0x69, 0x65, 0x6e,
0x6c, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x10, 0x80, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65,
0x64, 0x10, 0x81, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73,
0x10, 0x82, 0x2a, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65,
0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x83, 0x2a, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x10, 0x84, 0x2a,
0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65,
0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e,
0x63, 0x65, 0x4e, 0x75, 0x6d, 0x10, 0x85, 0x2a, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, 0x10, 0x86,
0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69,
0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10,
0x87, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54,
0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x10, 0x88,
0x2a, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69,
0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e,
0x74, 0x10, 0x89, 0x2a, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x69, 0x76,
0x65, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x10, 0x8a, 0x2a, 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, 0x74, 0x69,
0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -2379,42 +2447,43 @@ func file_tienlen_proto_rawDescGZIP() []byte {
}
var file_tienlen_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_tienlen_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
var file_tienlen_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
var file_tienlen_proto_goTypes = []interface{}{
(OpResultCode)(0), // 0: tienlen.OpResultCode
(TienLenPacketID)(0), // 1: tienlen.TienLenPacketID
(*TienLenPlayerData)(nil), // 2: tienlen.TienLenPlayerData
(*LastDelCard)(nil), // 3: tienlen.LastDelCard
(*SCTienLenRoomInfo)(nil), // 4: tienlen.SCTienLenRoomInfo
(*SCTienLenRoomState)(nil), // 5: tienlen.SCTienLenRoomState
(*CSTienLenPlayerOp)(nil), // 6: tienlen.CSTienLenPlayerOp
(*SCTienLenPlayerOp)(nil), // 7: tienlen.SCTienLenPlayerOp
(*SCTienLenPlayerEnter)(nil), // 8: tienlen.SCTienLenPlayerEnter
(*SCTienLenPlayerLeave)(nil), // 9: tienlen.SCTienLenPlayerLeave
(*AddItem)(nil), // 10: tienlen.AddItem
(*TienLenPlayerGameBilled)(nil), // 11: tienlen.TienLenPlayerGameBilled
(*SCTienLenGameBilled)(nil), // 12: tienlen.SCTienLenGameBilled
(*SCTienLenSmallGameBilled)(nil), // 13: tienlen.SCTienLenSmallGameBilled
(*SCTienLenCard)(nil), // 14: tienlen.SCTienLenCard
(*SCTienLenCardTest)(nil), // 15: tienlen.SCTienLenCardTest
(*SCTienLenCurOpPos)(nil), // 16: tienlen.SCTienLenCurOpPos
(*SCTienLenUpdateMasterSnid)(nil), // 17: tienlen.SCTienLenUpdateMasterSnid
(*SCTienLenUpdateAudienceNum)(nil), // 18: tienlen.SCTienLenUpdateAudienceNum
(*SCTienLenAIData)(nil), // 19: tienlen.SCTienLenAIData
(*SCTienLenFirstOpPos)(nil), // 20: tienlen.SCTienLenFirstOpPos
(*SCTienLenPlayerThinkLongCnt)(nil), // 21: tienlen.SCTienLenPlayerThinkLongCnt
nil, // 22: tienlen.TienLenPlayerData.ItemsEntry
nil, // 23: tienlen.SCTienLenCardTest.GradesEntry
(OpResultCode)(0), // 0: tienlen.OpResultCode
(TienLenPacketID)(0), // 1: tienlen.TienLenPacketID
(*TienLenPlayerData)(nil), // 2: tienlen.TienLenPlayerData
(*LastDelCard)(nil), // 3: tienlen.LastDelCard
(*SCTienLenRoomInfo)(nil), // 4: tienlen.SCTienLenRoomInfo
(*SCTienLenRoomState)(nil), // 5: tienlen.SCTienLenRoomState
(*CSTienLenPlayerOp)(nil), // 6: tienlen.CSTienLenPlayerOp
(*SCTienLenPlayerOp)(nil), // 7: tienlen.SCTienLenPlayerOp
(*SCTienLenPlayerEnter)(nil), // 8: tienlen.SCTienLenPlayerEnter
(*SCTienLenPlayerLeave)(nil), // 9: tienlen.SCTienLenPlayerLeave
(*AddItem)(nil), // 10: tienlen.AddItem
(*TienLenPlayerGameBilled)(nil), // 11: tienlen.TienLenPlayerGameBilled
(*SCTienLenGameBilled)(nil), // 12: tienlen.SCTienLenGameBilled
(*SCTienLenSmallGameBilled)(nil), // 13: tienlen.SCTienLenSmallGameBilled
(*SCTienLenCard)(nil), // 14: tienlen.SCTienLenCard
(*SCTienLenCardTest)(nil), // 15: tienlen.SCTienLenCardTest
(*SCTienLenCurOpPos)(nil), // 16: tienlen.SCTienLenCurOpPos
(*SCTienLenUpdateMasterSnid)(nil), // 17: tienlen.SCTienLenUpdateMasterSnid
(*SCTienLenUpdateAudienceNum)(nil), // 18: tienlen.SCTienLenUpdateAudienceNum
(*SCTienLenAIData)(nil), // 19: tienlen.SCTienLenAIData
(*SCTienLenFirstOpPos)(nil), // 20: tienlen.SCTienLenFirstOpPos
(*SCTienLenPlayerThinkLongCnt)(nil), // 21: tienlen.SCTienLenPlayerThinkLongCnt
(*SCTienLenPlayerFirstGiveItemItem)(nil), // 22: tienlen.SCTienLenPlayerFirstGiveItemItem
nil, // 23: tienlen.TienLenPlayerData.ItemsEntry
nil, // 24: tienlen.SCTienLenCardTest.GradesEntry
}
var file_tienlen_proto_depIdxs = []int32{
22, // 0: tienlen.TienLenPlayerData.Items:type_name -> tienlen.TienLenPlayerData.ItemsEntry
23, // 0: tienlen.TienLenPlayerData.Items:type_name -> tienlen.TienLenPlayerData.ItemsEntry
2, // 1: tienlen.SCTienLenRoomInfo.Players:type_name -> tienlen.TienLenPlayerData
3, // 2: tienlen.SCTienLenRoomInfo.LastDelCards:type_name -> tienlen.LastDelCard
0, // 3: tienlen.SCTienLenPlayerOp.OpRetCode:type_name -> tienlen.OpResultCode
2, // 4: tienlen.SCTienLenPlayerEnter.Data:type_name -> tienlen.TienLenPlayerData
10, // 5: tienlen.TienLenPlayerGameBilled.AddItems:type_name -> tienlen.AddItem
11, // 6: tienlen.SCTienLenGameBilled.Datas:type_name -> tienlen.TienLenPlayerGameBilled
23, // 7: tienlen.SCTienLenCardTest.Grades:type_name -> tienlen.SCTienLenCardTest.GradesEntry
24, // 7: tienlen.SCTienLenCardTest.Grades:type_name -> tienlen.SCTienLenCardTest.GradesEntry
8, // [8:8] is the sub-list for method output_type
8, // [8:8] is the sub-list for method input_type
8, // [8:8] is the sub-list for extension type_name
@ -2668,6 +2737,18 @@ func file_tienlen_proto_init() {
return nil
}
}
file_tienlen_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SCTienLenPlayerFirstGiveItemItem); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
@ -2675,7 +2756,7 @@ func file_tienlen_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_tienlen_proto_rawDesc,
NumEnums: 2,
NumMessages: 22,
NumMessages: 23,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -28,6 +28,7 @@ enum TienLenPacketID {
PACKET_SCTienLenFirstOpPos = 5383;//
PACKET_SCTienLenCardTest = 5384;//
PACKET_SCTienLenThinkLongCnt = 5385; //
PACKET_SCTienLenFirstGiveItemItem = 5386; //
}
@ -237,4 +238,10 @@ message SCTienLenFirstOpPos {
//PACKET_SCTienLenThinkLongCnt
message SCTienLenPlayerThinkLongCnt {
int32 ThinkLongCnt = 1; //
}
//PACKET_SCTienLenFirstGiveItemItem
message SCTienLenPlayerFirstGiveItemItem {
int32 ItemId = 1; // ID
int64 ItemRecExpireTime = 2;//
}

File diff suppressed because it is too large Load Diff

View File

@ -337,6 +337,7 @@ message CommonNotice {
int32 NoticeId = 11;
int32 IsLoop=12;
int32 LoopTime=13;
repeated string OnChannelName = 14;
}
message CommonNoticeList{
repeated CommonNotice List = 1;
@ -354,6 +355,7 @@ message ExchangeShop {
int32 DayPlayLimit = 8; //
repeated ExchangeType ExType = 9;//
int32 TelCharge = 10; //
int32 ItemId = 11;//Id
}
//
@ -441,6 +443,7 @@ message GameMatchDate {
int32 UseRobot = 21; //0 1
int32 MatchLevel = 22; //
repeated string OnChannelName = 23; //
int32 CardType = 24; //
}
// etcd /game/game_match
@ -576,9 +579,11 @@ message WbCtrlCfg{
}
//
// etcd /game/plt/entryswitch/[id]/[]
message EntrySwitch{
string Platform = 1;
repeated int32 Datas = 2;
int32 Index = 2; //
repeated bool Switch = 3; // 0 1hot开关 2new开关
}
message ChessRankConfig {
@ -630,4 +635,11 @@ message WelfarePhoneLotteryStatus{
message WelfareCollectConfig{
string Platform = 1;
int32 Switch = 2; // 1. 2.
}
// etcd /game/channel/switch
message ChannelSwitchConfig{
int32 Tp = 1; // 1. 2.
string Platform = 2; // id
repeated string OnChannelName = 3; //
}

File diff suppressed because it is too large Load Diff

View File

@ -684,6 +684,8 @@ message ASCreateExchangeOrder {
int32 Cash =11;//
int32 Amount = 12;//
int32 ExchangeType = 13;
int32 GiveType = 14; // 1
int32 TelCharge = 15; //
}
message SACreateExchangeOrder {
@ -855,6 +857,7 @@ message ASGetMatchAwardCode{
int32 ItemID = 3; // id
int64 Money = 4; //
string Tel = 5; //
int32 CardType = 6; //
}
message SAGetMatchAwardCode{
TagCode Tag = 1; //
@ -893,4 +896,26 @@ message ASPlayerDelete{
message SAPlayerDelete{
TagCode Tag = 1; //
string Msg = 2; //()
}
}
// [/get_invite_link]
message ASPlayerInviteLink{
string platform = 1; // id
int32 SnId = 2; // id
}
message SAPlayerInviteLink{
TagCode Tag = 1; //
string Msg = 2; //()
string Link = 3; //
}
// [/api/player/AddItem]
message ASAddItemById{
int32 Snid = 1; // id
string Platform = 2; // id
repeated ItemInfo ItemInfo = 3;//
}
message SAAddItemById{
TagCode Tag = 1; //
string Msg = 2; //()
}

View File

@ -24,17 +24,18 @@ const (
type OpResultCode int32
const (
OpResultCode_OPRC_Sucess OpResultCode = 0 //成功
OpResultCode_OPRC_Error OpResultCode = 1 //失败
OpResultCode_OPRC_NoTimes OpResultCode = 2 //没有领取次数
OpResultCode_OPRC_CoinTooMore OpResultCode = 3 // 金币过多不符合领取
OpResultCode_OPRC_ErrCoin OpResultCode = 4 // 钻石不足
OpResultCode_OPRC_AlreadyBind OpResultCode = 5 // 已经绑定过邀请人
OpResultCode_OPRC_BindSelf OpResultCode = 6 // 邀请人不能是自己
OpResultCode_OPRC_MyInvite OpResultCode = 7 // 邀请人不能是我邀请的人
OpResultCode_OPRC_NotExist OpResultCode = 8 // 邀请人不存在
OpResultCode_OPRC_DiamondLess OpResultCode = 9 // 钻石不足
OpResultCode_OPRC_PigbankNotFull OpResultCode = 10 // 存钱罐未满
OpResultCode_OPRC_Sucess OpResultCode = 0 //成功
OpResultCode_OPRC_Error OpResultCode = 1 //失败
OpResultCode_OPRC_NoTimes OpResultCode = 2 //没有领取次数
OpResultCode_OPRC_CoinTooMore OpResultCode = 3 // 金币过多不符合领取
OpResultCode_OPRC_ErrCoin OpResultCode = 4 // 钻石不足
OpResultCode_OPRC_AlreadyBind OpResultCode = 5 // 已经绑定过邀请人
OpResultCode_OPRC_BindSelf OpResultCode = 6 // 邀请人不能是自己
OpResultCode_OPRC_MyInvite OpResultCode = 7 // 邀请人不能是我邀请的人
OpResultCode_OPRC_NotExist OpResultCode = 8 // 邀请人不存在
OpResultCode_OPRC_DiamondLess OpResultCode = 9 // 钻石不足
OpResultCode_OPRC_PigbankNotFull OpResultCode = 10 // 存钱罐未满
OpResultCode_OPRC_PigbankOverTakeTimes OpResultCode = 11 // 存钱罐超过每日领取次数
)
// Enum value maps for OpResultCode.
@ -51,19 +52,21 @@ var (
8: "OPRC_NotExist",
9: "OPRC_DiamondLess",
10: "OPRC_PigbankNotFull",
11: "OPRC_PigbankOverTakeTimes",
}
OpResultCode_value = map[string]int32{
"OPRC_Sucess": 0,
"OPRC_Error": 1,
"OPRC_NoTimes": 2,
"OPRC_CoinTooMore": 3,
"OPRC_ErrCoin": 4,
"OPRC_AlreadyBind": 5,
"OPRC_BindSelf": 6,
"OPRC_MyInvite": 7,
"OPRC_NotExist": 8,
"OPRC_DiamondLess": 9,
"OPRC_PigbankNotFull": 10,
"OPRC_Sucess": 0,
"OPRC_Error": 1,
"OPRC_NoTimes": 2,
"OPRC_CoinTooMore": 3,
"OPRC_ErrCoin": 4,
"OPRC_AlreadyBind": 5,
"OPRC_BindSelf": 6,
"OPRC_MyInvite": 7,
"OPRC_NotExist": 8,
"OPRC_DiamondLess": 9,
"OPRC_PigbankNotFull": 10,
"OPRC_PigbankOverTakeTimes": 11,
}
)
@ -2185,11 +2188,12 @@ type SCPigbankGetInfo struct {
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"` // 存钱罐最储存值
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"` // 存钱罐最储存值
DayBuyMaxCnt int32 `protobuf:"varint,6,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数
}
func (x *SCPigbankGetInfo) Reset() {
@ -2259,6 +2263,13 @@ func (x *SCPigbankGetInfo) GetBankMaxCoin() int64 {
return 0
}
func (x *SCPigbankGetInfo) GetDayBuyMaxCnt() int32 {
if x != nil {
return x.DayBuyMaxCnt
}
return 0
}
// 存钱罐领取金币
//PACKET_CSPigbankTakeCoin
type CSPigbankTakeCoin struct {
@ -2306,11 +2317,12 @@ type SCPigbankTakeCoin struct {
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"` // 存钱罐最储存值
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"` // 存钱罐最储存值
DayBuyMaxCnt int32 `protobuf:"varint,6,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数
}
func (x *SCPigbankTakeCoin) Reset() {
@ -2380,6 +2392,13 @@ func (x *SCPigbankTakeCoin) GetBankMaxCoin() int64 {
return 0
}
func (x *SCPigbankTakeCoin) GetDayBuyMaxCnt() int32 {
if x != nil {
return x.DayBuyMaxCnt
}
return 0
}
var File_welfare_proto protoreflect.FileDescriptor
var file_welfare_proto_rawDesc = []byte{
@ -2577,7 +2596,7 @@ var file_welfare_proto_rawDesc = []byte{
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, 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,
0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe9, 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,
@ -2589,100 +2608,107 @@ var file_welfare_proto_rawDesc = []byte{
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,
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,
0x69, 0x6d, 0x65, 0x73, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43,
0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x14,
0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x42, 0x69,
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,
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, 0x12, 0x14, 0x0a,
0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x65, 0x73,
0x73, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62,
0x61, 0x6e, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x0a, 0x2a, 0xcd, 0x07, 0x0a,
0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00,
0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45,
0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44,
0x10, 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46,
0x55, 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e,
0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55,
0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54,
0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, 0x0a, 0x1b,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47,
0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, 0x12, 0x1f,
0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46,
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,
0x9d, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10,
0x9e, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10,
0x9f, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46,
0x4f, 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49,
0x4e, 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41,
0x59, 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10,
0xa3, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e,
0x46, 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41,
0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49,
0x4e, 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e,
0x50, 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, 0x16,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, 0x6c,
0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66,
0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, 0x18,
0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x49,
0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10,
0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50,
0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, 0x16,
0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67,
0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xdf, 0x16, 0x12, 0x1d,
0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61,
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,
0x03, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22,
0x0a, 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x06,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43,
0x6e, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54,
0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xf0, 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, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79,
0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x61,
0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x2a, 0x86, 0x02, 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, 0x12, 0x10, 0x0a, 0x0c,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x02, 0x12, 0x14,
0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f,
0x72, 0x65, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72,
0x43, 0x6f, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41,
0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x42, 0x69, 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, 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, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x69,
0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x65, 0x73, 0x73, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x75,
0x6c, 0x6c, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67,
0x62, 0x61, 0x6e, 0x6b, 0x4f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x73, 0x10, 0x0b, 0x2a, 0xcd, 0x07, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49,
0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50,
0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c,
0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54,
0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, 0x20, 0x0a,
0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f,
0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, 0x14, 0x12,
0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c,
0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x97,
0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57,
0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e,
0x10, 0x98, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49,
0x47, 0x4e, 0x10, 0x99, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 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, 0x9d, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42,
0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9e, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42,
0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9f, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53,
0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49,
0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, 0x1c, 0x0a,
0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f,
0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49,
0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa3, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54,
0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, 0x0a, 0x1c,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43,
0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, 0x14, 0x12,
0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c,
0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, 0x12, 0x1d,
0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46,
0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, 0x18, 0x0a,
0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65,
0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd5,
0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e,
0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e,
0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd8, 0x16, 0x12,
0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64,
0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74,
0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e,
0x66, 0x6f, 0x10, 0xdf, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 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 (

View File

@ -14,6 +14,7 @@ enum OpResultCode {
OPRC_NotExist = 8; //
OPRC_DiamondLess = 9; //
OPRC_PigbankNotFull = 10; //
OPRC_PigbankOverTakeTimes = 11; //
}
//
@ -277,6 +278,7 @@ message SCPigbankGetInfo{
int32 TakeTimes = 3; //
int64 CostDiamond = 4; //
int64 BankMaxCoin = 5; //
int32 DayBuyMaxCnt = 6; //
}
@ -291,6 +293,8 @@ message SCPigbankTakeCoin{
OpResultCode OpRetCode = 1; //
int64 TakeCoinNum = 2; //
int32 TakeTimes = 3; //
int64 CostDiamond = 4; //
int64 BankMaxCoin = 5; //
int64 CostDiamond = 4; //
int64 BankMaxCoin = 5; //
int32 DayBuyMaxCnt = 6; //
}

2
public

@ -1 +1 @@
Subproject commit a7fc5af077865e1daf27c8e04ff3247aa643a815
Subproject commit bff2b12f347a04ddce3d6aafb9ae6461ce2929cf

View File

@ -123,20 +123,13 @@ func (this *ProtobufDataLoader) Reload(fileFullPath string) error {
}
var DataMgr = &dataMgr{
loaders: make(map[string]DataLoader),
afterLoaders: make(map[string][]DataLoader),
cacheGameFreeId: make(map[int32]CacheGameType),
loaders: make(map[string]DataLoader),
afterLoaders: make(map[string][]DataLoader),
}
type dataMgr struct {
loaders map[string]DataLoader
afterLoaders map[string][]DataLoader
cacheGameFreeId map[int32]CacheGameType
}
type CacheGameType struct {
Ids []int32
GameType int32
}
// register 注册数据加载器,这个应该只是自动生产的代码中会用到,其它地方用不到
@ -160,19 +153,3 @@ func (this *dataMgr) GetLoader(name string) []DataLoader {
}
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,32 +1,32 @@
package srvdata
import (
"strconv"
"sort"
)
func init() {
DataMgr.RegisterLoader("DB_Game_Drop.dat", GameDropMgrSington)
DataMgr.RegisterLoader("DB_Game_Drop.dat", GameDropMgrSingleton)
}
var GameDropMgrSington = &GameDropMgr{
GameDropData: make(map[string][]*GameDropData),
}
var GameDropMgrSingleton = &GameDropMgr{}
type GameDropMgr struct {
GameDropData map[string][]*GameDropData
GameDropData []*GameDropData
}
func (this *GameDropMgr) Load(fileFullPath string) error {
GameDropMgrSington.Init()
GameDropMgrSingleton.Init()
return nil
}
func (this *GameDropMgr) Reload(fileFullPath string) error {
GameDropMgrSington.Init()
GameDropMgrSingleton.Init()
return nil
}
type GameDropData struct {
Id int32
BaseCoin int64
ItemId int32
Rate int32
MinAmount int32
@ -37,46 +37,70 @@ func (this *GameDropMgr) ModuleName() string {
return "GameDropMgr"
}
func (this *GameDropMgr) GetKey(gameid, basescore int32) string {
return strconv.FormatInt(int64(gameid), 10) + "_" + strconv.FormatInt(int64(basescore), 10)
func (this *GameDropMgr) Init() {
this.GameDropData = this.GameDropData[:0]
if PBDB_Game_DropMgr.Datas == nil {
return
}
for _, v := range PBDB_Game_DropMgr.Datas.Arr {
//道具
if v.Amount1 == nil || len(v.Amount1) != 2 {
continue
}
if v.Rate1 <= 0 {
continue
}
gdd1 := &GameDropData{
Id: v.Id,
BaseCoin: int64(v.Bet),
ItemId: v.ItemId1,
Rate: v.Rate1,
MinAmount: v.Amount1[0],
MaxAmount: v.Amount1[1],
}
this.GameDropData = append(this.GameDropData, gdd1)
}
sort.Slice(this.GameDropData, func(i, j int) bool {
return this.GameDropData[i].BaseCoin < this.GameDropData[j].BaseCoin
})
}
func (this *GameDropMgr) Init() {
this.GameDropData = make(map[string][]*GameDropData)
gdArr := PBDB_Game_DropMgr.Datas.Arr
if gdArr != nil {
for _, drop := range gdArr {
key := this.GetKey(drop.GameId, drop.Bet)
//道具1
if drop.Amount1 == nil || len(drop.Amount1) != 2 {
continue
func (this *GameDropMgr) GetDropInfoByBaseScore(baseCoin int32) []*GameDropData {
var ret []*GameDropData
arr := this.GameDropData
if len(arr) == 0 {
return ret
}
i := sort.Search(len(arr), func(i int) bool {
return arr[i].BaseCoin > int64(baseCoin)
})
f := func(n int64, i int) {
for ; i >= 0; i-- {
if arr[i].BaseCoin == n {
ret = append(ret, arr[i])
} else {
break
}
gdd1 := &GameDropData{
ItemId: drop.ItemId1,
Rate: drop.Rate1,
MinAmount: drop.Amount1[0],
MaxAmount: drop.Amount1[1],
}
this.GameDropData[key] = append(this.GameDropData[key], gdd1)
//道具2
//if drop.Amount2 == nil || len(drop.Amount2) != 2 {
// continue
//}
//gdd2 := &GameDropData{
// ItemId: drop.ItemId2,
// Rate: drop.Rate2,
// MinAmount: drop.Amount2[0],
// MaxAmount: drop.Amount2[1],
//}
//this.GameDropData[key] = append(this.GameDropData[key], gdd2)
}
}
}
func (this *GameDropMgr) GetDropInfoByBaseScore(gameid, basescore int32) []*GameDropData {
key := this.GetKey(gameid, basescore)
if gdds, exist := this.GameDropData[key]; exist {
return gdds
// 找到
if i < len(arr) && i > 0 {
n := arr[i-1].BaseCoin
f(n, i-1)
}
return nil
if len(ret) == 0 {
// 没找到,最大底注是否可用
i = len(arr) - 1
n := arr[i].BaseCoin
if n <= int64(baseCoin) {
f(n, i)
}
}
return ret
}

87
srvdata/gamefreemgr.go Normal file
View File

@ -0,0 +1,87 @@
package srvdata
import "mongo.games.com/game/common"
func init() {
DataMgr.RegisterLoader("DB_GameFree.dat", GameFreeMgr)
}
var GameFreeMgr = &GameFree{
GameId: make(map[string][]int32),
GameMode: make(map[int32]map[int32][]int32),
}
type GameFree struct {
GameId map[string][]int32 // GameDif:[]GameId
GameMode map[int32]map[int32][]int32
}
func (this *GameFree) Load(fileFullPath string) error {
this.GameMode = make(map[int32]map[int32][]int32)
this.GameId = make(map[string][]int32)
for _, v := range PBDB_GameFreeMgr.Datas.Arr {
// GameMode
vv, ok := this.GameMode[v.GameId]
if !ok {
vv = make(map[int32][]int32)
this.GameMode[v.GameId] = vv
}
_, ok = vv[v.GameMode]
if !ok {
this.GameMode[v.GameId][v.GameMode] = []int32{v.Id}
} else {
this.GameMode[v.GameId][v.GameMode] = append(this.GameMode[v.GameId][v.GameMode], v.Id)
}
// GameId
this.GameId[v.GameDif] = append(this.GameId[v.GameDif], v.GameId)
}
return nil
}
func (this *GameFree) Reload(fileFullPath string) error {
return this.Load(fileFullPath)
}
func (this *GameFree) GetGameFreeIds(gameId, gameMode int32) (ids []int32, gameType int32) {
mode, ok := this.GameMode[gameId]
if !ok {
return nil, 0
}
ids, ok = mode[gameMode]
if len(ids) > 0 {
data := PBDB_GameFreeMgr.GetData(ids[0])
if data != nil {
gameType = data.GameType
}
}
return
}
func (this *GameFree) GetGameId(gameDif string) []int32 {
return this.GameId[gameDif]
}
func (this *GameFree) IsGameDif(gameId int32, gameDif string) bool {
mode, ok := this.GameMode[gameId]
if !ok {
return false
}
for _, v := range mode {
if len(v) > 0 {
data := PBDB_GameFreeMgr.GetData(v[0])
if data == nil {
return false
}
return data.GameDif == gameDif
} else {
return false
}
}
return false
}
// IsPlayerPool 需要统计在个人水池的游戏
func (this *GameFree) IsPlayerPool(gameId int) bool {
return this.IsGameDif(int32(gameId), common.GameDifTienlen) || this.IsGameDif(int32(gameId), common.GameDifThirteen)
}

View File

@ -56,54 +56,6 @@ func ApiGetImageVerify(appId string, body proto.Message) ([]byte, error) {
return getRequest(appId, "/get_img_verify", nil, body, "http", DEFAULT_TIMEOUT)
}
// 获取包对应的平台和上级关系
//func API_PackageList(appId string) ([]byte, error) {
// //params := make(map[string]string)
// //params["ts"] = strconv.Itoa(int(time.Now().Unix()))
// //return getRequest(appId, "/package_list", params, "http", DEFAULT_TIMEOUT)
// return nil, nil
//}
// 游戏返利配置列表
func API_GetGameRebateConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/getGameRebateConfig", params, "http", time.Duration(time.Second*120))
return nil, nil
}
////获取游戏分组列表
//func API_GetGameGroupData(appId string) ([]byte, error) {
// //params := make(map[string]string)
// //params["ts"] = strconv.Itoa(int(time.Now().Unix()))
// //return getRequest(appId, "/game_config_group_list", params, "http", DEFAULT_TIMEOUT)
// return nil, nil
//}
// 获取公告列表
func API_GetBulletData(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/notice_list", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 获取招商列表
func API_GetCustomerData(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/agent_customer_list", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
////平台详细配置
//func API_GetPlatformConfigData(appId string) ([]byte, error) {
// //params := make(map[string]string)
// //params["ts"] = strconv.Itoa(int(time.Now().Unix()))
// //return getRequest(appId, "/game_config_list", params, "http", time.Duration(time.Second*120))
// return nil, nil
//}
// 获得代理配置
func API_GetPromoterConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
@ -112,77 +64,6 @@ func API_GetPromoterConfig(appId string) ([]byte, error) {
return nil, nil
}
// 黑名单列表
func API_GetBlackData(appId string, page int) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//params["page"] = strconv.Itoa(page)
//return getRequest(appId, "/black_list", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 团队信息
func API_GetSpreadPlayer(appId string, SnId int32, platform string) ([]byte, error) {
//params := make(map[string]string)
//params["snid"] = strconv.Itoa(int(SnId))
//params["platform"] = platform
//return getRequest(appId, "/spread_player", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 获取公共黑名单信息
func API_GetCommonBlackData(appId string, page int) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//params["page"] = strconv.Itoa(page)
//return getRequest(appId, "/black_list_common", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 支付方式
func API_GetPayList(appId string, platform string, guestUser, newUser, userVip int, logicLevels []int32, os, snid int32) ([]byte, error) {
//params := make(map[string]string)
//params["platform"] = platform
//params["guest"] = strconv.Itoa(guestUser)
//params["new"] = strconv.Itoa(newUser)
//params["vip"] = strconv.Itoa(userVip)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//params["os"] = strconv.Itoa(int(os))
//params["snid"] = strconv.Itoa(int(snid))
//
//var logiclevel string
//for _, v := range logicLevels {
// logiclevel = logiclevel + fmt.Sprintf("%v,", v)
//}
//if len(logiclevel) > 0 {
// logiclevel = logiclevel[:len(logiclevel)-1]
// params["logiclevel"] = logiclevel
//}
//return getRequest(appId, "/pay_platform_list", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// CToAPITransfer
func API_Transfer(appId string, info string) ([]byte, error) {
//params := make(map[string]string)
//params["info"] = info
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/c2api_transfer", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
/*
int32 Snid = 1;//用户id
int32 Platform = 2;//用户id
int32 Type = 3;//商品类型
int32 GoodsId = 4;//商品ID
int32 VCard = 5;//消耗V卡
string GoodsName = 6;//兑换物品名称
string UserName = 7;//兑换人姓名
string Mobile = 8;//兑换人手机号
string Comment = 9; //备注信息
*/
// 兑换订单
func API_CreateExchange(appId string, body proto.Message) ([]byte, error) {
@ -215,56 +96,6 @@ func APIGetMatchAwardCode(appId string, body proto.Message) ([]byte, error) {
return postRequest(appId, "/get_match_award_code", nil, body, "http", DEFAULT_TIMEOUT)
}
// 积分商城兑换订单
func API_GradeShopExchangeList(appId, platform string, snid, page, count int32) ([]byte, error) {
//params := make(map[string]string)
//params["Platform"] = platform
//params["SnId"] = strconv.Itoa(int(snid))
//params["Page"] = strconv.Itoa(int(page))
//if page > 0 {
// params["Count"] = strconv.Itoa(int(count))
//}
//params["Ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/list_exchange_shop_order", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 积分商城重置商品库存
func API_GradeShopInitShop(appId string, InitShopIds string) ([]byte, error) {
//params := make(map[string]string)
//params["InitShopIds"] = InitShopIds
//params["Ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/zero_to_reset_exshop", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 发送短信
func API_SendSMSCode(appId string, tel string, code string) error {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//params["phone"] = tel
//params["code"] = code
//buff, err := getRequest(appId, "/send_sms", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return err
//}
//type ApiResult struct {
// Tag int32
// Msg string
//}
//result := ApiResult{}
//err = json.Unmarshal(buff, &result)
//if err != nil {
// return err
//}
//if result.Tag != 0 {
// return errors.New(result.Msg)
//} else {
// return nil
//}
return nil
}
// 支付订单 商城
func API_CreateOrder(appId, orderId string, configid, SnId, shopId int32, platform string, packageTag string, os, deviceId, shopname string,
amount [3]int32, consumptionamount int32, itemInfo []*webapi.ItemInfo, exchangeOrderId, channel string) *webapi.ASCreateOrder {
@ -300,214 +131,6 @@ func API_CreateOrder(appId, orderId string, configid, SnId, shopId int32, platfo
return ret
}
// 兑换订单
func API_CreateExchangeOrder(snid int32, platform string, before_coin, before_safe, exchange_count, tag, bank_id int64,
account, username, ip string, win_times, lose_times, win_total, lose_total int64, os, appId, channel, agent string,
promoterTree int32, packageTag string, giveGold int64, forceTax int64, needFlow int64, curFlow int64, payts int64,
payEndTs int64, newUser int, telephonePromoter int32, deviceId string) (error, int64) {
//params := make(map[string]string)
//params["snid"] = strconv.Itoa(int(snid))
//params["platform"] = platform
//params["before_coin"] = strconv.Itoa(int(before_coin))
//params["before_safe"] = strconv.Itoa(int(before_safe))
//params["exchange_count"] = strconv.Itoa(int(exchange_count))
//params["tag"] = strconv.Itoa(int(tag))
//params["bank_id"] = strconv.Itoa(int(bank_id))
//params["account"] = account
//params["username"] = username
//params["ip"] = ip
//params["win_times"] = strconv.Itoa(int(win_times))
//params["lose_times"] = strconv.Itoa(int(lose_times))
//params["win_total"] = strconv.Itoa(int(win_total))
//params["lose_total"] = strconv.Itoa(int(lose_total))
//params["os"] = DeviceOs(os)
//params["channel"] = channel
//params["promoter"] = agent
//params["promoter_tree"] = strconv.Itoa(int(promoterTree))
//params["packageTag"] = packageTag
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//params["force_tax"] = strconv.Itoa(int(forceTax))
//params["give_gold"] = strconv.Itoa(int(giveGold))
//params["need_flow"] = strconv.Itoa(int(needFlow))
//params["cur_flow"] = strconv.Itoa(int(curFlow))
//params["new"] = strconv.Itoa(newUser)
//params["pay_ts"] = strconv.Itoa(int(payts))
//params["pay_endts"] = strconv.Itoa(int(payEndTs))
//params["telephone_promoter"] = strconv.Itoa(int(telephonePromoter))
//params["deviceid"] = deviceId
//buff, err := getRequest(appId, "/create_exchange_order", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return err, 0
//}
//type ApiResult struct {
// Tag int32
// Msg interface{}
//}
//result := ApiResult{}
//err = json.Unmarshal(buff, &result)
//if err != nil {
// return err, 0
//}
//if result.Tag != 0 {
// errMsg := fmt.Sprintf("Create exchange order result failed._%v", result.Msg)
// return errors.New(errMsg), 0
//} else {
// var id int64
// switch result.Msg.(type) {
// case string:
// c, cr := strconv.Atoi(result.Msg.(string))
// if cr == nil {
// id = int64(c)
// }
// case float64:
// id = int64(result.Msg.(float64))
// }
// return nil, id
//}
return nil, 0
}
// 商品兑换订单
func API_CreateGradeShopExchangeOrder(LogId, appId, platform string, snid, ShopId int32, Ip, ReceiveName, ReceiveTel, ReceiveAddr string,
LastGrade int64) error {
//params := make(map[string]string)
//params["Platform"] = platform //平台号
//params["SnId"] = strconv.Itoa(int(snid)) //玩家Id
//params["LogId"] = LogId //订单id
//params["ShopId"] = strconv.Itoa(int(ShopId)) //商品Id
//params["Ip"] = Ip //IP地址
//params["ReceiveName"] = ReceiveName //收货人名字
//params["ReceiveTel"] = ReceiveTel //收货人电话
//params["ReceiveAddr"] = ReceiveAddr //收货人地址
//params["LastGrade"] = strconv.Itoa(int(LastGrade)) //玩家兑换完剩余积分
//params["Ts"] = strconv.Itoa(int(time.Now().Unix())) //创建时间
//buff, err := getRequest(appId, "/create_exchange_shop_order", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return err
//}
//type ApiResult struct {
// Tag int32
// Msg string
//}
//result := ApiResult{}
//err = json.Unmarshal(buff, &result)
//if err != nil {
// return err
//}
//if result.Tag != 0 {
// errMsg := fmt.Sprintf("Create GradeShop exchange order result failed._%v", result.Msg)
// return errors.New(errMsg)
//} else {
// return nil
//}
return nil
}
// 税收分成
func API_TaxDivide(snid int32, platform, channel, promoter, packageTag string, tax int64, appId string, gameid, gamemode int, gamefreeid, promoterTree int32) (int32, error) {
//params := make(map[string]string)
//params["snid"] = strconv.Itoa(int(snid))
//params["platform"] = platform
//params["tax"] = fmt.Sprintf("%v", tax)
//params["channel"] = channel
//params["promoter"] = promoter
//params["promoter_tree"] = strconv.Itoa(int(promoterTree))
//params["packageTag"] = packageTag
//params["gameId"] = strconv.Itoa(gameid)
//params["modeId"] = strconv.Itoa(gamemode)
//params["gamefreeId"] = strconv.Itoa(int(gamefreeid))
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//buff, err := getRequest(appId, "/tax_divide", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return -1, err
//}
//type ApiResult struct {
// Tag int32
// Msg interface{}
//}
//result := ApiResult{}
//err = json.Unmarshal(buff, &result)
//return result.Tag, err
return 0, nil
}
// 流水推送
func API_SpreadAccount(appId string, gamefreeId int32, data []*PlayerStatement) (int32, error) {
//d, err := json.Marshal(data)
//if err != nil {
// return -1, err
//}
//params := make(map[string]string)
//params["gamefreeId"] = strconv.Itoa(int(gamefreeId))
//params["data"] = string(d[:])
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//buff, err := getRequest(appId, "/spread_account_push", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return -1, err
//}
//type ApiResult struct {
// Tag int32
// Msg interface{}
//}
//result := ApiResult{}
//err = json.Unmarshal(buff, &result)
//return result.Tag, err
return 0, nil
}
// 系统赠送
func API_SystemGive(snid int32, platform, channel, promoter string, ammount, tag int32, appId string, packageTag string) (int32, error) {
//params := make(map[string]string)
//params["snid"] = strconv.Itoa(int(snid))
//params["platform"] = platform
//params["channel"] = channel
//params["promoter"] = promoter
//params["package_tag"] = packageTag
//params["amount"] = fmt.Sprintf("%v", ammount)
//params["tg"] = strconv.Itoa(int(tag))
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//buff, err := getRequest(appId, "/system_give", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return -1, err
//}
//type ApiResult struct {
// Tag int32
// Msg interface{}
//}
//result := ApiResult{}
//err = json.Unmarshal(buff, &result)
//return result.Tag, err
return 0, nil
}
// 首次登录通知
func API_PlayerEvent(event int, platform, packageTag string, snid int32, channel string, promoter string, promoterTree int32, isCreate int, isNew int, isBind int, appId string) (int32, error) {
//params := make(map[string]string)
//params["event"] = strconv.Itoa(event)
//params["snid"] = strconv.Itoa(int(snid))
//params["platform"] = platform
//params["channel"] = channel
//params["promoter"] = promoter
//params["promoter_tree"] = strconv.Itoa(int(promoterTree))
//params["packageTag"] = packageTag
//params["isCreate"] = strconv.Itoa(isCreate)
//params["isNew"] = strconv.Itoa(isNew)
//params["isBind"] = strconv.Itoa(isBind)
//params["create_time"] = strconv.Itoa(int(time.Now().Unix()))
//buff, err := getRequest(appId, "/player_event", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return -1, err
//}
//type ApiResult struct {
// Tag int32
// Msg interface{}
//}
//result := ApiResult{}
//err = json.Unmarshal(buff, &result)
//return result.Tag, err
return 0, nil
}
// 推送全民推广关系链
func API_PushSpreadLink(snid int32, platform, packageTag string, inviterId int, isBind, isForce int, appId string) (int32, error) {
//params := make(map[string]string)
@ -532,84 +155,6 @@ func API_PushSpreadLink(snid int32, platform, packageTag string, inviterId int,
return 0, nil
}
// 推送全民推广关系链
func API_PushInviterIp(snid, inviterId, promoterTree int32, promoter string, bundleId, ip string, os string, appId string) (int32, *PromoterData, error) {
//params := make(map[string]string)
//params["snid"] = strconv.Itoa(int(snid))
//params["bundle_id"] = bundleId
//params["ip"] = ip
//params["os"] = DeviceOs(os)
//params["inviter"] = strconv.Itoa(int(inviterId))
//params["promoter_tree"] = strconv.Itoa(int(promoterTree))
//params["promoter"] = promoter
//
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//buff, err := getRequest(appId, "/push_inviter_ip", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return -1, nil, err
//}
//type ApiResult struct {
// Tag int32
// Msg *PromoterData
//}
//result := ApiResult{}
//err = json.Unmarshal(buff, &result)
//if err != nil {
// type ErrResult struct {
// Tag int32
// Msg string
// }
// errRes := ErrResult{}
// errTag := json.Unmarshal(buff, &errRes)
// if errTag == nil {
// logger.Logger.Warnf("API_PushInviterIp response tag:%v msg:%v err:%v snid:%v packagetag:%v ip:%v ", errRes.Tag, errRes.Msg, snid, bundleId, ip)
// }
//}
//return result.Tag, result.Msg, err
return 0, nil, nil
}
// 推送全民推广关系链
func API_PushInvitePromoter(snid int32, promoter string, appId string) (int32, error) {
//params := make(map[string]string)
//params["snid"] = strconv.Itoa(int(snid))
//params["promoter"] = promoter
//
//buff, err := getRequest(appId, "/bind_pay_exchange", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return -1, err
//}
//type ApiResult struct {
// Tag int32
// Msg interface{}
//}
////fmt.Println("push_spread_link Response:", string(buff[:]))
//result := ApiResult{}
//err = json.Unmarshal(buff, &result)
//return result.Tag, err
return 0, nil
}
// 无限代信息校验
func API_ValidPromoterTree(snid int32, packageTag string, promoterTree int32, appId string) (int32, error) {
//params := make(map[string]string)
//params["snid"] = strconv.Itoa(int(snid))
//params["package_tag"] = packageTag
//params["promoter_tree"] = strconv.Itoa(int(promoterTree))
//buff, err := getRequest(appId, "/valid_promoter_tree", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return -1, err
//}
//type ApiResult struct {
// Tag int32
// Msg interface{}
//}
//result := ApiResult{}
//err = json.Unmarshal(buff, &result)
//return result.Tag, err
return 0, nil
}
// 玩家透传API
func API_PlayerPass(snid int32, platform, channel, promoter, apiName, param, appId string, logicLvls []int32) (string, error) {
//params := make(map[string]string)
@ -662,66 +207,6 @@ func API_SystemPass(apiName, param, cBData, appId string) (string, error) {
return ret.Response, err
}
// 定时任务
func API_ScheduleDo(appId, action string, dura time.Duration) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//buff, err := getRequest(appId, action, params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return buff, err
//}
//return buff, nil
return nil, nil
}
// 平台详细配置
func API_GetPlatformSignConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/active_sign_config", params, "http", time.Duration(time.Second*120))
return nil, nil
}
// 活跃任务
func API_GetTaskConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/active_task_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 财神任务
func API_GetGoldTaskConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/active_goldtask_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 财神降临
func API_GetGoldComeConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/active_goldcome_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// vip活动配置
func API_GetActVipConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/active_vip_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 首充奖励活动配置
func API_GetActFPayConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/active_fpay_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 活动相关统一配置
func API_GetActConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
@ -730,325 +215,7 @@ func API_GetActConfig(appId string) ([]byte, error) {
return nil, nil
}
// 支付活动配置
func API_GetPayActConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/active_payact_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 获取在线奖励活动配置
func API_GetOnlineRewardConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
////params["ts"] = strconv.Itoa(int(time.Now().Unix()))
////params["platform"] = platform
//return getRequest(appId, "/online_reward_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 获取幸运转盘活动配置
func API_GetLuckyTurntableConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
////params["ts"] = strconv.Itoa(int(time.Now().Unix()))
////params["platform"] = platform
//return getRequest(appId, "/luckly_turntable_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 获取微信分享彩金配置
func API_GetWeiXinShareConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
//return getRequest(appId, "/weixin_share_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 获取余额宝配置
func API_GetYebConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
////params["ts"] = strconv.Itoa(int(time.Now().Unix()))
////params["platform"] = platform
//return getRequest(appId, "/yeb_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 获取周卡月卡配置
func API_GetCardConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
//return getRequest(appId, "/card_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 获取阶梯充值配置
func API_GetStepRechargeConfig(appId string) ([]byte, error) {
//params := make(map[string]string)
//return getRequest(appId, "/step_recharge_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 获取自动黑白名单配置
func API_GetAutoBWConfig(appId string, page int) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//params["page"] = strconv.Itoa(page)
//return getRequest(appId, "/autobw_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 获取包对应的平台和上级关系
func API_GetImgVerify(appId string, phone string) (*ImgVerifyMsg, error) {
//params := make(map[string]string)
//params["phone"] = phone
//buff, err := getRequest(appId, "/get_img_verify", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return nil, err
//}
//
//type ApiResult struct {
// Tag int32 `json:"Tag"`
// Msg ImgVerifyMsg `json:"Msg"`
//}
//result := ApiResult{}
//err = json.Unmarshal(buff, &result)
//if err != nil {
// return nil, err
//}
//if result.Tag != 0 {
// return nil, errors.New("Get Image Verify Failed.")
//} else {
// return &result.Msg, nil
//}
return nil, nil
}
type RebateImgUrlMsg struct {
Wx string `json:"wx"`
Image string `json:"image"`
}
// 获取包对应的平台和上级关系
func API_GetRebateImgUrl(appId string, platform string) (string, string, error) {
//params := make(map[string]string)
//params["platform"] = platform
//buff, err := getRequest(appId, "/get_weixin_by_range", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return "", "", err
//}
//
//type ApiResult struct {
// Tag int32 `json:"Tag"`
// Msg RebateImgUrlMsg `json:"Msg"`
//}
//result := ApiResult{}
//err = json.Unmarshal(buff, &result)
//if err != nil {
// return "", "", err
//}
//if result.Tag != 0 {
// return "", "", errors.New("Get Image Url Failed.")
//} else {
// return result.Msg.Image, result.Msg.Wx, nil
//}
return "", "", nil
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//请求参数如下:
//int32 snid 玩家id
//====================================================================
//int64 showTypeId = 2 棋牌游戏
// showTypeId = 3 捕鱼游戏(废弃,不在使用)
// showTypeId = 4 电子游艺
// showTypeId = 5 真人视讯
// showTypeId = 6 彩票游戏
// showTypeId = 380720001 WWG 大师捕鱼 在三方中的游戏id=3
// showTypeId = 391590001 FG 捕鱼嘉年华3D 在三方中的游戏id=fish_3D
// showTypeId = 391600001 FG 捕鸟达人 在三方中的游戏id=fish_bn
// showTypeId = 391610001 FG 欢乐捕鱼 在三方中的游戏id=fish_hl
// showTypeId = 391620001 FG 美人捕鱼 在三方中的游戏id=fish_mm
// showTypeId = 391630001 FG 天天捕鱼 在三方中的游戏id=fish_tt
// showTypeId = 391640001 FG 雷霆战警 在三方中的游戏id=fish_zj
// showTypeId = 391650001 FG 魔法王者 在三方中的游戏id=fish_mfwz
//======================================================================
//int64 timeIndex 0.全部 1.今天 2.昨天 3.一个月内
//int64 thirdId 那个第三方 0=全部 WWG平台=38 FG平台=39 体育赛事=41 VR彩票=43 真人视讯=28
//int32 pageNo 当前页
//int32 pageCount 共几页
// API返回的每条格式如下
// int64 Ts //注单时间戳
// string ThirdPltName //三方平台名字
// string ThirdGameId //三方游戏id
// string ThirdGameName //三方游戏名字
// string SysGamefreeid //我们系统的游戏id,这个不返回占位
// string RecordId //注单号
// int64 BetCoin //投注金额
// int64 ReceivedCoin //已派奖
func API_GetThirdDetail(appId, pltform string, snid, pageNo, pageCount, showTypeId, timeIndex, thirdId int32) (error, []byte) {
return nil, nil
//params := make(map[string]string)
//params["snid"] = strconv.Itoa(int(snid))
//params["pageNo"] = strconv.Itoa(int(pageNo))
//params["pageCount"] = strconv.Itoa(int(pageCount))
//params["showTypeId"] = strconv.Itoa(int(showTypeId))
//params["timeIndex"] = strconv.Itoa(int(timeIndex))
//params["thirdId"] = strconv.Itoa(int(thirdId))
//params["platform"] = pltform
//buff, err := getRequest(appId, "/third_detail", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return err, buff
//}
//return nil, buff
//下面是以post方式请求备用
//var client = &http.Client{}
//var signupDataBuff []byte
//var err error
//ts := time.Now().Unix()
//if params != nil {
// signupDataBuff, err = json.Marshal(params)
// if err != nil {
// return err, nil
// }
//}
//
////fmt.Println(string(signupDataBuff))
//sign := MakeMd5String(fmt.Sprintf("%v;%v;%v", ts, string(signupDataBuff), appId))
//url := fmt.Sprintf("%v?ts=%v&sign=%v", Config.GameApiURL+"/third_detail", ts, sign)
//logger.Trace("API_GetThirdDetail request url:", url)
//request, err := http.NewRequest("POST", url, bytes.NewReader(signupDataBuff))
//if err != nil {
// return err, nil
//}
//client.Timeout = DEFAULT_TIMEOUT
//resp, err := client.Do(request)
//if err != nil {
// logger.Errorf("Snid=%v API_GetThirdDetail api :%v", snid, err)
// return err, nil
//}
//defer resp.Body.Close()
//
//if resp.StatusCode == 200 {
// buff, err := io.ReadAll(resp.Body)
// if err != nil {
// return err, nil
// }
// return nil, buff
//}
//io.Copy(ioutil.Discard, resp.Body)
//return fmt.Errorf("API_GetThirdDetail HttpStatusCode:%d", resp.StatusCode), nil
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
//请求参数如下:
//int32 snid 玩家id
//====================================================================
//string hotGameNameSet = "狂欢派对","复仇者联盟","百人牛牛"
//在mysql 中使用in来查询
//======================================================================
//int64 timeIndex 0.全部 1.今天 2.昨天 3.一个月内
//int64 thirdId 那个第三方 WWG平台=38 FG平台=39 体育赛事=41 VR彩票=43 真人视讯=28
//int32 pageNo 当前页
//int32 pageCount 共几页
// API返回的每条格式如下
// int64 Ts //注单时间戳
// string ThirdPltName //三方平台名字
// string ThirdGameId //三方游戏id
// string ThirdGameName //三方游戏名字
// string SysGamefreeid //我们系统的游戏id,这个不返回占位
// string RecordId //注单号
// int64 BetCoin //投注金额
// int64 ReceivedCoin //已派奖
func API_GetThirdHotGameDetail(appId, pltform string, snid, pageNo, pageCount, timeIndex, thirdId int32, hotGameNameSet []string) (error, []byte) {
//params := make(map[string]string)
//params["snid"] = strconv.Itoa(int(snid))
//params["pageNo"] = strconv.Itoa(int(pageNo))
//params["pageCount"] = strconv.Itoa(int(pageCount))
//params["hotGameNameSet"] = strings.Join(hotGameNameSet, ",")
//params["timeIndex"] = strconv.Itoa(int(timeIndex))
//params["thirdId"] = strconv.Itoa(int(thirdId))
//params["platform"] = pltform
//buff, err := getRequest(appId, "/hot_third_game", params, "http", DEFAULT_TIMEOUT)
//if err != nil {
// return err, buff
//}
//return nil, buff
return nil, nil
}
// ////////////////////////////////////////////////////////////////////////////////////////////////
func API_GetRandCoinData(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/activity_read_envelope_config", params, "http", time.Duration(time.Second*120))
return nil, nil
}
// ////////////////////////////////////////////////////////////////////////////////////////////////
func API_GetChildData(appId string, platform string, snid int32, ts1, ts2 int64) ([]byte, error) {
//params := make(map[string]string)
//params["platform"] = platform
//params["snid"] = strconv.Itoa(int(snid))
//params["start_time"] = strconv.Itoa(int(ts1))
//params["end_time"] = strconv.Itoa(int(ts2))
//return getRequest(appId, "/spread_child_list", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
func API_PushPlayerSingleAdjustCount(appId string, id int32, count int32) ([]byte, error) {
//params := make(map[string]string)
//params["id"] = strconv.Itoa(int(id))
//params["times"] = strconv.Itoa(int(count))
//return getRequest(appId, "/game_ctrl_alone_times_push", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
func API_PlayerSingleAdjustData(appId string, page int32, pagecount int32) ([]byte, error) {
//params := make(map[string]string)
//params["page"] = strconv.Itoa(int(page))
//params["limit"] = strconv.Itoa(int(pagecount))
//return getRequest(appId, "/game_ctrl_alone_config", params, "http", DEFAULT_TIMEOUT)
return nil, nil
}
// 平台杀率配置
func API_GetPlatformProfitControlConfigData(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/profitcontrol_config_list", params, "http", time.Duration(time.Second*120))
return nil, nil
}
// 比赛配置
func API_GetMatchConfigData(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/match_list", params, "http", time.Duration(time.Second*120))
return nil, nil
}
// 比赛报名券活动配置
func API_GetActTicketConfigData(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/activity_ticket_config", params, "http", time.Duration(time.Second*120))
return nil, nil
}
// 比赛积分商城配置
func API_GetGradeShopConfigData(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/query_exchange_shop", params, "http", time.Duration(time.Second*120))
return nil, nil
}
// 用户分层配置
func API_GetLogicLevelConfigData(appId string) ([]byte, error) {
//params := make(map[string]string)
//params["ts"] = strconv.Itoa(int(time.Now().Unix()))
//return getRequest(appId, "/logic_level_config", params, "http", time.Duration(time.Second*120))
return nil, nil
// ApiGetInviteLink 获取邀请分享链接
func ApiGetInviteLink(appId string, body proto.Message) ([]byte, error) {
return postRequest(appId, "/get_invite_link", nil, body, "http", DEFAULT_TIMEOUT)
}

View File

@ -16,19 +16,7 @@ import (
"mongo.games.com/game/srvdata"
)
// 查看背包
type CSBagInfoPacketFactory struct {
}
type CSBagInfoHandler struct {
}
func (this *CSBagInfoPacketFactory) CreatePacket() interface{} {
pack := &bag.CSBagInfo{}
return pack
}
func (this *CSBagInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
func CSBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error {
logger.Logger.Trace("CSBagInfoHandler Process recv ", data)
if msg, ok := data.(*bag.CSBagInfo); ok {
p := PlayerMgrSington.GetPlayer(sid)
@ -62,19 +50,7 @@ func (this *CSBagInfoHandler) Process(s *netlib.Session, packetid int, data inte
return nil
}
// 使用/获取道具 PS严格来说客户端只存在消耗道具 服务器增加 上线要禁止该接口增加道具
type CSUpBagInfoPacketFactory struct {
}
type CSUpBagInfoHandler struct {
}
func (this *CSUpBagInfoPacketFactory) CreatePacket() interface{} {
pack := &bag.CSUpBagInfo{}
return pack
}
func (this *CSUpBagInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error {
logger.Logger.Trace("CSUpBagInfoHandler Process recv ", data)
msg, ok := data.(*bag.CSUpBagInfo)
if !ok {
@ -98,10 +74,7 @@ func (this *CSUpBagInfoHandler) Process(s *netlib.Session, packetid int, data in
ItemId: msg.ItemId,
ItemNum: int64(msg.ItemNum),
}}
BagMgrSingleton.AddJybBagInfo(p, items, 0, common.GainWay_AddBag, "system", "测试")
for _, v := range items {
BagMgrSingleton.RecordItemLog(p.Platform, p.SnId, ItemObtain, v.ItemId, v.Name, v.ItemNum, "测试")
}
BagMgrSingleton.AddItems(p, items, 0, common.GainWay_AddBag, "system", "测试", 0, 0, false)
return nil
}
}
@ -141,8 +114,7 @@ func (this *CSUpBagInfoHandler) Process(s *netlib.Session, packetid int, data in
var useFunc func()
saleFunc := func() {
// 使用道具,减少道具
BagMgrSingleton.SalePlayerItem(p, item, int64(msg.ItemNum))
BagMgrSingleton.RecordItemLog(p.Platform, p.SnId, ItemConsume, item.ItemId, item.Name, int64(msg.ItemNum), "道具使用")
BagMgrSingleton.AddItem(p, int64(item.ItemId), int64(-msg.ItemNum), 0, common.GainWay_ItemUse, "player", "道具使用", 0, 0, false)
pack.RetCode = bag.OpResultCode_OPRC_Sucess
pack.NowItemId = item.ItemId
pack.NowItemNum = item.ItemNum
@ -156,13 +128,8 @@ func (this *CSUpBagInfoHandler) Process(s *netlib.Session, packetid int, data in
for _, v := range items {
itemArr = append(itemArr, v)
}
BagMgrSingleton.AddJybBagInfo(p, itemArr, 0, common.GainWay_ItemUse, "player", "道具使用")
BagMgrSingleton.AddItems(p, itemArr, 0, common.GainWay_ItemUse, "player", "道具使用", 0, 0, false)
for _, v := range itemArr {
data := srvdata.PBDB_GameItemMgr.GetData(v.ItemId)
if data != nil {
// 背包变更记录
BagMgrSingleton.RecordItemLog(p.Platform, p.SnId, ItemObtain, v.ItemId, data.Name, v.ItemNum, "碎片礼盒获得")
}
pack.Infos = append(pack.Infos, &bag.ItemInfo{
ItemId: v.ItemId,
ItemNum: v.ItemNum,
@ -249,11 +216,11 @@ func (this *CSUpBagInfoHandler) Process(s *netlib.Session, packetid int, data in
logger.Logger.Trace("道具赠送", msg.ItemId)
acceptPlayer := PlayerMgrSington.GetPlatformPlayerBySnId(p.Platform, msg.AcceptSnId)
if acceptPlayer != nil {
BagMgrSingleton.AddMailByItem(p.Platform, p.SnId, p.Name, msg.AcceptSnId, msg.ShowId, []int32{msg.ItemId, msg.ItemNum})
BagMgrSingleton.SalePlayerItem(p, item, int64(msg.ItemNum))
remark := fmt.Sprintf("赠送给玩家(%v)", msg.AcceptSnId)
BagMgrSingleton.RecordItemLog(p.Platform, p.SnId, ItemConsume, item.ItemId, item.Name, int64(msg.ItemNum), remark)
logger.Logger.Trace("道具赠送成功", msg.ItemId)
remark := fmt.Sprintf("赠送给玩家(%v)", msg.AcceptSnId)
BagMgrSingleton.AddMailByItem(p.Platform, p.SnId, p.Name, msg.AcceptSnId, msg.ShowId, []int32{msg.ItemId, msg.ItemNum})
BagMgrSingleton.AddItem(p, int64(item.ItemId), int64(-msg.ItemNum), 0, common.GainWay_ItemMove,
"player", remark, 0, 0, false)
pack.RetCode = bag.OpResultCode_OPRC_Sucess
pack.NowItemId = msg.ItemId
pack.NowItemNum = item.ItemNum
@ -263,11 +230,11 @@ func (this *CSUpBagInfoHandler) Process(s *netlib.Session, packetid int, data in
}), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) {
aPlayer := data.(*model.PlayerBaseInfo)
if data != nil && aPlayer != nil {
BagMgrSingleton.AddMailByItem(p.Platform, p.SnId, p.Name, msg.AcceptSnId, msg.ShowId, []int32{msg.ItemId, msg.ItemNum})
BagMgrSingleton.SalePlayerItem(p, item, int64(msg.ItemNum))
remark := fmt.Sprintf("赠送给玩家(%v)", msg.AcceptSnId)
BagMgrSingleton.RecordItemLog(p.Platform, p.SnId, ItemConsume, item.ItemId, item.Name, int64(msg.ItemNum), remark)
logger.Logger.Trace("道具赠送成功", msg.ItemId)
remark := fmt.Sprintf("赠送给玩家(%v)", msg.AcceptSnId)
BagMgrSingleton.AddMailByItem(p.Platform, p.SnId, p.Name, msg.AcceptSnId, msg.ShowId, []int32{msg.ItemId, msg.ItemNum})
BagMgrSingleton.AddItem(p, int64(item.ItemId), int64(-msg.ItemNum), 0, common.GainWay_ItemMove,
"player", remark, 0, 0, false)
pack.RetCode = bag.OpResultCode_OPRC_Sucess
pack.NowItemId = msg.ItemId
pack.NowItemNum = item.ItemNum
@ -282,20 +249,17 @@ func (this *CSUpBagInfoHandler) Process(s *netlib.Session, packetid int, data in
case ItemCanSell:
logger.Logger.Trace("道具出售", msg.ItemId)
if msg.ItemNum > 0 {
isF := BagMgrSingleton.SaleItem(p, msg.ItemId, int64(msg.ItemNum))
remark := "道具出售" + fmt.Sprintf("%v-%v", msg.ItemId, msg.ItemNum)
_, _, isF := BagMgrSingleton.AddItem(p, int64(msg.ItemId), int64(-msg.ItemNum), 0, common.GainWay_Item_Sale, "sys", remark, 0, 0, false)
if isF {
pack.RetCode = bag.OpResultCode_OPRC_Sucess
if item.SaleGold > 0 {
if item.SaleType == 1 {
remark := "道具出售" + fmt.Sprintf("%v-%v", msg.ItemId, msg.ItemNum)
p.AddCoin(int64(item.SaleGold*msg.ItemNum), 0, common.GainWay_Item_Sale, "sys", remark)
pack.Coin = int64(item.SaleGold * msg.ItemNum)
BagMgrSingleton.RecordItemLog(p.Platform, p.SnId, ItemConsume, item.ItemId, item.Name, int64(msg.ItemNum), "道具出售")
} else if item.SaleType == 2 {
remark := "道具出售" + fmt.Sprintf("%v-%v", msg.ItemId, msg.ItemNum)
p.AddDiamond(int64(item.SaleGold*msg.ItemNum), 0, common.GainWay_Item_Sale, "sys", remark)
pack.Diamond = int64(item.SaleGold * msg.ItemNum)
BagMgrSingleton.RecordItemLog(p.Platform, p.SnId, ItemConsume, item.ItemId, item.Name, int64(msg.ItemNum), "道具出售")
}
}
pack.NowItemId = item.ItemId
@ -409,13 +373,11 @@ func CSPropExchange(s *netlib.Session, packetid int, data interface{}, sid int64
}
// 扣除背包物品
for _, item := range costItems {
BagMgrSingleton.SaleItemV2(p, item.ItemId, item.ItemNum, common.GainWay_Collect, "system", "集卡活动兑换")
BagMgrSingleton.RecordItemLog(p.Platform, p.SnId, ItemConsume, item.ItemId, item.Name, item.ItemNum, "集卡活动兑换使用")
BagMgrSingleton.AddItem(p, int64(item.ItemId), -item.ItemNum, 0, common.GainWay_Collect, "system", "集卡活动兑换", 0, 0, false)
}
// 增加背包物品
BagMgrSingleton.AddJybBagInfo(p, items, 0, common.GainWay_Collect, "system", "集卡活动兑换")
BagMgrSingleton.AddItems(p, items, 0, common.GainWay_Collect, "system", "集卡活动兑换", 0, 0, false)
for _, v := range items {
BagMgrSingleton.RecordItemLog(p.Platform, p.SnId, ItemObtain, v.ItemId, v.Name, v.ItemNum, "集卡活动兑换获得")
pack.Items = append(pack.Items, &bag.PropInfo{
ItemId: v.ItemId,
ItemNum: v.ItemNum,
@ -428,11 +390,9 @@ func CSPropExchange(s *netlib.Session, packetid int, data interface{}, sid int64
func init() {
// 查看背包
common.RegisterHandler(int(bag.SPacketID_PACKET_ALL_BAG_INFO), &CSBagInfoHandler{})
netlib.RegisterFactory(int(bag.SPacketID_PACKET_ALL_BAG_INFO), &CSBagInfoPacketFactory{})
// 道具操作(赠送,出售...)
common.RegisterHandler(int(bag.SPacketID_PACKET_ALL_BAG_USE), &CSUpBagInfoHandler{})
netlib.RegisterFactory(int(bag.SPacketID_PACKET_ALL_BAG_USE), &CSUpBagInfoPacketFactory{})
common.Register(int(bag.SPacketID_PACKET_ALL_BAG_INFO), &bag.CSBagInfo{}, CSBagInfo)
// 道具操作
common.Register(int(bag.SPacketID_PACKET_ALL_BAG_USE), &bag.CSUpBagInfo{}, CSUpBagInfo)
// 兑换列表
common.Register(int(bag.SPacketID_PACKET_ExchangeList), &bag.CSExchangeList{}, CSExchangeList)
// 道具兑换

View File

@ -1,289 +1,275 @@
package main
import (
"mongo.games.com/game/common"
"mongo.games.com/game/model"
"mongo.games.com/game/proto"
"mongo.games.com/game/protocol/server"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/netlib"
"mongo.games.com/goserver/core/task"
"mongo.games.com/goserver/srvlib"
"strconv"
"time"
)
type DWThirdRebateMessagePacketFactory struct {
}
type DWThirdRebateMessageHandler struct {
}
func (this *DWThirdRebateMessagePacketFactory) CreatePacket() interface{} {
pack := &server.DWThirdRebateMessage{}
return pack
}
func (this *DWThirdRebateMessageHandler) Process(s *netlib.Session, packetid int, data interface{}) error {
logger.Logger.Trace("DWThirdRebateMessageHandler Process recv ", data)
if msg, ok := data.(*server.DWThirdRebateMessage); ok {
//TODO
SendAckToDataSrv(msg.GetTag(), 2)
if msg.GetAvailableBet() <= 0 {
logger.Logger.Warn("DWThirdRebateMessageHandler is error: AvailableBet= ", msg.GetAvailableBet())
return nil
}
//p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnid())
//if p != nil {
// p.dirty = true
// //actRandCoinMgr.OnPlayerLiuShui(p, msg.GetAvailableBet())
//}
//
//thirdId := strconv.Itoa(int(ThirdPltGameMappingConfig.FindThirdIdByThird(msg.GetThird())))
//rebateTask := RebateInfoMgrSington.rebateTask[strconv.Itoa(int(msg.GetPlt()))]
//if rebateTask != nil {
// Third := rebateTask.RebateGameThirdCfg[thirdId]
// if Third != nil {
// p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnid())
// if p == nil {
// logger.Logger.Trace("DWThirdRebateMessageHandler p == nil ", msg.GetSnid())
// OfflinePlayerMgrSington.GetOfflinePlayer(msg.GetSnid(), func(op *OfflinePlayer, asyn bool) {
// if op == nil {
// return
// }
// if op.IsRob {
// return
// }
//
// if data, ok := op.RebateData[thirdId]; ok {
// data.ValidBetTotal += msg.GetAvailableBet()
// } else {
// op.RebateData[thirdId] = &model.RebateData{
// ValidBetTotal: msg.GetAvailableBet(),
// }
// }
// task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
// //注意流控防止该任务过渡占用登陆队列可以在datasrv上配置心跳和maxdone来控制
// return model.SavePlayerRebate(op.PlayerData, thirdId)
// }), task.CompleteNotifyWrapper(func(data interface{}, tt *task.Task) {
// if data != nil {
// logger.Logger.Errorf("SavePlayerRebate error:%v snid:%v platform:%v AvailableBet:%v", data, msg.GetSnid(), msg.GetThird(), msg.GetAvailableBet())
// } else {
// p = PlayerMgrSington.GetPlayerBySnId(msg.GetSnid()) //说明更新任务排在了玩家登陆的后面(造成了脏读,重新应用下该次下注)
// if p != nil {
// if data, ok := p.RebateData[thirdId]; ok {
// data.ValidBetTotal += msg.GetAvailableBet()
// } else {
// p.RebateData[thirdId] = &model.RebateData{
// ValidBetTotal: msg.GetAvailableBet(),
// }
// }
// p.dirty = true
// }
// }
// }), "SavePlayerRebate").StartByExecutor(op.AccountId) //保证和玩家存取在一条线程内(避免脏读或者脏写)
// }, false)
// return nil
// }
// if p.IsRob {
// logger.Logger.Trace("DWThirdRebateMessageHandler p is rob ", msg.GetSnid())
// return nil
// }
// if data, ok := p.RebateData[thirdId]; ok {
// data.ValidBetTotal += msg.GetAvailableBet()
// } else {
// p.RebateData[thirdId] = &model.RebateData{
// ValidBetTotal: msg.GetAvailableBet(),
// }
// }
//
// p.dirty = true
// //p.CountRebate(thirdId, 1)
// } else {
// logger.Logger.Trace("DWThirdRebateMessageHandler Third is nil. ", msg.GetPlt(), msg.GetThird())
// }
//} else {
// logger.Logger.Trace("DWThirdRebateMessageHandler rebateTask is nil. ", msg.GetPlt(), msg.GetThird())
//}
}
return nil
}
type DWThirdRoundMessagePacketFactory struct {
}
type DWThirdRoundMessageHandler struct {
}
func (this *DWThirdRoundMessagePacketFactory) CreatePacket() interface{} {
pack := &server.DWThirdRoundMessage{}
return pack
}
func (this *DWThirdRoundMessageHandler) Process(s *netlib.Session, packetid int, data interface{}) error {
logger.Logger.Trace("DWThirdRoundMessageHandler Process recv ", data)
if msg, ok := data.(*server.DWThirdRoundMessage); ok {
//todo
//获取到对应的gamefreeid,三方的特殊处理了只寻找对应大类的第一个gamefreeid,因为这个游戏都在不停的变,很多都不一致
if thirdID := ThirdPltGameMappingConfig.FindThirdIdByThird(msg.GetThird()); thirdID != 0 {
var dbGamefreeInfo *server.DB_GameFree
platform := msg.GetPlatform()
if platform != 0 {
pltGameInfo := PlatformMgrSingleton.GetGameFree(strconv.Itoa(int(platform)), thirdID)
if pltGameInfo != nil {
dbGamefreeInfo = pltGameInfo.DbGameFree
}
}
player := PlayerMgrSington.GetPlayerBySnId(msg.GetSnid())
if player != nil {
str := strconv.Itoa(int(thirdID))
//处理三方全民流水问题
totalOut := int32(0)
totalIn := int32(0)
if dbGamefreeInfo != nil {
isBind := int32(0)
if player.Tel != "" {
isBind = 1
}
if msg.GetProfitCoinInTime() < 0 {
totalIn = msg.GetBetCoinInTime()
} else {
totalOut = msg.GetBetCoinInTime()
}
isQuMin := false
//pt := PlatformMgrSingleton.GetPackageTag(player.PackageID)
//if pt != nil && pt.SpreadTag == 1 {
// isQuMin = true
//}
if isQuMin || !model.GameParamData.QMOptimization {
QMFlowMgr.AddPlayerStatement(player.SnId, isBind, totalOut, totalIn, thirdID,
player.Platform, player.PackageID, dbGamefreeInfo)
}
availableBet := int64(totalOut + totalIn)
availableBet = availableBet * int64(dbGamefreeInfo.GetBetWaterRate()) / 100
if availableBet > 0 {
player.TotalConvertibleFlow += availableBet
player.TotalFlow += availableBet
player.dirty = true
//今日流水增加
player.TodayGameData.TodayConvertibleFlow += availableBet
}
}
if gd, ok := player.GDatas[str]; ok {
gd.Statics.GameTimes += int64(msg.GetAccRoundsInTime())
gd.Statics.TotalOut += int64(totalOut)
gd.Statics.TotalIn += int64(totalIn)
if gd.Statics.MaxSysOut < int64(msg.GetOneroundMaxwin()) {
gd.Statics.MaxSysOut = int64(msg.GetOneroundMaxwin())
}
} else {
gs := model.NewPlayerGameStatics()
gs.GameTimes = int64(msg.GetAccRoundsInTime())
gs.MaxSysOut = int64(msg.GetOneroundMaxwin())
gs.TotalOut = int64(totalOut)
gs.TotalIn = int64(totalIn)
player.GDatas[str] = &model.PlayerGameInfo{
FirstTime: time.Now(),
Statics: *gs,
}
}
if player.TotalGameData == nil {
player.TotalGameData = make(map[int][]*model.PlayerGameTotal)
}
showId := 9
if len(player.TotalGameData[showId]) == 0 {
player.TotalGameData[showId] = []*model.PlayerGameTotal{new(model.PlayerGameTotal)}
}
cnt := len(player.TotalGameData[showId])
if cnt > 0 {
td := player.TotalGameData[showId][cnt-1]
if td == nil {
td = &model.PlayerGameTotal{}
player.TotalGameData[showId][cnt-1] = td
}
if td != nil {
td.ProfitCoin += int64(msg.GetProfitCoinInTime())
td.BetCoin += int64(msg.GetBetCoinInTime())
td.FlowCoin += int64(msg.GetFlowCoinInTime())
}
}
//洗码
//三方游戏,通过进出场的营收差洗码
washingCoin := msg.GetProfitCoinInTime()
if washingCoin < 0 {
washingCoin = -washingCoin
}
washedCoin := player.WashingCoin(int64(washingCoin))
if washedCoin > 0 {
logger.Logger.Tracef("三方游戏洗码:snid=%v,washingCoin=%v,gamefreeid=%v", player.SnId, washedCoin, thirdID)
}
//五福红包游戏局数检测
//actRandCoinMgr.OnPlayerGameTimes(player, int64(msg.GetAccRoundsInTime()))
} else {
if dbGamefreeInfo != nil {
totalOut := int32(0)
totalIn := int32(0)
if msg.GetProfitCoinInTime() < 0 {
totalIn = msg.GetBetCoinInTime()
} else {
totalOut = msg.GetBetCoinInTime()
}
QMFlowMgr.AddOffPlayerStatement(msg.GetSnid(), totalOut, totalIn, thirdID, dbGamefreeInfo)
availableBet := int64(totalOut + totalIn)
availableBet = availableBet * int64(dbGamefreeInfo.GetBetWaterRate()) / 100
if availableBet > 0 {
PlayerCacheMgrSingleton.Get(strconv.Itoa(int(msg.GetPlatform())), msg.GetSnid(), func(op *PlayerCacheItem, asyn, isnew bool) {
if op == nil {
return
}
if op.IsRob {
return
}
//总流水累加
op.TotalConvertibleFlow += availableBet
op.TotalFlow += availableBet
//今日流水增加,todo 这个地方没有考虑彩票导致的跨天,或者注单延迟导致的今日流水问题
op.TodayGameData.TodayConvertibleFlow += availableBet
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
//注意流控防止该任务过渡占用登陆队列可以在datasrv上配置心跳和maxdone来控制
return model.UpdatePlayerExchageFlow(op.Platform, op.SnId, op.TotalConvertibleFlow, op.TotalFlow)
}), nil).StartByExecutor(strconv.Itoa(int(op.SnId)))
}, false)
}
}
}
}
}
return nil
}
func init() {
netlib.RegisterHandler(int(server.SSPacketID_PACKET_DW_ThirdRebateMessage), &DWThirdRebateMessageHandler{})
netlib.RegisterFactory(int(server.SSPacketID_PACKET_DW_ThirdRebateMessage), &DWThirdRebateMessagePacketFactory{})
netlib.RegisterHandler(int(server.SSPacketID_PACKET_DW_ThirdRoundMessage), &DWThirdRoundMessageHandler{})
netlib.RegisterFactory(int(server.SSPacketID_PACKET_DW_ThirdRoundMessage), &DWThirdRoundMessagePacketFactory{})
}
//type DWThirdRebateMessagePacketFactory struct {
//}
//type DWThirdRebateMessageHandler struct {
//}
//
//func (this *DWThirdRebateMessagePacketFactory) CreatePacket() interface{} {
// pack := &server.DWThirdRebateMessage{}
// return pack
//}
//func (this *DWThirdRebateMessageHandler) Process(s *netlib.Session, packetid int, data interface{}) error {
// logger.Logger.Trace("DWThirdRebateMessageHandler Process recv ", data)
// if msg, ok := data.(*server.DWThirdRebateMessage); ok {
// //TODO
// SendAckToDataSrv(msg.GetTag(), 2)
// if msg.GetAvailableBet() <= 0 {
// logger.Logger.Warn("DWThirdRebateMessageHandler is error: AvailableBet= ", msg.GetAvailableBet())
// return nil
// }
//
// //p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnid())
// //if p != nil {
// // p.dirty = true
// // //actRandCoinMgr.OnPlayerLiuShui(p, msg.GetAvailableBet())
// //}
// //
// //thirdId := strconv.Itoa(int(ThirdPltGameMappingConfig.FindThirdIdByThird(msg.GetThird())))
// //rebateTask := RebateInfoMgrSington.rebateTask[strconv.Itoa(int(msg.GetPlt()))]
// //if rebateTask != nil {
// // Third := rebateTask.RebateGameThirdCfg[thirdId]
// // if Third != nil {
// // p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnid())
// // if p == nil {
// // logger.Logger.Trace("DWThirdRebateMessageHandler p == nil ", msg.GetSnid())
// // OfflinePlayerMgrSington.GetOfflinePlayer(msg.GetSnid(), func(op *OfflinePlayer, asyn bool) {
// // if op == nil {
// // return
// // }
// // if op.IsRob {
// // return
// // }
// //
// // if data, ok := op.RebateData[thirdId]; ok {
// // data.ValidBetTotal += msg.GetAvailableBet()
// // } else {
// // op.RebateData[thirdId] = &model.RebateData{
// // ValidBetTotal: msg.GetAvailableBet(),
// // }
// // }
// // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
// // //注意流控防止该任务过渡占用登陆队列可以在datasrv上配置心跳和maxdone来控制
// // return model.SavePlayerRebate(op.PlayerData, thirdId)
// // }), task.CompleteNotifyWrapper(func(data interface{}, tt *task.Task) {
// // if data != nil {
// // logger.Logger.Errorf("SavePlayerRebate error:%v snid:%v platform:%v AvailableBet:%v", data, msg.GetSnid(), msg.GetThird(), msg.GetAvailableBet())
// // } else {
// // p = PlayerMgrSington.GetPlayerBySnId(msg.GetSnid()) //说明更新任务排在了玩家登陆的后面(造成了脏读,重新应用下该次下注)
// // if p != nil {
// // if data, ok := p.RebateData[thirdId]; ok {
// // data.ValidBetTotal += msg.GetAvailableBet()
// // } else {
// // p.RebateData[thirdId] = &model.RebateData{
// // ValidBetTotal: msg.GetAvailableBet(),
// // }
// // }
// // p.dirty = true
// // }
// // }
// // }), "SavePlayerRebate").StartByExecutor(op.AccountId) //保证和玩家存取在一条线程内(避免脏读或者脏写)
// // }, false)
// // return nil
// // }
// // if p.IsRob {
// // logger.Logger.Trace("DWThirdRebateMessageHandler p is rob ", msg.GetSnid())
// // return nil
// // }
// // if data, ok := p.RebateData[thirdId]; ok {
// // data.ValidBetTotal += msg.GetAvailableBet()
// // } else {
// // p.RebateData[thirdId] = &model.RebateData{
// // ValidBetTotal: msg.GetAvailableBet(),
// // }
// // }
// //
// // p.dirty = true
// // //p.CountRebate(thirdId, 1)
// // } else {
// // logger.Logger.Trace("DWThirdRebateMessageHandler Third is nil. ", msg.GetPlt(), msg.GetThird())
// // }
// //} else {
// // logger.Logger.Trace("DWThirdRebateMessageHandler rebateTask is nil. ", msg.GetPlt(), msg.GetThird())
// //}
// }
// return nil
//}
//
//type DWThirdRoundMessagePacketFactory struct {
//}
//type DWThirdRoundMessageHandler struct {
//}
//
//func (this *DWThirdRoundMessagePacketFactory) CreatePacket() interface{} {
// pack := &server.DWThirdRoundMessage{}
// return pack
//}
//func (this *DWThirdRoundMessageHandler) Process(s *netlib.Session, packetid int, data interface{}) error {
// logger.Logger.Trace("DWThirdRoundMessageHandler Process recv ", data)
//
// if msg, ok := data.(*server.DWThirdRoundMessage); ok {
// //todo
// //获取到对应的gamefreeid,三方的特殊处理了只寻找对应大类的第一个gamefreeid,因为这个游戏都在不停的变,很多都不一致
// if thirdID := ThirdPltGameMappingConfig.FindThirdIdByThird(msg.GetThird()); thirdID != 0 {
// var dbGamefreeInfo *server.DB_GameFree
// platform := msg.GetPlatform()
// if platform != 0 {
// pltGameInfo := PlatformMgrSingleton.GetGameFree(strconv.Itoa(int(platform)), thirdID)
// if pltGameInfo != nil {
// dbGamefreeInfo = pltGameInfo.DbGameFree
// }
// }
//
// player := PlayerMgrSington.GetPlayerBySnId(msg.GetSnid())
// if player != nil {
// str := strconv.Itoa(int(thirdID))
// //处理三方全民流水问题
// totalOut := int32(0)
// totalIn := int32(0)
// if dbGamefreeInfo != nil {
// isBind := int32(0)
// if player.Tel != "" {
// isBind = 1
// }
//
// if msg.GetProfitCoinInTime() < 0 {
// totalIn = msg.GetBetCoinInTime()
// } else {
// totalOut = msg.GetBetCoinInTime()
// }
// isQuMin := false
// //pt := PlatformMgrSingleton.GetPackageTag(player.PackageID)
// //if pt != nil && pt.SpreadTag == 1 {
// // isQuMin = true
// //}
// if isQuMin || !model.GameParamData.QMOptimization {
// QMFlowMgr.AddPlayerStatement(player.SnId, isBind, totalOut, totalIn, thirdID,
// player.Platform, player.PackageID, dbGamefreeInfo)
// }
//
// availableBet := int64(totalOut + totalIn)
// availableBet = availableBet * int64(dbGamefreeInfo.GetBetWaterRate()) / 100
// if availableBet > 0 {
// player.TotalConvertibleFlow += availableBet
// player.TotalFlow += availableBet
// player.dirty = true
// //今日流水增加
// player.TodayGameData.TodayConvertibleFlow += availableBet
// }
// }
// if gd, ok := player.GDatas[str]; ok {
// gd.Statics.GameTimes += int64(msg.GetAccRoundsInTime())
// gd.Statics.TotalOut += int64(totalOut)
// gd.Statics.TotalIn += int64(totalIn)
// if gd.Statics.MaxSysOut < int64(msg.GetOneroundMaxwin()) {
// gd.Statics.MaxSysOut = int64(msg.GetOneroundMaxwin())
// }
// } else {
// gs := model.NewPlayerGameStatics()
// gs.GameTimes = int64(msg.GetAccRoundsInTime())
// gs.MaxSysOut = int64(msg.GetOneroundMaxwin())
// gs.TotalOut = int64(totalOut)
// gs.TotalIn = int64(totalIn)
// player.GDatas[str] = &model.PlayerGameInfo{
// FirstTime: time.Now(),
// Statics: *gs,
// }
// }
//
// if player.TotalGameData == nil {
// player.TotalGameData = make(map[int][]*model.PlayerGameTotal)
// }
// showId := 9
// if len(player.TotalGameData[showId]) == 0 {
// player.TotalGameData[showId] = []*model.PlayerGameTotal{new(model.PlayerGameTotal)}
// }
// cnt := len(player.TotalGameData[showId])
// if cnt > 0 {
// td := player.TotalGameData[showId][cnt-1]
// if td == nil {
// td = &model.PlayerGameTotal{}
// player.TotalGameData[showId][cnt-1] = td
// }
// if td != nil {
// td.ProfitCoin += int64(msg.GetProfitCoinInTime())
// td.BetCoin += int64(msg.GetBetCoinInTime())
// td.FlowCoin += int64(msg.GetFlowCoinInTime())
// }
// }
//
// //洗码
// //三方游戏,通过进出场的营收差洗码
// washingCoin := msg.GetProfitCoinInTime()
// if washingCoin < 0 {
// washingCoin = -washingCoin
// }
// washedCoin := player.WashingCoin(int64(washingCoin))
// if washedCoin > 0 {
// logger.Logger.Tracef("三方游戏洗码:snid=%v,washingCoin=%v,gamefreeid=%v", player.SnId, washedCoin, thirdID)
// }
// //五福红包游戏局数检测
// //actRandCoinMgr.OnPlayerGameTimes(player, int64(msg.GetAccRoundsInTime()))
// } else {
// if dbGamefreeInfo != nil {
// totalOut := int32(0)
// totalIn := int32(0)
// if msg.GetProfitCoinInTime() < 0 {
// totalIn = msg.GetBetCoinInTime()
// } else {
// totalOut = msg.GetBetCoinInTime()
// }
// QMFlowMgr.AddOffPlayerStatement(msg.GetSnid(), totalOut, totalIn, thirdID, dbGamefreeInfo)
// availableBet := int64(totalOut + totalIn)
// availableBet = availableBet * int64(dbGamefreeInfo.GetBetWaterRate()) / 100
// if availableBet > 0 {
// PlayerCacheMgrSingleton.Get(strconv.Itoa(int(msg.GetPlatform())), msg.GetSnid(), func(op *PlayerCacheItem, asyn, isnew bool) {
// if op == nil {
// return
// }
// if op.IsRob {
// return
// }
// //总流水累加
// op.TotalConvertibleFlow += availableBet
// op.TotalFlow += availableBet
// //今日流水增加,todo 这个地方没有考虑彩票导致的跨天,或者注单延迟导致的今日流水问题
// op.TodayGameData.TodayConvertibleFlow += availableBet
// task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
// //注意流控防止该任务过渡占用登陆队列可以在datasrv上配置心跳和maxdone来控制
// return model.UpdatePlayerExchageFlow(op.Platform, op.SnId, op.TotalConvertibleFlow, op.TotalFlow)
// }), nil).StartByExecutor(strconv.Itoa(int(op.SnId)))
// }, false)
// }
// }
// }
// }
// }
//
// return nil
//}
//func init() {
// netlib.RegisterHandler(int(server.SSPacketID_PACKET_DW_ThirdRebateMessage), &DWThirdRebateMessageHandler{})
// netlib.RegisterFactory(int(server.SSPacketID_PACKET_DW_ThirdRebateMessage), &DWThirdRebateMessagePacketFactory{})
// netlib.RegisterHandler(int(server.SSPacketID_PACKET_DW_ThirdRoundMessage), &DWThirdRoundMessageHandler{})
// netlib.RegisterFactory(int(server.SSPacketID_PACKET_DW_ThirdRoundMessage), &DWThirdRoundMessagePacketFactory{})
//}
// 暂时约定为result=1正常result=-1错误
func SendAckToDataSrv(snid uint64, result int32) bool {
datasrvSess := srvlib.ServerSessionMgrSington.GetSession(common.GetSelfAreaId(), common.DataServerType, common.DataServerId)
if datasrvSess != nil {
pack := &server.WDACKThirdRebateMessage{
Tag: proto.Uint64(snid),
Result: proto.Int32(result),
}
proto.SetDefaults(pack)
datasrvSess.Send(int(server.SSPacketID_PACKET_WD_ACKThirdRebateMessage), pack)
return true
} else {
logger.Logger.Error("datasrv server not found.")
}
return false
}
//func SendAckToDataSrv(snid uint64, result int32) bool {
// datasrvSess := srvlib.ServerSessionMgrSington.GetSession(common.GetSelfAreaId(), common.DataServerType, common.DataServerId)
// if datasrvSess != nil {
// pack := &server.WDACKThirdRebateMessage{
// Tag: proto.Uint64(snid),
// Result: proto.Int32(result),
// }
// proto.SetDefaults(pack)
// datasrvSess.Send(int(server.SSPacketID_PACKET_WD_ACKThirdRebateMessage), pack)
// return true
// } else {
// logger.Logger.Error("datasrv server not found.")
// }
// return false
//}
//func init() {
// go func() {

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