This commit is contained in:
liwei1dao 2023-01-07 10:01:30 +08:00
commit 8b30a4a45b
49 changed files with 9969 additions and 7190 deletions

View File

@ -7,6 +7,7 @@
"key": "suit_13001", "key": "suit_13001",
"text": "神龙大侠" "text": "神龙大侠"
}, },
"FloatIcon": "",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "攻击力+30%" "text": "攻击力+30%"
@ -26,6 +27,7 @@
"key": "suit_13002", "key": "suit_13002",
"text": "无牙仔" "text": "无牙仔"
}, },
"FloatIcon": "",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "速度+25%" "text": "速度+25%"
@ -45,6 +47,7 @@
"key": "suit_13003", "key": "suit_13003",
"text": "冰霜杰克" "text": "冰霜杰克"
}, },
"FloatIcon": "ty_zd_buff_z007",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "受到伤害时有25%的概率【冰冻】目标1回合" "text": "受到伤害时有25%的概率【冰冻】目标1回合"
@ -59,6 +62,7 @@
"key": "suit_13004", "key": "suit_13004",
"text": "漆黑" "text": "漆黑"
}, },
"FloatIcon": "",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "+35%吸血" "text": "+35%吸血"
@ -78,6 +82,7 @@
"key": "suit_13005", "key": "suit_13005",
"text": "醉乡民谣" "text": "醉乡民谣"
}, },
"FloatIcon": "",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "治疗效果+30%" "text": "治疗效果+30%"
@ -97,6 +102,7 @@
"key": "suit_13006", "key": "suit_13006",
"text": "果子酒" "text": "果子酒"
}, },
"FloatIcon": "ty_zd_buff_z007",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "回合开始时有35%概率令自身所有技能冷却时间-1回合" "text": "回合开始时有35%概率令自身所有技能冷却时间-1回合"
@ -111,6 +117,7 @@
"key": "suit_13007", "key": "suit_13007",
"text": "月中人" "text": "月中人"
}, },
"FloatIcon": "ty_zd_buff_z007",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "造成伤害时有20%概率【眩晕】目标1回合" "text": "造成伤害时有20%概率【眩晕】目标1回合"
@ -125,6 +132,7 @@
"key": "suit_13008", "key": "suit_13008",
"text": "功夫五侠" "text": "功夫五侠"
}, },
"FloatIcon": "",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "暴击伤害+40%" "text": "暴击伤害+40%"
@ -144,6 +152,7 @@
"key": "suit_13009", "key": "suit_13009",
"text": "黄金包子" "text": "黄金包子"
}, },
"FloatIcon": "ty_zd_buff_z007",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "自身可行动时有20%概率额外行动一次(仅触发一次,额外行动不会恢复技能冷却时间)" "text": "自身可行动时有20%概率额外行动一次(仅触发一次,额外行动不会恢复技能冷却时间)"
@ -158,6 +167,7 @@
"key": "suit_13010", "key": "suit_13010",
"text": "月台" "text": "月台"
}, },
"FloatIcon": "ty_zd_buff_z007",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "我方被施加控制效果的神觉者速度提高50点不可叠加" "text": "我方被施加控制效果的神觉者速度提高50点不可叠加"
@ -172,6 +182,7 @@
"key": "suit_13011", "key": "suit_13011",
"text": "老板" "text": "老板"
}, },
"FloatIcon": "",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "生命值+25%" "text": "生命值+25%"
@ -191,6 +202,7 @@
"key": "suit_13012", "key": "suit_13012",
"text": "野蛮人" "text": "野蛮人"
}, },
"FloatIcon": "",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "防御力+25%" "text": "防御力+25%"
@ -210,6 +222,7 @@
"key": "suit_13013", "key": "suit_13013",
"text": "文明人" "text": "文明人"
}, },
"FloatIcon": "",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "效果命中+25%" "text": "效果命中+25%"
@ -229,6 +242,7 @@
"key": "suit_13014", "key": "suit_13014",
"text": "玉如意" "text": "玉如意"
}, },
"FloatIcon": "ty_zd_buff_z007",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "受到伤害时有25%几率使用技能一反击" "text": "受到伤害时有25%几率使用技能一反击"
@ -243,6 +257,7 @@
"key": "suit_13015", "key": "suit_13015",
"text": "牙仙" "text": "牙仙"
}, },
"FloatIcon": "ty_zd_buff_z007",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "己方全体在战斗开始的时候获得2回合【护盾】数值为最大生命值的15%" "text": "己方全体在战斗开始的时候获得2回合【护盾】数值为最大生命值的15%"
@ -257,6 +272,7 @@
"key": "suit_13016", "key": "suit_13016",
"text": "圣诞老人" "text": "圣诞老人"
}, },
"FloatIcon": "",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "暴击率+20%" "text": "暴击率+20%"
@ -276,6 +292,7 @@
"key": "suit_13017", "key": "suit_13017",
"text": "睡神" "text": "睡神"
}, },
"FloatIcon": "ty_zd_buff_z007",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "施加中毒、流血效果时有30%几率令其持续时间增加1回合" "text": "施加中毒、流血效果时有30%几率令其持续时间增加1回合"
@ -290,6 +307,7 @@
"key": "suit_13018", "key": "suit_13018",
"text": "维京" "text": "维京"
}, },
"FloatIcon": "",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "效果抵抗+25%" "text": "效果抵抗+25%"
@ -309,6 +327,7 @@
"key": "suit_13019", "key": "suit_13019",
"text": "史莱克" "text": "史莱克"
}, },
"FloatIcon": "ty_zd_buff_z007",
"skillintr": { "skillintr": {
"key": "equip_13215", "key": "equip_13215",
"text": "战斗开始时获得1回合【免疫】" "text": "战斗开始时获得1回合【免疫】"

View File

@ -46,7 +46,7 @@
"text": "凤凰城" "text": "凤凰城"
}, },
"ips": "119.3.89.14:9891", "ips": "119.3.89.14:9891",
"debug": false, "debug": true,
"sid": "df01" "sid": "df01"
}, },
{ {
@ -56,7 +56,7 @@
"text": "翡翠宫" "text": "翡翠宫"
}, },
"ips": "119.3.89.14:9891", "ips": "119.3.89.14:9891",
"debug": false, "debug": true,
"sid": "df01" "sid": "df01"
}, },
{ {
@ -66,7 +66,7 @@
"text": "乌鸦岭" "text": "乌鸦岭"
}, },
"ips": "119.3.89.14:9891", "ips": "119.3.89.14:9891",
"debug": false, "debug": true,
"sid": "df01" "sid": "df01"
}, },
{ {
@ -76,7 +76,7 @@
"text": "和平谷" "text": "和平谷"
}, },
"ips": "119.3.89.14:7891", "ips": "119.3.89.14:7891",
"debug": true, "debug": false,
"sid": "df02" "sid": "df02"
} }
] ]

View File

