Merge branch 'dev' of http://git.legu.cc/liwei_3d/go_dreamfactory into meixiongfeng

This commit is contained in:
meixiongfeng 2023-04-21 19:11:05 +08:00
commit 88881e2527
80 changed files with 8300 additions and 1292 deletions

View File

@ -0,0 +1,102 @@
[
{
"num": 1,
"type": 1,
"stime": "碰撞障碍时",
"broadcast": {
"key": "itemname_30001",
"text": "这招太狠了,希望没有人受伤"
},
"icon": ""
},
{
"num": 2,
"type": 1,
"stime": "碰撞障碍时",
"broadcast": {
"key": "itemname_30001",
"text": "这招太狠了,希望没有人受伤"
},
"icon": ""
},
{
"num": 3,
"type": 2,
"stime": "闪避障碍时",
"broadcast": {
"key": "itemname_30002",
"text": "大放异彩!"
},
"icon": ""
},
{
"num": 4,
"type": 3,
"stime": "射门成功",
"broadcast": {
"key": "itemname_30003",
"text": "完美的配合!"
},
"icon": ""
},
{
"num": 5,
"type": 4,
"stime": "射门失败",
"broadcast": {
"key": "itemname_30004",
"text": "这招太狠了,希望没有人受伤"
},
"icon": ""
},
{
"num": 6,
"type": 5,
"stime": "使用药剂",
"broadcast": {
"key": "itemname_30005",
"text": "大放异彩!"
},
"icon": ""
},
{
"num": 7,
"type": 6,
"stime": "团队冲刺",
"broadcast": {
"key": "itemname_50001",
"text": "完美的配合!"
},
"icon": ""
},
{
"num": 8,
"type": 7,
"stime": "死亡",
"broadcast": {
"key": "itemname_50001",
"text": "这招太狠了,希望没有人受伤"
},
"icon": ""
},
{
"num": 9,
"type": 8,
"stime": "使用道具",
"broadcast": {
"key": "itemname_50001",
"text": "大放异彩!"
},
"icon": ""
},
{
"num": 10,
"type": 9,
"stime": "射门时",
"broadcast": {
"key": "itemname_50001",
"text": "完美的配合!"
},
"icon": ""
}
]

View File

@ -0,0 +1,22 @@
[
{
"num": 1,
"distance": "1",
"value": 8
},
{
"num": 2,
"distance": "2",
"value": 6
},
{
"num": 3,
"distance": "3",
"value": 4
},
{
"num": 4,
"distance": "4",
"value": 2
}
]

View File

@ -0,0 +1,32 @@
[
{
"num": 1,
"score": "c",
"value": 10
},
{
"num": 2,
"score": "b",
"value": 20
},
{
"num": 3,
"score": "a",
"value": 50
},
{
"num": 4,
"score": "s",
"value": 80
},
{
"num": 5,
"score": "ss",
"value": 100
},
{
"num": 6,
"score": "sss",
"value": 120
}
]

View File

@ -0,0 +1,38 @@
[
{
"num": "20030001",
"stime": 100,
"etime": 120,
"hp": 7,
"model": "",
"point": "",
"moderate": 0,
"sprint": 0,
"acceleration": 0,
"deceleration": 0
},
{
"num": "20030002",
"stime": 100,
"etime": 120,
"hp": 5,
"model": "",
"point": "",
"moderate": 0,
"sprint": 0,
"acceleration": 0,
"deceleration": 0
},
{
"num": "20030003",
"stime": 100,
"etime": 120,
"hp": 5,
"model": "",
"point": "",
"moderate": 0,
"sprint": 0,
"acceleration": 0,
"deceleration": 0
}
]

View File

@ -0,0 +1,170 @@
[
{
"num": 1,
"shtime": 0,
"smtime": 30,
"ehtime": 0,
"emtime": 50
},
{
"num": 2,
"shtime": 1,
"smtime": 30,
"ehtime": 1,
"emtime": 50
},
{
"num": 3,
"shtime": 2,
"smtime": 30,
"ehtime": 2,
"emtime": 50
},
{
"num": 4,
"shtime": 3,
"smtime": 30,
"ehtime": 3,
"emtime": 50
},
{
"num": 5,
"shtime": 4,
"smtime": 30,
"ehtime": 4,
"emtime": 50
},
{
"num": 6,
"shtime": 5,
"smtime": 30,
"ehtime": 5,
"emtime": 50
},
{
"num": 7,
"shtime": 6,
"smtime": 30,
"ehtime": 6,
"emtime": 50
},
{
"num": 8,
"shtime": 7,
"smtime": 30,
"ehtime": 7,
"emtime": 50
},
{
"num": 9,
"shtime": 8,
"smtime": 30,
"ehtime": 8,
"emtime": 50
},
{
"num": 10,
"shtime": 9,
"smtime": 30,
"ehtime": 9,
"emtime": 50
},
{
"num": 11,
"shtime": 10,
"smtime": 30,
"ehtime": 10,
"emtime": 50
},
{
"num": 12,
"shtime": 11,
"smtime": 30,
"ehtime": 11,
"emtime": 50
},
{
"num": 13,
"shtime": 12,
"smtime": 30,
"ehtime": 12,
"emtime": 50
},
{
"num": 14,
"shtime": 13,
"smtime": 30,
"ehtime": 13,
"emtime": 50
},
{
"num": 15,
"shtime": 14,
"smtime": 30,
"ehtime": 14,
"emtime": 50
},
{
"num": 16,
"shtime": 15,
"smtime": 30,
"ehtime": 15,
"emtime": 50
},
{
"num": 17,
"shtime": 16,
"smtime": 30,
"ehtime": 16,
"emtime": 50
},
{
"num": 18,
"shtime": 17,
"smtime": 30,
"ehtime": 17,
"emtime": 50
},
{
"num": 19,
"shtime": 18,
"smtime": 30,
"ehtime": 18,
"emtime": 50
},
{
"num": 20,
"shtime": 19,
"smtime": 30,
"ehtime": 19,
"emtime": 50
},
{
"num": 21,
"shtime": 20,
"smtime": 30,
"ehtime": 20,
"emtime": 50
},
{
"num": 22,
"shtime": 21,
"smtime": 30,
"ehtime": 21,
"emtime": 50
},
{
"num": 23,
"shtime": 22,
"smtime": 30,
"ehtime": 22,
"emtime": 50
},
{
"num": 24,
"shtime": 23,
"smtime": 30,
"ehtime": 23,
"emtime": 50
}
]

View File

@ -0,0 +1,67 @@
[
{
"key": 1,
"schedule": 20,
"reword": [
{
"a": "attr",
"t": "diamond",
"n": 5
}
]
},
{
"key": 2,
"schedule": 40,
"reword": [
{
"a": "attr",
"t": "gold",
"n": 10000
}
]
},
{
"key": 3,
"schedule": 60,
"reword": [
{
"a": "attr",
"t": "diamond",
"n": 10
}
]
},
{
"key": 4,
"schedule": 80,
"reword": [
{
"a": "attr",
"t": "diamond",
"n": 10
},
{
"a": "attr",
"t": "gold",
"n": 20000
}
]
},
{
"key": 5,
"schedule": 100,
"reword": [
{
"a": "item",
"t": "30001",
"n": 1
},
{
"a": "attr",
"t": "gold",
"n": 50000
}
]
}
]

View File

@ -716,6 +716,7 @@
"n": 1000
}
],
<<<<<<< HEAD
"buzkashi_resurrection": 10,
"favorability_attenuation": [
{
@ -731,5 +732,8 @@
"v": 500
}
]
=======
"buzkashi_resurrection": 10
>>>>>>> 2ff92487cf513d980124f84c7fe3db1e6bb88e31
}
]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,377 @@
[
{
"Id": 1,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_1",
"text": "充值"
},
"npcName": "功能入口-充值",
"functionicon": ""
},
{
"Id": 2,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_2",
"text": "商人"
},
"npcName": "功能入口-商人",
"functionicon": ""
},
{
"Id": 3,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_3",
"text": "任务"
},
"npcName": "功能入口-任务",
"functionicon": ""
},
{
"Id": 4,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_4",
"text": "公告"
},
"npcName": "功能入口-公告",
"functionicon": ""
},
{
"Id": 5,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_5",
"text": "邮件"
},
"npcName": "功能入口-邮件",
"functionicon": ""
},
{
"Id": 6,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_6",
"text": "主线关卡"
},
"npcName": "功能入口-主线",
"functionicon": ""
},
{
"Id": 7,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_7",
"text": "维京远征"
},
"npcName": "功能入口-维京远征",
"functionicon": ""
},
{
"Id": 8,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_8",
"text": "捕羊大赛"
},
"npcName": "功能入口-捕羊大赛",
"functionicon": ""
},
{
"Id": 9,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_9",
"text": "狩猎"
},
"npcName": "功能入口-狩猎",
"functionicon": ""
},
{
"Id": 10,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_10",
"text": "旧时光"
},
"npcName": "功能入口-剧情副本",
"functionicon": ""
},
{
"Id": 11,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_11",
"text": "竞技场"
},
"npcName": "功能入口-竞技场",
"functionicon": ""
},
{
"Id": 12,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_12",
"text": "招募"
},
"npcName": "功能入口-招募",
"functionicon": ""
},
{
"Id": 13,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_13",
"text": "签到"
},
"npcName": "功能入口-签到",
"functionicon": ""
},
{
"Id": 14,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_14",
"text": "魔药"
},
"npcName": "功能入口-魔药",
"functionicon": ""
},
{
"Id": 15,
"scene": "GameMain",
"scenename": {
"key": "navigationscenename_1",
"text": "中轴城"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_15",
"text": "烹饪"
},
"npcName": "功能入口-烹饪",
"functionicon": ""
},
{
"Id": 16,
"scene": "SmithyScene",
"scenename": {
"key": "navigationscenename_2",
"text": "铁匠铺"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_16",
"text": "打造"
},
"npcName": "打造",
"functionicon": ""
},
{
"Id": 17,
"scene": "SmithyScene",
"scenename": {
"key": "navigationscenename_2",
"text": "铁匠铺"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_17",
"text": "锻造炉"
},
"npcName": "锻造炉",
"functionicon": ""
},
{
"Id": 18,
"scene": "SmithyScene",
"scenename": {
"key": "navigationscenename_2",
"text": "铁匠铺"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_18",
"text": "手册台"
},
"npcName": "手册台",
"functionicon": ""
},
{
"Id": 19,
"scene": "WuGuanScene",
"scenename": {
"key": "navigationscenename_3",
"text": "熊猫武馆"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_19",
"text": "总教习"
},
"npcName": "总教习",
"functionicon": ""
},
{
"Id": 20,
"scene": "WuGuanScene",
"scenename": {
"key": "navigationscenename_3",
"text": "熊猫武馆"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_20",
"text": "阿宝"
},
"npcName": "阿宝",
"functionicon": ""
},
{
"Id": 21,
"scene": "WuGuanScene",
"scenename": {
"key": "navigationscenename_3",
"text": "熊猫武馆"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_21",
"text": "告示板"
},
"npcName": "告示板",
"functionicon": ""
},
{
"Id": 22,
"scene": "WuGuanScene",
"scenename": {
"key": "navigationscenename_3",
"text": "熊猫武馆"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_22",
"text": "木桩1"
},
"npcName": "木桩1",
"functionicon": ""
},
{
"Id": 23,
"scene": "WuGuanScene",
"scenename": {
"key": "navigationscenename_3",
"text": "熊猫武馆"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_23",
"text": "木桩2"
},
"npcName": "木桩2",
"functionicon": ""
},
{
"Id": 24,
"scene": "WuGuanScene",
"scenename": {
"key": "navigationscenename_3",
"text": "熊猫武馆"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_24",
"text": "木桩3"
},
"npcName": "木桩3",
"functionicon": ""
},
{
"Id": 25,
"scene": "WuGuanScene",
"scenename": {
"key": "navigationscenename_3",
"text": "熊猫武馆"
},
"sceneicon": "",
"functionname": {
"key": "navigation_functionname_25",
"text": "木桩4"
},
"npcName": "木桩4",
"functionicon": ""
}
]

View File

@ -52,7 +52,9 @@
"key": "skill_1250041111",
"text": "对敌方1个目标造成3次攻击力30%的伤害有40%概率为自身附加2回合【免疫】状态"
},
"buffid": [],
"buffid": [
390001111
],
"map": ""
},
{
@ -222,7 +224,9 @@
"key": "skill_1250042111",
"text": "清除我方所有减益状态并平均分配我方生命值为我方全体附加2回合【攻击提升】状态"
},
"buffid": [],
"buffid": [
390001001
],
"map": ""
},
{
@ -310,7 +314,9 @@
"key": "skill_1250043111",
"text": "进入2回合【喜悦】状态使我方全体收到伤害降低25%且在每个队友行动前为其驱散1个减益状态并回复其最大生命值20%的生命,效果持续期间自身无法行动"
},
"buffid": [],
"buffid": [
390001208
],
"map": ""
},
{
@ -479,7 +485,9 @@
"key": "skill_1350021111",
"text": "攻击一个敌方2次伤害分别为自身攻击力30%和80%每次向目标转嫁自身1个减益转嫁成功时有50%的概率为目标附加1回合【眩晕】。"
},
"buffid": [],
"buffid": [
390001105
],
"map": ""
},
{
@ -1046,7 +1054,9 @@
"key": "skill_1240031111",
"text": "对敌方1个目标造成攻击力110%的伤害并有70%的概率附加1回合【睡眠】状态。"
},
"buffid": [],
"buffid": [
390001118
],
"map": ""
},
{
@ -1191,7 +1201,9 @@
"key": "skill_1240032111",
"text": "为我方全体各净化1个减益状态并附加2回合【速度提升】。"
},
"buffid": [],
"buffid": [
390001003
],
"map": ""
},
{
@ -1250,7 +1262,9 @@
"key": "skill_1240033111",
"text": "对敌方全体造成攻击力80%的伤害使敌方目标各减少30%行动值并有100%概率附加1回合【睡眠】状态。"
},
"buffid": [],
"buffid": [
390001118
],
"map": ""
},
{
@ -1428,7 +1442,10 @@
"key": "skill_9240034111",
"text": "为我方全体各净化1个减益状态并附加2回合【速度提升】和1回合【防御提升】状态。"
},
"buffid": [],
"buffid": [
390001003,
390001002
],
"map": ""
},
{
@ -1514,7 +1531,9 @@
"key": "skill_1340061111",
"text": "对敌方1个目标造成2次攻击力50%的伤害,有60%概率为目标附加2回合【速度下降】"
},
"buffid": [],
"buffid": [
390001008
],
"map": ""
},
{
@ -1794,7 +1813,10 @@
"key": "skill_1340063111",
"text": "攻击敌方全体伤害为自身攻击力100%90%概率为目标附加2回合【速度下降】和1回合【冰冻】"
},
"buffid": [],
"buffid": [
390001008,
390001106
],
"map": ""
},
{
@ -1934,7 +1956,9 @@
"key": "skill_9340064111",
"text": "攻击全体敌方伤害为自身攻击力70%70%概率降低目标30%行动值;目标有【速度下降】时,降低行动值翻倍。"
},
"buffid": [],
"buffid": [
390001008
],
"map": ""
},
{
@ -2102,7 +2126,9 @@
"key": "skill_1250011111",
"text": "对敌方1个目标造成2次攻击力30%及防御力50%的伤害,有50%概率为目标附加2回合【攻击下降】"
},
"buffid": [],
"buffid": [
390001006
],
"map": ""
},
{
@ -2243,7 +2269,9 @@
"key": "skill_1250012111",
"text": "回合结束时获得1回合【玄御】效果期间回合开始时攻击全体敌方伤害为自身防御力90%。"
},
"buffid": [],
"buffid": [
390001210
],
"map": ""
},
{
@ -2529,7 +2557,10 @@
"key": "skill_1250013111",
"text": "攻击1个敌方伤害为自身攻击力80%及防御力100%为自身附加2回合【防御提升】和【免疫】。"
},
"buffid": [],
"buffid": [
390001002,
390001111
],
"map": ""
},
{
@ -2678,7 +2709,9 @@
"key": "skill_9250014111",
"text": "回合结束时获得1回合【玄御】效果期间回合开始时攻击全体敌方伤害为自身防御力90%。任一技能暴击时减少此技能1回合冷却。"
},
"buffid": [],
"buffid": [
390001210
],
"map": ""
},
{
@ -2990,7 +3023,10 @@
"key": "skill_1440052111",
"text": "攻击1个敌方4次每次伤害为自身攻击力45%每次有30%概率为目标附加1回合【眩晕】。"
},
"buffid": [],
"buffid": [
390001105,
390001105
],
"map": ""
},
{
@ -3465,7 +3501,11 @@
"key": "skill_1350011111",
"text": "攻击1个敌方伤害为自身攻击力100%,攻击溅射随机2个敌方伤害为自身攻击力70%。攻击前随机获得一种神力持续1回合神力包含【气】、【劲】、【法】。"
},
"buffid": [],
"buffid": [
390001119,
390001120,
390001121
],
"map": ""
},
{
@ -3791,7 +3831,11 @@
"key": "skill_1350013111",
"text": "攻击全体敌方2次每次伤害为自身攻击50%。攻击前获得全部神力持续2回合神力包含【气】、【劲】、【法】。"
},
"buffid": [],
"buffid": [
390001119,
390001120,
390001121
],
"map": ""
},
{
@ -3915,7 +3959,9 @@
"key": "skill_9350014111",
"text": "攻击1个敌方伤害为自身攻击力170%。为自身附加2回合【护盾】护盾量为自身最大生命值10%。吸收所有神力恢复自身生命每个神力提供自身最大生命值10%恢复量、最大生命值5%护盾量和10%额外伤害。"
},
"buffid": [],
"buffid": [
390001112
],
"map": ""
},
{
@ -4093,7 +4139,9 @@
"key": "skill_1240041111",
"text": "攻击1个敌方伤害为自身攻击力100%60%概率为目标附加2回合【禁疗】"
},
"buffid": [],
"buffid": [
390001107
],
"map": ""
},
{
@ -4263,7 +4311,10 @@
"key": "skill_1240043111",
"text": "攻击全体敌方伤害为自身攻击力100%为目标附加2回合【速度下降】和【中毒】。"
},
"buffid": [],
"buffid": [
390001008,
390001401
],
"map": ""
},
{
@ -4471,7 +4522,9 @@
"key": "skill_9240044111",
"text": "攻击时为目标附加2回合【中毒】。附加【中毒】成功时额外附加1回合【中毒】每回合对每个目标仅触发1次。"
},
"buffid": [],
"buffid": [
390001401
],
"map": ""
},
{
@ -4727,7 +4780,10 @@
"key": "skill_1440063111",
"text": "驱散敌方1个目标的全部增益效果随后对其造成攻击力230%的伤害同时自身受到此伤害30%的效果附加伤害但是自身不会因为该伤害死亡。自身获得【攻击提升】【暴击提升】效果持续3回合"
},
"buffid": [],
"buffid": [
390001001,
390001004
],
"map": ""
},
{
@ -4923,7 +4979,10 @@
"key": "skill_9440064111",
"text": "驱散敌方1个目标的全部增益效果随后对其造成攻击力270%的伤害同时自身受到此伤害30%的效果附加伤害但是自身不会因为该伤害死亡。成功击杀敌人时自身获得【攻击提升】【暴击提升】效果持续3回合"
},
"buffid": [],
"buffid": [
390001001,
390001004
],
"map": ""
},
{
@ -5335,7 +5394,9 @@
"key": "skill_1150053111",
"text": "提升全体友方20%行动值。治疗全体友方治疗量为目标最大生命值35%。净化全体友方各1个减益为无减益的目标附加1回合【免疫】。"
},
"buffid": [],
"buffid": [
390001111
],
"map": ""
},
{
@ -6521,7 +6582,9 @@
"key": "skill_1140071111",
"text": "攻击1个敌方伤害为自身攻击力30%及防御力50%50%概率为目标附加2回合【防御下降】。"
},
"buffid": [],
"buffid": [
390001007
],
"map": ""
},
{
@ -6690,7 +6753,9 @@
"key": "skill_1140072111",
"text": "受到致命伤害时为自身附加1回合【对峙】重置旋风霹雳舞冷却目标防御比自身低时自身伤害提升每1%差值提供1%额外伤害不超过40%。"
},
"buffid": [],
"buffid": [
390001104
],
"map": ""
},
{
@ -6779,7 +6844,9 @@
"key": "skill_1140073111",
"text": "攻击全体敌方伤害为自身防御力80%30%概率为目标附加1回合【挑衅】目标防御比自身低时概率翻倍。"
},
"buffid": [],
"buffid": [
390001110
],
"map": ""
},
{
@ -7131,7 +7198,10 @@
"key": "skill_1140032111",
"text": "攻击1个敌方伤害为自身攻击150%80%概率为目标附加2回合【速度下降】。暴击时为自身附加2回合【速度提升】。每点速度提供攻击0.33%。"
},
"buffid": [],
"buffid": [
390001008,
390001003
],
"map": ""
},
{
@ -7471,7 +7541,9 @@
"key": "skill_1450032111",
"text": "自身死亡时以15%最大生命值的状态复活全部已阵亡的队友并为我方全体施加其最大生命值50%的【护盾】持续1回合。随后提升我方全体目标50%的行动值。该被动效果一场战斗仅能触发一次"
},
"buffid": [],
"buffid": [
390001112
],
"map": ""
},
{
@ -7501,7 +7573,9 @@
"key": "skill_1450033111",
"text": "净化己方全部减益状态并为己方全体目标回复35%最大生命值的生命随后施加1回合【免疫】效果"
},
"buffid": [],
"buffid": [
390001111
],
"map": ""
},
{
@ -7586,7 +7660,9 @@
"key": "skill_1530013111",
"text": "对敌方全体发起3段攻击每段攻击可造成攻击力的伤害并附加3回合【速度下降】状态。"
},
"buffid": [],
"buffid": [
390001008
],
"map": ""
},
{
@ -7759,7 +7835,9 @@
"key": "skill_1510022111",
"text": "对敌方一个目标发起攻击造成攻击力120%的伤害。并有50%概率附加2回合【防御下降】状态。"
},
"buffid": [],
"buffid": [
390001007
],
"map": ""
},
{
@ -7815,7 +7893,9 @@
"key": "skill_1510032111",
"text": "对敌方一个目标发起攻击造成攻击力120%的伤害。并有25%概率附加1回合【眩晕】状态。"
},
"buffid": [],
"buffid": [
390001105
],
"map": ""
},
{
@ -7928,7 +8008,7 @@
"text": "对敌方1个目标发起攻击造成攻击力180%的伤害并附加2回合【攻击下降】状态。"
},
"buffid": [],
"map": ""
"map": "390001006"
},
{
"id": 113003011,
@ -8421,7 +8501,9 @@
"key": "skill_1140011111",
"text": "史图依克对敌方1个目标造成攻击力30%以及防御力65%的伤害并有60%概率附加2回合【防御下降】效果。"
},
"buffid": [],
"buffid": [
390001007
],
"map": ""
},
{
@ -8450,7 +8532,9 @@
"key": "skill_1140012111",
"text": "史图依克每次受到攻击时自身获得1层【酋长之怒】每层可提升自身10%的基础防御力和5%的效果抵抗最多可叠加10层。自身获得10层【酋长之怒】时将立即获得回合"
},
"buffid": [],
"buffid": [
390001202
],
"map": ""
},
{
@ -8481,7 +8565,10 @@
"key": "skill_1140013111",
"text": "史图依克对敌方1个目标造成攻击力80%以及防御力120%的伤害并【挑衅】1名敌人2回合。若有10层【酋长之怒】伤害提升50%。恢复自身生命每层【酋长之怒】提供自身最大生命值4%恢复量;之后消耗全部【酋长之怒】"
},
"buffid": [],
"buffid": [
390001202,
390001110
],
"map": ""
},
{
@ -8538,7 +8625,9 @@
"key": "skill_1240081111",
"text": "暴芙那特对敌方1个目标造成2次自身攻击力60%的伤害并有40%概率附加2回合【烙印】效果。若某英雄在场则本次攻击额外附加目标最大生命值5%的伤害但最高无法超过自身攻击力的60%。"
},
"buffid": [],
"buffid": [
390001101
],
"map": ""
},
{
@ -8567,7 +8656,9 @@
"key": "skill_1240082111",
"text": "暴芙那特对敌方全体造成2次自身攻击力45%的伤害并有40%概率附加2回合【速度下降】效果。若某英雄在场则本次攻击额外造成两段伤害并附加同样效果"
},
"buffid": [],
"buffid": [
390001008
],
"map": ""
},
{
@ -8597,7 +8688,10 @@
"key": "skill_1240083111",
"text": "暴芙那特先为自身施加2回合【暴击提升】效果之后对敌方1个目标造成3次自身攻击力80%的伤害并附加2回合【防御下降】效果"
},
"buffid": [],
"buffid": [
390001004,
390001007
],
"map": ""
},
{
@ -8652,7 +8746,7 @@
},
"Desc": {
"key": "skill_1340081111",
"text": "悍夫那特对敌方一个目标造成1次自身攻击力100%的伤害并有40%概率鸡腿目标10%行动值。若某英雄在场则本次攻击额外随机攻击2个目标造成同样伤害和效果"
"text": "悍夫那特对敌方一个目标造成1次自身攻击力100%的伤害并有40%概率击退目标10%行动值。若某英雄在场则本次攻击额外随机攻击2个目标造成同样伤害和效果"
},
"buffid": [],
"map": ""
@ -9111,7 +9205,10 @@
"key": "skill_1350062111",
"text": "平先生为我方全体附加2回合【攻击提升】和【速度提升】效果。"
},
"buffid": [],
"buffid": [
390001001,
390001003
],
"map": ""
},
{
@ -9310,7 +9407,9 @@
"key": "skill_1240051111",
"text": "金猴对敌方1个目标造成攻击力120%的伤害并有70%概率对自身附加2回合【速度提升】"
},
"buffid": [],
"buffid": [
390001003
],
"map": ""
},
{
@ -9338,7 +9437,9 @@
"key": "skill_1240052111",
"text": "金猴净化1名队友所有减益状态并为其标记2回合【不败金身】"
},
"buffid": [],
"buffid": [
390001215
],
"map": ""
},
{
@ -9368,7 +9469,9 @@
"key": "skill_1240053111",
"text": "金猴对敌方全体造成攻击力120%的伤害并附加2回合【速度下降】状态同时能减少敌方全体30%行动值并重置2技能的冷却时间"
},
"buffid": [],
"buffid": [
390001008
],
"map": ""
},
{
@ -10047,7 +10150,9 @@
"key": "skill_1340071111",
"text": "菲奥娜对敌方1个目标造成2次攻击力60%的伤害若发生暴击则为自身附加1回合【免疫】状态"
},
"buffid": [],
"buffid": [
390001111
],
"map": ""
},
{
@ -10077,7 +10182,9 @@
"key": "skill_1340072111",
"text": "菲奥娜对敌方1个目标发起3连击共造成攻击力200%的伤害每次攻击有60%概率驱散目标1个增益状态若驱散成功则对目标附加2回合【攻击下降】状态"
},
"buffid": [],
"buffid": [
390001006
],
"map": ""
},
{
@ -10106,7 +10213,9 @@
"key": "skill_1340073111",
"text": "菲奥娜对敌方1个目标造成攻击力280%的伤害并为自身附加2回合生命值上限35%的【护盾】若发生暴击则次数伤害提升30%并额外提升50%【护盾】"
},
"buffid": [],
"buffid": [
390001112
],
"map": ""
},
{
@ -10134,7 +10243,9 @@
"key": "skill_1430061111",
"text": "布里奇特对敌方1个目标造成攻击力130%的伤害并有70%概率为目标附加2回合【攻击下降】状态"
},
"buffid": [],
"buffid": [
390001006
],
"map": ""
},
{
@ -15169,7 +15280,9 @@
"key": "skill_1440022111",
"text": "蛇先生我方全体回复各自最大生命在10%的生命和自身攻击力80%的生命并附加1回合【复苏】状态。"
},
"buffid": [],
"buffid": [
390001127
],
"map": ""
},
{
@ -15197,7 +15310,9 @@
"key": "skill_1440023111",
"text": "蛇先生己方全体提升25%行动值并施加【伪装】。己方每个【伪装】的触发都会为自身提升20%的行动值。"
},
"buffid": [],
"buffid": [
390001436
],
"map": ""
},
{

View File

@ -3179,7 +3179,7 @@
"Id": 390001436,
"Name": {
"key": "skill_buff_390001436",
"text": "伪装(减伤)"
"text": "伪装"
},
"Desc": {
"key": "skill_buffdes_390001436",

View File

@ -124,6 +124,8 @@ var (
ff(comm.ModuleSmithy, "customer"): &formview.SmithyView{},
//武馆派遣
ff(comm.ModuleDispatch, "dispatch"): &formview.DispatchView{},
//声望
ff(comm.ModuleReputation, "reputation"): &formview.ReputationView{},
}
)
@ -153,6 +155,7 @@ var (
string(comm.ModuleReddot),
string(comm.ModuleSmithy),
string(comm.ModuleDispatch),
string(comm.ModuleReputation),
},
"gm": {ff(comm.ModuleGM, "cmd")},
"sys": {
@ -257,6 +260,9 @@ var (
"dispatch": {
ff(comm.ModuleDispatch, "dispatch"),
},
"reputation": {
ff(comm.ModuleReputation, "reputation"),
},
}
)
@ -915,6 +921,19 @@ var (
SubType: "dispatch",
Enabled: true,
},
// reputation
string(comm.ModuleReputation): {
NavLabel: "声望",
MainType: string(comm.ModuleReputation),
Enabled: true,
},
ff(comm.ModuleReputation, "reputation"): {
NavLabel: "声望管理",
Desc: "声望管理",
MainType: string(comm.ModuleReputation),
SubType: "reputation",
Enabled: true,
},
}
)

View File

