Merge branch 'develop' into release

This commit is contained in:
sk 2024-08-06 08:59:51 +08:00
commit 840e8f5973
74 changed files with 8648 additions and 3592 deletions

View File

@ -295,6 +295,8 @@ const (
GainWayDiamondLottery = 99 //钻石抽奖
GainWaySkinUnLock = 100 // 皮肤解锁消耗
GainWaySkinUpGrade = 101 // 皮肤升级消耗
GainWayItemFen = 102 // 道具分解消耗
GainWayItemFenGain = 103 // 道具分解获得
)
// 后台选择 金币变化类型 的充值 类型id号起始
@ -633,6 +635,7 @@ const (
ItemTypeExpireTime = 15 // 时效类道具
ItemTypeObjective = 16 // 目标类道具
ItemTypeChange = 17 // 兑换话费
ItemTypeSkinChip = 22 // 皮肤碎片
)
func GetKeyNoviceGameId(gameId int) string {
@ -812,4 +815,26 @@ const PermitAdd = 0.2 // 典藏通行证赛季积分多加,百分比
const (
SkinGetAuto = 1
SkinGetItem = 2
SkinGetVip = 3
)
const (
SkillIdRankScore = 30002 // 排位积分加成百分比
SkillIdVipTimes = 30003 // VIP赛每日免费报名次数
SkillIdVipGift = 30004 // VIP每日礼包金币奖励提升百分比
SkillIdTask = 30005 // 每日任务金币奖励提升百分比
SkillIdDiamondLottery = 30007 // 每次钻石抽奖幸运值提升百分比
)
var (
SkinRandom = []int32{300001, 300002, 300007, 300006, 300005, 300004, 300003}
SkinWeightMap = map[int32]int{
300001: 20,
300002: 40,
300007: 40,
300006: 50,
300005: 40,
300004: 60,
300003: 70,
}
)

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -2,13 +2,24 @@
"Arr": [
{
"Id": 300001,
"SkinClass": 3,
"Model": "juese",
"SkinPic": "icon_300001",
"SkinName": "活力芒果",
"SkinType": "mg_01"
"SkinName": "活力-黄",
"SkinType": "mg_01",
"SkinSkillName": "0",
"SkinSkillIcon": "0",
"SkinSkillDes": "0",
"Turn": [
0
],
"TurnKey": [
"0"
]
},
{
"Id": 300002,
"SkinClass": 4,
"Model": "juese",
"SkinPic": "icon_300002",
"SkinName": "财神送福",
@ -16,7 +27,121 @@
"UnlockType": 1,
"UnlockItem": {
"300000": 1
}
},
"SkinSkillName": "福气东来",
"SkinSkillIcon": "SkillIcon-30002",
"SkinSkillDes": "排位赛积分提升",
"Turn": [
1
],
"TurnKey": [
"DBSkinUnlock_300002_t1"
]
},
{
"Id": 300003,
"SkinClass": 3,
"Model": "juese",
"SkinPic": "icon_300003",
"SkinName": "活力-粉",
"SkinType": "mg_02",
"UnlockType": 3,
"UnlockItem": {
"5": 0
},
"SkinSkillName": "活力满满",
"SkinSkillIcon": "SkillIcon-30003",
"SkinSkillDes": "VIP赛每日免费报名次数提升",
"Turn": [
2
],
"TurnKey": [
"DBSkinUnlock_300003_t1"
]
},
{
"Id": 300004,
"SkinClass": 3,
"Model": "juese",
"SkinPic": "icon_300004",
"SkinName": "活力-青",
"SkinType": "mg_03",
"UnlockType": 3,
"UnlockItem": {
"2": 0
},
"SkinSkillName": "金币满满",
"SkinSkillIcon": "SkillIcon-30004",
"SkinSkillDes": "每日礼包金币奖励提升",
"Turn": [
2
],
"TurnKey": [
"DBSkinUnlock_300004_t1"
]
},
{
"Id": 300005,
"SkinClass": 3,
"Model": "juese",
"SkinPic": "icon_300005",
"SkinName": "摇滚小子",
"SkinType": "mg_04",
"UnlockType": 2,
"UnlockItem": {
"310005": 20
},
"SkinSkillName": "金币加成",
"SkinSkillIcon": "SkillIcon-30005",
"SkinSkillDes": "每日任务金币奖励加成",
"Turn": [
3
],
"TurnKey": [
"DBSkinUnlock_300005_t1"
]
},
{
"Id": 300006,
"SkinClass": 4,
"Model": "juese",
"SkinPic": "icon_300006",
"SkinName": "潜水员",
"SkinType": "mg_05",
"UnlockType": 2,
"UnlockItem": {
"310006": 20
},
"SkinSkillName": "0",
"SkinSkillIcon": "0",
"SkinSkillDes": "0",
"Turn": [
4
],
"TurnKey": [
"DBSkinUnlock_300006_t1"
]
},
{
"Id": 300007,
"SkinClass": 3,
"Model": "juese",
"SkinPic": "icon_300007",
"SkinName": "冲浪健将",
"SkinType": "mg_07",
"UnlockType": 2,
"UnlockItem": {
"310007": 20
},
"SkinSkillName": "好运加成",
"SkinSkillIcon": "SkillIcon-30007",
"SkinSkillDes": "每次钻石抽奖幸运值提升",
"Turn": [
5
],
"TurnKey": [
"DBSkinUnlock_300007_t1"
]
}
]
}

View File

@ -1,19 +1,89 @@
б§
б§"б§
б§"б§
б§"б§
б§"б§
б§"б§
в§
в§"в§
 в§"в§

в§"в§
 в§"в§
 в§"в§
 в§"в§
в§"в§
в§ "в§
в§
"в§
á§B0
á§"ñõB0
á§"ñõB0
á§"ñõB0
á§"ñõ B0
á§"ñõB0
á§"ñõ"B0
á§"ñõ7B0
 á§ "ñõYB0