@ -2,7 +2,6 @@
{ {
"type_id": 5011001, "type_id": 5011001,
"id_list": 1, "id_list": 1,
"weight": 1000,
"jump_interface": 115, "jump_interface": 115,
"task_display": { "task_display": {
"key": "guild_task5011001", "key": "guild_task5011001",
@ -37,7 +36,6 @@
{ {
"type_id": 5012001, "type_id": 5012001,
"id_list": 2, "id_list": 2,
"weight": 1000,
"jump_interface": 113, "jump_interface": 113,
"task_display": { "task_display": {
"key": "guild_task5012001", "key": "guild_task5012001",
@ -72,7 +70,6 @@
{ {
"type_id": 5018001, "type_id": 5018001,
"id_list": 3, "id_list": 3,
"weight": 1000,
"jump_interface": 107, "jump_interface": 107,
"task_display": { "task_display": {
"key": "guild_task5018001", "key": "guild_task5018001",
@ -107,7 +104,6 @@
{ {
"type_id": 5024001, "type_id": 5024001,
"id_list": 4, "id_list": 4,
"weight": 1000,
"jump_interface": 103, "jump_interface": 103,
"task_display": { "task_display": {
"key": "guild_task5024001", "key": "guild_task5024001",
@ -142,7 +138,6 @@
{ {
"type_id": 5047001, "type_id": 5047001,
"id_list": 5, "id_list": 5,
"weight": 1000,
"jump_interface": 103, "jump_interface": 103,
"task_display": { "task_display": {
"key": "guild_task5047001", "key": "guild_task5047001",
@ -177,7 +172,6 @@
{ {
"type_id": 5063001, "type_id": 5063001,
"id_list": 6, "id_list": 6,
"weight": 1000,
"jump_interface": 109, "jump_interface": 109,
"task_display": { "task_display": {
"key": "guild_task5063001", "key": "guild_task5063001",
@ -212,7 +206,6 @@
{ {
"type_id": 5068001, "type_id": 5068001,
"id_list": 7, "id_list": 7,
"weight": 1000,
"jump_interface": 122, "jump_interface": 122,
"task_display": { "task_display": {
"key": "guild_task5068001", "key": "guild_task5068001",
@ -247,7 +240,6 @@
{ {
"type_id": 5104001, "type_id": 5104001,
"id_list": 8, "id_list": 8,
"weight": 1000,
"jump_interface": 123, "jump_interface": 123,
"task_display": { "task_display": {
"key": "guild_task5104001", "key": "guild_task5104001",

View File

@ -6540,7 +6540,7 @@
"ip": 1, "ip": 1,
"sd": 1, "sd": 1,
"handbook": -1, "handbook": -1,
"prefab": "55007", "prefab": "11021",
"rotation": "0|0|0", "rotation": "0|0|0",
"icon": "11021", "icon": "11021",
"vocal": "11021", "vocal": "11021",

View File

@ -2877,6 +2877,82 @@
"text": "阵营挑战券不足" "text": "阵营挑战券不足"
} }
}, },
{
"id": "100100",
"name": {
"key": "itemname_100100",
"text": "副本挑战券"
},
"usetype": 10,
"color": 3,
"bagtype": 0,
"index": 1,
"special_type": 0,
"time": 0,
"effects": "",
"box_id": 0,
"synthetize_num": 0,
"access": [
107
],
"use_skip": 107,
"upper_limit": -1,
"uselv": 0,
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_jjcq",
"ico": "wp_icon_jjcq",
"intr": {
"key": "itemdesc_100100",
"text": "进入阵营BOSS的凭证"
},
"sale": [],
"synthetize_deplete": [],
"decompose_deplete": [],
"tipstxt": {
"key": "itemtipstxt_100100",
"text": "副本挑战券不足"
}
},
{
"id": "100101",
"name": {
"key": "itemname_100101",
"text": "副本挑战券"
},
"usetype": 10,
"color": 3,
"bagtype": 0,
"index": 1,
"special_type": 0,
"time": 0,
"effects": "",
"box_id": 0,
"synthetize_num": 0,
"access": [
107
],
"use_skip": 107,
"upper_limit": -1,
"uselv": 0,
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_jjcq",
"ico": "wp_icon_jjcq",
"intr": {
"key": "itemdesc_100101",
"text": "进入阵营BOSS的凭证"
},
"sale": [],
"synthetize_deplete": [],
"decompose_deplete": [],
"tipstxt": {
"key": "itemtipstxt_100101",
"text": "副本挑战券不足"
}
},
{ {
"id": "110001", "id": "110001",
"name": { "name": {

View File

@ -0,0 +1,458 @@
[
{
"id": 11001,
"name": {
"key": "mainline_name_10001",
"text": "Chapter 1"
},
"chapter_type": 1,
"map": "scenes_worldmap_01 ",
"camera": "",
"title": {
"key": "mainline_title_10001",
"text": "第1章功夫世界"
},
"desc": {
"key": "mainline_desc_10001",
"text": "故事发生在很久以前的古代中国,而且要从一只喜欢滚来滚去、滚来滚去的大熊猫身上说起。话说熊猫阿宝是一家面条店的学徒,虽然笨手笨脚,也勉强算是谋到了一份职业。"
},
"starreward": 11001
},
{
"id": 11002,
"name": {
"key": "mainline_name_10002",
"text": "Chapter 2"
},
"chapter_type": 1,
"map": "scenes_worldmap_01 ",
"camera": "",
"title": {
"key": "mainline_title_10002",
"text": "第2章练功房"
},
"desc": {
"key": "mainline_desc_10002",
"text": "别看阿宝所在的“和平谷”一派欣欣向荣的安详景象,其实是一个卧虎藏龙的风水宝地,先不说五大功夫高手皆坐镇于此,更有一大师级别的宗师在这里隐居。"
},
"starreward": 0
},
{
"id": 11003,
"name": {
"key": "mainline_name_10003",
"text": "Chapter 3"
},
"chapter_type": 1,
"map": "scenes_worldmap_01 ",
"camera": "",
"title": {
"key": "mainline_title_10003",
"text": "第3章太狼来袭"
},
"desc": {
"key": "mainline_desc_10003",
"text": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。"
},
"starreward": 11002
},
{
"id": 11004,
"name": {
"key": "mainline_name_10004",
"text": "Chapter 4"
},
"chapter_type": 1,
"map": "scenes_worldmap_01 ",
"camera": "",
"title": {
"key": "mainline_title_10004",
"text": "第4章乌龟大师"
},
"desc": {
"key": "mainline_desc_10004",
"text": "自负的毒蛇大师虽然给人的感觉稍显轻浮,但对这件事的态度就有如她善变的性格,不太明朗;螳螂大师算是几位高手中最聪明的一个,对阿宝的现状很是无奈,总是暗中帮忙。"
},
"starreward": 11003
},
{
"id": 11005,
"name": {
"key": "mainline_name_10005",
"text": "Chapter 5"
},
"chapter_type": 1,
"map": "scenes_worldmap_01 ",
"camera": "",
"title": {
"key": "mainline_title_10005",
"text": "第5章激烈战斗"
},
"desc": {
"key": "mainline_desc_10005",
"text": "最后要将阿宝调教成“功夫高手”的一代宗师“师父”华丽丽地出场了,然而有着一身好功夫并不意味着就是完美的,“师父”因为过去犯下的一个错误,一直纠结着没办法释然。"
},
"starreward": 11004
},
{
"id": 11006,
"name": {
"key": "mainline_name_10006",
"text": "Chapter 6"
},
"chapter_type": 1,
"map": "scenes_worldmap_01 ",
"camera": "",
"title": {
"key": "mainline_title_10006",
"text": "第6章下山"
},
"desc": {
"key": "mainline_desc_10006",
"text": "至于那个让人人都如临大敌的太郎则是一只非常自恋的雪豹他等待复仇的这一天已经整整等了20年了可是他做梦也没想到自己等来的竟然是一只大熊猫。"
},
"starreward": 0
},
{
"id": 11007,
"name": {
"key": "mainline_name_10007",
"text": "Chapter 7"
},
"chapter_type": 1,
"map": "scenes_worldmap_01 ",
"camera": "",
"title": {
"key": "mainline_title_10007",
"text": "第7章事件余波"
},
"desc": {
"key": "mainline_desc_10007",
"text": "激烈的战斗后,阿宝以自己对武功的悟性和师父传授的武术,战胜了太郎,拯救了山谷,为山谷带来了和平。"
},
"starreward": 0
},
{
"id": 11008,
"name": {
"key": "mainline_name_10008",
"text": "Chapter 8"
},
"chapter_type": 1,
"map": "scenes_worldmap_01 ",
"camera": "",
"title": {
"key": "mainline_title_10008",
"text": "第8章乌龟大师"
},
"desc": {
"key": "mainline_desc_10008",
"text": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。"
},
"starreward": 0
},
{
"id": 11009,
"name": {
"key": "mainline_name_10009",
"text": "Chapter 9"
},
"chapter_type": 1,
"map": "scenes_worldmap_01 ",
"camera": "",
"title": {
"key": "mainline_title_10009",
"text": "第9章太狼来袭"
},
"desc": {
"key": "mainline_desc_10009",
"text": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。"
},
"starreward": 0
},
{
"id": 11010,
"name": {
"key": "mainline_name_10010",
"text": "Chapter 10"
},
"chapter_type": 1,
"map": "scenes_worldmap_01 ",
"camera": "",
"title": {
"key": "mainline_title_10010",
"text": "第10章乌龟大师"
},
"desc": {
"key": "mainline_desc_10010",
"text": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。"
},
"starreward": 0
},
{
"id": 11011,
"name": {
"key": "mainline_name_10011",
"text": "Chapter 11"
},
"chapter_type": 1,
"map": "scenes_worldmap_01 ",
"camera": "",
"title": {
"key": "mainline_title_10011",
"text": "第11章太狼来袭"
},
"desc": {
"key": "mainline_desc_10011",
"text": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。"
},
"starreward": 0
},
{
"id": 11012,
"name": {
"key": "mainline_name_10012",
"text": "Chapter 12"
},
"chapter_type": 1,
"map": "scenes_worldmap_01 ",
"camera": "",
"title": {
"key": "mainline_title_10012",
"text": "第12章乌龟大师"
},
"desc": {
"key": "mainline_desc_10012",
"text": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。"
},
"starreward": 0
},
{
"id": 12001,
"name": {
"key": "mainline_name_10001",
"text": "Chapter 1"
},
"chapter_type": 2,
"map": "scenes_worldmap_01",
"camera": "",
"title": {
"key": "mainline_title_10001",
"text": "第1章功夫世界"
},
"desc": {
"key": "mainline_desc_10001",
"text": "故事发生在很久以前的古代中国,而且要从一只喜欢滚来滚去、滚来滚去的大熊猫身上说起。话说熊猫阿宝是一家面条店的学徒,虽然笨手笨脚,也勉强算是谋到了一份职业。"
},
"starreward": 0
},
{
"id": 12002,
"name": {
"key": "mainline_name_10002",
"text": "Chapter 2"
},
"chapter_type": 2,
"map": "scenes_worldmap_01",
"camera": "",
"title": {
"key": "mainline_title_10002",
"text": "第2章练功房"
},
"desc": {
"key": "mainline_desc_10002",
"text": "别看阿宝所在的“和平谷”一派欣欣向荣的安详景象,其实是一个卧虎藏龙的风水宝地,先不说五大功夫高手皆坐镇于此,更有一大师级别的宗师在这里隐居。"
},
"starreward": 0
},
{
"id": 12003,
"name": {
"key": "mainline_name_10003",
"text": "Chapter 3"
},
"chapter_type": 2,
"map": "scenes_worldmap_01",
"camera": "",
"title": {
"key": "mainline_title_10003",
"text": "第3章太狼来袭"
},
"desc": {
"key": "mainline_desc_10003",
"text": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。"
},
"starreward": 0
},
{
"id": 12004,
"name": {
"key": "mainline_name_10004",
"text": "Chapter 4"
},
"chapter_type": 2,
"map": "scenes_worldmap_01",
"camera": "",
"title": {
"key": "mainline_title_10004",
"text": "第4章乌龟大师"
},
"desc": {
"key": "mainline_desc_10004",
"text": "自负的毒蛇大师虽然给人的感觉稍显轻浮,但对这件事的态度就有如她善变的性格,不太明朗;螳螂大师算是几位高手中最聪明的一个,对阿宝的现状很是无奈,总是暗中帮忙。"
},
"starreward": 0
},
{
"id": 12005,
"name": {
"key": "mainline_name_10005",
"text": "Chapter 5"
},
"chapter_type": 2,
"map": "scenes_worldmap_01",
"camera": "",
"title": {
"key": "mainline_title_10005",
"text": "第5章激烈战斗"
},
"desc": {
"key": "mainline_desc_10005",
"text": "最后要将阿宝调教成“功夫高手”的一代宗师“师父”华丽丽地出场了,然而有着一身好功夫并不意味着就是完美的,“师父”因为过去犯下的一个错误,一直纠结着没办法释然。"
},
"starreward": 0
},
{
"id": 12006,
"name": {
"key": "mainline_name_10006",
"text": "Chapter 6"
},
"chapter_type": 2,
"map": "scenes_worldmap_01",
"camera": "",
"title": {
"key": "mainline_title_10006",
"text": "第6章下山"
},
"desc": {
"key": "mainline_desc_10006",
"text": "至于那个让人人都如临大敌的太郎则是一只非常自恋的雪豹他等待复仇的这一天已经整整等了20年了可是他做梦也没想到自己等来的竟然是一只大熊猫。"
},
"starreward": 0
},
{
"id": 12007,
"name": {
"key": "mainline_name_10007",
"text": "Chapter 7"
},
"chapter_type": 2,
"map": "scenes_worldmap_01",
"camera": "",
"title": {
"key": "mainline_title_10007",
"text": "第7章事件余波"
},
"desc": {
"key": "mainline_desc_10007",
"text": "激烈的战斗后,阿宝以自己对武功的悟性和师父传授的武术,战胜了太郎,拯救了山谷,为山谷带来了和平。"
},
"starreward": 0
},
{
"id": 12008,
"name": {
"key": "mainline_name_10008",
"text": "Chapter 8"
},
"chapter_type": 2,
"map": "scenes_worldmap_01",
"camera": "",
"title": {
"key": "mainline_title_10008",
"text": "第8章乌龟大师"
},
"desc": {
"key": "mainline_desc_10008",
"text": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。"
},
"starreward": 0
},
{
"id": 12009,
"name": {
"key": "mainline_name_10009",
"text": "Chapter 9"
},
"chapter_type": 2,
"map": "scenes_worldmap_01",
"camera": "",
"title": {
"key": "mainline_title_10009",
"text": "第9章太狼来袭"
},
"desc": {
"key": "mainline_desc_10009",
"text": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。"
},
"starreward": 0
},
{
"id": 12010,
"name": {
"key": "mainline_name_10010",
"text": "Chapter 10"
},
"chapter_type": 2,
"map": "scenes_worldmap_01",
"camera": "",
"title": {
"key": "mainline_title_10010",
"text": "第10章乌龟大师"
},
"desc": {
"key": "mainline_desc_10010",
"text": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。"
},
"starreward": 0
},
{
"id": 12011,
"name": {
"key": "mainline_name_10011",
"text": "Chapter 11"
},
"chapter_type": 2,
"map": "scenes_worldmap_01",
"camera": "",
"title": {
"key": "mainline_title_10011",
"text": "第11章太狼来袭"
},
"desc": {
"key": "mainline_desc_10011",
"text": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。"
},
"starreward": 0
},
{
"id": 12012,
"name": {
"key": "mainline_name_10012",
"text": "Chapter 12"
},
"chapter_type": 2,
"map": "scenes_worldmap_01",
"camera": "",
"title": {
"key": "mainline_title_10012",
"text": "第12章乌龟大师"
},
"desc": {
"key": "mainline_desc_10012",
"text": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。"
},
"starreward": 0
}
]

2017
bin/json/game_mainstage.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,146 @@
[
{
"id": 1,
"boxid": 11001,
"starnum": 3,
"reward": [
{
"a": "attr",
"t": "diamond",
"n": 100
}
]
},
{
"id": 2,
"boxid": 11001,
"starnum": 6,
"reward": [
{
"a": "attr",
"t": "diamond",
"n": 200
}
]
},
{
"id": 3,
"boxid": 11001,
"starnum": 9,
"reward": [
{
"a": "attr",
"t": "diamond",
"n": 300
}
]
},
{
"id": 4,
"boxid": 11002,
"starnum": 3,
"reward": [
{
"a": "attr",
"t": "diamond",
"n": 100
}
]
},
{
"id": 5,
"boxid": 11002,
"starnum": 6,
"reward": [
{
"a": "attr",
"t": "diamond",
"n": 200
}
]
},
{
"id": 6,
"boxid": 11002,
"starnum": 9,
"reward": [
{
"a": "attr",
"t": "diamond",
"n": 300
}
]
},
{
"id": 7,
"boxid": 11003,
"starnum": 3,
"reward": [
{
"a": "attr",
"t": "diamond",
"n": 100
}
]
},
{
"id": 8,
"boxid": 11003,
"starnum": 6,
"reward": [
{
"a": "attr",
"t": "diamond",
"n": 200
}
]
},
{
"id": 9,
"boxid": 11003,
"starnum": 9,
"reward": [
{
"a": "attr",
"t": "diamond",
"n": 300
}
]
},
{
"id": 10,
"boxid": 11004,
"starnum": 3,
"reward": [
{
"a": "attr",
"t": "diamond",
"n": 100
}
]
},
{
"id": 11,
"boxid": 11004,
"starnum": 6,
"reward": [
{
"a": "attr",
"t": "diamond",
"n": 200
}
]
},
{
"id": 12,
"boxid": 11004,
"starnum": 9,
"reward": [
{
"a": "attr",
"t": "diamond",
"n": 300
}
]
}
]

View File

@ -0,0 +1,23 @@
[
{
"id": 1,
"starName": {
"key": "startype_name_1",
"text": "成功通关"
}
},
{
"id": 2,
"starName": {
"key": "startype_name_2",
"text": "死亡人数不超过{0}人"
}
},
{
"id": 3,
"starName": {
"key": "startype_name_3",
"text": "不超过{0}回合通关"
}
}
]

View File

@ -3005,7 +3005,7 @@
"presonshow": "11021_exhibition", "presonshow": "11021_exhibition",
"presonstory": "11021", "presonstory": "11021",
"presondraw": "", "presondraw": "",
"height": 1, "height": 30,
"weight": 1, "weight": 1,
"ico": "tx_js_11021", "ico": "tx_js_11021",
"fight": "ytx_js_11021", "fight": "ytx_js_11021",

View File

@ -13959,7 +13959,7 @@
"Id": 301013, "Id": 301013,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 35, "lv": 35,
"hppro": 0.6, "hppro": 0.6,
@ -14139,7 +14139,7 @@
"Id": 301016, "Id": 301016,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 40, "lv": 40,
"hppro": 0.6, "hppro": 0.6,
@ -14319,7 +14319,7 @@
"Id": 301019, "Id": 301019,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 45, "lv": 45,
"hppro": 0.6, "hppro": 0.6,
@ -14499,7 +14499,7 @@
"Id": 301022, "Id": 301022,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 50, "lv": 50,
"hppro": 0.6, "hppro": 0.6,
@ -14679,7 +14679,7 @@
"Id": 301025, "Id": 301025,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 55, "lv": 55,
"hppro": 0.6, "hppro": 0.6,
@ -14859,7 +14859,7 @@
"Id": 301028, "Id": 301028,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 60, "lv": 60,
"hppro": 0.6, "hppro": 0.6,
@ -15039,7 +15039,7 @@
"Id": 301031, "Id": 301031,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 65, "lv": 65,
"hppro": 0.6, "hppro": 0.6,
@ -15219,7 +15219,7 @@
"Id": 301034, "Id": 301034,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 70, "lv": 70,
"hppro": 0.6, "hppro": 0.6,
@ -15399,7 +15399,7 @@
"Id": 301037, "Id": 301037,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 75, "lv": 75,
"hppro": 0.6, "hppro": 0.6,
@ -15579,7 +15579,7 @@
"Id": 301040, "Id": 301040,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 80, "lv": 80,
"hppro": 0.6, "hppro": 0.6,
@ -15759,7 +15759,7 @@
"Id": 302013, "Id": 302013,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 35, "lv": 35,
"hppro": 0.6, "hppro": 0.6,
@ -15939,7 +15939,7 @@
"Id": 302016, "Id": 302016,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 40, "lv": 40,
"hppro": 0.6, "hppro": 0.6,
@ -16119,7 +16119,7 @@
"Id": 302019, "Id": 302019,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 45, "lv": 45,
"hppro": 0.6, "hppro": 0.6,
@ -16299,7 +16299,7 @@
"Id": 302022, "Id": 302022,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 50, "lv": 50,
"hppro": 0.6, "hppro": 0.6,
@ -16479,7 +16479,7 @@
"Id": 302025, "Id": 302025,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 55, "lv": 55,
"hppro": 0.6, "hppro": 0.6,
@ -16659,7 +16659,7 @@
"Id": 302028, "Id": 302028,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 60, "lv": 60,
"hppro": 0.6, "hppro": 0.6,
@ -16839,7 +16839,7 @@
"Id": 302031, "Id": 302031,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 65, "lv": 65,
"hppro": 0.6, "hppro": 0.6,
@ -17019,7 +17019,7 @@
"Id": 302034, "Id": 302034,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 70, "lv": 70,
"hppro": 0.6, "hppro": 0.6,
@ -17199,7 +17199,7 @@
"Id": 302037, "Id": 302037,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 75, "lv": 75,
"hppro": 0.6, "hppro": 0.6,
@ -17379,7 +17379,7 @@
"Id": 302040, "Id": 302040,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 80, "lv": 80,
"hppro": 0.6, "hppro": 0.6,
@ -17559,7 +17559,7 @@
"Id": 303013, "Id": 303013,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 35, "lv": 35,
"hppro": 0.6, "hppro": 0.6,
@ -17739,7 +17739,7 @@
"Id": 303016, "Id": 303016,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 40, "lv": 40,
"hppro": 0.6, "hppro": 0.6,
@ -17919,7 +17919,7 @@
"Id": 303019, "Id": 303019,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 45, "lv": 45,
"hppro": 0.6, "hppro": 0.6,
@ -18099,7 +18099,7 @@
"Id": 303022, "Id": 303022,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 50, "lv": 50,
"hppro": 0.6, "hppro": 0.6,
@ -18279,7 +18279,7 @@
"Id": 303025, "Id": 303025,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 55, "lv": 55,
"hppro": 0.6, "hppro": 0.6,
@ -18459,7 +18459,7 @@
"Id": 303028, "Id": 303028,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 60, "lv": 60,
"hppro": 0.6, "hppro": 0.6,
@ -18639,7 +18639,7 @@
"Id": 303031, "Id": 303031,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 65, "lv": 65,
"hppro": 0.6, "hppro": 0.6,
@ -18819,7 +18819,7 @@
"Id": 303034, "Id": 303034,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 70, "lv": 70,
"hppro": 0.6, "hppro": 0.6,
@ -18999,7 +18999,7 @@
"Id": 303037, "Id": 303037,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 75, "lv": 75,
"hppro": 0.6, "hppro": 0.6,
@ -19179,7 +19179,7 @@
"Id": 303040, "Id": 303040,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 110215, "monster": 110215,
"lv": 80, "lv": 80,
"hppro": 0.6, "hppro": 0.6,
@ -19359,7 +19359,7 @@
"Id": 401003, "Id": 401003,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 35, "lv": 35,
"hppro": 0.6, "hppro": 0.6,
@ -19539,7 +19539,7 @@
"Id": 401006, "Id": 401006,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 40, "lv": 40,
"hppro": 0.6, "hppro": 0.6,
@ -19719,7 +19719,7 @@
"Id": 401009, "Id": 401009,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 45, "lv": 45,
"hppro": 0.6, "hppro": 0.6,
@ -19899,7 +19899,7 @@
"Id": 401012, "Id": 401012,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 50, "lv": 50,
"hppro": 0.6, "hppro": 0.6,
@ -20079,7 +20079,7 @@
"Id": 401015, "Id": 401015,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 55, "lv": 55,
"hppro": 0.6, "hppro": 0.6,
@ -20259,7 +20259,7 @@
"Id": 401018, "Id": 401018,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 60, "lv": 60,
"hppro": 0.6, "hppro": 0.6,
@ -20439,7 +20439,7 @@
"Id": 401021, "Id": 401021,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 65, "lv": 65,
"hppro": 0.6, "hppro": 0.6,
@ -20619,7 +20619,7 @@
"Id": 401024, "Id": 401024,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 70, "lv": 70,
"hppro": 0.6, "hppro": 0.6,
@ -20799,7 +20799,7 @@
"Id": 401027, "Id": 401027,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 75, "lv": 75,
"hppro": 0.6, "hppro": 0.6,
@ -20979,7 +20979,7 @@
"Id": 401030, "Id": 401030,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 80, "lv": 80,
"hppro": 0.6, "hppro": 0.6,
@ -21159,7 +21159,7 @@
"Id": 402003, "Id": 402003,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 35, "lv": 35,
"hppro": 0.6, "hppro": 0.6,
@ -21339,7 +21339,7 @@
"Id": 402006, "Id": 402006,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 40, "lv": 40,
"hppro": 0.6, "hppro": 0.6,
@ -21519,7 +21519,7 @@
"Id": 402009, "Id": 402009,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 45, "lv": 45,
"hppro": 0.6, "hppro": 0.6,
@ -21699,7 +21699,7 @@
"Id": 402012, "Id": 402012,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 50, "lv": 50,
"hppro": 0.6, "hppro": 0.6,
@ -21879,7 +21879,7 @@
"Id": 402015, "Id": 402015,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 55, "lv": 55,
"hppro": 0.6, "hppro": 0.6,
@ -22059,7 +22059,7 @@
"Id": 402018, "Id": 402018,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 60, "lv": 60,
"hppro": 0.6, "hppro": 0.6,
@ -22239,7 +22239,7 @@
"Id": 402021, "Id": 402021,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 65, "lv": 65,
"hppro": 0.6, "hppro": 0.6,
@ -22419,7 +22419,7 @@
"Id": 402024, "Id": 402024,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 70, "lv": 70,
"hppro": 0.6, "hppro": 0.6,
@ -22599,7 +22599,7 @@
"Id": 402027, "Id": 402027,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 75, "lv": 75,
"hppro": 0.6, "hppro": 0.6,
@ -22779,7 +22779,7 @@
"Id": 402030, "Id": 402030,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 80, "lv": 80,
"hppro": 0.6, "hppro": 0.6,
@ -22959,7 +22959,7 @@
"Id": 403003, "Id": 403003,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 35, "lv": 35,
"hppro": 0.6, "hppro": 0.6,
@ -23139,7 +23139,7 @@
"Id": 403006, "Id": 403006,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 40, "lv": 40,
"hppro": 0.6, "hppro": 0.6,
@ -23319,7 +23319,7 @@
"Id": 403009, "Id": 403009,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 45, "lv": 45,
"hppro": 0.6, "hppro": 0.6,
@ -23499,7 +23499,7 @@
"Id": 403012, "Id": 403012,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 50, "lv": 50,
"hppro": 0.6, "hppro": 0.6,
@ -23679,7 +23679,7 @@
"Id": 403015, "Id": 403015,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 55, "lv": 55,
"hppro": 0.6, "hppro": 0.6,
@ -23859,7 +23859,7 @@
"Id": 403018, "Id": 403018,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 60, "lv": 60,
"hppro": 0.6, "hppro": 0.6,
@ -24039,7 +24039,7 @@
"Id": 403021, "Id": 403021,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 65, "lv": 65,
"hppro": 0.6, "hppro": 0.6,
@ -24219,7 +24219,7 @@
"Id": 403024, "Id": 403024,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 70, "lv": 70,
"hppro": 0.6, "hppro": 0.6,
@ -24399,7 +24399,7 @@
"Id": 403027, "Id": 403027,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 75, "lv": 75,
"hppro": 0.6, "hppro": 0.6,
@ -24579,7 +24579,7 @@
"Id": 403030, "Id": 403030,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 80, "lv": 80,
"hppro": 0.6, "hppro": 0.6,
@ -24759,7 +24759,7 @@
"Id": 404003, "Id": 404003,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 35, "lv": 35,
"hppro": 0.6, "hppro": 0.6,
@ -24939,7 +24939,7 @@
"Id": 404006, "Id": 404006,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 40, "lv": 40,
"hppro": 0.6, "hppro": 0.6,
@ -25119,7 +25119,7 @@
"Id": 404009, "Id": 404009,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 45, "lv": 45,
"hppro": 0.6, "hppro": 0.6,
@ -25299,7 +25299,7 @@
"Id": 404012, "Id": 404012,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 50, "lv": 50,
"hppro": 0.6, "hppro": 0.6,
@ -25479,7 +25479,7 @@
"Id": 404015, "Id": 404015,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 55, "lv": 55,
"hppro": 0.6, "hppro": 0.6,
@ -25659,7 +25659,7 @@
"Id": 404018, "Id": 404018,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 60, "lv": 60,
"hppro": 0.6, "hppro": 0.6,
@ -25839,7 +25839,7 @@
"Id": 404021, "Id": 404021,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 65, "lv": 65,
"hppro": 0.6, "hppro": 0.6,
@ -26019,7 +26019,7 @@
"Id": 404024, "Id": 404024,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 70, "lv": 70,
"hppro": 0.6, "hppro": 0.6,
@ -26199,7 +26199,7 @@
"Id": 404027, "Id": 404027,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 75, "lv": 75,
"hppro": 0.6, "hppro": 0.6,
@ -26379,7 +26379,7 @@
"Id": 404030, "Id": 404030,
"pos": 4, "pos": 4,
"captainId": 0, "captainId": 0,
"IsBoss": 0, "IsBoss": 1,
"monster": 350015, "monster": 350015,
"lv": 80, "lv": 80,
"hppro": 0.6, "hppro": 0.6,

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1675,11 +1675,11 @@
}, },
"Desc": { "Desc": {
"key": "skill_buffdes_390001311", "key": "skill_buffdes_390001311",
"text": "生命提升25%" "text": "生命提升24%"
}, },
"BuffType": 24, "BuffType": 24,
"EffectArgu": [ "EffectArgu": [
250 240
], ],
"BufParNum": 1, "BufParNum": 1,
"RelyCheckArgu": [], "RelyCheckArgu": [],
@ -2880,7 +2880,7 @@
{ {
"Id": 390001429, "Id": 390001429,
"Name": { "Name": {
"key": "skill_buff_390001428", "key": "skill_buff_390001429",
"text": "每吸收1个减益状态可增加我方全体5%的行动值" "text": "每吸收1个减益状态可增加我方全体5%的行动值"
}, },
"Desc": { "Desc": {
@ -2900,5 +2900,153 @@
"buffIcon": "", "buffIcon": "",
"buffeffect": "", "buffeffect": "",
"buffpos": "" "buffpos": ""
},
{
"Id": 390001430,
"Name": {
"key": "skill_buff_390001430",
"text": "流血"
},
"Desc": {
"key": "skill_buffdes_390001430",
"text": ""
},
"BuffType": 0,
"EffectArgu": [],
"BufParNum": 1,
"RelyCheckArgu": [],
"CoexistCheckArgu": [],
"Effect": 1,
"AddEffect": false,
"RemoveType": true,
"OverlayTimes": 1,
"SameID": true,
"buffIcon": "ty_zd_buff_j011",
"buffeffect": "",
"buffpos": "头"
},
{
"Id": 390001431,
"Name": {
"key": "skill_buff_390001431",
"text": "虎啸(狂暴)"
},
"Desc": {
"key": "skill_buffdes_390001431",
"text": "下一次攻击暴击率提升100%暴击伤害提升40%。"
},
"BuffType": 0,
"EffectArgu": [],
"BufParNum": 0,
"RelyCheckArgu": [],
"CoexistCheckArgu": [],
"Effect": 0,
"AddEffect": false,
"RemoveType": false,
"OverlayTimes": 0,
"SameID": false,
"buffIcon": "",
"buffeffect": "",
"buffpos": ""
},
{
"Id": 390001432,
"Name": {
"key": "skill_buff_390001432",
"text": "魔之秘语"
},
"Desc": {
"key": "skill_buffdes_390001432",
"text": "携带者受到伤害时对攻击者反弹所受伤害60%的真实伤害;携带者回合开始时净化其1个减益。"
},
"BuffType": 102,
"EffectArgu": [],
"BufParNum": 0,
"RelyCheckArgu": [],
"CoexistCheckArgu": [],
"Effect": 1,
"AddEffect": false,
"RemoveType": true,
"OverlayTimes": 1,
"SameID": true,
"buffIcon": "ty_zd_buff_j011",
"buffeffect": "",
"buffpos": "头"
},
{
"Id": 390001433,
"Name": {
"key": "skill_buff_390001433",
"text": "【毒牙】"
},
"Desc": {
"key": "skill_buffdes_390001433",
"text": "无法被附加【中毒】状态受击时有概率为攻击者附加1回合【中毒】"
},
"BuffType": 0,
"EffectArgu": [],
"BufParNum": 0,
"RelyCheckArgu": [],
"CoexistCheckArgu": [],
"Effect": 1,
"AddEffect": false,
"RemoveType": true,
"OverlayTimes": 1,
"SameID": true,
"buffIcon": "ty_zd_buff_j011",
"buffeffect": "",
"buffpos": "头"
},
{
"Id": 390001434,
"Name": {
"key": "skill_buff_390001434",
"text": "护盾"
},
"Desc": {
"key": "skill_buffdes_390001434",
"text": "护盾量为最大生命值22%"
},
"BuffType": 21,
"EffectArgu": [
1,
1,
220
],
"BufParNum": 1,
"RelyCheckArgu": [],
"CoexistCheckArgu": [],
"Effect": 0,
"AddEffect": false,
"RemoveType": true,
"OverlayTimes": 1,
"SameID": false,
"buffIcon": "ty_zd_buff_z010",
"buffeffect": "",
"buffpos": "头"
},
{
"Id": 390001435,
"Name": {
"key": "skill_buff_390001435",
"text": "【奥术】(疾风)"
},
"Desc": {
"key": "skill_buffdes_390001435",
"text": "每层提高30点速度"
},
"BuffType": 103,
"EffectArgu": [],
"BufParNum": 1,
"RelyCheckArgu": [],
"CoexistCheckArgu": [],
"Effect": 0,
"AddEffect": false,
"RemoveType": false,
"OverlayTimes": 3,
"SameID": false,
"buffIcon": "ty_zd_buff_z010",
"buffeffect": "",
"buffpos": "头"
} }
] ]

View File

@ -2105,5 +2105,197 @@
"Callback": [ "Callback": [
243004214 243004214
] ]
},
{
"Id": 444001113,
"When": 10,
"FromCheck": "Target=3",
"TargetCheck": "3",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "",
"AddCon": [],
"PasPr": 1000,
"Type": "CallSkillPas",
"MaxEmitTimes": 1,
"Callback": [
244001114
]
},
{
"Id": 444001213,
"When": 10,
"FromCheck": "Target=3",
"TargetCheck": "3",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "",
"AddCon": [],
"PasPr": 1000,
"Type": "CallSkillPas",
"MaxEmitTimes": 1,
"Callback": [
244001214
]
},
{
"Id": 435004211,
"When": 2,
"FromCheck": "Target=3",
"TargetCheck": "3",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "",
"AddCon": [],
"PasPr": 1000,
"Type": "CallSkillPas",
"MaxEmitTimes": 1,
"Callback": [
235004212
]
},
{
"Id": 424006211,
"When": 21,
"FromCheck": "Target=3",
"TargetCheck": "3",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "",
"AddCon": [],
"PasPr": 1000,
"Type": "CallSkillPas",
"MaxEmitTimes": 1,
"Callback": [
224006212
]
},
{
"Id": 433004312,
"When": 10,
"FromCheck": "Target=3",
"TargetCheck": "",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "",
"AddCon": [],
"PasPr": 1000,
"Type": "CallSkillPas",
"MaxEmitTimes": 1,
"Callback": [
233004313
]
},
{
"Id": 453006211,
"When": 4,
"FromCheck": "Target=3",
"TargetCheck": "Target=3,Hpproless=500",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "",
"AddCon": [],
"PasPr": 1000,
"Type": "CallSkillPas",
"MaxEmitTimes": 1,
"Callback": [
253006213
]
},
{
"Id": 453006311,
"When": 4,
"FromCheck": "Target=3",
"TargetCheck": "Target=1",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "BuffID=390001122",
"AddCon": [],
"PasPr": 1000,
"Type": "CallSkillPas",
"MaxEmitTimes": 1,
"Callback": [
253006313
]
},
{
"Id": 425002211,
"When": 2,
"FromCheck": "Target=3",
"TargetCheck": "",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "",
"AddCon": [],
"PasPr": 1000,
"Type": "CallSkillPas",
"MaxEmitTimes": 1,
"Callback": [
225002213
]
},
{
"Id": 434005211,
"When": 16,
"FromCheck": "Target=2",
"TargetCheck": "Target=3HasBuff=390001433",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "",
"AddCon": [],
"PasPr": 1000,
"Type": "CallSkillPas",
"MaxEmitTimes": 1,
"Callback": [
234005212
]
},
{
"Id": 425002215,
"When": 19,
"FromCheck": "",
"TargetCheck": "Target=1",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "Effect=1,Succ=1",
"AddCon": [],
"PasPr": 1000,
"Type": "CallSkillPas",
"MaxEmitTimes": 1,
"Callback": [
225002216
]
},
{
"Id": 445002211,
"When": 21,
"FromCheck": "Target=3,HasBuff=2",
"TargetCheck": "",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "",
"AddCon": [],
"PasPr": 1000,
"Type": "CallSkillPas",
"MaxEmitTimes": 1,
"Callback": [
245002212
]
},
{
"Id": 445002213,
"When": 21,
"FromCheck": "Target=2",
"TargetCheck": "",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "",
"AddCon": [],
"PasPr": 1000,
"Type": "CallSkillPas",
"MaxEmitTimes": 1,
"Callback": [
245002214
]
} }
] ]

View File

@ -168,7 +168,7 @@
"vip_privilege": [ "vip_privilege": [
20104, 20104,
20203, 20203,
20701 20601
] ]
}, },
{ {
@ -212,7 +212,7 @@
"vip_privilege": [ "vip_privilege": [
20105, 20105,
20204, 20204,
20702 20602
] ]
}, },
{ {
@ -256,7 +256,7 @@
"vip_privilege": [ "vip_privilege": [
20106, 20106,
20205, 20205,
20703 20603
] ]
}, },
{ {
@ -300,10 +300,8 @@
"vip_privilege": [ "vip_privilege": [
20107, 20107,
20206, 20206,
20704, 20604,
20801, 20701
20901,
21001
] ]
}, },
{ {
@ -347,10 +345,8 @@
"vip_privilege": [ "vip_privilege": [
20108, 20108,
20207, 20207,
20705, 20605,
20802, 20702
20902,
21002
] ]
}, },
{ {
@ -394,10 +390,8 @@
"vip_privilege": [ "vip_privilege": [
20109, 20109,
20208, 20208,
20706, 20606,
20803, 20703
20903,
21003
] ]
}, },
{ {
@ -441,12 +435,10 @@
"vip_privilege": [ "vip_privilege": [
20110, 20110,
20209, 20209,
20707, 20607,
20804, 20704,
20904,
21004,
20401, 20401,
20501 20301
] ]
}, },
{ {
@ -490,12 +482,10 @@
"vip_privilege": [ "vip_privilege": [
20111, 20111,
20210, 20210,
20708, 20608,
20805, 20705,
20905,
21005,
20402, 20402,
20502 20302
] ]
}, },
{ {
@ -539,12 +529,10 @@
"vip_privilege": [ "vip_privilege": [
20112, 20112,
20211, 20211,
20709, 20609,
20806, 20706,
20906,
21006,
20403, 20403,
20503 20303
] ]
}, },
{ {
@ -588,12 +576,11 @@
"vip_privilege": [ "vip_privilege": [
20113, 20113,
20212, 20212,
20710, 20610,
20807, 20707,
20907,
21007,
20404, 20404,
20504 20304,
20501
] ]
}, },
{ {
@ -637,12 +624,11 @@
"vip_privilege": [ "vip_privilege": [
20114, 20114,
20213, 20213,
20711, 20611,
20808, 20708,
20908,
21008,
20405, 20405,
20505 20305,
20502
] ]
}, },
{ {
@ -686,12 +672,11 @@
"vip_privilege": [ "vip_privilege": [
20115, 20115,
20214, 20214,
20712, 20612,
20809, 20709,
20909,
21009,
20406, 20406,
20506 20306,
20503
] ]
} }
] ]

View File

@ -8,7 +8,9 @@
"SelectableHero": [], "SelectableHero": [],
"LockSlots": [], "LockSlots": [],
"AssistTeam": 0, "AssistTeam": 0,
"EventList": [], "EventList": [
21
],
"playexp": { "playexp": {
"a": "attr", "a": "attr",
"t": "exp", "t": "exp",

View File

@ -1988,9 +1988,15 @@
4001 4001
], ],
"completetask": 0, "completetask": 0,
"auto_accept": 0, "auto_accept": 1,
"overtips": 1, "overtips": 1,
"reword": [] "reword": [
{
"a": "hero",
"t": "44911",
"n": 2
}
]
}, },
{ {
"key": 20020, "key": 20020,
@ -2007,7 +2013,7 @@
], ],
"getafter_event": [ "getafter_event": [
2, 2,
401 1001
], ],
"completetask": 0, "completetask": 0,
"auto_accept": 0, "auto_accept": 0,
@ -2029,7 +2035,7 @@
], ],
"getafter_event": [ "getafter_event": [
2, 2,
401 1001
], ],
"completetask": 0, "completetask": 0,
"auto_accept": 0, "auto_accept": 0,
@ -2051,7 +2057,7 @@
], ],
"getafter_event": [ "getafter_event": [
2, 2,
401 1001
], ],
"completetask": 0, "completetask": 0,
"auto_accept": 0, "auto_accept": 0,
@ -2073,7 +2079,7 @@
], ],
"getafter_event": [ "getafter_event": [
2, 2,
401 1001
], ],
"completetask": 0, "completetask": 0,
"auto_accept": 0, "auto_accept": 0,
@ -2095,7 +2101,7 @@
], ],
"getafter_event": [ "getafter_event": [
2, 2,
401 1001
], ],
"completetask": 0, "completetask": 0,
"auto_accept": 0, "auto_accept": 0,

View File

@ -6,6 +6,7 @@ import (
"go_dreamfactory/cmd/v2/service" "go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer" "go_dreamfactory/cmd/v2/service/observer"
"net" "net"
"runtime"
"strings" "strings"
"sync" "sync"
"time" "time"
@ -14,13 +15,18 @@ import (
"fyne.io/fyne/v2/container" "fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget" "fyne.io/fyne/v2/widget"
"github.com/go-ping/ping"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/spf13/cast" "github.com/spf13/cast"
) )
type portStatus struct {
port int
err string
}
type appPing struct { type appPing struct {
appAdapter appAdapter
resultCh chan int resultCh chan portStatus
} }
func (this *appPing) LazyInit(ptService service.PttService, obs observer.Observer) error { func (this *appPing) LazyInit(ptService service.PttService, obs observer.Observer) error {
@ -33,36 +39,59 @@ func (this *appPing) LazyInit(ptService service.PttService, obs observer.Observe
targetHost.PlaceHolder = "目标主机Ip" targetHost.PlaceHolder = "目标主机Ip"
portEntry := widget.NewMultiLineEntry() portEntry := widget.NewMultiLineEntry()
portEntry.Text = "80,3306,6379" portEntry.Text = "20,21,22,80,1521,2379,2380,3306,6379,8080,8020,8500,9000,9090,13306,50070,27019,10013,8300,8301,8600,10012,10011"
form := widget.NewForm( form := widget.NewForm(
widget.NewFormItem("主机", targetHost), widget.NewFormItem("主机", targetHost),
widget.NewFormItem("端口", portEntry), widget.NewFormItem("端口", portEntry),
) )
// result // result
result := widget.NewMultiLineEntry() result := widget.NewMultiLineEntry()
result.Disable()
form.OnSubmit = func() { form.OnSubmit = func() {
result.Text = "" result.Text = ""
if portEntry.Text == "" { if portEntry.Text == "" {
return return
} }
this.resultCh = make(chan int) this.resultCh = make(chan portStatus)
ports := strings.Split(portEntry.Text, ",") ports := strings.Split(portEntry.Text, ",")
this.ping(targetHost.Text, ports)
var msgs []string pinger, err := ping.NewPinger(targetHost.Text)
if err != nil {
for p := range this.resultCh { panic(err)
for _, v := range ports {
if cast.ToInt(v) == p {
msgs = append(msgs, fmt.Sprintf("端口:%d OK", p))
} else {
msgs = append(msgs, fmt.Sprintf("端口:%s ERR", v))
} }
pinger.Count = 3
if runtime.GOOS == "windows" {
pinger.SetPrivileged(true)
}
var msgs []string
pinger.OnRecv = func(p *ping.Packet) {
msgs = append(msgs, fmt.Sprintf("来自:%s 的回复 字节=%d 时间=%dms TTL=%d",
p.IPAddr.String(),
p.Nbytes,
p.Rtt.Milliseconds(),
p.Ttl))
result.Text = strings.Join(msgs, "\n") result.Text = strings.Join(msgs, "\n")
result.Refresh() result.Refresh()
} }
if err := pinger.Run(); err != nil {
logrus.Error(err)
} }
ip, err := net.ResolveIPAddr("ip", targetHost.Text)
if err != nil {
logrus.Error(err)
return
}
this.ping(ip.String(), ports)
for p := range this.resultCh {
msgs = append(msgs, fmt.Sprintf("端口:%d %s", p.port, p.err))
result.Text = strings.Join(msgs, "\n")
result.Refresh()
}
} }
form.Items[1].HintText = "多个端口使用英文,号分隔" form.Items[1].HintText = "多个端口使用英文,号分隔"
@ -81,11 +110,14 @@ func (this *appPing) ping(targetHost string, ports []string) {
go func(p int) { go func(p int) {
defer wg.Done() defer wg.Done()
_, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", targetHost, p), time.Millisecond*500) _, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", targetHost, p), time.Millisecond*500)
var errStr string
if err == nil { if err == nil {
this.resultCh <- p errStr = "OK"
} else { } else {
errStr = "ERR"
logrus.Error(err) logrus.Error(err)
} }
this.resultCh <- portStatus{port: p, err: errStr}
}(cast.ToInt(port)) }(cast.ToInt(port))
} }

View File

@ -77,6 +77,7 @@ const (
ModuleCombat core.M_Modules = "combat" //关卡编辑 ModuleCombat core.M_Modules = "combat" //关卡编辑
ModuleEnchant core.M_Modules = "enchant" //附魔 ModuleEnchant core.M_Modules = "enchant" //附魔
ModuleAutoBattle core.M_Modules = "autobattle" //自动战斗 ModuleAutoBattle core.M_Modules = "autobattle" //自动战斗
ModuleMline core.M_Modules = "mline" //主线模块
) )
//数据表名定义处 //数据表名定义处
@ -212,6 +213,9 @@ const (
// 自动战斗 // 自动战斗
TableAuto = "autoBattle" TableAuto = "autoBattle"
///新主线数据表
TableMline = "mline"
) )
//RPC服务接口定义处 //RPC服务接口定义处
@ -695,3 +699,8 @@ const (
PrivilegeType9 //武馆每日最大练功时间 PrivilegeType9 //武馆每日最大练功时间
PrivilegeType10 //铁匠铺每日最大锻造时间 PrivilegeType10 //铁匠铺每日最大锻造时间
) )
const (
MainStarType1 = 1 //成功通关
MainStarType2 = 1 //死亡人数不超过{0}人
MainStarType3 = 1 //不超过{0}回合通关
)

View File

@ -6,23 +6,23 @@ import (
) )
const ( const (
MainlineGetListResp = "getlist" MlineGetListResp = "getlist"
MainlineChallengeResp = "challenge" MlineChallengeResp = "challenge"
MainlineChallengeOverResp = "challengeover" MlineCleanStageResp = "cleanstage"
MainlineGetRewardResp = "getreward" MlineChallengeOverResp = "challengeover"
MainlineNewChapterPush = "newchapter" MlineGetRewardResp = "getreward"
) )
type apiComp struct { type apiComp struct {
modules.MCompGate modules.MCompGate
service core.IService service core.IService
module *Mainline module *Mline
} }
//组件初始化接口 //组件初始化接口
func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompGate.Init(service, module, comp, options) err = this.MCompGate.Init(service, module, comp, options)
this.module = module.(*Mainline) this.module = module.(*Mline)
this.service = service this.service = service
return return
} }

View File

@ -5,68 +5,100 @@ import (
"go_dreamfactory/pb" "go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs" cfg "go_dreamfactory/sys/configure/structs"
"go.mongodb.org/mongo-driver/bson/primitive"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
) )
//参数校验 //参数校验
func (this *apiComp) ChallengeCheck(session comm.IUserSession, req *pb.MainlineChallengeReq) (code pb.ErrorCode) { func (this *apiComp) ChallengeCheck(session comm.IUserSession, req *pb.MlineChallengeReq) (code pb.ErrorCode) {
if req.MainlineId == 0 || req.ChapterObj == "" || req.Leadpos >= 5 || len(req.Teamids) != 5 || req.Leadpos < 0 { if req.StageId == 0 {
code = pb.ErrorCode_ReqParameterError code = pb.ErrorCode_ReqParameterError
return
} }
return return
} }
///挑战主线关卡 ///挑战主线关卡
func (this *apiComp) Challenge(session comm.IUserSession, req *pb.MainlineChallengeReq) (code pb.ErrorCode, data proto.Message) { func (this *apiComp) Challenge(session comm.IUserSession, req *pb.MlineChallengeReq) (code pb.ErrorCode, data proto.Message) {
var ( var (
curChapter *pb.DBMainline // 当前章节信息 curChapter *pb.DBMline // 当前章节信息
ps int32 ps int32 // 消耗的体力
psAnt *cfg.Gameatn psAnt *cfg.Gameatn
stageConf *cfg.GameMainStageData
) )
code = this.ChallengeCheck(session, req) if code = this.ChallengeCheck(session, req); code != pb.ErrorCode_Success {
if code != pb.ErrorCode_Success {
return // 参数校验失败直接返回 return // 参数校验失败直接返回
} }
// 校验关卡存不存在 if stageConf = this.module.configure.GetMainStageConf(req.StageId); stageConf == nil { // 配置文件校验
curChapter = this.module.modelMainline.getOneChapterInfo(session.GetUserId(), req.ChapterObj)
if curChapter == nil {
code = pb.ErrorCode_MainlineNotFound
return
}
node := this.module.configure.GetMainlineConfigData(int32(req.MainlineId), curChapter.Intensity)
if node == nil { // 配置文件校验
code = pb.ErrorCode_MainlineNotFindChapter code = pb.ErrorCode_MainlineNotFindChapter
return return
} }
for _, v := range curChapter.BranchID { list, _ := this.module.modelMline.getMainlineList(session.GetUserId())
if v == int32(req.MainlineId) { // 重复挑战 for _, v := range list {
code = pb.ErrorCode_MainlineNotFindChapter if stageConf.Chapterid == v.ChapterId {
return curChapter = v
}
if v == int32(req.MainlineId) {
break break
} }
} }
if curChapter.Ps != 0 { if curChapter == nil { // 校验是不是新的数据
if code = this.module.ConsumeRes(session, node.PsMg, true); code != pb.ErrorCode_Success { // 扣1点 if stageConf.Previoustage == 0 { // 创建一条新的章节数据
// 新章节数据校验
chapter := this.module.configure.GetPreMainChapter(req.StageId)
bCheck := false
if chapter == 0 {
bCheck = true
} else {
for _, v := range list {
if chapter == v.ChapterId { // 有上一章节数据
// 获取该章节最后一关卡ID
stage := this.module.configure.GetLastStageIDByChapter(chapter)
if _, ok := v.Star[stage]; ok {
bCheck = true
}
break
}
}
}
if bCheck {
newData := &pb.DBMline{
Id: primitive.NewObjectID().Hex(),
Uid: session.GetUserId(),
CType: stageConf.Episodetype,
ChapterId: stageConf.Chapterid,
StageId: stageConf.Id,
Star: map[int32]int32{},
Award: map[int32]bool{},
Ps: map[int32]int32{},
}
this.module.modelMline.addNewChapter(session.GetUserId(), newData)
} else {
code = pb.ErrorCode_MainlineNotFindChapter
return return
} }
}
}
if v, ok := curChapter.Ps[req.StageId]; ok && v > 0 {
if v != 0 { // 扣1点
if code = this.module.ConsumeRes(session, stageConf.PsMg, true); code != pb.ErrorCode_Success { // 扣1点
return
}
}
} else { } else {
for _, v := range node.PsConsume { for _, v := range stageConf.PsConsume {
if v.A == "attr" && v.T == "ps" { if v.A == "attr" && v.T == "ps" {
ps += v.N ps += v.N
} }
} }
for _, v := range node.PsMg { for _, v := range stageConf.PsMg {
if v.A == "attr" && v.T == "ps" { if v.A == "attr" && v.T == "ps" {
ps += v.N ps += v.N
} }
} }
psAnt = &cfg.Gameatn{ psAnt = &cfg.Gameatn{ // 构建一个atn 对象
A: "attr", A: "attr",
T: "ps", T: "ps",
N: ps, N: ps,
@ -75,34 +107,26 @@ func (this *apiComp) Challenge(session comm.IUserSession, req *pb.MainlineChalle
return return
} }
curChapter.Ps = ps curChapter.Ps[req.StageId] = ps
update := map[string]interface{}{
"ps": ps, this.module.modelMline.modifyMlineData(session.GetUserId(), curChapter.Id, map[string]interface{}{
} "ps": curChapter.Ps,
})
err := this.module.modelMainline.modifyMainlineData(session.GetUserId(), curChapter.Id, update)
if err != nil {
code = pb.ErrorCode_DBError
return
}
} }
code, record := this.module.battle.CreatePveBattle(session, &pb.BattlePVEReq{ code, record := this.module.battle.CreatePveBattle(session, &pb.BattlePVEReq{
Ptype: pb.PlayType_mainline, Ptype: pb.PlayType_mainline,
Title: "", Title: "",
Format: &pb.BattleFormation{ Format: req.Battle,
Leadpos: req.Leadpos, Mformat: stageConf.FormatList,
Format: req.Teamids,
},
Mformat: node.FormatList,
}) })
if code != pb.ErrorCode_Success { if code != pb.ErrorCode_Success {
return return
} }
session.SendMsg(string(this.module.GetType()), MainlineChallengeResp, &pb.MainlineChallengeResp{ session.SendMsg(string(this.module.GetType()), MlineChallengeResp, &pb.MlineChallengeResp{
Info: &pb.BattleInfo{Id: record.Id, Title: record.Title, Btype: record.Btype, Ptype: record.Ptype, RedCompId: record.RedCompId, Redflist: record.Redflist, BlueCompId: record.BlueCompId, Buleflist: record.Buleflist}, Info: &pb.BattleInfo{Id: record.Id, Title: record.Title, Btype: record.Btype, Ptype: record.Ptype, RedCompId: record.RedCompId, Redflist: record.Redflist, BlueCompId: record.BlueCompId, Buleflist: record.Buleflist},
ChapterObj: req.ChapterObj, StageId: req.StageId,
MainlineId: req.GetMainlineId(),
}) })
return return
} }

View File

@ -6,13 +6,12 @@ import (
cfg "go_dreamfactory/sys/configure/structs" cfg "go_dreamfactory/sys/configure/structs"
"go.mongodb.org/mongo-driver/bson/primitive"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
) )
//参数校验 //参数校验
func (this *apiComp) ChallengeOverCheck(session comm.IUserSession, req *pb.MainlineChallengeOverReq) (code pb.ErrorCode) { func (this *apiComp) ChallengeOverCheck(session comm.IUserSession, req *pb.MlineChallengeOverReq) (code pb.ErrorCode) {
if req.MainlineId == 0 { if req.StageId == 0 {
code = pb.ErrorCode_ReqParameterError code = pb.ErrorCode_ReqParameterError
return return
} }
@ -20,134 +19,132 @@ func (this *apiComp) ChallengeOverCheck(session comm.IUserSession, req *pb.Mainl
} }
///挑战主线关卡 ///挑战主线关卡
func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.MainlineChallengeOverReq) (code pb.ErrorCode, data proto.Message) { func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.MlineChallengeOverReq) (code pb.ErrorCode, data proto.Message) {
var ( var (
mainline *pb.DBMainline // 当前章节信息 curChapter *pb.DBMline // 当前章节信息
res []*cfg.Gameatn // 小章节奖励 stageConf *cfg.GameMainStageData
isWin bool isWin bool
user *pb.DBUser first bool // 判断是否是首通
hero []string //新的英雄 update map[string]interface{}
newhero []string //新的英雄 rsp *pb.MlineChallengeOverResp
star int32 // 评星
) )
res = make([]*cfg.Gameatn, 0) rsp = &pb.MlineChallengeOverResp{}
hero = make([]string, 0) update = make(map[string]interface{})
newhero = make([]string, 0)
code = this.ChallengeOverCheck(session, req) code = this.ChallengeOverCheck(session, req)
if code != pb.ErrorCode_Success { if code != pb.ErrorCode_Success {
return // 参数校验失败直接返回 return // 参数校验失败直接返回
} }
// 校验关卡存不存在 if stageConf = this.module.configure.GetMainStageConf(req.StageId); stageConf == nil { // 配置文件校验
mainline = this.module.modelMainline.getOneChapterInfo(session.GetUserId(), req.ChapterObj) code = pb.ErrorCode_MainlineNotFindChapter
if mainline == nil {
code = pb.ErrorCode_MainlineNotFound
return return
} }
node := this.module.configure.GetMainlineConfigData(int32(req.MainlineId), mainline.Intensity) list, _ := this.module.modelMline.getMainlineList(session.GetUserId())
if node == nil { // 配置文件校验 for _, v := range list {
if stageConf.Chapterid == v.ChapterId {
curChapter = v
break
}
}
if curChapter == nil {
code = pb.ErrorCode_MainlineNotFindChapter code = pb.ErrorCode_MainlineNotFindChapter
return return
} }
for _, v := range mainline.BranchID {
if v == int32(req.MainlineId) { // 重复挑战
code = pb.ErrorCode_MainlineNotFindChapter
return
}
}
// 校验通过 // 校验通过
code, isWin = this.module.battle.CheckBattleReport(session, req.Report) code, isWin = this.module.battle.CheckBattleReport(session, req.Report)
if code != pb.ErrorCode_Success { if code != pb.ErrorCode_Success {
return return
} }
if !isWin { // 战斗失败直接返回 if !isWin { // 战斗失败返还扣除的体力
// 返还 if v, ok := curChapter.Ps[req.StageId]; ok && v > 0 {
mainline.Ps = 0 if code = this.module.DispenseRes(session, stageConf.PsConsume, true); code != pb.ErrorCode_Success { // 返还预扣体力
this.module.modelMainline.modifyMainlineData(session.GetUserId(), mainline.Id, map[string]interface{}{
"ps": 0,
})
if code = this.module.DispenseRes(session, node.PsConsume, true); code != pb.ErrorCode_Success { // 返还预扣体力
return return
} }
}
curChapter.Ps[req.StageId] = 0 // 清空预扣体力值
update["ps"] = curChapter.Ps
this.module.modelMline.modifyMlineData(session.GetUserId(), curChapter.Id, update)
code = pb.ErrorCode_BattleNoWin code = pb.ErrorCode_BattleNoWin
return return
} }
// 评星规则
res = append(res, node.Award...) if len(stageConf.Star) != len(stageConf.StarType) || len(stageConf.Star) != len(stageConf.StarValue) || len(stageConf.StarValue) != len(stageConf.StarType) {
for _, v := range node.Award { this.module.Errorf("配置错误, 参数数量不一致,StageId: %d", req.StageId)
if v.A == comm.HeroType { code = pb.ErrorCode_ConfigNoFound
hero = append(hero, v.T)
}
}
if len(hero) > 0 {
ishave := this.module.ModuleUser.CheckTujianHero(session, hero)
for i, v := range ishave {
if !v {
newhero = append(newhero, hero[i])
}
}
}
user = this.module.ModuleUser.GetUser(session.GetUserId())
mainline.MainlineId = int32(req.MainlineId)
mainline.BranchID = append(mainline.BranchID, int32(req.MainlineId))
mainline.Ps = 0 // 重置预扣体力
update := map[string]interface{}{
"mainlineId": req.MainlineId,
"chapterId": mainline.ChapterId,
"branchID": mainline.BranchID,
"ps": 0,
}
if node.Episodetype == comm.MainLineBoss { // 打完boss 设置领奖状态
update["awaredID"] = pb.AwaredType_TypeAvailable
mainline.AwaredID = pb.AwaredType_TypeAvailable
}
err := this.module.modelMainline.modifyMainlineData(session.GetUserId(), mainline.Id, update)
if err != nil {
code = pb.ErrorCode_DBError
return return
} }
for i, v := range stageConf.StarType {
if v == comm.MainStarType1 {
star += stageConf.Star[i]
} else if v == comm.MainStarType2 {
if req.Report.Death <= stageConf.StarValue[i] {
star += stageConf.Star[i]
}
} else if v == comm.MainStarType3 {
if req.Report.Round <= stageConf.StarValue[i] {
star += stageConf.Star[i]
}
}
}
// 判断是不是首通
if _, ok := curChapter.Star[req.StageId]; !ok {
first = true
curChapter.Star[req.StageId] = star // 星级赋值
update["star"] = curChapter.Star
}
if curChapter.Star[req.StageId] > star { // 给最高星
curChapter.Star[req.StageId] = star
update["star"] = curChapter.Star
}
curChapter.Ps[req.StageId] = 0 // 清空预扣体力值
update["ps"] = curChapter.Ps
if node.Episodetype == comm.MainLineBoss { // 挑战完成 boss关 curChapter.StageId = req.StageId
_data := &pb.DBMainline{} update["stageId"] = curChapter.StageId
conf := this.module.configure.GetMainlineChapter(mainline.ChapterId + 1)
_data.Id = primitive.NewObjectID().Hex() if first { // 发奖
_data.ChapterId = mainline.ChapterId + 1 if code = this.module.DispenseRes(session, stageConf.Firstaward, true); code != pb.ErrorCode_Success {
_data.Intensity = mainline.Intensity this.module.Debugf("Mline first DispenseRes err:+%v", stageConf.Firstaward)
if conf == nil { // 这里就是切换下一个难度了 }
if mainline.Intensity < comm.MaxMainlineIntensity { for _, v := range stageConf.Firstaward {
_data.Intensity = mainline.Intensity + 1 // 难度+1 rsp.Reward = append(rsp.Reward, &pb.UserAssets{
_data.ChapterId = 1 // 默认第一章节 A: v.A,
T: v.T,
N: v.N,
})
}
} else {
if code = this.module.DispenseRes(session, stageConf.Commonaward, true); code != pb.ErrorCode_Success {
this.module.Debugf("Mline Commonaward DispenseRes err:+%v", stageConf.Commonaward)
}
for _, v := range stageConf.Commonaward {
rsp.Reward = append(rsp.Reward, &pb.UserAssets{
A: v.A,
T: v.T,
N: v.N,
})
} }
} }
_mData := make(map[string]interface{}, 0) // 加英雄经验
_data.Uid = session.GetUserId() if stageConf.HeroExp > 0 {
_mData[_data.Id] = _data
this.module.modelMainline.addNewChapter(session.GetUserId(), _mData)
session.SendMsg(string(this.module.GetType()), MainlineNewChapterPush, &pb.MainlineNewChapterPush{Data: _data}) // 推送新的章节
}
// 发奖
if code = this.module.DispenseRes(session, res, true); code != pb.ErrorCode_Success {
this.module.Debugf("DispenseRes err:+%v", res)
}
// 加经验
if node.Episodetype != 5 && node.Episodetype != 7 {
if req.Report != nil && req.Report.Info != nil && len(req.Report.Info.Redflist) > 0 { if req.Report != nil && req.Report.Info != nil && len(req.Report.Info.Redflist) > 0 {
for _, v := range req.Report.Info.Redflist[0].Team { for _, v := range req.Report.Info.Redflist[0].Team {
if node.Exp > 0 && !v.Ishelp { // 助战英雄不加经验 if !v.Ishelp { // 助战英雄不加经验
this.module.ModuleHero.AddHeroExp(session, v.Oid, node.Exp) this.module.ModuleHero.AddHeroExp(session, v.Oid, stageConf.HeroExp)
} }
} }
} }
} }
this.module.modelMline.modifyMlineData(session.GetUserId(), curChapter.Id, update)
session.SendMsg(string(this.module.GetType()), MainlineChallengeOverResp, &pb.MainlineChallengeOverResp{Data: mainline, Newheros: newhero, Olv: user.Lv}) rsp.Data = curChapter
session.SendMsg(string(this.module.GetType()), MlineChallengeOverResp, rsp) // 数据推送
// 主线任务统计 Rtype60 // 主线任务统计 Rtype60
this.module.ModuleRtask.SendToRtask(session, comm.Rtype60, 1) this.module.ModuleRtask.SendToRtask(session, comm.Rtype60, 1)
this.module.ModuleRtask.SendToRtask(session, comm.Rtype61, int32(req.MainlineId)) this.module.ModuleRtask.SendToRtask(session, comm.Rtype61, int32(req.StageId))
return return
} }