@ -135,8 +135,8 @@ func (d *DispatchView) CreateView(t *model.TestCase) fyne.CanvasObject {
paiWin := dialog.NewCustom("派遣", "关闭", form, d.w)
paiWin.Resize(fyne.NewSize(600, 300))
paiWin.Show()
})
//周奖励领取
weekReceiveBtn := widget.NewButton("周奖励", func() {
if err := service.GetPttService().SendToClient(

View File

@ -0,0 +1,89 @@
package formview
import (
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/pb"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
"github.com/spf13/cast"
)
type ReputationView struct {
BaseformView
itemList *common.ItemList
flag bool
}
func (d *ReputationView) CreateView(t *model.TestCase) fyne.CanvasObject {
d.itemList = common.NewItemList()
d.itemList.ItemList = d.itemList.CreateList()
swBtn := widget.NewButton("声望升级", func() {
//阵营
zy := widget.NewEntry()
//好感度
fv := widget.NewEntry()
form := widget.NewForm(
widget.NewFormItem("阵营ID", zy),
widget.NewFormItem("好感度", fv),
)
form.OnSubmit = func() {
if err := service.GetPttService().SendToClient(
t.MainType,
"talenttest",
&pb.ReputationTalenttestReq{
RaceType: cast.ToInt32(zy),
FriendValue: cast.ToInt32(fv),
},
); err != nil {
logrus.Error(err)
return
}
}
paiWin := dialog.NewCustom("升级", "关闭", form, d.w)
paiWin.Resize(fyne.NewSize(600, 300))
paiWin.Show()
})
upgradeBtn := widget.NewButton("天赋升级", func() {
nodeId := widget.NewEntry()
form := widget.NewForm(
widget.NewFormItem("节点ID", nodeId),
)
form.OnSubmit = func() {
if err := service.GetPttService().SendToClient(
t.MainType,
"upgrade",
&pb.ReputationUpgradeReq{
NodeId: cast.ToInt32(nodeId.Text),
},
); err != nil {
logrus.Error(err)
return
}
}
paiWin := dialog.NewCustom("升级", "关闭", form, d.w)
paiWin.Resize(fyne.NewSize(600, 300))
paiWin.Show()
})
resetBtn := widget.NewButton("重置", func() {
})
topBtns := container.NewHBox(swBtn, upgradeBtn, resetBtn)
c := container.NewBorder(topBtns, nil, nil, nil, d.itemList.ItemList)
return c
}

View File

@ -313,9 +313,14 @@ const ( //Rpc
// RPC 通知来了邮件
Rpc_Mail core.Rpc_Key = "Rpc_Mail"
//PVP 离线托管
RPC_PVPTrusteeship core.Rpc_Key = "RPC_PVPTrusteeship"
//捕羊大赛加入匹配请求
RPC_ParkourJoinMatch core.Rpc_Key = "RPC_ParkourJoinMatch"
RPC_ParkourMatchSucc core.Rpc_Key = "RPC_ParkourMatchSucc"
RPC_ParkourJoinMatch core.Rpc_Key = "RPC_ParkourJoinMatch" //加入匹配
RPC_ParkourCancelMatch core.Rpc_Key = "RPC_ParkourCancelMatch" //取消匹配
RPC_ParkourMatchSucc core.Rpc_Key = "RPC_ParkourMatchSucc" //匹配成功
RPC_ParkourTrusteeship core.Rpc_Key = "RPC_ParkourTrusteeship" //捕羊大赛托管
)
// 事件类型定义处
@ -378,6 +383,10 @@ const (
ArenaCoin = "arenacoin" //竞技场币
ResPs = "ps" // 体力
Moongold = "moongold" //纯净月髓
Talent1 = "talent1" //阵营1天赋点
Talent2 = "talent2" //阵营2天赋点
Talent3 = "talent3" //阵营3天赋点
Talent4 = "talent4" //阵营4天赋点
)
const (
Gold int32 = 1 //金币

View File

@ -381,7 +381,7 @@ type (
// TaskcondNotify(session IUserSession, condId int32) error
TaskCondFinishNotify(session IUserSession, condId int32) error
// bingo所有任务
BingoAllTask(session IUserSession) error
// BingoAllTask(session IUserSession) error
// bingo任务
BingoJumpTask(session IUserSession, groupId, rtaskId int32) error
// 查询我的世界任务
@ -470,4 +470,9 @@ type (
GetGlobalConf() *cfg.GameGlobalData
GetPriceGroupCost(pricegroupId int32, purchase int32) (res []*cfg.Gameatn)
}
IReputation interface {
// 声望升级 返回声望等级
Upgrade(session IUserSession, raceType int32, fv int32) (lv int32)
}
)

View File

@ -69,7 +69,7 @@ func (this *GM) CreateCmd(session comm.IUserSession, cmd string) (code pb.ErrorC
this.Debugf("create CMD :%s", cmd) // 打印个日志方便查询
datas := strings.Split(keys[1], ",")
if len(datas) == 3 && (datas[0] == comm.AttrType || datas[0] == comm.ItemType ||
datas[0] == comm.HeroType || datas[0] == comm.EquipmentType || datas[0] == comm.VipType || datas[0] == comm.AtlasType || datas[0] == comm.PandaType) {
datas[0] == comm.HeroType || datas[0] == comm.EquipmentType || datas[0] == comm.VipType || datas[0] == comm.AtlasType || datas[0] == comm.PandaType || datas[0] == comm.MountsType) {
num, err := strconv.Atoi(datas[2])
if err != nil {
code = pb.ErrorCode_ReqParameterError
@ -285,20 +285,7 @@ func (this *GM) CreateCmd(session comm.IUserSession, cmd string) (code pb.ErrorC
log.Field{Key: "uid", Value: session.GetUserId()},
log.Field{Key: "0", Value: datas[1]},
)
} else if len(datas) == 1 && (datas[0] == "alltask") { // 完成所有世界任务
module, err := this.service.GetModule(comm.ModuleWorldtask)
if err != nil {
return
}
if wt, ok := module.(comm.IWorldtask); ok {
if err = wt.BingoAllTask(session); err != nil {
this.Error("bingo 世界任务",
log.Field{Key: "param", Value: datas},
log.Field{Key: "err", Value: err.Error()})
}
}
} else if len(datas) == 1 && (datas[0] == "allgrowtask") { // 完成所有成长任务
} else if len(datas) == 1 && (datas[0] == "allgrowtask") { // 完成所有成长任务
module, err := this.service.GetModule(comm.ModuleGrowtask)
if err != nil {
return

View File

@ -18,6 +18,7 @@ func (this *apiComp) Getlist(session comm.IUserSession, req *pb.ItemsGetlistReq)
err error
items []*pb.DB_UserItemData
nt int64
temp []*pb.DB_UserItemData
grids []*pb.DB_UserItemData
modifys []*pb.DB_UserItemData
dels []*pb.DB_UserItemData
@ -39,6 +40,7 @@ func (this *apiComp) Getlist(session comm.IUserSession, req *pb.ItemsGetlistReq)
return
} else {
// tempgrids = this.module.configure.GetPackItemByType(items, req.IType)
temp = make([]*pb.DB_UserItemData, 0, len(items))
modifys = make([]*pb.DB_UserItemData, 0, len(items))
dels = make([]*pb.DB_UserItemData, 0, len(items))
grids = make([]*pb.DB_UserItemData, 0, len(items))
@ -53,10 +55,11 @@ func (this *apiComp) Getlist(session comm.IUserSession, req *pb.ItemsGetlistReq)
temp.IsNewItem = false
modifys = append(modifys, &temp)
}
temp = append(temp, v)
}
}
}
session.SendMsg(string(this.module.GetType()), "getlist", &pb.ItemsGetlistResp{Grids: items})
session.SendMsg(string(this.module.GetType()), "getlist", &pb.ItemsGetlistResp{Grids: temp})
return
}

View File

@ -8,7 +8,6 @@ import (
"go_dreamfactory/lego/base"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/event"
"go_dreamfactory/lego/sys/log"
)
/*
@ -64,9 +63,7 @@ func (this *Items) OnInstallComp() {
//Event------------------------------------------------------------------------------------------------------------
func (this *Items) EventUserOffline(uid, sessionid string) {
if err := this.modelItems.BatchDelLists(uid); err != nil {
this.Error("EventUserOffline", log.Field{Key: "uid", Value: uid}, log.Field{Key: "err", Value: err.Error()})
}
this.modelItems.BatchDelLists(uid)
}
//IItems-------------------------------------------------------------------------------------------------------------------------------

220
modules/parkour/ai.go Normal file
View File

@ -0,0 +1,220 @@
package parkour
import (
"fmt"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase"
"go_dreamfactory/lego/sys/timewheel"
"go_dreamfactory/pb"
"math/rand"
"sync"
"time"
)
/*
AI 逻辑组件
*/
type aiComp struct {
cbase.ModuleCompBase
service core.IService
module *Parkour
lock sync.RWMutex
ais map[string][]*AI
handleS []AIHandleType
handleSS []AIHandleType
handleSSS []AIHandleType
}
//组件初始化接口
func (this *aiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.ModuleCompBase.Init(service, module, comp, options)
this.module = module.(*Parkour)
this.service = service
this.ais = make(map[string][]*AI)
this.handleS = make([]AIHandleType, 100)
this.handleSS = make([]AIHandleType, 100)
this.handleSSS = make([]AIHandleType, 100)
this.inithandle()
return
}
func (this *aiComp) Start() (err error) {
err = this.ModuleCompBase.Start()
timewheel.AddCron(time.Second*3, this.aihandle)
return
}
func (this *aiComp) inithandle() {
var index int32
//AILevelS
for i := 0; i < 40; i++ { //失败躲避次数 40
this.handleS[index] = AIHandle_Avoid0
index++
}
for i := 0; i < 10; i++ { //成功躲避次数 10
this.handleS[index] = AIHandle_Avoid1
index++
}
for i := 0; i < 5; i++ { //完美躲避次数 5
this.handleS[index] = AIHandle_Avoid2
index++
}
for i := 0; i < 7; i++ { //射门失败次数 5
this.handleS[index] = AIHandle_Shots0
index++
}
for i := 0; i < 3; i++ { //射门成功次数 3
this.handleS[index] = AIHandle_Shots1
index++
}
index = 0
//AILevelSS
for i := 0; i < 30; i++ { //失败躲避次数 30
this.handleSS[index] = AIHandle_Avoid0
index++
}
for i := 0; i < 20; i++ { //成功躲避次数 20
this.handleSS[index] = AIHandle_Avoid1
index++
}
for i := 0; i < 10; i++ { //完美躲避次数 10
this.handleSS[index] = AIHandle_Avoid2
index++
}
for i := 0; i < 5; i++ { //射门失败次数 5
this.handleSS[index] = AIHandle_Shots0
index++
}
for i := 0; i < 5; i++ { //射门成功次数 5
this.handleSS[index] = AIHandle_Shots1
index++
}
index = 0
//AILevelSSS
for i := 0; i < 10; i++ { //失败躲避次数 10
this.handleSSS[index] = AIHandle_Avoid0
index++
}
for i := 0; i < 30; i++ { //成功躲避次数 30
this.handleSSS[index] = AIHandle_Avoid1
index++
}
for i := 0; i < 15; i++ { //完美躲避次数 15
this.handleSSS[index] = AIHandle_Avoid2
index++
}
for i := 0; i < 2; i++ { //射门失败次数 2
this.handleSSS[index] = AIHandle_Shots0
index++
}
for i := 0; i < 8; i++ { //射门成功次数 8
this.handleSSS[index] = AIHandle_Shots1
index++
}
}
//创建战斗ai
func (this *aiComp) createAi(battleid string, users []*pb.DBRaceMember) (err error) {
var (
ok bool
ais []*AI
r *rand.Rand = rand.New(rand.NewSource(time.Now().Unix()))
)
if battleid == "" || users == nil || len(users) == 0 {
err = fmt.Errorf("battleid:%s users:%v parameter exceptions", battleid, users)
return
}
this.lock.RLock()
_, ok = this.ais[battleid]
this.lock.RUnlock()
if ok {
err = fmt.Errorf("battle:%s already exists", battleid)
return
}
ais = make([]*AI, len(users))
for i, v := range users {
ais[i] = &AI{
BattleId: battleid,
UId: v.Uid,
AILevel: AILevelS,
Handle: make([]AIHandleType, 100),
LastTime: time.Now(),
}
switch ais[i].AILevel {
case AILevelS:
ais[i].Interval = time.Second*10 + time.Second*time.Duration(rand.Int31n(5))
for ii, vv := range r.Perm(len(this.handleS)) {
ais[i].Handle[ii] = this.handleS[vv]
}
break
case AILevelSS:
ais[i].Interval = time.Second*7 + time.Second*time.Duration(rand.Int31n(5))
for ii, vv := range r.Perm(len(this.handleSS)) {
ais[i].Handle[ii] = this.handleSS[vv]
}
break
case AILevelSSS:
ais[i].Interval = time.Second*5 + time.Second*time.Duration(rand.Int31n(3))
for ii, vv := range r.Perm(len(this.handleSSS)) {
ais[i].Handle[ii] = this.handleSSS[vv]
}
break
}
}
this.lock.Lock()
this.ais[battleid] = ais
this.lock.Unlock()
return
}
//移除AI
func (this *aiComp) removeAi(battleid string) {
this.lock.Lock()
delete(this.ais, battleid)
this.lock.Unlock()
}
//ai自动化
func (this *aiComp) aihandle(task *timewheel.Task, args ...interface{}) {
var (
ok bool
ais map[string][]*AI = make(map[string][]*AI)
)
this.lock.RLock()
if len(this.ais) > 0 {
ok = true
for k, v := range this.ais {
ais[k] = v
}
}
this.lock.RUnlock()
if ok {
for id, member := range ais {
for _, ai := range member {
if time.Now().Sub(ai.LastTime) > ai.Interval {
switch ai.Handle[ai.CurrIndex] {
case AIHandle_Avoid0: //躲避障碍 失败
go this.module.avoid(id, ai.UId, -1)
break
case AIHandle_Avoid1: //躲避障碍 成功
go this.module.avoid(id, ai.UId, 3)
break
case AIHandle_Avoid2: //躲避障碍 完美
go this.module.avoid(id, ai.UId, 1)
break
case AIHandle_Shots0: //射门 失败
break
case AIHandle_Shots1: //射门 成功
go this.module.shot(id, ai.UId)
break
}
ai.LastTime = time.Now()
ai.CurrIndex++
ai.CurrIndex = ai.CurrIndex % int32(len(ai.Handle))
}
}
}
}
}

View File

@ -0,0 +1,37 @@
package parkour
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
//参数校验
func (this *apiComp) InfoCheck(session comm.IUserSession, req *pb.ParkourInfoReq) (code pb.ErrorCode) {
return
}
///匹配请求
func (this *apiComp) Info(session comm.IUserSession, req *pb.ParkourInfoReq) (code pb.ErrorCode, data *pb.ErrorData) {
var (
isopen bool
info *pb.DBParkour
recommend []*pb.DBRaceMember
err error
)
if code = this.InfoCheck(session, req); code != pb.ErrorCode_Success {
return
}
isopen = this.module.configure.isopen()
if isopen {
if info, err = this.module.parkourComp.queryinfo(session.GetUserId()); err != nil {
code = pb.ErrorCode_DBError
return
}
if recommend, err = this.module.parkourComp.getrusers(session.GetUserId()); err != nil {
code = pb.ErrorCode_DBError
return
}
}
session.SendMsg(string(this.module.GetType()), "info", &pb.ParkourInfoResp{Isopen: isopen, Info: info, Recommend: recommend})
return
}

View File

@ -10,7 +10,7 @@ func (this *apiComp) AvoidCheck(session comm.IUserSession, req *pb.ParkourAvoidR
return
}
///匹配请求
///游戏
func (this *apiComp) Avoid(session comm.IUserSession, req *pb.ParkourAvoidReq) (code pb.ErrorCode, data *pb.ErrorData) {
var (
ok bool

View File

@ -0,0 +1,82 @@
package parkour
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
//参数校验
func (this *apiComp) ChangeMtsCheck(session comm.IUserSession, req *pb.ParkourChangeMtsReq) (code pb.ErrorCode) {
return
}
///游戏
func (this *apiComp) ChangeMts(session comm.IUserSession, req *pb.ParkourChangeMtsReq) (code pb.ErrorCode, data *pb.ErrorData) {
var (
info *pb.DBParkour
team *pb.DBParkour
mount *cfg.GameBuzkashiMountData
err error
)
if code = this.ChangeMtsCheck(session, req); code != pb.ErrorCode_Success {
return
}
if info, err = this.module.parkourComp.queryinfo(session.GetUserId()); err != nil {
code = pb.ErrorCode_DBError
return
}
if _, ok := info.Mounts[req.Mtsid]; !ok {
code = pb.ErrorCode_ReqParameterError
return
}
info.Dfmount = req.Mtsid
if info.Captainid != "" {
if mount, err = this.module.configure.getGameBuzkashiMount(info.Dfmount); err != nil {
code = pb.ErrorCode_ConfigNoFound
return
}
if info.Captainid == session.GetUserId() {
for _, v := range info.Member {
if v.Uid == session.GetUserId() {
v.Mount = info.Dfmount
v.Hp = mount.Hp
}
}
if err = this.module.parkourComp.Change(session.GetUserId(), map[string]interface{}{
"dfmount": info.Dfmount,
"member": info.Member,
}); err != nil {
code = pb.ErrorCode_DBError
return
}
} else {
if team, err = this.module.parkourComp.queryinfo(info.Captainid); err != nil {
code = pb.ErrorCode_DBError
return
}
for _, v := range team.Member {
if v.Uid == session.GetUserId() {
v.Mount = info.Dfmount
v.Hp = mount.Hp
}
}
if err = this.module.parkourComp.Change(team.Captainid, map[string]interface{}{
"member": team.Member,
}); err != nil {
code = pb.ErrorCode_DBError
return
}
}
} else {
if err = this.module.parkourComp.Change(session.GetUserId(), map[string]interface{}{
"dfmount": info.Dfmount,
}); err != nil {
code = pb.ErrorCode_DBError
return
}
}
session.SendMsg(string(this.module.GetType()), "changemts", &pb.ParkourChangeMtsResp{Issucc: true, Mtsid: req.Mtsid})
return
}

View File

@ -4,62 +4,114 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"time"
)
//参数校验
func (this *apiComp) InviteCheck(session comm.IUserSession, req *pb.ParkourInviteReq) (code pb.ErrorCode) {
if req.Uid == session.GetUserId() {
code = pb.ErrorCode_ReqParameterError
}
return
}
///邀请组队
func (this *apiComp) Invite(session comm.IUserSession, req *pb.ParkourInviteReq) (code pb.ErrorCode, data *pb.ErrorData) {
var (
tean *pb.DBParkour
tuser *pb.DBUser
ok bool
err error
info *pb.DBParkour
tinfo *pb.DBParkour
tuser *pb.DBUser
mount *cfg.GameBuzkashiMountData
member *pb.DBRaceMember
users []string
ok bool
err error
)
if code = this.InviteCheck(session, req); code != pb.ErrorCode_Success {
return
}
if tean, err = this.module.teamComp.queryteam(session.GetUserId()); err != nil {
if info, err = this.module.parkourComp.queryinfo(session.GetUserId()); err != nil {
code = pb.ErrorCode_DBError
return
}
if len(tean.Member) > 3 {
if info.Captainid != "" && info.Captainid != session.GetUserId() { //自己不是队长 无权邀请他人
code = pb.ErrorCode_ParkourInviteNoPermissions
return
}
if len(info.Member) > 3 {
code = pb.ErrorCode_ReqParameterError
return
}
if tuser = this.module.ModuleUser.GetUser(session.GetUserId()); tuser == nil {
code = pb.ErrorCode_SystemError
return
}
if mount, err = this.module.configure.getGameBuzkashiMount(info.Dfmount); err != nil {
code = pb.ErrorCode_ConfigNoFound
return
}
ok = false
for _, v := range info.Member {
if v.Uid == session.GetUserId() {
ok = true
}
}
if !ok {
info.Member = append(info.Member, &pb.DBRaceMember{Uid: tuser.Uid, Name: tuser.Name, Avatar: tuser.Avatar, Mount: info.Dfmount, Hp: mount.Hp})
}
if tinfo, err = this.module.parkourComp.queryinfo(req.Uid); err != nil {
code = pb.ErrorCode_DBError
return
}
if tuser = this.module.ModuleUser.GetUser(req.Uid); tuser == nil {
code = pb.ErrorCode_SystemError
return
}
if mount, err = this.module.configure.getGameBuzkashiMount(tinfo.Dfmount); err != nil {
code = pb.ErrorCode_ConfigNoFound
return
}
//目标是否在线
if !this.module.ModuleUser.IsOnline(req.Uid) {
tean.Member = append(tean.Member, &pb.DBRaceMember{Uid: tuser.Uid, Name: tuser.Name, Isai: true})
member = &pb.DBRaceMember{Uid: tuser.Uid, Name: tuser.Name, Avatar: tuser.Avatar, Mount: tinfo.Dfmount, Hp: mount.Hp, Isai: true}
info.Member = append(info.Member, member)
users = make([]string, len(info.Member))
for i, v := range info.Member {
users[i] = v.Uid
}
this.module.SendMsgToUsers(string(this.module.GetType()), "teamjoinnotice",
&pb.ParkourTeamJoinNoticePush{Member: member}, users...)
this.module.SendMsgToUsers(string(this.module.GetType()), "teamchanage",
&pb.ParkourTeamChanagePush{Team: info}, users...)
} else {
if tinfo.Captainid != "" {
code = pb.ErrorCode_ParkourTargetTeamed
return
}
ok = false
for _, v := range tean.Invite {
for _, v := range info.Invite {
if v.Uid == req.Uid {
v.Expired = configure.Now().Add(time.Second * 10).Unix()
ok = true
}
}
if !ok {
tean.Invite = append(tean.Invite, &pb.DBRaceInvite{Uid: tuser.Uid, Name: tuser.Name})
info.Invite = append(info.Invite, &pb.DBRaceInvite{Uid: tuser.Uid, Name: tuser.Name, Avatar: tuser.Avatar, Expired: configure.Now().Add(time.Second * 10).Unix()})
}
this.module.SendMsgToUser(string(this.module.GetType()), "invitenotice",
&pb.ParkourInviteNoticePush{Team: tean, State: 1}, req.Uid)
&pb.ParkourInviteNoticePush{Team: info, State: 1}, req.Uid)
}
if err = this.module.teamComp.Change(session.GetUserId(), map[string]interface{}{
"invite": tean.Invite,
"member": tean.Member,
if err = this.module.parkourComp.Change(session.GetUserId(), map[string]interface{}{
"invite": info.Invite,
"member": info.Member,
}); err != nil {
code = pb.ErrorCode_DBError
return
}
session.SendMsg(string(this.module.GetType()), "invite", &pb.ParkourInviteResp{Issucc: true, Team: tean})
session.SendMsg(string(this.module.GetType()), "invite", &pb.ParkourInviteResp{Issucc: true, Team: info})
return
}

View File

@ -4,6 +4,7 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"time"
)
@ -15,43 +16,69 @@ func (this *apiComp) InviteHandleCheck(session comm.IUserSession, req *pb.Parkou
///邀请组队
func (this *apiComp) InviteHandle(session comm.IUserSession, req *pb.ParkourInviteHandleReq) (code pb.ErrorCode, data *pb.ErrorData) {
var (
info *pb.DBParkour
tean *pb.DBParkour
invite *pb.DBRaceInvite
member *pb.DBRaceMember
mount *cfg.GameBuzkashiMountData
users []string
ok bool
index int32
err error
)
if code = this.InviteHandleCheck(session, req); code != pb.ErrorCode_Success {
return
}
if tean, err = this.module.teamComp.queryteam(req.Captainid); err != nil {
if info, err = this.module.parkourComp.queryinfo(session.GetUserId()); err != nil {
code = pb.ErrorCode_DBError
return
}
if len(tean.Member) > 3 {
if tean, err = this.module.parkourComp.queryinfo(req.Captainid); err != nil {
code = pb.ErrorCode_DBError
return
}
if len(tean.Member) >= 3 {
code = pb.ErrorCode_ParkourMemberFull
return
}
if req.State == 1 {
ok = false
for _, v := range tean.Invite {
if v.Uid == session.GetUserId() && configure.Now().Before(time.Unix(v.Expired, 0)) { //邀请未过期
for i, v := range tean.Invite {
if v.Uid == session.GetUserId() && !configure.Now().Before(time.Unix(v.Expired, 0)) { //邀请未过期
invite = v
index = int32(i)
ok = true
}
}
if !ok {
code = pb.ErrorCode_ParkourInviteOverdue
return
}
tean.Invite = append(tean.Invite[0:index], tean.Invite[index+1:]...)
users = make([]string, len(tean.Member))
for i, v := range tean.Member {
users[i] = v.Uid
}
member = &pb.DBRaceMember{Uid: invite.Uid, Name: invite.Name}
if mount, err = this.module.configure.getGameBuzkashiMount(info.Dfmount); err != nil {
code = pb.ErrorCode_ConfigNoFound
return
}
member = &pb.DBRaceMember{Uid: invite.Uid, Name: invite.Name, Avatar: invite.Avatar, Mount: info.Dfmount, Hp: mount.Hp}
tean.Captainid = tean.Uid
tean.State = pb.RaceTeamState_teaming
tean.Member = append(tean.Member, member)
if err = this.module.teamComp.Change(tean.Captainid, map[string]interface{}{
"member": tean.Member,
if err = this.module.parkourComp.Change(session.GetUserId(), map[string]interface{}{
"captainid": tean.Captainid,
}); err != nil {
code = pb.ErrorCode_DBError
return
}
if err = this.module.parkourComp.Change(tean.Captainid, map[string]interface{}{
"state": tean.State,
"invite": tean.Invite,
"captainid": tean.Captainid,
"member": tean.Member,
}); err != nil {
code = pb.ErrorCode_DBError
return

View File

@ -22,7 +22,7 @@ func (this *apiComp) QuitTeam(session comm.IUserSession, req *pb.ParkourQuitTeam
if code = this.QuitTeamCheck(session, req); code != pb.ErrorCode_Success {
return
}
if tean, err = this.module.teamComp.queryteam(req.Captainid); err != nil {
if tean, err = this.module.parkourComp.queryinfo(req.Captainid); err != nil {
code = pb.ErrorCode_DBError
return
}
@ -39,7 +39,13 @@ func (this *apiComp) QuitTeam(session comm.IUserSession, req *pb.ParkourQuitTeam
code = pb.ErrorCode_ReqParameterError
return
}
if err = this.module.teamComp.Change(req.Captainid, map[string]interface{}{
if err = this.module.parkourComp.Change(session.GetUserId(), map[string]interface{}{
"captainid": session.GetUserId(),
}); err != nil {
code = pb.ErrorCode_DBError
return
}
if err = this.module.parkourComp.Change(req.Captainid, map[string]interface{}{
"member": tean.Member,
}); err != nil {
code = pb.ErrorCode_DBError

View File

@ -7,26 +7,52 @@ import (
//参数校验
func (this *apiComp) RaceMatchCheck(session comm.IUserSession, req *pb.ParkourRaceMatchReq) (code pb.ErrorCode) {
if session.GetUserId() != req.Captainid {
code = pb.ErrorCode_ReqParameterError
}
return
}
///匹配请求
func (this *apiComp) RaceMatch(session comm.IUserSession, req *pb.ParkourRaceMatchReq) (code pb.ErrorCode, data *pb.ErrorData) {
var (
team *pb.DBParkour
err error
team *pb.DBParkour
users []string
err error
)
if code = this.RaceMatchCheck(session, req); code != pb.ErrorCode_Success {
return
}
if team, err = this.module.teamComp.queryteam(session.GetUserId()); err != nil {
if team, err = this.module.parkourComp.queryinfo(session.GetUserId()); err != nil {
code = pb.ErrorCode_DBError
return
}
if team.Captainid != session.GetUserId() {
code = pb.ErrorCode_ReqParameterError
return
}
if err = this.module.match(team); err != nil {
code = pb.ErrorCode_DBError
return
}
users = make([]string, len(team.Member))
for i, v := range team.Member {
if !v.Isai {
users[i] = v.Uid
if err = this.module.parkourComp.Change(v.Uid, map[string]interface{}{
"state": pb.RaceTeamState_matching,
}); err != nil {
code = pb.ErrorCode_DBError
return
}
}
}
this.module.SendMsgToUsers(string(this.module.GetType()), "racematchstart",
&pb.ParkourRaceMatchStartPush{Team: team}, users...)
session.SendMsg(string(this.module.GetType()), "racematch", &pb.ParkourRaceMatchResp{})
return
}

View File

@ -0,0 +1,56 @@
package parkour
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
//参数校验
func (this *apiComp) RaceMatchCancelCheck(session comm.IUserSession, req *pb.ParkourRaceMatchCancelReq) (code pb.ErrorCode) {
if session.GetUserId() != req.Captainid {
code = pb.ErrorCode_ReqParameterError
}
return
}
///匹配请求
func (this *apiComp) RaceMatchCancel(session comm.IUserSession, req *pb.ParkourRaceMatchCancelReq) (code pb.ErrorCode, data *pb.ErrorData) {
var (
team *pb.DBParkour
users []string
err error
)
if code = this.RaceMatchCancelCheck(session, req); code != pb.ErrorCode_Success {
return
}
if team, err = this.module.parkourComp.queryinfo(session.GetUserId()); err != nil {
code = pb.ErrorCode_DBError
return
}
if team.Captainid != session.GetUserId() {
code = pb.ErrorCode_ReqParameterError
return
}
if err = this.module.match(team); err != nil {
code = pb.ErrorCode_DBError
return
}
users = make([]string, len(team.Member))
for i, v := range team.Member {
if !v.Isai {
users[i] = v.Uid
if err = this.module.parkourComp.Change(v.Uid, map[string]interface{}{
"state": pb.RaceTeamState_matching,
}); err != nil {
code = pb.ErrorCode_DBError
return
}
}
}
this.module.SendMsgToUsers(string(this.module.GetType()), "racematchstart",
&pb.ParkourRaceMatchCancelPush{Team: team}, users...)
session.SendMsg(string(this.module.GetType()), "racematch", &pb.ParkourRaceMatchResp{})
return
}

View File

@ -1,11 +1,20 @@
package parkour
import (
"fmt"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
)
const ()
const (
game_buzkashiopen = "game_buzkashiopen.json"
game_buzkashigrade = "game_buzkashigrade.json"
game_buzkashilv = "game_buzkashilv.json"
game_buzkashimount = "game_buzkashimount.json"
game_buzkashireward = "game_buzkashireward.json"
)
///背包配置管理组件
type configureComp struct {
@ -17,6 +26,57 @@ type configureComp struct {
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.MCompConfigure.Init(service, module, comp, options)
this.module = module.(*Parkour)
this.LoadConfigure(game_buzkashiopen, cfg.NewGamebuzkashiOpen)
this.LoadConfigure(game_buzkashigrade, cfg.NewGameBuzkashiGrade)
this.LoadConfigure(game_buzkashilv, cfg.NewGameBuzkashiLv)
this.LoadConfigure(game_buzkashimount, cfg.NewGameBuzkashiMount)
this.LoadConfigure(game_buzkashireward, cfg.NewGameBuzkashiReward)
return
}
//查询开启表
func (this *configureComp) isopen() (open bool) {
var (
v interface{}
config *cfg.GamebuzkashiOpen
currtime string = configure.Now().Format("15:04")
err error
ok bool
)
if v, err = this.GetConfigure(game_buzkashiopen); err != nil {
this.module.Errorln(err)
return
} else {
if config, ok = v.(*cfg.GamebuzkashiOpen); !ok {
err = fmt.Errorf("config type err:%T", v)
return
} else {
for _, v := range config.GetDataList() {
if currtime >= fmt.Sprintf("%d:%d", v.Shtime, v.Smtime) && currtime < fmt.Sprintf("%d:%d", v.Ehtime, v.Emtime) {
open = true
return
}
}
}
}
return
}
//查询坐骑表
func (this *configureComp) getGameBuzkashiMount(id string) (configure *cfg.GameBuzkashiMountData, err error) {
var (
v interface{}
ok bool
)
if v, err = this.GetConfigure(game_buzkashimount); err != nil {
this.module.Errorln(err)
return
} else {
if configure, ok = v.(*cfg.GameBuzkashiMount).GetDataMap()[id]; !ok {
err = fmt.Errorf("not found:%s ", id)
this.module.Errorln(err)
return
}
}
return
}

View File

@ -5,15 +5,55 @@ import (
"go_dreamfactory/lego/sys/timewheel"
"go_dreamfactory/pb"
"sync"
"time"
)
type Recommend struct {
parkour *pb.DBParkour
user *pb.DBUser
member *pb.DBRaceMember
}
///捕羊大赛对象
type RaceItem struct {
Id string //战斗id
lock sync.Mutex //战斗锁 防止计时器和消息同时操作对象
RedMember []*pb.DBRaceMember //红方成员
RedSession []comm.IUserSession //红方会话
BuleMember []*pb.DBRaceMember //蓝方成员
BuleSession []comm.IUserSession //蓝方会话
overtimer *timewheel.Task //准备倒计时定时器
Id string //战斗id
lock sync.Mutex //战斗锁 防止计时器和消息同时操作对象
RedMember []*pb.DBRaceMember //红方成员
RedScore int32 //红方分值
RedEnergy int32 //红方能量
BuleMember []*pb.DBRaceMember //蓝方成员
Session map[string]comm.IUserSession
BuleScore int32 //蓝方分值
BuleEnergy int32 //蓝方能量
overtimer *timewheel.Task //准备倒计时定时器
}
type AILevel int32
const (
AILevelS AILevel = iota
AILevelSS
AILevelSSS
)
type AIHandleType int32
const (
AIHandle_Null AIHandleType = iota //空操作
AIHandle_Avoid0 //躲避障碍 失败
AIHandle_Avoid1 //躲避障碍 成功
AIHandle_Avoid2 //躲避障碍 完美
AIHandle_Shots0 //射门 失败
AIHandle_Shots1 //射门 成功
)
//捕羊大赛AI对象
type AI struct {
BattleId string //战场id
UId string //用户id
AILevel AILevel //AI级别
Handle []AIHandleType //操作列表
CurrIndex int32 //当前执行下标
LastTime time.Time //上一次操作时间
Interval time.Duration //最小操作时间
}

View File

@ -1,23 +1,35 @@
package parkour
import (
"context"
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/sys/db"
"math/rand"
"sync"
"time"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/x/bsonx"
)
///竞速数据模块
type ModelParkourComp struct {
modules.MCompModel
module *Parkour
module *Parkour
refresh time.Time //上一次刷新时间
lock sync.RWMutex
users []*Recommend //推荐用户信息
}
//组件初始化接口
@ -32,7 +44,99 @@ func (this *ModelParkourComp) Init(service core.IService, module core.IModule, c
return
}
func (this *ModelParkourComp) queryteam(uid string) (result *pb.DBParkour, err error) {
func (this *ModelParkourComp) Start() (err error) {
err = this.MCompModel.Start()
go this.refreshlist()
return
}
//获取推荐用户
func (this *ModelParkourComp) getrusers(uid string) (recommend []*pb.DBRaceMember, err error) {
var (
users []*Recommend
mount *cfg.GameBuzkashiMountData
ondata bool
)
this.lock.RLock()
if len(this.users) == 0 {
ondata = true
}
this.lock.RUnlock()
if ondata { //没有数据 重新获取
this.refreshlist()
}
this.lock.RLock()
users = make([]*Recommend, 0, len(this.users))
for _, v := range this.users {
if v.parkour.Uid != uid {
users = append(users, v)
}
}
this.lock.RUnlock()
var num int = 6
if len(users) < 6 {
num = len(users)
}
recommend = make([]*pb.DBRaceMember, num)
r := rand.New(rand.NewSource(configure.Now().Unix()))
for i, v := range r.Perm(num) {
if users[v].member == nil {
if users[v].user = this.module.ModuleUser.GetUser(users[v].parkour.Uid); users[v].user == nil {
continue
}
if mount, err = this.module.configure.getGameBuzkashiMount(users[v].parkour.Dfmount); err != nil {
continue
}
users[v].member = &pb.DBRaceMember{
Uid: users[v].user.Uid,
Name: users[v].user.Name,
Avatar: users[v].user.Avatar,
Lv: users[v].user.Lv,
Mount: users[v].parkour.Dfmount,
Hp: mount.Hp,
}
}
recommend[i] = users[v].member
}
return
}
//刷新推荐列表
func (this *ModelParkourComp) refreshlist() {
var (
users []*Recommend
c *mongo.Cursor
err error
)
if c, err = this.DB.Find(core.SqlTable(this.TableName), bson.M{"captainid": ""}, options.Find().SetSort(bson.D{{"integral", -1}}).SetSkip(0).SetLimit(100)); err != nil {
this.module.Errorln(err)
return
} else {
result := make([]*pb.DBParkour, 0, c.RemainingBatchLength())
for c.Next(context.Background()) {
tmp := &pb.DBParkour{}
if err = c.Decode(tmp); err != nil {
log.Errorln(err)
} else {
result = append(result, tmp)
}
}
users = make([]*Recommend, len(result))
for i, v := range result {
users[i] = &Recommend{
parkour: v,
user: nil,
}
}
this.lock.Lock()
this.users = users
this.lock.Unlock()
}
}
func (this *ModelParkourComp) queryinfo(uid string) (result *pb.DBParkour, err error) {
result = &pb.DBParkour{}
if err = this.Get(uid, result); err != nil && err != mgo.MongodbNil {
this.module.Errorln(err)
@ -45,12 +149,12 @@ func (this *ModelParkourComp) queryteam(uid string) (result *pb.DBParkour, err e
return
}
result = &pb.DBParkour{
Id: primitive.NewObjectID().Hex(),
Captainid: uid,
State: pb.RaceTeamState_teaming,
Mounts: make(map[string]int32),
Invite: make([]*pb.DBRaceInvite, 0),
Member: []*pb.DBRaceMember{{Uid: tuser.Uid, Name: tuser.Name}},
Id: primitive.NewObjectID().Hex(),
Uid: uid,
State: pb.RaceTeamState_teaming,
Mounts: make(map[string]int32),
Invite: make([]*pb.DBRaceInvite, 0),
Member: []*pb.DBRaceMember{},
}
if err = this.Add(uid, result); err != nil {
this.module.Errorln(err)
@ -61,7 +165,7 @@ func (this *ModelParkourComp) queryteam(uid string) (result *pb.DBParkour, err e
return
}
func (this *ModelParkourComp) queryteams(uids []string) (results []*pb.DBParkour, err error) {
func (this *ModelParkourComp) queryinfos(uids []string) (results []*pb.DBParkour, err error) {
results = make([]*pb.DBParkour, 0)
var (
onfound []string
@ -79,12 +183,12 @@ func (this *ModelParkourComp) queryteams(uids []string) (results []*pb.DBParkour
return
}
temp := &pb.DBParkour{
Id: primitive.NewObjectID().Hex(),
Captainid: v,
State: pb.RaceTeamState_teaming,
Mounts: make(map[string]int32),
Invite: make([]*pb.DBRaceInvite, 0),
Member: []*pb.DBRaceMember{{Uid: tuser.Uid, Name: tuser.Name}},
Id: primitive.NewObjectID().Hex(),
Uid: v,
State: pb.RaceTeamState_teaming,
Mounts: make(map[string]int32),
Invite: make([]*pb.DBRaceInvite, 0),
Member: []*pb.DBRaceMember{},
}
newdata[v] = temp
}
@ -117,16 +221,21 @@ func (this *ModelParkourComp) addUserMounts(uid string, mounts map[string]int32)
return
}
result = &pb.DBParkour{
Id: primitive.NewObjectID().Hex(),
Captainid: uid,
State: pb.RaceTeamState_teaming,
Invite: make([]*pb.DBRaceInvite, 0),
Mounts: make(map[string]int32),
Member: []*pb.DBRaceMember{{Uid: tuser.Uid, Name: tuser.Name}},
Id: primitive.NewObjectID().Hex(),
Uid: uid,
State: pb.RaceTeamState_teaming,
Invite: make([]*pb.DBRaceInvite, 0),
Mounts: make(map[string]int32),
Member: []*pb.DBRaceMember{},
}
for k, _ := range mounts {
result.Mounts[k] = 0
if result.Dfmount == "" {
result.Dfmount = k
}
}
if err = model.Add(uid, result); err != nil {
this.module.Errorf("err:%v", err)
}
@ -141,11 +250,14 @@ func (this *ModelParkourComp) addUserMounts(uid string, mounts map[string]int32)
}
} else {
if result, err = this.queryteam(uid); err != nil {
if result, err = this.queryinfo(uid); err != nil {
this.module.Errorln(err)
}
for k, _ := range mounts {
result.Mounts[k] = 0
if result.Dfmount == "" {
result.Dfmount = k
}
}
this.Change(uid, map[string]interface{}{
"mounts": result.Mounts,

View File

@ -3,6 +3,7 @@ package parkour
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go_dreamfactory/sys/db"
@ -37,3 +38,15 @@ func (this *ModelRaceComp) delrace(id string) (err error) {
}
return
}
//查询用户重置数据
func (this *ModelRaceComp) queryraces() (result []*pb.DBRace, err error) {
result = make([]*pb.DBRace, 0)
if err = this.GetList("", &result); err != nil && err != mgo.MongodbNil {
this.module.Errorf("err:%v", err)
}
if err == mgo.MongodbNil {
err = nil
}
return
}

View File

@ -1,96 +0,0 @@
package parkour
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/x/bsonx"
)
///竞速数据模块
type ModelTeamComp struct {
modules.MCompModel
module *Parkour
}
//组件初始化接口
func (this *ModelTeamComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, opt core.IModuleOptions) (err error) {
this.TableName = comm.TableParkourTeam
this.MCompModel.Init(service, module, comp, opt)
this.module = module.(*Parkour)
//创建uid索引
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
})
return
}
func (this *ModelTeamComp) queryteam(uid string) (result *pb.DBParkour, err error) {
result = &pb.DBParkour{}
if err = this.Get(uid, result); err != nil && err != mgo.MongodbNil {
this.module.Errorln(err)
return
}
if err == mgo.MongodbNil {
var tuser *pb.DBUser
if tuser = this.module.ModuleUser.GetUser(uid); tuser == nil {
err = fmt.Errorf("no found udata:%s", uid)
return
}
result = &pb.DBParkour{
Id: primitive.NewObjectID().Hex(),
Captainid: uid,
State: pb.RaceTeamState_teaming,
Mounts: make(map[string]int32),
Invite: make([]*pb.DBRaceInvite, 0),
Member: []*pb.DBRaceMember{{Uid: tuser.Uid, Name: tuser.Name}},
}
if err = this.Add(uid, result); err != nil {
this.module.Errorln(err)
return
}
}
err = nil
return
}
func (this *ModelTeamComp) queryteams(uids []string) (results []*pb.DBParkour, err error) {
results = make([]*pb.DBParkour, 0)
var (
onfound []string
newdata map[string]interface{} = make(map[string]interface{})
)
if onfound, err = this.Gets(uids, &results); err != nil {
this.module.Errorln(err)
return
}
if len(onfound) > 0 {
for _, v := range onfound {
var tuser *pb.DBUser
if tuser = this.module.ModuleUser.GetUser(v); tuser == nil {
err = fmt.Errorf("no found udata:%s", v)
return
}
temp := &pb.DBParkour{
Id: primitive.NewObjectID().Hex(),
Captainid: v,
State: pb.RaceTeamState_teaming,
Mounts: make(map[string]int32),
Invite: make([]*pb.DBRaceInvite, 0),
Member: []*pb.DBRaceMember{{Uid: tuser.Uid, Name: tuser.Name}},
}
newdata[v] = temp
}
if err = this.Adds(newdata); err != nil {
this.module.Errorln(err)
return
}
}
return
}

View File

@ -6,6 +6,7 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/base"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/event"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/sys/timewheel"
"go_dreamfactory/modules"
@ -30,8 +31,8 @@ type Parkour struct {
modules.ModuleBase
service base.IRPCXService
api *apiComp
ai *aiComp
configure *configureComp
teamComp *ModelTeamComp
parkourComp *ModelParkourComp
raceComp *ModelRaceComp
lock sync.RWMutex
@ -54,6 +55,7 @@ func (this *Parkour) Init(service core.IService, module core.IModule, options co
func (this *Parkour) Start() (err error) {
err = this.ModuleBase.Start()
this.service.RegisterFunctionName(string(comm.RPC_ParkourMatchSucc), this.createbattle)
event.RegisterGO(comm.EventUserOffline, this.useroffline)
return
}
@ -61,9 +63,10 @@ func (this *Parkour) Start() (err error) {
func (this *Parkour) OnInstallComp() {
this.ModuleBase.OnInstallComp()
this.api = this.RegisterComp(new(apiComp)).(*apiComp)
this.ai = this.RegisterComp(new(aiComp)).(*aiComp)
this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
this.teamComp = this.RegisterComp(new(ModelTeamComp)).(*ModelTeamComp)
this.parkourComp = this.RegisterComp(new(ModelParkourComp)).(*ModelParkourComp)
this.raceComp = this.RegisterComp(new(ModelRaceComp)).(*ModelRaceComp)
}
//添加坐骑资源
@ -84,8 +87,9 @@ func (this *Parkour) AddMounts(session comm.IUserSession, mounts map[string]int3
//匹配
func (this *Parkour) match(team *pb.DBParkour) (err error) {
ctx, _ := context.WithTimeout(context.Background(), time.Second*5)
err = this.service.RpcCall(
context.Background(),
ctx,
comm.Service_Mainte,
string(comm.RPC_ParkourJoinMatch),
&pb.RPCParkourJoinMatchReq{Captainid: team.Captainid, Member: team.Member},
@ -103,8 +107,6 @@ func (this *Parkour) createbattle(ctx context.Context, req *pb.RPCParkourMatchSu
race *pb.DBRace
battle *RaceItem
sessions []comm.IUserSession = make([]comm.IUserSession, 0)
teams []*pb.DBParkour
users []string = make([]string, 0)
)
this.Debug("createbattle", log.Field{Key: "req", Value: req.String()})
@ -115,43 +117,49 @@ func (this *Parkour) createbattle(ctx context.Context, req *pb.RPCParkourMatchSu
Bulemember: req.Bule,
}
battle = &RaceItem{
Id: race.Id,
RedSession: make([]comm.IUserSession, 0),
BuleSession: make([]comm.IUserSession, 0),
overtimer: timewheel.Add(time.Minute*3, this.overtimer, race.Id),
Id: race.Id,
Session: make(map[string]comm.IUserSession),
overtimer: timewheel.Add(time.Minute*3, this.overtimer, race.Id),
}
for _, v := range req.Red {
users = append(users, v.Uid)
session, online := this.GetUserSession(v.Uid)
v.Isoff = !online
if online {
battle.RedSession = append(battle.RedSession, session)
v.Hp = 6
if !v.Isai { //非AI
session, online := this.GetUserSession(v.Uid)
v.Isoff = !online
if online {
battle.Session[v.Uid] = session
}
} else {
v.Ready = true
}
}
battle.RedMember = req.Red
for _, v := range req.Bule {
users = append(users, v.Uid)
session, online := this.GetUserSession(v.Uid)
v.Isoff = !online
if online {
battle.BuleSession = append(battle.BuleSession, session)
v.Hp = 6
if !v.Isai { //非AI
session, online := this.GetUserSession(v.Uid)
v.Isoff = !online
if online {
battle.Session[v.Uid] = session
}
} else {
v.Ready = true
}
}
for _, v := range battle.Session {
sessions = append(sessions, v)
}
battle.BuleMember = req.Bule
if teams, err = this.teamComp.queryteams(users); err != nil {
return
}
for _, v := range teams {
v.State = pb.RaceTeamState_raceing
}
if err = this.raceComp.addrace(race); err != nil {
return
}
this.lock.Lock()
this.battles[race.Id] = battle
this.lock.Unlock()
if err = this.SendMsgToSession(string(comm.ModulePvp), "racematchsucc", &pb.ParkourRaceMatchSuccPush{
if err = this.SendMsgToSession(string(this.GetType()), "racematchsucc", &pb.ParkourRaceMatchSuccPush{
Race: race,
}, sessions...); err != nil {
this.Errorln(err)
@ -164,6 +172,7 @@ func (this *Parkour) startbattle(id string) {
var (
battle *RaceItem
ok bool
member []*pb.DBRaceMember = make([]*pb.DBRaceMember, 0)
sessions []comm.IUserSession = make([]comm.IUserSession, 0)
err error
)
@ -171,9 +180,25 @@ func (this *Parkour) startbattle(id string) {
battle, ok = this.battles[id]
this.lock.RUnlock()
if ok {
sessions = append(sessions, battle.RedSession...)
sessions = append(sessions, battle.BuleSession...)
if err = this.SendMsgToSession(string(comm.ModulePvp), "finish", &pb.ParkourRaceStartPush{
for _, v := range battle.RedMember {
if v.Isai {
member = append(member, v)
}
}
for _, v := range battle.BuleMember {
if v.Isai {
member = append(member, v)
}
}
if err = this.ai.createAi(battle.Id, member); err != nil {
this.Errorln(err)
return
}
for _, v := range battle.Session {
sessions = append(sessions, v)
}
if err = this.SendMsgToSession(string(this.GetType()), "racestart", &pb.ParkourRaceStartPush{
Countdown: 3,
}, sessions...); err != nil {
this.Errorln(err)
@ -185,6 +210,7 @@ func (this *Parkour) shot(id string, uid string) {
this.Debug("shot", log.Field{Key: "id", Value: id})
var (
battle *RaceItem
side int32
ok bool
sessions []comm.IUserSession = make([]comm.IUserSession, 0)
err error
@ -193,10 +219,34 @@ func (this *Parkour) shot(id string, uid string) {
battle, ok = this.battles[id]
this.lock.RUnlock()
if ok {
sessions = append(sessions, battle.RedSession...)
sessions = append(sessions, battle.BuleSession...)
if err = this.SendMsgToSession(string(comm.ModulePvp), "finish", &pb.ParkourRaceStartPush{
Countdown: 3,
for _, v := range battle.RedMember {
if v.Uid == uid {
ok = true
side = 1
}
}
if !ok {
for _, v := range battle.BuleMember {
if v.Uid == uid {
ok = true
side = 2
}
}
}
if side == 1 {
battle.RedScore += 3
} else {
battle.BuleScore += 3
}
for _, v := range battle.Session {
sessions = append(sessions, v)
}
if err = this.SendMsgToSession(string(this.GetType()), "scorechanage", &pb.ParkourScoreChanagePush{
Redscore: battle.RedScore,
Redenergy: battle.RedEnergy,
Bluescore: battle.BuleScore,
Blueenergy: battle.BuleEnergy,
}, sessions...); err != nil {
this.Errorln(err)
}
@ -208,6 +258,8 @@ func (this *Parkour) avoid(id string, uid string, dis int32) {
var (
battle *RaceItem
ok bool
side int32
member *pb.DBRaceMember
sessions []comm.IUserSession = make([]comm.IUserSession, 0)
err error
)
@ -215,10 +267,56 @@ func (this *Parkour) avoid(id string, uid string, dis int32) {
battle, ok = this.battles[id]
this.lock.RUnlock()
if ok {
sessions = append(sessions, battle.RedSession...)
sessions = append(sessions, battle.BuleSession...)
if err = this.SendMsgToSession(string(comm.ModulePvp), "finish", &pb.ParkourRaceStartPush{
Countdown: 3,
ok = false
for _, v := range battle.RedMember {
if v.Uid == uid {
member = v
ok = true
side = 1
}
}
if !ok {
for _, v := range battle.BuleMember {
if v.Uid == uid {
member = v
ok = true
side = 2
}
}
}
if !ok {
this.Error("躲避障碍物逻辑异常 未找到玩家!", log.Field{Key: "battleid", Value: id}, log.Field{Key: "uid", Value: uid})
return
}
for _, v := range battle.Session {
sessions = append(sessions, v)
}
if dis < 0 {
member.Hp--
if member.Hp < 0 {
// timewheel.Add(time.Second*10, this.resurrectiontimer, battle.Id, member.Uid)
}
} else {
if side == 1 {
battle.RedEnergy += 3
} else {
battle.BuleEnergy += 3
}
if err = this.SendMsgToSession(string(this.GetType()), "playerhpchanage", &pb.ParkourScoreChanagePush{
Redscore: battle.RedScore,
Redenergy: battle.RedEnergy,
Bluescore: battle.BuleScore,
Blueenergy: battle.BuleEnergy,
}, sessions...); err != nil {
this.Errorln(err)
}
}
if err = this.SendMsgToSession(string(this.GetType()), "playerhpchanage", &pb.ParkourPlayerHPChanagePush{
Uid: uid,
Hp: member.Hp,
}, sessions...); err != nil {
this.Errorln(err)
}
@ -231,6 +329,7 @@ func (this *Parkour) overtimer(task *timewheel.Task, args ...interface{}) {
var (
battle *RaceItem
ok bool
side int32
sessions []comm.IUserSession = make([]comm.IUserSession, 0)
err error
)
@ -243,15 +342,299 @@ func (this *Parkour) overtimer(task *timewheel.Task, args ...interface{}) {
delete(this.battles, id)
this.lock.Unlock()
this.raceComp.delrace(id)
sessions = append(sessions, battle.RedSession...)
sessions = append(sessions, battle.BuleSession...)
if err = this.SendMsgToSession(string(comm.ModulePvp), "finish", &pb.ParkourRaceOverPush{
Race: &pb.DBRace{
Id: battle.Id,
},
this.ai.removeAi(id)
if battle.RedScore > battle.BuleScore {
side = 1
} else {
side = 2
}
for _, v := range battle.Session {
sessions = append(sessions, v)
}
if err = this.SendMsgToSession(string(this.GetType()), "raceover", &pb.ParkourRaceOverPush{
Winside: side,
}, sessions...); err != nil {
this.Errorln(err)
return
}
for _, v := range battle.RedMember {
if !v.Isai {
if err = this.parkourComp.Change(v.Uid, map[string]interface{}{
"captainid": "",
"state": 0,
"invite": []*pb.DBRaceInvite{},
"member": []*pb.DBRaceMember{},
}); err != nil {
this.Errorln(err)
return
}
}
}
for _, v := range battle.BuleMember {
if !v.Isai {
if err = this.parkourComp.Change(v.Uid, map[string]interface{}{
"captainid": "",
"state": 0,
"invite": []*pb.DBRaceInvite{},
"member": []*pb.DBRaceMember{},
}); err != nil {
this.Errorln(err)
return
}
}
}
}
}
//用户离线处理
func (this *Parkour) useroffline(uid, sessionid string) {
var (
info *pb.DBParkour
team *pb.DBParkour
member *pb.DBRaceMember
users []string
index int32
err error
)
if info, err = this.parkourComp.queryinfo(uid); err != nil {
this.Error("用户离线!", log.Field{Key: "err", Value: err.Error()})
return
}
if info.State == pb.RaceTeamState_teaming {
if info.Captainid == uid {
info.Invite = info.Invite[:0]
info.Member = info.Member[:0]
if err = this.parkourComp.Change(uid, map[string]interface{}{
"captainid": "",
"state": 0,
"Invite": info.Invite,
"member": info.Member,
}); err != nil {
this.Error("用户离线! 处理数据", log.Field{Key: "uid", Value: uid}, log.Field{Key: "err", Value: err.Error()})
return
}
users = make([]string, 0)
for _, v := range info.Member {
if v.Uid != uid && !v.Isai {
users = append(users, v.Uid)
if err = this.parkourComp.Change(v.Uid, map[string]interface{}{
"captainid": "",
"state": 0,
}); err != nil {
this.Error("用户离线! 解散队伍处理", log.Field{Key: "uid", Value: v.Uid}, log.Field{Key: "err", Value: err.Error()})
return
}
}
}
if len(users) > 0 {
if err = this.SendMsgToUsers(string(comm.ModulePvp), "teamdisbandnotice", &pb.ParkourTeamDisbandNoticePush{}, users...); err != nil {
this.Errorln(err)
}
}
} else {
if team, err = this.parkourComp.queryinfo(info.Captainid); err != nil {
this.Error("用户离线!", log.Field{Key: "Captainid", Value: info.Captainid}, log.Field{Key: "err", Value: err.Error()})
return
}
users = make([]string, 0)
for i, v := range team.Member {
if v.Uid == uid {
index = int32(i)
member = v
continue
}
if v.Uid != uid && !v.Isai {
users = append(users, v.Uid)
}
}
team.Member = append(team.Member[0:index], team.Member[index+1:]...)
if err = this.parkourComp.Change(team.Uid, map[string]interface{}{
"member": team.Member,
}); err != nil {
this.Error("用户离线! 解散队伍处理", log.Field{Key: "uid", Value: team.Uid}, log.Field{Key: "err", Value: err.Error()})
return
}
if len(users) > 0 {
this.SendMsgToUsers(string(this.GetType()), "teamquitnotice",
&pb.ParkourTeamQuitNoticePush{Member: member}, users...)
this.SendMsgToUsers(string(this.GetType()), "teamchanage",
&pb.ParkourTeamChanagePush{Team: team}, users...)
}
}
} else if info.State == pb.RaceTeamState_matching {
if info.Captainid == uid {
err = this.service.RpcCall(
context.Background(),
comm.Service_Mainte,
string(comm.RPC_ParkourCancelMatch),
&pb.RPCParkourCancelMatchReq{Captainid: info.Captainid},
&pb.RPCParkourCancelMatchResp{})
if err != nil {
this.Errorln(err)
return
}
if err = this.parkourComp.Change(uid, map[string]interface{}{
"captainid": "",
"state": 0,
"Invite": info.Invite,
"member": info.Member,
}); err != nil {
this.Error("用户离线! 处理数据", log.Field{Key: "uid", Value: uid}, log.Field{Key: "err", Value: err.Error()})
return
}
users = make([]string, 0)
for _, v := range info.Member {
if v.Uid != uid && !v.Isai {
users = append(users, v.Uid)
if err = this.parkourComp.Change(v.Uid, map[string]interface{}{
"captainid": "",
"state": 0,
}); err != nil {
this.Error("用户离线! 解散队伍处理", log.Field{Key: "uid", Value: v.Uid}, log.Field{Key: "err", Value: err.Error()})
return
}
}
}
if len(users) > 0 {
if err = this.SendMsgToUsers(string(comm.ModulePvp), "teamdisbandnotice", &pb.ParkourTeamDisbandNoticePush{}, users...); err != nil {
this.Errorln(err)
}
}
}
} else if info.State == pb.RaceTeamState_raceing {
var (
lockpath string = fmt.Sprintf("%s/%s", this.service.GetType(), this.service.GetId())
result []*pb.DBRace
)
if result, err = this.raceComp.queryraces(); err != nil {
this.Errorln(err)
return
}
for _, v := range result {
for _, v1 := range v.Redmember {
if !v1.Isai && v1.Uid == uid {
if lockpath == v.ServicePath {
this.trusteeship(context.Background(), &pb.RPC_ParkourTrusteeshipReq{Battleid: v.Id, Uid: uid}, nil)
return
} else {
ctx, _ := context.WithTimeout(context.Background(), time.Second*5)
_, err = this.service.RpcGo(
ctx,
comm.Service_Mainte,
string(comm.RPC_ParkourJoinMatch),
&pb.RPC_ParkourTrusteeshipReq{Battleid: v.Id, Uid: uid},
nil)
if err != nil {
this.Errorln(err)
return
}
return
}
}
}
for _, v1 := range v.Bulemember {
if !v1.Isai && v1.Uid == uid {
if lockpath == v.ServicePath {
this.trusteeship(context.Background(), &pb.RPC_ParkourTrusteeshipReq{Battleid: v.Id, Uid: uid}, nil)
return
} else {
ctx, _ := context.WithTimeout(context.Background(), time.Second*5)
_, err = this.service.RpcGo(
ctx,
comm.Service_Mainte,
string(comm.RPC_ParkourJoinMatch),
&pb.RPC_ParkourTrusteeshipReq{Battleid: v.Id, Uid: uid},
nil)
if err != nil {
this.Errorln(err)
return
}
return
}
}
}
}
}
}
//托管
func (this *Parkour) trusteeship(ctx context.Context, req *pb.RPC_ParkourTrusteeshipReq, resp *pb.RPC_ParkourTrusteeshipResp) (err error) {
var (
battle *RaceItem
ok bool
)
this.lock.RLock()
battle, ok = this.battles[req.Battleid]
this.lock.RUnlock()
if ok {
battle.lock.Lock()
for _, v := range battle.BuleMember {
if v.Uid == v.Uid {
v.Isoff = true
}
}
for _, v := range battle.RedMember {
if v.Uid == v.Uid {
v.Isoff = true
}
}
delete(battle.Session, req.Uid)
battle.lock.Unlock()
}
return
}
func (this *Parkour) resurrectiontimer(task *timewheel.Task, args ...interface{}) {
var (
battleid string
uid string
battle *RaceItem
member *pb.DBRaceMember
sessions []comm.IUserSession = make([]comm.IUserSession, 0)
ok bool
err error
)
battleid = args[0].(string)
uid = args[1].(string)
this.lock.RLock()
battle, ok = this.battles[battleid]
this.lock.RUnlock()
if ok {
ok = false
for _, v := range battle.RedMember {
if v.Uid == uid {
member = v
ok = true
}
}
if !ok {
for _, v := range battle.BuleMember {
if v.Uid == uid {
member = v
ok = true
}
}
}
if ok {
member.Hp = 2
for _, v := range battle.Session {
sessions = append(sessions, v)
}
if err = this.SendMsgToSession(string(this.GetType()), "playerhpchanage", &pb.ParkourPlayerHPChanagePush{
Uid: uid,
Hp: member.Hp,
}, sessions...); err != nil {
this.Errorln(err)
}
}
}
}

View File

@ -0,0 +1,18 @@
package parkour_test
import (
"fmt"
"testing"
"time"
)
func Test_Time(t *testing.T) {
currt := time.Now().Format("15:04")
fmt.Printf(currt)
if currt > "13:10" && currt < "16:30" {
fmt.Printf("true")
} else {
fmt.Printf("false")
}
}

View File

@ -34,7 +34,7 @@ func (this *apiComp) NPCBattkleFinish(session comm.IUserSession, req *pb.Practic
}
if req.Report.WinSide == 1 {
room.Npcstate = 2
room.Npcstate = 3
if conf, err = this.module.configure.getDispatchBattleData(room.Currnpc); err != nil {
code = pb.ErrorCode_ConfigNoFound
return

View File

@ -3,7 +3,6 @@ package practice
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
)
//参数校验
@ -14,32 +13,32 @@ func (this *apiComp) NPCDialogCheck(session comm.IUserSession, req *pb.PracticeN
///npc 此协议废弃 不用
func (this *apiComp) NPCDialog(session comm.IUserSession, req *pb.PracticeNPCDialogReq) (code pb.ErrorCode, data *pb.ErrorData) {
var (
err error
room *pb.DBPracticeRoom
// conf *cfg.GameDispatch_BattleData
)
if room, err = this.module.modelPandata.queryUserMartialhall(session.GetUserId()); err != nil {
code = pb.ErrorCode_DBError
return
}
if room.Npcstate != 2 {
code = pb.ErrorCode_ReqParameterError
return
}
// if conf, err = this.module.configure.getDispatchBattleData(room.Currnpc); err != nil {
// code = pb.ErrorCode_ConfigNoFound
// var (
// err error
// room *pb.DBPracticeRoom
// // conf *cfg.GameDispatch_BattleData
// )
// if room, err = this.module.modelPandata.queryUserMartialhall(session.GetUserId()); err != nil {
// code = pb.ErrorCode_DBError
// return
// }
// if code = this.module.DispenseRes(session, conf.StoryAward, true); code != pb.ErrorCode_Success {
// if room.Npcstate != 2 {
// code = pb.ErrorCode_ReqParameterError
// return
// }
room.Npcstate = 3
room.Refresh = configure.Now().Unix()
this.module.modelPandata.Change(session.GetUserId(), map[string]interface{}{
"npcstate": room.Npcstate,
"refresh": room.Refresh,
})
// // if conf, err = this.module.configure.getDispatchBattleData(room.Currnpc); err != nil {
// // code = pb.ErrorCode_ConfigNoFound
// // return
// // }
// // if code = this.module.DispenseRes(session, conf.StoryAward, true); code != pb.ErrorCode_Success {
// // return
// // }
// room.Npcstate = 3
// room.Refresh = configure.Now().Unix()
// this.module.modelPandata.Change(session.GetUserId(), map[string]interface{}{
// "npcstate": room.Npcstate,
// "refresh": room.Refresh,
// })
session.SendMsg(string(this.module.GetType()), "npcdialog", &pb.PracticeNPCDialogResp{Issucc: true})
return
}

View File

@ -7,6 +7,7 @@ import (
"go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"go.mongodb.org/mongo-driver/bson/primitive"
@ -51,6 +52,8 @@ func (this *modelPandata) queryUserMartialhall(uid string) (result *pb.DBPractic
Pillar3: &pb.DBPracticePillar{Index: 3, Lv: 1},
Pillarf: &pb.DBPracticePillar{Index: 4, Isunlock: 0, Lv: 1},
Statuers: make([]*pb.DBPracticeStatuer, 0),
Npcstate: 3,
Refresh: configure.Now().Unix(),
}
if err = this.refreshnpc(result); err != nil {
this.module.Errorln(err)
@ -90,11 +93,13 @@ func (this *modelPandata) queryrooms(uids []string) (results []*pb.DBPracticeRoo
Pillar3: &pb.DBPracticePillar{Index: 3, Lv: 1},
Pillarf: &pb.DBPracticePillar{Index: 4, Isunlock: 2, Lv: 1},
Statuers: make([]*pb.DBPracticeStatuer, 0),
Npcstate: 3,
Refresh: configure.Now().Unix(),
}
if err = this.refreshnpc(temp); err != nil {
this.module.Errorln(err)
continue
}
// if err = this.refreshnpc(temp); err != nil {
// this.module.Errorln(err)
// continue
// }
go this.module.atlas.CheckActivatePandaAtlasCollect(v, "100001")
newdata[v] = temp
}

View File

@ -136,6 +136,8 @@ func (this *Practice) AddItems(session comm.IUserSession, items map[string]int32
Pillar3: &pb.DBPracticePillar{Index: 3, Lv: 1},
Pillarf: &pb.DBPracticePillar{Index: 4, Isunlock: 0, Lv: 1},
Statuers: make([]*pb.DBPracticeStatuer, 0),
Npcstate: 3,
Refresh: configure.Now().Unix(),
}
id = make([]string, 0)
for k, _ := range items {
@ -143,10 +145,10 @@ func (this *Practice) AddItems(session comm.IUserSession, items map[string]int32
id = append(id, k)
this.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), k)
}
if err = this.modelPandata.refreshnpc(room); err != nil {
this.Errorln(err)
return
}
// if err = this.modelPandata.refreshnpc(room); err != nil {
// this.Errorln(err)
// return
// }
if err = model.Add(session.GetUserId(), room); err != nil {
this.Errorln(err)
return
@ -413,7 +415,7 @@ func (this *Practice) CleanUpNpc(uid string) {
}
result.Refresh = configure.Now().Unix()
this.modelPandata.Change(uid, map[string]interface{}{ // 同步状态即可
model.Change(uid, map[string]interface{}{ // 同步状态即可
"npcstate": 3,
"refresh": result.Refresh,
})

View File

@ -1,6 +1,7 @@
package pvp
import (
"context"
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/base"
@ -399,39 +400,86 @@ func (this *Pvp) userlogin(session comm.IUserSession) {
//用户离线处理
func (this *Pvp) useroffline(uid, sessionid string) {
var (
side int32
data []byte
code pb.ErrorCode
result []*pb.DBPvpBattle
lockpath string = fmt.Sprintf("%s/%s", this.service.GetType(), this.service.GetId())
service map[string][]string = make(map[string][]string)
err error
)
this.lock.RLock()
for _, v := range this.battles {
if result, err = this.modelPvpComp.querypvps(); err != nil {
this.Errorln(err)
return
}
for _, v := range result {
if v.Red.Uid == uid || v.Blue.Uid == uid {
if uid == v.Red.Uid {
side = 1
v.RedOffline = true
} else {
side = 2
v.BlueOffline = true
if service[v.ServicePath] == nil {
service[v.ServicePath] = make([]string, 0)
}
service[v.ServicePath] = append(service[v.ServicePath], v.Id)
}
}
if v.curroperate.Side == side {
if v.operatetimer != nil {
timewheel.Remove(v.operatetimer)
for k, v := range service {
if k == lockpath { //在当前服务器上
this.trusteeship(context.Background(), &pb.RPC_PVPTrusteeshipReq{Battleid: v, Uid: uid}, nil)
} else { //在别的服务器上
ctx, _ := context.WithTimeout(context.Background(), time.Second*5)
_, err = this.service.RpcGo(
ctx,
comm.Service_Mainte,
string(comm.RPC_ParkourJoinMatch),
&pb.RPC_PVPTrusteeshipReq{Battleid: v, Uid: uid},
nil)
if err != nil {
this.Errorln(err)
return
}
}
}
}
//托管
func (this *Pvp) trusteeship(ctx context.Context, req *pb.RPC_PVPTrusteeshipReq, resp *pb.RPC_PVPTrusteeshipResp) (err error) {
var (
battle *BattleItem
ok bool
side int32
data []byte
code pb.ErrorCode
)
for _, bid := range req.Battleid {
this.lock.RLock()
battle, ok = this.battles[bid]
this.lock.RUnlock()
if ok {
if battle.Red.Uid == req.Uid || battle.Blue.Uid == req.Uid {
if req.Uid == battle.Red.Uid {
side = 1
battle.RedOffline = true
} else {
side = 2
battle.BlueOffline = true
}
v.curroperate.Auto = true
data, _ = proto.Marshal(v.curroperate)
if code = this.battle.InCmdBattle(&pb.BattleInCmdReq{
Battleid: v.Id,
Side: v.curroperate.Side,
In: &pb.BattleCmd{
Cmdtype: "ComWaitInputSkill",
Value: data,
},
}); code != pb.ErrorCode_Success {
return
if battle.curroperate.Side == side {
if battle.operatetimer != nil {
timewheel.Remove(battle.operatetimer)
}
battle.curroperate.Auto = true
data, _ = proto.Marshal(battle.curroperate)
if code = this.battle.InCmdBattle(&pb.BattleInCmdReq{
Battleid: battle.Id,
Side: battle.curroperate.Side,
In: &pb.BattleCmd{
Cmdtype: "ComWaitInputSkill",
Value: data,
},
}); code != pb.ErrorCode_Success {
return
}
}
}
}
}
this.lock.RUnlock()
return
}

20
modules/reputation/api.go Normal file
View File

@ -0,0 +1,20 @@
package reputation
import (
"go_dreamfactory/lego/base"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
)
type apiComp struct {
modules.MCompGate
service base.IRPCXService
module *Reputation
}
func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
_ = this.MCompGate.Init(service, module, comp, options)
this.service = service.(base.IRPCXService)
this.module = module.(*Reputation)
return
}

View File

@ -0,0 +1,33 @@
package reputation
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
// 获取阵营天赋属性
func (this *apiComp) GetattrsCheck(session comm.IUserSession, req *pb.ReputationTalentReq) (code pb.ErrorCode) {
return
}
func (this *apiComp) Getattrs(session comm.IUserSession, req *pb.ReputationTalentReq) (code pb.ErrorCode, data *pb.ErrorData) {
uid := session.GetUserId()
rsp := &pb.ReputationTalentResp{}
reputation := this.module.modelReputation.getDBReputation(uid)
if reputation == nil {
code = pb.ErrorCode_DataNotFound
return
}
for _, v := range reputation.Camps {
rsp.Camp = v
}
rsp.AttrGlobal = this.module.modelReputation.mergeAttrs(reputation.Camps)
session.SendMsg(string(this.module.GetType()), "getattrs", rsp)
return
}

View File

@ -0,0 +1,40 @@
package reputation
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
func (this *apiComp) ResetCheck(session comm.IUserSession, req *pb.ReputationTalentresetReq) (code pb.ErrorCode) {
if req.RaceType < 1 && req.RaceType > 4 {
code = pb.ErrorCode_ReqParameterError
}
return
}
func (this *apiComp) Reset(session comm.IUserSession, req *pb.ReputationTalentresetReq) (code pb.ErrorCode, data *pb.ErrorData) {
uid := session.GetUserId()
reputation := this.module.modelReputation.getDBReputation(uid)
if reputation == nil {
code = pb.ErrorCode_DataNotFound
return
}
if v, ok := reputation.Camps[req.RaceType]; ok {
v.Nodes = []*pb.TalentNode{}
}
update := map[string]interface{}{
"camps": reputation.Camps,
}
if err := this.module.modelReputation.Change(uid, update); err != nil {
code = pb.ErrorCode_DBError
return
}
rsp := &pb.ReputationTalentresetResp{}
session.SendMsg(string(this.module.GetType()), "reset", rsp)
return
}

View File

@ -0,0 +1,20 @@
package reputation
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb"
)
func (this *apiComp) TalenttestCheck(session comm.IUserSession, req *pb.ReputationTalenttestReq) (code pb.ErrorCode) {
return
}
func (this *apiComp) Talenttest(session comm.IUserSession, req *pb.ReputationTalenttestReq) (code pb.ErrorCode, data *pb.ErrorData) {
rsp := &pb.ReputationTalenttestResp{}
lv := this.module.Upgrade(session, req.RaceType, req.FriendValue)
this.module.Debug("声望等级", log.Field{Key: "lv", Value: lv})
session.SendMsg(string(this.module.GetType()), "talenttest", rsp)
return
}

View File

@ -0,0 +1,70 @@
package reputation
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
// 天赋树升级
func (this *apiComp) UpgradeCheck(session comm.IUserSession, req *pb.ReputationUpgradeReq) (code pb.ErrorCode) {
return
}
func (this *apiComp) Upgrade(session comm.IUserSession, req *pb.ReputationUpgradeReq) (code pb.ErrorCode, data *pb.ErrorData) {
//
uid := session.GetUserId()
rsp := &pb.ReputationUpgradeResp{}
talentCfg := this.module.configure.getTalentNodeCfg(req.NodeId)
if talentCfg == nil {
code = pb.ErrorCode_ConfigNoFound
return
}
reputation := this.module.modelReputation.getDBReputation(uid)
if reputation == nil {
code = pb.ErrorCode_DataNotFound
return
}
camp, ok := reputation.Camps[talentCfg.Type]
if !ok {
reputation.Camps[talentCfg.Type] = &pb.Camp{}
}
if code = this.module.CheckRes(session, talentCfg.IconCos); code != pb.ErrorCode_Success {
return
}
if camp != nil {
if len(camp.Nodes) == 0 {
camp.Nodes = append(camp.Nodes, &pb.TalentNode{
Nid: req.NodeId,
})
} else {
for _, v := range camp.Nodes {
//判断是否满级
if req.NodeId == v.Nid && v.Status == 2 {
code = pb.ErrorCode_ReputationTalentFull
return
} else if req.NodeId == v.Nid {
//消耗
if c := this.module.ConsumeRes(session, talentCfg.IconCos, true); c == pb.ErrorCode_Success {
v.Status = 1
camp.CampAttr = this.module.modelReputation.computeAttr(camp.CampAttr, talentCfg.Attribute)
}
break
}
}
}
update := map[string]interface{}{
"camps": reputation.Camps,
}
this.module.modelReputation.updateDBReputation(uid, update)
}
session.SendMsg(string(this.module.GetType()), "upgrade", rsp)
return
}

View File

@ -0,0 +1,69 @@
package reputation
import (
"fmt"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
cfg "go_dreamfactory/sys/configure/structs"
)
const (
gameTalent = "game_talent.json"
gameCampLv = "game_camplv.json"
)
type configureComp struct {
modules.MCompConfigure
}
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompConfigure.Init(service, module, comp, options)
err = this.LoadMultiConfigure(map[string]interface{}{
gameTalent: cfg.NewGameTalent,
gameCampLv: cfg.NewGameCampLv,
})
return
}
// 天赋树配置
func (this *configureComp) getTalentCfg() (data *cfg.GameTalent, err error) {
var (
v interface{}
ok bool
)
if v, err = this.GetConfigure(gameTalent); err != nil {
return
} else {
if data, ok = v.(*cfg.GameTalent); !ok {
err = fmt.Errorf("%T is *cfg.GameTalent", v)
return
}
}
return
}
func (this *configureComp) getTalentNodeCfg(id int32) (data *cfg.GameTalentData) {
gt, err := this.getTalentCfg()
if err != nil {
return
}
data, _ = gt.GetDataMap()[id]
return
}
func (this *configureComp) getCampLvCfg() (data *cfg.GameCampLv, err error) {
var (
v interface{}
ok bool
)
if v, err = this.GetConfigure(gameCampLv); err != nil {
return
} else {
if data, ok = v.(*cfg.GameCampLv); !ok {
err = fmt.Errorf("%T is *cfg.GameCampLv", v)
return
}
}
return
}

View File

@ -0,0 +1,94 @@
package reputation
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"go.mongodb.org/mongo-driver/mongo"
)
type ModelReputation struct {
modules.MCompModel
moduleReputation *Reputation
service core.IService
}
func (this *ModelReputation) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompModel.Init(service, module, comp, options)
this.TableName = comm.TableReputation
this.moduleReputation = module.(*Reputation)
this.service = service
return
}
func(this *ModelReputation) initCamp(reputation *pb.DBReputation){
if reputation!=nil && reputation.Camps == nil{
reputation.Camps = make(map[int32]*pb.Camp)
}
}
// 获取玩家声望数据
func (this *ModelReputation) getDBReputation(uid string) *pb.DBReputation {
reputation := &pb.DBReputation{}
if err := this.Get(uid, reputation); err != nil {
if err == mongo.ErrNoDocuments {
reputation.Uid = uid
reputation.Camps = make(map[int32]*pb.Camp)
if err2 := this.Add(uid, reputation); err2 == nil {
return reputation
}
}
this.moduleReputation.Error("getDBReputation",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "err", Value: err})
}
return reputation
}
// 更新声望数据
func (this *ModelReputation) updateDBReputation(uid string, data map[string]interface{}) {
if err := this.Change(uid, data); err != nil {
this.moduleReputation.Error("updateDBReputation",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "err", Value: err})
}
}
// 阵营属性
func (this *ModelReputation) computeAttr(attr *pb.CampAttr, cfgs []*cfg.Gameatr) *pb.CampAttr {
if attr == nil {
attr = &pb.CampAttr{}
}
for _, v := range cfgs {
switch v.A {
case comm.Hp:
attr.Hp += v.N
case comm.Atk:
attr.Attack += v.N
case comm.Def:
attr.Defense += v.N
case comm.HpPro:
attr.HpPer += v.N
}
}
return attr
}
// 合计所有阵营的属性
func (this *ModelReputation) mergeAttrs(camps map[int32]*pb.Camp) *pb.CampAttr {
totalAttr := &pb.CampAttr{}
for _, v := range camps {
if v.CampAttr != nil {
totalAttr.Hp += v.CampAttr.Hp
totalAttr.Attack += v.CampAttr.Attack
totalAttr.Defense += v.CampAttr.Defense
totalAttr.HpPer += v.CampAttr.HpPer
}
}
return totalAttr
}

View File

@ -0,0 +1,113 @@
package reputation
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/base"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
cfg "go_dreamfactory/sys/configure/structs"
)
var _ comm.IReputation = (*Reputation)(nil)
type Reputation struct {
modules.ModuleBase
api *apiComp
service base.IRPCXService
configure *configureComp
modelReputation *ModelReputation
}
func NewModule() core.IModule {
return &Reputation{}
}
func (this *Reputation) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) {
err = this.ModuleBase.Init(service, module, options)
this.service = service.(base.IRPCXService)
return
}
func (this *Reputation) OnInstallComp() {
this.ModuleBase.OnInstallComp()
this.api = this.RegisterComp(new(apiComp)).(*apiComp)
this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
this.modelReputation = this.RegisterComp(new(ModelReputation)).(*ModelReputation)
}
func (this *Reputation) GetType() core.M_Modules {
return comm.ModuleReputation
}
func (this *Reputation) Start() (err error) {
err = this.ModuleBase.Start()
return
}
// 获取阵营最大等级
// raceType 阵营类型
func (this *Reputation) getCampLvMax(raceType int32) (maxLv int32) {
campLvConf, err := this.configure.getCampLvCfg()
if err != nil {
return
}
arr := campLvConf.GetDataList()
n := len(arr)
if n > 0 {
maxLv = arr[n-1].ReputationLv
} else {
maxLv = -1
}
return
}
// 声望升级
// raceType 阵营 fv 阵营好感度累计值
func (this *Reputation) Upgrade(session comm.IUserSession, raceType int32, fv int32) (lv int32) {
uid := session.GetUserId()
reputation := this.modelReputation.getDBReputation(uid)
if reputation == nil {
return
}
c, ok := reputation.Camps[raceType]
if !ok {
this.Error("阵营不存在",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "raceType", Value: raceType})
return
}
maxLv := this.getCampLvMax(raceType)
if c.ReputationLv == maxLv {
this.Debug("已达到声望最大等级",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "maxLv", Value: c.ReputationLv})
return c.ReputationLv
}
campLvConf, err := this.configure.getCampLvCfg()
if err != nil {
return
}
for _, conf := range campLvConf.GetDataList() {
if conf.RaceType == raceType && conf.ReputationLv == c.ReputationLv {
if fv >= conf.ReputationExp {
//更新等级
c.ReputationLv = c.ReputationLv + 1
update := map[string]interface{}{
"camps": reputation.Camps,
}
this.modelReputation.updateDBReputation(uid, update)
//发放天赋点奖励
this.DispenseRes(session, []*cfg.Gameatn{conf.Reward}, false)
break
}
}
}
return
}

View File

@ -6,6 +6,8 @@ import (
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/sys/db"
"time"
)
/*
@ -25,8 +27,9 @@ type Timer struct {
service base.IRPCXService //rpc服务对象 通过这个对象可以发布服务和调用其他服务的接口
chat *ChatComp //俩天系统定时任务
//season *SeasonPagoda
forum *ForumComp
arena *ArenaComp
forum *ForumComp
arena *ArenaComp
parkour *ParkourComp
}
//模块名
@ -58,6 +61,29 @@ func (this *Timer) OnInstallComp() {
this.chat = this.RegisterComp(new(ChatComp)).(*ChatComp)
//this.season = this.RegisterComp(new(SeasonPagoda)).(*SeasonPagoda)
this.arena = this.RegisterComp(new(ArenaComp)).(*ArenaComp)
this.parkour = this.RegisterComp(new(ParkourComp)).(*ParkourComp)
}
//跨服对象获取数据操作对象
func (this *Timer) getDBModelByUid(uid, tableName string) (model *db.DBModel, err error) {
var (
stag string
conn *db.DBConn
)
if stag, err = comm.UidToSTag(uid); err != nil {
return
}
if stag == this.service.GetTag() {
if conn, err = db.Local(); err != nil {
return
}
} else {
if conn, err = db.ServerDBConn(stag); err != nil {
return
}
}
model = db.NewDBModel(tableName, time.Hour, conn)
return
}
//日志

View File

@ -12,6 +12,11 @@ import (
"go_dreamfactory/lego/base"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/cron"
"go_dreamfactory/lego/sys/log"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
/*
@ -21,6 +26,9 @@ type ParkourComp struct {
modules.MCompConfigure
service base.IRPCXService
module *Timer
refresh time.Time //上一次刷新时间
ulock sync.RWMutex
users []*pb.DBRaceMember //推荐用户信息
lock sync.RWMutex
teams map[string][]*pb.DBRaceMember
total int32
@ -39,10 +47,54 @@ func (this *ParkourComp) Init(service core.IService, module core.IModule, comp c
func (this *ParkourComp) Start() (err error) {
err = this.MCompConfigure.Start()
if db.IsCross() {
this.refreshlist()
this.service.RegisterFunctionName(string(comm.RPC_ParkourJoinMatch), this.join)
if _, err = cron.AddFunc("0 59 23 ? * SAT", this.timer); err != nil {
this.service.RegisterFunctionName(string(comm.RPC_ParkourCancelMatch), this.cancel)
if _, err = cron.AddFunc("5 * * * * ?", this.timer); err != nil {
this.module.Errorf("cron.AddFunc err:%v", err)
}
if _, err = cron.AddFunc("1 1 * * * ?", this.refreshlist); err != nil {
this.module.Errorf("cron.AddFunc err:%v", err)
}
}
return
}
//刷新推荐列表
func (this *ParkourComp) refreshlist() {
var (
c *mongo.Cursor
conn *db.DBConn
err error
)
if conn, err = db.Local(); err != nil {
return
}
if c, err = conn.Mgo.Find(core.SqlTable(comm.TableParkour), bson.M{}, options.Find().SetSort(bson.D{{"integral", -1}}).SetSkip(0).SetLimit(100)); err != nil {
this.module.Errorln(err)
return
} else {
result := make([]*pb.DBParkour, 0, c.RemainingBatchLength())
for c.Next(context.Background()) {
tmp := &pb.DBParkour{}
if err = c.Decode(tmp); err != nil {
log.Errorln(err)
} else {
result = append(result, tmp)
}
}
this.ulock.Lock()
this.users = this.users[:0]
for _, v := range result {
this.users = append(this.users, &pb.DBRaceMember{
Uid: v.Uid,
Mount: v.Dfmount,
Hp: 6,
Isai: true,
})
}
this.ulock.Unlock()
}
return
}
@ -135,7 +187,228 @@ func (this *ParkourComp) join(ctx context.Context, req *pb.RPCParkourJoinMatchRe
return
}
//加入匹配中
func (this *ParkourComp) cancel(ctx context.Context, req *pb.RPCParkourCancelMatchReq, resp *pb.RPCParkourCancelMatchResp) (err error) {
this.lock.Lock()
delete(this.teams, req.Captainid)
this.lock.Unlock()
return
}
//定时匹配处理
func (this *ParkourComp) timer() {
if this.total == 0 {
return
}
this.ulock.RLock()
this.ulock.RUnlock()
this.lock.Lock()
defer this.lock.Unlock()
var (
ok bool
err error
users []*pb.DBRaceMember
teams1 []string = make([]string, 0)
teams2 []string = make([]string, 0)
teams3 []string = make([]string, 0)
left int32 = this.total
red []string = make([]string, 0)
rednum int = 0
reduser []*pb.DBRaceMember = make([]*pb.DBRaceMember, 0)
bule []string = make([]string, 0)
bulenum int = 0
buleuser []*pb.DBRaceMember = make([]*pb.DBRaceMember, 0)
order bool = false
)
for k, v := range this.teams {
if len(v) == 1 {
teams1 = append(teams1, k)
} else if len(v) == 2 {
teams2 = append(teams2, k)
} else {
teams3 = append(teams3, k)
}
}
this.ulock.Lock()
users = make([]*pb.DBRaceMember, 0, len(this.users))
for _, v1 := range this.users {
ok = false
for _, v := range this.teams {
for _, v2 := range v {
if v1.Uid == v2.Uid {
ok = true
}
}
}
if !ok { //过滤掉已存在的人员
users = append(users, v1)
}
}
this.ulock.Unlock()
if len(users)+int(this.total) < 6 { //人员不足
return
}
var fn = func() {
if order {
//找红队
if rednum <= 0 && len(teams3) > 0 {
red = append(red, teams3[0])
teams3 = teams3[1:]
rednum = 3
left -= 3
} else if rednum <= 1 && len(teams2) > 0 {
red = append(red, teams2[0])
teams2 = teams2[1:]
rednum = 2
left -= 2
} else if rednum <= 2 && len(teams1) > 0 {
red = append(red, teams1[0])
teams1 = teams1[1:]
rednum = 1
left -= 1
}
//找蓝队
if bulenum <= 0 && len(teams3) > 0 {
bule = append(bule, teams3[0])
teams3 = teams3[1:]
bulenum = 3
left -= 3
} else if bulenum <= 1 && len(teams2) > 0 {
bule = append(bule, teams2[0])
teams2 = teams2[1:]
bulenum = 2
left -= 2
} else if bulenum <= 2 && len(teams1) > 0 {
bule = append(bule, teams1[0])
teams1 = teams1[1:]
bulenum = 1
left -= 1
}
} else {
//找蓝队
if bulenum <= 0 && len(teams3) > 0 {
bule = append(bule, teams3[0])
teams3 = teams3[1:]
bulenum = 3
left -= 3
} else if bulenum <= 1 && len(teams2) > 0 {
bule = append(bule, teams2[0])
teams2 = teams2[1:]
bulenum = 2
left -= 2
} else if bulenum <= 2 && len(teams1) > 0 {
bule = append(bule, teams1[0])
teams1 = teams1[1:]
bulenum = 1
left -= 1
}
//找红队
if rednum <= 0 && len(teams3) > 0 {
red = append(red, teams3[0])
teams3 = teams3[1:]
rednum = 3
left -= 3
} else if rednum <= 1 && len(teams2) > 0 {
red = append(red, teams2[0])
teams2 = teams2[1:]
rednum = 2
left -= 2
} else if rednum <= 2 && len(teams1) > 0 {
red = append(red, teams1[0])
teams1 = teams1[1:]
rednum = 1
left -= 1
}
}
order = !order
}
fn()
if (rednum < 3 || bulenum < 3) && left > 0 {
_lt := left
fn()
if left < _lt {
fn() //做多执行三次即可
}
}
for _, v := range red {
reduser = append(reduser, this.teams[v]...)
}
for _, v := range bule {
buleuser = append(reduser, this.teams[v]...)
}
if len(users)+rednum+bulenum < 6 {
return
}
//补充人员
if len(reduser) < 3 {
reduser = append(reduser, users[0:(3-len(reduser))]...)
users = users[(3 - len(reduser)):]
for _, v := range reduser[rednum:3] {
if v.Name == "" { //同步用户数据
if user, err := this.getuser(v.Uid); err != nil {
this.module.Errorln(err)
return
} else {
v.Name = user.Name
v.Avatar = user.Avatar
}
}
}
}
if len(buleuser) < 3 {
buleuser = append(buleuser, users[0:(3-len(buleuser))]...)
users = users[(3 - len(buleuser)):]
for _, v := range buleuser[bulenum:3] {
if v.Name == "" { //同步用户数据
if user, err := this.getuser(v.Uid); err != nil {
this.module.Errorln(err)
return
} else {
v.Name = user.Name
v.Avatar = user.Avatar
}
}
}
}
ctx, _ := context.WithTimeout(context.Background(), time.Second*2)
if err = this.service.RpcCall(ctx,
comm.Service_Worker,
string(comm.RPC_ParkourMatchSucc),
&pb.RPCParkourMatchSuccReq{Red: reduser, Bule: buleuser},
&pb.RPCParkourMatchSuccResp{},
); err != nil {
this.module.Errorln(err)
return
}
for _, v := range red {
delete(this.teams, v)
}
for _, v := range bule {
delete(this.teams, v)
}
this.total -= int32(rednum)
this.total -= int32(bulenum)
}
// 从远程库查询用户
func (this *ParkourComp) getuser(uid string) (user *pb.DBUser, err error) {
var (
model *db.DBModel
)
if model, err = this.module.getDBModelByUid(uid, comm.TableUser); err != nil {
return
}
user = &pb.DBUser{}
if err = model.Get(uid, user); err != nil {
this.module.Errorln(err)
}
return
}

View File

@ -42,6 +42,10 @@ func (this *ModelUser) Init(service core.IService, module core.IModule, comp cor
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
Keys: bsonx.Doc{{Key: "name", Value: bsonx.Int32(1)}},
})
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
Keys: bsonx.Doc{{Key: "logintime", Value: bsonx.Int32(1)}},
})
return
}

View File

@ -353,6 +353,14 @@ func (this *User) QueryAttributeValue(uid string, attr string) (value int64) {
return int64(userEx.FriendPoint)
case comm.Moongold:
return int64(user.Moongold)
case comm.Talent1:
return int64(user.Talent1)
case comm.Talent2:
return int64(user.Talent2)
case comm.Talent3:
return int64(user.Talent3)
case comm.Talent4:
return int64(user.Talent4)
}
return
}
@ -488,6 +496,38 @@ func (this *User) change(session comm.IUserSession, attr string, add int32) (cha
return
}
change.Ps += add
case comm.Talent1:
if add < 0 {
if user.Talent1+add < 0 {
code = pb.ErrorCode_UserTalent1NoEnough
return
}
}
change.Talent1 += add
case comm.Talent2:
if add < 0 {
if user.Talent2+add < 0 {
code = pb.ErrorCode_UserTalent2NoEnough
return
}
}
change.Talent2 += add
case comm.Talent3:
if add < 0 {
if user.Talent3+add < 0 {
code = pb.ErrorCode_UserTalent3NoEnough
return
}
}
change.Talent3 += add
case comm.Talent4:
if add < 0 {
if user.Talent4+add < 0 {
code = pb.ErrorCode_UserTalent4NoEnough
return
}
}
change.Talent4 += add
default:
err = errors.New(fmt.Sprintf("%s no supported", attr))
return
@ -502,6 +542,7 @@ func (this *User) change(session comm.IUserSession, attr string, add int32) (cha
comm.StarCoin: change.Starcoin,
comm.ResPs: change.Ps,
comm.Moongold: change.Moongold,
comm.Talent1: change.Talent1,
}
//user ex

View File

@ -41,6 +41,7 @@ func (this *apiComp) CompleteCondi(session comm.IUserSession, req *pb.WorldtaskC
return
}
myWorldtask.Uid = uid
wt := myWorldtask.CurrentTask[req.GroupId]
if m, err := this.module.service.GetModule(comm.ModuleRtask); err == nil {
iwt, ok := m.(comm.IRtask)
@ -77,5 +78,10 @@ func (this *apiComp) CompleteCondi(session comm.IUserSession, req *pb.WorldtaskC
session.SendMsg(string(this.module.GetType()), "completecondi", rsp)
//结束任务
if curTaskConf.DeliverNpc == 0 {
this.module.modelWorldtask.taskFinish(session, req.GroupId, req.TaskId, myWorldtask, curTaskConf)
this.module.modelWorldtask.taskFinishPush(session, req.GroupId, myWorldtask, curTaskConf)
}
return
}

View File

@ -72,7 +72,7 @@ func (this *Worldtask) TaskCondFinishNotify(session comm.IUserSession, condId in
if v == condId {
//校验任务是否是当前任务
if task, ok := userTask.CurrentTask[c.Group]; ok {
if task.NpcStatus == 1 && c.Key == task.TaskId{
if task.NpcStatus == 1 && c.Key == task.TaskId {
finishedTaskIds[c.Group] = c.Key
groupId = c.Group
taskId = c.Key
@ -141,81 +141,72 @@ func (this *Worldtask) GetMyWorldtask(uid string) *pb.DBWorldtask {
return wt
}
func (this *Worldtask) BingoAllTask(session comm.IUserSession) error {
// uid := session.GetUserId()
// mytask := &pb.DBWorldtask{Uid: uid}
// tasklist := this.worldtaskConf.GetDataList()
// for _, conf := range tasklist {
// //世界任务配置
// wt := &pb.Worldtask{
// TaskId: conf.Key,
// TaskType: conf.Des,
// }
// mytask.TaskList = append(mytask.TaskList, wt)
// }
// if err := this.modelWorldtask.Add(uid, mytask); err != nil {
// return err
// }
// rsp := &pb.WorldtaskFinishIdsPush{
// TaskList: mytask.TaskList,
// }
return nil //session.SendMsg(string(this.GetType()), "finishids", rsp)
}
// bingo世界任务跳跃 支持回退
func (this *Worldtask) BingoJumpTask(session comm.IUserSession, groupId, taskId int32) error {
// uid := session.GetUserId()
// mytask, err := this.modelWorldtask.getWorldtask(uid)
// if err != nil {
// return err
// }
// mytask.Uid = uid
// // 更新数据
// update := map[string]interface{}{}
uid := session.GetUserId()
// taskConf := this.worldtaskConf.GetDataMap()[taskId]
// if taskConf == nil {
// return fmt.Errorf("taskId: %v config is nil", taskId)
// }
mytask, err := this.modelWorldtask.getWorldtask(uid)
if err != nil {
return err
}
// //重置taskList
// mytask.TaskList = []*pb.Worldtask{}
if mytask == nil {
mytask = &pb.DBWorldtask{}
mytask.Uid = uid
if err := this.modelWorldtask.Add(uid, mytask); err != nil {
this.Error("添加世界任务失败", log.Field{Key: "uid", Value: uid}, log.Field{Key: "err", Value: err})
return err
}
}
// //遍历
// if taskConf.Ontxe != 0 && taskConf.IdAfter != 0 {
// for _, v := range this.worldtaskConf.GetDataList() {
// if v.Group == groupId && v.Key <= taskId {
// wt := &pb.Worldtask{
// TaskId: v.Key,
// TaskType: v.Des,
// }
// mytask.TaskList = append(mytask.TaskList, wt)
// }
if _, ok := utils.Findx(mytask.TaskList, taskId); ok {
this.Error("GM 任务已完成", log.Field{Key: "taskId", Value: taskId})
return comm.NewCustomError(pb.ErrorCode_WorldtaskFinihed)
}
// }
// } else {
// wt := &pb.Worldtask{
// TaskId: taskId,
// TaskType: taskConf.Des,
// }
// mytask.TaskList = append(mytask.TaskList, wt)
// }
// update = map[string]interface{}{
// "taskList": mytask.TaskList,
// }
taskConf := this.worldtaskConf.GetDataMap()[taskId]
if taskConf == nil {
return comm.NewCustomError(pb.ErrorCode_ConfigNoFound)
}
// if err := this.modelWorldtask.Change(uid, update); err != nil {
// return err
// }
//重置taskList
mytask.TaskList = []int32{}
// rsp := &pb.WorldtaskFinishIdsPush{
// TaskList: mytask.TaskList,
// }
//遍历
if taskConf.Ontxe != 0 && taskConf.IdAfter != 0 {
for _, v := range this.worldtaskConf.GetDataList() {
if v.Group == groupId && v.Key <= taskId && v.Des == 2 { //只做主线的des=2
mytask.TaskList = append(mytask.TaskList, v.Key)
}
}
} else {
mytask.TaskList = append(mytask.TaskList, taskId)
}
return nil //session.SendMsg(string(this.GetType()), "finishids", rsp)
update := map[string]interface{}{
"taskList": mytask.TaskList,
}
//当前任务
nextTaskIds := this.modelWorldtask.findNextTasks(taskId)
if mytask.CurrentTask == nil {
mytask.CurrentTask = make(map[int32]*pb.Worldtask)
}
if len(nextTaskIds) == 1 {
mytask.CurrentTask[groupId] = &pb.Worldtask{
TaskId: nextTaskIds[0],
TaskType: 2, //设置主线类型
}
update["currentTask"] = mytask.CurrentTask
}
if err := this.modelWorldtask.Change(uid, update); err != nil {
return err
}
rsp := &pb.WorldtaskFinishIdsPush{}
return session.SendMsg(string(this.GetType()), "finishids", rsp)
}

View File

@ -77,6 +77,10 @@ const (
ErrorCode_UserSign ErrorCode = 1022 //签到状态不对
ErrorCode_OpenCondErr ErrorCode = 1023 //功能开启条件未达到
ErrorCode_OpenCondActivate ErrorCode = 1024 //功能开启条件已激活
ErrorCode_UserTalent1NoEnough ErrorCode = 1025 //阵营1天赋点
ErrorCode_UserTalent2NoEnough ErrorCode = 1026 //阵营2天赋点
ErrorCode_UserTalent3NoEnough ErrorCode = 1027 //阵营3天赋点
ErrorCode_UserTalent4NoEnough ErrorCode = 1028 //阵营4天赋点
// friend
ErrorCode_FriendNotSelf ErrorCode = 1100 //不能是自己
ErrorCode_FriendSelfMax ErrorCode = 1101 //超出好友最大数量
@ -366,8 +370,12 @@ const (
ErrorCode_PracticeYouQiecuoing ErrorCode = 4305 //你有切磋未完成
ErrorCode_PracticeTargetQiecuoing ErrorCode = 4306 //目标正在切磋中
//parkour
ErrorCode_ParkourMemberFull ErrorCode = 4401 //队伍成员已满
ErrorCode_ParkourInviteOverdue ErrorCode = 4402 //邀请已过期
ErrorCode_ParkourMemberFull ErrorCode = 4401 //队伍成员已满
ErrorCode_ParkourInviteOverdue ErrorCode = 4402 //邀请已过期
ErrorCode_ParkourInviteNoPermissions ErrorCode = 4403 //无权邀请
ErrorCode_ParkourTargetTeamed ErrorCode = 4404 //目标已组队
//reputation
ErrorCode_ReputationTalentFull ErrorCode = 4501 //天赋满级
)
// Enum value maps for ErrorCode.
@ -425,6 +433,10 @@ var (
1022: "UserSign",
1023: "OpenCondErr",
1024: "OpenCondActivate",
1025: "UserTalent1NoEnough",
1026: "UserTalent2NoEnough",
1027: "UserTalent3NoEnough",
1028: "UserTalent4NoEnough",
1100: "FriendNotSelf",
1101: "FriendSelfMax",
1102: "FriendTargetMax",
@ -683,6 +695,9 @@ var (
4306: "PracticeTargetQiecuoing",
4401: "ParkourMemberFull",
4402: "ParkourInviteOverdue",
4403: "ParkourInviteNoPermissions",
4404: "ParkourTargetTeamed",
4501: "ReputationTalentFull",
}
ErrorCode_value = map[string]int32{
"Success": 0,
@ -737,6 +752,10 @@ var (
"UserSign": 1022,
"OpenCondErr": 1023,
"OpenCondActivate": 1024,
"UserTalent1NoEnough": 1025,
"UserTalent2NoEnough": 1026,
"UserTalent3NoEnough": 1027,
"UserTalent4NoEnough": 1028,
"FriendNotSelf": 1100,
"FriendSelfMax": 1101,
"FriendTargetMax": 1102,
@ -995,6 +1014,9 @@ var (
"PracticeTargetQiecuoing": 4306,
"ParkourMemberFull": 4401,
"ParkourInviteOverdue": 4402,
"ParkourInviteNoPermissions": 4403,
"ParkourTargetTeamed": 4404,
"ReputationTalentFull": 4501,
}
)
@ -1029,7 +1051,7 @@ var File_errorcode_proto protoreflect.FileDescriptor
var file_errorcode_proto_rawDesc = []byte{
0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2a, 0xc2, 0x38, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x6f, 0x2a, 0xa8, 0x38, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10,
0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76,
@ -1095,163 +1117,171 @@ var file_errorcode_proto_rawDesc = []byte{
0x08, 0x55, 0x73, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x10, 0xfe, 0x07, 0x12, 0x10, 0x0a, 0x0b,
0x4f, 0x70, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x45, 0x72, 0x72, 0x10, 0xff, 0x07, 0x12, 0x15,
0x0a, 0x10, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61,
0x74, 0x65, 0x10, 0x80, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4e,
0x6f, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x10, 0xcc, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x46, 0x72, 0x69,
0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x4d, 0x61, 0x78, 0x10, 0xcd, 0x08, 0x12, 0x14, 0x0a,
0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x78,
0x10, 0xce, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c,
0x66, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10, 0xcf, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x46, 0x72,
0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61,
0x10, 0xd0, 0x08, 0x12, 0x0e, 0x0a, 0x09, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x59, 0x65, 0x74,
0x10, 0xd1, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70,
0x6c, 0x79, 0x59, 0x65, 0x74, 0x10, 0xd2, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65,
0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x59, 0x65, 0x74, 0x10, 0xd3,
0x08, 0x12, 0x19, 0x0a, 0x14, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65,
0x74, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x59, 0x65, 0x74, 0x10, 0xd4, 0x08, 0x12, 0x15, 0x0a, 0x10,
0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x45, 0x72, 0x72, 0x6f, 0x72,
0x10, 0xd5, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x6c, 0x61,
0x63, 0x6b, 0x4d, 0x61, 0x78, 0x10, 0xd6, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x46, 0x72, 0x69, 0x65,
0x6e, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74,
0x79, 0x10, 0xd7, 0x08, 0x12, 0x10, 0x0a, 0x0b, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, 0x61,
0x6e, 0x65, 0x64, 0x10, 0xd8, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
0x5a, 0x61, 0x6e, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xd9, 0x08, 0x12, 0x12,
0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, 0x61, 0x6e, 0x53, 0x65, 0x6c, 0x66, 0x10,
0xda, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e,
0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xdb, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x72, 0x69,
0x65, 0x6e, 0x64, 0x4e, 0x6f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xdc, 0x08,
0x12, 0x18, 0x0a, 0x13, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f,
0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x10, 0xdd, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x46, 0x72,
0x69, 0x65, 0x6e, 0x64, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x65, 0x64, 0x10, 0xde, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x4e, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x10,
0xdf, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x51, 0x69, 0x65, 0x63,
0x75, 0x6f, 0x69, 0x6e, 0x67, 0x10, 0xe0, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x46, 0x72, 0x69, 0x65,
0x6e, 0x64, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6b,
0x10, 0xe1, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x63,
0x6b, 0x65, 0x74, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xe2, 0x08, 0x12, 0x12,
0x0a, 0x0d, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10,
0xb0, 0x09, 0x12, 0x15, 0x0a, 0x10, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x4e, 0x6f, 0x46, 0x6f, 0x75,
0x6e, 0x64, 0x47, 0x69, 0x72, 0x64, 0x10, 0xb1, 0x09, 0x12, 0x16, 0x0a, 0x11, 0x49, 0x74, 0x65,
0x6d, 0x73, 0x47, 0x72, 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x55, 0x70, 0x70, 0x65, 0x72, 0x10, 0xb2,
0x09, 0x12, 0x19, 0x0a, 0x14, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x47, 0x69, 0x72, 0x64, 0x41, 0x6d,
0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x70, 0x65, 0x72, 0x10, 0xb3, 0x09, 0x12, 0x19, 0x0a, 0x14,
0x49, 0x74, 0x65, 0x6d, 0x73, 0x55, 0x73, 0x65, 0x4e, 0x6f, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f,
0x72, 0x74, 0x65, 0x64, 0x10, 0xb4, 0x09, 0x12, 0x16, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x73,
0x55, 0x73, 0x65, 0x4e, 0x6f, 0x43, 0x61, 0x6e, 0x53, 0x65, 0x6c, 0x6c, 0x10, 0xb5, 0x09, 0x12,
0x19, 0x0a, 0x14, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x42, 0x75, 0x79, 0x50, 0x73, 0x55, 0x70, 0x70,
0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xb6, 0x09, 0x12, 0x10, 0x0a, 0x0b, 0x48, 0x65,
0x72, 0x6f, 0x4e, 0x6f, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x94, 0x0a, 0x12, 0x11, 0x0a, 0x0c,
0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x95, 0x0a, 0x12,
0x0e, 0x0a, 0x09, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0x96, 0x0a, 0x12,
0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x49, 0x6e, 0x69, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74,
0x10, 0x97, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72,
0x45, 0x72, 0x72, 0x10, 0x98, 0x0a, 0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x6b,
0x69, 0x6c, 0x6c, 0x55, 0x70, 0x45, 0x72, 0x72, 0x10, 0x99, 0x0a, 0x12, 0x14, 0x0a, 0x0f, 0x48,
0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x9a,
0x0a, 0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6e,
0x61, 0x74, 0x65, 0x10, 0x9b, 0x0a, 0x12, 0x18, 0x0a, 0x13, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f,
0x74, 0x4e, 0x65, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x9c, 0x0a,
0x12, 0x11, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79,
0x10, 0x9d, 0x0a, 0x12, 0x0f, 0x0a, 0x0a, 0x48, 0x65, 0x72, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x10, 0x9e, 0x0a, 0x12, 0x14, 0x0a, 0x0f, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x71, 0x75, 0x69,
0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x10, 0x9f, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65,
0x72, 0x6f, 0x4d, 0x61, 0x78, 0x41, 0x77, 0x61, 0x6b, 0x65, 0x6e, 0x10, 0xa0, 0x0a, 0x12, 0x0f,
0x0a, 0x0a, 0x48, 0x65, 0x72, 0x6f, 0x49, 0x73, 0x4c, 0x6f, 0x63, 0x6b, 0x10, 0xa1, 0x0a, 0x12,
0x11, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10,
0xa2, 0x0a, 0x12, 0x14, 0x0a, 0x0f, 0x48, 0x65, 0x72, 0x6f, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79,
0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0xa3, 0x0a, 0x12, 0x10, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f,
0x53, 0x74, 0x61, 0x72, 0x45, 0x72, 0x72, 0x10, 0xa4, 0x0a, 0x12, 0x10, 0x0a, 0x0b, 0x48, 0x65,
0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0xa5, 0x0a, 0x12, 0x13, 0x0a, 0x0e,
0x48, 0x65, 0x72, 0x6f, 0x45, 0x78, 0x70, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0xa6,
0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x45,
0x78, 0x70, 0x10, 0xa7, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61,
0x72, 0x4c, 0x76, 0x45, 0x72, 0x72, 0x10, 0xa8, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72,
0x6f, 0x4d, 0x61, 0x78, 0x53, 0x74, 0x61, 0x72, 0x4c, 0x76, 0x10, 0xa9, 0x0a, 0x12, 0x19, 0x0a,
0x14, 0x44, 0x72, 0x61, 0x77, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x6f, 0x74,
0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xaa, 0x0a, 0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f,
0x4d, 0x61, 0x78, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x10, 0xab, 0x0a, 0x12, 0x1c, 0x0a,
0x17, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x4b, 0x6f, 0x6e, 0x67,
0x46, 0x75, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0xac, 0x0a, 0x12, 0x13, 0x0a, 0x0e, 0x48,
0x65, 0x72, 0x6f, 0x4c, 0x76, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xad, 0x0a,
0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x49, 0x73, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
0x65, 0x72, 0x10, 0xae, 0x0a, 0x12, 0x1e, 0x0a, 0x19, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65,
0x6e, 0x74, 0x4f, 0x6e, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65,
0x6e, 0x74, 0x10, 0xf8, 0x0a, 0x12, 0x1c, 0x0a, 0x17, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65,
0x6e, 0x74, 0x4c, 0x76, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64,
0x10, 0xf9, 0x0a, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74,
0x49, 0x73, 0x57, 0x6f, 0x72, 0x6e, 0x10, 0xfa, 0x0a, 0x12, 0x17, 0x0a, 0x12, 0x45, 0x71, 0x75,
0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x43, 0x61, 0x6e, 0x53, 0x65, 0x6c, 0x6c, 0x10,
0xfb, 0x0a, 0x12, 0x1b, 0x0a, 0x16, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x53,
0x75, 0x69, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xfc, 0x0a, 0x12,
0x1b, 0x0a, 0x16, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x69,
0x6e, 0x64, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x10, 0xdc, 0x0b, 0x12, 0x15, 0x0a, 0x10,
0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64,
0x10, 0xdd, 0x0b, 0x12, 0x15, 0x0a, 0x10, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4e,
0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xde, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x4d, 0x61,
0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x72, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e,
0x64, 0x10, 0xdf, 0x0b, 0x12, 0x19, 0x0a, 0x14, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe0, 0x0b, 0x12,
0x1b, 0x0a, 0x16, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c,
0x65, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe1, 0x0b, 0x12, 0x19, 0x0a, 0x14,
0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68,
0x53, 0x74, 0x61, 0x72, 0x10, 0xe2, 0x0b, 0x12, 0x0d, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x49,
0x6e, 0x69, 0x74, 0x10, 0xc0, 0x0c, 0x12, 0x0e, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65,
0x73, 0x65, 0x74, 0x10, 0xc1, 0x0c, 0x12, 0x0f, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x61,
0x6e, 0x64, 0x6c, 0x65, 0x10, 0xc2, 0x0c, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x52,
0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xc3, 0x0c, 0x12, 0x13, 0x0a, 0x0e, 0x54, 0x61,
0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc4, 0x0c, 0x12,
0x16, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x66,
0x6f, 0x75, 0x6e, 0x64, 0x10, 0xc5, 0x0c, 0x12, 0x17, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x41,
0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xc6, 0x0c,
0x12, 0x13, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68,
0x65, 0x64, 0x10, 0xc7, 0x0c, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e,
0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xc8, 0x0c, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b,
0x54, 0x61, 0x67, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xc9, 0x0c, 0x12, 0x10, 0x0a, 0x0b, 0x54,
0x61, 0x73, 0x6b, 0x49, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xca, 0x0c, 0x12, 0x11, 0x0a,
0x0c, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xcb, 0x0c,
0x12, 0x17, 0x0a, 0x12, 0x53, 0x68, 0x6f, 0x70, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x73, 0x53,
0x6f, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x10, 0xa4, 0x0d, 0x12, 0x1c, 0x0a, 0x17, 0x53, 0x68, 0x6f,
0x70, 0x4e, 0x6f, 0x53, 0x75, 0x72, 0x70, 0x6c, 0x75, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73,
0x68, 0x4e, 0x75, 0x6d, 0x10, 0xa5, 0x0d, 0x12, 0x0c, 0x0a, 0x07, 0x4d, 0x61, 0x69, 0x6c, 0x45,
0x72, 0x72, 0x10, 0x88, 0x0e, 0x12, 0x13, 0x0a, 0x0e, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x4e,
0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xec, 0x0e, 0x12, 0x12, 0x0a, 0x0d, 0x50, 0x61,
0x67, 0x6f, 0x64, 0x61, 0x4c, 0x65, 0x76, 0x6c, 0x45, 0x72, 0x72, 0x10, 0xed, 0x0e, 0x12, 0x17,
0x0a, 0x12, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72,
0x64, 0x45, 0x72, 0x72, 0x10, 0xee, 0x0e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61, 0x67, 0x6f, 0x64,
0x61, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x10, 0xef, 0x0e,
0x12, 0x11, 0x0a, 0x0c, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b,
0x10, 0xf0, 0x0e, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61,
0x6c, 0x6c, 0x4e, 0x6f, 0x74, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xd0, 0x0f,
0x12, 0x15, 0x0a, 0x10, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x49,
0x6e, 0x55, 0x73, 0x65, 0x10, 0xd1, 0x0f, 0x12, 0x18, 0x0a, 0x13, 0x4d, 0x61, 0x72, 0x74, 0x69,
0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xd2,
0x0f, 0x12, 0x1a, 0x0a, 0x15, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c,
0x4e, 0x6f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xd3, 0x0f, 0x12, 0x1a, 0x0a,
0x15, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x41, 0x74, 0x6c, 0x61,
0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xd4, 0x0f, 0x12, 0x1d, 0x0a, 0x18, 0x4d, 0x61, 0x72,
0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x4e, 0x6f, 0x52,
0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xd5, 0x0f, 0x12, 0x19, 0x0a, 0x14, 0x47, 0x6f, 0x75, 0x72,
0x6d, 0x65, 0x74, 0x4d, 0x6f, 0x72, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65,
0x10, 0xb5, 0x10, 0x12, 0x16, 0x0a, 0x11, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x53, 0x6b,
0x69, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0xb6, 0x10, 0x12, 0x12, 0x0a, 0x0d, 0x52,
0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0x99, 0x11, 0x12,
0x14, 0x0a, 0x0f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x55, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68,
0x65, 0x64, 0x10, 0x9a, 0x11, 0x12, 0x11, 0x0a, 0x0c, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f,
0x52, 0x74, 0x61, 0x73, 0x6b, 0x10, 0x9b, 0x11, 0x12, 0x12, 0x0a, 0x0d, 0x52, 0x74, 0x61, 0x73,
0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x10, 0x9c, 0x11, 0x12, 0x15, 0x0a, 0x10,
0x52, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x65, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68,
0x10, 0x9d, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x64,
0x69, 0x4e, 0x6f, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x9e, 0x11, 0x12, 0x13, 0x0a, 0x0e, 0x52,
0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x4c, 0x61, 0x73, 0x74, 0x4f, 0x6e, 0x65, 0x10, 0x9f, 0x11,
0x12, 0x16, 0x0a, 0x11, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x4e, 0x6f,
0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xa0, 0x11, 0x12, 0x10, 0x0a, 0x0b, 0x56, 0x69, 0x6b, 0x69,
0x6e, 0x67, 0x4c, 0x76, 0x45, 0x72, 0x72, 0x10, 0xfd, 0x11, 0x12, 0x13, 0x0a, 0x0e, 0x56, 0x69,
0x6b, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x10, 0xfe, 0x11, 0x12,
0x16, 0x0a, 0x11, 0x56, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43,
0x6f, 0x75, 0x6e, 0x74, 0x10, 0xff, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x56, 0x69, 0x6b, 0x69, 0x6e,
0x67, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75,
0x6e, 0x74, 0x10, 0x80, 0x12, 0x12, 0x1a, 0x0a, 0x15, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e,
0x74, 0x61, 0x73, 0x79, 0x48, 0x61, 0x73, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x10, 0xe1,
0x74, 0x65, 0x10, 0x80, 0x08, 0x12, 0x18, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x54, 0x61, 0x6c,
0x65, 0x6e, 0x74, 0x31, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x81, 0x08, 0x12,
0x18, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x32, 0x4e, 0x6f,
0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x82, 0x08, 0x12, 0x18, 0x0a, 0x13, 0x55, 0x73, 0x65,
0x72, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x33, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68,
0x10, 0x83, 0x08, 0x12, 0x18, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x54, 0x61, 0x6c, 0x65, 0x6e,
0x74, 0x34, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x84, 0x08, 0x12, 0x12, 0x0a,
0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x10, 0xcc,
0x08, 0x12, 0x12, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x4d,
0x61, 0x78, 0x10, 0xcd, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54,
0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x10, 0xce, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10,
0xcf, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67,
0x65, 0x74, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10, 0xd0, 0x08, 0x12, 0x0e, 0x0a, 0x09, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x59, 0x65, 0x74, 0x10, 0xd1, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x59, 0x65, 0x74, 0x10, 0xd2, 0x08,
0x12, 0x17, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x42, 0x6c,
0x61, 0x63, 0x6b, 0x59, 0x65, 0x74, 0x10, 0xd3, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x46, 0x72, 0x69,
0x65, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x59, 0x65,
0x74, 0x10, 0xd4, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70,
0x70, 0x6c, 0x79, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xd5, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4d, 0x61, 0x78, 0x10, 0xd6, 0x08,
0x12, 0x1a, 0x0a, 0x15, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd7, 0x08, 0x12, 0x10, 0x0a, 0x0b,
0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, 0x61, 0x6e, 0x65, 0x64, 0x10, 0xd8, 0x08, 0x12, 0x16,
0x0a, 0x11, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, 0x61, 0x6e, 0x72, 0x65, 0x63, 0x65, 0x69,
0x76, 0x65, 0x64, 0x10, 0xd9, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
0x5a, 0x61, 0x6e, 0x53, 0x65, 0x6c, 0x66, 0x10, 0xda, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x72,
0x69, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xdb,
0x08, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4e, 0x6f, 0x72, 0x65, 0x63,
0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xdc, 0x08, 0x12, 0x18, 0x0a, 0x13, 0x46, 0x72, 0x69, 0x65,
0x6e, 0x64, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x10,
0xdd, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x51, 0x69, 0x65, 0x63,
0x75, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x10, 0xde, 0x08, 0x12, 0x1a,
0x0a, 0x15, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x4e, 0x6f,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x10, 0xdf, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x46, 0x72,
0x69, 0x65, 0x6e, 0x64, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x69, 0x6e, 0x67, 0x10, 0xe0, 0x08,
0x12, 0x19, 0x0a, 0x14, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f,
0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6b, 0x10, 0xe1, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x6f, 0x45, 0x6e, 0x6f,
0x75, 0x67, 0x68, 0x10, 0xe2, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x4e,
0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xb0, 0x09, 0x12, 0x15, 0x0a, 0x10, 0x49, 0x74,
0x65, 0x6d, 0x73, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x69, 0x72, 0x64, 0x10, 0xb1,
0x09, 0x12, 0x16, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x47, 0x72, 0x69, 0x64, 0x4e, 0x75,
0x6d, 0x55, 0x70, 0x70, 0x65, 0x72, 0x10, 0xb2, 0x09, 0x12, 0x19, 0x0a, 0x14, 0x49, 0x74, 0x65,
0x6d, 0x73, 0x47, 0x69, 0x72, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x70, 0x65,
0x72, 0x10, 0xb3, 0x09, 0x12, 0x19, 0x0a, 0x14, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x55, 0x73, 0x65,
0x4e, 0x6f, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x10, 0xb4, 0x09, 0x12,
0x16, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x55, 0x73, 0x65, 0x4e, 0x6f, 0x43, 0x61, 0x6e,
0x53, 0x65, 0x6c, 0x6c, 0x10, 0xb5, 0x09, 0x12, 0x19, 0x0a, 0x14, 0x49, 0x74, 0x65, 0x6d, 0x73,
0x42, 0x75, 0x79, 0x50, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10,
0xb6, 0x09, 0x12, 0x10, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x45, 0x78, 0x69, 0x73,
0x74, 0x10, 0x94, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x45, 0x6e,
0x6f, 0x75, 0x67, 0x68, 0x10, 0x95, 0x0a, 0x12, 0x0e, 0x0a, 0x09, 0x48, 0x65, 0x72, 0x6f, 0x4d,
0x61, 0x78, 0x4c, 0x76, 0x10, 0x96, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x49,
0x6e, 0x69, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x10, 0x97, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48,
0x65, 0x72, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x45, 0x72, 0x72, 0x10, 0x98, 0x0a, 0x12, 0x13,
0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x55, 0x70, 0x45, 0x72, 0x72,
0x10, 0x99, 0x0a, 0x12, 0x14, 0x0a, 0x0f, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x52, 0x65,
0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x9a, 0x0a, 0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72,
0x6f, 0x4e, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x9b, 0x0a, 0x12, 0x18,
0x0a, 0x13, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x74, 0x4e, 0x65, 0x65, 0x64, 0x52, 0x65, 0x73,
0x6f, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x9c, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f,
0x4e, 0x6f, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x10, 0x9d, 0x0a, 0x12, 0x0f, 0x0a, 0x0a, 0x48,
0x65, 0x72, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x10, 0x9e, 0x0a, 0x12, 0x14, 0x0a, 0x0f,
0x48, 0x65, 0x72, 0x6f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x10,
0x9f, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x41, 0x77, 0x61,
0x6b, 0x65, 0x6e, 0x10, 0xa0, 0x0a, 0x12, 0x0f, 0x0a, 0x0a, 0x48, 0x65, 0x72, 0x6f, 0x49, 0x73,
0x4c, 0x6f, 0x63, 0x6b, 0x10, 0xa1, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x4d,
0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xa2, 0x0a, 0x12, 0x14, 0x0a, 0x0f, 0x48, 0x65,
0x72, 0x6f, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0xa3, 0x0a,
0x12, 0x10, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x45, 0x72, 0x72, 0x10,
0xa4, 0x0a, 0x12, 0x10, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72,
0x72, 0x10, 0xa5, 0x0a, 0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x78, 0x70, 0x54,
0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0xa6, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72,
0x6f, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x45, 0x78, 0x70, 0x10, 0xa7, 0x0a, 0x12, 0x12, 0x0a,
0x0d, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x4c, 0x76, 0x45, 0x72, 0x72, 0x10, 0xa8,
0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x53, 0x74, 0x61, 0x72,
0x4c, 0x76, 0x10, 0xa9, 0x0a, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x72, 0x61, 0x77, 0x43, 0x61, 0x72,
0x64, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xaa, 0x0a,
0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x53, 0x6b, 0x69, 0x6c, 0x6c,
0x4c, 0x76, 0x10, 0xab, 0x0a, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x6c, 0x72,
0x65, 0x61, 0x64, 0x79, 0x4b, 0x6f, 0x6e, 0x67, 0x46, 0x75, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x10, 0xac, 0x0a, 0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x4c, 0x76, 0x4e, 0x6f, 0x45,
0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xad, 0x0a, 0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f,
0x49, 0x73, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x10, 0xae, 0x0a, 0x12, 0x1e, 0x0a,
0x19, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x6e, 0x46, 0x6f, 0x75, 0x6e,
0x64, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0xf8, 0x0a, 0x12, 0x1c, 0x0a,
0x17, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x76, 0x6c, 0x69, 0x6d, 0x69,
0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x10, 0xf9, 0x0a, 0x12, 0x14, 0x0a, 0x0f, 0x45,
0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x73, 0x57, 0x6f, 0x72, 0x6e, 0x10, 0xfa,
0x0a, 0x12, 0x17, 0x0a, 0x12, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x6f,
0x43, 0x61, 0x6e, 0x53, 0x65, 0x6c, 0x6c, 0x10, 0xfb, 0x0a, 0x12, 0x1b, 0x0a, 0x16, 0x45, 0x71,
0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x46,
0x6f, 0x75, 0x6e, 0x64, 0x10, 0xfc, 0x0a, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x61, 0x69, 0x6e, 0x6c,
0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65,
0x72, 0x10, 0xdc, 0x0b, 0x12, 0x15, 0x0a, 0x10, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
0x49, 0x44, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xdd, 0x0b, 0x12, 0x15, 0x0a, 0x10, 0x4d,
0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10,
0xde, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x72,
0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xdf, 0x0b, 0x12, 0x19, 0x0a, 0x14,
0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x52, 0x65,
0x77, 0x61, 0x72, 0x64, 0x10, 0xe0, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x61, 0x69, 0x6e, 0x6c,
0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72,
0x64, 0x10, 0xe1, 0x0b, 0x12, 0x19, 0x0a, 0x14, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x53, 0x74, 0x61, 0x72, 0x10, 0xe2, 0x0b, 0x12,
0x0d, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc0, 0x0c, 0x12, 0x0e,
0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x10, 0xc1, 0x0c, 0x12, 0x0f,
0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x10, 0xc2, 0x0c, 0x12,
0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10,
0xc3, 0x0c, 0x12, 0x13, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65,
0x49, 0x6e, 0x69, 0x74, 0x10, 0xc4, 0x0c, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x41,
0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xc5, 0x0c, 0x12,
0x17, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x65,
0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xc6, 0x0c, 0x12, 0x13, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b,
0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xc7, 0x0c, 0x12, 0x11, 0x0a,
0x0c, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xc8, 0x0c,
0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x61, 0x67, 0x45, 0x6d, 0x70, 0x74, 0x79,
0x10, 0xc9, 0x0c, 0x12, 0x10, 0x0a, 0x0b, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x45, 0x6d, 0x70,
0x74, 0x79, 0x10, 0xca, 0x0c, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x74,
0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xcb, 0x0c, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x68, 0x6f, 0x70,
0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x73, 0x53, 0x6f, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x10, 0xa4,
0x0d, 0x12, 0x1c, 0x0a, 0x17, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x75, 0x72, 0x70, 0x6c,
0x75, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x4e, 0x75, 0x6d, 0x10, 0xa5, 0x0d, 0x12,
0x0c, 0x0a, 0x07, 0x4d, 0x61, 0x69, 0x6c, 0x45, 0x72, 0x72, 0x10, 0x88, 0x0e, 0x12, 0x13, 0x0a,
0x0e, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10,
0xec, 0x0e, 0x12, 0x12, 0x0a, 0x0d, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x4c, 0x65, 0x76, 0x6c,
0x45, 0x72, 0x72, 0x10, 0xed, 0x0e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61,
0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x72, 0x72, 0x10, 0xee, 0x0e, 0x12,
0x17, 0x0a, 0x12, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
0x6f, 0x6e, 0x45, 0x72, 0x72, 0x10, 0xef, 0x0e, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x61, 0x67, 0x6f,
0x64, 0x61, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0xf0, 0x0e, 0x12, 0x1b, 0x0a, 0x16, 0x4d,
0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x4e, 0x6f, 0x74, 0x55, 0x6e, 0x6c,
0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xd0, 0x0f, 0x12, 0x15, 0x0a, 0x10, 0x4d, 0x61, 0x72, 0x74,
0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x55, 0x73, 0x65, 0x10, 0xd1, 0x0f, 0x12,
0x18, 0x0a, 0x13, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x55, 0x6e,
0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xd2, 0x0f, 0x12, 0x1a, 0x0a, 0x15, 0x4d, 0x61, 0x72,
0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x4e, 0x6f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b,
0x65, 0x64, 0x10, 0xd3, 0x0f, 0x12, 0x1a, 0x0a, 0x15, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c,
0x68, 0x61, 0x6c, 0x6c, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xd4,
0x0f, 0x12, 0x1d, 0x0a, 0x18, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c,
0x41, 0x74, 0x6c, 0x61, 0x73, 0x4e, 0x6f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xd5, 0x0f,
0x12, 0x19, 0x0a, 0x14, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x4d, 0x6f, 0x72, 0x65, 0x4f,
0x72, 0x64, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x10, 0xb5, 0x10, 0x12, 0x16, 0x0a, 0x11, 0x47,
0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x4c, 0x76,
0x10, 0xb6, 0x10, 0x12, 0x12, 0x0a, 0x0d, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69,
0x73, 0x68, 0x65, 0x64, 0x10, 0x99, 0x11, 0x12, 0x14, 0x0a, 0x0f, 0x52, 0x74, 0x61, 0x73, 0x6b,
0x55, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0x9a, 0x11, 0x12, 0x11, 0x0a,
0x0c, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x10, 0x9b, 0x11,
0x12, 0x12, 0x0a, 0x0d, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x65,
0x64, 0x10, 0x9c, 0x11, 0x12, 0x15, 0x0a, 0x10, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x65,
0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0x9d, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x52,
0x74, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x4e, 0x6f, 0x52, 0x65, 0x61, 0x63, 0x68,
0x10, 0x9e, 0x11, 0x12, 0x13, 0x0a, 0x0e, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x4c, 0x61,
0x73, 0x74, 0x4f, 0x6e, 0x65, 0x10, 0x9f, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x52, 0x74, 0x61, 0x73,
0x6b, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xa0, 0x11,
0x12, 0x10, 0x0a, 0x0b, 0x56, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x76, 0x45, 0x72, 0x72, 0x10,
0xfd, 0x11, 0x12, 0x13, 0x0a, 0x0e, 0x56, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x6f, 0x73,
0x54, 0x79, 0x70, 0x65, 0x10, 0xfe, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x56, 0x69, 0x6b, 0x69, 0x6e,
0x67, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xff, 0x11, 0x12,
0x1c, 0x0a, 0x17, 0x56, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x6c,
0x6c, 0x65, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x80, 0x12, 0x12, 0x1a, 0x0a,
0x15, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x48, 0x61, 0x73, 0x45,
0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x10, 0xe1, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x4d, 0x6f, 0x6f,
0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x55, 0x70, 0x10, 0xe2,
0x12, 0x12, 0x16, 0x0a, 0x11, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79,
0x4a, 0x6f, 0x69, 0x6e, 0x55, 0x70, 0x10, 0xe2, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x4d, 0x6f, 0x6f,
0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x44, 0x61, 0x72, 0x65, 0x55, 0x70, 0x10, 0xe3,
@ -1299,190 +1329,188 @@ var file_errorcode_proto_rawDesc = []byte{
0x79, 0x46, 0x65, 0x74, 0x74, 0x65, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x6f, 0x75,
0x6e, 0x64, 0x10, 0xf6, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79,
0x50, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65,
0x64, 0x10, 0xf7, 0x15, 0x12, 0x18, 0x0a, 0x13, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x47,
0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xf8, 0x15, 0x12, 0x1b,
0x0a, 0x16, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xd5, 0x16, 0x12, 0x10, 0x0a, 0x0b, 0x42,
0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x57, 0x69, 0x6e, 0x10, 0xd6, 0x16, 0x12, 0x17, 0x0a,
0x12, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x61, 0x69,
0x6c, 0x65, 0x64, 0x10, 0xd7, 0x16, 0x12, 0x16, 0x0a, 0x11, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65,
0x49, 0x6e, 0x43, 0x6d, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xd8, 0x16, 0x12, 0x12,
0x0a, 0x0d, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x10,
0xd9, 0x16, 0x12, 0x1e, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x61, 0x70, 0x73,
0x6b, 0x69, 0x6c, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10,
0xda, 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x4b, 0x65,
0x65, 0x70, 0x10, 0xdb, 0x16, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79,
0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xb8, 0x17, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x6f,
0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0xb9, 0x17, 0x12, 0x1b, 0x0a,
0x16, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e,
0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xba, 0x17, 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x6f,
0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x10, 0xbb, 0x17,
0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x52, 0x69, 0x67,
0x68, 0x74, 0x10, 0xbc, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79,
0x4e, 0x6f, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0xbd, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f,
0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x10, 0xbe, 0x17, 0x12,
0x10, 0x0a, 0x0b, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x51, 0x75, 0x69, 0x74, 0x10, 0xbf,
0x17, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x67, 0x72, 0x65,
0x65, 0x10, 0xc0, 0x17, 0x12, 0x12, 0x0a, 0x0d, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52,
0x65, 0x66, 0x75, 0x73, 0x65, 0x10, 0xc1, 0x17, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69,
0x61, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x10, 0xc2, 0x17, 0x12,
0x18, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72,
0x4e, 0x6f, 0x44, 0x69, 0x73, 0x73, 0x10, 0xc3, 0x17, 0x12, 0x16, 0x0a, 0x11, 0x53, 0x6f, 0x63,
0x69, 0x61, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x10, 0xc4,
0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x10, 0xc5, 0x17, 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74,
0x79, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x75, 0x73, 0x65, 0x10, 0xc6, 0x17, 0x12, 0x10, 0x0a, 0x0b,
0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x10, 0xc7, 0x17, 0x12, 0x12,
0x0a, 0x0d, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x10,
0xc8, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x43, 0x44, 0x4c,
0x69, 0x6d, 0x69, 0x74, 0x10, 0xc9, 0x17, 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61,
0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4d, 0x61, 0x78, 0x10, 0xca, 0x17, 0x12, 0x17, 0x0a,
0x12, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x65, 0x6c, 0x66, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x10, 0xcb, 0x17, 0x12, 0x1c, 0x0a, 0x17, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74,
0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69,
0x74, 0x10, 0xcc, 0x17, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52,
0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xcd, 0x17,
0x12, 0x19, 0x0a, 0x14, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72,
0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0xce, 0x17, 0x12, 0x14, 0x0a, 0x0f, 0x53,
0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x10, 0xcf,
0x17, 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x42, 0x65, 0x6c, 0x6f,
0x6e, 0x67, 0x54, 0x6f, 0x10, 0xd1, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61,
0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x10, 0xd2, 0x17, 0x12, 0x1a, 0x0a, 0x15,
0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, 0x70, 0x79, 0x4c, 0x76, 0x4e, 0x6f, 0x45,
0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xd3, 0x17, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69,
0x61, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x10, 0xd4, 0x17, 0x12, 0x1c, 0x0a, 0x17, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41,
0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10,
0xd5, 0x17, 0x12, 0x1b, 0x0a, 0x16, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x63, 0x69,
0x74, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0xd6, 0x17, 0x12,
0x15, 0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73,
0x73, 0x65, 0x64, 0x10, 0xd7, 0x17, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74,
0x79, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xd8, 0x17, 0x12, 0x19, 0x0a,
0x14, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x51, 0x75, 0x69, 0x74, 0x4e, 0x6f, 0x41, 0x6c,
0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0xd9, 0x17, 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69,
0x61, 0x74, 0x79, 0x4e, 0x6f, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x10, 0xda, 0x17, 0x12, 0x17,
0x0a, 0x12, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x10, 0xdb, 0x17, 0x12, 0x1b, 0x0a, 0x16, 0x53, 0x6f, 0x63, 0x69, 0x61,
0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67,
0x68, 0x10, 0xdc, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53,
0x70, 0x6f, 0x72, 0x74, 0x73, 0x4e, 0x6f, 0x69, 0x6e, 0x69, 0x74, 0x10, 0xdd, 0x17, 0x12, 0x15,
0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x45,
0x6e, 0x64, 0x10, 0xde, 0x17, 0x12, 0x16, 0x0a, 0x11, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79,
0x54, 0x65, 0x61, 0x6d, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0xdf, 0x17, 0x12, 0x17, 0x0a,
0x12, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x6f,
0x75, 0x6e, 0x64, 0x10, 0xe0, 0x17, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74,
0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10,
0xe1, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x54, 0x61, 0x73,
0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xe2, 0x17, 0x12, 0x15, 0x0a, 0x10,
0x41, 0x72, 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x75, 0x79, 0x55, 0x70,
0x10, 0x9d, 0x18, 0x12, 0x19, 0x0a, 0x14, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b,
0x65, 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x9e, 0x18, 0x12, 0x17,
0x0a, 0x12, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x70, 0x63,
0x49, 0x6e, 0x43, 0x64, 0x10, 0x9f, 0x18, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x61, 0x6c, 0x65, 0x6e,
0x74, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x10, 0x81, 0x19, 0x12,
0x12, 0x0a, 0x0d, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x44, 0x61, 0x74, 0x61,
0x10, 0x82, 0x19, 0x12, 0x19, 0x0a, 0x14, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x4c,
0x6f, 0x63, 0x6b, 0x65, 0x72, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x10, 0x83, 0x19, 0x12, 0x15,
0x0a, 0x10, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61,
0x74, 0x65, 0x10, 0x84, 0x19, 0x12, 0x10, 0x0a, 0x0b, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x42, 0x75,
0x79, 0x4d, 0x61, 0x78, 0x10, 0xe5, 0x19, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x72, 0x6f, 0x6c, 0x6c,
0x53, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x10, 0xe6, 0x19, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x72,
0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10,
0xe7, 0x19, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x49, 0x74,
0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xe8, 0x19, 0x12, 0x18, 0x0a, 0x13, 0x54, 0x72,
0x6f, 0x6c, 0x6c, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72,
0x64, 0x10, 0xe9, 0x19, 0x12, 0x19, 0x0a, 0x14, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70,
0x65, 0x4e, 0x6f, 0x74, 0x54, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x4f, 0x6e, 0x10, 0xc9, 0x1a, 0x12,
0x19, 0x0a, 0x14, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x73, 0x74,
0x43, 0x44, 0x4e, 0x6f, 0x45, 0x6e, 0x64, 0x10, 0xca, 0x1a, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x72,
0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10,
0xad, 0x1b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x52,
0x65, 0x6e, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x10, 0xae, 0x1b, 0x12, 0x0f, 0x0a, 0x0a, 0x56,
0x69, 0x70, 0x4c, 0x76, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xaf, 0x1b, 0x12, 0x11, 0x0a, 0x0c,
0x56, 0x69, 0x70, 0x47, 0x69, 0x66, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xb0, 0x1b, 0x12,
0x11, 0x0a, 0x0c, 0x56, 0x69, 0x70, 0x42, 0x75, 0x79, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x10,
0xb1, 0x1b, 0x12, 0x14, 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65,
0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x91, 0x1c, 0x12, 0x17, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x77,
0x74, 0x61, 0x73, 0x6b, 0x41, 0x64, 0x76, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x92,
0x1c, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4e, 0x75, 0x6d, 0x4e, 0x6f,
0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xf5, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61,
0x79, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x10, 0xf6, 0x1c,
0x12, 0x16, 0x0a, 0x11, 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70,
0x6c, 0x65, 0x74, 0x65, 0x64, 0x10, 0xf7, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6c,
0x64, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0xd9, 0x1d, 0x12, 0x19,
0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x76, 0x4e, 0x6f, 0x74,
0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xda, 0x1d, 0x12, 0x16, 0x0a, 0x11, 0x57, 0x6f, 0x72,
0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x10, 0xdb,
0x1d, 0x12, 0x18, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f,
0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0xdc, 0x1d, 0x12, 0x15, 0x0a, 0x10, 0x57,
0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x68, 0x65, 0x64, 0x10,
0xdd, 0x1d, 0x12, 0x1c, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c,
0x61, 0x73, 0x74, 0x55, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xde, 0x1d,
0x12, 0x1b, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f,
0x75, 0x70, 0x49, 0x64, 0x4e, 0x6f, 0x73, 0x61, 0x6d, 0x65, 0x10, 0xdf, 0x1d, 0x12, 0x1f, 0x0a,
0x1a, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65,
0x72, 0x55, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xe0, 0x1d, 0x12, 0x1d,
0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x70, 0x74,
0x65, 0x72, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xe1, 0x1d, 0x12, 0x17, 0x0a,
0x12, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x63,
0x65, 0x73, 0x73, 0x10, 0xe2, 0x1d, 0x12, 0x1e, 0x0a, 0x19, 0x41, 0x63, 0x61, 0x64, 0x65, 0x6d,
0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54,
0x61, 0x73, 0x6b, 0x10, 0xbd, 0x1e, 0x12, 0x15, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x61,
0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10, 0xa1, 0x1f, 0x12, 0x18, 0x0a,
0x13, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65,
0x73, 0x45, 0x72, 0x72, 0x10, 0xa2, 0x1f, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x6d, 0x69, 0x74, 0x68,
0x79, 0x4e, 0x6f, 0x52, 0x65, 0x65, 0x6c, 0x10, 0x85, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x54, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72,
0x65, 0x10, 0x86, 0x20, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x53, 0x74,
0x6f, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0x87, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x53,
0x6d, 0x69, 0x74, 0x68, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4c, 0x69, 0x6d,
0x69, 0x74, 0x10, 0x88, 0x20, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x71, 0x75, 0x69, 0x70, 0x4e, 0x6f, 0x45, 0x6e,
0x6f, 0x75, 0x67, 0x68, 0x10, 0x89, 0x20, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68,
0x79, 0x4d, 0x61, 0x78, 0x54, 0x65, 0x6d, 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x10,
0x8a, 0x20, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4c, 0x61, 0x63, 0x6b,
0x4c, 0x61, 0x76, 0x61, 0x10, 0x8b, 0x20, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68,
0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0x8c, 0x20, 0x12, 0x16,
0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x4c, 0x61, 0x63,
0x6b, 0x4c, 0x76, 0x10, 0x8d, 0x20, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0x8e,
0x20, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52,
0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x8f, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x74, 0x6c, 0x61, 0x73,
0x10, 0x90, 0x20, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x41,
0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x10, 0x91, 0x20, 0x12,
0x18, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4c, 0x76, 0x54, 0x6f, 0x6f, 0x6c, 0x73,
0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x92, 0x20, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x6d, 0x69,
0x74, 0x68, 0x79, 0x4c, 0x76, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x50, 0x72, 0x65, 0x10, 0x93, 0x20,
0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x54,
0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0x94, 0x20, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x69, 0x73,
0x70, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x52, 0x65, 0x61, 0x63, 0x68,
0x65, 0x64, 0x10, 0xe9, 0x20, 0x12, 0x13, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63,
0x68, 0x4e, 0x6f, 0x46, 0x72, 0x65, 0x65, 0x10, 0xea, 0x20, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x69,
0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x6f, 0x45, 0x6e,
0x6f, 0x75, 0x67, 0x68, 0x10, 0xeb, 0x20, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x70, 0x61,
0x74, 0x63, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x10,
0xec, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x54, 0x61,
0x73, 0x6b, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x10, 0xed, 0x20, 0x12, 0x17, 0x0a, 0x12,
0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x4d,
0x61, 0x78, 0x10, 0xee, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63,
0x68, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xef, 0x20, 0x12, 0x19,
0x0a, 0x14, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f,
0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xf0, 0x20, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x72, 0x61,
0x63, 0x74, 0x69, 0x63, 0x65, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x69, 0x6e, 0x67, 0x10, 0xcd,
0x21, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6e,
0x74, 0x10, 0xce, 0x21, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65,
0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x10, 0xcf, 0x21,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x50, 0x69, 0x6c, 0x6c,
0x61, 0x72, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0xd0, 0x21, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x72,
0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x59, 0x6f, 0x75, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x69,
0x6e, 0x67, 0x10, 0xd1, 0x21, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63,
0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x69, 0x6e, 0x67,
0x10, 0xd2, 0x21, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x4d, 0x65,
0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0xb1, 0x22, 0x12, 0x19, 0x0a, 0x14, 0x50,
0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4f, 0x76, 0x65, 0x72,
0x64, 0x75, 0x65, 0x10, 0xb2, 0x22, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x64, 0x10, 0xf7, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x56, 0x61,
0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xd5,
0x16, 0x12, 0x10, 0x0a, 0x0b, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x57, 0x69, 0x6e,
0x10, 0xd6, 0x16, 0x12, 0x17, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xd7, 0x16, 0x12, 0x16, 0x0a, 0x11,
0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x6e, 0x43, 0x6d, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x65,
0x64, 0x10, 0xd8, 0x16, 0x12, 0x12, 0x0a, 0x0d, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x55, 0x73,
0x65, 0x72, 0x4f, 0x66, 0x66, 0x10, 0xd9, 0x16, 0x12, 0x1e, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x74,
0x6c, 0x65, 0x43, 0x61, 0x70, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46,
0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xda, 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x42, 0x61, 0x74, 0x74,
0x6c, 0x65, 0x4e, 0x6f, 0x4b, 0x65, 0x65, 0x70, 0x10, 0xdb, 0x16, 0x12, 0x13, 0x0a, 0x0e, 0x53,
0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xb8, 0x17,
0x12, 0x11, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x64, 0x64, 0x65, 0x64,
0x10, 0xb9, 0x17, 0x12, 0x1b, 0x0a, 0x16, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69,
0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xba, 0x17,
0x12, 0x14, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x4d, 0x65, 0x6d,
0x62, 0x65, 0x72, 0x10, 0xbb, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74,
0x79, 0x4e, 0x6f, 0x52, 0x69, 0x67, 0x68, 0x74, 0x10, 0xbc, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53,
0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0xbd, 0x17,
0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x73, 0x6d, 0x69,
0x73, 0x73, 0x10, 0xbe, 0x17, 0x12, 0x10, 0x0a, 0x0b, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79,
0x51, 0x75, 0x69, 0x74, 0x10, 0xbf, 0x17, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x69, 0x61,
0x74, 0x79, 0x41, 0x67, 0x72, 0x65, 0x65, 0x10, 0xc0, 0x17, 0x12, 0x12, 0x0a, 0x0d, 0x53, 0x6f,
0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x10, 0xc1, 0x17, 0x12, 0x15,
0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x10, 0xc2, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79,
0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x44, 0x69, 0x73, 0x73, 0x10, 0xc3, 0x17, 0x12,
0x16, 0x0a, 0x11, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
0x67, 0x4a, 0x6f, 0x62, 0x10, 0xc4, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61,
0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x10, 0xc5, 0x17, 0x12, 0x14, 0x0a, 0x0f,
0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x75, 0x73, 0x65, 0x10,
0xc6, 0x17, 0x12, 0x10, 0x0a, 0x0b, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x69, 0x67,
0x6e, 0x10, 0xc7, 0x17, 0x12, 0x12, 0x0a, 0x0d, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53,
0x69, 0x67, 0x6e, 0x65, 0x64, 0x10, 0xc8, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69,
0x61, 0x74, 0x79, 0x43, 0x44, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xc9, 0x17, 0x12, 0x14, 0x0a,
0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4d, 0x61, 0x78,
0x10, 0xca, 0x17, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x65,
0x6c, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x10, 0xcb, 0x17, 0x12, 0x1c, 0x0a, 0x17,
0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75,
0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xcc, 0x17, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x6f,
0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69,
0x76, 0x65, 0x64, 0x10, 0xcd, 0x17, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74,
0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0xce,
0x17, 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x10, 0xcf, 0x17, 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61,
0x74, 0x79, 0x42, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x54, 0x6f, 0x10, 0xd1, 0x17, 0x12, 0x13, 0x0a,
0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x10,
0xd2, 0x17, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, 0x70,
0x79, 0x4c, 0x76, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xd3, 0x17, 0x12, 0x1a,
0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x56, 0x61, 0x6c,
0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xd4, 0x17, 0x12, 0x1c, 0x0a, 0x17, 0x53, 0x6f,
0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x45,
0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xd5, 0x17, 0x12, 0x1b, 0x0a, 0x16, 0x53, 0x6f, 0x63, 0x69,
0x61, 0x74, 0x79, 0x41, 0x63, 0x69, 0x74, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x65, 0x69,
0x76, 0x65, 0x10, 0xd6, 0x17, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79,
0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x10, 0xd7, 0x17, 0x12, 0x15, 0x0a, 0x10,
0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74,
0x10, 0xd8, 0x17, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x51, 0x75,
0x69, 0x74, 0x4e, 0x6f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0xd9, 0x17, 0x12, 0x14,
0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x4d, 0x61, 0x73, 0x74, 0x65,
0x72, 0x10, 0xda, 0x17, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e,
0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xdb, 0x17, 0x12, 0x1b, 0x0a,
0x16, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x4e,
0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xdc, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6f,
0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4e, 0x6f, 0x69, 0x6e, 0x69,
0x74, 0x10, 0xdd, 0x17, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53,
0x70, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x64, 0x10, 0xde, 0x17, 0x12, 0x16, 0x0a, 0x11, 0x53,
0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x54, 0x65, 0x61, 0x6d, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b,
0x10, 0xdf, 0x17, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x54, 0x61,
0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xe0, 0x17, 0x12, 0x1a, 0x0a, 0x15,
0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e,
0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xe1, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x69,
0x61, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10,
0xe2, 0x17, 0x12, 0x15, 0x0a, 0x10, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65,
0x74, 0x42, 0x75, 0x79, 0x55, 0x70, 0x10, 0x9d, 0x18, 0x12, 0x19, 0x0a, 0x14, 0x41, 0x72, 0x65,
0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67,
0x68, 0x10, 0x9e, 0x18, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63,
0x6b, 0x65, 0x74, 0x4e, 0x70, 0x63, 0x49, 0x6e, 0x43, 0x64, 0x10, 0x9f, 0x18, 0x12, 0x16, 0x0a,
0x11, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x4c, 0x65, 0x61,
0x72, 0x6e, 0x10, 0x81, 0x19, 0x12, 0x12, 0x0a, 0x0d, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45,
0x72, 0x72, 0x44, 0x61, 0x74, 0x61, 0x10, 0x82, 0x19, 0x12, 0x19, 0x0a, 0x14, 0x54, 0x61, 0x6c,
0x65, 0x6e, 0x74, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x42, 0x65, 0x66, 0x6f, 0x72,
0x65, 0x10, 0x83, 0x19, 0x12, 0x15, 0x0a, 0x10, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x52, 0x65,
0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0x84, 0x19, 0x12, 0x10, 0x0a, 0x0b, 0x54,
0x72, 0x6f, 0x6c, 0x6c, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x10, 0xe5, 0x19, 0x12, 0x11, 0x0a,
0x0c, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x53, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x10, 0xe6, 0x19,
0x12, 0x16, 0x0a, 0x11, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x6c, 0x6c,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xe7, 0x19, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x72, 0x6f, 0x6c,
0x6c, 0x4d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xe8, 0x19,
0x12, 0x18, 0x0a, 0x13, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe9, 0x19, 0x12, 0x19, 0x0a, 0x14, 0x48, 0x6f,
0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4e, 0x6f, 0x74, 0x54, 0x75, 0x72, 0x6e, 0x65, 0x64,
0x4f, 0x6e, 0x10, 0xc9, 0x1a, 0x12, 0x19, 0x0a, 0x14, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f,
0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x43, 0x44, 0x4e, 0x6f, 0x45, 0x6e, 0x64, 0x10, 0xca, 0x1a,
0x12, 0x16, 0x0a, 0x11, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x4e, 0x6f, 0x74,
0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xad, 0x1b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x72, 0x69, 0x76,
0x69, 0x6c, 0x65, 0x67, 0x65, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x10, 0xae,
0x1b, 0x12, 0x0f, 0x0a, 0x0a, 0x56, 0x69, 0x70, 0x4c, 0x76, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10,
0xaf, 0x1b, 0x12, 0x11, 0x0a, 0x0c, 0x56, 0x69, 0x70, 0x47, 0x69, 0x66, 0x74, 0x45, 0x72, 0x72,
0x6f, 0x72, 0x10, 0xb0, 0x1b, 0x12, 0x11, 0x0a, 0x0c, 0x56, 0x69, 0x70, 0x42, 0x75, 0x79, 0x52,
0x65, 0x70, 0x65, 0x61, 0x74, 0x10, 0xb1, 0x1b, 0x12, 0x14, 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x77,
0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x91, 0x1c, 0x12, 0x17,
0x0a, 0x12, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x64, 0x76, 0x52, 0x65, 0x63,
0x65, 0x69, 0x76, 0x65, 0x10, 0x92, 0x1c, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x42, 0x75,
0x79, 0x4e, 0x75, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xf5, 0x1c,
0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65,
0x45, 0x72, 0x72, 0x10, 0xf6, 0x1c, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64,
0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x10, 0xf7, 0x1c, 0x12, 0x14,
0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73,
0x68, 0x10, 0xd9, 0x1d, 0x12, 0x19, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73,
0x6b, 0x4c, 0x76, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xda, 0x1d, 0x12,
0x16, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x41, 0x63,
0x63, 0x65, 0x70, 0x74, 0x10, 0xdb, 0x1d, 0x12, 0x18, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6c, 0x64,
0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0xdc,
0x1d, 0x12, 0x15, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69,
0x6e, 0x69, 0x68, 0x65, 0x64, 0x10, 0xdd, 0x1d, 0x12, 0x1c, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6c,
0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73,
0x68, 0x65, 0x64, 0x10, 0xde, 0x1d, 0x12, 0x1b, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74,
0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x4e, 0x6f, 0x73, 0x61, 0x6d, 0x65,
0x10, 0xdf, 0x1d, 0x12, 0x1f, 0x0a, 0x1a, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b,
0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x55, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65,
0x64, 0x10, 0xe0, 0x1d, 0x12, 0x1d, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73,
0x6b, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64,
0x10, 0xe1, 0x1d, 0x12, 0x17, 0x0a, 0x12, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b,
0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x10, 0xe2, 0x1d, 0x12, 0x1e, 0x0a, 0x19,
0x41, 0x63, 0x61, 0x64, 0x65, 0x6d, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x43, 0x6f, 0x6d,
0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x10, 0xbd, 0x1e, 0x12, 0x15, 0x0a, 0x10,
0x41, 0x75, 0x74, 0x6f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61,
0x10, 0xa1, 0x1f, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x61, 0x74, 0x74, 0x6c,
0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x72, 0x72, 0x10, 0xa2, 0x1f, 0x12, 0x11, 0x0a,
0x0c, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x52, 0x65, 0x65, 0x6c, 0x10, 0x85, 0x20,
0x12, 0x18, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x54, 0x65, 0x6d, 0x70,
0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x10, 0x86, 0x20, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x6d,
0x69, 0x74, 0x68, 0x79, 0x53, 0x74, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0x87,
0x20, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x88, 0x20, 0x12, 0x20, 0x0a, 0x1b, 0x53,
0x6d, 0x69, 0x74, 0x68, 0x79, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x45, 0x71, 0x75,
0x69, 0x70, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x89, 0x20, 0x12, 0x19, 0x0a,
0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4d, 0x61, 0x78, 0x54, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x10, 0x8a, 0x20, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6d, 0x69, 0x74,
0x68, 0x79, 0x4c, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x76, 0x61, 0x10, 0x8b, 0x20, 0x12, 0x15, 0x0a,
0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x4d, 0x61, 0x78, 0x4c,
0x76, 0x10, 0x8c, 0x20, 0x12, 0x16, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74,
0x6c, 0x61, 0x73, 0x4c, 0x61, 0x63, 0x6b, 0x4c, 0x76, 0x10, 0x8d, 0x20, 0x12, 0x19, 0x0a, 0x14,
0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69,
0x73, 0x68, 0x65, 0x64, 0x10, 0x8e, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68,
0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x8f, 0x20,
0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e,
0x64, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x10, 0x90, 0x20, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x6d, 0x69,
0x74, 0x68, 0x79, 0x4e, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x6c,
0x61, 0x73, 0x10, 0x91, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4c,
0x76, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x92, 0x20, 0x12,
0x15, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4c, 0x76, 0x54, 0x6f, 0x6f, 0x6c, 0x73,
0x50, 0x72, 0x65, 0x10, 0x93, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79,
0x41, 0x74, 0x6c, 0x61, 0x73, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0x94, 0x20, 0x12,
0x1a, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x4e,
0x6f, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x10, 0xe9, 0x20, 0x12, 0x13, 0x0a, 0x0e, 0x44,
0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x46, 0x72, 0x65, 0x65, 0x10, 0xea, 0x20,
0x12, 0x1b, 0x0a, 0x16, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b,
0x65, 0x74, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xeb, 0x20, 0x12, 0x19, 0x0a,
0x14, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x73, 0x73,
0x69, 0x67, 0x6e, 0x65, 0x64, 0x10, 0xec, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x70,
0x61, 0x74, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x10,
0xed, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65,
0x66, 0x72, 0x65, 0x73, 0x68, 0x4d, 0x61, 0x78, 0x10, 0xee, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x44,
0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65,
0x64, 0x10, 0xef, 0x20, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68,
0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xf0, 0x20, 0x12,
0x16, 0x0a, 0x11, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x51, 0x69, 0x65, 0x63, 0x75,
0x6f, 0x69, 0x6e, 0x67, 0x10, 0xcd, 0x21, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x72, 0x61, 0x63, 0x74,
0x69, 0x63, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x10, 0xce, 0x21, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x72,
0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x4f, 0x75, 0x74, 0x10, 0xcf, 0x21, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69,
0x63, 0x65, 0x50, 0x69, 0x6c, 0x6c, 0x61, 0x72, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0xd0, 0x21,
0x12, 0x19, 0x0a, 0x14, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x59, 0x6f, 0x75, 0x51,
0x69, 0x65, 0x63, 0x75, 0x6f, 0x69, 0x6e, 0x67, 0x10, 0xd1, 0x21, 0x12, 0x1c, 0x0a, 0x17, 0x50,
0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x51, 0x69, 0x65,
0x63, 0x75, 0x6f, 0x69, 0x6e, 0x67, 0x10, 0xd2, 0x21, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x61, 0x72,
0x6b, 0x6f, 0x75, 0x72, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0xb1,
0x22, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x49, 0x6e, 0x76, 0x69,
0x74, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x75, 0x65, 0x10, 0xb2, 0x22, 0x42, 0x06, 0x5a, 0x04,
0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -70,22 +70,25 @@ func (RaceType) EnumDescriptor() ([]byte, []int) {
type RaceTeamState int32
const (
RaceTeamState_teaming RaceTeamState = 0 //组队中
RaceTeamState_matching RaceTeamState = 1 //匹配中
RaceTeamState_raceing RaceTeamState = 2 //比赛中
RaceTeamState_resting RaceTeamState = 0 //休息中
RaceTeamState_teaming RaceTeamState = 1 //组队中
RaceTeamState_matching RaceTeamState = 2 //匹配中
RaceTeamState_raceing RaceTeamState = 3 //比赛中
)
// Enum value maps for RaceTeamState.
var (
RaceTeamState_name = map[int32]string{
0: "teaming",
1: "matching",
2: "raceing",
0: "resting",
1: "teaming",
2: "matching",
3: "raceing",
}
RaceTeamState_value = map[string]int32{
"teaming": 0,
"matching": 1,
"raceing": 2,
"resting": 0,
"teaming": 1,
"matching": 2,
"raceing": 3,
}
)
@ -124,12 +127,14 @@ type DBRaceMember struct {
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"` //用户id
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` //用户名称
Mount string `protobuf:"bytes,3,opt,name=mount,proto3" json:"mount"` //上阵坐骑
Hp int32 `protobuf:"varint,4,opt,name=hp,proto3" json:"hp"` //初始血量
Innermost int32 `protobuf:"varint,5,opt,name=innermost,proto3" json:"innermost"` //里程数
Ready bool `protobuf:"varint,6,opt,name=ready,proto3" json:"ready"` //是否准备
Isai bool `protobuf:"varint,7,opt,name=isai,proto3" json:"isai"` //是否是ai
Isoff bool `protobuf:"varint,8,opt,name=isoff,proto3" json:"isoff"` //是否离线
Avatar string `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar"` //用户头像
Lv int32 `protobuf:"varint,4,opt,name=lv,proto3" json:"lv"` //等级
Mount string `protobuf:"bytes,5,opt,name=mount,proto3" json:"mount"` //上阵坐骑
Hp int32 `protobuf:"varint,6,opt,name=hp,proto3" json:"hp"` //初始血量
Innermost int32 `protobuf:"varint,7,opt,name=innermost,proto3" json:"innermost"` //里程数
Ready bool `protobuf:"varint,8,opt,name=ready,proto3" json:"ready"` //是否准备
Isai bool `protobuf:"varint,9,opt,name=isai,proto3" json:"isai"` //是否是ai
Isoff bool `protobuf:"varint,10,opt,name=isoff,proto3" json:"isoff"` //是否离线
}
func (x *DBRaceMember) Reset() {
@ -178,6 +183,20 @@ func (x *DBRaceMember) GetName() string {
return ""
}
func (x *DBRaceMember) GetAvatar() string {
if x != nil {
return x.Avatar
}
return ""
}
func (x *DBRaceMember) GetLv() int32 {
if x != nil {
return x.Lv
}
return 0
}
func (x *DBRaceMember) GetMount() string {
if x != nil {
return x.Mount
@ -227,7 +246,9 @@ type DBRaceInvite struct {
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"` //用户id
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` //用户名称
Expired int64 `protobuf:"varint,3,opt,name=expired,proto3" json:"expired"` //过期时间
Avatar string `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar"` //用户头像
Lv int32 `protobuf:"varint,4,opt,name=lv,proto3" json:"lv"` //等级
Expired int64 `protobuf:"varint,5,opt,name=expired,proto3" json:"expired"` //过期时间
}
func (x *DBRaceInvite) Reset() {
@ -276,6 +297,20 @@ func (x *DBRaceInvite) GetName() string {
return ""
}
func (x *DBRaceInvite) GetAvatar() string {
if x != nil {
return x.Avatar
}
return ""
}
func (x *DBRaceInvite) GetLv() int32 {
if x != nil {
return x.Lv
}
return 0
}
func (x *DBRaceInvite) GetExpired() int64 {
if x != nil {
return x.Expired
@ -289,13 +324,16 @@ type DBParkour struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` // 队伍id
Mounts map[string]int32 `protobuf:"bytes,2,rep,name=mounts,proto3" json:"mounts" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //坐骑列表
Dfmount string `protobuf:"bytes,3,opt,name=dfmount,proto3" json:"dfmount"` //默认坐骑
State RaceTeamState `protobuf:"varint,4,opt,name=state,proto3,enum=RaceTeamState" json:"state"` //队伍状态
Captainid string `protobuf:"bytes,5,opt,name=captainid,proto3" json:"captainid"` //队长id
Invite []*DBRaceInvite `protobuf:"bytes,6,rep,name=invite,proto3" json:"invite"` //邀请列表
Member []*DBRaceMember `protobuf:"bytes,7,rep,name=member,proto3" json:"member"` //成员列表
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` // 队伍id
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //用户id
Mounts map[string]int32 `protobuf:"bytes,3,rep,name=mounts,proto3" json:"mounts" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //坐骑列表
Dfmount string `protobuf:"bytes,4,opt,name=dfmount,proto3" json:"dfmount"` //默认坐骑
State RaceTeamState `protobuf:"varint,5,opt,name=state,proto3,enum=RaceTeamState" json:"state"` //队伍状态
Currbattid string `protobuf:"bytes,6,opt,name=currbattid,proto3" json:"currbattid"` //当前战斗id
Integral int32 `protobuf:"varint,7,opt,name=integral,proto3" json:"integral"` //积分
Captainid string `protobuf:"bytes,8,opt,name=captainid,proto3" json:"captainid"` //队长id 当前所在队伍
Invite []*DBRaceInvite `protobuf:"bytes,9,rep,name=invite,proto3" json:"invite"` //邀请列表
Member []*DBRaceMember `protobuf:"bytes,10,rep,name=member,proto3" json:"member"` //成员列表
}
func (x *DBParkour) Reset() {
@ -337,6 +375,13 @@ func (x *DBParkour) GetId() string {
return ""
}
func (x *DBParkour) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
func (x *DBParkour) GetMounts() map[string]int32 {
if x != nil {
return x.Mounts
@ -355,7 +400,21 @@ func (x *DBParkour) GetState() RaceTeamState {
if x != nil {
return x.State
}
return RaceTeamState_teaming
return RaceTeamState_resting
}
func (x *DBParkour) GetCurrbattid() string {
if x != nil {
return x.Currbattid
}
return ""
}
func (x *DBParkour) GetIntegral() int32 {
if x != nil {
return x.Integral
}
return 0
}
func (x *DBParkour) GetCaptainid() string {
@ -479,65 +538,76 @@ var File_parkour_parkour_db_proto protoreflect.FileDescriptor
var file_parkour_parkour_db_proto_rawDesc = []byte{
0x0a, 0x18, 0x70, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x2f, 0x70, 0x61, 0x72, 0x6b, 0x6f, 0x75,
0x72, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb8, 0x01, 0x0a, 0x0c, 0x44,
0x72, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe0, 0x01, 0x0a, 0x0c, 0x44,
0x42, 0x52, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x05, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x70, 0x18, 0x04, 0x20,
0x01, 0x28, 0x05, 0x52, 0x02, 0x68, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x6e, 0x65, 0x72,
0x6d, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x6e, 0x65,
0x72, 0x6d, 0x6f, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x06,
0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x69,
0x73, 0x61, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x61, 0x69, 0x12,
0x14, 0x0a, 0x05, 0x69, 0x73, 0x6f, 0x66, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05,
0x69, 0x73, 0x6f, 0x66, 0x66, 0x22, 0x4e, 0x0a, 0x0c, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x49,
0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65,
0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x78,
0x70, 0x69, 0x72, 0x65, 0x64, 0x22, 0xb2, 0x02, 0x0a, 0x09, 0x44, 0x42, 0x50, 0x61, 0x72, 0x6b,
0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18,
0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x75,
0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12,
0x0e, 0x0a, 0x02, 0x68, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x68, 0x70, 0x12,
0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01,
0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74, 0x12, 0x14, 0x0a,
0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65,
0x61, 0x64, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x61, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28,
0x08, 0x52, 0x04, 0x69, 0x73, 0x61, 0x69, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x6f, 0x66, 0x66,
0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x6f, 0x66, 0x66, 0x22, 0x76, 0x0a,
0x0c, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x10, 0x0a,
0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12,
0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x6c,
0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x18, 0x0a, 0x07, 0x65,
0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x78,
0x70, 0x69, 0x72, 0x65, 0x64, 0x22, 0x80, 0x03, 0x0a, 0x09, 0x44, 0x42, 0x50, 0x61, 0x72, 0x6b,
0x6f, 0x75, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x44, 0x42, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x2e,
0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6d, 0x6f, 0x75,
0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x66, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x66, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a,
0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x52,
0x61, 0x63, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74,
0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x64,
0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e, 0x69,
0x64, 0x12, 0x25, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
0x52, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62,
0x65, 0x72, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x52, 0x61, 0x63,
0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x1a,
0x39, 0x0a, 0x0b, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xef, 0x01, 0x0a, 0x06, 0x44,
0x42, 0x52, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x05, 0x72, 0x74, 0x79, 0x70, 0x65,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x52, 0x05, 0x72, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63,
0x6b, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x6b,
0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74, 0x18,
0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74,
0x12, 0x2b, 0x0a, 0x09, 0x72, 0x65, 0x64, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x62,
0x65, 0x72, 0x52, 0x09, 0x72, 0x65, 0x64, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2d, 0x0a,
0x0a, 0x62, 0x75, 0x6c, 0x65, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x03, 0x28,
0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18,
0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x44, 0x42, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75,
0x72, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6d,
0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x66, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x66, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12,
0x24, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e,
0x2e, 0x52, 0x61, 0x63, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05,
0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x62, 0x61, 0x74,
0x74, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x62,
0x61, 0x74, 0x74, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61,
0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61,
0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x64, 0x18, 0x08,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x64, 0x12,
0x25, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x0d, 0x2e, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x06,
0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72,
0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x4d,
0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x39, 0x0a,
0x0b, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xef, 0x01, 0x0a, 0x06, 0x44, 0x42, 0x52,
0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61,
0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x05, 0x72, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52,
0x05, 0x72, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69,
0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x64,
0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20,
0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74, 0x12, 0x2b,
0x0a, 0x09, 0x72, 0x65, 0x64, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72,
0x52, 0x0a, 0x62, 0x75, 0x6c, 0x65, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x2a, 0x22, 0x0a, 0x08,
0x52, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x69,
0x6e, 0x61, 0x72, 0x79, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x70, 0x72, 0x6f, 0x70, 0x10, 0x01,
0x2a, 0x37, 0x0a, 0x0d, 0x52, 0x61, 0x63, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74,
0x65, 0x12, 0x0b, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0c,
0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07,
0x72, 0x61, 0x63, 0x65, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70,
0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x52, 0x09, 0x72, 0x65, 0x64, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x0a, 0x62,
0x75, 0x6c, 0x65, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x0d, 0x2e, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0a,
0x62, 0x75, 0x6c, 0x65, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x2a, 0x22, 0x0a, 0x08, 0x52, 0x61,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61,
0x72, 0x79, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x70, 0x72, 0x6f, 0x70, 0x10, 0x01, 0x2a, 0x44,
0x0a, 0x0d, 0x52, 0x61, 0x63, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
0x0b, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07,
0x74, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x6d, 0x61, 0x74,
0x63, 0x68, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x72, 0x61, 0x63, 0x65, 0x69,
0x6e, 0x67, 0x10, 0x03, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
}
var (

File diff suppressed because it is too large Load Diff

View File

@ -993,6 +993,99 @@ func (x *PvpFinishPush) GetBattleid() string {
return ""
}
type RPC_PVPTrusteeshipReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Battleid []string `protobuf:"bytes,1,rep,name=battleid,proto3" json:"battleid"`
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"`
}
func (x *RPC_PVPTrusteeshipReq) Reset() {
*x = RPC_PVPTrusteeshipReq{}
if protoimpl.UnsafeEnabled {
mi := &file_pvp_pvp_msg_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RPC_PVPTrusteeshipReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RPC_PVPTrusteeshipReq) ProtoMessage() {}
func (x *RPC_PVPTrusteeshipReq) ProtoReflect() protoreflect.Message {
mi := &file_pvp_pvp_msg_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RPC_PVPTrusteeshipReq.ProtoReflect.Descriptor instead.
func (*RPC_PVPTrusteeshipReq) Descriptor() ([]byte, []int) {
return file_pvp_pvp_msg_proto_rawDescGZIP(), []int{18}
}
func (x *RPC_PVPTrusteeshipReq) GetBattleid() []string {
if x != nil {
return x.Battleid
}
return nil
}
func (x *RPC_PVPTrusteeshipReq) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
type RPC_PVPTrusteeshipResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *RPC_PVPTrusteeshipResp) Reset() {
*x = RPC_PVPTrusteeshipResp{}
if protoimpl.UnsafeEnabled {
mi := &file_pvp_pvp_msg_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RPC_PVPTrusteeshipResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RPC_PVPTrusteeshipResp) ProtoMessage() {}
func (x *RPC_PVPTrusteeshipResp) ProtoReflect() protoreflect.Message {
mi := &file_pvp_pvp_msg_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RPC_PVPTrusteeshipResp.ProtoReflect.Descriptor instead.
func (*RPC_PVPTrusteeshipResp) Descriptor() ([]byte, []int) {
return file_pvp_pvp_msg_proto_rawDescGZIP(), []int{19}
}
var File_pvp_pvp_msg_proto protoreflect.FileDescriptor
var file_pvp_pvp_msg_proto_rawDesc = []byte{
@ -1081,8 +1174,14 @@ var file_pvp_pvp_msg_proto_rawDesc = []byte{
0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x52, 0x03, 0x63, 0x6d, 0x64, 0x22, 0x2b, 0x0a, 0x0d,
0x50, 0x76, 0x70, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x50, 0x75, 0x73, 0x68, 0x12, 0x1a, 0x0a,
0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70,
0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x15, 0x52, 0x50, 0x43,
0x5f, 0x50, 0x56, 0x50, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x65, 0x73, 0x68, 0x69, 0x70, 0x52,
0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x18, 0x01,
0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x69, 0x64, 0x12, 0x10,
0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64,
0x22, 0x18, 0x0a, 0x16, 0x52, 0x50, 0x43, 0x5f, 0x50, 0x56, 0x50, 0x54, 0x72, 0x75, 0x73, 0x74,
0x65, 0x65, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -1097,7 +1196,7 @@ func file_pvp_pvp_msg_proto_rawDescGZIP() []byte {
return file_pvp_pvp_msg_proto_rawDescData
}
var file_pvp_pvp_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 18)
var file_pvp_pvp_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_pvp_pvp_msg_proto_goTypes = []interface{}{
(*PvpListReq)(nil), // 0: PvpListReq
(*PvpListResp)(nil), // 1: PvpListResp
@ -1117,27 +1216,29 @@ var file_pvp_pvp_msg_proto_goTypes = []interface{}{
(*PvpInCmdReq)(nil), // 15: PvpInCmdReq
(*PvpInCmdResp)(nil), // 16: PvpInCmdResp
(*PvpFinishPush)(nil), // 17: PvpFinishPush
(*DBPvpBattle)(nil), // 18: DBPvpBattle
(ErrorCode)(0), // 19: ErrorCode
(*BattleStateInfo)(nil), // 20: BattleStateInfo
(*PvpUserInfo)(nil), // 21: PvpUserInfo
(*BattleFormation)(nil), // 22: BattleFormation
(*BattleInfo)(nil), // 23: BattleInfo
(*BattleCmd)(nil), // 24: BattleCmd
(*RPC_PVPTrusteeshipReq)(nil), // 18: RPC_PVPTrusteeshipReq
(*RPC_PVPTrusteeshipResp)(nil), // 19: RPC_PVPTrusteeshipResp
(*DBPvpBattle)(nil), // 20: DBPvpBattle
(ErrorCode)(0), // 21: ErrorCode
(*BattleStateInfo)(nil), // 22: BattleStateInfo
(*PvpUserInfo)(nil), // 23: PvpUserInfo
(*BattleFormation)(nil), // 24: BattleFormation
(*BattleInfo)(nil), // 25: BattleInfo
(*BattleCmd)(nil), // 26: BattleCmd
}
var file_pvp_pvp_msg_proto_depIdxs = []int32{
18, // 0: PvpListResp.list:type_name -> DBPvpBattle
19, // 1: PvpIntoResp.code:type_name -> ErrorCode
20, // 2: PvpIntoResp.info:type_name -> BattleStateInfo
21, // 3: PvpReadyPush.red:type_name -> PvpUserInfo
21, // 4: PvpReadyPush.blue:type_name -> PvpUserInfo
22, // 5: PvpFormationReq.formation:type_name -> BattleFormation
19, // 6: PvpStartPush.code:type_name -> ErrorCode
23, // 7: PvpStartPush.info:type_name -> BattleInfo
24, // 8: PvpOutCmdPush.cmd:type_name -> BattleCmd
24, // 9: PvpInCmdReq.cmd:type_name -> BattleCmd
19, // 10: PvpInCmdResp.code:type_name -> ErrorCode
24, // 11: PvpInCmdResp.cmd:type_name -> BattleCmd
20, // 0: PvpListResp.list:type_name -> DBPvpBattle
21, // 1: PvpIntoResp.code:type_name -> ErrorCode
22, // 2: PvpIntoResp.info:type_name -> BattleStateInfo
23, // 3: PvpReadyPush.red:type_name -> PvpUserInfo
23, // 4: PvpReadyPush.blue:type_name -> PvpUserInfo
24, // 5: PvpFormationReq.formation:type_name -> BattleFormation
21, // 6: PvpStartPush.code:type_name -> ErrorCode
25, // 7: PvpStartPush.info:type_name -> BattleInfo
26, // 8: PvpOutCmdPush.cmd:type_name -> BattleCmd
26, // 9: PvpInCmdReq.cmd:type_name -> BattleCmd
21, // 10: PvpInCmdResp.code:type_name -> ErrorCode
26, // 11: PvpInCmdResp.cmd:type_name -> BattleCmd
12, // [12:12] is the sub-list for method output_type
12, // [12:12] is the sub-list for method input_type
12, // [12:12] is the sub-list for extension type_name
@ -1370,6 +1471,30 @@ func file_pvp_pvp_msg_proto_init() {
return nil
}
}
file_pvp_pvp_msg_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RPC_PVPTrusteeshipReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_pvp_pvp_msg_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RPC_PVPTrusteeshipResp); 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{
@ -1377,7 +1502,7 @@ func file_pvp_pvp_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_pvp_pvp_msg_proto_rawDesc,
NumEnums: 0,
NumMessages: 18,
NumMessages: 20,
NumExtensions: 0,
NumServices: 0,
},

419
pb/reputation_db.pb.go Normal file
View File

@ -0,0 +1,419 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v3.20.0
// source: reputation/reputation_db.proto
package pb
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type DBReputation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid" bson:"uid"` //玩家ID
Camps map[int32]*Camp `protobuf:"bytes,2,rep,name=camps,proto3" json:"camps" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" bson:"camps"` //key 阵营id
}
func (x *DBReputation) Reset() {
*x = DBReputation{}
if protoimpl.UnsafeEnabled {
mi := &file_reputation_reputation_db_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DBReputation) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DBReputation) ProtoMessage() {}
func (x *DBReputation) ProtoReflect() protoreflect.Message {
mi := &file_reputation_reputation_db_proto_msgTypes[0]
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 DBReputation.ProtoReflect.Descriptor instead.
func (*DBReputation) Descriptor() ([]byte, []int) {
return file_reputation_reputation_db_proto_rawDescGZIP(), []int{0}
}
func (x *DBReputation) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
func (x *DBReputation) GetCamps() map[int32]*Camp {
if x != nil {
return x.Camps
}
return nil
}
// 阵营
type Camp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ReputationLv int32 `protobuf:"varint,1,opt,name=reputationLv,proto3" json:"reputationLv" bson:"reputationLv"` //声望等级
CampAttr *CampAttr `protobuf:"bytes,2,opt,name=campAttr,proto3" json:"campAttr" bson:"campAttr"` //
Nodes []*TalentNode `protobuf:"bytes,3,rep,name=nodes,proto3" json:"nodes" bson:"nodes"` //天赋节点
}
func (x *Camp) Reset() {
*x = Camp{}
if protoimpl.UnsafeEnabled {
mi := &file_reputation_reputation_db_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Camp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Camp) ProtoMessage() {}
func (x *Camp) ProtoReflect() protoreflect.Message {
mi := &file_reputation_reputation_db_proto_msgTypes[1]
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 Camp.ProtoReflect.Descriptor instead.
func (*Camp) Descriptor() ([]byte, []int) {
return file_reputation_reputation_db_proto_rawDescGZIP(), []int{1}
}
func (x *Camp) GetReputationLv() int32 {
if x != nil {
return x.ReputationLv
}
return 0
}
func (x *Camp) GetCampAttr() *CampAttr {
if x != nil {
return x.CampAttr
}
return nil
}
func (x *Camp) GetNodes() []*TalentNode {
if x != nil {
return x.Nodes
}
return nil
}
// 阵营声望属性
type CampAttr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Hp int32 `protobuf:"varint,1,opt,name=hp,proto3" json:"hp"`
Attack int32 `protobuf:"varint,2,opt,name=attack,proto3" json:"attack"`
Defense int32 `protobuf:"varint,3,opt,name=defense,proto3" json:"defense"`
HpPer int32 `protobuf:"varint,4,opt,name=hpPer,proto3" json:"hpPer"`
}
func (x *CampAttr) Reset() {
*x = CampAttr{}
if protoimpl.UnsafeEnabled {
mi := &file_reputation_reputation_db_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CampAttr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CampAttr) ProtoMessage() {}
func (x *CampAttr) ProtoReflect() protoreflect.Message {
mi := &file_reputation_reputation_db_proto_msgTypes[2]
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 CampAttr.ProtoReflect.Descriptor instead.
func (*CampAttr) Descriptor() ([]byte, []int) {
return file_reputation_reputation_db_proto_rawDescGZIP(), []int{2}
}
func (x *CampAttr) GetHp() int32 {
if x != nil {
return x.Hp
}
return 0
}
func (x *CampAttr) GetAttack() int32 {
if x != nil {
return x.Attack
}
return 0
}
func (x *CampAttr) GetDefense() int32 {
if x != nil {
return x.Defense
}
return 0
}
func (x *CampAttr) GetHpPer() int32 {
if x != nil {
return x.HpPer
}
return 0
}
// 天赋节点
type TalentNode struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Nid int32 `protobuf:"varint,1,opt,name=nid,proto3" json:"nid" bson:"nid"` //节点ID
Lv int32 `protobuf:"varint,2,opt,name=lv,proto3" json:"lv" bson:"lv"` //天赋节点等级
Status int32 `protobuf:"varint,3,opt,name=status,proto3" json:"status" bson:"status"` // 状态 0未升级 1未满级 2满级
}
func (x *TalentNode) Reset() {
*x = TalentNode{}
if protoimpl.UnsafeEnabled {
mi := &file_reputation_reputation_db_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TalentNode) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TalentNode) ProtoMessage() {}
func (x *TalentNode) ProtoReflect() protoreflect.Message {
mi := &file_reputation_reputation_db_proto_msgTypes[3]
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 TalentNode.ProtoReflect.Descriptor instead.
func (*TalentNode) Descriptor() ([]byte, []int) {
return file_reputation_reputation_db_proto_rawDescGZIP(), []int{3}
}
func (x *TalentNode) GetNid() int32 {
if x != nil {
return x.Nid
}
return 0
}
func (x *TalentNode) GetLv() int32 {
if x != nil {
return x.Lv
}
return 0
}
func (x *TalentNode) GetStatus() int32 {
if x != nil {
return x.Status
}
return 0
}
var File_reputation_reputation_db_proto protoreflect.FileDescriptor
var file_reputation_reputation_db_proto_rawDesc = []byte{
0x0a, 0x1e, 0x72, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x72, 0x65, 0x70,
0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x22, 0x91, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x75, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x63, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x42, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x63, 0x61,
0x6d, 0x70, 0x73, 0x1a, 0x3f, 0x0a, 0x0a, 0x43, 0x61, 0x6d, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x05, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x3a, 0x02, 0x38, 0x01, 0x22, 0x74, 0x0a, 0x04, 0x43, 0x61, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0c,
0x72, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x76, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x76,
0x12, 0x25, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x41, 0x74, 0x74, 0x72, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x09, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x63,
0x61, 0x6d, 0x70, 0x41, 0x74, 0x74, 0x72, 0x12, 0x21, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73,
0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x4e,
0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x62, 0x0a, 0x08, 0x43, 0x61,
0x6d, 0x70, 0x41, 0x74, 0x74, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x70, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x02, 0x68, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x18,
0x0a, 0x07, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x07, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x70, 0x50, 0x65,
0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x70, 0x50, 0x65, 0x72, 0x22, 0x46,
0x0a, 0x0a, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03,
0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x69, 0x64, 0x12, 0x0e,
0x0a, 0x02, 0x6c, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x16,
0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_reputation_reputation_db_proto_rawDescOnce sync.Once
file_reputation_reputation_db_proto_rawDescData = file_reputation_reputation_db_proto_rawDesc
)
func file_reputation_reputation_db_proto_rawDescGZIP() []byte {
file_reputation_reputation_db_proto_rawDescOnce.Do(func() {
file_reputation_reputation_db_proto_rawDescData = protoimpl.X.CompressGZIP(file_reputation_reputation_db_proto_rawDescData)
})
return file_reputation_reputation_db_proto_rawDescData
}
var file_reputation_reputation_db_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_reputation_reputation_db_proto_goTypes = []interface{}{
(*DBReputation)(nil), // 0: DBReputation
(*Camp)(nil), // 1: Camp
(*CampAttr)(nil), // 2: CampAttr
(*TalentNode)(nil), // 3: TalentNode
nil, // 4: DBReputation.CampsEntry
}
var file_reputation_reputation_db_proto_depIdxs = []int32{
4, // 0: DBReputation.camps:type_name -> DBReputation.CampsEntry
2, // 1: Camp.campAttr:type_name -> CampAttr
3, // 2: Camp.nodes:type_name -> TalentNode
1, // 3: DBReputation.CampsEntry.value:type_name -> Camp
4, // [4:4] is the sub-list for method output_type
4, // [4:4] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
}
func init() { file_reputation_reputation_db_proto_init() }
func file_reputation_reputation_db_proto_init() {
if File_reputation_reputation_db_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_reputation_reputation_db_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DBReputation); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_reputation_reputation_db_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Camp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_reputation_reputation_db_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CampAttr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_reputation_reputation_db_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TalentNode); 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{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_reputation_reputation_db_proto_rawDesc,
NumEnums: 0,
NumMessages: 5,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_reputation_reputation_db_proto_goTypes,
DependencyIndexes: file_reputation_reputation_db_proto_depIdxs,
MessageInfos: file_reputation_reputation_db_proto_msgTypes,
}.Build()
File_reputation_reputation_db_proto = out.File
file_reputation_reputation_db_proto_rawDesc = nil
file_reputation_reputation_db_proto_goTypes = nil
file_reputation_reputation_db_proto_depIdxs = nil
}

575
pb/reputation_msg.pb.go Normal file
View File

@ -0,0 +1,575 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v3.20.0
// source: reputation/reputation_msg.proto
package pb
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
//测试
type ReputationTalenttestReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
RaceType int32 `protobuf:"varint,1,opt,name=raceType,proto3" json:"raceType"`
FriendValue int32 `protobuf:"varint,2,opt,name=friendValue,proto3" json:"friendValue"`
}
func (x *ReputationTalenttestReq) Reset() {
*x = ReputationTalenttestReq{}
if protoimpl.UnsafeEnabled {
mi := &file_reputation_reputation_msg_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReputationTalenttestReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReputationTalenttestReq) ProtoMessage() {}
func (x *ReputationTalenttestReq) ProtoReflect() protoreflect.Message {
mi := &file_reputation_reputation_msg_proto_msgTypes[0]
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 ReputationTalenttestReq.ProtoReflect.Descriptor instead.
func (*ReputationTalenttestReq) Descriptor() ([]byte, []int) {
return file_reputation_reputation_msg_proto_rawDescGZIP(), []int{0}
}
func (x *ReputationTalenttestReq) GetRaceType() int32 {
if x != nil {
return x.RaceType
}
return 0
}
func (x *ReputationTalenttestReq) GetFriendValue() int32 {
if x != nil {
return x.FriendValue
}
return 0
}
type ReputationTalenttestResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ReputationTalenttestResp) Reset() {
*x = ReputationTalenttestResp{}
if protoimpl.UnsafeEnabled {
mi := &file_reputation_reputation_msg_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReputationTalenttestResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReputationTalenttestResp) ProtoMessage() {}
func (x *ReputationTalenttestResp) ProtoReflect() protoreflect.Message {
mi := &file_reputation_reputation_msg_proto_msgTypes[1]
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 ReputationTalenttestResp.ProtoReflect.Descriptor instead.
func (*ReputationTalenttestResp) Descriptor() ([]byte, []int) {
return file_reputation_reputation_msg_proto_rawDescGZIP(), []int{1}
}
//天赋树升级
type ReputationUpgradeReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
NodeId int32 `protobuf:"varint,1,opt,name=nodeId,proto3" json:"nodeId"` //节点ID
}
func (x *ReputationUpgradeReq) Reset() {
*x = ReputationUpgradeReq{}
if protoimpl.UnsafeEnabled {
mi := &file_reputation_reputation_msg_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReputationUpgradeReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReputationUpgradeReq) ProtoMessage() {}
func (x *ReputationUpgradeReq) ProtoReflect() protoreflect.Message {
mi := &file_reputation_reputation_msg_proto_msgTypes[2]
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 ReputationUpgradeReq.ProtoReflect.Descriptor instead.
func (*ReputationUpgradeReq) Descriptor() ([]byte, []int) {
return file_reputation_reputation_msg_proto_rawDescGZIP(), []int{2}
}
func (x *ReputationUpgradeReq) GetNodeId() int32 {
if x != nil {
return x.NodeId
}
return 0
}
type ReputationUpgradeResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ReputationUpgradeResp) Reset() {
*x = ReputationUpgradeResp{}
if protoimpl.UnsafeEnabled {
mi := &file_reputation_reputation_msg_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReputationUpgradeResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReputationUpgradeResp) ProtoMessage() {}
func (x *ReputationUpgradeResp) ProtoReflect() protoreflect.Message {
mi := &file_reputation_reputation_msg_proto_msgTypes[3]
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 ReputationUpgradeResp.ProtoReflect.Descriptor instead.
func (*ReputationUpgradeResp) Descriptor() ([]byte, []int) {
return file_reputation_reputation_msg_proto_rawDescGZIP(), []int{3}
}
//获取天赋树节点
type ReputationTalentReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ReputationTalentReq) Reset() {
*x = ReputationTalentReq{}
if protoimpl.UnsafeEnabled {
mi := &file_reputation_reputation_msg_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReputationTalentReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReputationTalentReq) ProtoMessage() {}
func (x *ReputationTalentReq) ProtoReflect() protoreflect.Message {
mi := &file_reputation_reputation_msg_proto_msgTypes[4]
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 ReputationTalentReq.ProtoReflect.Descriptor instead.
func (*ReputationTalentReq) Descriptor() ([]byte, []int) {
return file_reputation_reputation_msg_proto_rawDescGZIP(), []int{4}
}
type ReputationTalentResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
AttrGlobal *CampAttr `protobuf:"bytes,1,opt,name=attrGlobal,proto3" json:"attrGlobal"`
Camp *Camp `protobuf:"bytes,2,opt,name=camp,proto3" json:"camp"`
}
func (x *ReputationTalentResp) Reset() {
*x = ReputationTalentResp{}
if protoimpl.UnsafeEnabled {
mi := &file_reputation_reputation_msg_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReputationTalentResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReputationTalentResp) ProtoMessage() {}
func (x *ReputationTalentResp) ProtoReflect() protoreflect.Message {
mi := &file_reputation_reputation_msg_proto_msgTypes[5]
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 ReputationTalentResp.ProtoReflect.Descriptor instead.
func (*ReputationTalentResp) Descriptor() ([]byte, []int) {
return file_reputation_reputation_msg_proto_rawDescGZIP(), []int{5}
}
func (x *ReputationTalentResp) GetAttrGlobal() *CampAttr {
if x != nil {
return x.AttrGlobal
}
return nil
}
func (x *ReputationTalentResp) GetCamp() *Camp {
if x != nil {
return x.Camp
}
return nil
}
// 阵营天赋树重置
type ReputationTalentresetReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
RaceType int32 `protobuf:"varint,1,opt,name=raceType,proto3" json:"raceType"`
}
func (x *ReputationTalentresetReq) Reset() {
*x = ReputationTalentresetReq{}
if protoimpl.UnsafeEnabled {
mi := &file_reputation_reputation_msg_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReputationTalentresetReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReputationTalentresetReq) ProtoMessage() {}
func (x *ReputationTalentresetReq) ProtoReflect() protoreflect.Message {
mi := &file_reputation_reputation_msg_proto_msgTypes[6]
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 ReputationTalentresetReq.ProtoReflect.Descriptor instead.
func (*ReputationTalentresetReq) Descriptor() ([]byte, []int) {
return file_reputation_reputation_msg_proto_rawDescGZIP(), []int{6}
}
func (x *ReputationTalentresetReq) GetRaceType() int32 {
if x != nil {
return x.RaceType
}
return 0
}
type ReputationTalentresetResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ReputationTalentresetResp) Reset() {
*x = ReputationTalentresetResp{}
if protoimpl.UnsafeEnabled {
mi := &file_reputation_reputation_msg_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReputationTalentresetResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReputationTalentresetResp) ProtoMessage() {}
func (x *ReputationTalentresetResp) ProtoReflect() protoreflect.Message {
mi := &file_reputation_reputation_msg_proto_msgTypes[7]
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 ReputationTalentresetResp.ProtoReflect.Descriptor instead.
func (*ReputationTalentresetResp) Descriptor() ([]byte, []int) {
return file_reputation_reputation_msg_proto_rawDescGZIP(), []int{7}
}
var File_reputation_reputation_msg_proto protoreflect.FileDescriptor
var file_reputation_reputation_msg_proto_rawDesc = []byte{
0x0a, 0x1f, 0x72, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x72, 0x65, 0x70,
0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x1a, 0x1e, 0x72, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x72, 0x65,
0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x22, 0x57, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
0x61, 0x6c, 0x65, 0x6e, 0x74, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08,
0x72, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x72, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x69, 0x65,
0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x66,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x72, 0x65,
0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x74, 0x65,
0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2e, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x75, 0x74, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16,
0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x72, 0x65, 0x70, 0x75, 0x74, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22,
0x15, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x6c,
0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x22, 0x5c, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x75, 0x74, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29,
0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x09, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x41, 0x74, 0x74, 0x72, 0x52, 0x0a, 0x61,
0x74, 0x74, 0x72, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x04, 0x63, 0x61, 0x6d,
0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x52, 0x04,
0x63, 0x61, 0x6d, 0x70, 0x22, 0x36, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x72, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71,
0x12, 0x1a, 0x0a, 0x08, 0x72, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x08, 0x72, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x1b, 0x0a, 0x19,
0x72, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74,
0x72, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70,
0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_reputation_reputation_msg_proto_rawDescOnce sync.Once
file_reputation_reputation_msg_proto_rawDescData = file_reputation_reputation_msg_proto_rawDesc
)
func file_reputation_reputation_msg_proto_rawDescGZIP() []byte {
file_reputation_reputation_msg_proto_rawDescOnce.Do(func() {
file_reputation_reputation_msg_proto_rawDescData = protoimpl.X.CompressGZIP(file_reputation_reputation_msg_proto_rawDescData)
})
return file_reputation_reputation_msg_proto_rawDescData
}
var file_reputation_reputation_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_reputation_reputation_msg_proto_goTypes = []interface{}{
(*ReputationTalenttestReq)(nil), // 0: reputationTalenttestReq
(*ReputationTalenttestResp)(nil), // 1: reputationTalenttestResp
(*ReputationUpgradeReq)(nil), // 2: reputationUpgradeReq
(*ReputationUpgradeResp)(nil), // 3: reputationUpgradeResp
(*ReputationTalentReq)(nil), // 4: reputationTalentReq
(*ReputationTalentResp)(nil), // 5: reputationTalentResp
(*ReputationTalentresetReq)(nil), // 6: reputationTalentresetReq
(*ReputationTalentresetResp)(nil), // 7: reputationTalentresetResp
(*CampAttr)(nil), // 8: CampAttr
(*Camp)(nil), // 9: Camp
}
var file_reputation_reputation_msg_proto_depIdxs = []int32{
8, // 0: reputationTalentResp.attrGlobal:type_name -> CampAttr
9, // 1: reputationTalentResp.camp:type_name -> Camp
2, // [2:2] is the sub-list for method output_type
2, // [2:2] is the sub-list for method input_type
2, // [2:2] is the sub-list for extension type_name
2, // [2:2] is the sub-list for extension extendee
0, // [0:2] is the sub-list for field type_name
}
func init() { file_reputation_reputation_msg_proto_init() }
func file_reputation_reputation_msg_proto_init() {
if File_reputation_reputation_msg_proto != nil {
return
}
file_reputation_reputation_db_proto_init()
if !protoimpl.UnsafeEnabled {
file_reputation_reputation_msg_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReputationTalenttestReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_reputation_reputation_msg_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReputationTalenttestResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_reputation_reputation_msg_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReputationUpgradeReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_reputation_reputation_msg_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReputationUpgradeResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_reputation_reputation_msg_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReputationTalentReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_reputation_reputation_msg_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReputationTalentResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_reputation_reputation_msg_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReputationTalentresetReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_reputation_reputation_msg_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReputationTalentresetResp); 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{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_reputation_reputation_msg_proto_rawDesc,
NumEnums: 0,
NumMessages: 8,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_reputation_reputation_msg_proto_goTypes,
DependencyIndexes: file_reputation_reputation_msg_proto_depIdxs,
MessageInfos: file_reputation_reputation_msg_proto_msgTypes,
}.Build()
File_reputation_reputation_msg_proto = out.File
file_reputation_reputation_msg_proto_rawDesc = nil
file_reputation_reputation_msg_proto_goTypes = nil
file_reputation_reputation_msg_proto_depIdxs = nil
}

View File

@ -131,6 +131,10 @@ type DBUser struct {
Ps int32 `protobuf:"varint,25,opt,name=ps,proto3" json:"ps" bson:"ps"` //体力
LastRecoverPsSec int64 `protobuf:"varint,26,opt,name=lastRecoverPsSec,proto3" json:"lastRecoverPsSec" bson:"lastRecoverPsSec"` // 上次体会恢复时间
Moongold int32 `protobuf:"varint,27,opt,name=moongold,proto3" json:"moongold" bson:"moongold"` //纯净月髓
Talent1 int32 `protobuf:"varint,28,opt,name=talent1,proto3" json:"talent1" bson:"talent1"` //阵营1天赋点
Talent2 int32 `protobuf:"varint,29,opt,name=talent2,proto3" json:"talent2" bson:"talent2"` //阵营2天赋点
Talent3 int32 `protobuf:"varint,30,opt,name=talent3,proto3" json:"talent3" bson:"talent3"` //阵营3天赋点
Talent4 int32 `protobuf:"varint,31,opt,name=talent4,proto3" json:"talent4" bson:"talent4"` //阵营4天赋点
}
func (x *DBUser) Reset() {
@ -354,6 +358,34 @@ func (x *DBUser) GetMoongold() int32 {
return 0
}
func (x *DBUser) GetTalent1() int32 {
if x != nil {
return x.Talent1
}
return 0
}
func (x *DBUser) GetTalent2() int32 {
if x != nil {
return x.Talent2
}
return 0
}
func (x *DBUser) GetTalent3() int32 {
if x != nil {
return x.Talent3
}
return 0
}
func (x *DBUser) GetTalent4() int32 {
if x != nil {
return x.Talent4
}
return 0
}
type DBUserSetting struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -614,7 +646,7 @@ var file_user_user_db_proto_rawDesc = []byte{
0x61, 0x67, 0x12, 0x2a, 0x0a, 0x10, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72,
0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x47, 0x61,
0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x8a,
0x0a, 0x02, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0xf2,
0x05, 0x0a, 0x06, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75,
@ -655,40 +687,47 @@ var file_user_user_db_proto_rawDesc = []byte{
0x65, 0x72, 0x50, 0x73, 0x53, 0x65, 0x63, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6c,
0x61, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x73, 0x53, 0x65, 0x63, 0x12,
0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28,
0x05, 0x52, 0x08, 0x6d, 0x6f, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x64, 0x22, 0xc7, 0x02, 0x0a, 0x0d,
0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a,
0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12,
0x16, 0x0a, 0x06, 0x68, 0x75, 0x61, 0x7a, 0x68, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x06, 0x68, 0x75, 0x61, 0x7a, 0x68, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x6b, 0x61, 0x6e, 0x67, 0x6a,
0x75, 0x63, 0x68, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6b, 0x61, 0x6e, 0x67,
0x6a, 0x75, 0x63, 0x68, 0x69, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x6f, 0x67, 0x75, 0x61, 0x6e,
0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x67, 0x61, 0x6f, 0x67, 0x75, 0x61, 0x6e,
0x67, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x75, 0x6c, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
0x04, 0x77, 0x75, 0x6c, 0x69, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x18, 0x07,
0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x65,
0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x66, 0x66,
0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x75, 0x61, 0x6a, 0x69, 0x18, 0x09, 0x20, 0x01,
0x28, 0x08, 0x52, 0x05, 0x67, 0x75, 0x61, 0x6a, 0x69, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x75, 0x62,
0x65, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x75, 0x62, 0x65, 0x6e, 0x12,
0x16, 0x0a, 0x06, 0x74, 0x61, 0x6e, 0x73, 0x75, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52,
0x06, 0x74, 0x61, 0x6e, 0x73, 0x75, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x75, 0x6f, 0x64, 0x6f,
0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x75, 0x6f, 0x64, 0x6f, 0x6e,
0x67, 0x12, 0x1c, 0x0a, 0x09, 0x78, 0x75, 0x61, 0x6e, 0x73, 0x68, 0x61, 0x6e, 0x67, 0x18, 0x0d,
0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x78, 0x75, 0x61, 0x6e, 0x73, 0x68, 0x61, 0x6e, 0x67, 0x12,
0x14, 0x0a, 0x05, 0x73, 0x61, 0x69, 0x6a, 0x69, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05,
0x73, 0x61, 0x69, 0x6a, 0x69, 0x22, 0xb8, 0x01, 0x0a, 0x06, 0x44, 0x42, 0x53, 0x69, 0x67, 0x6e,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75,
0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c,
0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
0x05, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05,
0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x6f,
0x75, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52,
0x03, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x7a, 0x7a, 0x6c, 0x65, 0x18, 0x07,
0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x70, 0x75, 0x7a, 0x7a, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04,
0x74, 0x69, 0x70, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x70, 0x73,
0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x05, 0x52, 0x08, 0x6d, 0x6f, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74,
0x61, 0x6c, 0x65, 0x6e, 0x74, 0x31, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61,
0x6c, 0x65, 0x6e, 0x74, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x32,
0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x32, 0x12,
0x18, 0x0a, 0x07, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x33, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05,
0x52, 0x07, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x6c,
0x65, 0x6e, 0x74, 0x34, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x6c, 0x65,
0x6e, 0x74, 0x34, 0x22, 0xc7, 0x02, 0x0a, 0x0d, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x75, 0x61, 0x7a, 0x68,
0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x75, 0x61, 0x7a, 0x68, 0x69, 0x12,
0x1c, 0x0a, 0x09, 0x6b, 0x61, 0x6e, 0x67, 0x6a, 0x75, 0x63, 0x68, 0x69, 0x18, 0x04, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x09, 0x6b, 0x61, 0x6e, 0x67, 0x6a, 0x75, 0x63, 0x68, 0x69, 0x12, 0x1a, 0x0a,
0x08, 0x67, 0x61, 0x6f, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52,
0x08, 0x67, 0x61, 0x6f, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x75, 0x6c,
0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x77, 0x75, 0x6c, 0x69, 0x12, 0x14, 0x0a,
0x05, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x75,
0x73, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20,
0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67,
0x75, 0x61, 0x6a, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x67, 0x75, 0x61, 0x6a,
0x69, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x75, 0x62, 0x65, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08,
0x52, 0x05, 0x66, 0x75, 0x62, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x6e, 0x73, 0x75,
0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x74, 0x61, 0x6e, 0x73, 0x75, 0x6f, 0x12,
0x18, 0x0a, 0x07, 0x68, 0x75, 0x6f, 0x64, 0x6f, 0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08,
0x52, 0x07, 0x68, 0x75, 0x6f, 0x64, 0x6f, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x78, 0x75, 0x61,
0x6e, 0x73, 0x68, 0x61, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x78, 0x75,
0x61, 0x6e, 0x73, 0x68, 0x61, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x61, 0x69, 0x6a, 0x69,
0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x61, 0x69, 0x6a, 0x69, 0x22, 0xb8, 0x01,
0x0a, 0x06, 0x44, 0x42, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69,
0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x69,
0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f,
0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x43,
0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20,
0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61,
0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06,
0x70, 0x75, 0x7a, 0x7a, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x70, 0x75,
0x7a, 0x7a, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x70, 0x73, 0x18, 0x08, 0x20, 0x01,
0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x70, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -595,6 +595,10 @@ type UserResChangedPush struct {
Arenacoin int32 `protobuf:"varint,8,opt,name=arenacoin,proto3" json:"arenacoin" bson:"arenacoin"` //竞技场币
Ps int32 `protobuf:"varint,9,opt,name=ps,proto3" json:"ps" bson:"ps"` //体力
Moongold int32 `protobuf:"varint,10,opt,name=moongold,proto3" json:"moongold" bson:"moongold"` //纯净月髓
Talent1 int32 `protobuf:"varint,11,opt,name=talent1,proto3" json:"talent1" bson:"talent1"` //阵营1天赋点
Talent2 int32 `protobuf:"varint,12,opt,name=talent2,proto3" json:"talent2" bson:"talent2"` //阵营2天赋点
Talent3 int32 `protobuf:"varint,13,opt,name=talent3,proto3" json:"talent3" bson:"talent3"` //阵营3天赋点
Talent4 int32 `protobuf:"varint,14,opt,name=talent4,proto3" json:"talent4" bson:"talent4"` //阵营4天赋点
}
func (x *UserResChangedPush) Reset() {
@ -699,6 +703,34 @@ func (x *UserResChangedPush) GetMoongold() int32 {
return 0
}
func (x *UserResChangedPush) GetTalent1() int32 {
if x != nil {
return x.Talent1
}
return 0
}
func (x *UserResChangedPush) GetTalent2() int32 {
if x != nil {
return x.Talent2
}
return 0
}
func (x *UserResChangedPush) GetTalent3() int32 {
if x != nil {
return x.Talent3
}
return 0
}
func (x *UserResChangedPush) GetTalent4() int32 {
if x != nil {
return x.Talent4
}
return 0
}
// 玩家在其它终端登录的通知
type UserOtherTermLoginPush struct {
state protoimpl.MessageState
@ -2702,7 +2734,7 @@ var file_user_user_msg_proto_rawDesc = []byte{
0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x6e,
0x64, 0x65, 0x72, 0x22, 0x28, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x75, 0x63, 0x63, 0x18,
0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x53, 0x75, 0x63, 0x63, 0x22, 0x88, 0x02,
0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x53, 0x75, 0x63, 0x63, 0x22, 0xf0, 0x02,
0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
0x50, 0x75, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x04, 0x67, 0x6f, 0x6c, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x78, 0x70, 0x18,
@ -2719,137 +2751,143 @@ var file_user_user_msg_proto_rawDesc = []byte{
0x05, 0x52, 0x09, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02,
0x70, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x70, 0x73, 0x12, 0x1a, 0x0a, 0x08,
0x6d, 0x6f, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x6d, 0x6f, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x64, 0x22, 0x2a, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72,
0x4f, 0x74, 0x68, 0x65, 0x72, 0x54, 0x65, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x50, 0x75,
0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x75, 0x69, 0x64, 0x22, 0x23, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x50, 0x73, 0x43, 0x68,
0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x75, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x70, 0x73, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x70, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x55, 0x73, 0x65,
0x72, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x22, 0x3e,
0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x40,
0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e,
0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
0x22, 0x29, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x55,
0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x22, 0x26,
0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65,
0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x25, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e,
0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x24, 0x0a,
0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73,
0x6d, 0x6f, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x6c, 0x65,
0x6e, 0x74, 0x31, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x6c, 0x65, 0x6e,
0x74, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x32, 0x18, 0x0c, 0x20,
0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x32, 0x12, 0x18, 0x0a, 0x07,
0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74,
0x61, 0x6c, 0x65, 0x6e, 0x74, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74,
0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x34,
0x22, 0x2a, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x54, 0x65, 0x72,
0x6d, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x50, 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x23, 0x0a, 0x11,
0x55, 0x73, 0x65, 0x72, 0x50, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x75, 0x73,
0x68, 0x12, 0x0e, 0x0a, 0x02, 0x70, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x70,
0x73, 0x22, 0x13, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x22, 0x3e, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65,
0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x07,
0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x40, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x28,
0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x0e, 0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52,
0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x29, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73,
0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x75, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66,
0x79, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x12,
0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65,
0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x31,
0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x61, 0x76, 0x61, 0x74,
0x61, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49,
0x64, 0x22, 0x44, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x61,
0x76, 0x61, 0x74, 0x61, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61,
0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61,
0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x64, 0x22, 0x28, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x4d,
0x6f, 0x64, 0x69, 0x66, 0x79, 0x62, 0x67, 0x70, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x62,
0x67, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x67, 0x70, 0x49,
0x64, 0x22, 0x3b, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x62,
0x67, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x67, 0x70, 0x49,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x67, 0x70, 0x49, 0x64, 0x22, 0x31,
0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x66, 0x69, 0x67, 0x75,
0x72, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x49,
0x64, 0x22, 0x44, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x66,
0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66,
0x69, 0x67, 0x75, 0x72, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66,
0x69, 0x67, 0x75, 0x72, 0x65, 0x49, 0x64, 0x22, 0x12, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x47,
0x65, 0x74, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x22, 0x2d, 0x0a, 0x11, 0x55,
0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70,
0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x09, 0x52, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x22, 0x47, 0x0a, 0x11, 0x55, 0x73,
0x65, 0x72, 0x4c, 0x76, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x75, 0x73, 0x68, 0x12,
0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69,
0x64, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03,
0x65, 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x6c, 0x76, 0x22, 0x54, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x56, 0x69, 0x70, 0x43, 0x68,
0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x76,
0x69, 0x70, 0x45, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x76, 0x69, 0x70,
0x45, 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, 0x70, 0x4c, 0x76, 0x18, 0x03, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x76, 0x69, 0x70, 0x4c, 0x76, 0x22, 0x27, 0x0a, 0x11, 0x55, 0x73, 0x65,
0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x12,
0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69,
0x67, 0x6e, 0x22, 0x26, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79,
0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x13, 0x55, 0x73,
0x65, 0x72, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65,
0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x75, 0x69, 0x64, 0x22, 0xf0, 0x01, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74,
0x6c, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04,
0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x55,
0x73, 0x65, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x02, 0x65, 0x78, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78,
0x70, 0x61, 0x6e, 0x64, 0x52, 0x02, 0x65, 0x78, 0x12, 0x33, 0x0a, 0x0c, 0x70, 0x61, 0x67, 0x6f,
0x64, 0x61, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
0x2e, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52,
0x0c, 0x70, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x34, 0x0a,
0x0d, 0x68, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x04,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x44, 0x42, 0x48, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67,
0x52, 0x61, 0x6e, 0x6b, 0x52, 0x0d, 0x68, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x12, 0x31, 0x0a, 0x0c, 0x76, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x56, 0x69,
0x6b, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x0c, 0x76, 0x69, 0x6b, 0x69, 0x6e, 0x67,
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x34, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x74, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a,
0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
0x52, 0x0a, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x64, 0x73, 0x22, 0x27, 0x0a, 0x13,
0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x74, 0x65, 0x61, 0x6d, 0x52,
0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x53, 0x68, 0x6f,
0x77, 0x74, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x22, 0x32, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72,
0x53, 0x68, 0x6f, 0x77, 0x74, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a,
0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
0x52, 0x0a, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x64, 0x73, 0x22, 0x32, 0x0a, 0x0e,
0x55, 0x73, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x20,
0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e,
0x43, 0x61, 0x63, 0x68, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73,
0x22, 0x31, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74,
0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73,
0x65, 0x72, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x22, 0x3a, 0x0a, 0x15, 0x55,
0x75, 0x69, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x43,
0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x22, 0x26, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65,
0x72, 0x69, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f,
0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x25,
0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65,
0x71, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x24, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x69,
0x74, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x11, 0x55,
0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71,
0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69,
0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f,
0x64, 0x69, 0x66, 0x79, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a,
0x08, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x08, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x14, 0x55, 0x73, 0x65,
0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x52, 0x65, 0x73,
0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x64, 0x22,
0x28, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x62, 0x67, 0x70,
0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x67, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x62, 0x67, 0x70, 0x49, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x55, 0x73, 0x65,
0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x62, 0x67, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10,
0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64,
0x12, 0x14, 0x0a, 0x05, 0x62, 0x67, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x62, 0x67, 0x70, 0x49, 0x64, 0x22, 0x31, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f,
0x64, 0x69, 0x66, 0x79, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a,
0x08, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x08, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x14, 0x55, 0x73, 0x65,
0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73,
0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x49, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x49, 0x64, 0x22,
0x12, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e,
0x52, 0x65, 0x71, 0x22, 0x2d, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x54, 0x75,
0x6a, 0x69, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x72, 0x6f,
0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x69,
0x64, 0x73, 0x22, 0x47, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x76, 0x43, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x64, 0x50, 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x78, 0x70,
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x6c,
0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x22, 0x54, 0x0a, 0x12, 0x55,
0x73, 0x65, 0x72, 0x56, 0x69, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x75, 0x73,
0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x69, 0x70, 0x45, 0x78, 0x70, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x52, 0x06, 0x76, 0x69, 0x70, 0x45, 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x76,
0x69, 0x70, 0x4c, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x69, 0x70, 0x4c,
0x76, 0x22, 0x27, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x73,
0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x22, 0x26, 0x0a, 0x12, 0x55, 0x73,
0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70,
0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75,
0x69, 0x64, 0x22, 0x27, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65,
0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0xf0, 0x01, 0x0a, 0x14,
0x55, 0x73, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74,
0x61, 0x12, 0x1d, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e,
0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x02, 0x65, 0x78,
0x12, 0x33, 0x0a, 0x0c, 0x70, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64,
0x61, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x34, 0x0a, 0x0d, 0x68, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67,
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x44,
0x42, 0x48, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x0d, 0x68, 0x75,
0x6e, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x31, 0x0a, 0x0c, 0x76,
0x69, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x56, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x6e, 0x6b,
0x52, 0x0c, 0x76, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x34,
0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x74, 0x65, 0x61,
0x6d, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49,
0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62,
0x6a, 0x49, 0x64, 0x73, 0x22, 0x27, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x74, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x11, 0x0a,
0x0f, 0x55, 0x73, 0x65, 0x72, 0x53, 0x68, 0x6f, 0x77, 0x74, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71,
0x22, 0x32, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x53, 0x68, 0x6f, 0x77, 0x74, 0x65, 0x61, 0x6d,
0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49,
0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62,
0x6a, 0x49, 0x64, 0x73, 0x22, 0x32, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69,
0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18,
0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x55, 0x73, 0x65,
0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x31, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72,
0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x05,
0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42,
0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x55,
0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61,
0x52, 0x65, 0x73, 0x70, 0x12, 0x21, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74,
0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x0d, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53,
0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x22, 0x2b, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x53, 0x69,
0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x04, 0x64,
0x61, 0x74, 0x61, 0x22, 0x2a, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x7a, 0x7a, 0x6c,
0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22,
0x2b, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x7a, 0x7a, 0x6c, 0x65, 0x41, 0x77, 0x61,
0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x27, 0x0a, 0x11,
0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x70, 0x73, 0x52, 0x65,
0x71, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x04, 0x74, 0x69, 0x70, 0x73, 0x22, 0x31, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x54, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x64,
0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x53, 0x69,
0x67, 0x6e, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x52, 0x65, 0x71, 0x22, 0x3a, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x12, 0x21, 0x0a, 0x04,
0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x53,
0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
0x0d, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x22, 0x2b,
0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b,
0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44,
0x42, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2a, 0x0a, 0x12, 0x55,
0x73, 0x65, 0x72, 0x50, 0x75, 0x7a, 0x7a, 0x6c, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65,
0x71, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x2b, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x50,
0x75, 0x7a, 0x7a, 0x6c, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14,
0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69,
0x6e, 0x64, 0x65, 0x78, 0x22, 0x27, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x54, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x70,
0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x70, 0x73, 0x22, 0x31, 0x0a,
0x12, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x70, 0x73, 0x52,
0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -34,6 +34,7 @@ import (
"go_dreamfactory/modules/privilege"
"go_dreamfactory/modules/pvp"
"go_dreamfactory/modules/reddot"
"go_dreamfactory/modules/reputation"
"go_dreamfactory/modules/rtask"
"go_dreamfactory/modules/shop"
"go_dreamfactory/modules/smithy"
@ -58,8 +59,8 @@ import (
)
/*
服务类型:worker
服务描述:处理梦工厂的具体业务需求包含 user,pack,mail,friend...功能业务模块
服务类型:worker
服务描述:处理梦工厂的具体业务需求包含 user,pack,mail,friend...功能业务模块
*/
var (
conf = flag.String("conf", "./conf/worker_1.yaml", "获取需要启动的服务配置文件") //启动服务的Id
@ -119,6 +120,7 @@ func main() {
practice.NewModule(),
parkour.NewModule(),
tools.NewModule(),
reputation.NewModule(),
)
}
@ -128,12 +130,12 @@ func NewService(ops ...rpcx.Option) core.IService {
return s
}
//worker 的服务对象定义
// worker 的服务对象定义
type Service struct {
services.ServiceBase
}
//初始化worker需要的一些系统工具
// 初始化worker需要的一些系统工具
func (this *Service) InitSys() {
this.ServiceBase.InitSys()
//初始化配置中心系统 每个服务都会用到的就在这个初始化就好

View File

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

View File

@ -0,0 +1,43 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameBuzkashiFmData struct {
Num int32
Type int32
Stime string
Broadcast string
Icon string
}
const TypeId_GameBuzkashiFmData = -1288548636
func (*GameBuzkashiFmData) GetTypeId() int32 {
return -1288548636
}
func (_v *GameBuzkashiFmData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["num"].(float64); !_ok_ { err = errors.New("num error"); return }; _v.Num = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) }
{ var _ok_ bool; if _v.Stime, _ok_ = _buf["stime"].(string); !_ok_ { err = errors.New("stime error"); return } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["broadcast"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Broadcast error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Broadcast, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; if _v.Icon, _ok_ = _buf["icon"].(string); !_ok_ { err = errors.New("icon error"); return } }
return
}
func DeserializeGameBuzkashiFmData(_buf map[string]interface{}) (*GameBuzkashiFmData, error) {
v := &GameBuzkashiFmData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

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

View File

@ -0,0 +1,39 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameBuzkashiGradeData struct {
Num int32
Distance string
Value int32
}
const TypeId_GameBuzkashiGradeData = -378990226
func (*GameBuzkashiGradeData) GetTypeId() int32 {
return -378990226
}
func (_v *GameBuzkashiGradeData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["num"].(float64); !_ok_ { err = errors.New("num error"); return }; _v.Num = int32(_tempNum_) }
{ var _ok_ bool; if _v.Distance, _ok_ = _buf["distance"].(string); !_ok_ { err = errors.New("distance error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["value"].(float64); !_ok_ { err = errors.New("value error"); return }; _v.Value = int32(_tempNum_) }
return
}
func DeserializeGameBuzkashiGradeData(_buf map[string]interface{}) (*GameBuzkashiGradeData, error) {
v := &GameBuzkashiGradeData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

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

View File

@ -0,0 +1,39 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameBuzkashiLvData struct {
Num int32
Score string
Value int32
}
const TypeId_GameBuzkashiLvData = -1108462041
func (*GameBuzkashiLvData) GetTypeId() int32 {
return -1108462041
}
func (_v *GameBuzkashiLvData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["num"].(float64); !_ok_ { err = errors.New("num error"); return }; _v.Num = int32(_tempNum_) }
{ var _ok_ bool; if _v.Score, _ok_ = _buf["score"].(string); !_ok_ { err = errors.New("score error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["value"].(float64); !_ok_ { err = errors.New("value error"); return }; _v.Value = int32(_tempNum_) }
return
}
func DeserializeGameBuzkashiLvData(_buf map[string]interface{}) (*GameBuzkashiLvData, error) {
v := &GameBuzkashiLvData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

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

View File

@ -0,0 +1,53 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameBuzkashiMountData struct {
Num string
Stime int32
Etime int32
Hp int32
Model string
Point string
Moderate int32
Sprint int32
Acceleration int32
Deceleration int32
}
const TypeId_GameBuzkashiMountData = 1598069936
func (*GameBuzkashiMountData) GetTypeId() int32 {
return 1598069936
}
func (_v *GameBuzkashiMountData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; if _v.Num, _ok_ = _buf["num"].(string); !_ok_ { err = errors.New("num error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["stime"].(float64); !_ok_ { err = errors.New("stime error"); return }; _v.Stime = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["etime"].(float64); !_ok_ { err = errors.New("etime error"); return }; _v.Etime = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["hp"].(float64); !_ok_ { err = errors.New("hp error"); return }; _v.Hp = int32(_tempNum_) }
{ var _ok_ bool; if _v.Model, _ok_ = _buf["model"].(string); !_ok_ { err = errors.New("model error"); return } }
{ var _ok_ bool; if _v.Point, _ok_ = _buf["point"].(string); !_ok_ { err = errors.New("point error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["moderate"].(float64); !_ok_ { err = errors.New("moderate error"); return }; _v.Moderate = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["sprint"].(float64); !_ok_ { err = errors.New("sprint error"); return }; _v.Sprint = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["acceleration"].(float64); !_ok_ { err = errors.New("acceleration error"); return }; _v.Acceleration = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["deceleration"].(float64); !_ok_ { err = errors.New("deceleration error"); return }; _v.Deceleration = int32(_tempNum_) }
return
}
func DeserializeGameBuzkashiMountData(_buf map[string]interface{}) (*GameBuzkashiMountData, error) {
v := &GameBuzkashiMountData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

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

View File

@ -0,0 +1,52 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameBuzkashiRewardData struct {
Key int32
Schedule int32
Reword []*Gameatn
}
const TypeId_GameBuzkashiRewardData = -1577911348
func (*GameBuzkashiRewardData) GetTypeId() int32 {
return -1577911348
}
func (_v *GameBuzkashiRewardData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["schedule"].(float64); !_ok_ { err = errors.New("schedule error"); return }; _v.Schedule = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["reword"].([]interface{}); !_ok_ { err = errors.New("reword error"); return }
_v.Reword = make([]*Gameatn, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ *Gameatn
{ var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } }
_v.Reword = append(_v.Reword, _list_v_)
}
}
return
}
func DeserializeGameBuzkashiRewardData(_buf map[string]interface{}) (*GameBuzkashiRewardData, error) {
v := &GameBuzkashiRewardData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

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

View File

@ -0,0 +1,47 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameNavigationData struct {
Id int32
Scene string
Scenename string
Sceneicon string
Functionname string
NpcName string
Functionicon string
}
const TypeId_GameNavigationData = -800652966
func (*GameNavigationData) GetTypeId() int32 {
return -800652966
}
func (_v *GameNavigationData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Id"].(float64); !_ok_ { err = errors.New("Id error"); return }; _v.Id = int32(_tempNum_) }
{ var _ok_ bool; if _v.Scene, _ok_ = _buf["scene"].(string); !_ok_ { err = errors.New("scene error"); return } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["scenename"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Scenename error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Scenename, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; if _v.Sceneicon, _ok_ = _buf["sceneicon"].(string); !_ok_ { err = errors.New("sceneicon error"); return } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["functionname"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Functionname error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Functionname, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; if _v.NpcName, _ok_ = _buf["npcName"].(string); !_ok_ { err = errors.New("npcName error"); return } }
{ var _ok_ bool; if _v.Functionicon, _ok_ = _buf["functionicon"].(string); !_ok_ { err = errors.New("functionicon error"); return } }
return
}
func DeserializeGameNavigationData(_buf map[string]interface{}) (*GameNavigationData, error) {
v := &GameNavigationData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

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

View File

@ -0,0 +1,43 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GamebuzkashiOpenData struct {
Num int32
Shtime int32
Smtime int32
Ehtime int32
Emtime int32
}
const TypeId_GamebuzkashiOpenData = 1621393927
func (*GamebuzkashiOpenData) GetTypeId() int32 {
return 1621393927
}
func (_v *GamebuzkashiOpenData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["num"].(float64); !_ok_ { err = errors.New("num error"); return }; _v.Num = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["shtime"].(float64); !_ok_ { err = errors.New("shtime error"); return }; _v.Shtime = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["smtime"].(float64); !_ok_ { err = errors.New("smtime error"); return }; _v.Smtime = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["ehtime"].(float64); !_ok_ { err = errors.New("ehtime error"); return }; _v.Ehtime = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["emtime"].(float64); !_ok_ { err = errors.New("emtime error"); return }; _v.Emtime = int32(_tempNum_) }
return
}
func DeserializeGamebuzkashiOpenData(_buf map[string]interface{}) (*GamebuzkashiOpenData, error) {
v := &GamebuzkashiOpenData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -189,6 +189,13 @@ type Tables struct {
Favorability *GameFavorability
Friends *GameFriends
CampLv *GameCampLv
Navigation *GameNavigation
BuzkashiMount *GameBuzkashiMount
BuzkashiLv *GameBuzkashiLv
BuzkashiGrade *GameBuzkashiGrade
BuzkashiReward *GameBuzkashiReward
BuzkashiFm *GameBuzkashiFm
buzkashiOpen *GamebuzkashiOpen
}
func NewTables(loader JsonLoader) (*Tables, error) {
@ -1264,5 +1271,47 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.CampLv, err = NewGameCampLv(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_navigation") ; err != nil {
return nil, err
}
if tables.Navigation, err = NewGameNavigation(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_buzkashimount") ; err != nil {
return nil, err
}
if tables.BuzkashiMount, err = NewGameBuzkashiMount(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_buzkashilv") ; err != nil {
return nil, err
}
if tables.BuzkashiLv, err = NewGameBuzkashiLv(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_buzkashigrade") ; err != nil {
return nil, err
}
if tables.BuzkashiGrade, err = NewGameBuzkashiGrade(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_buzkashireward") ; err != nil {
return nil, err
}
if tables.BuzkashiReward, err = NewGameBuzkashiReward(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_buzkashifm") ; err != nil {
return nil, err
}
if tables.BuzkashiFm, err = NewGameBuzkashiFm(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_buzkashiopen") ; err != nil {
return nil, err
}
if tables.buzkashiOpen, err = NewGamebuzkashiOpen(buf) ; err != nil {
return nil, err
}
return tables, nil
}

View File

@ -222,7 +222,10 @@ type GameGlobalData struct {
BuzkashiVintegral []*Gameatn
BuzkashiFintegral []*Gameatn
BuzkashiResurrection int32
<<<<<<< HEAD
FavorabilityAttenuation []*Gamekv
=======
>>>>>>> 2ff92487cf513d980124f84c7fe3db1e6bb88e31
}
const TypeId_GameGlobalData = 477542761
@ -911,6 +914,7 @@ func (_v *GameGlobalData)Deserialize(_buf map[string]interface{}) (err error) {
}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["buzkashi_resurrection"].(float64); !_ok_ { err = errors.New("buzkashi_resurrection error"); return }; _v.BuzkashiResurrection = int32(_tempNum_) }
<<<<<<< HEAD
{
var _arr_ []interface{}
var _ok_ bool
@ -925,6 +929,8 @@ func (_v *GameGlobalData)Deserialize(_buf map[string]interface{}) (err error) {
}
}
=======
>>>>>>> 2ff92487cf513d980124f84c7fe3db1e6bb88e31
return
}

View File

@ -27,6 +27,8 @@ type GameModelData struct {
Bust string
Postxyz []float32
Rotation serialization.Vector3
BoxPos serialization.Vector3
BoxSize serialization.Vector3
}
const TypeId_GameModelData = -305436809
@ -71,6 +73,22 @@ func (_v *GameModelData)Deserialize(_buf map[string]interface{}) (err error) {
_v.Rotation = serialization.NewVector3(_x_, _y_, _z_)
}
{ var _ok_ bool; var _v_ map[string]interface{}; if _v_, _ok_ = _buf["boxPos"].(map[string]interface{}); !_ok_ { err = errors.New("boxPos error"); return }
var _x_, _y_, _z_ float32;
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["x"].(float64); !_ok_ { err = errors.New("x error"); return }; _x_ = float32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["y"].(float64); !_ok_ { err = errors.New("y error"); return }; _y_ = float32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["z"].(float64); !_ok_ { err = errors.New("z error"); return }; _z_ = float32(_tempNum_) }
_v.BoxPos = serialization.NewVector3(_x_, _y_, _z_)
}
{ var _ok_ bool; var _v_ map[string]interface{}; if _v_, _ok_ = _buf["boxSize"].(map[string]interface{}); !_ok_ { err = errors.New("boxSize error"); return }
var _x_, _y_, _z_ float32;
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["x"].(float64); !_ok_ { err = errors.New("x error"); return }; _x_ = float32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["y"].(float64); !_ok_ { err = errors.New("y error"); return }; _y_ = float32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["z"].(float64); !_ok_ { err = errors.New("z error"); return }; _z_ = float32(_tempNum_) }
_v.BoxSize = serialization.NewVector3(_x_, _y_, _z_)
}
return
}