á§
"ñõ<10>B0
+ â§(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3 â§"òõ(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3 â§"òõ(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3â§"òõ(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3â§"òõ (²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3â§"òõ(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3â§"òõ"(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3â§"òõ7(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3â§ "òõY(²ê0 8 BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
4â§
"òõ<10>(²ê0
8
BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
9ã§(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ (³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ"(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ7(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§ "óõY(³ê0 8 B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Bã§
"óõ<10>(³ê0
8
B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
4ä§(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
< ä§"ôõ(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<!ä§"ôõ(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<"ä§"ôõ(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<#ä§"ôõ (´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<$ä§"ôõ(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<%ä§"ôõ"(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<&ä§"ôõ7(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<'ä§ "ôõY(´ê0 8 B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
=(ä§
"ôõ<10>(´ê0
8
B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
4)å§(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<*å§"õõ(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<+å§"õõ(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<,å§"õõ(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<-å§"õõ (µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<.å§"õõ(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
</å§"õõ"(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<0å§"õõ7(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<1å§ "õõY(µê0 8 B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
=2å§
"õõ<10>(µê0
8
B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
3æ§B0
4æ§"öõB0
5æ§"öõB0
6æ§"öõB0
7æ§"öõ B0
8æ§"öõB0
9æ§"öõ"B0
:æ§"öõ7B0
;æ§ "öõYB0
<æ§
"öõ<10>B0
7=ç§(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?>ç§"÷õ(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
??ç§"÷õ(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?@ç§"÷õ(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?Aç§"÷õ (·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?Bç§"÷õ(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?Cç§"÷õ"(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?Dç§"÷õ7(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?Eç§ "÷õY(·ê0 8 B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
@Fç§
"÷õ<10>(·ê0
8
B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%

View File

@ -3,124 +3,761 @@
{
"Id": 1,
"SkinId": 300001,
"Level": 1
"Level": 1,
"SkinSkillDes": "0"
},
{
"Id": 2,
"SkinId": 300001,
"Level": 2,
"UpItem": {
"300001": 20
}
"310001": 3
},
"SkinSkillDes": "0"
},
{
"Id": 3,
"SkinId": 300001,
"Level": 3,
"UpItem": {
"300001": 21
}
"310001": 5
},
"SkinSkillDes": "0"
},
{
"Id": 4,
"SkinId": 300001,
"Level": 4,
"UpItem": {
"300001": 22
}
"310001": 8
},
"SkinSkillDes": "0"
},
{
"Id": 5,
"SkinId": 300001,
"Level": 5,
"UpItem": {
"300001": 23
}
"310001": 13
},
"SkinSkillDes": "0"
},
{
"Id": 6,
"SkinId": 300001,
"Level": 6,
"UpItem": {
"300001": 24
}
"310001": 21
},
"SkinSkillDes": "0"
},
{
"Id": 7,
"SkinId": 300002,
"Level": 1
"SkinId": 300001,
"Level": 7,
"UpItem": {
"310001": 34
},
"SkinSkillDes": "0"
},
{
"Id": 8,
"SkinId": 300002,
"Level": 2,
"SkinId": 300001,
"Level": 8,
"UpItem": {
"300002": 20
}
"310001": 55
},
"SkinSkillDes": "0"
},
{
"Id": 9,
"SkinId": 300002,
"Level": 3,
"SkinId": 300001,
"Level": 9,
"UpItem": {
"300002": 21
}
"310001": 89
},
"SkinSkillDes": "0"
},
{
"Id": 10,
"SkinId": 300002,
"Level": 4,
"SkinId": 300001,
"Level": 10,
"UpItem": {
"300002": 22
}
"310001": 144
},
"SkinSkillDes": "0"
},
{
"Id": 11,
"SkinId": 300002,
"Level": 5,
"UpItem": {
"300002": 23
}
"Level": 1,
"SkinSkillId": 30002,
"SkinSkillLevel": 1,
"SkinSkillValue": 1,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 12,
"SkinId": 300002,
"Level": 6,
"Level": 2,
"UpItem": {
"300002": 24
}
"310002": 3
},
"SkinSkillId": 30002,
"SkinSkillLevel": 2,
"SkinSkillValue": 2,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 13,
"SkinId": 300002,
"Level": 7,
"Level": 3,
"UpItem": {
"300002": 25
}
"310002": 5
},
"SkinSkillId": 30002,
"SkinSkillLevel": 3,
"SkinSkillValue": 3,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 14,
"SkinId": 300002,
"Level": 8,
"Level": 4,
"UpItem": {
"300002": 26
}
"310002": 8
},
"SkinSkillId": 30002,
"SkinSkillLevel": 4,
"SkinSkillValue": 4,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 15,
"SkinId": 300002,
"Level": 9,
"Level": 5,
"UpItem": {
"300002": 27
}
"310002": 13
},
"SkinSkillId": 30002,
"SkinSkillLevel": 5,
"SkinSkillValue": 5,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 16,
"SkinId": 300002,
"Level": 6,
"UpItem": {
"310002": 21
},
"SkinSkillId": 30002,
"SkinSkillLevel": 6,
"SkinSkillValue": 6,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 17,
"SkinId": 300002,
"Level": 7,
"UpItem": {
"310002": 34
},
"SkinSkillId": 30002,
"SkinSkillLevel": 7,
"SkinSkillValue": 7,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 18,
"SkinId": 300002,
"Level": 8,
"UpItem": {
"310002": 55
},
"SkinSkillId": 30002,
"SkinSkillLevel": 8,
"SkinSkillValue": 8,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 19,
"SkinId": 300002,
"Level": 9,
"UpItem": {
"310002": 89
},
"SkinSkillId": 30002,
"SkinSkillLevel": 9,
"SkinSkillValue": 9,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 20,
"SkinId": 300002,
"Level": 10,
"UpItem": {
"300002": 28
}
"310002": 144
},
"SkinSkillId": 30002,
"SkinSkillLevel": 10,
"SkinSkillValue": 10,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 21,
"SkinId": 300003,
"Level": 1,
"SkinSkillId": 30003,
"SkinSkillLevel": 1,
"SkinSkillValue": 1,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 22,
"SkinId": 300003,
"Level": 2,
"UpItem": {
"310003": 3
},
"SkinSkillId": 30003,
"SkinSkillLevel": 2,
"SkinSkillValue": 2,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 23,
"SkinId": 300003,
"Level": 3,
"UpItem": {
"310003": 5
},
"SkinSkillId": 30003,
"SkinSkillLevel": 3,
"SkinSkillValue": 3,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 24,
"SkinId": 300003,
"Level": 4,
"UpItem": {
"310003": 8
},
"SkinSkillId": 30003,
"SkinSkillLevel": 4,
"SkinSkillValue": 4,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 25,
"SkinId": 300003,
"Level": 5,
"UpItem": {
"310003": 13
},
"SkinSkillId": 30003,
"SkinSkillLevel": 5,
"SkinSkillValue": 5,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 26,
"SkinId": 300003,
"Level": 6,
"UpItem": {
"310003": 21
},
"SkinSkillId": 30003,
"SkinSkillLevel": 6,
"SkinSkillValue": 6,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 27,
"SkinId": 300003,
"Level": 7,
"UpItem": {
"310003": 34
},
"SkinSkillId": 30003,
"SkinSkillLevel": 7,
"SkinSkillValue": 7,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 28,
"SkinId": 300003,
"Level": 8,
"UpItem": {
"310003": 55
},
"SkinSkillId": 30003,
"SkinSkillLevel": 8,
"SkinSkillValue": 8,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 29,
"SkinId": 300003,
"Level": 9,
"UpItem": {
"310003": 89
},
"SkinSkillId": 30003,
"SkinSkillLevel": 9,
"SkinSkillValue": 9,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 30,
"SkinId": 300003,
"Level": 10,
"UpItem": {
"310003": 144
},
"SkinSkillId": 30003,
"SkinSkillLevel": 10,
"SkinSkillValue": 10,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 31,
"SkinId": 300004,
"Level": 1,
"SkinSkillId": 30004,
"SkinSkillLevel": 1,
"SkinSkillValue": 1,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 32,
"SkinId": 300004,
"Level": 2,
"UpItem": {
"310004": 3
},
"SkinSkillId": 30004,
"SkinSkillLevel": 2,
"SkinSkillValue": 2,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 33,
"SkinId": 300004,
"Level": 3,
"UpItem": {
"310004": 5
},
"SkinSkillId": 30004,
"SkinSkillLevel": 3,
"SkinSkillValue": 3,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 34,
"SkinId": 300004,
"Level": 4,
"UpItem": {
"310004": 8
},
"SkinSkillId": 30004,
"SkinSkillLevel": 4,
"SkinSkillValue": 4,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 35,
"SkinId": 300004,
"Level": 5,
"UpItem": {
"310004": 13
},
"SkinSkillId": 30004,
"SkinSkillLevel": 5,
"SkinSkillValue": 5,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 36,
"SkinId": 300004,
"Level": 6,
"UpItem": {
"310004": 21
},
"SkinSkillId": 30004,
"SkinSkillLevel": 6,
"SkinSkillValue": 6,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 37,
"SkinId": 300004,
"Level": 7,
"UpItem": {
"310004": 34
},
"SkinSkillId": 30004,
"SkinSkillLevel": 7,
"SkinSkillValue": 7,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 38,
"SkinId": 300004,
"Level": 8,
"UpItem": {
"310004": 55
},
"SkinSkillId": 30004,
"SkinSkillLevel": 8,
"SkinSkillValue": 8,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 39,
"SkinId": 300004,
"Level": 9,
"UpItem": {
"310004": 89
},
"SkinSkillId": 30004,
"SkinSkillLevel": 9,
"SkinSkillValue": 9,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 40,
"SkinId": 300004,
"Level": 10,
"UpItem": {
"310004": 144
},
"SkinSkillId": 30004,
"SkinSkillLevel": 10,
"SkinSkillValue": 10,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 41,
"SkinId": 300005,
"Level": 1,
"SkinSkillId": 30005,
"SkinSkillLevel": 1,
"SkinSkillValue": 1,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 42,
"SkinId": 300005,
"Level": 2,
"UpItem": {
"310005": 3
},
"SkinSkillId": 30005,
"SkinSkillLevel": 2,
"SkinSkillValue": 2,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 43,
"SkinId": 300005,
"Level": 3,
"UpItem": {
"310005": 5
},
"SkinSkillId": 30005,
"SkinSkillLevel": 3,
"SkinSkillValue": 3,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 44,
"SkinId": 300005,
"Level": 4,
"UpItem": {
"310005": 8
},
"SkinSkillId": 30005,
"SkinSkillLevel": 4,
"SkinSkillValue": 4,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 45,
"SkinId": 300005,
"Level": 5,
"UpItem": {
"310005": 13
},
"SkinSkillId": 30005,
"SkinSkillLevel": 5,
"SkinSkillValue": 5,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 46,
"SkinId": 300005,
"Level": 6,
"UpItem": {
"310005": 21
},
"SkinSkillId": 30005,
"SkinSkillLevel": 6,
"SkinSkillValue": 6,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 47,
"SkinId": 300005,
"Level": 7,
"UpItem": {
"310005": 34
},
"SkinSkillId": 30005,
"SkinSkillLevel": 7,
"SkinSkillValue": 7,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 48,
"SkinId": 300005,
"Level": 8,
"UpItem": {
"310005": 55
},
"SkinSkillId": 30005,
"SkinSkillLevel": 8,
"SkinSkillValue": 8,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 49,
"SkinId": 300005,
"Level": 9,
"UpItem": {
"310005": 89
},
"SkinSkillId": 30005,
"SkinSkillLevel": 9,
"SkinSkillValue": 9,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 50,
"SkinId": 300005,
"Level": 10,
"UpItem": {
"310005": 144
},
"SkinSkillId": 30005,
"SkinSkillLevel": 10,
"SkinSkillValue": 10,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 51,
"SkinId": 300006,
"Level": 1,
"SkinSkillDes": "0"
},
{
"Id": 52,
"SkinId": 300006,
"Level": 2,
"UpItem": {
"310006": 3
},
"SkinSkillDes": "0"
},
{
"Id": 53,
"SkinId": 300006,
"Level": 3,
"UpItem": {
"310006": 5
},
"SkinSkillDes": "0"
},
{
"Id": 54,
"SkinId": 300006,
"Level": 4,
"UpItem": {
"310006": 8
},
"SkinSkillDes": "0"
},
{
"Id": 55,
"SkinId": 300006,
"Level": 5,
"UpItem": {
"310006": 13
},
"SkinSkillDes": "0"
},
{
"Id": 56,
"SkinId": 300006,
"Level": 6,
"UpItem": {
"310006": 21
},
"SkinSkillDes": "0"
},
{
"Id": 57,
"SkinId": 300006,
"Level": 7,
"UpItem": {
"310006": 34
},
"SkinSkillDes": "0"
},
{
"Id": 58,
"SkinId": 300006,
"Level": 8,
"UpItem": {
"310006": 55
},
"SkinSkillDes": "0"
},
{
"Id": 59,
"SkinId": 300006,
"Level": 9,
"UpItem": {
"310006": 89
},
"SkinSkillDes": "0"
},
{
"Id": 60,
"SkinId": 300006,
"Level": 10,
"UpItem": {
"310006": 144
},
"SkinSkillDes": "0"
},
{
"Id": 61,
"SkinId": 300007,
"Level": 1,
"SkinSkillId": 30007,
"SkinSkillLevel": 1,
"SkinSkillValue": 1,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 62,
"SkinId": 300007,
"Level": 2,
"UpItem": {
"310007": 3
},
"SkinSkillId": 30007,
"SkinSkillLevel": 2,
"SkinSkillValue": 2,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 63,
"SkinId": 300007,
"Level": 3,
"UpItem": {
"310007": 5
},
"SkinSkillId": 30007,
"SkinSkillLevel": 3,
"SkinSkillValue": 3,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 64,
"SkinId": 300007,
"Level": 4,
"UpItem": {
"310007": 8
},
"SkinSkillId": 30007,
"SkinSkillLevel": 4,
"SkinSkillValue": 4,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 65,
"SkinId": 300007,
"Level": 5,
"UpItem": {
"310007": 13
},
"SkinSkillId": 30007,
"SkinSkillLevel": 5,
"SkinSkillValue": 5,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 66,
"SkinId": 300007,
"Level": 6,
"UpItem": {
"310007": 21
},
"SkinSkillId": 30007,
"SkinSkillLevel": 6,
"SkinSkillValue": 6,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 67,
"SkinId": 300007,
"Level": 7,
"UpItem": {
"310007": 34
},
"SkinSkillId": 30007,
"SkinSkillLevel": 7,
"SkinSkillValue": 7,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 68,
"SkinId": 300007,
"Level": 8,
"UpItem": {
"310007": 55
},
"SkinSkillId": 30007,
"SkinSkillLevel": 8,
"SkinSkillValue": 8,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 69,
"SkinId": 300007,
"Level": 9,
"UpItem": {
"310007": 89
},
"SkinSkillId": 30007,
"SkinSkillLevel": 9,
"SkinSkillValue": 9,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 70,
"SkinId": 300007,
"Level": 10,
"UpItem": {
"310007": 144
},
"SkinSkillId": 30007,
"SkinSkillLevel": 10,
"SkinSkillValue": 10,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
}
]
}

Binary file not shown.

Binary file not shown.

View File

@ -23,6 +23,11 @@
],
"RewardOutlineID": [
1
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
},
{
@ -53,6 +58,11 @@
"RewardOutlineID": [
2
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 1
},
{
@ -83,6 +93,11 @@
"RewardOutlineID": [
2
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 2
},
{
@ -113,6 +128,11 @@
"RewardOutlineID": [
3
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 3
},
{
@ -143,6 +163,11 @@
"RewardOutlineID": [
3
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 4
},
{
@ -173,6 +198,11 @@
"RewardOutlineID": [
4
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 5
},
{
@ -203,6 +233,11 @@
"RewardOutlineID": [
4
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 6
},
{
@ -233,6 +268,11 @@
"RewardOutlineID": [
3
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 7
},
{
@ -263,6 +303,11 @@
"RewardOutlineID": [
3
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 8
},
{
@ -293,6 +338,11 @@
"RewardOutlineID": [
4
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 9
},
{
@ -323,6 +373,11 @@
"RewardOutlineID": [
4
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 10
},
{
@ -353,6 +408,11 @@
"RewardOutlineID": [
0
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 11
},
{
@ -383,6 +443,11 @@
"RewardOutlineID": [
0
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 12
},
{
@ -413,6 +478,11 @@
"RewardOutlineID": [
0
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 13
},
{
@ -443,6 +513,11 @@
"RewardOutlineID": [
0
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 14
},
{
@ -473,6 +548,11 @@
"RewardOutlineID": [
0
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 15
},
{
@ -503,8 +583,17 @@
"RewardOutlineID": [
0
],
"ParamName": [
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
],
"MatchFreeTimes": 16
},
{}
{
"ParamName": [
""
]
}
]
}

View File

@ -0,0 +1,90 @@
package svc
import (
"errors"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
var (
AnnouncerLogDBErr = errors.New("log_announcerlog db open failed.")
)
func AnnouncerLogCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.AnnouncerLogDBName)
if s != nil {
c, first := s.DB().C(model.AnnouncerLogCollName)
if first {
}
return c
}
return nil
}
func InsertAnnouncerLog(logs ...*model.AnnouncerLog) (err error) {
clog := AnnouncerLogCollection(logs[0].Platform)
if clog == nil {
return
}
switch len(logs) {
case 0:
return errors.New("no data")
case 1:
err = clog.Insert(logs[0])
default:
docs := make([]interface{}, 0, len(logs))
for _, log := range logs {
docs = append(docs, log)
}
err = clog.Insert(docs...)
}
if err != nil {
logger.Logger.Warn("InsertAnnouncerLog error:", err)
return
}
return
}
// 取最新100条数据
func FetchAnnouncerLog(plt string) (recs []model.AnnouncerLog, err error) {
query := bson.M{}
err = AnnouncerLogCollection(plt).Find(query).Sort("-_id").Limit(100).All(&recs)
return
}
type AnnouncerLogSvc struct {
}
func (svc *AnnouncerLogSvc) InsertAnnouncerLog(args []*model.AnnouncerLog, ret *bool) (err error) {
err = InsertAnnouncerLog(args...)
if err == nil {
*ret = true
}
return
}
func (svc *AnnouncerLogSvc) FetchAnnouncerLog(args *model.FetchAnnouncerLogArgs, ret *[]model.AnnouncerLog) (err error) {
*ret, err = FetchAnnouncerLog(args.Plt)
return
}
func (svc *AwardLogSvc) UpsertAnnouncerLog(args *model.FetchAnnouncerLogArgs, ret *model.AnnouncerLog) error {
cc := AnnouncerLogCollection(args.Plt)
if cc == nil {
return nil
}
_, err := cc.Upsert(bson.M{"platform": args.Plt}, args.Data)
if err != nil && err != mgo.ErrNotFound {
logger.Logger.Error("UpsertAnnouncerLog is err: ", err)
return err
}
ret = args.Data
return nil
}
func init() {
rpc.Register(new(AnnouncerLogSvc))
}

56
dbproxy/svc/l_awardlog.go Normal file
View File

@ -0,0 +1,56 @@
package svc
import (
"errors"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
var (
AwardLogDBErr = errors.New("log_awardlog db open failed.")
)
func AwardLogCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.AwardLogDBName)
if s != nil {
c, first := s.DB().C(model.AwardLogCollName)
if first {
}
return c
}
return nil
}
func FetchAwardLog(plt string) (recs model.AwardLog, err error) {
err = AwardLogCollection(plt).Find(bson.M{}).One(&recs)
return
}
type AwardLogSvc struct {
}
func (svc *AwardLogSvc) FetchAwardLog(args *model.FetchAwardLogArgs, ret *model.AwardLog) (err error) {
*ret, err = FetchAwardLog(args.Plt)
return
}
func (svc *AwardLogSvc) UpsertAwardLog(args *model.FetchAwardLogArgs, ret *model.AwardLog) error {
cc := AwardLogCollection(args.Plt)
if cc == nil {
return AwardLogDBErr
}
_, err := cc.Upsert(bson.M{}, args.Data)
if err != nil {
logger.Logger.Error("UpsertAwardLog is err: ", err)
return err
}
ret = args.Data
return nil
}
func init() {
rpc.Register(new(AwardLogSvc))
}

View File

@ -328,9 +328,9 @@ func (svc *PlayerDataSvc) GetPlayerDataBySnId(args *model.GetPlayerDataBySnIdArg
return nil
}
defer func() {
logger.Logger.Debugf("Player Data: snid:%v VCardCost:%v MoneyTotal:%v", ret.Pd.SnId, ret.Pd.VCardCost, ret.Pd.MoneyTotal)
}()
//defer func() {
// logger.Logger.Debugf("Player Data: snid:%v VCardCost:%v MoneyTotal:%v", ret.Pd.SnId, ret.Pd.VCardCost, ret.Pd.MoneyTotal)
//}()
f := func(p *model.PlayerData) {
// 更新一下绑定关系

View File

@ -35,5 +35,7 @@ const (
ETCDKEY_ACT_Permit = "/game/act_permit" // 赛季通行证配置
ETCDKEY_DIAMOND_LOTTERY = "/game/diamond_lottery" // 钻石抽奖配置
ETCDKEY_Item = "/game/item" // 道具列表
ETCDKEY_SKin = "/game/skin_config" // 皮肤配置
ETCDKEY_RANK_TYPE = "/game/RankType" // 排行榜奖励配置
ETCDKEY_AWARD_CONFIG = "/game/awardlog_config" //获奖记录
)

View File

@ -22,6 +22,8 @@ func init() {
etcd.Register(etcd.ETCDKEY_ACT_Collect, webapi.WelfareCollectConfig{}, platformConfigEtcd)
// 渠道开关
etcd.Register(etcd.ETCDKEY_ChannelSwitch, webapi.ChannelSwitchConfig{}, platformConfigEtcd)
// 皮肤配置
etcd.Register(etcd.ETCDKEY_SKin, webapi.SkinConfig{}, platformConfigEtcd)
}
func platformConfigEtcd(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
@ -37,6 +39,8 @@ func platformConfigEtcd(ctx context.Context, completeKey string, isInit bool, ev
ConfigMgrInst.GetConfig(d.Platform).WelfareCollectConfig = d
case *webapi.ChannelSwitchConfig:
ConfigMgrInst.GetConfig(d.Platform).ChannelSwitch[d.GetTp()] = d
case *webapi.SkinConfig:
ConfigMgrInst.GetConfig(d.Platform).SkinConfig = d
default:
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)
}

View File

@ -1389,3 +1389,9 @@ func (this *Player) PetUseSkill() bool {
}
return false
}
// GetSkillAdd 获取技能加成
// id 技能id
func (this *Player) GetSkillAdd(id int32) int32 {
return this.GetSkillAdd2(id, ConfigMgrInst)
}

View File

@ -2132,8 +2132,7 @@ func (this *Scene) TryBillExGameDrop(p *Player) {
}
// 渠道开关
conf := ConfigMgrInst.GetConfig(p.Platform).ChannelSwitch[common.ChannelSwitchDropItem]
if !model.GameParamData.CloseChannelSwitch && (conf == nil || !common.InSliceString(conf.OnChannelName, p.LastChannel)) {
if !ConfigMgrInst.IsOn(p.Platform, common.ChannelSwitchDropItem, p.LastChannel) {
return
}

View File

@ -569,7 +569,7 @@ func (this *TienLenSceneData) SendHandCard_Match() {
}
grades = append(grades, gi)
}
realWin := 1 //-1最差 0正常 1最好
realWin := 0 //-1最差 0正常 1最好
switch realWin {
case -1:
sort.Slice(grades, func(i, j int) bool {

View File

@ -1569,7 +1569,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
//在这里执行结算
if sceneEx, ok := s.GetExtraData().(*TienLenSceneData); ok {
addItems := func(billData *tienlen.TienLenPlayerGameBilled, sceneTypeScore, vipAdd, vipScore, roleAdd, roleScore, weekCardScore int64) {
addItems := func(billData *tienlen.TienLenPlayerGameBilled, sceneTypeScore, vipAdd, vipScore, roleAdd, roleScore, weekCardScore, skinAdd, skinScore int64) {
// 场次加成配置
if sceneTypeScore > 0 {
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
@ -1606,6 +1606,15 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
Score: weekCardScore,
})
}
// 皮肤加成
if skinScore > 0 {
billData.AddItems = append(billData.AddItems, &tienlen.AddItem{
ItemType: 7,
ItemId: 0,
Addition: int32(skinAdd),
Score: skinScore,
})
}
}
winScore := int64(0)
@ -1728,7 +1737,8 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
var vipScore int64 // vip加成
var roleScore int64 // 角色加成
var weekCardScore int64 // 周卡加成
var roleAdd int32
var skinScore int64 // 皮肤技能加成
var roleAdd, skinAdd int32
var otherScore int64 // 额外总加分
oldRankScore := losePlayer.GetRankScore(sceneEx.GetDBGameFree().GetRankType())
playerLoseScore := rule.GetLoseScore(losePlayer.cards, true)
@ -1768,8 +1778,13 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
if losePlayer.GetWeekCardPrivilege(2) {
weekCardScore = int64(math.Ceil(float64(rankScore) * float64(5) / 100.0))
}
// 皮肤技能加成
skinAdd = losePlayer.GetSkillAdd(common.SkillIdRankScore)
if skinAdd > 0 {
skinScore = int64(math.Ceil(float64(rankScore) * float64(skinAdd) / 100.0))
}
}
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore + skinScore
losePlayer.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算
}
losePlayer.winCoin -= gainScore
@ -1784,7 +1799,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
}
billData.WinRankScore = billData.RankScore - oldRankScore
if otherScore > 0 {
addItems(billData, sceneTypeScore, int64(losePlayer.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore)
addItems(billData, sceneTypeScore, int64(losePlayer.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore, int64(skinAdd), skinScore)
}
isWin := int32(0)
billCoin := losePlayer.bombScore - gainScore
@ -1862,8 +1877,11 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
var rankScore int64 // 排位积分
var sceneTypeScore int64 // 场次额外积分
var vipScore int64 // vip加成
var roleScore int64 // 角色加成
var weekCardScore int64 // 周卡加成
var otherScore int64 // 额外总加分
var skinScore int64 // 皮肤技能加成
var roleAdd, skinAdd int32
var otherScore int64 // 额外总加分
oldRankScore := lastWinPlayer.GetRankScore(sceneEx.GetDBGameFree().GetRankType())
lastWinScore := rule.GetLoseScore(lastWinPlayer.cards, true)
rankScore = int64(lastWinScore) + 50
@ -1897,14 +1915,18 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
vipScore = int64(math.Ceil(float64(rankScore) * float64(lastWinPlayer.VipExtra) / 100.0))
// 角色加成分
_, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&lastWinPlayer.PlayerData, common.RoleAddRankScore)
roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0))
//周卡加成
if lastWinPlayer.GetWeekCardPrivilege(2) {
weekCardScore = int64(math.Ceil(float64(rankScore) * float64(5) / 100.0))
}
roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0))
// 皮肤技能加成
skinAdd = lastWinPlayer.GetSkillAdd(common.SkillIdRankScore)
if skinAdd > 0 {
skinScore = int64(math.Ceil(float64(rankScore) * float64(skinAdd) / 100.0))
}
}
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore + skinScore
lastWinPlayer.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算
}
lastWinPlayer.winCoin -= astWinGainScore
@ -1919,7 +1941,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
}
billData.WinRankScore = billData.RankScore - oldRankScore
if otherScore > 0 {
addItems(billData, sceneTypeScore, int64(lastWinPlayer.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore)
addItems(billData, sceneTypeScore, int64(lastWinPlayer.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore, int64(skinAdd), skinScore)
}
isWin := int32(0)
billCoin := lastWinPlayer.bombScore - astWinGainScore
@ -1975,8 +1997,11 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
var rankScore int64 // 排位积分
var sceneTypeScore int64 // 场次额外积分
var vipScore int64 // vip加成
var roleScore int64 // 角色加成
var weekCardScore int64 // 周卡加成
var otherScore int64 // 额外总加分
var skinScore int64 // 皮肤技能加成
var roleAdd, skinAdd int32
var otherScore int64 // 额外总加分
oldRankScore := playerEx.GetRankScore(sceneEx.GetDBGameFree().GetRankType())
rankScore = loseRankScore
taxRate := sceneEx.DbGameFree.GetTaxRate() //万分比
@ -2006,8 +2031,13 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
if playerEx.GetWeekCardPrivilege(2) {
weekCardScore = int64(math.Ceil(float64(rankScore) * float64(5) / 100.0))
}
// 皮肤技能加成
skinAdd = playerEx.GetSkillAdd(common.SkillIdRankScore)
if skinAdd > 0 {
skinScore = int64(math.Ceil(float64(rankScore) * float64(skinAdd) / 100.0))
}
}
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore + skinScore
playerEx.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算
}
playerEx.winCoin += gainScore
@ -2022,7 +2052,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
}
billData.WinRankScore = billData.RankScore - oldRankScore
if otherScore > 0 {
addItems(billData, sceneTypeScore, int64(playerEx.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore)
addItems(billData, sceneTypeScore, int64(playerEx.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore, int64(skinAdd), skinScore)
}
isWin := int32(0)
billCoin := playerEx.bombScore + gainScore
@ -2077,8 +2107,11 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
var rankScore int64 // 排位积分
var sceneTypeScore int64 // 场次额外积分
var vipScore int64 // vip加成
var roleScore int64 // 角色加成
var weekCardScore int64 // 周卡加成
var otherScore int64 // 额外总加分
var skinScore int64 // 皮肤技能加成
var roleAdd, skinAdd int32
var otherScore int64 // 额外总加分
oldRankScore := playerEx.GetRankScore(sceneEx.GetDBGameFree().GetRankType())
rankScore = lastWinPlayerRankScore
taxRate := sceneEx.DbGameFree.GetTaxRate() //万分比
@ -2103,8 +2136,13 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
if playerEx.GetWeekCardPrivilege(2) {
weekCardScore = int64(math.Ceil(float64(rankScore) * float64(5) / 100.0))
}
// 皮肤技能加成
skinAdd = playerEx.GetSkillAdd(common.SkillIdRankScore)
if skinAdd > 0 {
skinScore = int64(math.Ceil(float64(rankScore) * float64(skinAdd) / 100.0))
}
}
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore + skinScore
playerEx.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算
}
playerEx.winCoin += gainScore
@ -2119,7 +2157,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
}
billData.WinRankScore = billData.RankScore - oldRankScore
if otherScore > 0 {
addItems(billData, sceneTypeScore, int64(playerEx.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore)
addItems(billData, sceneTypeScore, int64(playerEx.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore, int64(skinAdd), skinScore)
}
isWin := int32(0)
billCoin := playerEx.bombScore + gainScore
@ -2175,9 +2213,10 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
var rankScore int64 // 排位积分
var sceneTypeScore int64 // 场次额外积分
var vipScore int64 // vip加成
var weekCardScore int64 // 周卡加成
var roleScore int64 // 角色加成
var roleAdd int32
var weekCardScore int64 // 周卡加成
var skinScore int64 // 皮肤技能加成
var roleAdd, skinAdd int32
var otherScore int64 // 额外总加分
playerEx := sceneEx.seats[i]
if playerEx == nil {
@ -2246,8 +2285,13 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
if playerEx.GetWeekCardPrivilege(2) {
weekCardScore = int64(math.Ceil(float64(rankScore) * float64(5) / 100.0))
}
// 皮肤技能加成
skinAdd = playerEx.GetSkillAdd(common.SkillIdRankScore)
if skinAdd > 0 {
skinScore = int64(math.Ceil(float64(rankScore) * float64(skinAdd) / 100.0))
}
}
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore + skinScore
playerEx.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore) // 炸弹分一起算
}
playerEx.winCoin -= gainScore
@ -2263,7 +2307,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
}
billData.WinRankScore = billData.RankScore - oldRankScore
if otherScore > 0 {
addItems(billData, sceneTypeScore, int64(playerEx.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore)
addItems(billData, sceneTypeScore, int64(playerEx.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore, int64(skinAdd), skinScore)
}
isWin := int32(0)
@ -2346,7 +2390,8 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
var vipScore int64 // vip加成
var roleScore int64 // 角色加成
var weekCardScore int64 // 周卡加成
var roleAdd int32
var skinScore int64 // 皮肤技能加成
var roleAdd, skinAdd int32
var otherScore int64 // 额外总加分
playerEx := sceneEx.players[winSnid]
if playerEx != nil {
@ -2372,7 +2417,12 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
if playerEx.GetWeekCardPrivilege(2) {
weekCardScore = int64(math.Ceil(float64(rankScore) * float64(5) / 100.0))
}
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore
// 皮肤技能加成
skinAdd = playerEx.GetSkillAdd(common.SkillIdRankScore)
if skinAdd > 0 {
skinScore = int64(math.Ceil(float64(rankScore) * float64(skinAdd) / 100.0))
}
otherScore = sceneTypeScore + vipScore + roleScore + weekCardScore + skinScore
playerEx.AddRankScore(sceneEx.GetDBGameFree().GetRankType(), rankScore+otherScore)
}
playerEx.winCoin += gainScore
@ -2387,7 +2437,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
TianHu: playerEx.tianHu,
}
if otherScore > 0 {
addItems(billData, sceneTypeScore, int64(playerEx.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore)
addItems(billData, sceneTypeScore, int64(playerEx.VipExtra), vipScore, int64(roleAdd), roleScore, weekCardScore, int64(skinAdd), skinScore)
}
isWin := int32(0)

83
model/announcerlog.go Normal file
View File

@ -0,0 +1,83 @@
package model
import (
"mongo.games.com/goserver/core/logger"
"time"
"github.com/globalsign/mgo"
)
type AnnouncerLog struct {
Platform string
Snid int32 //玩家ID
Name string //玩家名字
Phone string //电话
ItemId int32 //获得物品ID
TypeId int32 //1-话费 2-实物
Ts time.Time
}
var (
AnnouncerLogDBName = "log"
AnnouncerLogCollName = "announcer_log"
)
func InsertAnnouncerLog(logs ...*AnnouncerLog) (err error) {
if rpcCli == nil {
return ErrRPClientNoConn
}
var ret bool
return rpcCli.CallWithTimeout("AnnouncerLogSvc.InsertAnnouncerLog", logs, &ret, time.Second*30)
}
func UpsertAnnouncerLog(platform string, data *AwardLog) {
if rpcCli == nil {
logger.Logger.Error("model.UpsertApplyList rpcCli == nil")
return
}
args := &FetchAwardLogArgs{
Plt: platform,
Data: data,
}
ret := &AwardLogRes{}
err := rpcCli.CallWithTimeout("AnnouncerLogSvc.UpsertAnnouncerLog", args, ret, time.Second*30)
if err != nil {
logger.Logger.Warn("UpsertApplyList error:", err)
return
}
return
}
type FetchAnnouncerLogArgs struct {
Plt string
Data *AnnouncerLog
}
func FetchAnnouncerLog(plt string) (recs []AnnouncerLog, err error) {
if rpcCli == nil {
return nil, ErrRPClientNoConn
}
args := &FetchAnnouncerLogArgs{
Plt: plt,
}
err = rpcCli.CallWithTimeout("AnnouncerLogSvc.FetchAnnouncerLog", args, &recs, time.Second*30)
return
}
type RemoveAnnouncerLogArgs struct {
Plt string
Ts time.Time
}
func RemovAnnouncerLog(plt string, ts time.Time) (ret *mgo.ChangeInfo, err error) {
if rpcCli == nil {
return nil, ErrRPClientNoConn
}
args := &RemoveAnnouncerLogArgs{
Plt: plt,
}
rpcCli.CallWithTimeout("AwardLogSvc.RemoveAwardLog", args, &ret, time.Second*30)
return
}

75
model/awardlog.go Normal file
View File

@ -0,0 +1,75 @@
package model
import (
"mongo.games.com/goserver/core/logger"
"time"
"github.com/globalsign/mgo"
)
type AwardLog struct {
AwardMap map[int32]map[int32]int64 //key1:1话费 2实物 key2 itemId value:数量
Ts int64
}
var (
AwardLogDBName = "log"
AwardLogCollName = "log_award"
)
type FetchAwardLogArgs struct {
Plt string
Data *AwardLog
}
type AwardLogRes struct {
Data *AwardLog
Ts int64
}
func FetchAwardLog(plt string) (recs AwardLog, err error) {
if rpcCli == nil {
return recs, ErrRPClientNoConn
}
args := &FetchAwardLogArgs{
Plt: plt,
}
err = rpcCli.CallWithTimeout("AwardLogSvc.FetchAwardLog", args, &recs, time.Second*30)
return
}
func UpsertAwardLog(platform string, data *AwardLog) {
if rpcCli == nil {
logger.Logger.Error("model.UpsertAwardLog rpcCli == nil")
return
}
args := &FetchAwardLogArgs{
Plt: platform,
Data: data,
}
ret := &AwardLogRes{}
err := rpcCli.CallWithTimeout("AwardLogSvc.UpsertAwardLog", args, ret, time.Second*30)
if err != nil {
logger.Logger.Warn("UpsertAwardLog error:", err)
return
}
return
}
type RemoveAwardLogArgs struct {
Plt string
Ts time.Time
}
func RemovAwardLog(plt string, ts time.Time) (ret *mgo.ChangeInfo, err error) {
if rpcCli == nil {
return nil, ErrRPClientNoConn
}
args := &RemoveMatchRecsArgs{
Plt: plt,
Ts: ts,
}
rpcCli.CallWithTimeout("AwardLogSvc.RemoveAwardLog", args, &ret, time.Second*30)
return
}

View File

@ -1,10 +1,10 @@
package model
import (
"strconv"
"mongo.games.com/game/common"
"mongo.games.com/game/protocol/shop"
"mongo.games.com/game/protocol/webapi"
"strconv"
)
/*
@ -127,6 +127,12 @@ type AllConfig struct {
*webapi.DiamondLotteryConfig
// 道具配置
*webapi.ItemConfig
// 皮肤配置
*webapi.SkinConfig
//排行榜配置
*webapi.RankTypeConfig
//获奖记录配置
*webapi.AwardLogConfig
}
type GlobalConfig struct {
@ -176,6 +182,18 @@ func (cm *ConfigMgr) GetConfigs() map[string]*AllConfig {
return cm.platform
}
// IsOn 活动开关
// tp 活动类型
// playerLastChannel 玩家当前登录渠道包
func (cm *ConfigMgr) IsOn(plt string, tp int32, playerLastChannel string) bool {
cm.GetConfig(plt)
conf := cm.GetConfig(plt).ChannelSwitch[tp]
if !GameParamData.CloseChannelSwitch && (conf == nil || !common.InSliceString(conf.OnChannelName, playerLastChannel)) {
return false
}
return true
}
// UpdateItemShop 更新商品信息
func (cm *ConfigMgr) UpdateItemShop(list *webapi.ItemShopList) {
if list == nil {
@ -267,3 +285,72 @@ func (cm *ConfigMgr) GetPermitConfig(plt, channel string) *webapi.PermitChannelC
return nil
}
func (cm *ConfigMgr) GetSkinInfo(plt string, skinId int32) *webapi.SkinItem {
cfg := cm.GetConfig(plt).SkinConfig
if cfg == nil {
return nil
}
for _, v := range cfg.GetItems() {
if v.GetId() == skinId {
return v
}
}
return nil
}
func (cm *ConfigMgr) GetSkinLevel(plt string, skinId, level int32) *webapi.SkinLevel {
cfg := cm.GetConfig(plt).SkinConfig
if cfg == nil {
return nil
}
for _, v := range cfg.GetItems() {
if v.GetId() == skinId {
for _, vv := range v.GetLevels() {
if vv.GetLevel() == level {
return vv
}
}
break
}
}
return nil
}
func (cm *ConfigMgr) GetSkinMaxLevel(plt string, skinId int32) int32 {
cfg := cm.GetConfig(plt).SkinConfig
if cfg == nil {
return 0
}
var level int32
for _, v := range cfg.GetItems() {
if v.GetId() == skinId {
for _, vv := range v.GetLevels() {
if vv.GetLevel() > level {
level = vv.GetLevel()
}
}
break
}
}
return level
}
func (cm *ConfigMgr) GetSkinSkillMaxLevel(plt string, skinId int32) int32 {
cfg := cm.GetConfig(plt).SkinConfig
if cfg == nil {
return 0
}
var level int32
for _, v := range cfg.GetItems() {
if v.GetId() == skinId {
for _, vv := range v.GetLevels() {
if vv.GetSkillLevel() > level {
level = vv.GetSkillLevel()
}
}
break
}
}
return level
}

View File

@ -217,10 +217,20 @@ type ShopTotal struct {
AdReceiveNum int32 //已经领取的次数
}
type ModEx struct {
Ts int64 //解锁时间戳
}
type SkillEx struct {
Ts int64 //解锁时间戳
}
type ModInfo struct {
ModUnlock map[int32]int32 //已经解锁的id:等级
ModId int32 //使用中的id
SkillInfo map[int32]map[int32]int32 //技能等级 ModId:技能id:技能等级
ModUnlock map[int32]int32 //已经解锁的id:等级
Mod map[int32]*ModEx //模型数据
ModId int32 //使用中的id
SkillInfo map[int32]map[int32]int32 //技能等级 ModId:技能id:技能等级
Skill map[int32]map[int32]*SkillEx // 技能数据
}
// 七日签到数据
@ -714,6 +724,73 @@ func ConvertPlayerDataToWebData(param *WebPlayerDataParam) *webapi.PlayerData {
pdfw.Long = param.Long
pdfw.VCardCost = param.VCardCost
pdfw.MoneyTotal = param.MoneyTotal
if param.Roles != nil {
pdfw.UseRoleId = param.Roles.ModId
for k, v := range param.Roles.ModUnlock {
if v <= 0 {
continue
}
ts := int64(0)
if param.Roles.Mod[k] != nil {
ts = param.Roles.Mod[k].Ts
}
pdfw.RoleUnlockList = append(pdfw.RoleUnlockList, &webapi.ModInfo{
Id: k,
Level: v,
Ts: ts,
})
}
}
if param.Skin != nil {
pdfw.UseSkinId = param.Skin.ModId
for k, v := range param.Skin.ModUnlock {
if v > 0 {
pdfw.SkinIds = append(pdfw.SkinIds, k)
ts := int64(0)
if param.Skin.Mod[k] != nil {
ts = param.Skin.Mod[k].Ts
}
pdfw.SkinUnlockList = append(pdfw.SkinUnlockList, &webapi.ModInfo{
Id: k,
Level: v,
Ts: ts,
})
}
}
}
if param.Pets != nil {
for k, v := range param.Pets.ModUnlock {
if v <= 0 {
continue
}
ts := int64(0)
if param.Pets.Mod[k] != nil {
ts = param.Pets.Mod[k].Ts
}
pdfw.PetUnlockList = append(pdfw.PetUnlockList, &webapi.ModInfo{
Id: k,
Level: v,
Ts: ts,
})
}
for k, v := range param.Pets.SkillInfo {
for skillId, skillLevel := range v {
if skillLevel <= 0 {
continue
}
ts := int64(0)
if param.Pets.Skill[k] != nil && param.Pets.Skill[k][skillId] != nil {
ts = param.Pets.Skill[k][skillId].Ts
}
pdfw.PetSkillUnlockList = append(pdfw.PetSkillUnlockList, &webapi.ModInfo{
Id: skillId,
Level: skillLevel,
Ts: ts,
})
}
}
}
return pdfw
}
func (this *PlayerData) IsMarkFlag(flag int) bool {
@ -956,32 +1033,51 @@ func (this *PlayerData) InitNewData(params string) {
}
func (this *PlayerData) InitRolesAndPets() {
now := time.Now()
f := func(id int32) *ModInfo {
ret := &ModInfo{
ModUnlock: make(map[int32]int32),
Mod: make(map[int32]*ModEx),
ModId: id,
SkillInfo: make(map[int32]map[int32]int32),
Skill: make(map[int32]map[int32]*SkillEx),
}
ret.ModUnlock[id] = 1
ret.Mod[id] = &ModEx{
Ts: now.Unix(),
}
return ret
}
f1 := func(mod *ModInfo) {
if mod.ModUnlock == nil {
mod.ModUnlock = make(map[int32]int32)
}
if mod.Mod == nil {
mod.Mod = make(map[int32]*ModEx)
}
if mod.SkillInfo == nil {
mod.SkillInfo = make(map[int32]map[int32]int32)
}
if mod.Skill == nil {
mod.Skill = make(map[int32]map[int32]*SkillEx)
}
}
if this.Roles == nil || len(this.Roles.ModUnlock) == 0 {
this.Roles = &ModInfo{
ModUnlock: make(map[int32]int32),
ModId: 2000001,
SkillInfo: make(map[int32]map[int32]int32),
}
this.Roles.ModUnlock[2000001] = 1
this.Roles = f(2000001)
}
if this.Pets == nil || len(this.Pets.ModUnlock) == 0 {
this.Pets = &ModInfo{
ModUnlock: make(map[int32]int32),
ModId: 1000001,
SkillInfo: make(map[int32]map[int32]int32),
}
this.Pets.ModUnlock[1000001] = 1
this.Pets = f(1000001)
}
if this.Skin == nil || len(this.Skin.ModUnlock) == 0 {
this.Skin = f(300001)
}
if this.Skin == nil || len(this.Skin.ModUnlock) == 0 {
this.Skin = &ModInfo{
ModUnlock: make(map[int32]int32),
ModId: 300001,
SkillInfo: make(map[int32]map[int32]int32),
}
this.Skin.ModUnlock[300001] = 1
}
f1(this.Roles)
f1(this.Pets)
f1(this.Skin)
}
//func SavePlayerRebate(pd *PlayerData, thirdName string) error {
@ -1158,6 +1254,7 @@ func GetPlayerDataBySnId(plt string, snid int32, correctData, createIfNotExist b
ret.Pd.LastLogoutTime = ret.Pd.LastLogoutTime.Local()
ret.Pd.IScoreTs = ret.Pd.IScoreTs.Local()
ret.Pd.Permit = ret.Pd.Permit.Local()
ret.Pd.InitRolesAndPets()
return ret.Pd, ret.IsNew
}
@ -3019,6 +3116,22 @@ func (this *PlayerData) GetRoleId() int32 {
return common.DefaultRoleId
}
// GetSkillAdd2 获取技能加成
// id 技能id
func (this *PlayerData) GetSkillAdd2(id int32, cfg *ConfigMgr) int32 {
if cfg == nil {
return 0
}
for k, v := range this.Skin.ModUnlock {
levelCfg := cfg.GetSkinLevel(this.Platform, k, v)
skinCfg := cfg.GetSkinInfo(this.Platform, k)
if v > 0 && levelCfg.GetSkillId() == id && (skinCfg.GetSkillType() == 0 || this.Skin.ModId == k) {
return levelCfg.GetSkillValue()
}
}
return 0
}
type BindArgs struct {
Platform string
PSnId, SnId int32

View File

@ -14,6 +14,12 @@ const (
MQRankPlayerPermit = "log_rankplayerpermit" // 赛季通行证排行榜
)
// 排行榜类型
const (
RankType_Coin = 1 //财富榜
RankType_WinCoin = 2 //收入榜
)
type PlayerRankScore struct {
//Id bson.ObjectId `bson:"_id"`
Platform string

View File

@ -96,7 +96,7 @@ func (p *RabbitMQPublisher) publish(topic string, msg interface{}, opts ...broke
err = p.Publish(topic, &broker.Message{Body: buf}, opts...)
if err != nil {
logger.Logger.Error("RabbitMQPublisher.publish() topic:%v message:%v err:%v", topic, msg, err)
logger.Logger.Errorf("RabbitMQPublisher.publish() topic:%v message:%v err:%v", topic, msg, err)
return
}
return nil

View File

@ -357,7 +357,7 @@ type CSUpBagInfo struct {
ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //物品ID
ItemNum int32 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //物品数量
Opt int32 `protobuf:"varint,3,opt,name=Opt,proto3" json:"Opt,omitempty"` //操作 0.使用 1.赠送 2.出售 3.兑换
Opt int32 `protobuf:"varint,3,opt,name=Opt,proto3" json:"Opt,omitempty"` //操作 0.使用 1.赠送 2.出售 3.兑换 4.分解
AcceptSnId int32 `protobuf:"varint,4,opt,name=AcceptSnId,proto3" json:"AcceptSnId,omitempty"` //被赠送玩家id
NowEffect int32 `protobuf:"varint,5,opt,name=NowEffect,proto3" json:"NowEffect,omitempty"` //0.竖版 1.横版
ShowId int64 `protobuf:"varint,6,opt,name=ShowId,proto3" json:"ShowId,omitempty"` // 邮件显示位置 0 所有大厅都显示 1 主大厅显示 2 len大厅显示 4 fish大厅显示
@ -459,6 +459,7 @@ type SCUpBagInfo struct {
Diamond int64 `protobuf:"varint,5,opt,name=Diamond,proto3" json:"Diamond,omitempty"` // 钻石
//使用道具获得的
Infos []*ItemInfo `protobuf:"bytes,6,rep,name=Infos,proto3" json:"Infos,omitempty"` // 物品信息
Opt int32 `protobuf:"varint,7,opt,name=Opt,proto3" json:"Opt,omitempty"`
}
func (x *SCUpBagInfo) Reset() {
@ -535,6 +536,13 @@ func (x *SCUpBagInfo) GetInfos() []*ItemInfo {
return nil
}
func (x *SCUpBagInfo) GetOpt() int32 {
if x != nil {
return x.Opt
}
return 0
}
//背包使用兑换返回结果
//PACKET_SC_ITEM_EXCHANGE_RES
type SCItemExChangeRes struct {
@ -998,7 +1006,7 @@ var file_bag_proto_rawDesc = []byte{
0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x53, 0x68,
0x6f, 0x77, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65,
0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65,
0x22, 0xcb, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x55, 0x70, 0x42, 0x61, 0x67, 0x49, 0x6e, 0x66, 0x6f,
0x22, 0xdd, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x55, 0x70, 0x42, 0x61, 0x67, 0x49, 0x6e, 0x66, 0x6f,
0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x11, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a,
@ -1010,71 +1018,72 @@ var file_bag_proto_rawDesc = []byte{
0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x05, 0x49, 0x6e, 0x66,
0x6f, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x49,
0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x40,
0x0a, 0x11, 0x53, 0x43, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x78, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x52, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
0x22, 0x34, 0x0a, 0x0d, 0x53, 0x43, 0x53, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x67, 0x44, 0x61, 0x74,
0x61, 0x12, 0x23, 0x0a, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x0d, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52,
0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x3c, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 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, 0x20, 0x0a, 0x0e, 0x43, 0x53, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78,
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x93, 0x01, 0x0a, 0x0e, 0x53, 0x43, 0x50, 0x72, 0x6f,
0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x74,
0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x62, 0x61, 0x67,
0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52,
0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18,
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x70,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2f, 0x0a, 0x0b, 0x52,
0x65, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x0d, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52,
0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x78, 0x0a, 0x0c,
0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x09,
0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x0d, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09,
0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x09, 0x47, 0x61, 0x69,
0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62,
0x61, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x47, 0x61, 0x69,
0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x20, 0x0a, 0x0e, 0x43, 0x53, 0x45, 0x78, 0x63, 0x68,
0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x49, 0x0a, 0x0e, 0x53, 0x43, 0x45, 0x78,
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x05, 0x49, 0x6e,
0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x61, 0x67, 0x2e,
0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e,
0x66, 0x6f, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x54, 0x70, 0x2a, 0x99, 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, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x73,
0x65, 0x55, 0x70, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x64,
0x45, 0x72, 0x72, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x62,
0x45, 0x72, 0x72, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x61,
0x67, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x07, 0x2a,
0xde, 0x01, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x13, 0x0a,
0x0f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x5a, 0x45, 0x52, 0x4f,
0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c,
0x5f, 0x42, 0x41, 0x47, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe2, 0x13, 0x12, 0x17, 0x0a, 0x12,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x55,
0x53, 0x45, 0x10, 0xe3, 0x13, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x42, 0x41, 0x47, 0x44, 0x41, 0x54, 0x41, 0x10, 0xe4,
0x13, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49,
0x54, 0x45, 0x4d, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x52, 0x45, 0x53,
0x10, 0xe5, 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c,
0x4c, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0xf5, 0x13, 0x12, 0x18, 0x0a, 0x13,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x10, 0xb8, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb9, 0x17,
0x42, 0x23, 0x5a, 0x21, 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, 0x62, 0x61, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x10,
0x0a, 0x03, 0x4f, 0x70, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, 0x70, 0x74,
0x22, 0x40, 0x0a, 0x11, 0x53, 0x43, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x78, 0x43, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x52, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x4f, 0x70, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f,
0x64, 0x65, 0x22, 0x34, 0x0a, 0x0d, 0x53, 0x43, 0x53, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x67, 0x44,
0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x3c, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70,
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, 0x20, 0x0a, 0x0e, 0x43, 0x53, 0x50, 0x72, 0x6f, 0x70,
0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x93, 0x01, 0x0a, 0x0e, 0x53, 0x43, 0x50,
0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x52,
0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x62,
0x61, 0x67, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52,
0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x50, 0x72,
0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2f, 0x0a,
0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x78,
0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e,
0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x2b,
0x0a, 0x09, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x09, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x09, 0x47,
0x61, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d,
0x2e, 0x62, 0x61, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x47,
0x61, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x20, 0x0a, 0x0e, 0x43, 0x53, 0x45, 0x78,
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x49, 0x0a, 0x0e, 0x53, 0x43,
0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x05,
0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x61,
0x67, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05,
0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
0x05, 0x52, 0x02, 0x54, 0x70, 0x2a, 0x99, 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, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x55, 0x73, 0x65, 0x55, 0x70, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x49, 0x64, 0x45, 0x72, 0x72, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x44, 0x62, 0x45, 0x72, 0x72, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x42, 0x61, 0x67, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0x06, 0x12, 0x12, 0x0a,
0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10,
0x07, 0x2a, 0xde, 0x01, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12,
0x13, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x5a, 0x45,
0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41,
0x4c, 0x4c, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe2, 0x13, 0x12, 0x17,
0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x42, 0x41, 0x47,
0x5f, 0x55, 0x53, 0x45, 0x10, 0xe3, 0x13, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x42, 0x41, 0x47, 0x44, 0x41, 0x54, 0x41,
0x10, 0xe4, 0x13, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x52,
0x45, 0x53, 0x10, 0xe5, 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x41, 0x4c, 0x4c, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0xf5, 0x13, 0x12, 0x18,
0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xb8, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10,
0xb9, 0x17, 0x42, 0x23, 0x5a, 0x21, 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, 0x62, 0x61, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -61,7 +61,7 @@ message SCBagInfo {
message CSUpBagInfo {
int32 ItemId = 1;//ID
int32 ItemNum = 2;//
int32 Opt = 3;// 0.使 1. 2. 3.
int32 Opt = 3;// 0.使 1. 2. 3. 4.
int32 AcceptSnId = 4;//id
int32 NowEffect = 5;//0. 1.
int64 ShowId = 6;// 0 1 2 len大厅显示 4 fish大厅显示
@ -77,6 +77,7 @@ message SCUpBagInfo {
int64 Diamond = 5;//
//使
repeated ItemInfo Infos = 6;//
int32 Opt = 7;
}
//使
//PACKET_SC_ITEM_EXCHANGE_RES

View File

@ -6717,6 +6717,7 @@ type CommonNotice struct {
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"`
Url string `protobuf:"bytes,15,opt,name=Url,proto3" json:"Url,omitempty"`
}
func (x *CommonNotice) Reset() {
@ -6849,6 +6850,13 @@ func (x *CommonNotice) GetOnChannelName() []string {
return nil
}
func (x *CommonNotice) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
type PlayerRecord struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -7867,7 +7875,7 @@ var file_game_proto_rawDesc = []byte{
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,
0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x9a, 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,
@ -7892,318 +7900,319 @@ var file_game_proto_rawDesc = []byte{
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, 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, 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,
0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 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, 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,
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, 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, 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,
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, 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,
}
var (

View File

@ -828,6 +828,7 @@ message CommonNotice {
int32 IsLoop=12;
int32 LoopTime=13;
repeated string OnChannelName = 14;
string Url = 15;
}
message PlayerRecord {
int32 GameFreeid = 1; //

View File

@ -274,6 +274,7 @@ const (
ShowRedCode_Pet ShowRedCode = 3 // 宠物
ShowRedCode_Welfare ShowRedCode = 4 // 福利活动
ShowRedCode_RankReward ShowRedCode = 5 // 排位赛赛季奖励
ShowRedCode_Skin ShowRedCode = 6 // 皮肤
)
// Enum value maps for ShowRedCode.
@ -285,6 +286,7 @@ var (
3: "Pet",
4: "Welfare",
5: "RankReward",
6: "Skin",
}
ShowRedCode_value = map[string]int32{
"Mail": 0,
@ -293,6 +295,7 @@ var (
"Pet": 3,
"Welfare": 4,
"RankReward": 5,
"Skin": 6,
}
)
@ -2830,15 +2833,16 @@ var file_hallpacket_proto_rawDesc = []byte{
0x48, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x10,
0x07, 0x12, 0x10, 0x0a, 0x0c, 0x48, 0x61, 0x6c, 0x6c, 0x43, 0x6c, 0x75, 0x62, 0x52, 0x6f, 0x6f,
0x6d, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x48, 0x61, 0x6c, 0x6c, 0x54, 0x68, 0x69, 0x72, 0x64,
0x50, 0x6c, 0x74, 0x10, 0x65, 0x2a, 0x51, 0x0a, 0x0b, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x64,
0x50, 0x6c, 0x74, 0x10, 0x65, 0x2a, 0x5b, 0x0a, 0x0b, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x64,
0x43, 0x6f, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x61, 0x69, 0x6c, 0x10, 0x00, 0x12, 0x08,
0x0a, 0x04, 0x53, 0x68, 0x6f, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65,
0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x65, 0x74, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x57,
0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b,
0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x05, 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, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x6e,
0x10, 0x06, 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

@ -339,6 +339,7 @@ enum ShowRedCode {
Pet = 3; //
Welfare = 4; //
RankReward = 5; //
Skin = 6; //
}
//

View File

@ -1381,13 +1381,23 @@ type SkinInfo struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //皮肤id
Level int32 `protobuf:"varint,2,opt,name=Level,proto3" json:"Level,omitempty"` //皮肤等级
MaxLevel int32 `protobuf:"varint,3,opt,name=MaxLevel,proto3" json:"MaxLevel,omitempty"` //最大等级
Cost []*Item `protobuf:"bytes,4,rep,name=Cost,proto3" json:"Cost,omitempty"` // 升级消耗
Have []*Item `protobuf:"bytes,5,rep,name=Have,proto3" json:"Have,omitempty"` // 拥有道具
IsUsing bool `protobuf:"varint,6,opt,name=IsUsing,proto3" json:"IsUsing,omitempty"` //是否在使用中
IsUnlock bool `protobuf:"varint,7,opt,name=IsUnlock,proto3" json:"IsUnlock,omitempty"` //是否已经解锁
Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //皮肤id
Level int32 `protobuf:"varint,2,opt,name=Level,proto3" json:"Level,omitempty"` //皮肤等级
MaxLevel int32 `protobuf:"varint,3,opt,name=MaxLevel,proto3" json:"MaxLevel,omitempty"` //最大等级
Cost []*Item `protobuf:"bytes,4,rep,name=Cost,proto3" json:"Cost,omitempty"` // 升级消耗
Have []*Item `protobuf:"bytes,5,rep,name=Have,proto3" json:"Have,omitempty"` // 拥有道具
IsUsing bool `protobuf:"varint,6,opt,name=IsUsing,proto3" json:"IsUsing,omitempty"` //是否在使用中
IsUnlock bool `protobuf:"varint,7,opt,name=IsUnlock,proto3" json:"IsUnlock,omitempty"` //是否已经解锁
IsUpgrade bool `protobuf:"varint,8,opt,name=IsUpgrade,proto3" json:"IsUpgrade,omitempty"` // 皮肤升级开关
SkillId int32 `protobuf:"varint,9,opt,name=SkillId,proto3" json:"SkillId,omitempty"` //技能id
SkillLevel int32 `protobuf:"varint,10,opt,name=SkillLevel,proto3" json:"SkillLevel,omitempty"` //技能等级
SkillNextLevel int32 `protobuf:"varint,11,opt,name=SkillNextLevel,proto3" json:"SkillNextLevel,omitempty"` //技能下一等级
SkillMaxLevel int32 `protobuf:"varint,12,opt,name=SkillMaxLevel,proto3" json:"SkillMaxLevel,omitempty"` //技能最大等级
SkillValue int32 `protobuf:"varint,13,opt,name=SkillValue,proto3" json:"SkillValue,omitempty"` //技能属性值
SkillNextValue int32 `protobuf:"varint,14,opt,name=SkillNextValue,proto3" json:"SkillNextValue,omitempty"` //技能下一级属性值
SkillType int32 `protobuf:"varint,15,opt,name=SkillType,proto3" json:"SkillType,omitempty"` // 技能生效类型 0获得后生效 1穿戴生效
UnLockType int32 `protobuf:"varint,16,opt,name=UnLockType,proto3" json:"UnLockType,omitempty"` // 解锁类型 0默认皮肤不用解锁 1自动解锁 2道具解锁 3vip等级解锁
NeedVip int32 `protobuf:"varint,17,opt,name=NeedVip,proto3" json:"NeedVip,omitempty"` // 解锁需要的vip等级
}
func (x *SkinInfo) Reset() {
@ -1471,6 +1481,76 @@ func (x *SkinInfo) GetIsUnlock() bool {
return false
}
func (x *SkinInfo) GetIsUpgrade() bool {
if x != nil {
return x.IsUpgrade
}
return false
}
func (x *SkinInfo) GetSkillId() int32 {
if x != nil {
return x.SkillId
}
return 0
}
func (x *SkinInfo) GetSkillLevel() int32 {
if x != nil {
return x.SkillLevel
}
return 0
}
func (x *SkinInfo) GetSkillNextLevel() int32 {
if x != nil {
return x.SkillNextLevel
}
return 0
}
func (x *SkinInfo) GetSkillMaxLevel() int32 {
if x != nil {
return x.SkillMaxLevel
}
return 0
}
func (x *SkinInfo) GetSkillValue() int32 {
if x != nil {
return x.SkillValue
}
return 0
}
func (x *SkinInfo) GetSkillNextValue() int32 {
if x != nil {
return x.SkillNextValue
}
return 0
}
func (x *SkinInfo) GetSkillType() int32 {
if x != nil {
return x.SkillType
}
return 0
}
func (x *SkinInfo) GetUnLockType() int32 {
if x != nil {
return x.UnLockType
}
return 0
}
func (x *SkinInfo) GetNeedVip() int32 {
if x != nil {
return x.NeedVip
}
return 0
}
//PACKET_CS_SKIN_INFO
type CSSkinInfo struct {
state protoimpl.MessageState
@ -2024,7 +2104,7 @@ var file_pets_proto_rawDesc = []byte{
0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x24,
0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x0c, 0x0a, 0x01, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28,
0x03, 0x52, 0x01, 0x4e, 0x22, 0xc2, 0x01, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66,
0x03, 0x52, 0x01, 0x4e, 0x22, 0x88, 0x04, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66,
0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49,
0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x4c, 0x65,
@ -2036,85 +2116,106 @@ var file_pets_proto_rawDesc = []byte{
0x61, 0x76, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x06,
0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a,
0x08, 0x49, 0x73, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
0x08, 0x49, 0x73, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x53,
0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x32, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x6b, 0x69,
0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, 0x53, 0x6b, 0x69, 0x6e,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x1b, 0x0a, 0x09, 0x43,
0x53, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x09, 0x53, 0x43, 0x53, 0x6b,
0x69, 0x6e, 0x55, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, 0x4f, 0x70,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43,
0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x1f, 0x0a, 0x0d, 0x43, 0x53, 0x53, 0x6b, 0x69,
0x6e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x0d, 0x53, 0x43, 0x53, 0x6b,
0x69, 0x6e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x49, 0x6e, 0x66,
0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, 0x53,
0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a,
0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12,
0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x1e, 0x0a, 0x0c, 0x43,
0x53, 0x53, 0x4b, 0x69, 0x6e, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x70, 0x0a, 0x0c, 0x53,
0x43, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49,
0x08, 0x49, 0x73, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x73, 0x55,
0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x49, 0x73,
0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c,
0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49,
0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18,
0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65,
0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x65, 0x78, 0x74, 0x4c, 0x65,
0x76, 0x65, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6c, 0x6c,
0x4e, 0x65, 0x78, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69,
0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12,
0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0d, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
0x26, 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x65, 0x78, 0x74, 0x56, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x65,
0x78, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c,
0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c,
0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x54,
0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x55, 0x6e, 0x4c, 0x6f, 0x63,
0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x65, 0x64, 0x56, 0x69, 0x70,
0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x65, 0x65, 0x64, 0x56, 0x69, 0x70, 0x22,
0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x32, 0x0a,
0x0a, 0x53, 0x43, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x05, 0x49,
0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x65, 0x74,
0x73, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f,
0x73, 0x22, 0x1b, 0x0a, 0x09, 0x43, 0x53, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x12, 0x0e,
0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x5d,
0x0a, 0x09, 0x53, 0x43, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x52,
0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70,
0x65, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65,
0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x49, 0x6e, 0x66,
0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, 0x53,
0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x2a, 0xf7, 0x04,
0x0a, 0x0c, 0x50, 0x65, 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x15,
0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x44, 0x59, 0x5f, 0x5a,
0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xf6, 0x13, 0x12,
0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4c,
0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xf7, 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x45, 0x54, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10,
0xf8, 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x50, 0x45, 0x54, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xf9, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x45, 0x54, 0x5f, 0x52, 0x49, 0x53,
0x49, 0x4e, 0x47, 0x53, 0x54, 0x41, 0x52, 0x10, 0xfa, 0x13, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x52, 0x49, 0x53,
0x49, 0x4e, 0x47, 0x53, 0x54, 0x41, 0x52, 0x10, 0xfb, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x45, 0x54, 0x5f, 0x52, 0x49, 0x53, 0x49,
0x4e, 0x47, 0x53, 0x54, 0x41, 0x52, 0x10, 0xfc, 0x13, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x50, 0x45, 0x54, 0x55, 0x53,
0x45, 0x4f, 0x50, 0x10, 0xfd, 0x13, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x50, 0x45, 0x54, 0x55, 0x53, 0x45, 0x4f, 0x50,
0x10, 0xfe, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x50, 0x45, 0x54, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0xff,
0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52,
0x4f, 0x4c, 0x45, 0x50, 0x45, 0x54, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x80, 0x14, 0x12,
0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x45, 0x54,
0x53, 0x4b, 0x49, 0x4c, 0x4c, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x55, 0x50, 0x10, 0x81, 0x14, 0x12,
0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x45, 0x54,
0x53, 0x4b, 0x49, 0x4c, 0x4c, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x55, 0x50, 0x10, 0x82, 0x14, 0x12,
0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49,
0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x83, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f,
0x10, 0x84, 0x14, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x10, 0x85, 0x14, 0x12, 0x17, 0x0a, 0x12,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55,
0x53, 0x45, 0x10, 0x86, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10,
0x87, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x88, 0x14, 0x12,
0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49,
0x4e, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x89, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x4e,
0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x8a, 0x14, 0x2a, 0x67, 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, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x61, 0x78, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x03, 0x12,
0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x04,
0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
0x6c, 0x2f, 0x70, 0x65, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49,
0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x1f, 0x0a,
0x0d, 0x43, 0x53, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x0e,
0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x61,
0x0a, 0x0d, 0x53, 0x43, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12,
0x22, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
0x70, 0x65, 0x74, 0x73, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49,
0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x52, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
0x65, 0x22, 0x1e, 0x0a, 0x0c, 0x43, 0x53, 0x53, 0x4b, 0x69, 0x6e, 0x55, 0x6e, 0x4c, 0x6f, 0x63,
0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49,
0x64, 0x22, 0x70, 0x0a, 0x0c, 0x53, 0x43, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x6e, 0x4c, 0x6f, 0x63,
0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49,
0x64, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x22, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
0x70, 0x65, 0x74, 0x73, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49,
0x6e, 0x66, 0x6f, 0x2a, 0xf7, 0x04, 0x0a, 0x0c, 0x50, 0x65, 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b,
0x65, 0x74, 0x49, 0x44, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
0x41, 0x4e, 0x44, 0x59, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x49, 0x4e,
0x46, 0x4f, 0x10, 0xf6, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xf7, 0x13, 0x12,
0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x45, 0x54,
0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xf8, 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x45, 0x54, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xf9,
0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50,
0x45, 0x54, 0x5f, 0x52, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x53, 0x54, 0x41, 0x52, 0x10, 0xfa, 0x13,
0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f,
0x4c, 0x45, 0x5f, 0x52, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x53, 0x54, 0x41, 0x52, 0x10, 0xfb, 0x13,
0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x45,
0x54, 0x5f, 0x52, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x53, 0x54, 0x41, 0x52, 0x10, 0xfc, 0x13, 0x12,
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x4c,
0x45, 0x50, 0x45, 0x54, 0x55, 0x53, 0x45, 0x4f, 0x50, 0x10, 0xfd, 0x13, 0x12, 0x1b, 0x0a, 0x16,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x50, 0x45,
0x54, 0x55, 0x53, 0x45, 0x4f, 0x50, 0x10, 0xfe, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x50, 0x45, 0x54, 0x55, 0x4e,
0x4c, 0x4f, 0x43, 0x4b, 0x10, 0xff, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x50, 0x45, 0x54, 0x55, 0x4e, 0x4c, 0x4f,
0x43, 0x4b, 0x10, 0x80, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x50, 0x45, 0x54, 0x53, 0x4b, 0x49, 0x4c, 0x4c, 0x4c, 0x45, 0x56, 0x45, 0x4c,
0x55, 0x50, 0x10, 0x81, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x50, 0x45, 0x54, 0x53, 0x4b, 0x49, 0x4c, 0x4c, 0x4c, 0x45, 0x56, 0x45, 0x4c,
0x55, 0x50, 0x10, 0x82, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x83, 0x14, 0x12,
0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x4b, 0x49,
0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x84, 0x14, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x10,
0x85, 0x14, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x10, 0x86, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x50,
0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x87, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41,
0x44, 0x45, 0x10, 0x88, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x89,
0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53,
0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x8a, 0x14, 0x2a, 0x67, 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, 0x12,
0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68,
0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x61, 0x78, 0x4c, 0x65,
0x76, 0x65, 0x6c, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x6e,
0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x04, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e,
0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x65, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -165,6 +165,16 @@ message SkinInfo{
repeated Item Have = 5;//
bool IsUsing = 6;//使
bool IsUnlock = 7;//
bool IsUpgrade = 8; //
int32 SkillId = 9;//id
int32 SkillLevel = 10;//
int32 SkillNextLevel = 11;//
int32 SkillMaxLevel = 12;//
int32 SkillValue = 13;//
int32 SkillNextValue = 14;//
int32 SkillType = 15; // 0 1穿
int32 UnLockType = 16; // 0 1 2 3vip等级解锁
int32 NeedVip = 17; // vip等级
}
//PACKET_CS_SKIN_INFO

File diff suppressed because it is too large Load Diff

View File

@ -218,6 +218,10 @@ enum PlayerPacketID {
PACKET_CSDiamondLotteryLuckyAward = 2833; //
PACKET_SCDiamondLotteryLuckyAward = 2834; //
PACKET_SCItem = 2835; //
PACKET_CSAwardLog = 2836;//
PACKET_SCAwardLog = 2837; //
PACKET_CSPopUpWindowsConfig = 2838;//
PACKET_SCPopUpWindowsConfig = 2839;//
}
@ -1262,4 +1266,49 @@ message SCDiamondLotteryLuckyAward{
// PACKET_SCItem
message SCItem{
repeated server.DB_GameItem Items = 1; //
}
//
//PACKET_CSAwardLog
message CS_AwardLog{
int32 typeId = 1; //1- 2-
}
//PACKET_SCAwardLog
message SCAwardLog{
int32 typeId = 1; //1- 2-
AwardLogData AwardLog =2;
repeated AnnouncerLogInfo AnnouncerLog = 3;
}
message AwardLogData{
int32 SortId = 1; // 1- 2-
repeated AwardLogInfo AwardLog =2;
}
message AwardLogInfo{
int32 ItemId = 1; //ID
int64 Num = 2; //
int32 Order = 3;//
string Url = 4;
}
//
message AnnouncerLogInfo{
int32 Snid = 1; //ID
string Name = 2; //
string Phone = 3; //
int32 ItemId = 4; //ID
int32 TypeId = 5; //1- 2-
}
//
//PACKET_CSPopUpWindowsConfig
message CSPopUpWindowsConfig{
}
//PACKET_SCPopUpWindowsConfig
message SCPopUpWindowsConfig{
repeated WindowsInfo Info = 1;
}
message WindowsInfo{
string ItemName = 1;//
string Url = 2; //
int32 Sort = 3;//
int32 PartNum = 4;//
int32 GainNum = 5;//
}

File diff suppressed because it is too large Load Diff

View File

@ -881,6 +881,8 @@ message DB_GameItem {
string Icon = 18;
map<int64, int64> Gain = 19;
}
message DB_GameItemArray {
@ -1517,17 +1519,31 @@ message DB_Skin {
int32 Id = 1;
string Model = 2;
int32 SkinClass = 2;
string SkinPic = 3;
string Model = 3;
string SkinName = 4;
string SkinPic = 4;
string SkinType = 5;
string SkinName = 5;
int32 UnlockType = 6;
string SkinType = 6;
map<int64, int64> UnlockItem = 7;
int32 UnlockType = 7;
map<int64, int64> UnlockItem = 8;
string SkinSkillName = 9;
string SkinSkillIcon = 10;
string SkinSkillDes = 11;
int32 SkinSkillType = 12;
repeated int32 Turn = 13;
repeated string TurnKey = 14;
}
@ -1545,6 +1561,14 @@ message DB_SkinLevel {
map<int64, int64> UpItem = 4;
int32 SkinSkillId = 5;
int32 SkinSkillLevel = 6;
int32 SkinSkillValue = 7;
string SkinSkillDes = 8;
}
message DB_SkinLevelArray {
@ -1713,7 +1737,9 @@ message DB_VIP {
map<int64, int64> Award = 18;
int32 MatchFreeTimes = 19;
repeated string ParamName = 19;
int32 MatchFreeTimes = 20;
}

File diff suppressed because it is too large Load Diff

View File

@ -208,6 +208,19 @@ message PlayerData{
int64 VCardCost = 59; // v卡消耗
int64 MoneyTotal = 60; //
string ChannelID = 61; // ID
int32 UseRoleId = 62; // 使id
int32 UseSkinId = 63; // 使id
repeated int32 SkinIds = 64; // id列表
repeated ModInfo RoleUnlockList = 65; //
repeated ModInfo PetUnlockList = 66; //
repeated ModInfo PetSkillUnlockList = 67; //
repeated ModInfo SkinUnlockList = 68; //
}
message ModInfo {
int32 Id = 1; // id
int32 Level = 2; //
int64 Ts = 3; //
}
message RoomInfo{
@ -346,6 +359,7 @@ message CommonNotice {
int32 IsLoop=12;
int32 LoopTime=13;
repeated string OnChannelName = 14;
string Url = 15;
}
message CommonNoticeList{
repeated CommonNotice List = 1;
@ -796,3 +810,74 @@ message ItemConfig {
string Platform = 1; //
repeated server.DB_GameItem Items = 2; //
}
message RankAwardInfo{
int32 Id =1;
int32 RankType =2;
int32 RankLevelId = 3;
repeated ItemInfo Item = 4; //
}
message RankTypeInfo{
int32 Id =1;
int32 Order = 2;
string RankName = 3;
int32 RankType = 4;
int32 TurnOff = 5; //
repeated RankAwardInfo Award= 6;
}
//etcd /game/RankType
message RankTypeConfig{
string Platform = 1; //
repeated RankTypeInfo Info = 2;
}
message SkinLevel {
int32 Level = 1; //
map<int32,int64> UpItem = 2; //
int32 SkillId = 3; // id
int32 SkillLevel = 4; //
int32 SkillValue = 5; //
}
message SkinItem {
int32 Id = 1; // id
int32 UnlockType = 2; // 0使 1使使 2使
map<int32,int64> UnlockParam = 3; //
int32 IsUpgrade = 4; // 1 2
int32 SkillType = 5; // 0 1穿
repeated SkinLevel Levels = 6; //
}
// etcd /game/skin_config
message SkinConfig {
string Platform = 1; //
repeated SkinItem Items = 2; //
}
// etcd /game/awardlog_config
message AwardLogConfig{
string Platform = 1; //
repeated AwardLogData AwardLog =2;
repeated AnnouncerLogInfo AnnouncerLog = 3;
}
message AwardLogData{
int32 TypeId = 1; //1 2
int32 SortId = 2; // 1- 2-
repeated AwardLogInfo AwardLog =3;
}
message AwardLogInfo{
int32 ItemId = 2; //ID
int64 Num = 4; //
string Url = 5; //icon
int32 Order = 6; //
}
//
message AnnouncerLogInfo{
int32 Snid = 1; //ID
string Name = 2; //
string Phone = 3; //
int32 ItemId = 4; //ID
int32 TypeId = 5; //1- 2-
}

View File

@ -8883,6 +8883,276 @@ func (x *SMSInfo) GetSmsName() string {
return ""
}
//获取获奖记录 [/get_AwardLog]
type ASAwardLog struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台id
SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id
}
func (x *ASAwardLog) Reset() {
*x = ASAwardLog{}
if protoimpl.UnsafeEnabled {
mi := &file_webapi_proto_msgTypes[130]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ASAwardLog) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ASAwardLog) ProtoMessage() {}
func (x *ASAwardLog) ProtoReflect() protoreflect.Message {
mi := &file_webapi_proto_msgTypes[130]
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 ASAwardLog.ProtoReflect.Descriptor instead.
func (*ASAwardLog) Descriptor() ([]byte, []int) {
return file_webapi_proto_rawDescGZIP(), []int{130}
}
func (x *ASAwardLog) GetPlatform() string {
if x != nil {
return x.Platform
}
return ""
}
func (x *ASAwardLog) GetSnId() int32 {
if x != nil {
return x.SnId
}
return 0
}
//获取弹窗配置[/get_PopupWindowsConfig]
type ASPopUpWindowsConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台id
SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id
}
func (x *ASPopUpWindowsConfig) Reset() {
*x = ASPopUpWindowsConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_webapi_proto_msgTypes[131]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ASPopUpWindowsConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ASPopUpWindowsConfig) ProtoMessage() {}
func (x *ASPopUpWindowsConfig) ProtoReflect() protoreflect.Message {
mi := &file_webapi_proto_msgTypes[131]
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 ASPopUpWindowsConfig.ProtoReflect.Descriptor instead.
func (*ASPopUpWindowsConfig) Descriptor() ([]byte, []int) {
return file_webapi_proto_rawDescGZIP(), []int{131}
}
func (x *ASPopUpWindowsConfig) GetPlatform() string {
if x != nil {
return x.Platform
}
return ""
}
func (x *ASPopUpWindowsConfig) GetSnId() int32 {
if x != nil {
return x.SnId
}
return 0
}
type SAPopUpWindowsConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台id
SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id
Info []*WindowsInfo `protobuf:"bytes,3,rep,name=Info,proto3" json:"Info,omitempty"`
Tag TagCode `protobuf:"varint,4,opt,name=Tag,proto3,enum=webapi.TagCode" json:"Tag,omitempty"` //错误码
Msg string `protobuf:"bytes,5,opt,name=Msg,proto3" json:"Msg,omitempty"` //错误信息(选填)
}
func (x *SAPopUpWindowsConfig) Reset() {
*x = SAPopUpWindowsConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_webapi_proto_msgTypes[132]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SAPopUpWindowsConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SAPopUpWindowsConfig) ProtoMessage() {}
func (x *SAPopUpWindowsConfig) ProtoReflect() protoreflect.Message {
mi := &file_webapi_proto_msgTypes[132]
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 SAPopUpWindowsConfig.ProtoReflect.Descriptor instead.
func (*SAPopUpWindowsConfig) Descriptor() ([]byte, []int) {
return file_webapi_proto_rawDescGZIP(), []int{132}
}
func (x *SAPopUpWindowsConfig) GetPlatform() string {
if x != nil {
return x.Platform
}
return ""
}
func (x *SAPopUpWindowsConfig) GetSnId() int32 {
if x != nil {
return x.SnId
}
return 0
}
func (x *SAPopUpWindowsConfig) GetInfo() []*WindowsInfo {
if x != nil {
return x.Info
}
return nil
}
func (x *SAPopUpWindowsConfig) GetTag() TagCode {
if x != nil {
return x.Tag
}
return TagCode_UNKNOWN
}
func (x *SAPopUpWindowsConfig) GetMsg() string {
if x != nil {
return x.Msg
}
return ""
}
type WindowsInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ItemName string `protobuf:"bytes,1,opt,name=ItemName,proto3" json:"ItemName,omitempty"` //名字
Url string `protobuf:"bytes,2,opt,name=Url,proto3" json:"Url,omitempty"` //图片地址
Sort int32 `protobuf:"varint,3,opt,name=Sort,proto3" json:"Sort,omitempty"` //排序
PartNum int32 `protobuf:"varint,4,opt,name=PartNum,proto3" json:"PartNum,omitempty"` //参与人数
GainNum int32 `protobuf:"varint,5,opt,name=GainNum,proto3" json:"GainNum,omitempty"` //领取人数
}
func (x *WindowsInfo) Reset() {
*x = WindowsInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_webapi_proto_msgTypes[133]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *WindowsInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*WindowsInfo) ProtoMessage() {}
func (x *WindowsInfo) ProtoReflect() protoreflect.Message {
mi := &file_webapi_proto_msgTypes[133]
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 WindowsInfo.ProtoReflect.Descriptor instead.
func (*WindowsInfo) Descriptor() ([]byte, []int) {
return file_webapi_proto_rawDescGZIP(), []int{133}
}
func (x *WindowsInfo) GetItemName() string {
if x != nil {
return x.ItemName
}
return ""
}
func (x *WindowsInfo) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
func (x *WindowsInfo) GetSort() int32 {
if x != nil {
return x.Sort
}
return 0
}
func (x *WindowsInfo) GetPartNum() int32 {
if x != nil {
return x.PartNum
}
return 0
}
func (x *WindowsInfo) GetGainNum() int32 {
if x != nil {
return x.GainNum
}
return 0
}
var File_webapi_proto protoreflect.FileDescriptor
var file_webapi_proto_rawDesc = []byte{
@ -9844,23 +10114,50 @@ var file_webapi_proto_rawDesc = []byte{
0x03, 0x4d, 0x73, 0x67, 0x22, 0x33, 0x0a, 0x07, 0x53, 0x4d, 0x53, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12,
0x18, 0x0a, 0x07, 0x53, 0x6d, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x53, 0x6d, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x2a, 0xce, 0x01, 0x0a, 0x07, 0x54, 0x61,
0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12,
0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53,
0x49, 0x47, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x50,
0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52,
0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x43, 0x4f, 0x44,
0x45, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x6c, 0x61,
0x79, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05,
0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x65, 0x6c, 0x45, 0x78,
0x69, 0x73, 0x74, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0a, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x65,
0x6c, 0x4e, 0x6f, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x0b, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f,
0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61,
0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61,
0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x52, 0x07, 0x53, 0x6d, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x0a, 0x41, 0x53, 0x41,
0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66,
0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66,
0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x46, 0x0a, 0x14, 0x41, 0x53, 0x50, 0x6f, 0x70,
0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53,
0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22,
0xa4, 0x01, 0x0a, 0x14, 0x53, 0x41, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f,
0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74,
0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74,
0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f,
0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e,
0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66,
0x6f, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f,
0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52,
0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x57, 0x69, 0x6e, 0x64, 0x6f,
0x77, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61,
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01,
0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74,
0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x72, 0x74, 0x4e,
0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20,
0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x2a, 0xce, 0x01, 0x0a,
0x07, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e,
0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53,
0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e,
0x0a, 0x0a, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x14,
0x0a, 0x10, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52,
0x4f, 0x52, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41,
0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f,
0x43, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d,
0x50, 0x6c, 0x61, 0x79, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x07, 0x12,
0x09, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x65,
0x6c, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0a, 0x12, 0x0e, 0x0a,
0x0a, 0x54, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x0b, 0x42, 0x26, 0x5a,
0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77,
0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -9876,7 +10173,7 @@ func file_webapi_proto_rawDescGZIP() []byte {
}
var file_webapi_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_webapi_proto_msgTypes = make([]protoimpl.MessageInfo, 130)
var file_webapi_proto_msgTypes = make([]protoimpl.MessageInfo, 134)
var file_webapi_proto_goTypes = []interface{}{
(TagCode)(0), // 0: webapi.TagCode
(*SAPlatformInfo)(nil), // 1: webapi.SAPlatformInfo
@ -10009,93 +10306,97 @@ var file_webapi_proto_goTypes = []interface{}{
(*ASSMSConfig)(nil), // 128: webapi.ASSMSConfig
(*SASMSConfig)(nil), // 129: webapi.SASMSConfig
(*SMSInfo)(nil), // 130: webapi.SMSInfo
(*Platform)(nil), // 131: webapi.Platform
(*PlatformGameConfig)(nil), // 132: webapi.PlatformGameConfig
(*GameConfigGroup)(nil), // 133: webapi.GameConfigGroup
(*GameConfigGlobal)(nil), // 134: webapi.GameConfigGlobal
(*PlatformDbConfig)(nil), // 135: webapi.PlatformDbConfig
(*CoinPoolSetting)(nil), // 136: webapi.CoinPoolSetting
(*RoomInfo)(nil), // 137: webapi.RoomInfo
(*PlayerSingleAdjust)(nil), // 138: webapi.PlayerSingleAdjust
(*PlayerData)(nil), // 139: webapi.PlayerData
(*HorseRaceLamp)(nil), // 140: webapi.HorseRaceLamp
(*MessageInfo)(nil), // 141: webapi.MessageInfo
(*ServerInfo)(nil), // 142: webapi.ServerInfo
(*OnlineReport)(nil), // 143: webapi.OnlineReport
(*ItemInfo)(nil), // 144: webapi.ItemInfo
(*ExchangeShop)(nil), // 145: webapi.ExchangeShop
(*ShopWeight)(nil), // 146: webapi.ShopWeight
(*ASAwardLog)(nil), // 131: webapi.ASAwardLog
(*ASPopUpWindowsConfig)(nil), // 132: webapi.ASPopUpWindowsConfig
(*SAPopUpWindowsConfig)(nil), // 133: webapi.SAPopUpWindowsConfig
(*WindowsInfo)(nil), // 134: webapi.WindowsInfo
(*Platform)(nil), // 135: webapi.Platform
(*PlatformGameConfig)(nil), // 136: webapi.PlatformGameConfig
(*GameConfigGroup)(nil), // 137: webapi.GameConfigGroup
(*GameConfigGlobal)(nil), // 138: webapi.GameConfigGlobal
(*PlatformDbConfig)(nil), // 139: webapi.PlatformDbConfig
(*CoinPoolSetting)(nil), // 140: webapi.CoinPoolSetting
(*RoomInfo)(nil), // 141: webapi.RoomInfo
(*PlayerSingleAdjust)(nil), // 142: webapi.PlayerSingleAdjust
(*PlayerData)(nil), // 143: webapi.PlayerData
(*HorseRaceLamp)(nil), // 144: webapi.HorseRaceLamp
(*MessageInfo)(nil), // 145: webapi.MessageInfo
(*ServerInfo)(nil), // 146: webapi.ServerInfo
(*OnlineReport)(nil), // 147: webapi.OnlineReport
(*ItemInfo)(nil), // 148: webapi.ItemInfo
(*ExchangeShop)(nil), // 149: webapi.ExchangeShop
(*ShopWeight)(nil), // 150: webapi.ShopWeight
}
var file_webapi_proto_depIdxs = []int32{
0, // 0: webapi.ASPlatformInfo.Tag:type_name -> webapi.TagCode
131, // 1: webapi.ASPlatformInfo.Platforms:type_name -> webapi.Platform
135, // 1: webapi.ASPlatformInfo.Platforms:type_name -> webapi.Platform
0, // 2: webapi.ASGameConfig.Tag:type_name -> webapi.TagCode
132, // 3: webapi.ASGameConfig.Configs:type_name -> webapi.PlatformGameConfig
136, // 3: webapi.ASGameConfig.Configs:type_name -> webapi.PlatformGameConfig
0, // 4: webapi.ASGameConfigGroup.Tag:type_name -> webapi.TagCode
133, // 5: webapi.ASGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup
137, // 5: webapi.ASGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup
0, // 6: webapi.ASGameConfigGlobal.Tag:type_name -> webapi.TagCode
134, // 7: webapi.ASGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal
138, // 7: webapi.ASGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal
0, // 8: webapi.ASDbConfig.Tag:type_name -> webapi.TagCode
135, // 9: webapi.ASDbConfig.DbConfigs:type_name -> webapi.PlatformDbConfig
131, // 10: webapi.ASUpdatePlatform.Platforms:type_name -> webapi.Platform
139, // 9: webapi.ASDbConfig.DbConfigs:type_name -> webapi.PlatformDbConfig
135, // 10: webapi.ASUpdatePlatform.Platforms:type_name -> webapi.Platform
0, // 11: webapi.SAUpdatePlatform.Tag:type_name -> webapi.TagCode
134, // 12: webapi.ASUpdateGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal
138, // 12: webapi.ASUpdateGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal
0, // 13: webapi.SAUpdateGameConfigGlobal.Tag:type_name -> webapi.TagCode
132, // 14: webapi.ASUpdateGameConfig.Config:type_name -> webapi.PlatformGameConfig
136, // 14: webapi.ASUpdateGameConfig.Config:type_name -> webapi.PlatformGameConfig
0, // 15: webapi.SAUpdateGameConfig.Tag:type_name -> webapi.TagCode
133, // 16: webapi.ASUpdateGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup
137, // 16: webapi.ASUpdateGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup
0, // 17: webapi.SAUpdateGameConfigGroup.Tag:type_name -> webapi.TagCode
0, // 18: webapi.SAAddCoinById.Tag:type_name -> webapi.TagCode
0, // 19: webapi.SAResetGamePool.Tag:type_name -> webapi.TagCode
136, // 20: webapi.ASUpdateGamePool.CoinPoolSetting:type_name -> webapi.CoinPoolSetting
140, // 20: webapi.ASUpdateGamePool.CoinPoolSetting:type_name -> webapi.CoinPoolSetting
0, // 21: webapi.SAUpdateGamePool.Tag:type_name -> webapi.TagCode
0, // 22: webapi.SAQueryGamePoolByGameId.Tag:type_name -> webapi.TagCode
136, // 23: webapi.SAQueryGamePoolByGameId.CoinPoolSetting:type_name -> webapi.CoinPoolSetting
136, // 24: webapi.CoinPoolStatesInfo.CoinPoolSetting:type_name -> webapi.CoinPoolSetting
140, // 23: webapi.SAQueryGamePoolByGameId.CoinPoolSetting:type_name -> webapi.CoinPoolSetting
140, // 24: webapi.CoinPoolStatesInfo.CoinPoolSetting:type_name -> webapi.CoinPoolSetting
0, // 25: webapi.SAQueryAllGamePool.Tag:type_name -> webapi.TagCode
26, // 26: webapi.SAQueryAllGamePool.CoinPoolStatesInfo:type_name -> webapi.CoinPoolStatesInfo
0, // 27: webapi.SAListRoom.Tag:type_name -> webapi.TagCode
137, // 28: webapi.SAListRoom.RoomInfo:type_name -> webapi.RoomInfo
141, // 28: webapi.SAListRoom.RoomInfo:type_name -> webapi.RoomInfo
0, // 29: webapi.SAGetRoom.Tag:type_name -> webapi.TagCode
137, // 30: webapi.SAGetRoom.RoomInfo:type_name -> webapi.RoomInfo
141, // 30: webapi.SAGetRoom.RoomInfo:type_name -> webapi.RoomInfo
0, // 31: webapi.SADestroyRoom.Tag:type_name -> webapi.TagCode
138, // 32: webapi.ASSinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust
142, // 32: webapi.ASSinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust
0, // 33: webapi.SASinglePlayerAdjust.Tag:type_name -> webapi.TagCode
138, // 34: webapi.SASinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust
142, // 34: webapi.SASinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust
0, // 35: webapi.SAGetPlayerData.Tag:type_name -> webapi.TagCode
139, // 36: webapi.SAGetPlayerData.PlayerData:type_name -> webapi.PlayerData
143, // 36: webapi.SAGetPlayerData.PlayerData:type_name -> webapi.PlayerData
0, // 37: webapi.SAMorePlayerData.Tag:type_name -> webapi.TagCode
139, // 38: webapi.SAMorePlayerData.PlayerData:type_name -> webapi.PlayerData
143, // 38: webapi.SAMorePlayerData.PlayerData:type_name -> webapi.PlayerData
0, // 39: webapi.SAKickPlayer.Tag:type_name -> webapi.TagCode
42, // 40: webapi.ASUpdatePlayerElement.PlayerEleArgs:type_name -> webapi.PlayerEleArgs
0, // 41: webapi.SAUpdatePlayerElement.Tag:type_name -> webapi.TagCode
0, // 42: webapi.SAWhiteBlackControl.Tag:type_name -> webapi.TagCode
0, // 43: webapi.SAQueryHorseRaceLampList.Tag:type_name -> webapi.TagCode
140, // 44: webapi.SAQueryHorseRaceLampList.HorseRaceLamp:type_name -> webapi.HorseRaceLamp
144, // 44: webapi.SAQueryHorseRaceLampList.HorseRaceLamp:type_name -> webapi.HorseRaceLamp
0, // 45: webapi.SACreateHorseRaceLamp.Tag:type_name -> webapi.TagCode
0, // 46: webapi.SAGetHorseRaceLampById.Tag:type_name -> webapi.TagCode
140, // 47: webapi.SAGetHorseRaceLampById.HorseRaceLamp:type_name -> webapi.HorseRaceLamp
140, // 48: webapi.ASEditHorseRaceLamp.HorseRaceLamp:type_name -> webapi.HorseRaceLamp
144, // 47: webapi.SAGetHorseRaceLampById.HorseRaceLamp:type_name -> webapi.HorseRaceLamp
144, // 48: webapi.ASEditHorseRaceLamp.HorseRaceLamp:type_name -> webapi.HorseRaceLamp
0, // 49: webapi.SAEditHorseRaceLamp.Tag:type_name -> webapi.TagCode
0, // 50: webapi.SARemoveHorseRaceLampById.Tag:type_name -> webapi.TagCode
0, // 51: webapi.SABlackBySnId.Tag:type_name -> webapi.TagCode
0, // 52: webapi.SACreateShortMessage.Tag:type_name -> webapi.TagCode
0, // 53: webapi.SAQueryShortMessageList.Tag:type_name -> webapi.TagCode
141, // 54: webapi.SAQueryShortMessageList.MessageInfo:type_name -> webapi.MessageInfo
145, // 54: webapi.SAQueryShortMessageList.MessageInfo:type_name -> webapi.MessageInfo
0, // 55: webapi.SADeleteShortMessage.Tag:type_name -> webapi.TagCode
0, // 56: webapi.SAQueryOnlineReportList.Tag:type_name -> webapi.TagCode
139, // 57: webapi.SAQueryOnlineReportList.PlayerData:type_name -> webapi.PlayerData
143, // 57: webapi.SAQueryOnlineReportList.PlayerData:type_name -> webapi.PlayerData
0, // 58: webapi.SASrvCtrlClose.Tag:type_name -> webapi.TagCode
0, // 59: webapi.SASrvCtrlNotice.Tag:type_name -> webapi.TagCode
0, // 60: webapi.SASrvCtrlStartScript.Tag:type_name -> webapi.TagCode
0, // 61: webapi.SAListServerStates.Tag:type_name -> webapi.TagCode
142, // 62: webapi.SAListServerStates.ServerInfo:type_name -> webapi.ServerInfo
146, // 62: webapi.SAListServerStates.ServerInfo:type_name -> webapi.ServerInfo
0, // 63: webapi.SAServerStateSwitch.Tag:type_name -> webapi.TagCode
0, // 64: webapi.SAResetEtcdData.Tag:type_name -> webapi.TagCode
0, // 65: webapi.SAOnlineReportTotal.Tag:type_name -> webapi.TagCode
143, // 66: webapi.SAOnlineReportTotal.OnlineReport:type_name -> webapi.OnlineReport
147, // 66: webapi.SAOnlineReportTotal.OnlineReport:type_name -> webapi.OnlineReport
0, // 67: webapi.SAAddCoinByIdAndPT.Tag:type_name -> webapi.TagCode
144, // 68: webapi.JybInfoAward.ItemId:type_name -> webapi.ItemInfo
148, // 68: webapi.JybInfoAward.ItemId:type_name -> webapi.ItemInfo
83, // 69: webapi.ASCreateJYB.Award:type_name -> webapi.JybInfoAward
0, // 70: webapi.SACreateJYB.Tag:type_name -> webapi.TagCode
0, // 71: webapi.SAUpdateJYB.Tag:type_name -> webapi.TagCode
@ -10107,10 +10408,10 @@ var file_webapi_proto_depIdxs = []int32{
94, // 77: webapi.SAGetExchangeOrder.OrderList:type_name -> webapi.ExchangeOrderInfo
0, // 78: webapi.SAUpExchangeStatus.Tag:type_name -> webapi.TagCode
0, // 79: webapi.SAGetExchangeShop.Tag:type_name -> webapi.TagCode
145, // 80: webapi.SAGetExchangeShop.List:type_name -> webapi.ExchangeShop
146, // 81: webapi.SAGetExchangeShop.Weight:type_name -> webapi.ShopWeight
149, // 80: webapi.SAGetExchangeShop.List:type_name -> webapi.ExchangeShop
150, // 81: webapi.SAGetExchangeShop.Weight:type_name -> webapi.ShopWeight
0, // 82: webapi.SAThdUpdatePlayerCoin.Tag:type_name -> webapi.TagCode
144, // 83: webapi.SACreateOrder.ItemInfo:type_name -> webapi.ItemInfo
148, // 83: webapi.SACreateOrder.ItemInfo:type_name -> webapi.ItemInfo
0, // 84: webapi.SACallbackPayment.Tag:type_name -> webapi.TagCode
0, // 85: webapi.SAResource.Tag:type_name -> webapi.TagCode
0, // 86: webapi.SASendSms.Tag:type_name -> webapi.TagCode
@ -10119,15 +10420,17 @@ var file_webapi_proto_depIdxs = []int32{
0, // 89: webapi.SAGetImgVerify.Tag:type_name -> webapi.TagCode
0, // 90: webapi.SAPlayerDelete.Tag:type_name -> webapi.TagCode
0, // 91: webapi.SAPlayerInviteLink.Tag:type_name -> webapi.TagCode
144, // 92: webapi.ASAddItemById.ItemInfo:type_name -> webapi.ItemInfo
148, // 92: webapi.ASAddItemById.ItemInfo:type_name -> webapi.ItemInfo
0, // 93: webapi.SAAddItemById.Tag:type_name -> webapi.TagCode
130, // 94: webapi.SASMSConfig.Info:type_name -> webapi.SMSInfo
0, // 95: webapi.SASMSConfig.Tag:type_name -> webapi.TagCode
96, // [96:96] is the sub-list for method output_type
96, // [96:96] is the sub-list for method input_type
96, // [96:96] is the sub-list for extension type_name
96, // [96:96] is the sub-list for extension extendee
0, // [0:96] is the sub-list for field type_name
134, // 96: webapi.SAPopUpWindowsConfig.Info:type_name -> webapi.WindowsInfo
0, // 97: webapi.SAPopUpWindowsConfig.Tag:type_name -> webapi.TagCode
98, // [98:98] is the sub-list for method output_type
98, // [98:98] is the sub-list for method input_type
98, // [98:98] is the sub-list for extension type_name
98, // [98:98] is the sub-list for extension extendee
0, // [0:98] is the sub-list for field type_name
}
func init() { file_webapi_proto_init() }
@ -11697,6 +12000,54 @@ func file_webapi_proto_init() {
return nil
}
}
file_webapi_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ASAwardLog); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_webapi_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ASPopUpWindowsConfig); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_webapi_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SAPopUpWindowsConfig); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_webapi_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WindowsInfo); 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{
@ -11704,7 +12055,7 @@ func file_webapi_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_webapi_proto_rawDesc,
NumEnums: 1,
NumMessages: 130,
NumMessages: 134,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -938,10 +938,34 @@ message SASMSConfig{
int32 SnId = 2; // id
repeated SMSInfo Info = 3;
TagCode Tag = 4; //
string Msg = 5; //()
string Msg = 5; //()
}
message SMSInfo{
int32 Id = 1;
string SmsName = 2;
}
// [/get_AwardLog]
message ASAwardLog{
string Platform = 1; // id
int32 SnId = 2; // id
}
//[/get_PopupWindowsConfig]
message ASPopUpWindowsConfig{
string Platform = 1; // id
int32 SnId = 2; // id
}
message SAPopUpWindowsConfig{
string Platform = 1; // id
int32 SnId = 2; // id
repeated WindowsInfo Info = 3;
TagCode Tag = 4; //
string Msg = 5; //()
}
message WindowsInfo{
string ItemName = 1;//
string Url = 2; //
int32 Sort = 3;//
int32 PartNum = 4;//
int32 GainNum = 5;//
}

2
public

@ -1 +1 @@
Subproject commit ec58a2f9fbf04979b5dfe9225e59e72cba754eb1
Subproject commit ec13bc8a4c52288af89a900dc457a76e7fedc659

View File

@ -86,6 +86,10 @@ func AgcConvert{{ $elem.ProtoName }}(fi,fo string) {
}
data.{{$col.ColName}} = arrInt
{{end}}
{{if eq $col.ColType 8 }}
arrStr = strings.Split(row.Cells[{{$col.ColIndex}}].String(), "|")
data.{{$col.ColName}} = arrStr
{{end}}
{{if eq $col.ColType 4 }}
if row.Cells[{{$col.ColIndex}}].String() != "" {
arrStr = strings.Split(row.Cells[{{$col.ColIndex}}].String(), "|")
@ -105,21 +109,24 @@ func AgcConvert{{ $elem.ProtoName }}(fi,fo string) {
data.{{$col.ColName}} = arrInt64
{{end}}
{{if eq $col.ColType 7 }}
if row.Cells[{{$col.ColIndex}}].String() != ""{
if row.Cells[{{$col.ColIndex}}].String() != "" {
pairs := strings.Split(row.Cells[{{$col.ColIndex}}].String(), ";")
resultMap := make(map[int64]int64)
for _, pair := range pairs {
kv := strings.Split(pair, ",")
if len(kv) != 2 {
break
}
key, err := strconv.ParseInt(kv[0], 10, 64)
if err != nil {
// 错误处理
fmt.Println("无法转换为int64:", kv[0])
fmt.Println("无法转换为int64:", kv[0], pair)
continue
}
value, err := strconv.ParseInt(kv[1], 10, 64)
if err != nil {
// 错误处理
fmt.Println("无法转换为int64:", kv[1])
fmt.Println("无法转换为int64:", kv[1], pair)
continue
}
resultMap[key] = value

View File

@ -133,6 +133,8 @@ func main() {
sms.Cols = append(sms.Cols, &SheetColumnMetaStruct{i, strings.TrimSuffix(s, ArrInt64Type), 6, Int64TypeProto, true, false, false})
case strings.HasSuffix(s, MapType):
sms.Cols = append(sms.Cols, &SheetColumnMetaStruct{i, strings.TrimSuffix(s, MapType), 7, MapProto, false, true, false})
case strings.HasSuffix(s, ArrStrType):
sms.Cols = append(sms.Cols, &SheetColumnMetaStruct{i, strings.TrimSuffix(s, ArrStrType), 8, StrTypeProto, true, false, false})
case strings.HasSuffix(s, IntTypeIndex):
sms.Cols = append(sms.Cols, &SheetColumnMetaStruct{i, strings.TrimSuffix(s, IntTypeIndex), 1, IntTypeProto, false, false, true})
case strings.HasSuffix(s, Int64TypeIndex):

View File

@ -92,6 +92,15 @@ func ApiSMSConfig(appId string, body proto.Message) ([]byte, error) {
return postRequest(appId, "/get_SMSConfig", nil, body, "http", DEFAULT_TIMEOUT)
}
func ApiAwardLog(appId string, body proto.Message) ([]byte, error) {
return postRequest(appId, "/get_AwardLog", nil, body, "http", DEFAULT_TIMEOUT)
}
// 获取弹窗配置
func ApiPopupWindowsConfig(appId string, body proto.Message) ([]byte, error) {
return postRequest(appId, "/get_PopupWindowsConfig", nil, body, "http", DEFAULT_TIMEOUT)
}
// 支付订单 商城
func API_CreateOrder(appId, orderId string, configid, SnId, shopId int32, platform string, packageTag string, os, deviceId, shopname string,
amount [3]int32, consumptionamount int32, itemInfo []*webapi.ItemInfo, exchangeOrderId, channel, channelId string) *webapi.ASCreateOrder {

42
worldsrv/aaa Normal file
View File

@ -0,0 +1,42 @@
71001,71002,71003,72001,72002,72003,72004,72005,73001,73002,73003,73004,74001,74002,74003,74004,74005,74006,75001,75002,75003,75004,75005,75006,76001,76002,76003,76004,76005,76006,77001,77002,77003,77004,77005,78001,78002,78003,79001,79002,79003,79004,79005,77006
5001,5002,5003,5004,5005,5006
"72005":NumberLong(16),
"71001":NumberLong(66),
"71003":NumberLong(112),
"72004":NumberLong(8),
"71002":NumberLong(8),
"73002":NumberLong(16),
"72003":NumberLong(23),
"73001":NumberLong(41),
"74004":NumberLong(32),
"75002":NumberLong(48),
"76006":NumberLong(58),
"79005":NumberLong(136),
"75003":NumberLong(5),
"72002":NumberLong(3),
"79001":NumberLong(3),
"72001":NumberLong(8),
"76003":NumberLong(1),
"75005":NumberLong(6),
"77004":NumberLong(10),
"76001":NumberLong(2),
"75006":NumberLong(1),
"75004":NumberLong(1),
"75001":NumberLong(1),
"76002":NumberLong(1)
"30008":NumberLong(84),
"30009":NumberLong(6),
"30010":NumberLong(13),
"30011":NumberLong(13)
"5001":NumberLong(2),
"5002":NumberLong(18),
"5003":NumberLong(6),
"5004":NumberLong(13),
"5005":NumberLong(13),
"5006":NumberLong(4)

View File

@ -79,7 +79,7 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e
}
}
pack := &bag.SCUpBagInfo{RetCode: bag.OpResultCode_OPRC_Error}
pack := &bag.SCUpBagInfo{RetCode: bag.OpResultCode_OPRC_Error, Opt: msg.GetOpt()}
send := func() {
p.SendToClient(int(bag.SPacketID_PACKET_ALL_BAG_USE), pack)
logger.Logger.Tracef("SCUpBagInfo: %v", pack)
@ -298,6 +298,7 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e
pack.NowItemNum = item.ItemNum
}
}
case ItemCanExchange:
logger.Logger.Trace("道具兑换", msg.ItemId)
itemInfo := srvdata.GameItemMgr.Get(p.Platform, msg.ItemId)
@ -326,6 +327,52 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e
//获取兑换码
BagMgrSingleton.ItemExchangeCard(p, msg.ItemId, int32(itemInfo.Num), msg.CardType, bagInfo.LogId)
}
case ItemCanFen:
logger.Logger.Trace("道具分解", msg.ItemId)
itemInfo := srvdata.GameItemMgr.Get(p.Platform, msg.ItemId)
if msg.ItemNum > 0 && itemInfo != nil {
_, _, isF := BagMgrSingleton.AddItemsV2(&ItemParam{
P: p,
Change: []*Item{
{
ItemId: msg.GetItemId(),
ItemNum: int64(-msg.GetItemNum()),
},
},
GainWay: common.GainWayItemFen,
Operator: "system",
Remark: fmt.Sprintf("道具分解%v", msg.GetItemId()),
noLog: false,
})
if isF {
pack.RetCode = bag.OpResultCode_OPRC_Sucess
var changeItems []*Item
for k, v := range itemInfo.GetGain() {
if v > 0 {
changeItems = append(changeItems, &Item{
ItemId: int32(k),
ItemNum: v * int64(msg.GetItemNum()),
})
}
}
BagMgrSingleton.AddItemsV2(&ItemParam{
P: p,
Change: changeItems,
Cost: []*model.ItemInfo{
{
ItemId: msg.GetItemId(),
ItemNum: int64(msg.GetItemNum()),
},
},
GainWay: common.GainWayItemFenGain,
Operator: "system",
Remark: "道具分解获得",
})
pack.NowItemId = item.ItemId
pack.NowItemNum = item.ItemNum
}
}
}
send()
return nil

View File

@ -2098,6 +2098,7 @@ func (this *CSRecordAndNoticeHandler) Process(s *netlib.Session, packetid int, d
IsLoop: v.IsLoop,
LoopTime: v.LoopTime,
OnChannelName: v.OnChannelName,
Url: v.Url,
})
}
}

View File

@ -1,12 +1,16 @@
package main
import (
"time"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/netlib"
"mongo.games.com/game/common"
"mongo.games.com/game/model"
"mongo.games.com/game/protocol/pets"
"mongo.games.com/game/protocol/server"
"mongo.games.com/game/srvdata"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/netlib"
)
type CSRoleInfoPacketFactory struct {
@ -301,6 +305,12 @@ func (this *CSRolePetUnlockHandler) Process(s *netlib.Session, packetid int, dat
"player", remark, 0, 0, false)
p.Roles.ModUnlock[msg.UseModId] = 1
if p.Roles.Mod[msg.UseModId] == nil {
p.Roles.Mod[msg.UseModId] = &model.ModEx{}
}
if p.Roles.Mod[msg.UseModId].Ts == 0 {
p.Roles.Mod[msg.UseModId].Ts = time.Now().Unix()
}
FriendMgrSington.UpdateInfo(p.Platform, p.SnId)
p.dirty = true
logger.Logger.Trace("解锁人物", msg.UseModId)
@ -320,6 +330,12 @@ func (this *CSRolePetUnlockHandler) Process(s *netlib.Session, packetid int, dat
"player", remark, 0, 0, false)
p.Pets.ModUnlock[msg.UseModId] = 1
if p.Pets.Mod[msg.UseModId] == nil {
p.Pets.Mod[msg.UseModId] = &model.ModEx{}
}
if p.Pets.Mod[msg.UseModId].Ts == 0 {
p.Pets.Mod[msg.UseModId].Ts = time.Now().Unix()
}
FriendMgrSington.UpdateInfo(p.Platform, p.SnId)
p.dirty = true
logger.Logger.Trace("解锁宠物", msg.UseModId)
@ -392,6 +408,17 @@ func (this *CSPetSkillLevelUpHandler) Process(s *netlib.Session, packetid int, d
_, _, isF := BagMgrSingleton.AddItems(p, items, 0, common.GainWayPetSkillLevelUp, "system", "宠物技能升级消耗", 0, 0, false)
if isF {
p.Pets.SkillInfo[petId][skillId] = level + 1
if level == 0 {
if p.Pets.Skill[petId] == nil {
p.Pets.Skill[petId] = make(map[int32]*model.SkillEx)
}
if p.Pets.Skill[petId][skillId] == nil {
p.Pets.Skill[petId][skillId] = &model.SkillEx{}
}
if p.Pets.Skill[petId][skillId].Ts == 0 {
p.Pets.Skill[petId][skillId].Ts = time.Now().Unix()
}
}
pack := &pets.SCPetSkillLevelUp{}
pack.PetId = petId
pack.SkillId = skillId
@ -477,6 +504,8 @@ func CSSkinUpgrade(s *netlib.Session, packetid int, data interface{}, sid int64)
return nil
}
cfg := PlatformMgrSingleton.GetSkinInfo(p.Platform, msg.GetId())
pack := &pets.SCSkinUpgrade{
RetCode: pets.OpResultCode_OPRC_Error,
}
@ -493,7 +522,7 @@ func CSSkinUpgrade(s *netlib.Session, packetid int, data interface{}, sid int64)
return nil
}
if info.GetLevel() >= srvdata.RolePetMgrSington.GetSkinMaxLevel(msg.GetId()) {
if info.GetLevel() >= PlatformMgrSingleton.GetSkinMaxLevel(p.Platform, msg.GetId()) || cfg.GetIsUpgrade() == 2 {
logger.Logger.Errorf("CSSkinUpgrade max level")
pack.RetCode = pets.OpResultCode_OPRC_MaxLevel
send()
@ -532,11 +561,16 @@ func CSSkinUpgrade(s *netlib.Session, packetid int, data interface{}, sid int64)
pack.RetCode = pets.OpResultCode_OPRC_Sucess
pack.Info = PetMgrSington.GetSkinInfo(p, msg.GetId())
send()
// 任务加成变更
if info.GetSkillId() == common.SkillIdTask && p.GetSkillAdd(common.SkillIdTask) > 0 {
OnNotifyChange(p, common.TaskActivityTypeEveryDay)
}
return nil
}
func SkinUnLock(p *Player, id int32) (*pets.SkinInfo, pets.OpResultCode) {
cfg := srvdata.PBDB_SkinMgr.GetData(id)
cfg := PlatformMgrSingleton.GetSkinInfo(p.Platform, id)
if cfg == nil {
return nil, pets.OpResultCode_OPRC_Error
}
@ -547,30 +581,43 @@ func SkinUnLock(p *Player, id int32) (*pets.SkinInfo, pets.OpResultCode) {
}
var change []*Item
for _, v := range info.GetCost() {
e := BagMgrSingleton.GetItem(p.SnId, v.GetId())
if e == nil || e.ItemNum < v.GetN() {
return nil, pets.OpResultCode_OPRC_NotEnough
if info.GetUnLockType() == common.SkinGetVip {
if p.VIP < info.GetNeedVip() {
logger.Logger.Errorf("CSSKinUnLock Unlock vip error")
return nil, pets.OpResultCode_OPRC_Error
}
change = append(change, &Item{
ItemId: v.GetId(),
ItemNum: -v.GetN(),
} else {
for _, v := range info.GetCost() {
e := BagMgrSingleton.GetItem(p.SnId, v.GetId())
if e == nil || e.ItemNum < v.GetN() {
return nil, pets.OpResultCode_OPRC_NotEnough
}
change = append(change, &Item{
ItemId: v.GetId(),
ItemNum: -v.GetN(),
})
}
_, _, ok := BagMgrSingleton.AddItemsV2(&ItemParam{
P: p,
Change: change,
Add: 0,
GainWay: common.GainWaySkinUnLock,
Operator: "system",
Remark: "皮肤解锁消耗",
noLog: false,
})
}
_, _, ok := BagMgrSingleton.AddItemsV2(&ItemParam{
P: p,
Change: change,
Add: 0,
GainWay: common.GainWaySkinUnLock,
Operator: "system",
Remark: "皮肤解锁消耗",
noLog: false,
})
if !ok {
logger.Logger.Errorf("CSSKinUnLock Unlock error")
return nil, pets.OpResultCode_OPRC_Error
if !ok {
logger.Logger.Errorf("CSSKinUnLock Unlock error")
return nil, pets.OpResultCode_OPRC_Error
}
}
p.Skin.ModUnlock[id] = 1
if p.Skin.Mod[id] == nil {
p.Skin.Mod[id] = &model.ModEx{}
}
if p.Skin.Mod[id].Ts == 0 {
p.Skin.Mod[id].Ts = time.Now().Unix()
}
pack := &pets.SCSkinUnLock{
Id: id,
RetCode: pets.OpResultCode_OPRC_Sucess,
@ -579,8 +626,13 @@ func SkinUnLock(p *Player, id int32) (*pets.SkinInfo, pets.OpResultCode) {
p.SendToClient(int(pets.PetsPacketID_PACKET_SC_SKIN_UNLOCK), pack)
logger.Logger.Tracef("SCSkinUnlock: %v", pack)
// 任务加成变更
if info.GetSkillId() == common.SkillIdTask && p.GetSkillAdd(common.SkillIdTask) > 0 {
OnNotifyChange(p, common.TaskActivityTypeEveryDay)
}
// 自动使用
if srvdata.PBDB_SkinMgr.GetData(id).GetUnlockType() == common.SkinGetAuto {
if cfg.GetUnlockType() == common.SkinGetAuto {
CSSkinUse(p.gateSess, int(pets.PetsPacketID_PACKET_CS_SKIN_USE), &pets.CSSkinUse{Id: id}, p.sid)
}
return pack.Info, pets.OpResultCode_OPRC_Sucess

View File

@ -80,8 +80,7 @@ func (this *CSPhoneLotteryHandler) Process(s *netlib.Session, packetid int, data
logger.Logger.Warn("CSPhoneLottery p == nil")
return nil
}
conf := PlatformMgrSingleton.GetConfig(p.Platform).ChannelSwitch[common.ChannelSwitchDiamondLottery]
if !model.GameParamData.CloseChannelSwitch && (conf == nil || !common.InSliceString(conf.OnChannelName, p.LastChannel)) {
if !PlatformMgrSingleton.IsOn(p.Platform, common.ChannelSwitchDiamondLottery, p.LastChannel) {
return nil
}
countType := msg.GetLotteryType()
@ -227,8 +226,7 @@ func (this *CSDiamondLotteryInfoHandler) Process(s *netlib.Session, packetid int
return nil
}
// 渠道开关
conf := PlatformMgrSingleton.GetConfig(p.Platform).ChannelSwitch[common.ChannelSwitchDiamondLottery]
if !model.GameParamData.CloseChannelSwitch && (conf == nil || !common.InSliceString(conf.OnChannelName, p.LastChannel)) {
if !PlatformMgrSingleton.IsOn(p.Platform, common.ChannelSwitchDiamondLottery, p.LastChannel) {
return nil
}
@ -278,8 +276,7 @@ func (this *CSDiamondLotteryHandler) Process(s *netlib.Session, packetid int, da
return nil
}
// 渠道开关
conf := PlatformMgrSingleton.GetConfig(p.Platform).ChannelSwitch[common.ChannelSwitchDiamondLottery]
if !model.GameParamData.CloseChannelSwitch && (conf == nil || !common.InSliceString(conf.OnChannelName, p.LastChannel)) {
if !PlatformMgrSingleton.IsOn(p.Platform, common.ChannelSwitchDiamondLottery, p.LastChannel) {
return nil
}
countType := msg.GetLotteryType()
@ -321,7 +318,11 @@ func (this *CSDiamondLotteryHandler) Process(s *netlib.Session, packetid int, da
}
random := rand.Intn(weight) + 1
value := 0
p.DiamondLotteryScore += 1
p.DiamondLotteryScore += 100
add := p.GetSkillAdd(common.SkillIdDiamondLottery)
if add > 0 {
p.DiamondLotteryScore += int64(add)
}
//判断是否白名单用户
whiteList := config.Players
status := false
@ -332,7 +333,7 @@ func (this *CSDiamondLotteryHandler) Process(s *netlib.Session, packetid int, da
break
}
}
if playerData != nil && p.DiamondLotteryScore%int64(playerData.Count) == 0 {
if playerData != nil && p.DiamondLotteryScore%int64(playerData.Count*100) == 0 {
status = true
}
if status {
@ -434,8 +435,7 @@ func (this *CSDiamondLotteryLuckyAwardHandler) Process(s *netlib.Session, packet
return nil
}
// 渠道开关
conf := PlatformMgrSingleton.GetConfig(p.Platform).ChannelSwitch[common.ChannelSwitchDiamondLottery]
if !model.GameParamData.CloseChannelSwitch && (conf == nil || !common.InSliceString(conf.OnChannelName, p.LastChannel)) {
if !PlatformMgrSingleton.IsOn(p.Platform, common.ChannelSwitchDiamondLottery, p.LastChannel) {
return nil
}
info := WelfareMgrSington.GetConfig(p.Platform)

View File

@ -1779,7 +1779,7 @@ func (this *CSVIPPrivilegeInfoHandler) Process(s *netlib.Session, packetid int,
}
switch code {
case 1: //1.VIP比赛场免费次数
pack.Value = p.GetMatchFreeTimes()
pack.Value = p.GetMatchFreeTimes() + p.GetSkillAdd(common.SkillIdVipTimes)
pack.NowValue = p.VipMatchTimes
}
p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SC_VIPPrivilegeInfo), pack)
@ -2889,6 +2889,144 @@ func CSSMSConfig(s *netlib.Session, packetId int, data interface{}, sid int64) e
return nil
}
// 获取获奖记录
func CSAwardLog(s *netlib.Session, packetId int, data interface{}, sid int64) error {
logger.Logger.Tracef("CSAwardLog Process %v", data)
p := PlayerMgrSington.GetPlayer(sid)
if p == nil {
return nil
}
msg, ok := data.(*player_proto.CS_AwardLog)
if !ok {
return nil
}
awardLogConfig := PlatformMgrSingleton.GetConfig(p.Platform).AwardLogConfig
AwardLog := AwardLogMgr.GetAwardLog(p.Platform, msg.TypeId)
ret := &player_proto.SCAwardLog{}
awardData := &player_proto.AwardLogData{}
ret.TypeId = msg.TypeId
for itemId, num := range AwardLog {
itemNum := int64(num)
infoData := &player_proto.AwardLogInfo{}
infoData.ItemId = itemId
infoData.Num = itemNum
awardData.AwardLog = append(awardData.AwardLog, infoData)
}
//处理后台数据
if awardLogConfig != nil {
for _, awardLog := range awardLogConfig.AwardLog {
if awardLog.TypeId == msg.TypeId {
for _, log := range awardLog.AwardLog {
status := false
for _, info := range awardData.AwardLog {
if log.ItemId == info.ItemId {
status = true
info.Order = log.Order
info.Url = log.Url
if log.Num > info.Num {
info.Num = log.Num
}
break
}
}
if !status {
infoData := &player_proto.AwardLogInfo{}
infoData.ItemId = log.ItemId
infoData.Num = log.Num
infoData.Order = log.Order
infoData.Url = log.Url
awardData.AwardLog = append(awardData.AwardLog, infoData)
}
}
awardData.SortId = awardLog.SortId
}
}
}
ret.AwardLog = awardData
//实时播报数据
AnnouncerLog := AwardLogMgr.GetAnnouncerLog(p.Platform, msg.TypeId)
for _, logInfo := range AnnouncerLog {
infoData := &player_proto.AnnouncerLogInfo{}
//infoData.Snid = logInfo.Snid
infoData.Name = logInfo.Name
str := ""
if len(logInfo.Phone) > 4 {
str = logInfo.Phone[:4]
}
infoData.Phone = str
infoData.ItemId = logInfo.ItemId
infoData.TypeId = logInfo.TypeId
ret.AnnouncerLog = append(ret.AnnouncerLog, infoData)
}
//处理实时播报数据
if len(ret.AnnouncerLog) < 100 {
//后台数据
if awardLogConfig != nil {
for _, info := range awardLogConfig.AnnouncerLog {
if info.TypeId == msg.TypeId {
infoData := &player_proto.AnnouncerLogInfo{}
//infoData.Snid = info.Snid
infoData.Name = info.Name
str := ""
if len(info.Phone) > 4 {
str = info.Phone[:4]
}
infoData.Phone = str
infoData.ItemId = info.ItemId
infoData.TypeId = info.TypeId
ret.AnnouncerLog = append(ret.AnnouncerLog, infoData)
if len(ret.AnnouncerLog) >= 100 {
break
}
}
}
}
}
p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SCAwardLog), ret)
logger.Logger.Tracef("SCAwardLog:%v", ret)
return nil
}
func CSPopUpWindowsConfig(s *netlib.Session, packetId int, data interface{}, sid int64) error {
p := PlayerMgrSington.GetPlayer(sid)
if p == nil {
return nil
}
var res []byte
var err error
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
param := &webapi_proto.ASPopUpWindowsConfig{
SnId: p.SnId,
Platform: p.Platform,
}
res, err = webapi.ApiPopupWindowsConfig(common.GetAppId(), param)
return nil
}), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) {
if err != nil || res == nil {
logger.Logger.Errorf("API_SmsConfig err %v", err)
return
}
var info webapi_proto.SAPopUpWindowsConfig
proto.Unmarshal(res, &info)
if info.Tag == webapi_proto.TagCode_SUCCESS {
ret := &player_proto.SCPopUpWindowsConfig{}
for _, config := range info.Info {
infoData := &player_proto.WindowsInfo{}
infoData.ItemName = config.ItemName
infoData.Url = config.Url
infoData.Sort = config.Sort
infoData.PartNum = config.PartNum
infoData.GainNum = config.GainNum
ret.Info = append(ret.Info, infoData)
}
p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SCPopUpWindowsConfig), ret)
} else {
logger.Logger.Errorf("ApiPopupWindowsConfig err %v", info.Msg)
}
}), "Api_PopupWindowsConfig").Start()
return nil
}
func init() {
// 用户信息
common.Register(int(player_proto.PlayerPacketID_PACKET_CS_PLAYERDATA), player_proto.CSPlayerData{}, CSPlayerData)
@ -2916,4 +3054,8 @@ func init() {
common.Register(int(player_proto.PlayerPacketID_PACKET_CSExchangeChannel), player_proto.CSExchangeChannel{}, CSExchangeChannel)
//获取运营商配置
common.Register(int(player_proto.PlayerPacketID_PACKET_CSSMSConfig), player_proto.CSSMSConfig{}, CSSMSConfig)
//获奖记录
common.Register(int(player_proto.PlayerPacketID_PACKET_CSAwardLog), player_proto.CS_AwardLog{}, CSAwardLog)
//弹窗配置
common.Register(int(player_proto.PlayerPacketID_PACKET_CSPopUpWindowsConfig), player_proto.CSPopUpWindowsConfig{}, CSPopUpWindowsConfig)
}

View File

@ -172,7 +172,8 @@ func init() {
if items != nil {
for _, dbItem := range dbItemArr {
//todo 临时修复,正常应该道具需要使用事务同步
if dbItem.GetId() == common.ItemIDPermit {
switch dbItem.GetId() {
case common.ItemIDPermit, common.ItemIDWeekScore:
continue
}
if itemNum, exist := items[dbItem.Id]; exist {

View File

@ -217,7 +217,7 @@ func (this *CSVCPayShopHandler) Process(s *netlib.Session, packetid int, data in
}
case ShopConsumeDiamondScore:
item := BagMgrSingleton.GetItem(p.SnId, common.ItemDiamondScore)
if costNum > item.ItemNum {
if item == nil || costNum > item.ItemNum {
SendClient(shop.OpResultCode_OPRC_Error)
return nil
}
@ -285,6 +285,10 @@ func (this *CSShopExchangeHandler) Process(s *netlib.Session, packetid int, data
return nil
}
if !PlatformMgrSingleton.IsOn(p.Platform, common.ChannelSwitchExchange, p.LastChannel) {
return nil
}
/* switch msg.ExchangeType {
case 1: // 自提
//自提 直接增加道具到背包

View File

@ -81,11 +81,16 @@ func IsTaskReward(p *Player, id int32) bool {
func SendReward(p *Player, m map[int64]int64, tp int32) {
isPermit := p.GetIsPermit()
add := p.GetSkillAdd(common.SkillIdTask)
var items []*Item
for k, v := range m {
if k == common.ItemIDPermit && isPermit {
v += int64(float64(v) * common.PermitAdd)
}
// 皮肤技能每日任务金币加成
if tp == common.TaskActivityTypeEveryDay && add > 0 && k == common.ItemIDCoin {
v += int64((float64(v) * float64(add)) / 100.0)
}
items = append(items, &Item{
ItemId: int32(k),
ItemNum: v,
@ -139,6 +144,7 @@ func CSTaskList(s *netlib.Session, packetId int, data interface{}, sid int64) er
return nil
}
add := p.GetSkillAdd(common.SkillIdTask)
ret := &taskproto.SCTaskList{
Tp: msg.GetTp(),
}
@ -149,9 +155,16 @@ func CSTaskList(s *netlib.Session, packetId int, data interface{}, sid int64) er
N: GetTaskTimes(p, v.Id),
TargetN: v.GetTargetTimes(),
Status: 0,
Reward: v.GetAward(),
Reward: make(map[int64]int64),
TaskType: v.GetTaskType(),
}
// 皮肤技能每日任务金币加成
for k, vv := range v.GetAward() {
if v.GetActivityType() == common.TaskActivityTypeEveryDay && add > 0 && k == common.ItemIDCoin {
vv += int64((float64(vv) * float64(add)) / 100.0)
}
item.Reward[k] = vv
}
if item.N > item.TargetN {
item.N = item.TargetN
}
@ -178,6 +191,7 @@ func CSTaskReward(s *netlib.Session, packetId int, data interface{}, sid int64)
return nil
}
add := p.GetSkillAdd(common.SkillIdTask)
now := time.Now()
ret := &taskproto.SCTaskReward{
@ -205,6 +219,10 @@ func CSTaskReward(s *netlib.Session, packetId int, data interface{}, sid int64)
if k == common.ItemIDPermit && isPermit {
vv += int64(float64(vv) * common.PermitAdd)
}
// 皮肤技能每日任务金币加成
if data.GetActivityType() == common.TaskActivityTypeEveryDay && add > 0 && k == common.ItemIDCoin {
vv += int64((float64(vv) * float64(add)) / 100.0)
}
ret.Reward[k] = ret.Reward[k] + vv
}
for k, v := range ret.Reward {

View File

@ -384,6 +384,11 @@ func CSBindInvite(s *netlib.Session, packetid int, data interface{}, sid int64)
if p == nil {
return nil
}
if !PlatformMgrSingleton.IsOn(p.Platform, common.ChannelSwitchInvite, p.LastChannel) {
return nil
}
ret := &welfare.SCBindInvite{
OpRetCode: welfare.OpResultCode_OPRC_Error,
}
@ -691,6 +696,10 @@ func CSPermitAward(s *netlib.Session, packetid int, data interface{}, sid int64)
return nil
}
if !PlatformMgrSingleton.IsOn(p.Platform, common.ChannelSwitchPermit, p.LastChannel) {
return nil
}
channelConfig := PlatformMgrSingleton.GetPermitConfig(p.Platform, p.LastChannel)
if channelConfig == nil {
logger.Logger.Errorf("CSPermitAward not channelConfig %v", p.SnId)
@ -980,6 +989,9 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
logger.Logger.Errorf("CSPermitExchange not channel %v", p.SnId)
return nil
}
if !PlatformMgrSingleton.IsOn(p.Platform, common.ChannelSwitchPermit, p.LastChannel) {
return nil
}
channelConfig := PlatformMgrSingleton.GetPermitConfig(p.Platform, p.LastChannel)
if channelConfig == nil {
logger.Logger.Errorf("CSPermitExchange not channelConfig %v", p.SnId)

156
worldsrv/awardlogmgr.go Normal file
View File

@ -0,0 +1,156 @@
package main
import (
"time"
"mongo.games.com/game/common"
"mongo.games.com/game/model"
"mongo.games.com/game/srvdata"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/module"
"mongo.games.com/goserver/core/task"
)
type AwardLogManager struct {
BaseClockSinker
AwardMap map[string]map[int32]map[int32]int64 //key1:plt key2:1话费 2实物 key3 itemId value:数量
AnnouncerLog map[string]map[int32][]model.AnnouncerLog //key:1话费 2实物
}
var AwardLogMgr = &AwardLogManager{
AnnouncerLog: make(map[string]map[int32][]model.AnnouncerLog),
}
func (this *AwardLogManager) ModuleName() string {
return "AwardLogManager"
}
// GetAwardLog 获取总数量
// typeId 1 话费 2实物
func (this *AwardLogManager) GetAwardLog(plt string, typeId int32) map[int32]int64 {
ret := make(map[int32]int64)
if this.AwardMap[plt] != nil && this.AwardMap[plt][typeId] != nil {
ret = this.AwardMap[plt][typeId]
}
return ret
}
func (this *AwardLogManager) GetAnnouncerLog(plt string, typeId int32) []model.AnnouncerLog {
data := this.AnnouncerLog[plt]
if data == nil {
data = make(map[int32][]model.AnnouncerLog)
this.AnnouncerLog[plt] = data
}
log := data[typeId]
if len(log) > 100 {
return log[len(log)-100:]
}
return log
}
// 已兑换数据
func (this *AwardLogManager) UpdateAwardLog(plt string, itemId int32, num int64) {
if srvdata.GameItemMgr.Get(plt, itemId).Type == common.ItemTypeObjective ||
srvdata.GameItemMgr.Get(plt, itemId).Type == common.ItemTypeChange {
typeId := int32(1)
if srvdata.GameItemMgr.Get(plt, itemId).Type == common.ItemTypeObjective {
typeId = 2
}
if this.AwardMap[plt] == nil {
this.AwardMap[plt] = make(map[int32]map[int32]int64)
}
if this.AwardMap[plt][typeId] == nil {
this.AwardMap[plt][typeId] = make(map[int32]int64)
}
this.AwardMap[plt][typeId][itemId] += num
}
}
// 实时播报数据
func (this *AwardLogManager) UpdateAnnouncerLog(data model.AnnouncerLog) {
data.Ts = time.Now()
if this.AnnouncerLog == nil {
this.AnnouncerLog = make(map[string]map[int32][]model.AnnouncerLog)
}
if this.AnnouncerLog[data.Platform] == nil {
this.AnnouncerLog[data.Platform] = make(map[int32][]model.AnnouncerLog)
}
this.AnnouncerLog[data.Platform][data.TypeId] = append(this.AnnouncerLog[data.Platform][data.TypeId], data)
if len(this.AnnouncerLog[data.Platform][data.TypeId]) > 100 {
this.AnnouncerLog[data.Platform][data.TypeId] = this.AnnouncerLog[data.Platform][data.TypeId][len(this.AnnouncerLog[data.Platform][data.TypeId])-100:]
}
logger.Logger.Trace("更新实时播报数据 this.AnnouncerLog = ", this.AnnouncerLog)
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
err := model.InsertAnnouncerLog(&data)
if err != nil {
logger.Logger.Error("UpdateAnnouncerLog InsertAnnouncerLog err :", err)
}
return nil
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
}), "save_announcer").Start()
}
func (this *AwardLogManager) Init() {
this.AwardMap = make(map[string]map[int32]map[int32]int64)
for _, v := range PlatformMgrSingleton.platforms {
if v != nil {
// 获取道具获得总数
res, err := model.FetchAwardLog(v.IdStr)
if err != nil {
logger.Logger.Errorf("fetch award log error: %v", err)
} else {
this.AwardMap[v.IdStr] = res.AwardMap
}
// 获取实时播报数据
arr, err := model.FetchAnnouncerLog(v.IdStr)
if err != nil {
logger.Logger.Errorf("fetch announcer log error: %v", err)
} else {
for _, data := range arr {
if this.AnnouncerLog[data.Platform] == nil {
this.AnnouncerLog[data.Platform] = make(map[int32][]model.AnnouncerLog)
}
if this.AnnouncerLog[data.Platform][data.TypeId] == nil {
this.AnnouncerLog[data.Platform][data.TypeId] = make([]model.AnnouncerLog, 0)
}
this.AnnouncerLog[data.Platform][data.TypeId] = append(this.AnnouncerLog[data.Platform][data.TypeId], data)
}
}
}
}
}
func (this *AwardLogManager) Update() {
}
func (this *AwardLogManager) Shutdown() {
this.Save()
}
func (this *AwardLogManager) OnHourTimer() {
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
this.Save()
return nil
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
}), "save_awarditem").Start()
}
func (this *AwardLogManager) Save() {
for plt, v := range this.AwardMap {
if v != nil {
data := &model.AwardLog{
Ts: time.Now().Unix(),
AwardMap: v,
}
model.UpsertAwardLog(plt, data)
}
}
}
func init() {
module.RegisteModule(AwardLogMgr, time.Hour, 0)
ClockMgrSington.RegisteSinker(AwardLogMgr)
}

View File

@ -35,6 +35,7 @@ const (
ItemCanGive //可以赠送
ItemCanSell //可以出售
ItemCanExchange //可以兑换
ItemCanFen // 可以分解
ItemMax
)
@ -189,6 +190,9 @@ func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int
continue
}
item := srvdata.GameItemMgr.Get(p.Platform, v.ItemId)
if item == nil {
continue
}
switch item.Type {
case common.ItemTypeCoin:
//增加金币
@ -323,6 +327,29 @@ func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int
LogChannelSingleton.WriteLog(log)
logId = log.LogId.Hex()
}
//获奖记录log
if logType == ItemObtain && v.ItemNum > 0 {
awardLogType := 0
if item.Type == common.ItemTypeChange {
//话费
awardLogType = 1
} else if item.Type == common.ItemTypeObjective {
//实物
awardLogType = 2
AwardLogMgr.UpdateAwardLog(p.Platform, item.Id, v.ItemNum)
}
if awardLogType != 0 {
data := model.AnnouncerLog{
Platform: p.Platform,
Snid: p.SnId,
Name: p.Name,
Phone: p.Tel,
ItemId: item.Id, //获得物品ID
TypeId: int32(awardLogType),
}
AwardLogMgr.UpdateAnnouncerLog(data)
}
}
}
if v.ItemId == common.ItemIDWeekScore && v.ItemNum > 0 {
@ -335,6 +362,12 @@ func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int
if v.ItemId == common.ItemIDPetSkill && v.ItemNum > 0 {
PetMgrSington.CheckShowRed(p)
}
// 皮肤红点
if v.ItemNum > 0 && item.GetType() == common.ItemTypeSkinChip {
PetMgrSington.CheckSkinRed(p)
}
// 统计 v卡兑换消耗数量
if v.ItemId == common.ItemIDVCard && gainWay == common.GainWay_Exchange {
p.VCardCost += -v.ItemNum
@ -464,6 +497,30 @@ func (this *BagMgr) AddItemsOffline(platform string, snid int32, addItems []*Ite
if log != nil {
LogChannelSingleton.WriteLog(log)
}
//获奖记录log
if logType == ItemObtain && v.ItemNum > 0 {
awardLogType := 0
if itemData.Type == common.ItemTypeChange {
//话费
awardLogType = 1
} else if itemData.Type == common.ItemTypeObjective {
//实物
awardLogType = 2
AwardLogMgr.UpdateAwardLog(findPlayer.Platform, itemData.Id, v.ItemNum)
}
if awardLogType > 0 {
logData := model.AnnouncerLog{
Platform: findPlayer.Platform,
Snid: findPlayer.SnId,
Name: findPlayer.Name,
Phone: findPlayer.Tel,
ItemId: itemData.Id, //获得物品ID
TypeId: int32(awardLogType),
}
AwardLogMgr.UpdateAnnouncerLog(logData)
}
}
}
} else {
callback(errors.New("AddItemsOffline failed"))
@ -701,6 +758,9 @@ func (this *BagMgr) ItemExchangeCard(p *Player, itemId int32, money, cardType in
p := PlayerMgrSington.GetPlayerBySnId(p.SnId)
if p != nil {
p.AddMessage(newMsg)
//已兑换log
itemData := srvdata.GameItemMgr.Get(p.Platform, itemId)
AwardLogMgr.UpdateAwardLog(p.Platform, itemData.Id, int64(1))
}
p.SendToClient(int(bag.SPacketID_PACKET_SC_ITEM_EXCHANGE_RES), pack)
}), fmt.Sprintf("ItemExChange%d", p.SnId)).Start()

View File

@ -82,6 +82,12 @@ func init() {
etcd.Register(etcd.ETCDKEY_DIAMOND_LOTTERY, webapi.DiamondLotteryConfig{}, platformConfigEvent)
// 道具列表
etcd.Register(etcd.ETCDKEY_Item, webapi.ItemConfig{}, platformConfigEvent)
// 皮肤配置
etcd.Register(etcd.ETCDKEY_SKin, webapi.SkinConfig{}, platformConfigEvent)
//排行榜奖励配置
etcd.Register(etcd.ETCDKEY_RANK_TYPE, webapi.RankTypeConfig{}, platformConfigEvent)
//获奖记录配置
etcd.Register(etcd.ETCDKEY_AWARD_CONFIG, webapi.AwardLogConfig{}, platformConfigEvent)
}
func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
@ -309,6 +315,12 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
}
}
case *webapi.SkinConfig:
PlatformMgrSingleton.GetConfig(config.Platform).SkinConfig = config
case *webapi.RankTypeConfig:
PlatformMgrSingleton.GetConfig(config.Platform).RankTypeConfig = config
case *webapi.AwardLogConfig:
PlatformMgrSingleton.GetConfig(config.Platform).AwardLogConfig = config
default:
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)
}

View File

@ -1,88 +0,0 @@
package main
//import (
// "mongo.games.com/game/model"
// "mongo.games.com/game/srvdata"
// "mongo.games.com/goserver/core/logger"
// "github.com/globalsign/mgo/bson"
//)
//
//func InitGameAllConfigData() error {
// c := model.GameConfigCollection()
// if c != nil {
// var datas []model.GameGlobalState
// err := c.Find(nil).All(&datas)
// if err != nil {
// logger.Logger.Trace("InitGameAllConfigData err:", err)
// return err
// }
// for i := 0; i < len(datas); i++ {
// model.GameAllConfig[datas[i].LogicId] = &datas[i]
// }
// logger.Logger.Trace("InitGameAllConfigData:", model.GameAllConfig)
//
// //把dbFree中的数据写入数据库
// arr := srvdata.PBDB_GameFreeMgr.Datas.GetArr()
// for _, dbGame := range arr {
// if dbGame.GetGameId() > 0 {
// name := dbGame.GetName()
// if name != dbGame.GetTitle() {
// name = dbGame.GetName() + dbGame.GetTitle()
// }
// if data, exist := model.GameAllConfig[dbGame.GetId()]; exist {
// data.Name = name
// data.GameId = dbGame.GetGameId()
// data.GameMode = dbGame.GetGameMode()
// cu := model.GameConfigCollection()
// if cu != nil {
// info, err := cu.Upsert(bson.M{"logicid": dbGame.GetId()}, data)
// if err != nil {
// logger.Logger.Trace("InitGameAllConfigData :", info, err)
// return err
// }
// }
// } else {
// name := dbGame.GetName()
// if name != dbGame.GetTitle() {
// name = dbGame.GetName() + dbGame.GetTitle()
// }
// data := &model.GameGlobalState{
// Id: bson.NewObjectId(),
// LogicId: dbGame.GetId(),
// Name: name,
// GameId: dbGame.GetGameId(),
// GameMode: dbGame.GetGameMode(),
// State: 0,
// }
// model.GameAllConfig[dbGame.GetId()] = data
// ci := model.GameConfigCollection()
// if ci != nil {
// info, err := ci.Upsert(bson.M{"logicid": dbGame.GetId()}, data)
// if err != nil {
// logger.Logger.Trace("InitGameAllConfigData :", info, err)
// return err
// }
// }
// }
// }
// }
//
// //dbfree表中删除后操作
// for k, _ := range model.GameAllConfig {
// gc := srvdata.PBDB_GameFreeMgr.GetData(k)
// if gc == nil {
// cgc := model.GameConfigCollection()
// if cgc != nil {
// err := cgc.Remove(bson.M{"logicid": k})
// if err != nil {
// logger.Logger.Warn("RemoveGameConfig error:", err)
// return err
// } else {
// delete(model.GameAllConfig, k)
// }
// }
// }
// }
// }
// return nil
//}

View File

@ -1,30 +0,0 @@
package main
import (
"mongo.games.com/goserver/core/logger"
)
type GameDataMgr struct {
}
func (this *GameDataMgr) ModuleName() string {
return "GameDataMgr"
}
func (this *GameDataMgr) Init() {
//model.InitGameData()
}
func (this *GameDataMgr) Update() {
logger.Logger.Trace("(this *GameDataMgr) Update()")
//model.SaveGameData()
}
func (this *GameDataMgr) Shutdown() {
//model.SaveGameData()
//module.UnregisteModule(this)
}
func init() {
//module.RegisteModule(&GameDataMgr{}, time.Minute, 0)
}

View File

@ -1,211 +0,0 @@
package main
//
//import (
// "mongo.games.com/game/common"
// "mongo.games.com/game/proto"
// "mongo.games.com/game/protocol/gamehall"
// "mongo.games.com/goserver/core/logger"
// "mongo.games.com/goserver/core/timer"
// "math/rand"
// "strconv"
// "time"
//)
//
//var jackpotInterval = time.Hour * common.SCENE_BIGWINHISTORY_TIMEINTERVAL
//
//var JackpotListMgrSington = &JackpotListMgr{
// BigWinHistoryByGameID: make(map[int][]*gamehall.BigWinHistoryInfo),
// jackpotListHandle: make(map[int]timer.TimerHandle), // 新的爆奖记录生成
//}
//
//type JackpotListMgr struct {
// BigWinHistoryByGameID map[int][]*gamehall.BigWinHistoryInfo
// jackpotListHandle map[int]timer.TimerHandle // 新的爆奖记录生成
//}
//
//func (this *JackpotListMgr) AddJackpotList(gameid int, data *gamehall.BigWinHistoryInfo) {
// this.BigWinHistoryByGameID[gameid] = append(this.BigWinHistoryByGameID[gameid], data)
// if len(this.BigWinHistoryByGameID[gameid]) > common.SCENE_BIGWINHISTORY_MAXNUMBER {
// this.BigWinHistoryByGameID[gameid] = this.BigWinHistoryByGameID[gameid][1:]
// }
//}
//
//func (this *JackpotListMgr) GetJackpotList(gameid int) []*gamehall.BigWinHistoryInfo {
// if this.BigWinHistoryByGameID[gameid] == nil {
// this.BigWinHistoryByGameID[gameid] = make([]*gamehall.BigWinHistoryInfo, 0)
// }
// return this.BigWinHistoryByGameID[gameid]
//}
//
//func genRandTime(sec int, circleTime time.Time) time.Time {
// //随机时间间隔
// rand.Seed(time.Now().UnixNano() + int64(sec))
// interval := rand.Intn(60) + 60*sec // 分钟
// circleTime = circleTime.Add(time.Duration(-interval) * time.Minute)
// s := rand.Intn(60) //随机一个秒数
// circleTime = circleTime.Add(time.Duration(-s) * time.Second)
// return circleTime
//}
//
//func genRoomIDAndScore(gameid int) (roomID int64, score int64) {
// // 随机从房间内读取一个场数据
// var scenes = make([]*Scene, 0)
// for _, s := range SceneMgrSington.scenes {
// if s != nil && s.dbGameFree.GetGameId() == int32(gameid) {
// scenes = append(scenes, s)
// }
// }
// if len(scenes) < 1 {
// return
// }
// s := scenes[rand.Intn(len(scenes))]
// jackpot := s.dbGameFree.GetJackpot()
// roomID = int64(s.dbGameFree.GetBaseScore())
// baseScore := int64(jackpot[0]) * roomID
// score = int64(baseScore) + int64(rand.Int31n(int32(baseScore/2)))
// logger.Logger.Infof("genjackpot %v score %v roomID%v baseScore%v", jackpot[0], score, s.dbGameFree.GetBaseScore(), baseScore)
// return
//}
//
//// 生成爆奖记录
//func (this *JackpotListMgr) GenJackpot(gameid int) {
// // 首次生成初始化爆奖信息
// if len(this.BigWinHistoryByGameID[gameid]) == 0 {
// // 直接从大厅取机器人
// circleTime := time.Now()
// sec := common.SCENE_BIGWINHISTORY_LIMITNUMBER
// for _, p := range PlayerMgrSington.sidMap {
// if len(this.BigWinHistoryByGameID[gameid]) >= common.SCENE_BIGWINHISTORY_LIMITNUMBER {
// break
// }
// if p.IsRob {
// p.RobotRandName()
// genedTime := genRandTime(sec, circleTime).Unix()
// spinid := strconv.FormatInt(int64(p.SnId), 10) // 用户id转换成字符串
// baseBet, priceValue := genRoomIDAndScore(gameid)
// if baseBet == 0 || priceValue == 0 {
// return
// }
// newJackpot := &gamehall.BigWinHistoryInfo{
// SpinID: spinid,
// CreatedTime: genedTime,
// BaseBet: baseBet,
// TotalBet: baseBet,
// PriceValue: priceValue,
// UserName: p.Name,
// }
// this.AddJackpotList(gameid, newJackpot)
// sec--
// }
// }
// } else {
// lastRecord := this.BigWinHistoryByGameID[gameid][len(this.BigWinHistoryByGameID[gameid])-1] // 当中奖纪录>10条时随机时间差, 满足当前时间-最后一次爆奖记录时间 > 随机时间差 时重新生成一条记录
// lastTime := time.Unix(lastRecord.GetCreatedTime(), 0)
// genNewJackpotFlag := lastTime.Add(jackpotInterval).Before(time.Now())
// if genNewJackpotFlag {
// for _, p := range PlayerMgrSington.sidMap {
// if p.IsRob {
// p.RobotRandName()
// genedTime := time.Now().Unix()
// spinid := strconv.FormatInt(int64(p.SnId), 10) // 用户id转换成字符串
// baseBet, priceValue := genRoomIDAndScore(gameid)
// if baseBet == 0 || priceValue == 0 {
// return
// }
// newJackpot := &gamehall.BigWinHistoryInfo{
// SpinID: spinid,
// CreatedTime: genedTime,
// BaseBet: baseBet,
// TotalBet: baseBet,
// PriceValue: priceValue,
// UserName: p.Name,
// }
// this.AddJackpotList(gameid, newJackpot)
// break
// }
// }
// this.after(gameid)
// }
// }
//}
//
//// AddVirtualJackpot 添加虚拟爆奖记录(名字+用户id, 使用大厅机器人信息)
//func (this *JackpotListMgr) AddVirtualJackpot(gameid int, data *gamehall.BigWinHistoryInfo) {
// if len(PlayerMgrSington.sidMap) < 1 {
// logger.Logger.Error("AddVirtualJackpot not found robot")
// return
// }
//
// for _, p := range PlayerMgrSington.sidMap {
// if p.IsRob {
// p.RobotRandName()
// spinid := strconv.FormatInt(int64(p.SnId), 10) // 用户id转换成字符串
// data.SpinID = spinid
// data.UserName = p.Name
// this.AddJackpotList(gameid, data)
// break
// }
// }
//}
//
//func (this *JackpotListMgr) start(gameid int) {
// this.jackpotListHandle[gameid], _ = timer.StartTimer(timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool {
// this.GenJackpot(gameid)
// return true
// }), nil, jackpotInterval, 1)
//}
//
//func (this *JackpotListMgr) after(gameid int) {
// interval := jackpotInterval + time.Duration(rand.Intn(2))*time.Hour + time.Duration(rand.Intn(60))*time.Minute + time.Duration(rand.Intn(60))
// this.jackpotListHandle[gameid], _ = timer.AfterTimer(func(h timer.TimerHandle, ud interface{}) bool {
// this.GenJackpot(gameid)
//
// jackpotList := JackpotListMgrSington.GetJackpotList(gameid)
// msg := this.GetStoCMsg(jackpotList)
// logger.Logger.Infof("jackpotlist timer after gameid(%v) %v", gameid, msg)
// return true
// }, nil, interval)
//}
//
//func (this *JackpotListMgr) StopTimer(gameid int) bool {
// return timer.StopTimer(this.jackpotListHandle[gameid])
//}
//
//func (this *JackpotListMgr) ResetAfterTimer(gameid int) {
// if this.StopTimer(gameid) {
// this.after(gameid)
// }
//}
//
//func (this *JackpotListMgr) GetStoCMsg(jackpotList []*gamehall.BigWinHistoryInfo) *gamehall.SCBigWinHistory {
// pack := &gamehall.SCBigWinHistory{}
// for i := len(jackpotList) - 1; i >= 0; i-- {
// v := jackpotList[i]
// player := &gamehall.BigWinHistoryInfo{
// SpinID: proto.String(v.GetSpinID()),
// CreatedTime: proto.Int64(v.GetCreatedTime()),
// BaseBet: proto.Int64(v.GetBaseBet()),
// TotalBet: proto.Int64(v.GetTotalBet()),
// PriceValue: proto.Int64(int64(v.GetPriceValue())),
// UserName: proto.String(v.GetUserName()),
// Cards: v.GetCards(),
// }
// pack.BigWinHistory = append(pack.BigWinHistory, player)
// }
//
// //pack := &avengers.SCAvengersBigWinHistory{}
// //for i := len(jackpotList) - 1; i >= 0; i-- {
// // v := jackpotList[i]
// // player := &avengers.AvengersBigWinHistoryInfo{
// // SpinID: proto.String(v.GetSpinID()),
// // CreatedTime: proto.Int64(v.GetCreatedTime()),
// // RoomID: proto.Int64(v.GetRoomID()),
// // PriceValue: proto.Int64(int64(v.GetPriceValue())),
// // UserName: proto.String(v.GetUserName()),
// // }
// // pack.BigWinHistory = append(pack.BigWinHistory, player)
// //}
// proto.SetDefaults(pack)
// return pack
//}

View File

@ -1,121 +0,0 @@
package main
//
//import (
// "encoding/json"
// "mongo.games.com/game/common"
// "mongo.games.com/game/model"
// "mongo.games.com/game/webapi"
// "mongo.games.com/goserver/core/logger"
// "io/ioutil"
// "net/http"
// "net/url"
// "strconv"
// "time"
//)
//
//var LogicLevelMgrSington = &LogicLevelMgr{
// config: make(map[string]*LogicLevelConfig),
// client: &http.Client{Timeout: 30 * time.Second},
//}
//
//type LogicLevelMgr struct {
// config map[string]*LogicLevelConfig
// client *http.Client
//}
//type LogicLevelConfig struct {
// Platform string
// LogicLevelInfo map[int32]*LogicLevelInfo
//}
//type LogicLevelInfo struct {
// Id int32 //分层id
// ClusterName string //分层名称
// StartAct int32 //分层开关 1开启 0关闭
// CheckActIds []int32 //分层包含的活动id
// CheckPay []string //分层包含的充值类型
//}
//
//func (this *LogicLevelMgr) GetConfig(platform string) *LogicLevelConfig {
// return this.config[platform]
//}
//
//func (this *LogicLevelMgr) UpdateConfig(cfg *LogicLevelConfig) {
// logger.Logger.Trace("++++++++++++++UpdateConfig++++++++++++++")
// this.config[cfg.Platform] = cfg
//
// if playersOL, ok := PlayerMgrSington.playerOfPlatform[cfg.Platform]; ok {
// for _, player := range playersOL {
// if player != nil && !player.IsRob {
// player.layered = make(map[int]bool)
// for _, v := range player.layerlevels {
// if td, ok := cfg.LogicLevelInfo[int32(v)]; ok {
// if td.StartAct == 1 {
// for _, id := range td.CheckActIds {
// player.layered[int(id)] = true
// }
// }
// }
// }
// //player.ActStateSend2Client()
// }
// }
// }
//}
//
//type NewMsg struct {
// Platform string
// SnId int
// Levels []int
//}
//
//func (this *LogicLevelMgr) SendPostBySnIds(platform string, snids []int32) []NewMsg {
// client := this.client
// form := make(url.Values)
// form.Set("Platform", platform)
// str := ""
// for k, snid := range snids {
// str += strconv.Itoa(int(snid))
// if k+1 < len(snids) {
// str += ","
// }
// }
// form.Set("SnIds", str)
// form.Set("PltName", common.CustomConfig.GetString("PltName"))
// logicLevelUrl := common.CustomConfig.GetString("LogicLevelUrl")
// resp, err := client.PostForm(logicLevelUrl+"/QueryDataBySnIds", form)
// if resp != nil && resp.Status == "200 OK" && err == nil {
// defer resp.Body.Close()
// body, _ := io.ReadAll(resp.Body)
// logger.Logger.Trace(string(body))
// var data []NewMsg
// json.Unmarshal(body, &data)
// return data
// }
// return nil
//}
//func (this *LogicLevelMgr) LoadConfig() {
// logger.Logger.Trace("++++++++++++++LoadConfig++++++++++++++")
// type LogicLevelConfigData struct {
// Tag int
// Msg []*LogicLevelConfig
// }
// if !model.GameParamData.UseEtcd {
// logger.Logger.Trace("API_GetGradeShopConfigData")
// buff, err := webapi.API_GetLogicLevelConfigData(common.GetAppId())
// if err == nil {
// var data LogicLevelConfigData
// err = json.Unmarshal(buff, &data)
// if err == nil && data.Tag == 0 {
// for _, cfg := range data.Msg {
// this.UpdateConfig(cfg)
// }
// } else {
// logger.Logger.Error("Unmarshal LogicLevelConfigData config data error:", err, string(buff))
// }
// } else {
// logger.Logger.Error("Get LogicLevelConfigData config data error:", err)
// }
// } else {
// EtcdMgrSington.InitLogicLevelConfig()
// }
//}

View File

@ -249,14 +249,14 @@ func (this *PetMgr) GetPetInfo(p *Player, modId int32) *pets.PetInfo {
// 皮肤
func (this *PetMgr) GetSkinInfos(p *Player) []*pets.SkinInfo {
var ret []*pets.SkinInfo
for _, v := range srvdata.PBDB_SkinMgr.Datas.GetArr() {
for _, v := range PlatformMgrSingleton.GetConfig(p.Platform).SkinConfig.GetItems() {
ret = append(ret, this.GetSkinInfo(p, v.GetId()))
}
return ret
}
func (this *PetMgr) GetSkinInfo(p *Player, id int32) *pets.SkinInfo {
cfg := srvdata.PBDB_SkinMgr.GetData(id)
cfg := PlatformMgrSingleton.GetSkinInfo(p.Platform, id)
if cfg == nil {
return nil
}
@ -264,18 +264,23 @@ func (this *PetMgr) GetSkinInfo(p *Player, id int32) *pets.SkinInfo {
bag := BagMgrSingleton.GetBagInfo(p.SnId)
level := p.Skin.ModUnlock[id]
var unLockCost, cost, have []*pets.Item
for k, v := range cfg.GetUnlockItem() {
var needVip int32
for k, v := range cfg.GetUnlockParam() {
unLockCost = append(unLockCost, &pets.Item{
Id: int32(k),
Id: k,
N: v,
})
needVip = k
}
if level == 0 {
cost = unLockCost
if cfg.GetUnlockType() == common.SkinGetVip {
cost = cost[:0]
}
} else {
for k, v := range srvdata.RolePetMgrSington.GetSkinBySkinIdAndLevel(id, level).GetUpItem() {
for k, v := range PlatformMgrSingleton.GetSkinLevel(p.Platform, id, level+1).GetUpItem() {
cost = append(cost, &pets.Item{
Id: int32(k),
Id: k,
N: v,
})
}
@ -296,18 +301,88 @@ func (this *PetMgr) GetSkinInfo(p *Player, id int32) *pets.SkinInfo {
use := unLock && p.Skin.ModId == id
ret := &pets.SkinInfo{
Id: id,
Level: level,
MaxLevel: srvdata.RolePetMgrSington.GetSkinMaxLevel(cfg.GetId()),
Cost: cost,
Have: have,
IsUsing: use,
IsUnlock: unLock,
Id: id,
Level: level,
MaxLevel: PlatformMgrSingleton.GetSkinMaxLevel(p.Platform, id),
Cost: cost,
Have: have,
IsUsing: use,
IsUnlock: unLock,
IsUpgrade: cfg.GetIsUpgrade() == 1,
SkillType: cfg.GetSkillType(),
UnLockType: cfg.GetUnlockType(),
}
if cfg.GetUnlockType() == common.SkinGetVip {
ret.NeedVip = needVip
}
curLevel := PlatformMgrSingleton.GetSkinLevel(p.Platform, id, level)
nextLevel := PlatformMgrSingleton.GetSkinLevel(p.Platform, id, level+1)
if curLevel != nil {
ret.SkillId = curLevel.GetSkillId()
}
if nextLevel != nil {
ret.SkillId = nextLevel.GetSkillId()
}
if curLevel != nil {
ret.SkillLevel = curLevel.GetSkillLevel()
ret.SkillValue = curLevel.GetSkillValue()
}
ret.SkillMaxLevel = PlatformMgrSingleton.GetSkinSkillMaxLevel(p.Platform, id)
if nextLevel != nil {
ret.SkillNextLevel = nextLevel.GetSkillLevel()
ret.SkillNextValue = nextLevel.GetSkillValue()
}
return ret
}
func (this *PetMgr) CheckSkinRed(p *Player) {
if p == nil || p.IsRob {
return
}
for _, v := range PlatformMgrSingleton.GetConfig(p.Platform).SkinConfig.GetItems() {
if v == nil {
continue
}
info := this.GetSkinInfo(p, v.Id)
// 解锁
if !info.GetIsUnlock() {
ok := true
for _, v := range info.GetCost() {
item := BagMgrSingleton.GetItem(p.SnId, v.GetId())
if item == nil || item.ItemNum < v.GetN() {
ok = false
break
}
}
if ok && len(info.GetCost()) > 0 {
p.SendShowRed(hall_proto.ShowRedCode_Skin, v.Id, 1)
continue
}
// vip等级解锁
if info.GetUnLockType() == common.SkinGetVip && p.VIP >= info.GetNeedVip() {
p.SendShowRed(hall_proto.ShowRedCode_Skin, v.Id, 1)
continue
}
}
// 升级
if info.GetIsUnlock() && info.GetLevel() < info.GetMaxLevel() && info.GetIsUpgrade() {
ok := true
for _, v := range info.GetCost() {
item := BagMgrSingleton.GetItem(p.SnId, v.GetId())
if item == nil || item.ItemNum < v.GetN() {
ok = false
break
}
}
if ok && len(info.GetCost()) > 0 {
p.SendShowRed(hall_proto.ShowRedCode_Skin, v.Id, 1)
continue
}
}
}
}
// 商品人物总加成 人物功能变动需要修改
func (this *PetMgr) GetShopAward(shopInfo *model.ShopInfo, p *Player) (award, roleId int32) {
if shopInfo.Ad > 0 && shopInfo.Type == ShopTypeCoin {
@ -351,7 +426,7 @@ func (this *PetMgr) GetIntroductionByModId(modId int32) *RoleAndPetInfo {
}
}
func (this *PetMgr) CheckShowRed(p *Player) {
if p == nil {
if p == nil || p.IsRob {
return
}
var roleRed, petRed bool

View File

@ -339,11 +339,11 @@ func (this *Player) OnLogined() {
this.RandRobotExData()
this.SendJackPotInit()
this.GetPayGoodsInfo()
if !this.IsRob {
this.SendJackPotInit()
this.GetPayGoodsInfo()
PlayerOnlineSington.Check = true
this.LoadMessage(tLastLogout.Unix(), isFirstLogin, !inSameWeek)
@ -429,17 +429,14 @@ func (this *Player) OnRehold() {
FriendMgrSington.ApplyList(this.Platform, this.SnId)
FriendUnreadMgrSington.CheckSendFriendUnreadData(this.Platform, this.SnId)
this.CheckShowRed()
this.SendJackPotInit()
this.GetPayGoodsInfo()
RankMgrSingleton.CheckShowRed(this.SnId)
if !this.IsRob {
this.SendJackPotInit()
PlayerOnlineSington.Check = true
this.GetPayGoodsInfo()
this.CheckShowRed()
// 记录重连日志
logState := LoginStateMgrSington.GetLoginStateBySid(this.sid)
var clog *model.ClientLoginInfo
@ -455,16 +452,18 @@ func (this *Player) OnRehold() {
}
func (this *Player) CheckShowRed() {
// 邮件红点
this.MessageShowRed()
//商城红点
ShopMgrSington.ShopCheckShowRed(this)
//数据依赖于背包数据 放入加载背包数据之后执行
PetMgrSington.CheckShowRed(this)
// 皮肤红点
PetMgrSington.CheckSkinRed(this)
//福利红点
WelfareMgrSington.WelfareShowRed(this)
// 排行赛红点
RankMgrSingleton.CheckShowRed(this.SnId)
}
// 为了worldsrv和gamesrv上机器人信息一致
@ -3175,6 +3174,41 @@ func (this *Player) RobRandVip() {
this.Head = rand.Int31n(common.HeadRange)
//0:男 1:女
this.Sex = (this.Head%2 + 1) % 2
// 随机皮肤
skinFunc := func(i int) {
total := 0
for _, v := range common.SkinRandom[:i] {
total += common.SkinWeightMap[v]
}
r := common.RandInt(total)
n := common.SkinWeightMap[common.SkinRandom[0]]
for k, v := range common.SkinRandom[:i] {
if r < n {
this.Skin.ModId = v
if this.Skin.ModUnlock[v] == 0 {
this.Skin.ModUnlock[v] = 1
if this.Skin.Mod[v] == nil {
this.Skin.Mod[v] = &model.ModEx{}
}
this.Skin.Mod[v].Ts = time.Now().Unix()
}
break
}
if k+1 < len(common.SkinRandom) {
n += common.SkinWeightMap[common.SkinRandom[k+1]]
}
}
}
switch {
case this.VIP >= 1:
skinFunc(5)
case this.VIP >= 2:
skinFunc(6)
case this.VIP >= 5:
skinFunc(7)
default:
skinFunc(4)
}
}
}
@ -3722,7 +3756,6 @@ func (this *Player) SCVIPInfo() {
VipId: cfg.VipId,
VipEx: cfg.VipEx,
Price: cfg.Price,
Privilege1: cfg.Privilege1,
Privilege2: cfg.Privilege2,
Privilege3: cfg.Privilege3,
Privilege4: cfg.Privilege4,
@ -3733,8 +3766,17 @@ func (this *Player) SCVIPInfo() {
LineId: cfg.RewardOutlineID,
ShopId2: cfg.ShopId2,
ShopId7: cfg.ShopId7,
MatchFreeTimes: cfg.MatchFreeTimes,
MatchFreeTimes: cfg.MatchFreeTimes + this.GetSkillAdd(common.SkillIdVipTimes),
}
money := cfg.Privilege1[0]
// 皮肤技能加成
add := this.GetSkillAdd(common.SkillIdVipGift)
if add > 0 {
money += int32((float64(money) * float64(add)) / 100.00)
}
data.Privilege1 = make([]int32, len(cfg.Privilege1))
copy(data.Privilege1, cfg.Privilege1)
data.Privilege1[0] = money
for itemId, itemNum := range cfg.Award {
data.Item = append(data.Item, &playerproto.ItemInfo{
ItemId: int32(itemId),
@ -3768,6 +3810,7 @@ func (this *Player) SCVIPInfo() {
//pack.VipId = append(pack.VipId, this.WelfData.VIPGift...)
}
this.SendToClient(int(playerproto.PlayerPacketID_PACKET_SC_VIPINFO), pack)
logger.Logger.Tracef("send vipinfo to client:%v", pack)
}
func (this *Player) GetVIPExpByPay(payTotal int32) int32 {
vips := VipMgrSington.GetVIPcfg(this.Platform)
@ -3804,6 +3847,11 @@ func (this *Player) VIPDraw(id int32) {
this.WelfData.VIPBag[this.VIP][0] = 1
//金币数量
money := data.Privilege1[0]
// 皮肤技能加成
add := this.GetSkillAdd(common.SkillIdVipGift)
if add > 0 {
money += int32((float64(money) * float64(add)) / 100.00)
}
//vip经验
addVipExp := int64(float64(data.Privilege1[1]) / vips.MoneyRatio)
this.AddCoin(int64(money), 0, common.GainWay_VIPGift, "sys", "VIP每日礼包")
@ -4800,10 +4848,16 @@ func (this *Player) SCItems() {
// AutoSkinUnlock 自动解锁皮肤
func (this *Player) AutoSkinUnlock() {
for _, v := range srvdata.PBDB_SkinMgr.Datas.GetArr() {
for _, v := range PlatformMgrSingleton.GetConfig(this.Platform).SkinConfig.GetItems() {
if v.GetUnlockType() != common.SkinGetAuto {
continue
}
SkinUnLock(this, v.GetId())
}
}
// GetSkillAdd 获取技能加成
// id 技能id
func (this *Player) GetSkillAdd(id int32) int32 {
return this.GetSkillAdd2(id, PlatformMgrSingleton.ConfigMgr)
}

View File

@ -643,6 +643,8 @@ func (r *RankMatchMgr) InterestClockEvent() int {
func (r *RankMatchMgr) OnDayTimer() {
logger.Logger.Info("(this *RankMatchMgr) OnDayTimer")
//排行榜发奖
//r.RankAward()
for _, platform := range PlatformMgrSingleton.GetPlatforms() {
if platform.IdStr == DefaultPlatform {
continue
@ -702,6 +704,190 @@ func (r *RankMatchMgr) Callback(player any, ret *internal.PlayerLoadReplay) {
}
}
// 排行榜发奖
func (r *RankMatchMgr) RankAward() {
logger.Logger.Trace("排行榜开始发奖!!!!")
for _, v := range PlatformMgrSingleton.GetPlatforms() {
platform := v.IdStr
rankConfig := PlatformMgrSingleton.GetConfig(platform).RankTypeConfig
if rankConfig == nil {
continue
}
for _, info := range rankConfig.Info {
if info.TurnOff == 0 {
continue
}
now := time.Now()
//获取排行榜数据 进行发奖
if info.RankType == 2 {
//判断是不是周一
if now.Weekday() != time.Monday {
continue
}
}
if info.RankType == 3 {
//判断是不是每月1号
if now.Day() != 1 {
continue
}
}
rankAward := info.Award
if rankAward == nil {
continue
}
var players []*model.PlayerBaseInfo
if info.RankType == model.RankType_Coin {
list, err := model.FindPlayerCoinList(&model.FindPlayerCoinListArgs{
Platform: platform,
})
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
for _, vv := range list.List {
player := PlayerMgrSington.GetPlayerBySnId(vv.SnId)
if player != nil {
players = append(players, &model.PlayerBaseInfo{
SnId: player.SnId,
LastChannel: player.LastChannel,
})
} else {
baseInfo := model.GetPlayerBaseInfo(platform, vv.SnId)
players = append(players, baseInfo)
}
}
return nil
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
if err != nil {
logger.Logger.Errorf("RankMatchMgr OnDayTimer FindPlayerPermitList err:%v", err)
return
}
rankId := int32(1)
for k, player := range players {
if player == nil {
logger.Logger.Errorf("RankMatchMgr OnDayTimer FindPlayerPermitList player is nil %v", list.List[k].SnId)
continue
}
var items []int32
for _, award := range rankAward {
if award.RankLevelId == rankId {
for _, itemInfo := range award.Item {
items = append(items, itemInfo.ItemId)
items = append(items, int32(itemInfo.ItemNum))
}
break
}
}
if len(items) == 0 {
break
}
// 发邮件
var newMsg *model.Message
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
title := i18n.Tr("languages", "PermitAwardTitle")
content := i18n.Tr("languages", "PermitAward", []int{int(rankId), int(rankId), int(rankId), int(rankId)})
newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD,
title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil)
err := model.InsertMessage(platform, newMsg)
if err != nil {
logger.Logger.Errorf("发送邮件失败 snid:%v err:%v", player.SnId, err)
return err
}
return nil
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
p := PlayerMgrSington.GetPlayerBySnId(player.SnId)
if p != nil {
p.AddMessage(newMsg)
}
})).Start()
rankId += 1
}
})).StartByExecutor("PlayerCoin_Award")
} else if info.RankType == model.RankType_WinCoin {
//从数据库读取前一天的数据
startTime, endTime := StartEndTs()
logger.Logger.Tracef("-----------------排行榜发奖 startTime = %d, endTime = %d------------------", startTime, endTime)
ret, err := model.FindWinCoinListTienlen(&model.FindWinCoinListArgs{
Platform: platform,
StartTs: startTime,
EndTs: endTime,
})
if err != nil {
return
}
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
for _, vv := range ret.List {
player := PlayerMgrSington.GetPlayerBySnId(vv.SnId)
if player != nil {
players = append(players, &model.PlayerBaseInfo{
SnId: player.SnId,
LastChannel: player.LastChannel,
})
} else {
baseInfo := model.GetPlayerBaseInfo(platform, vv.SnId)
players = append(players, baseInfo)
}
}
return nil
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
if err != nil {
logger.Logger.Errorf("RankMatchMgr OnDayTimer FindWinCoinListTienlen err:%v", err)
return
}
rankId := int32(1)
for k, player := range players {
if player == nil {
logger.Logger.Errorf("RankMatchMgr OnDayTimer FindWinCoinListTienlen player is nil %v", ret.List[k].SnId)
continue
}
var items []int32
for _, award := range rankAward {
if award.RankLevelId == rankId {
for _, itemInfo := range award.Item {
items = append(items, itemInfo.ItemId)
items = append(items, int32(itemInfo.ItemNum))
}
break
}
}
if len(items) == 0 {
break
}
// 发邮件
var newMsg *model.Message
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
title := i18n.Tr("languages", "PermitAwardTitle")
content := i18n.Tr("languages", "PermitAward", []int{int(rankId), int(rankId), int(rankId), int(rankId)})
newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD,
title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil)
err := model.InsertMessage(platform, newMsg)
if err != nil {
logger.Logger.Errorf("发送邮件失败 snid:%v err:%v", player.SnId, err)
return err
}
return nil
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
p := PlayerMgrSington.GetPlayerBySnId(player.SnId)
if p != nil {
p.AddMessage(newMsg)
}
})).Start()
rankId += 1
}
})).StartByExecutor("WinCoin_Award")
}
}
}
}
func StartEndTs() (startTs int64, endTs int64) {
now := time.Now()
year, month, day := now.Date()
lastTs := time.Date(year, month, day, model.GameParamData.WinCoinUpdateTime, 0, 0, 0, now.Location())
if now.Before(lastTs) {
lastTs = lastTs.AddDate(0, 0, -1)
}
endTs = lastTs.Unix()
return endTs - 24*int64(time.Hour.Seconds()), endTs
}
func (r *RankMatchMgr) LoadAfter(platform string, snid int32) *internal.PlayerLoadReplay {
return nil
}

View File

@ -5,6 +5,7 @@ import (
"fmt"
"math/rand"
"mongo.games.com/game/protocol/bag"
"mongo.games.com/game/srvdata"
"slices"
"time"
@ -909,6 +910,39 @@ func (this *ShopMgr) Exchange(p *Player, goodsId int32, username, mobile, commen
//dbShop
if as.Tag == webapi_proto.TagCode_SUCCESS {
pack.RetCode = shop.OpResultCode_OPRC_Sucess
//兑换话费成功记录一下
if cdata.TelCharge > 0 {
item := srvdata.GameItemMgr.Get(p.Platform, cdata.ItemId)
//已兑换记录
AwardLogMgr.UpdateAwardLog(p.Platform, item.Id, int64(1))
awardLog := model.AnnouncerLog{
Platform: p.Platform,
Snid: p.SnId,
Name: p.Name,
Phone: p.Tel,
ItemId: item.Id, //获得物品ID
TypeId: int32(1),
}
AwardLogMgr.UpdateAnnouncerLog(awardLog)
}
if giveType != 1 {
if cdata.ItemId != 0 {
item := srvdata.GameItemMgr.Get(p.Platform, cdata.ItemId)
if item.Type == common.ItemTypeObjective {
//已兑换记录
AwardLogMgr.UpdateAwardLog(p.Platform, item.Id, int64(1))
awardLog := model.AnnouncerLog{
Platform: p.Platform,
Snid: p.SnId,
Name: p.Name,
Phone: p.Tel,
ItemId: item.Id, //获得物品ID
TypeId: int32(2),
}
AwardLogMgr.UpdateAnnouncerLog(awardLog)
}
}
}
} else {
if as.GetReturnCPO() != nil {
switch as.ReturnCPO.Err {
@ -1239,18 +1273,24 @@ func (this *ShopMgr) SendAPICreateOrder(p *Player, ConfigPayId int32, data any,
return webapi.API_CreateOrder(common.GetAppId(), dbShop.LogId.Hex(), ConfigPayId, p.SnId, 0, p.Platform, p.PackageID, p.DeviceOS,
p.DeviceId, bbd.Name, amount, int32(bbd.Price2), nil, "", p.Channel, p.ChannelId)
} else if wfs, ok := data.(*webapi_proto.WelfareSpree); ok {
var items []model.ItemInfo
for _, it := range wfs.Item {
if it.Type == 1 {
amount[0] = it.Grade
} else if it.Type == 2 {
amount[1] = it.Grade
} else if it.Type == 3 {
items = append(items, model.ItemInfo{
ItemId: it.Item_Id,
ItemNum: int64(it.Grade),
})
}
}
var gainWay int32 = common.GainWay_ActFirstPay
if remark == "ContinuousPay" {
gainWay = common.GainWay_ActContinuousPay
}
dbShop = this.NewDbShop(p, 0, amount[:], ShopConsumeMoney, int32(wfs.Price2), gainWay, nil, 0, "", 0, remark, []int32{wfs.Day})
dbShop = this.NewDbShop(p, 0, amount[:], ShopConsumeMoney, int32(wfs.Price2), gainWay, items, 0, "", 0, remark, []int32{wfs.Day})
err := model.InsertDbShopLog(dbShop)
if err != nil {
logger.Logger.Errorf("model.InsertDbShopLog err:", err)

View File

@ -229,6 +229,37 @@ func (t *TaskHandle) AllTask(id int, data any) {
}
}
func OnNotifyChange(p *Player, activityType int32) {
add := p.GetSkillAdd(common.SkillIdTask)
var l []*taskproto.TaskData
for _, v := range srvdata.TaskMgr.GetActivityType(activityType) {
if !IsTaskReward(p, v.Id) {
// 皮肤技能每日任务金币加成
item := &taskproto.TaskData{
Id: v.Id,
N: GetTaskTimes(p, v.Id),
TargetN: v.GetTargetTimes(),
Status: 0,
Reward: make(map[int64]int64),
TaskType: v.GetTaskType(),
}
for k, vv := range v.GetAward() {
if v.GetActivityType() == common.TaskActivityTypeEveryDay && add > 0 && k == common.ItemIDCoin {
vv += int64((float64(vv) * float64(add)) / 100.0)
}
item.Reward[k] = vv
}
l = append(l, item)
}
}
pack := &taskproto.SCTaskChange{
Tp: activityType,
List: l,
}
p.SendToClient(int(taskproto.TaskPacketID_PACKET_SCTaskChange), pack)
logger.Logger.Tracef("SCTaskChange %v", pack)
}
func init() {
taskHandle := new(TaskHandle)
TaskSubjectSingleton.Attach(common.TaskTypeAdv, taskHandle)

View File

@ -291,11 +291,11 @@ func (tm *TmMatch) RobotGradesDecline(round int) {
}
}
}
//logger.Logger.Tracef("======积分衰减======当前第 %v 轮============", round)
//for i, infos := range tm.robotGrades {
// logger.Logger.Tracef(">>>积分历史>>> 第 %v 轮", i)
// for _, info := range infos {
// logger.Logger.Trace("Snid: ", info.copySnid, " grade: ", info.grade, " copyLv: ", info.copyLv, " copyRoleId: ", info.copyRoleId)
// }
//}
logger.Logger.Tracef("======积分衰减======当前第 %v 轮============", round)
for i, infos := range tm.robotGrades {
logger.Logger.Tracef(">>>积分历史>>> 第 %v 轮", i)
for _, info := range infos {
logger.Logger.Trace("Snid: ", info.copySnid, " grade: ", info.grade, " copyLv: ", info.copyLv, " copyRoleId: ", info.copyRoleId)
}
}
}

View File

@ -435,7 +435,8 @@ func (this *Tournament) signUpCost(p *Player, tmId int32, cost bool) (bool, int3
// VIP比赛场
if gmd.MatchType == MatchTypeVIP {
freeTimes := p.GetMatchFreeTimes() // VIP比赛场免费次数
freeTimes := p.GetMatchFreeTimes() // VIP比赛场免费次数
freeTimes += p.GetSkillAdd(common.SkillIdVipTimes) // 皮肤技能加成次数
logger.Logger.Trace("报名费用免费次数: freeTimes: ", freeTimes, " p.VipMatchTimes: ", p.VipMatchTimes)
if freeTimes > 0 {
if cost {
@ -1279,6 +1280,17 @@ func (this *Tournament) sendPromotionInfo(mc *PlayerMatchContext, sortId int64,
p := PlayerMgrSington.GetPlayerBySnId(mc.p.SnId)
if p != nil {
p.AddMessage(newMsg)
//比赛场记录话费产出log
awardLog := model.AnnouncerLog{
Platform: p.Platform,
Snid: p.SnId,
Name: p.Name,
Phone: p.Tel,
ItemId: data.Id, //获得物品ID
TypeId: int32(1),
}
AwardLogMgr.UpdateAnnouncerLog(awardLog)
AwardLogMgr.UpdateAwardLog(p.Platform, item.ItemId, 1)
}
}), fmt.Sprintf("RankAward%d", mc.p.SnId)).Start()
}

View File

@ -219,6 +219,9 @@ func (this *WelfareMgr) UpdatePhoneLotteryStatus(cfg *webapi_proto.WelfarePhoneL
func (this *WelfareMgr) UpdateDiamondLotteryConfig(cfg *webapi_proto.DiamondLotteryConfig) {
info := this.GetConfig(cfg.Platform)
info.DiamondLotteryConfig = cfg
for _, v := range info.DiamondLotteryConfig.GetLotteryData() {
v.MaxScore *= 100
}
}
func (this *WelfareMgr) GetPhoneLotteryStatus(platform string) int32 {

Binary file not shown.

Binary file not shown.

Binary file not shown.