View File

@ -0,0 +1,65 @@
package mline
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"google.golang.org/protobuf/proto"
)
//参数校验
func (this *apiComp) CleanStageCheck(session comm.IUserSession, req *pb.MlineCleanStageReq) (code pb.ErrorCode) {
if req.StageId == 0 {
code = pb.ErrorCode_ReqParameterError
}
return
}
///挑战主线关卡
func (this *apiComp) CleanStage(session comm.IUserSession, req *pb.MlineCleanStageReq) (code pb.ErrorCode, data proto.Message) {
var (
curChapter *pb.DBMline // 当前章节信息
stageConf *cfg.GameMainStageData
rsp *pb.MlineCleanStageResp
)
rsp = &pb.MlineCleanStageResp{}
if code = this.CleanStageCheck(session, req); code != pb.ErrorCode_Success {
return // 参数校验失败直接返回
}
if stageConf = this.module.configure.GetMainStageConf(req.StageId); stageConf == nil { // 配置文件校验
code = pb.ErrorCode_MainlineNotFindChapter
return
}
list, _ := this.module.modelMline.getMainlineList(session.GetUserId())
for _, v := range list {
if stageConf.Chapterid == v.ChapterId {
curChapter = v
break
}
}
if curChapter == nil { // 校验是不是新的数据
code = pb.ErrorCode_MainlineNotFindChapter
return
}
if v, ok := curChapter.Star[req.StageId]; !ok || v < 3 {
code = pb.ErrorCode_MainlineNoEnoughStar
return
}
if code = this.module.DispenseRes(session, stageConf.Commonaward, true); code != pb.ErrorCode_Success {
this.module.Debugf("Mline Clean DispenseRes err:+%v", stageConf.Commonaward)
return
}
rsp.StageId = req.StageId
for _, v := range stageConf.Commonaward {
rsp.Reward = append(rsp.Reward, &pb.UserAssets{
A: v.A,
T: v.T,
N: v.N,
})
}
session.SendMsg(string(this.module.GetType()), MlineChallengeResp, rsp)
return
}

View File

@ -3,63 +3,75 @@ package mline
import ( import (
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/pb" "go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
) )
//参数校验 //参数校验
func (this *apiComp) GetRewardCheck(session comm.IUserSession, req *pb.MainlineGetRewardReq) (code pb.ErrorCode) { func (this *apiComp) GetRewardCheck(session comm.IUserSession, req *pb.MlineGetRewardReq) (code pb.ErrorCode) {
if req.ChapterObj == "" { if req.CId == 0 || req.Star == 0 {
code = pb.ErrorCode_ReqParameterError code = pb.ErrorCode_ReqParameterError
} }
return return
} }
///获取主线关卡信息 // 领取奖励
func (this *apiComp) GetReward(session comm.IUserSession, req *pb.MainlineGetRewardReq) (code pb.ErrorCode, data proto.Message) { func (this *apiComp) GetReward(session comm.IUserSession, req *pb.MlineGetRewardReq) (code pb.ErrorCode, data proto.Message) {
rsp := &pb.MainlineGetRewardResp{} var (
curChapter *pb.DBMline // 当前章节信息
code = this.GetRewardCheck(session, req) stageConf *cfg.GameMainStageData
if code != pb.ErrorCode_Success { update map[string]interface{}
return // 参数校验失败直接返回 rsp *pb.MlineGetRewardResp
} )
update = make(map[string]interface{})
_obj := this.module.modelMainline.getOneChapterInfo(session.GetUserId(), req.ChapterObj) if code = this.GetRewardCheck(session, req); code != pb.ErrorCode_Success {
if _obj == nil {
code = pb.ErrorCode_DBError
return return
} }
if _obj.AwaredID == pb.AwaredType_TypeReceived { if stageConf = this.module.configure.GetMainStageConf(req.CId); stageConf == nil { // 配置文件校验
code = pb.ErrorCode_MainlineRepeatReward // 重复领奖 code = pb.ErrorCode_MainlineNotFindChapter
return return
} }
if _obj.AwaredID != pb.AwaredType_TypeAvailable { mLineConf := this.module.configure.GetMainChapterConf(stageConf.Chapterid)
code = pb.ErrorCode_MainlineCompleteReward // 通关才能领奖 if mLineConf == nil {
return
}
// 校验是不是通关了
chaptConfig := this.module.configure.GetMainlineChapter(int32(_obj.ChapterId)) // 根据配置文件找
if chaptConfig == nil {
code = pb.ErrorCode_ConfigNoFound code = pb.ErrorCode_ConfigNoFound
return return
} }
list, _ := this.module.modelMline.getMainlineList(session.GetUserId())
_obj.AwaredID = pb.AwaredType_TypeReceived // 设置领奖标记 for _, v := range list {
update := map[string]interface{}{ if stageConf.Chapterid == v.ChapterId {
"awaredID": _obj.AwaredID, curChapter = v
break
} }
// 发奖 }
code = this.module.DispenseRes(session, chaptConfig.Award, true) if curChapter == nil {
if code != pb.ErrorCode_Success { code = pb.ErrorCode_MainlineNotFindChapter
return return
} }
err := this.module.modelMainline.modifyMainlineData(session.GetUserId(), _obj.Id, update) if b, ok := curChapter.Award[req.Star]; ok && b { // 重复领奖
if err != nil { code = pb.ErrorCode_MainlineRepeatReward
code = pb.ErrorCode_DBError
return return
} }
rsp.Data = _obj curChapter.Award[req.Star] = true
session.SendMsg(string(this.module.GetType()), MainlineGetRewardResp, rsp) update["awared"] = curChapter.Award
awardConf := this.module.configure.GetMainStarRewardConf(mLineConf.Starreward)
for _, v := range awardConf {
if v.Starnum == req.Star {
if code = this.module.DispenseRes(session, v.Reward, true); code != pb.ErrorCode_Success {
return
}
for _, v := range v.Reward {
rsp.Reward = append(rsp.Reward, &pb.UserAssets{
A: v.A,
T: v.T,
N: v.N,
})
}
}
}
rsp.Data = curChapter
this.module.modelMline.modifyMlineData(session.GetUserId(), curChapter.Id, update)
session.SendMsg(string(this.module.GetType()), MlineGetRewardResp, rsp) // 数据推送
return return
} }

View File

@ -9,39 +9,53 @@ import (
) )
//参数校验 //参数校验
func (this *apiComp) GetListCheck(session comm.IUserSession, req *pb.MainlineGetListReq) (code pb.ErrorCode) { func (this *apiComp) GetListCheck(session comm.IUserSession, req *pb.MlineGetListReq) (code pb.ErrorCode) {
if req.CType == 0 {
code = pb.ErrorCode_ReqParameterError
}
return return
} }
///获取主线关卡信息 ///获取主线关卡信息
func (this *apiComp) GetList(session comm.IUserSession, req *pb.MainlineGetListReq) (code pb.ErrorCode, data proto.Message) { func (this *apiComp) GetList(session comm.IUserSession, req *pb.MlineGetListReq) (code pb.ErrorCode, data proto.Message) {
rsp := &pb.MainlineGetListResp{} rsp := &pb.MlineGetListResp{}
code = this.GetListCheck(session, req) code = this.GetListCheck(session, req)
if code != pb.ErrorCode_Success { if code != pb.ErrorCode_Success {
return // 参数校验失败直接返回 return // 参数校验失败直接返回
} }
list, err := this.module.modelMainline.getMainlineList(session.GetUserId()) list, err := this.module.modelMline.getMainlineList(session.GetUserId())
if err != nil { if err != nil {
code = pb.ErrorCode_DBError code = pb.ErrorCode_DBError
return return
} }
if len(list) == 0 { // 如果数量为0 则默认创建一条数据 for _, v := range list {
_data := &pb.DBMainline{} if v.CType == req.CType {
_data.Id = primitive.NewObjectID().Hex() rsp.Data = append(rsp.Data, v)
_data.ChapterId = 1 // 默认第一章节 }
_mData := make(map[string]interface{}, 0) }
_data.Uid = session.GetUserId() if len(rsp.Data) == 0 { // 什么数据都没有 创建一条
_data.Intensity = 1 // 难度1 stageConf := this.module.configure.GetFirstStageIDByChapter(req.CType)
_mData[_data.Id] = _data if stageConf != nil { // 配置文件校验
newData := &pb.DBMline{
this.module.modelMainline.addNewChapter(session.GetUserId(), _mData) Id: primitive.NewObjectID().Hex(),
list = append(list, _data) Uid: session.GetUserId(),
CType: stageConf.Episodetype,
ChapterId: stageConf.Chapterid,
StageId: stageConf.Id,
Star: map[int32]int32{},
Award: map[int32]bool{},
Ps: map[int32]int32{},
}
rsp.Data = append(rsp.Data, newData)
this.module.modelMline.addNewChapter(session.GetUserId(), newData)
} else {
code = pb.ErrorCode_ConfigNoFound
return
}
} }
rsp.Data = list
session.SendMsg(string(this.module.GetType()), MainlineGetListResp, &pb.MainlineGetListResp{Data: rsp.Data}) session.SendMsg(string(this.module.GetType()), MlineGetListResp, rsp)
return return
} }

View File

@ -2,7 +2,6 @@ package mline
import ( import (
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/sys/configure" "go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs" cfg "go_dreamfactory/sys/configure/structs"
@ -10,83 +9,122 @@ import (
) )
const ( const (
game_mainlinechapter = "game_mainlinechapter.json" game_mainchapter = "game_mainchapter.json"
game_mainline = "game_mainline.json" game_mainstage = "game_mainstage.json"
game_mainstarreward = "game_mainstarreward.json"
) )
///配置管理基础组件 ///配置管理基础组件
type configureComp struct { type configureComp struct {
modules.MCompConfigure modules.MCompConfigure
module *Mainline module *Mline
hlock sync.RWMutex hlock sync.RWMutex
_mapMainline map[int64]*cfg.GameMainlineData
} }
//组件初始化接口 //组件初始化接口
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { 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.MCompConfigure.Init(service, module, comp, options)
this.module = module.(*Mainline) this.module = module.(*Mline)
err = this.LoadMultiConfigure(map[string]interface{}{ err = this.LoadMultiConfigure(map[string]interface{}{
game_mainlinechapter: cfg.NewGameMainlineChapter, game_mainchapter: cfg.NewGameMainChapter,
game_mainstage: cfg.NewGameMainStage,
game_mainstarreward: cfg.NewGameMainStarreward,
}) })
this._mapMainline = make(map[int64]*cfg.GameMainlineData, 0)
configure.RegisterConfigure(game_mainline, cfg.NewGameMainline, this.GetMainline)
return return
} }
func (this *configureComp) GetMainline() {
if v, err := this.GetConfigure(game_mainline); err == nil {
if configure, ok := v.(*cfg.GameMainline); ok {
this.hlock.Lock()
defer this.hlock.Unlock()
for _, value := range configure.GetDataList() {
this._mapMainline[int64(value.Id<<16)+int64(value.Intensity)] = value
}
return
}
} else {
log.Errorf("get game_mainline conf err:%v", err)
}
return
}
// id + intensity
func (this *configureComp) GetMainlineConfigData(id, intensity int32) *cfg.GameMainlineData {
return this._mapMainline[int64(id<<16)+int64(intensity)]
}
//读取配置数据 //读取配置数据
func (this *configureComp) GetConfigure(name string) (v interface{}, err error) { func (this *configureComp) GetConfigure(name string) (v interface{}, err error) {
return configure.GetConfigure(name) return configure.GetConfigure(name)
} }
func (this *configureComp) GetMainlineChapter(id int32) (data *cfg.GameMainlineChapterData) { func (this *configureComp) GetMainChapterConf(id int32) (data *cfg.GameMainChapterData) {
if v, err := this.GetConfigure(game_mainlinechapter); err != nil { if v, err := this.GetConfigure(game_mainchapter); err == nil {
this.module.Errorf("get global conf err:%v", err) if configure, ok := v.(*cfg.GameMainChapter); ok {
return configure.Get(id)
}
}
this.module.Errorf("GameMainChapterData conf not found key :%d", id)
return return
} else { }
func (this *configureComp) GetMainStarRewardConf(boxId int32) (data []*cfg.GameMainStarrewardData) {
if v, err := this.GetConfigure(game_mainstarreward); err == nil {
if configure, ok := v.(*cfg.GameMainStarreward); ok {
for _, v1 := range configure.GetDataList() {
if v1.Boxid == boxId {
data = append(data, v1)
}
}
}
}
return
}
func (this *configureComp) GetMainStageConf(id int32) (data *cfg.GameMainStageData) {
if v, err := this.GetConfigure(game_mainstage); err == nil {
if configure, ok := v.(*cfg.GameMainStage); ok {
return configure.Get(id)
}
}
this.module.Errorf("GameMainStageData conf not found key :%d", id)
return
}
// 获取上一章节信息
func (this *configureComp) GetPreMainChapter(id int32) (stageID int32) {
if v, err := this.GetConfigure(game_mainchapter); err == nil {
if configure, ok := v.(*cfg.GameMainChapter); ok {
for index, v1 := range configure.GetDataList() {
if v1.Id == id {
if index > 0 {
data := configure.GetDataList()[index-1]
if v1.ChapterType != data.ChapterType { // 章节类型必须一致
stageID = data.Id
}
} else { // 第一章节
stageID = 0
}
break
}
}
}
}
return
}
// 获取该章节最后一关ID
func (this *configureComp) GetLastStageIDByChapter(id int32) (stageID int32) {
var ( var (
configure *cfg.GameMainlineChapter sz []int32
ok bool
) )
if configure, ok = v.(*cfg.GameMainlineChapter); !ok { if v, err := this.GetConfigure(game_mainstage); err == nil {
this.module.Errorf("%T no is *cfg.Game_MainlineChapterData", v) if configure, ok := v.(*cfg.GameMainStage); ok {
return for _, v := range configure.GetDataList() {
if v.Chapterid == id {
sz = append(sz, v.Id)
}
}
}
}
if len(sz) > 0 {
stageID = sz[len(sz)-1]
} }
data = configure.Get(int(id - 1)) return stageID
}
return
} }
func (this *configureComp) GetFirstStageIDByChapter(iType int32) *cfg.GameMainStageData {
// 获取章节数量 if v, err := this.GetConfigure(game_mainstage); err == nil {
func (this *configureComp) GetMaxMainlineChapter() int32 { if configure, ok := v.(*cfg.GameMainStage); ok {
if v, err := this.GetConfigure(game_mainlinechapter); err == nil { for _, v := range configure.GetDataList() {
if configure, ok := v.(*cfg.GameMainlineChapter); ok { if v.Episodetype == iType {
return int32(len(configure.GetDataList())) return v
} }
} }
return 0 }
}
return nil
} }

View File

@ -7,44 +7,45 @@ import (
"go_dreamfactory/pb" "go_dreamfactory/pb"
) )
type ModelMainline struct { type ModelMline struct {
modules.MCompModel modules.MCompModel
module *Mainline module *Mline
} }
func (this *ModelMainline) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { func (this *ModelMline) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = comm.TableMainline this.TableName = comm.TableMline
err = this.MCompModel.Init(service, module, comp, options) err = this.MCompModel.Init(service, module, comp, options)
this.module = module.(*Mainline) this.module = module.(*Mline)
return return
} }
// 获取章节信息 // 获取章节信息
func (this *ModelMainline) getMainlineList(uid string) (storys []*pb.DBMainline, err error) { func (this *ModelMline) getMainlineList(uid string) (mLine []*pb.DBMline, err error) {
storys = make([]*pb.DBMainline, 0) mLine = make([]*pb.DBMline, 0)
err = this.GetList(uid, &storys) this.GetList(uid, &mLine)
return return
} }
// 修改章节信息 // 修改章节信息
func (this *ModelMainline) modifyMainlineData(uid string, objid string, data map[string]interface{}) error { func (this *ModelMline) modifyMlineData(uid string, objId string, data map[string]interface{}) error {
return this.module.modelMainline.ChangeList(uid, objid, data) return this.module.modelMline.ChangeList(uid, objId, data)
} }
// 增加新的章节数据 // 增加新的章节数据
func (this *ModelMainline) addNewChapter(uId string, data map[string]interface{}) (err error) { func (this *ModelMline) addNewChapter(uId string, data *pb.DBMline) (err error) {
update := make(map[string]*pb.DBMline)
if err = this.AddLists(uId, data); err != nil { update[data.Id] = data
this.module.Errorf("err:%v", err) if err = this.AddLists(uId, update); err != nil {
return this.module.Errorln(err)
} }
return nil
return err
} }
// 获取指定章节数据 // 获取指定章节数据
func (this *ModelMainline) getOneChapterInfo(uid, obj string) *pb.DBMainline { func (this *ModelMline) getOneChapterInfo(uid, obj string) *pb.DBMainline {
data := &pb.DBMainline{} data := &pb.DBMainline{}
err := this.module.modelMainline.GetListObj(uid, obj, data) err := this.module.modelMline.GetListObj(uid, obj, data)
if err != nil { if err != nil {
this.module.Errorf("%v", err) this.module.Errorf("%v", err)
return nil return nil
@ -53,7 +54,7 @@ func (this *ModelMainline) getOneChapterInfo(uid, obj string) *pb.DBMainline {
} }
// 增加新的章节数据 // 增加新的章节数据
func (this *ModelMainline) cleanChapter(uId string) (err error) { func (this *ModelMline) cleanChapter(uId string) (err error) {
if err = this.DelByUId(uId); err != nil { if err = this.DelByUId(uId); err != nil {
this.module.Errorf("err:%v", err) this.module.Errorf("err:%v", err)

View File

@ -5,14 +5,11 @@ import (
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"sort"
"go.mongodb.org/mongo-driver/bson/primitive"
) )
type Mainline struct { type Mline struct {
modules.ModuleBase modules.ModuleBase
modelMainline *ModelMainline modelMline *ModelMline
service core.IService service core.IService
api *apiComp api *apiComp
configure *configureComp configure *configureComp
@ -20,75 +17,27 @@ type Mainline struct {
} }
func NewModule() core.IModule { func NewModule() core.IModule {
return &Mainline{} return &Mline{}
} }
func (this *Mainline) GetType() core.M_Modules { func (this *Mline) GetType() core.M_Modules {
return comm.ModuleMainline return comm.ModuleMline
} }
func (this *Mainline) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) { func (this *Mline) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) {
err = this.ModuleBase.Init(service, module, options) err = this.ModuleBase.Init(service, module, options)
this.service = service this.service = service
return return
} }
func (this *Mainline) OnInstallComp() { func (this *Mline) OnInstallComp() {
this.ModuleBase.OnInstallComp() this.ModuleBase.OnInstallComp()
this.api = this.RegisterComp(new(apiComp)).(*apiComp) this.api = this.RegisterComp(new(apiComp)).(*apiComp)
this.modelMainline = this.RegisterComp(new(ModelMainline)).(*ModelMainline) this.modelMline = this.RegisterComp(new(ModelMline)).(*ModelMline)
this.configure = this.RegisterComp(new(configureComp)).(*configureComp) this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
} }
// 接口信息 给其他模块调用 用来修改主线关卡信息 func (this *Mline) Start() (err error) {
func (this *Mainline) ModifyMainlineData(uid string, id int32) (code pb.ErrorCode) {
conf := this.configure.GetMainlineConfigData(id, 1)
list, err := this.modelMainline.getMainlineList(uid)
if err != nil {
code = pb.ErrorCode_DBError
return
}
for _, v := range list {
if v.ChapterId == conf.Chapter {
data := make(map[string]interface{}, 0)
data["mainlineId"] = id
data["chapterId"] = v.ChapterId
this.modelMainline.modifyMainlineData(uid, v.Id, data)
if err != nil {
code = pb.ErrorCode_DBError
}
return
}
}
//add
_data := &pb.DBMainline{}
_data.Id = primitive.NewObjectID().Hex()
_data.ChapterId = conf.Chapter
_data.MainlineId = conf.Id
_mData := make(map[string]interface{}, 0)
_data.Uid = uid
_data.Intensity = 1 // 难度1
_mData[_data.Id] = _data
this.modelMainline.addNewChapter(uid, _mData)
return
}
func (this *Mainline) GetUsermainLineData(uid string) (mainlineId int32) {
_szData, err := this.modelMainline.getMainlineList(uid)
if err == nil {
sort.SliceStable(_szData, func(i, j int) bool { // 排序
return _szData[i].ChapterId > _szData[j].ChapterId
})
}
return
}
func (this *Mainline) Start() (err error) {
err = this.ModuleBase.Start() err = this.ModuleBase.Start()
var module core.IModule var module core.IModule
if module, err = this.service.GetModule(comm.ModuleBattle); err != nil { if module, err = this.service.GetModule(comm.ModuleBattle); err != nil {
@ -100,7 +49,7 @@ func (this *Mainline) Start() (err error) {
} }
//红点查询 //红点查询
func (this *Mainline) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (reddot map[comm.ReddotType]bool) { func (this *Mline) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (reddot map[comm.ReddotType]bool) {
reddot = make(map[comm.ReddotType]bool) reddot = make(map[comm.ReddotType]bool)
for _, v := range rid { for _, v := range rid {
if v == comm.Reddot5 { if v == comm.Reddot5 {
@ -112,90 +61,25 @@ func (this *Mainline) Reddot(session comm.IUserSession, rid ...comm.ReddotType)
} }
// 红点检测 // 红点检测
func (this *Mainline) CheckPoint(uid string) bool { func (this *Mline) CheckPoint(uid string) bool {
list, err := this.modelMainline.getMainlineList(uid) // list, err := this.modelMainline.getMainlineList(uid)
if err != nil { // if err != nil {
return false // return false
} // }
for _, v := range list { // for _, v := range list {
conf := this.configure.GetMainlineChapter(v.ChapterId) // conf := this.configure.GetMainlineChapter(v.ChapterId)
if conf == nil { // if conf == nil {
continue // continue
} // }
if len(conf.Episode) != len(v.BranchID) { // if len(conf.Episode) != len(v.BranchID) {
return true // return true
} // }
} // }
return false return false
} }
// 参数 难度 + 关卡id // 参数 难度 + 关卡id
func (this *Mainline) ModifyMainlineDataByNanduID(uid string, nandu, id int32) (code pb.ErrorCode) { func (this *Mline) ModifyMainlineDataByNanduID(uid string, nandu, id int32) (code pb.ErrorCode) {
conf := this.configure.GetMainlineConfigData(id, nandu)
if conf == nil {
code = pb.ErrorCode_ConfigNoFound // 找不到配置
return
}
// 已现在设置的为准 删除之前的所有数据
this.modelMainline.cleanChapter(uid)
// 获取当前的章节数据
jumpCap := conf.Chapter
// 先加所有难度小于1 的章节
for ndIndex := 1; ndIndex <= int(nandu)-1; ndIndex++ {
max := this.configure.GetMaxMainlineChapter()
for i := 1; i <= int(max); i++ {
confCap := this.configure.GetMainlineChapter(int32(i))
//_conf := this.configure.GetMainlineConfigData(int32(i), int32(ndIndex))
_data := &pb.DBMainline{}
_data.Id = primitive.NewObjectID().Hex()
_data.ChapterId = int32(i)
_data.MainlineId = confCap.Id
_mData := make(map[string]interface{}, 0)
_data.Uid = uid
_data.Intensity = int32(ndIndex) // 难度1
for _, v := range confCap.Episode {
_data.BranchID = append(_data.BranchID, v)
}
_mData[_data.Id] = _data
this.modelMainline.addNewChapter(uid, _mData)
}
}
// 加当前难度 的章节数据
for i := 1; i <= int(jumpCap-1); i++ {
confCap := this.configure.GetMainlineChapter(int32(i))
_data := &pb.DBMainline{}
_data.Id = primitive.NewObjectID().Hex()
_data.ChapterId = int32(i)
_data.MainlineId = confCap.Id
_mData := make(map[string]interface{}, 0)
_data.Uid = uid
_data.Intensity = int32(nandu) // 难度1
for _, v := range confCap.Episode {
_data.BranchID = append(_data.BranchID, v)
}
_mData[_data.Id] = _data
this.modelMainline.addNewChapter(uid, _mData)
}
// 加当前难度 当前章节的前置关卡数据
_data := &pb.DBMainline{}
_data.Id = primitive.NewObjectID().Hex()
_data.ChapterId = conf.Chapter
_data.MainlineId = conf.Id
_mData := make(map[string]interface{}, 0)
_data.Uid = uid
_data.Intensity = int32(nandu) // 难度1
confCap := this.configure.GetMainlineChapter(int32(conf.Chapter))
for _, v := range confCap.Episode {
if v <= id {
_data.BranchID = append(_data.BranchID, v)
}
}
_mData[_data.Id] = _data
this.modelMainline.addNewChapter(uid, _mData)
return return
} }

View File

@ -164,7 +164,8 @@ func (this *ModuleRtask) initRtaskVerifyHandle() {
comm.Rtype54, comm.Rtype57, comm.Rtype58, comm.Rtype60, comm.Rtype54, comm.Rtype57, comm.Rtype58, comm.Rtype60,
comm.Rtype62, comm.Rtype64, comm.Rtype69, comm.Rtype72, comm.Rtype88, comm.Rtype104, comm.Rtype62, comm.Rtype64, comm.Rtype69, comm.Rtype72, comm.Rtype88, comm.Rtype104,
comm.Rtype96, comm.Rtype105, comm.Rtype128, comm.Rtype130, comm.Rtype131, comm.Rtype96, comm.Rtype105, comm.Rtype128, comm.Rtype130, comm.Rtype131,
comm.Rtype141, comm.Rtype142, comm.Rtype143, comm.Rtype144, comm.Rtype145, comm.Rtype146: comm.Rtype141, comm.Rtype142, comm.Rtype143, comm.Rtype144, comm.Rtype145, comm.Rtype146,
comm.Rtype147, comm.Rtype149, comm.Rtype153, comm.Rtype154, comm.Rtype155, comm.Rtype156:
this.registerVerifyHandle(v.Id, &rtaskCondi{ this.registerVerifyHandle(v.Id, &rtaskCondi{
find: this.modelRtaskRecord.lessEqualFirstParam, find: this.modelRtaskRecord.lessEqualFirstParam,
verify: this.modelRtaskRecord.verifyFirstGreatEqualParam, verify: this.modelRtaskRecord.verifyFirstGreatEqualParam,
@ -343,6 +344,11 @@ func (this *ModuleRtask) SendToRtask(session comm.IUserSession, rtaskType comm.T
log.Field{Key: "err", Value: err2.Error()}, log.Field{Key: "err", Value: err2.Error()},
) )
} }
if module, err := this.service.GetModule(comm.ModuleRtask); err == nil {
if iRtask,ok:=module.(comm.IRtask);ok{
iRtask.SendToRtask(session, comm.Rtype156, 1)
}
}
} }
} }
} }

View File

@ -39,6 +39,7 @@ func (this *ModelSociatyTask) initSociatyTask(uid, sociatyId string) error {
globalConf := this.moduleSociaty.globalConf globalConf := this.moduleSociaty.globalConf
// 大于4条配置 // 大于4条配置
if len(taskListConf) > int(globalConf.GuildTaskNum) { if len(taskListConf) > int(globalConf.GuildTaskNum) {
// 按照权重
//随机4条任务 //随机4条任务
randInts := utils.RandomNumbers(0, len(taskListConf)-1, int(globalConf.GuildTaskNum)) randInts := utils.RandomNumbers(0, len(taskListConf)-1, int(globalConf.GuildTaskNum))
for _, v := range randInts { for _, v := range randInts {

View File

@ -630,6 +630,8 @@ type BattleReport struct {
Incmd []*BattleCmd `protobuf:"bytes,3,rep,name=incmd,proto3" json:"incmd"` //输入指令 Incmd []*BattleCmd `protobuf:"bytes,3,rep,name=incmd,proto3" json:"incmd"` //输入指令
Outcmd []*BattleCmd `protobuf:"bytes,4,rep,name=outcmd,proto3" json:"outcmd"` //输出指令 Outcmd []*BattleCmd `protobuf:"bytes,4,rep,name=outcmd,proto3" json:"outcmd"` //输出指令
Completetask []int32 `protobuf:"varint,5,rep,packed,name=completetask,proto3" json:"completetask"` //完成任务 Completetask []int32 `protobuf:"varint,5,rep,packed,name=completetask,proto3" json:"completetask"` //完成任务
Death int32 `protobuf:"varint,6,opt,name=death,proto3" json:"death"` // 死亡人数
Round int32 `protobuf:"varint,7,opt,name=round,proto3" json:"round"` // 回合数
} }
func (x *BattleReport) Reset() { func (x *BattleReport) Reset() {
@ -699,6 +701,20 @@ func (x *BattleReport) GetCompletetask() []int32 {
return nil return nil
} }
func (x *BattleReport) GetDeath() int32 {
if x != nil {
return x.Death
}
return 0
}
func (x *BattleReport) GetRound() int32 {
if x != nil {
return x.Round
}
return 0
}
//公用消息结构代码 //公用消息结构代码
type BattleRpcMessage struct { type BattleRpcMessage struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -892,7 +908,7 @@ var file_battle_battle_msg_proto_rawDesc = []byte{
0x65, 0x43, 0x6d, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6d, 0x64, 0x74, 0x79, 0x70, 0x65, 0x18, 0x65, 0x43, 0x6d, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6d, 0x64, 0x74, 0x79, 0x70, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6d, 0x64, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6d, 0x64, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14,
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x0c, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe1, 0x01, 0x0a, 0x0c, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52,
0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x74, 0x69, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x74, 0x69,
@ -903,18 +919,20 @@ var file_battle_battle_msg_proto_rawDesc = []byte{
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6d, 0x64,
0x52, 0x06, 0x6f, 0x75, 0x74, 0x63, 0x6d, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x63, 0x6d, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70,
0x6c, 0x65, 0x74, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x6c, 0x65, 0x74, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c,
0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x22, 0x66, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x74, 0x61, 0x73, 0x6b, 0x12, 0x14, 0x0a, 0x05,
0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x70, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x64, 0x65, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x61,
0x12, 0x10, 0x0a, 0x03, 0x72, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x72, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28,
0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x05, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x66, 0x0a, 0x10, 0x42, 0x61, 0x74, 0x74,
0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x6c, 0x65, 0x52, 0x70, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03,
0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x72, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x72, 0x69, 0x64, 0x12, 0x16,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x64, 0x61, 0x74, 0x61, 0x22, 0x2e, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x68, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03,
0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x63, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
0x68, 0x65, 0x63, 0x6b, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x22, 0x2e, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52,
0x6f, 0x74, 0x6f, 0x33, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x63, 0x68, 0x65, 0x63,
0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x63, 0x68, 0x65, 0x63, 0x6b,
0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

View File

@ -134,6 +134,7 @@ const (
ErrorCode_MainlinePreNotFound ErrorCode = 1503 // 前置关卡不匹配 ErrorCode_MainlinePreNotFound ErrorCode = 1503 // 前置关卡不匹配
ErrorCode_MainlineRepeatReward ErrorCode = 1504 // 重复领奖 ErrorCode_MainlineRepeatReward ErrorCode = 1504 // 重复领奖
ErrorCode_MainlineCompleteReward ErrorCode = 1505 // 通关才能领奖 ErrorCode_MainlineCompleteReward ErrorCode = 1505 // 通关才能领奖
ErrorCode_MainlineNoEnoughStar ErrorCode = 1506 // 扫荡通关星级不够
// task // task
ErrorCode_TaskInit ErrorCode = 1600 //初始化失败 ErrorCode_TaskInit ErrorCode = 1600 //初始化失败
ErrorCode_TaskReset ErrorCode = 1601 //重置任务失败 ErrorCode_TaskReset ErrorCode = 1601 //重置任务失败
@ -403,6 +404,7 @@ var (
1503: "MainlinePreNotFound", 1503: "MainlinePreNotFound",
1504: "MainlineRepeatReward", 1504: "MainlineRepeatReward",
1505: "MainlineCompleteReward", 1505: "MainlineCompleteReward",
1506: "MainlineNoEnoughStar",
1600: "TaskInit", 1600: "TaskInit",
1601: "TaskReset", 1601: "TaskReset",
1602: "TaskHandle", 1602: "TaskHandle",
@ -645,6 +647,7 @@ var (
"MainlinePreNotFound": 1503, "MainlinePreNotFound": 1503,
"MainlineRepeatReward": 1504, "MainlineRepeatReward": 1504,
"MainlineCompleteReward": 1505, "MainlineCompleteReward": 1505,
"MainlineNoEnoughStar": 1506,
"TaskInit": 1600, "TaskInit": 1600,
"TaskReset": 1601, "TaskReset": 1601,
"TaskHandle": 1602, "TaskHandle": 1602,
@ -815,7 +818,7 @@ var File_errorcode_proto protoreflect.FileDescriptor
var file_errorcode_proto_rawDesc = []byte{ var file_errorcode_proto_rawDesc = []byte{
0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2a, 0xfd, 0x2a, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x6f, 0x2a, 0x98, 0x2b, 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, 0x11, 0x0a, 0x0d, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d,
0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12,
0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
@ -955,212 +958,213 @@ var file_errorcode_proto_rawDesc = []byte{
0x6e, 0x64, 0x10, 0xdf, 0x0b, 0x12, 0x19, 0x0a, 0x14, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 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, 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, 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, 0x0d, 0x0a, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe1, 0x0b, 0x12, 0x19, 0x0a,
0x08, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc0, 0x0c, 0x12, 0x0e, 0x0a, 0x09, 0x14, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67,
0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x10, 0xc1, 0x0c, 0x12, 0x0f, 0x0a, 0x0a, 0x68, 0x53, 0x74, 0x61, 0x72, 0x10, 0xe2, 0x0b, 0x12, 0x0d, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b,
0x54, 0x61, 0x73, 0x6b, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x10, 0xc2, 0x0c, 0x12, 0x11, 0x0a, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc0, 0x0c, 0x12, 0x0e, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x52,
0x0c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xc3, 0x0c, 0x65, 0x73, 0x65, 0x74, 0x10, 0xc1, 0x0c, 0x12, 0x0f, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x48,
0x12, 0x13, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x10, 0xc2, 0x0c, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b,
0x69, 0x74, 0x10, 0xc4, 0x0c, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xc3, 0x0c, 0x12, 0x13, 0x0a, 0x0e, 0x54,
0x69, 0x76, 0x65, 0x4e, 0x6f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xc5, 0x0c, 0x12, 0x17, 0x0a, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc4, 0x0c,
0x12, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x65, 0x6e, 0x6f, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f,
0x75, 0x67, 0x68, 0x10, 0xc6, 0x0c, 0x12, 0x13, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xc5, 0x0c, 0x12, 0x17, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b,
0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xc7, 0x0c, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xc6,
0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xc8, 0x0c, 0x12, 0x11, 0x0c, 0x12, 0x13, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73,
0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x61, 0x67, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xc9, 0x68, 0x65, 0x64, 0x10, 0xc7, 0x0c, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69,
0x0c, 0x12, 0x10, 0x0a, 0x0b, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xc8, 0x0c, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73,
0x10, 0xca, 0x0c, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x6b, 0x54, 0x61, 0x67, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xc9, 0x0c, 0x12, 0x10, 0x0a, 0x0b,
0x75, 0x6e, 0x64, 0x10, 0xcb, 0x0c, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x68, 0x6f, 0x70, 0x47, 0x6f, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xca, 0x0c, 0x12, 0x11,
0x6f, 0x64, 0x73, 0x49, 0x73, 0x53, 0x6f, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x10, 0xa4, 0x0d, 0x12, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xcb,
0x1c, 0x0a, 0x17, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x75, 0x72, 0x70, 0x6c, 0x75, 0x73, 0x0c, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x68, 0x6f, 0x70, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x73,
0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x4e, 0x75, 0x6d, 0x10, 0xa5, 0x0d, 0x12, 0x0c, 0x0a, 0x53, 0x6f, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x10, 0xa4, 0x0d, 0x12, 0x1c, 0x0a, 0x17, 0x53, 0x68,
0x07, 0x4d, 0x61, 0x69, 0x6c, 0x45, 0x72, 0x72, 0x10, 0x88, 0x0e, 0x12, 0x13, 0x0a, 0x0e, 0x50, 0x6f, 0x70, 0x4e, 0x6f, 0x53, 0x75, 0x72, 0x70, 0x6c, 0x75, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65,
0x61, 0x67, 0x6f, 0x64, 0x61, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xec, 0x0e, 0x73, 0x68, 0x4e, 0x75, 0x6d, 0x10, 0xa5, 0x0d, 0x12, 0x0c, 0x0a, 0x07, 0x4d, 0x61, 0x69, 0x6c,
0x12, 0x12, 0x0a, 0x0d, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x4c, 0x65, 0x76, 0x6c, 0x45, 0x72, 0x45, 0x72, 0x72, 0x10, 0x88, 0x0e, 0x12, 0x13, 0x0a, 0x0e, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61,
0x72, 0x10, 0xed, 0x0e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x47, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xec, 0x0e, 0x12, 0x12, 0x0a, 0x0d, 0x50,
0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x72, 0x72, 0x10, 0xee, 0x0e, 0x12, 0x17, 0x0a, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x4c, 0x65, 0x76, 0x6c, 0x45, 0x72, 0x72, 0x10, 0xed, 0x0e, 0x12,
0x12, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x17, 0x0a, 0x12, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61,
0x45, 0x72, 0x72, 0x10, 0xef, 0x0e, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x72, 0x64, 0x45, 0x72, 0x72, 0x10, 0xee, 0x0e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61, 0x67, 0x6f,
0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x4e, 0x6f, 0x74, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x64, 0x61, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x10, 0xef,
0x10, 0xd0, 0x0f, 0x12, 0x15, 0x0a, 0x10, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x0e, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c,
0x6c, 0x6c, 0x49, 0x6e, 0x55, 0x73, 0x65, 0x10, 0xd1, 0x0f, 0x12, 0x18, 0x0a, 0x13, 0x4d, 0x61, 0x4e, 0x6f, 0x74, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xd0, 0x0f, 0x12, 0x15,
0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x0a, 0x10, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x55,
0x64, 0x10, 0xd2, 0x0f, 0x12, 0x1a, 0x0a, 0x15, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x73, 0x65, 0x10, 0xd1, 0x0f, 0x12, 0x18, 0x0a, 0x13, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c,
0x61, 0x6c, 0x6c, 0x4e, 0x6f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xd3, 0x0f, 0x68, 0x61, 0x6c, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xd2, 0x0f, 0x12,
0x12, 0x19, 0x0a, 0x14, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x4d, 0x6f, 0x72, 0x65, 0x4f, 0x1a, 0x0a, 0x15, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x4e, 0x6f,
0x72, 0x64, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x10, 0xb5, 0x10, 0x12, 0x16, 0x0a, 0x11, 0x47, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xd3, 0x0f, 0x12, 0x19, 0x0a, 0x14, 0x47,
0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x4d, 0x6f, 0x72, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54,
0x10, 0xb6, 0x10, 0x12, 0x12, 0x0a, 0x0d, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x69, 0x6d, 0x65, 0x10, 0xb5, 0x10, 0x12, 0x16, 0x0a, 0x11, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65,
0x73, 0x68, 0x65, 0x64, 0x10, 0x99, 0x11, 0x12, 0x14, 0x0a, 0x0f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0xb6, 0x10, 0x12, 0x12,
0x55, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0x9a, 0x11, 0x12, 0x11, 0x0a, 0x0a, 0x0d, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10,
0x0c, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x10, 0x9b, 0x11, 0x99, 0x11, 0x12, 0x14, 0x0a, 0x0f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x55, 0x6e, 0x46, 0x69, 0x6e,
0x12, 0x12, 0x0a, 0x0d, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x65, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0x9a, 0x11, 0x12, 0x11, 0x0a, 0x0c, 0x52, 0x74, 0x61, 0x73,
0x64, 0x10, 0x9c, 0x11, 0x12, 0x15, 0x0a, 0x10, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x65, 0x6b, 0x4e, 0x6f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x10, 0x9b, 0x11, 0x12, 0x12, 0x0a, 0x0d, 0x52,
0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0x9d, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x10, 0x9c, 0x11, 0x12,
0x74, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x4e, 0x6f, 0x52, 0x65, 0x61, 0x63, 0x68, 0x15, 0x0a, 0x10, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x65, 0x4e, 0x6f, 0x46, 0x69, 0x6e,
0x10, 0x9e, 0x11, 0x12, 0x13, 0x0a, 0x0e, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x4c, 0x61, 0x69, 0x73, 0x68, 0x10, 0x9d, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x43,
0x73, 0x74, 0x4f, 0x6e, 0x65, 0x10, 0x9f, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x52, 0x74, 0x61, 0x73, 0x6f, 0x6e, 0x64, 0x69, 0x4e, 0x6f, 0x52, 0x65, 0x61, 0x63, 0x68, 0x10, 0x9e, 0x11, 0x12, 0x13,
0x6b, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xa0, 0x11, 0x0a, 0x0e, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x4c, 0x61, 0x73, 0x74, 0x4f, 0x6e, 0x65,
0x12, 0x10, 0x0a, 0x0b, 0x56, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x76, 0x45, 0x72, 0x72, 0x10, 0x10, 0x9f, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x64,
0xfd, 0x11, 0x12, 0x13, 0x0a, 0x0e, 0x56, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x6f, 0x73, 0x69, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xa0, 0x11, 0x12, 0x10, 0x0a, 0x0b, 0x56,
0x54, 0x79, 0x70, 0x65, 0x10, 0xfe, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x56, 0x69, 0x6b, 0x69, 0x6e, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x76, 0x45, 0x72, 0x72, 0x10, 0xfd, 0x11, 0x12, 0x13, 0x0a,
0x67, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xff, 0x11, 0x12, 0x0e, 0x56, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x10,
0x1c, 0x0a, 0x17, 0x56, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x6c, 0xfe, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x56, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x75, 0x79, 0x4d,
0x6c, 0x65, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x80, 0x12, 0x12, 0x1a, 0x0a, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xff, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x56, 0x69,
0x15, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x48, 0x61, 0x73, 0x45, 0x6b, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65,
0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x10, 0xe1, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x4d, 0x6f, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x80, 0x12, 0x12, 0x1a, 0x0a, 0x15, 0x4d, 0x6f, 0x6f, 0x6e,
0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x55, 0x70, 0x10, 0xe2, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x48, 0x61, 0x73, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65,
0x12, 0x12, 0x16, 0x0a, 0x11, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x64, 0x10, 0xe1, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74,
0x44, 0x61, 0x72, 0x65, 0x55, 0x70, 0x10, 0xe3, 0x12, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x6f, 0x6f, 0x61, 0x73, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x55, 0x70, 0x10, 0xe2, 0x12, 0x12, 0x16, 0x0a, 0x11,
0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x44, 0x61, 0x72, 0x65, 0x55,
0x45, 0x6e, 0x64, 0x10, 0xe4, 0x12, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x70, 0x10, 0xe3, 0x12, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74,
0x6e, 0x74, 0x61, 0x73, 0x79, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x57, 0x69, 0x6e, 0x61, 0x73, 0x79, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x45, 0x6e, 0x64, 0x10, 0xe4,
0x10, 0xe5, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x12, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79,
0x73, 0x79, 0x4e, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x10, 0xe6, 0x12, 0x12, 0x20, 0x0a, 0x1b, 0x4d, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x57, 0x69, 0x6e, 0x10, 0xe5, 0x12, 0x12, 0x16,
0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x0a, 0x11, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x4e, 0x6f, 0x4a,
0x75, 0x67, 0x68, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x73, 0x10, 0xe7, 0x12, 0x12, 0x18, 0x0a, 0x6f, 0x69, 0x6e, 0x10, 0xe6, 0x12, 0x12, 0x20, 0x0a, 0x1b, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61,
0x13, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x62, 0x61,
0x63, 0x6f, 0x72, 0x64, 0x10, 0xc5, 0x13, 0x12, 0x1a, 0x0a, 0x15, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x74, 0x6c, 0x65, 0x73, 0x10, 0xe7, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x42, 0x61, 0x74, 0x74,
0x74, 0x6f, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x6c, 0x65, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x10,
0x10, 0xa9, 0x14, 0x12, 0x17, 0x0a, 0x12, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x79, 0xc5, 0x13, 0x12, 0x1a, 0x0a, 0x15, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54,
0x4e, 0x6f, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0xaa, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xa9, 0x14, 0x12, 0x17,
0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x69, 0x73, 0x0a, 0x12, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x52, 0x65, 0x63,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xab, 0x14, 0x12, 0x1b, 0x0a, 0x65, 0x69, 0x76, 0x65, 0x10, 0xaa, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x4c, 0x69, 0x6e, 0x65, 0x73,
0x16, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x72, 0x4e, 0x6f, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0xac, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x4c, 0x69, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xab, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x4c, 0x69, 0x6e, 0x65,
0x6e, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x4e, 0x6f, 0x43, 0x6f, 0x6d, 0x70, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x4f, 0x70,
0x6c, 0x65, 0x74, 0x65, 0x10, 0xad, 0x14, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x75, 0x6e, 0x74, 0x69, 0x65, 0x6e, 0x10, 0xac, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f,
0x6e, 0x67, 0x4c, 0x76, 0x45, 0x72, 0x72, 0x10, 0x8d, 0x15, 0x12, 0x14, 0x0a, 0x0f, 0x48, 0x75, 0x72, 0x79, 0x50, 0x72, 0x65, 0x4e, 0x6f, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10,
0x6e, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x10, 0x8e, 0x15, 0xad, 0x14, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x76, 0x45,
0x12, 0x17, 0x0a, 0x12, 0x48, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x72, 0x72, 0x10, 0x8d, 0x15, 0x12, 0x14, 0x0a, 0x0f, 0x48, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67,
0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x8f, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x48, 0x75, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x10, 0x8e, 0x15, 0x12, 0x17, 0x0a, 0x12, 0x48,
0x74, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x90, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x75, 0x6e, 0x74, 0x74, 0x10, 0x8f, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x48, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x4d,
0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x61, 0x78, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x75, 0x6e, 0x74, 0x10, 0x91, 0x15, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x6e, 0x63, 0x68, 0x61, 0x6e, 0x10, 0x90, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x6f,
0x74, 0x4c, 0x76, 0x45, 0x72, 0x72, 0x10, 0x97, 0x15, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x6e, 0x63, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x91,
0x68, 0x61, 0x6e, 0x74, 0x42, 0x6f, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x10, 0x98, 0x15, 0x12, 0x15, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x6e, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x4c, 0x76, 0x45, 0x72,
0x17, 0x0a, 0x12, 0x45, 0x6e, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x72, 0x10, 0x97, 0x15, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x6e, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x42,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x99, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x45, 0x6e, 0x63, 0x68, 0x6f, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x10, 0x98, 0x15, 0x12, 0x17, 0x0a, 0x12, 0x45, 0x6e,
0x61, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x43, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x6f, 0x75, 0x6e, 0x74, 0x10, 0x9a, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x45, 0x6e, 0x63, 0x68, 0x61, 0x10, 0x99, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x45, 0x6e, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x4d, 0x61,
0x6e, 0x74, 0x4e, 0x6f, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x78, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10,
0x6e, 0x74, 0x10, 0x9b, 0x15, 0x12, 0x11, 0x0a, 0x0c, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x9a, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x45, 0x6e, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x4e, 0x6f, 0x43,
0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0xf1, 0x15, 0x12, 0x12, 0x0a, 0x0d, 0x4c, 0x69, 0x62, 0x72, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x9b, 0x15,
0x61, 0x72, 0x79, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10, 0xf2, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x12, 0x11, 0x0a, 0x0c, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x76,
0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x10, 0xf1, 0x15, 0x12, 0x12, 0x0a, 0x0d, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4e, 0x6f,
0x6e, 0x10, 0xf3, 0x15, 0x12, 0x12, 0x0a, 0x0d, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x52, 0x44, 0x61, 0x74, 0x61, 0x10, 0xf2, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x4c, 0x69, 0x62, 0x72, 0x61,
0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xf4, 0x15, 0x12, 0x14, 0x0a, 0x0f, 0x4c, 0x69, 0x62, 0x72, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xf3, 0x15, 0x12,
0x61, 0x72, 0x79, 0x4c, 0x76, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xf5, 0x15, 0x12, 0x1d, 0x12, 0x0a, 0x0d, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64,
0x0a, 0x18, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x46, 0x65, 0x74, 0x74, 0x65, 0x72, 0x54, 0x10, 0xf4, 0x15, 0x12, 0x14, 0x0a, 0x0f, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4c, 0x76,
0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xf6, 0x15, 0x12, 0x1d, 0x0a, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xf5, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x4c, 0x69, 0x62,
0x18, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x50, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x72, 0x61, 0x72, 0x79, 0x46, 0x65, 0x74, 0x74, 0x65, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f,
0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xf7, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xf6, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x4c, 0x69, 0x62, 0x72,
0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x50, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69,
0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xd5, 0x16, 0x12, 0x10, 0x0a, 0x0b, 0x42, 0x61, 0x74, 0x73, 0x68, 0x65, 0x64, 0x10, 0xf7, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x74, 0x6c,
0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x57, 0x69, 0x6e, 0x10, 0xd6, 0x16, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65,
0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xb8, 0x17, 0x64, 0x10, 0xd5, 0x16, 0x12, 0x10, 0x0a, 0x0b, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f,
0x12, 0x11, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x64, 0x64, 0x65, 0x64, 0x57, 0x69, 0x6e, 0x10, 0xd6, 0x16, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74,
0x10, 0xb9, 0x17, 0x12, 0x1b, 0x0a, 0x16, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x79, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xb8, 0x17, 0x12, 0x11, 0x0a, 0x0c, 0x53,
0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xba, 0x17, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0xb9, 0x17, 0x12, 0x1b,
0x12, 0x14, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x4d, 0x65, 0x6d, 0x0a, 0x16, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64,
0x62, 0x65, 0x72, 0x10, 0xbb, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xba, 0x17, 0x12, 0x14, 0x0a, 0x0f, 0x53,
0x79, 0x4e, 0x6f, 0x52, 0x69, 0x67, 0x68, 0x74, 0x10, 0xbc, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x10, 0xbb,
0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0xbd, 0x17, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x52, 0x69,
0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x67, 0x68, 0x74, 0x10, 0xbc, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74,
0x73, 0x73, 0x10, 0xbe, 0x17, 0x12, 0x10, 0x0a, 0x0b, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x79, 0x4e, 0x6f, 0x41, 0x64, 0x64, 0x65, 0x64, 0x10, 0xbd, 0x17, 0x12, 0x13, 0x0a, 0x0e, 0x53,
0x51, 0x75, 0x69, 0x74, 0x10, 0xbf, 0x17, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x10, 0xbe, 0x17,
0x74, 0x79, 0x41, 0x67, 0x72, 0x65, 0x65, 0x10, 0xc0, 0x17, 0x12, 0x12, 0x0a, 0x0d, 0x53, 0x6f, 0x12, 0x10, 0x0a, 0x0b, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x51, 0x75, 0x69, 0x74, 0x10,
0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x10, 0xc1, 0x17, 0x12, 0x16, 0xbf, 0x17, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x67, 0x72,
0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x72, 0x61, 0x65, 0x65, 0x10, 0xc0, 0x17, 0x12, 0x12, 0x0a, 0x0d, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79,
0x6d, 0x73, 0x10, 0xba, 0xea, 0x01, 0x12, 0x19, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x10, 0xc1, 0x17, 0x12, 0x16, 0x0a, 0x10, 0x53, 0x6f, 0x63,
0x79, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x44, 0x69, 0x73, 0x73, 0x10, 0xbb, 0xea, 0x69, 0x61, 0x74, 0x79, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x10, 0xba, 0xea,
0x01, 0x12, 0x17, 0x0a, 0x11, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x01, 0x12, 0x19, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4d, 0x61, 0x73, 0x74,
0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x10, 0xbc, 0xea, 0x01, 0x12, 0x14, 0x0a, 0x0e, 0x53, 0x6f, 0x65, 0x72, 0x4e, 0x6f, 0x44, 0x69, 0x73, 0x73, 0x10, 0xbb, 0xea, 0x01, 0x12, 0x17, 0x0a, 0x11,
0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x10, 0xbd, 0xea, 0x01, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f,
0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x62, 0x10, 0xbc, 0xea, 0x01, 0x12, 0x14, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79,
0x75, 0x73, 0x65, 0x10, 0xbe, 0xea, 0x01, 0x12, 0x11, 0x0a, 0x0b, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x10, 0xbd, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x53,
0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x10, 0xbf, 0xea, 0x01, 0x12, 0x13, 0x0a, 0x0d, 0x53, 0x6f, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x75, 0x73, 0x65, 0x10, 0xbe,
0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x10, 0xc0, 0xea, 0x01, 0x12, 0xea, 0x01, 0x12, 0x11, 0x0a, 0x0b, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x69, 0x67,
0x14, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x43, 0x44, 0x4c, 0x69, 0x6d, 0x69, 0x6e, 0x10, 0xbf, 0xea, 0x01, 0x12, 0x13, 0x0a, 0x0d, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79,
0x74, 0x10, 0xc1, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x10, 0xc0, 0xea, 0x01, 0x12, 0x14, 0x0a, 0x0e, 0x53, 0x6f,
0x41, 0x70, 0x70, 0x6c, 0x79, 0x4d, 0x61, 0x78, 0x10, 0xc2, 0xea, 0x01, 0x12, 0x18, 0x0a, 0x12, 0x63, 0x69, 0x61, 0x74, 0x79, 0x43, 0x44, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xc1, 0xea, 0x01,
0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x53, 0x65, 0x6c, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x79,
0x6e, 0x67, 0x10, 0xc3, 0xea, 0x01, 0x12, 0x1d, 0x0a, 0x17, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x4d, 0x61, 0x78, 0x10, 0xc2, 0xea, 0x01, 0x12, 0x18, 0x0a, 0x12, 0x53, 0x6f, 0x63, 0x69, 0x61,
0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x53, 0x65, 0x6c, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x10, 0xc3, 0xea,
0x74, 0x10, 0xc4, 0xea, 0x01, 0x12, 0x1b, 0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x01, 0x12, 0x1d, 0x0a, 0x17, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62,
0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xc5, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xc4, 0xea, 0x01,
0xea, 0x01, 0x12, 0x1a, 0x0a, 0x14, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x77, 0x12, 0x1b, 0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72,
0x61, 0x72, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0xc6, 0xea, 0x01, 0x12, 0x15, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xc5, 0xea, 0x01, 0x12, 0x1a, 0x0a,
0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x14, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65,
0x65, 0x10, 0xc7, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0xc6, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63,
0x42, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x54, 0x6f, 0x10, 0xc9, 0xea, 0x01, 0x12, 0x14, 0x0a, 0x0e, 0x69, 0x61, 0x74, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x10, 0xc7, 0xea, 0x01,
0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x10, 0xca, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x42, 0x65, 0x6c, 0x6f, 0x6e,
0xea, 0x01, 0x12, 0x1b, 0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, 0x70, 0x67, 0x54, 0x6f, 0x10, 0xc9, 0xea, 0x01, 0x12, 0x14, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x69, 0x61,
0x79, 0x4c, 0x76, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xcb, 0xea, 0x01, 0x12, 0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x10, 0xca, 0xea, 0x01, 0x12, 0x1b, 0x0a,
0x1b, 0x0a, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x56, 0x61, 0x15, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x70, 0x70, 0x79, 0x4c, 0x76, 0x4e, 0x6f,
0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xcc, 0xea, 0x01, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xcb, 0xea, 0x01, 0x12, 0x1b, 0x0a, 0x15, 0x53, 0x6f,
0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x63, 0x69, 0x61, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xcd, 0xea, 0x01, 0x12, 0x1c, 0x0a, 0x16, 0x53, 0x69, 0x6f, 0x6e, 0x10, 0xcc, 0xea, 0x01, 0x12, 0x1d, 0x0a, 0x17, 0x53, 0x6f, 0x63, 0x69, 0x61,
0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x41, 0x63, 0x69, 0x74, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x45, 0x6e, 0x6f, 0x75,
0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0xce, 0xea, 0x01, 0x12, 0x16, 0x0a, 0x10, 0x53, 0x6f, 0x63, 0x67, 0x68, 0x10, 0xcd, 0xea, 0x01, 0x12, 0x1c, 0x0a, 0x16, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74,
0x69, 0x61, 0x74, 0x79, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x10, 0xcf, 0xea, 0x79, 0x41, 0x63, 0x69, 0x74, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
0x01, 0x12, 0x16, 0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x10, 0xce, 0xea, 0x01, 0x12, 0x16, 0x0a, 0x10, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x44,
0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xd0, 0xea, 0x01, 0x12, 0x1a, 0x0a, 0x14, 0x53, 0x6f, 0x63, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x10, 0xcf, 0xea, 0x01, 0x12, 0x16, 0x0a, 0x10,
0x69, 0x61, 0x74, 0x79, 0x51, 0x75, 0x69, 0x74, 0x4e, 0x6f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74,
0x64, 0x10, 0xd1, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x10, 0xd0, 0xea, 0x01, 0x12, 0x1a, 0x0a, 0x14, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x51,
0x4e, 0x6f, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x10, 0xd2, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x75, 0x69, 0x74, 0x4e, 0x6f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0xd1, 0xea, 0x01,
0x41, 0x72, 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x75, 0x79, 0x55, 0x70, 0x12, 0x15, 0x0a, 0x0f, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x79, 0x4e, 0x6f, 0x4d, 0x61, 0x73,
0x10, 0x9d, 0x18, 0x12, 0x19, 0x0a, 0x14, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x74, 0x65, 0x72, 0x10, 0xd2, 0xea, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x41, 0x72, 0x65, 0x6e, 0x61,
0x65, 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x9e, 0x18, 0x12, 0x17, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x75, 0x79, 0x55, 0x70, 0x10, 0x9d, 0x18, 0x12, 0x19,
0x0a, 0x12, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x70, 0x63, 0x0a, 0x14, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x6f, 0x74,
0x49, 0x6e, 0x43, 0x64, 0x10, 0x9f, 0x18, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x9e, 0x18, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x72, 0x65,
0x74, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x10, 0x81, 0x19, 0x12, 0x6e, 0x61, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x70, 0x63, 0x49, 0x6e, 0x43, 0x64, 0x10,
0x12, 0x0a, 0x0d, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x44, 0x61, 0x74, 0x61, 0x9f, 0x18, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x65,
0x10, 0x82, 0x19, 0x12, 0x19, 0x0a, 0x14, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x4c, 0x61, 0x74, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x10, 0x81, 0x19, 0x12, 0x12, 0x0a, 0x0d, 0x54, 0x61,
0x6f, 0x63, 0x6b, 0x65, 0x72, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x10, 0x83, 0x19, 0x12, 0x15, 0x6c, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x44, 0x61, 0x74, 0x61, 0x10, 0x82, 0x19, 0x12, 0x19,
0x0a, 0x10, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x0a, 0x14, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x72,
0x74, 0x65, 0x10, 0x84, 0x19, 0x12, 0x10, 0x0a, 0x0b, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x42, 0x75, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x10, 0x83, 0x19, 0x12, 0x15, 0x0a, 0x10, 0x54, 0x61, 0x6c,
0x79, 0x4d, 0x61, 0x78, 0x10, 0xe5, 0x19, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0x84, 0x19,
0x53, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x10, 0xe6, 0x19, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x72, 0x12, 0x10, 0x0a, 0x0b, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x10,
0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xe5, 0x19, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x53, 0x65, 0x6c, 0x6c, 0x4d,
0xe7, 0x19, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x49, 0x74, 0x61, 0x78, 0x10, 0xe6, 0x19, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x4d, 0x61,
0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xe8, 0x19, 0x12, 0x18, 0x0a, 0x13, 0x54, 0x72, 0x78, 0x53, 0x65, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xe7, 0x19, 0x12, 0x16, 0x0a,
0x6f, 0x6c, 0x6c, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x11, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75,
0x64, 0x10, 0xe9, 0x19, 0x12, 0x19, 0x0a, 0x14, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x6e, 0x74, 0x10, 0xe8, 0x19, 0x12, 0x18, 0x0a, 0x13, 0x54, 0x72, 0x6f, 0x6c, 0x6c, 0x52, 0x65,
0x65, 0x4e, 0x6f, 0x74, 0x54, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x4f, 0x6e, 0x10, 0xc9, 0x1a, 0x12, 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, 0x52, 0x65, 0x73, 0x74, 0x19, 0x0a, 0x14, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x4e, 0x6f, 0x74, 0x54,
0x43, 0x44, 0x4e, 0x6f, 0x45, 0x6e, 0x64, 0x10, 0xca, 0x1a, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x72, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x4f, 0x6e, 0x10, 0xc9, 0x1a, 0x12, 0x19, 0x0a, 0x14, 0x48, 0x6f,
0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x43, 0x44, 0x4e, 0x6f, 0x45,
0xad, 0x1b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x52, 0x6e, 0x64, 0x10, 0xca, 0x1a, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65,
0x65, 0x6e, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x10, 0xae, 0x1b, 0x12, 0x0f, 0x0a, 0x0a, 0x56, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xad, 0x1b, 0x12, 0x17, 0x0a,
0x69, 0x70, 0x4c, 0x76, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xaf, 0x1b, 0x12, 0x11, 0x0a, 0x0c, 0x12, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x54,
0x56, 0x69, 0x70, 0x47, 0x69, 0x66, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xb0, 0x1b, 0x12, 0x69, 0x6d, 0x65, 0x10, 0xae, 0x1b, 0x12, 0x0f, 0x0a, 0x0a, 0x56, 0x69, 0x70, 0x4c, 0x76, 0x45,
0x11, 0x0a, 0x0c, 0x56, 0x69, 0x70, 0x42, 0x75, 0x79, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x10, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xaf, 0x1b, 0x12, 0x11, 0x0a, 0x0c, 0x56, 0x69, 0x70, 0x47, 0x69,
0xb1, 0x1b, 0x12, 0x14, 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x66, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xb0, 0x1b, 0x12, 0x11, 0x0a, 0x0c, 0x56, 0x69,
0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x91, 0x1c, 0x12, 0x17, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x77, 0x70, 0x42, 0x75, 0x79, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x10, 0xb1, 0x1b, 0x12, 0x14, 0x0a,
0x74, 0x61, 0x73, 0x6b, 0x41, 0x64, 0x76, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x92, 0x0f, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
0x1c, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4e, 0x75, 0x6d, 0x4e, 0x6f, 0x10, 0x91, 0x1c, 0x12, 0x17, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x61, 0x73, 0x6b, 0x41,
0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xf5, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x64, 0x76, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x92, 0x1c, 0x12, 0x17, 0x0a, 0x12,
0x79, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x10, 0xf6, 0x1c, 0x50, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4e, 0x75, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75,
0x12, 0x16, 0x0a, 0x11, 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x67, 0x68, 0x10, 0xf5, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x52, 0x65, 0x6e, 0x65,
0x6c, 0x65, 0x74, 0x65, 0x64, 0x10, 0xf7, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6c, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x10, 0xf6, 0x1c, 0x12, 0x16, 0x0a, 0x11, 0x50,
0x64, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0xd9, 0x1d, 0x12, 0x19, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64,
0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x76, 0x4e, 0x6f, 0x74, 0x10, 0xf7, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b,
0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xda, 0x1d, 0x12, 0x16, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0xd9, 0x1d, 0x12, 0x19, 0x0a, 0x14, 0x57, 0x6f, 0x72,
0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x10, 0xdb, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x76, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67,
0x1d, 0x12, 0x18, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x68, 0x10, 0xda, 0x1d, 0x12, 0x16, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73,
0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0xdc, 0x1d, 0x12, 0x15, 0x0a, 0x10, 0x57, 0x6b, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x10, 0xdb, 0x1d, 0x12, 0x18, 0x0a, 0x13,
0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x68, 0x65, 0x64, 0x10, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x43, 0x6f, 0x6d, 0x70, 0x6c,
0xdd, 0x1d, 0x12, 0x1c, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x65, 0x74, 0x65, 0x10, 0xdc, 0x1d, 0x12, 0x15, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74,
0x61, 0x73, 0x74, 0x55, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xde, 0x1d, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x68, 0x65, 0x64, 0x10, 0xdd, 0x1d, 0x12, 0x1c, 0x0a,
0x12, 0x1e, 0x0a, 0x19, 0x41, 0x63, 0x61, 0x64, 0x65, 0x6d, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x17, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x6e,
0x6f, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x10, 0xbd, 0x1e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xde, 0x1d, 0x12, 0x1e, 0x0a, 0x19, 0x41,
0x12, 0x15, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x63, 0x61, 0x64, 0x65, 0x6d, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x43, 0x6f, 0x6d, 0x70,
0x44, 0x61, 0x74, 0x61, 0x10, 0xa1, 0x1f, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x10, 0xbd, 0x1e, 0x12, 0x15, 0x0a, 0x10, 0x41,
0x61, 0x74, 0x74, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x72, 0x72, 0x10, 0xa2, 0x75, 0x74, 0x6f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10,
0x1f, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa1, 0x1f, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65,
0x33, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x72, 0x72, 0x10, 0xa2, 0x1f, 0x42, 0x06, 0x5a, 0x04,
0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

View File

@ -27,11 +27,11 @@ type DBMline struct {
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID 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" bson:"uid"` //用户ID Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID
CType int32 `protobuf:"varint,3,opt,name=cType,proto3" json:"cType" bson:"cType"` //章节ID CType int32 `protobuf:"varint,3,opt,name=cType,proto3" json:"cType" bson:"cType"` //章节类型
ChapterId int32 `protobuf:"varint,4,opt,name=chapterId,proto3" json:"chapterId" bson:"chapterId"` //章节ID ChapterId int32 `protobuf:"varint,4,opt,name=chapterId,proto3" json:"chapterId" bson:"chapterId"` //章节ID
StageId int32 `protobuf:"varint,5,opt,name=stageId,proto3" json:"stageId" bson:"stageId"` //主线关卡ID StageId int32 `protobuf:"varint,5,opt,name=stageId,proto3" json:"stageId" bson:"stageId"` //主线关卡ID
Star map[int32]int32 `protobuf:"bytes,6,rep,name=star,proto3" json:"star" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 关卡对应的星级 (key 关卡ID value 星数) Star map[int32]int32 `protobuf:"bytes,6,rep,name=star,proto3" json:"star" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 关卡对应的星级 (key 关卡ID value 星数)
Awared map[int32]bool `protobuf:"bytes,7,rep,name=awared,proto3" json:"awared" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"awared"` //(key 配置表星级) Award map[int32]bool `protobuf:"bytes,7,rep,name=award,proto3" json:"award" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"award"` //(key 配置表星级)
Ps map[int32]int32 `protobuf:"bytes,8,rep,name=ps,proto3" json:"ps" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 预扣的体力 Ps map[int32]int32 `protobuf:"bytes,8,rep,name=ps,proto3" json:"ps" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 预扣的体力
} }
@ -109,9 +109,9 @@ func (x *DBMline) GetStar() map[int32]int32 {
return nil return nil
} }
func (x *DBMline) GetAwared() map[int32]bool { func (x *DBMline) GetAward() map[int32]bool {
if x != nil { if x != nil {
return x.Awared return x.Award
} }
return nil return nil
} }
@ -127,7 +127,7 @@ var File_mline_mline_db_proto protoreflect.FileDescriptor
var file_mline_mline_db_proto_rawDesc = []byte{ var file_mline_mline_db_proto_rawDesc = []byte{
0x0a, 0x14, 0x6d, 0x6c, 0x69, 0x6e, 0x65, 0x2f, 0x6d, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x64, 0x62, 0x0a, 0x14, 0x6d, 0x6c, 0x69, 0x6e, 0x65, 0x2f, 0x6d, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x64, 0x62,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9c, 0x03, 0x0a, 0x07, 0x44, 0x42, 0x4d, 0x6c, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x98, 0x03, 0x0a, 0x07, 0x44, 0x42, 0x4d, 0x6c, 0x69,
0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6e, 0x65, 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, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20,
@ -137,24 +137,24 @@ var file_mline_mline_db_proto_rawDesc = []byte{
0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65,
0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x12, 0x2e, 0x44, 0x42, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x45, 0x32, 0x12, 0x2e, 0x44, 0x42, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x12, 0x2c, 0x0a, 0x06, 0x61, 0x77, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x12, 0x29, 0x0a, 0x05, 0x61, 0x77,
0x61, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x44, 0x42, 0x4d, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x44, 0x42, 0x4d, 0x6c,
0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05,
0x52, 0x06, 0x61, 0x77, 0x61, 0x72, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x02, 0x70, 0x73, 0x18, 0x08, 0x61, 0x77, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x02, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x44, 0x42, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x0b, 0x32, 0x10, 0x2e, 0x44, 0x42, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x73, 0x45, 0x6e,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x02, 0x70, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x53, 0x74, 0x74, 0x72, 0x79, 0x52, 0x02, 0x70, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x45,
0x61, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x41, 0x77, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x35, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x35, 0x0a, 0x07, 0x50, 0x73,
0x0a, 0x07, 0x50, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x72, 0x6f, 0x74, 0x6f, 0x33, 0x33,
} }
var ( var (
@ -173,12 +173,12 @@ var file_mline_mline_db_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_mline_mline_db_proto_goTypes = []interface{}{ var file_mline_mline_db_proto_goTypes = []interface{}{
(*DBMline)(nil), // 0: DBMline (*DBMline)(nil), // 0: DBMline
nil, // 1: DBMline.StarEntry nil, // 1: DBMline.StarEntry
nil, // 2: DBMline.AwaredEntry nil, // 2: DBMline.AwardEntry
nil, // 3: DBMline.PsEntry nil, // 3: DBMline.PsEntry
} }
var file_mline_mline_db_proto_depIdxs = []int32{ var file_mline_mline_db_proto_depIdxs = []int32{
1, // 0: DBMline.star:type_name -> DBMline.StarEntry 1, // 0: DBMline.star:type_name -> DBMline.StarEntry
2, // 1: DBMline.awared:type_name -> DBMline.AwaredEntry 2, // 1: DBMline.award:type_name -> DBMline.AwardEntry
3, // 2: DBMline.ps:type_name -> DBMline.PsEntry 3, // 2: DBMline.ps:type_name -> DBMline.PsEntry
3, // [3:3] is the sub-list for method output_type 3, // [3:3] is the sub-list for method output_type
3, // [3:3] is the sub-list for method input_type 3, // [3:3] is the sub-list for method input_type

View File

@ -178,6 +178,7 @@ type MlineGetRewardResp struct {
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Data *DBMline `protobuf:"bytes,1,opt,name=data,proto3" json:"data"` //当前章节信息 Data *DBMline `protobuf:"bytes,1,opt,name=data,proto3" json:"data"` //当前章节信息
Reward []*UserAssets `protobuf:"bytes,2,rep,name=reward,proto3" json:"reward"` // 奖励
} }
func (x *MlineGetRewardResp) Reset() { func (x *MlineGetRewardResp) Reset() {
@ -219,6 +220,13 @@ func (x *MlineGetRewardResp) GetData() *DBMline {
return nil return nil
} }
func (x *MlineGetRewardResp) GetReward() []*UserAssets {
if x != nil {
return x.Reward
}
return nil
}
// 挑战关卡 // 挑战关卡
type MlineChallengeReq struct { type MlineChallengeReq struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -392,6 +400,7 @@ type MlineChallengeOverResp struct {
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Data *DBMline `protobuf:"bytes,1,opt,name=data,proto3" json:"data"` //当前章节信息 Data *DBMline `protobuf:"bytes,1,opt,name=data,proto3" json:"data"` //当前章节信息
Reward []*UserAssets `protobuf:"bytes,2,rep,name=reward,proto3" json:"reward"` // 奖励
} }
func (x *MlineChallengeOverResp) Reset() { func (x *MlineChallengeOverResp) Reset() {
@ -433,6 +442,116 @@ func (x *MlineChallengeOverResp) GetData() *DBMline {
return nil return nil
} }
func (x *MlineChallengeOverResp) GetReward() []*UserAssets {
if x != nil {
return x.Reward
}
return nil
}
// 扫荡关卡
type MlineCleanStageReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
StageId int32 `protobuf:"varint,1,opt,name=stageId,proto3" json:"stageId"` // 小关ID
}
func (x *MlineCleanStageReq) Reset() {
*x = MlineCleanStageReq{}
if protoimpl.UnsafeEnabled {
mi := &file_mline_mline_msg_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MlineCleanStageReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MlineCleanStageReq) ProtoMessage() {}
func (x *MlineCleanStageReq) ProtoReflect() protoreflect.Message {
mi := &file_mline_mline_msg_proto_msgTypes[8]
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 MlineCleanStageReq.ProtoReflect.Descriptor instead.
func (*MlineCleanStageReq) Descriptor() ([]byte, []int) {
return file_mline_mline_msg_proto_rawDescGZIP(), []int{8}
}
func (x *MlineCleanStageReq) GetStageId() int32 {
if x != nil {
return x.StageId
}
return 0
}
type MlineCleanStageResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
StageId int32 `protobuf:"varint,1,opt,name=stageId,proto3" json:"stageId"` // 小关ID
Reward []*UserAssets `protobuf:"bytes,2,rep,name=reward,proto3" json:"reward"` // 奖励
}
func (x *MlineCleanStageResp) Reset() {
*x = MlineCleanStageResp{}
if protoimpl.UnsafeEnabled {
mi := &file_mline_mline_msg_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MlineCleanStageResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MlineCleanStageResp) ProtoMessage() {}
func (x *MlineCleanStageResp) ProtoReflect() protoreflect.Message {
mi := &file_mline_mline_msg_proto_msgTypes[9]
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 MlineCleanStageResp.ProtoReflect.Descriptor instead.
func (*MlineCleanStageResp) Descriptor() ([]byte, []int) {
return file_mline_mline_msg_proto_rawDescGZIP(), []int{9}
}
func (x *MlineCleanStageResp) GetStageId() int32 {
if x != nil {
return x.StageId
}
return 0
}
func (x *MlineCleanStageResp) GetReward() []*UserAssets {
if x != nil {
return x.Reward
}
return nil
}
var File_mline_mline_msg_proto protoreflect.FileDescriptor var File_mline_mline_msg_proto protoreflect.FileDescriptor
var file_mline_mline_msg_proto_rawDesc = []byte{ var file_mline_mline_msg_proto_rawDesc = []byte{
@ -440,40 +559,54 @@ var file_mline_mline_msg_proto_rawDesc = []byte{
0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x6d, 0x6c, 0x69, 0x6e, 0x65, 0x2f, 0x6d, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x6d, 0x6c, 0x69, 0x6e, 0x65, 0x2f, 0x6d,
0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x62, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x62,
0x61, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x6d, 0x73, 0x67, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x6d, 0x73, 0x67,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x27, 0x0a, 0x0f, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x54, 0x79, 0x74, 0x6f, 0x22, 0x27, 0x0a, 0x0f, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x4c, 0x69,
0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, 0x22, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01,
0x30, 0x0a, 0x10, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, 0x22, 0x30, 0x0a, 0x10, 0x4d,
0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12,
0x0b, 0x32, 0x08, 0x2e, 0x44, 0x42, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e,
0x61, 0x22, 0x39, 0x0a, 0x11, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x44, 0x42, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x39, 0x0a,
0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x49, 0x64, 0x18, 0x01, 0x20, 0x11, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52,
0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x22, 0x32, 0x0a, 0x12, 0x03, 0x63, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01,
0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x22, 0x57, 0x0a, 0x12, 0x4d, 0x6c, 0x69, 0x6e,
0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c,
0x32, 0x08, 0x2e, 0x44, 0x42, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
0x22, 0x57, 0x0a, 0x11, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e,
0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12,
0x28, 0x0a, 0x06, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x10, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x06, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x22, 0x4f, 0x0a, 0x12, 0x4d, 0x6c, 0x69,
0x6e, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12,
0x1f, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f,
0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x05, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x15, 0x4d, 0x6c,
0x69, 0x6e, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4f, 0x76, 0x65, 0x72,
0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a,
0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e,
0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x72, 0x65,
0x70, 0x6f, 0x72, 0x74, 0x22, 0x36, 0x0a, 0x16, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x68, 0x61,
0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c,
0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x44,
0x42, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x5a, 0x04, 0x42, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x06,
0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x55,
0x73, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72,
0x64, 0x22, 0x57, 0x0a, 0x11, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65,
0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64,
0x12, 0x28, 0x0a, 0x06, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x10, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x52, 0x06, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x22, 0x4f, 0x0a, 0x12, 0x4d, 0x6c,
0x69, 0x6e, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
0x12, 0x1f, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b,
0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66,
0x6f, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x15, 0x4d,
0x6c, 0x69, 0x6e, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4f, 0x76, 0x65,
0x72, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x25,
0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d,
0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x72,
0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x5b, 0x0a, 0x16, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x68,
0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12,
0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e,
0x44, 0x42, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a,
0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
0x55, 0x73, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61,
0x72, 0x64, 0x22, 0x2e, 0x0a, 0x12, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x65, 0x61, 0x6e,
0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x67,
0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65,
0x49, 0x64, 0x22, 0x54, 0x0a, 0x13, 0x4d, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x65, 0x61, 0x6e,
0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61,
0x67, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67,
0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73,
0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -488,7 +621,7 @@ func file_mline_mline_msg_proto_rawDescGZIP() []byte {
return file_mline_mline_msg_proto_rawDescData return file_mline_mline_msg_proto_rawDescData
} }
var file_mline_mline_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_mline_mline_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_mline_mline_msg_proto_goTypes = []interface{}{ var file_mline_mline_msg_proto_goTypes = []interface{}{
(*MlineGetListReq)(nil), // 0: MlineGetListReq (*MlineGetListReq)(nil), // 0: MlineGetListReq
(*MlineGetListResp)(nil), // 1: MlineGetListResp (*MlineGetListResp)(nil), // 1: MlineGetListResp
@ -498,23 +631,29 @@ var file_mline_mline_msg_proto_goTypes = []interface{}{
(*MlineChallengeResp)(nil), // 5: MlineChallengeResp (*MlineChallengeResp)(nil), // 5: MlineChallengeResp
(*MlineChallengeOverReq)(nil), // 6: MlineChallengeOverReq (*MlineChallengeOverReq)(nil), // 6: MlineChallengeOverReq
(*MlineChallengeOverResp)(nil), // 7: MlineChallengeOverResp (*MlineChallengeOverResp)(nil), // 7: MlineChallengeOverResp
(*DBMline)(nil), // 8: DBMline (*MlineCleanStageReq)(nil), // 8: MlineCleanStageReq
(*BattleFormation)(nil), // 9: BattleFormation (*MlineCleanStageResp)(nil), // 9: MlineCleanStageResp
(*BattleInfo)(nil), // 10: BattleInfo (*DBMline)(nil), // 10: DBMline
(*BattleReport)(nil), // 11: BattleReport (*UserAssets)(nil), // 11: UserAssets
(*BattleFormation)(nil), // 12: BattleFormation
(*BattleInfo)(nil), // 13: BattleInfo
(*BattleReport)(nil), // 14: BattleReport
} }
var file_mline_mline_msg_proto_depIdxs = []int32{ var file_mline_mline_msg_proto_depIdxs = []int32{
8, // 0: MlineGetListResp.data:type_name -> DBMline 10, // 0: MlineGetListResp.data:type_name -> DBMline
8, // 1: MlineGetRewardResp.data:type_name -> DBMline 10, // 1: MlineGetRewardResp.data:type_name -> DBMline
9, // 2: MlineChallengeReq.battle:type_name -> BattleFormation 11, // 2: MlineGetRewardResp.reward:type_name -> UserAssets
10, // 3: MlineChallengeResp.info:type_name -> BattleInfo 12, // 3: MlineChallengeReq.battle:type_name -> BattleFormation
11, // 4: MlineChallengeOverReq.report:type_name -> BattleReport 13, // 4: MlineChallengeResp.info:type_name -> BattleInfo
8, // 5: MlineChallengeOverResp.data:type_name -> DBMline 14, // 5: MlineChallengeOverReq.report:type_name -> BattleReport
6, // [6:6] is the sub-list for method output_type 10, // 6: MlineChallengeOverResp.data:type_name -> DBMline
6, // [6:6] is the sub-list for method input_type 11, // 7: MlineChallengeOverResp.reward:type_name -> UserAssets
6, // [6:6] is the sub-list for extension type_name 11, // 8: MlineCleanStageResp.reward:type_name -> UserAssets
6, // [6:6] is the sub-list for extension extendee 9, // [9:9] is the sub-list for method output_type
0, // [0:6] is the sub-list for field type_name 9, // [9:9] is the sub-list for method input_type
9, // [9:9] is the sub-list for extension type_name
9, // [9:9] is the sub-list for extension extendee
0, // [0:9] is the sub-list for field type_name
} }
func init() { file_mline_mline_msg_proto_init() } func init() { file_mline_mline_msg_proto_init() }
@ -524,6 +663,7 @@ func file_mline_mline_msg_proto_init() {
} }
file_mline_mline_db_proto_init() file_mline_mline_db_proto_init()
file_battle_battle_msg_proto_init() file_battle_battle_msg_proto_init()
file_comm_proto_init()
if !protoimpl.UnsafeEnabled { if !protoimpl.UnsafeEnabled {
file_mline_mline_msg_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { file_mline_mline_msg_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MlineGetListReq); i { switch v := v.(*MlineGetListReq); i {
@ -621,6 +761,30 @@ func file_mline_mline_msg_proto_init() {
return nil return nil
} }
} }
file_mline_mline_msg_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MlineCleanStageReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_mline_mline_msg_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MlineCleanStageResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
} }
type x struct{} type x struct{}
out := protoimpl.TypeBuilder{ out := protoimpl.TypeBuilder{
@ -628,7 +792,7 @@ func file_mline_mline_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_mline_mline_msg_proto_rawDesc, RawDescriptor: file_mline_mline_msg_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 8, NumMessages: 10,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View File

@ -24,6 +24,7 @@ import (
"go_dreamfactory/modules/mail" "go_dreamfactory/modules/mail"
"go_dreamfactory/modules/mainline" "go_dreamfactory/modules/mainline"
"go_dreamfactory/modules/martialhall" "go_dreamfactory/modules/martialhall"
"go_dreamfactory/modules/mline"
"go_dreamfactory/modules/moonfantasy" "go_dreamfactory/modules/moonfantasy"
"go_dreamfactory/modules/notify" "go_dreamfactory/modules/notify"
"go_dreamfactory/modules/pagoda" "go_dreamfactory/modules/pagoda"
@ -108,7 +109,7 @@ func main() {
reddot.NewModule(), reddot.NewModule(),
combat.NewModule(), combat.NewModule(),
enchant.NewModule(), enchant.NewModule(),
//autoBattle.NewModule(), mline.NewModule(),
) )
} }

View File

@ -13,7 +13,6 @@ import "errors"
type GameGuildTaskData struct { type GameGuildTaskData struct {
TypeId int32 TypeId int32
IdList int32 IdList int32
Weight int32
JumpInterface int32 JumpInterface int32
TaskDisplay string TaskDisplay string
Reward []*Gameatn Reward []*Gameatn
@ -30,7 +29,6 @@ func (*GameGuildTaskData) GetTypeId() int32 {
func (_v *GameGuildTaskData)Deserialize(_buf map[string]interface{}) (err error) { func (_v *GameGuildTaskData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type_id"].(float64); !_ok_ { err = errors.New("type_id error"); return }; _v.TypeId = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type_id"].(float64); !_ok_ { err = errors.New("type_id error"); return }; _v.TypeId = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_list"].(float64); !_ok_ { err = errors.New("id_list error"); return }; _v.IdList = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_list"].(float64); !_ok_ { err = errors.New("id_list error"); return }; _v.IdList = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["weight"].(float64); !_ok_ { err = errors.New("weight error"); return }; _v.Weight = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["jump_interface"].(float64); !_ok_ { err = errors.New("jump_interface error"); return }; _v.JumpInterface = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["jump_interface"].(float64); !_ok_ { err = errors.New("jump_interface error"); return }; _v.JumpInterface = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["task_display"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.TaskDisplay error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.TaskDisplay, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["task_display"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.TaskDisplay error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.TaskDisplay, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ {

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 GameMainChapter struct {
_dataMap map[int32]*GameMainChapterData
_dataList []*GameMainChapterData
}
func NewGameMainChapter(_buf []map[string]interface{}) (*GameMainChapter, error) {
_dataList := make([]*GameMainChapterData, 0, len(_buf))
dataMap := make(map[int32]*GameMainChapterData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameMainChapterData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameMainChapter{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameMainChapter) GetDataMap() map[int32]*GameMainChapterData {
return table._dataMap
}
func (table *GameMainChapter) GetDataList() []*GameMainChapterData {
return table._dataList
}
func (table *GameMainChapter) Get(key int32) *GameMainChapterData {
return table._dataMap[key]
}

View File

@ -0,0 +1,49 @@
//------------------------------------------------------------------------------
// <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 GameMainChapterData struct {
Id int32
Name string
ChapterType int32
Map string
Camera string
Title string
Desc string
Starreward int32
}
const TypeId_GameMainChapterData = 2014963746
func (*GameMainChapterData) GetTypeId() int32 {
return 2014963746
}
func (_v *GameMainChapterData)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; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Name, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["chapter_type"].(float64); !_ok_ { err = errors.New("chapter_type error"); return }; _v.ChapterType = int32(_tempNum_) }
{ var _ok_ bool; if _v.Map, _ok_ = _buf["map"].(string); !_ok_ { err = errors.New("map error"); return } }
{ var _ok_ bool; if _v.Camera, _ok_ = _buf["camera"].(string); !_ok_ { err = errors.New("camera error"); return } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["title"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Title error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Title, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["desc"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Desc error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Desc, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["starreward"].(float64); !_ok_ { err = errors.New("starreward error"); return }; _v.Starreward = int32(_tempNum_) }
return
}
func DeserializeGameMainChapterData(_buf map[string]interface{}) (*GameMainChapterData, error) {
v := &GameMainChapterData{}
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 GameMainStage struct {
_dataMap map[int32]*GameMainStageData
_dataList []*GameMainStageData
}
func NewGameMainStage(_buf []map[string]interface{}) (*GameMainStage, error) {
_dataList := make([]*GameMainStageData, 0, len(_buf))
dataMap := make(map[int32]*GameMainStageData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameMainStageData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameMainStage{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameMainStage) GetDataMap() map[int32]*GameMainStageData {
return table._dataMap
}
func (table *GameMainStage) GetDataList() []*GameMainStageData {
return table._dataList
}
func (table *GameMainStage) Get(key int32) *GameMainStageData {
return table._dataMap[key]
}

View File

@ -0,0 +1,185 @@
//------------------------------------------------------------------------------
// <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"
import "bright/serialization"
type GameMainStageData struct {
Id int32
Chapterid int32
Previoustage int32
Episodetype int32
Openlevel int32
Episodelocation serialization.Vector3
MainlineName string
Title string
Desc string
Exp int32
HeroExp int32
PsConsume []*Gameatn
PsMg []*Gameatn
Firstaward []*Gameatn
Commonaward []*Gameatn
FormatList []int32
CaptainId int32
Star []int32
StarType []int32
StarValue []int32
}
const TypeId_GameMainStageData = -1084910317
func (*GameMainStageData) GetTypeId() int32 {
return -1084910317
}
func (_v *GameMainStageData)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; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["chapterid"].(float64); !_ok_ { err = errors.New("chapterid error"); return }; _v.Chapterid = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["previoustage"].(float64); !_ok_ { err = errors.New("previoustage error"); return }; _v.Previoustage = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Episodetype"].(float64); !_ok_ { err = errors.New("Episodetype error"); return }; _v.Episodetype = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["openlevel"].(float64); !_ok_ { err = errors.New("openlevel error"); return }; _v.Openlevel = int32(_tempNum_) }
{ var _ok_ bool; var _v_ map[string]interface{}; if _v_, _ok_ = _buf["Episodelocation"].(map[string]interface{}); !_ok_ { err = errors.New("Episodelocation 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.Episodelocation = serialization.NewVector3(_x_, _y_, _z_)
}
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["mainlineName"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.MainlineName error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.MainlineName, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["title"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Title error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Title, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["desc"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Desc error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Desc, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["exp"].(float64); !_ok_ { err = errors.New("exp error"); return }; _v.Exp = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["hero_exp"].(float64); !_ok_ { err = errors.New("hero_exp error"); return }; _v.HeroExp = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["ps_consume"].([]interface{}); !_ok_ { err = errors.New("ps_consume error"); return }
_v.PsConsume = 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.PsConsume = append(_v.PsConsume, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["ps_mg"].([]interface{}); !_ok_ { err = errors.New("ps_mg error"); return }
_v.PsMg = 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.PsMg = append(_v.PsMg, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["firstaward"].([]interface{}); !_ok_ { err = errors.New("firstaward error"); return }
_v.Firstaward = 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.Firstaward = append(_v.Firstaward, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["commonaward"].([]interface{}); !_ok_ { err = errors.New("commonaward error"); return }
_v.Commonaward = 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.Commonaward = append(_v.Commonaward, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["FormatList"].([]interface{}); !_ok_ { err = errors.New("FormatList error"); return }
_v.FormatList = make([]int32, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ int32
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
_v.FormatList = append(_v.FormatList, _list_v_)
}
}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["captainId"].(float64); !_ok_ { err = errors.New("captainId error"); return }; _v.CaptainId = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["star"].([]interface{}); !_ok_ { err = errors.New("star error"); return }
_v.Star = make([]int32, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ int32
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
_v.Star = append(_v.Star, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["star_type"].([]interface{}); !_ok_ { err = errors.New("star_type error"); return }
_v.StarType = make([]int32, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ int32
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
_v.StarType = append(_v.StarType, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["star_value"].([]interface{}); !_ok_ { err = errors.New("star_value error"); return }
_v.StarValue = make([]int32, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ int32
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
_v.StarValue = append(_v.StarValue, _list_v_)
}
}
return
}
func DeserializeGameMainStageData(_buf map[string]interface{}) (*GameMainStageData, error) {
v := &GameMainStageData{}
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 GameMainStarreward struct {
_dataMap map[int32]*GameMainStarrewardData
_dataList []*GameMainStarrewardData
}
func NewGameMainStarreward(_buf []map[string]interface{}) (*GameMainStarreward, error) {
_dataList := make([]*GameMainStarrewardData, 0, len(_buf))
dataMap := make(map[int32]*GameMainStarrewardData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameMainStarrewardData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameMainStarreward{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameMainStarreward) GetDataMap() map[int32]*GameMainStarrewardData {
return table._dataMap
}
func (table *GameMainStarreward) GetDataList() []*GameMainStarrewardData {
return table._dataList
}
func (table *GameMainStarreward) Get(key int32) *GameMainStarrewardData {
return table._dataMap[key]
}

View File

@ -0,0 +1,54 @@
//------------------------------------------------------------------------------
// <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 GameMainStarrewardData struct {
Id int32
Boxid int32
Starnum int32
Reward []*Gameatn
}
const TypeId_GameMainStarrewardData = -40647456
func (*GameMainStarrewardData) GetTypeId() int32 {
return -40647456
}
func (_v *GameMainStarrewardData)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; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["boxid"].(float64); !_ok_ { err = errors.New("boxid error"); return }; _v.Boxid = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["starnum"].(float64); !_ok_ { err = errors.New("starnum error"); return }; _v.Starnum = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["reward"].([]interface{}); !_ok_ { err = errors.New("reward error"); return }
_v.Reward = 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.Reward = append(_v.Reward, _list_v_)
}
}
return
}
func DeserializeGameMainStarrewardData(_buf map[string]interface{}) (*GameMainStarrewardData, error) {
v := &GameMainStarrewardData{}
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 GameMainStartype struct {
_dataMap map[int32]*GameMainStartypeData
_dataList []*GameMainStartypeData
}
func NewGameMainStartype(_buf []map[string]interface{}) (*GameMainStartype, error) {
_dataList := make([]*GameMainStartypeData, 0, len(_buf))
dataMap := make(map[int32]*GameMainStartypeData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameMainStartypeData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameMainStartype{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameMainStartype) GetDataMap() map[int32]*GameMainStartypeData {
return table._dataMap
}
func (table *GameMainStartype) GetDataList() []*GameMainStartypeData {
return table._dataList
}
func (table *GameMainStartype) Get(key int32) *GameMainStartypeData {
return table._dataMap[key]
}

View File

@ -0,0 +1,37 @@
//------------------------------------------------------------------------------
// <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 GameMainStartypeData struct {
Id int32
StarName string
}
const TypeId_GameMainStartypeData = 1238709547
func (*GameMainStartypeData) GetTypeId() int32 {
return 1238709547
}
func (_v *GameMainStartypeData)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; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["starName"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.StarName error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.StarName, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
return
}
func DeserializeGameMainStartypeData(_buf map[string]interface{}) (*GameMainStartypeData, error) {
v := &GameMainStartypeData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -151,6 +151,10 @@ type Tables struct {
EnchantShop *GameEnchantShop EnchantShop *GameEnchantShop
EnchantBoss *GameEnchantBoss EnchantBoss *GameEnchantBoss
EnchantLineup *GameEnchantLineup EnchantLineup *GameEnchantLineup
MainChapter *GameMainChapter
MainStage *GameMainStage
MainStarreward *GameMainStarreward
MainStartype *GameMainStartype
} }
func NewTables(loader JsonLoader) (*Tables, error) { func NewTables(loader JsonLoader) (*Tables, error) {
@ -998,5 +1002,29 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.EnchantLineup, err = NewGameEnchantLineup(buf) ; err != nil { if tables.EnchantLineup, err = NewGameEnchantLineup(buf) ; err != nil {
return nil, err return nil, err
} }
if buf, err = loader("game_mainchapter") ; err != nil {
return nil, err
}
if tables.MainChapter, err = NewGameMainChapter(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_mainstage") ; err != nil {
return nil, err
}
if tables.MainStage, err = NewGameMainStage(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_mainstarreward") ; err != nil {
return nil, err
}
if tables.MainStarreward, err = NewGameMainStarreward(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_mainstartype") ; err != nil {
return nil, err
}
if tables.MainStartype, err = NewGameMainStartype(buf) ; err != nil {
return nil, err
}
return tables, nil return tables, nil
} }

View File

@ -15,6 +15,7 @@ type GameEquipSuitData struct {
Suitnum int32 Suitnum int32
Skill int32 Skill int32
Skillname string Skillname string
FloatIcon string
Skillintr string Skillintr string
SetBonuses map[string]int32 SetBonuses map[string]int32
} }
@ -30,6 +31,7 @@ func (_v *GameEquipSuitData)Deserialize(_buf map[string]interface{}) (err error)
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["suitnum"].(float64); !_ok_ { err = errors.New("suitnum error"); return }; _v.Suitnum = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["suitnum"].(float64); !_ok_ { err = errors.New("suitnum error"); return }; _v.Suitnum = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skill"].(float64); !_ok_ { err = errors.New("skill error"); return }; _v.Skill = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skill"].(float64); !_ok_ { err = errors.New("skill error"); return }; _v.Skill = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["skillname"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Skillname error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Skillname, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["skillname"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Skillname error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Skillname, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; if _v.FloatIcon, _ok_ = _buf["FloatIcon"].(string); !_ok_ { err = errors.New("FloatIcon error"); return } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["skillintr"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Skillintr error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Skillintr, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["skillintr"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Skillintr error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Skillintr, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ {
var _arr_ []interface{} var _arr_ []interface{}