This commit is contained in:
liwei1dao 2022-07-26 10:21:09 +08:00
commit ca68b3f9e9
54 changed files with 4139 additions and 1114 deletions

View File

@ -2958,5 +2958,9 @@
{
"key": "mainline_name_10070",
"text_cn": "Chapter 70"
},
{
"key": "mainline_name_10071",
"text_cn": "故事发生在很久以前的古代中国,而且要从一只喜欢滚来滚去、滚来滚去的大熊猫身上说起。"
}
]

View File

@ -2958,5 +2958,9 @@
{
"key": "mainline_name_10070",
"text_en": ""
},
{
"key": "mainline_name_10071",
"text_en": ""
}
]

View File

@ -2958,5 +2958,9 @@
{
"key": "mainline_name_10070",
"text_tw": ""
},
{
"key": "mainline_name_10071",
"text_tw": ""
}
]

View File

@ -3,10 +3,10 @@
"id": "10001",
"name": {
"key": "equip_13001",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 1,
"star": 1,
"leadlibrary": 10001,
@ -27,10 +27,10 @@
"id": "10002",
"name": {
"key": "equip_13002",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 2,
"star": 1,
"leadlibrary": 10002,
@ -51,10 +51,10 @@
"id": "10003",
"name": {
"key": "equip_13003",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 3,
"star": 1,
"leadlibrary": 10003,
@ -77,10 +77,10 @@
"id": "10004",
"name": {
"key": "equip_13004",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 4,
"star": 1,
"leadlibrary": 10004,
@ -101,10 +101,10 @@
"id": "10005",
"name": {
"key": "equip_13005",
"text": "罗梦菲的刀"
"text": "刀"
},
"suittype": 100,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 5,
"star": 1,
"leadlibrary": 10005,
@ -127,10 +127,10 @@
"id": "10006",
"name": {
"key": "equip_13006",
"text": "罗梦菲的围巾"
"text": "围巾"
},
"suittype": 100,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 6,
"star": 1,
"leadlibrary": 10006,
@ -151,10 +151,10 @@
"id": "10011",
"name": {
"key": "equip_13007",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 1,
"star": 2,
"leadlibrary": 10011,
@ -175,10 +175,10 @@
"id": "10012",
"name": {
"key": "equip_13008",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 2,
"star": 2,
"leadlibrary": 10012,
@ -199,10 +199,10 @@
"id": "10013",
"name": {
"key": "equip_13009",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 3,
"star": 2,
"leadlibrary": 10013,
@ -225,10 +225,10 @@
"id": "10014",
"name": {
"key": "equip_13010",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 4,
"star": 2,
"leadlibrary": 10014,
@ -249,10 +249,10 @@
"id": "10015",
"name": {
"key": "equip_13011",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 100,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 5,
"star": 2,
"leadlibrary": 10015,
@ -275,10 +275,10 @@
"id": "10016",
"name": {
"key": "equip_13012",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 100,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 6,
"star": 2,
"leadlibrary": 10016,
@ -299,10 +299,10 @@
"id": "10021",
"name": {
"key": "equip_13013",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 1,
"star": 3,
"leadlibrary": 10021,
@ -323,10 +323,10 @@
"id": "10022",
"name": {
"key": "equip_13014",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 2,
"star": 3,
"leadlibrary": 10022,
@ -347,10 +347,10 @@
"id": "10023",
"name": {
"key": "equip_13015",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 3,
"star": 3,
"leadlibrary": 10023,
@ -373,10 +373,10 @@
"id": "10024",
"name": {
"key": "equip_13016",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 4,
"star": 3,
"leadlibrary": 10024,
@ -397,10 +397,10 @@
"id": "10025",
"name": {
"key": "equip_13017",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 100,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 5,
"star": 3,
"leadlibrary": 10025,
@ -423,10 +423,10 @@
"id": "10026",
"name": {
"key": "equip_13018",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 100,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 6,
"star": 3,
"leadlibrary": 10026,
@ -447,10 +447,10 @@
"id": "10031",
"name": {
"key": "equip_13019",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 1,
"star": 4,
"leadlibrary": 10031,
@ -471,10 +471,10 @@
"id": "10032",
"name": {
"key": "equip_13020",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 2,
"star": 4,
"leadlibrary": 10032,
@ -495,10 +495,10 @@
"id": "10033",
"name": {
"key": "equip_13021",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 3,
"star": 4,
"leadlibrary": 10033,
@ -521,10 +521,10 @@
"id": "10034",
"name": {
"key": "equip_13022",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 4,
"star": 4,
"leadlibrary": 10034,
@ -545,10 +545,10 @@
"id": "10035",
"name": {
"key": "equip_13023",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 100,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 5,
"star": 4,
"leadlibrary": 10035,
@ -571,10 +571,10 @@
"id": "10036",
"name": {
"key": "equip_13024",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 100,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 6,
"star": 4,
"leadlibrary": 10036,
@ -595,10 +595,10 @@
"id": "10041",
"name": {
"key": "equip_13025",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 1,
"star": 5,
"leadlibrary": 10041,
@ -619,10 +619,10 @@
"id": "10042",
"name": {
"key": "equip_13026",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 2,
"star": 5,
"leadlibrary": 10042,
@ -643,10 +643,10 @@
"id": "10043",
"name": {
"key": "equip_13027",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 3,
"star": 5,
"leadlibrary": 10043,
@ -669,10 +669,10 @@
"id": "10044",
"name": {
"key": "equip_13028",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 4,
"star": 5,
"leadlibrary": 10044,
@ -693,10 +693,10 @@
"id": "10045",
"name": {
"key": "equip_13029",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 100,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 5,
"star": 5,
"leadlibrary": 10045,
@ -719,10 +719,10 @@
"id": "10046",
"name": {
"key": "equip_13030",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 100,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 6,
"star": 5,
"leadlibrary": 10046,
@ -743,10 +743,10 @@
"id": "10051",
"name": {
"key": "equip_13031",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 1,
"star": 6,
"leadlibrary": 10051,
@ -767,10 +767,10 @@
"id": "10052",
"name": {
"key": "equip_13032",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 2,
"star": 6,
"leadlibrary": 10052,
@ -791,10 +791,10 @@
"id": "10053",
"name": {
"key": "equip_13033",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 3,
"star": 6,
"leadlibrary": 10053,
@ -817,10 +817,10 @@
"id": "10054",
"name": {
"key": "equip_13034",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 0,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 4,
"star": 6,
"leadlibrary": 10054,
@ -841,10 +841,10 @@
"id": "10055",
"name": {
"key": "equip_13035",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 100,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 5,
"star": 6,
"leadlibrary": 10055,
@ -867,10 +867,10 @@
"id": "10056",
"name": {
"key": "equip_13036",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 100,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 6,
"star": 6,
"leadlibrary": 10056,
@ -891,10 +891,10 @@
"id": "11001",
"name": {
"key": "equip_13037",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 1,
"star": 1,
"leadlibrary": 11001,
@ -915,10 +915,10 @@
"id": "11002",
"name": {
"key": "equip_13038",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 2,
"star": 1,
"leadlibrary": 11002,
@ -939,10 +939,10 @@
"id": "11003",
"name": {
"key": "equip_13039",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 3,
"star": 1,
"leadlibrary": 11003,
@ -965,10 +965,10 @@
"id": "11004",
"name": {
"key": "equip_13040",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 4,
"star": 1,
"leadlibrary": 11004,
@ -989,10 +989,10 @@
"id": "11005",
"name": {
"key": "equip_13041",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 101,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 5,
"star": 1,
"leadlibrary": 11005,
@ -1015,10 +1015,10 @@
"id": "11006",
"name": {
"key": "equip_13042",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 101,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 6,
"star": 1,
"leadlibrary": 11006,
@ -1039,10 +1039,10 @@
"id": "11011",
"name": {
"key": "equip_13043",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 1,
"star": 2,
"leadlibrary": 11011,
@ -1063,10 +1063,10 @@
"id": "11012",
"name": {
"key": "equip_13044",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 2,
"star": 2,
"leadlibrary": 11012,
@ -1087,10 +1087,10 @@
"id": "11013",
"name": {
"key": "equip_13045",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 3,
"star": 2,
"leadlibrary": 11013,
@ -1113,10 +1113,10 @@
"id": "11014",
"name": {
"key": "equip_13046",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 4,
"star": 2,
"leadlibrary": 11014,
@ -1137,10 +1137,10 @@
"id": "11015",
"name": {
"key": "equip_13047",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 101,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 5,
"star": 2,
"leadlibrary": 11015,
@ -1163,10 +1163,10 @@
"id": "11016",
"name": {
"key": "equip_13048",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 101,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 6,
"star": 2,
"leadlibrary": 11016,
@ -1187,10 +1187,10 @@
"id": "11021",
"name": {
"key": "equip_13049",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 1,
"star": 3,
"leadlibrary": 11021,
@ -1211,10 +1211,10 @@
"id": "11022",
"name": {
"key": "equip_13050",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 2,
"star": 3,
"leadlibrary": 11022,
@ -1235,10 +1235,10 @@
"id": "11023",
"name": {
"key": "equip_13051",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 3,
"star": 3,
"leadlibrary": 11023,
@ -1261,10 +1261,10 @@
"id": "11024",
"name": {
"key": "equip_13052",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 4,
"star": 3,
"leadlibrary": 11024,
@ -1285,10 +1285,10 @@
"id": "11025",
"name": {
"key": "equip_13053",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 101,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 5,
"star": 3,
"leadlibrary": 11025,
@ -1311,10 +1311,10 @@
"id": "11026",
"name": {
"key": "equip_13054",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 101,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 6,
"star": 3,
"leadlibrary": 11026,
@ -1335,10 +1335,10 @@
"id": "11031",
"name": {
"key": "equip_13055",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 1,
"star": 4,
"leadlibrary": 11031,
@ -1359,10 +1359,10 @@
"id": "11032",
"name": {
"key": "equip_13056",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 2,
"star": 4,
"leadlibrary": 11032,
@ -1383,10 +1383,10 @@
"id": "11033",
"name": {
"key": "equip_13057",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 3,
"star": 4,
"leadlibrary": 11033,
@ -1409,10 +1409,10 @@
"id": "11034",
"name": {
"key": "equip_13058",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 4,
"star": 4,
"leadlibrary": 11034,
@ -1433,10 +1433,10 @@
"id": "11035",
"name": {
"key": "equip_13059",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 101,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 5,
"star": 4,
"leadlibrary": 11035,
@ -1459,10 +1459,10 @@
"id": "11036",
"name": {
"key": "equip_13060",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 101,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 6,
"star": 4,
"leadlibrary": 11036,
@ -1483,10 +1483,10 @@
"id": "11041",
"name": {
"key": "equip_13061",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 1,
"star": 5,
"leadlibrary": 11041,
@ -1507,10 +1507,10 @@
"id": "11042",
"name": {
"key": "equip_13062",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 2,
"star": 5,
"leadlibrary": 11042,
@ -1531,10 +1531,10 @@
"id": "11043",
"name": {
"key": "equip_13063",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 3,
"star": 5,
"leadlibrary": 11043,
@ -1557,10 +1557,10 @@
"id": "11044",
"name": {
"key": "equip_13064",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 4,
"star": 5,
"leadlibrary": 11044,
@ -1581,10 +1581,10 @@
"id": "11045",
"name": {
"key": "equip_13065",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 101,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 5,
"star": 5,
"leadlibrary": 11045,
@ -1607,10 +1607,10 @@
"id": "11046",
"name": {
"key": "equip_13066",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 101,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 6,
"star": 5,
"leadlibrary": 11046,
@ -1631,10 +1631,10 @@
"id": "11051",
"name": {
"key": "equip_13067",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 1,
"star": 6,
"leadlibrary": 11051,
@ -1655,10 +1655,10 @@
"id": "11052",
"name": {
"key": "equip_13068",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 2,
"star": 6,
"leadlibrary": 11052,
@ -1679,10 +1679,10 @@
"id": "11053",
"name": {
"key": "equip_13069",
"text": "罗梦菲的披风"
"text": "披风"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 3,
"star": 6,
"leadlibrary": 11053,
@ -1705,10 +1705,10 @@
"id": "11054",
"name": {
"key": "equip_13070",
"text": "罗梦菲的帽子"
"text": "帽子"
},
"suittype": 1,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 4,
"star": 6,
"leadlibrary": 11054,
@ -1729,10 +1729,10 @@
"id": "11055",
"name": {
"key": "equip_13071",
"text": "罗梦菲的鞋"
"text": "鞋"
},
"suittype": 101,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 5,
"star": 6,
"leadlibrary": 11055,
@ -1755,10 +1755,10 @@
"id": "11056",
"name": {
"key": "equip_13072",
"text": "罗梦菲的裙子"
"text": "裙子"
},
"suittype": 101,
"suitintr": "梦扣扣套装",
"suitintr": "初心者套装",
"pos": 6,
"star": 6,
"leadlibrary": 11056,

View File

@ -3,119 +3,119 @@
"suittype": 0,
"suitnum": 4,
"skill": 100012000,
"skillname": "梦扣扣拳",
"skillintr": "一拳干碎"
"skillname": "魔力之拳",
"skillintr": "暴击率\u002B20%"
},
{
"suittype": 1,
"suitnum": 4,
"skill": 100012000,
"skillname": "梦扣扣脚",
"skillintr": "一脚干碎"
"skillname": "魔力之脚",
"skillintr": "暴击率\u002B20%"
},
{
"suittype": 2,
"suitnum": 4,
"skill": 100012000,
"skillname": "梦扣扣拳",
"skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 3,
"suitnum": 4,
"skill": 100012000,
"skillname": "梦扣扣脚",
"skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 4,
"suitnum": 4,
"skill": 100012000,
"skillname": "梦扣扣拳",
"skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 5,
"suitnum": 4,
"skill": 100012000,
"skillname": "梦扣扣脚",
"skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 6,
"suitnum": 4,
"skill": 100012000,
"skillname": "梦扣扣拳",
"skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 7,
"suitnum": 4,
"skill": 100012000,
"skillname": "梦扣扣脚",
"skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 8,
"suitnum": 4,
"skill": 100012000,
"skillname": "梦扣扣拳",
"skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 9,
"suitnum": 4,
"skill": 100012000,
"skillname": "梦扣扣脚",
"skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 100,
"suitnum": 2,
"skill": 100012000,
"skillname": "梦扣扣拳",
"skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 101,
"suitnum": 2,
"skill": 100012000,
"skillname": "梦扣扣脚",
"skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 102,
"suitnum": 2,
"skill": 100012000,
"skillname": "梦扣扣拳",
"skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 103,
"suitnum": 2,
"skill": 100012000,
"skillname": "梦扣扣脚",
"skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 104,
"suitnum": 2,
"skill": 100012000,
"skillname": "梦扣扣拳",
"skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 105,
"suitnum": 2,
"skill": 100012000,
"skillname": "梦扣扣脚",
"skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 106,
"suitnum": 2,
"skill": 100012000,
"skillname": "梦扣扣拳",
"skillname": "魔力之拳",
"skillintr": "一拳干碎"
}
]

332
bin/json/game_facemod.json Normal file
View File

@ -0,0 +1,332 @@
[
{
"id": 1001,
"suitintr": "预设1",
"figure": [
{
"id": 1,
"key": "hair",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 2,
"key": "eye",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 3,
"key": "mouth",
"color": "",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 4,
"key": "height",
"color": "",
"val": 5,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
},
{
"id": 5,
"key": "size",
"color": "",
"val": 5,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
},
{
"id": 6,
"key": "color",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
}
]
},
{
"id": 1002,
"suitintr": "预设2",
"figure": [
{
"id": 1,
"key": "hair",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 2,
"key": "eye",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 3,
"key": "mouth",
"color": "",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 4,
"key": "height",
"color": "",
"val": 5,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
},
{
"id": 5,
"key": "size",
"color": "",
"val": 5,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
},
{
"id": 6,
"key": "color",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
}
]
},
{
"id": 1003,
"suitintr": "预设3",
"figure": [
{
"id": 1,
"key": "hair",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 2,
"key": "eye",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 3,
"key": "mouth",
"color": "",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 4,
"key": "height",
"color": "",
"val": 5,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
},
{
"id": 5,
"key": "size",
"color": "",
"val": 5,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
},
{
"id": 6,
"key": "color",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
}
]
},
{
"id": 1004,
"suitintr": "预设4",
"figure": [
{
"id": 1,
"key": "hair",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 2,
"key": "eye",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 3,
"key": "mouth",
"color": "",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 4,
"key": "height",
"color": "",
"val": 5,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
},
{
"id": 5,
"key": "size",
"color": "",
"val": 5,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
},
{
"id": 6,
"key": "color",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
}
]
},
{
"id": 1005,
"suitintr": "预设5",
"figure": [
{
"id": 1,
"key": "hair",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 2,
"key": "eye",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 3,
"key": "mouth",
"color": "",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": "face_icon_01"
},
{
"id": 4,
"key": "height",
"color": "",
"val": 5,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
},
{
"id": 5,
"key": "size",
"color": "",
"val": 5,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
},
{
"id": 6,
"key": "color",
"color": "#fffff",
"val": 0,
"positon_x": 0,
"positon_y": 0,
"positon_z": 0,
"icon": ""
}
]
}
]

View File

@ -579,7 +579,7 @@
"id": 111,
"previoustage": 110,
"order": 11,
"linearnum": 1,
"linearnum": 11,
"chapter": 1,
"route": 1,
"Episodetype": 1,
@ -640,7 +640,7 @@
"id": 112,
"previoustage": 111,
"order": 12,
"linearnum": 2,
"linearnum": 12,
"chapter": 1,
"route": 1,
"Episodetype": 1,
@ -701,7 +701,7 @@
"id": 201,
"previoustage": 112,
"order": 13,
"linearnum": 3,
"linearnum": 1,
"chapter": 2,
"route": 1,
"Episodetype": 1,
@ -762,7 +762,7 @@
"id": 202,
"previoustage": 201,
"order": 14,
"linearnum": 4,
"linearnum": 2,
"chapter": 2,
"route": 1,
"Episodetype": 1,
@ -823,7 +823,7 @@
"id": 203,
"previoustage": 202,
"order": 15,
"linearnum": 5,
"linearnum": 3,
"chapter": 2,
"route": 1,
"Episodetype": 1,
@ -884,7 +884,7 @@
"id": 204,
"previoustage": 203,
"order": 16,
"linearnum": 6,
"linearnum": 4,
"chapter": 2,
"route": 2,
"Episodetype": 1,
@ -945,7 +945,7 @@
"id": 205,
"previoustage": 204,
"order": 17,
"linearnum": 7,
"linearnum": 5,
"chapter": 2,
"route": 2,
"Episodetype": 1,
@ -1006,7 +1006,7 @@
"id": 206,
"previoustage": 205,
"order": 18,
"linearnum": 8,
"linearnum": 6,
"chapter": 2,
"route": 2,
"Episodetype": 1,
@ -1067,7 +1067,7 @@
"id": 207,
"previoustage": 206,
"order": 19,
"linearnum": 9,
"linearnum": 7,
"chapter": 2,
"route": 2,
"Episodetype": 1,
@ -1128,7 +1128,7 @@
"id": 208,
"previoustage": 207,
"order": 20,
"linearnum": 10,
"linearnum": 8,
"chapter": 2,
"route": 2,
"Episodetype": 1,
@ -1189,7 +1189,7 @@
"id": 209,
"previoustage": 208,
"order": 21,
"linearnum": 11,
"linearnum": 9,
"chapter": 2,
"route": 3,
"Episodetype": 1,
@ -1250,7 +1250,7 @@
"id": 210,
"previoustage": 209,
"order": 22,
"linearnum": 12,
"linearnum": 10,
"chapter": 2,
"route": 3,
"Episodetype": 1,
@ -1311,7 +1311,7 @@
"id": 211,
"previoustage": 210,
"order": 23,
"linearnum": 13,
"linearnum": 11,
"chapter": 2,
"route": 3,
"Episodetype": 1,
@ -1372,7 +1372,7 @@
"id": 212,
"previoustage": 211,
"order": 24,
"linearnum": 14,
"linearnum": 12,
"chapter": 2,
"route": 3,
"Episodetype": 1,
@ -1433,7 +1433,7 @@
"id": 301,
"previoustage": 212,
"order": 25,
"linearnum": 15,
"linearnum": 1,
"chapter": 3,
"route": 3,
"Episodetype": 1,
@ -1494,7 +1494,7 @@
"id": 302,
"previoustage": 301,
"order": 26,
"linearnum": 16,
"linearnum": 2,
"chapter": 3,
"route": 4,
"Episodetype": 1,
@ -1555,7 +1555,7 @@
"id": 303,
"previoustage": 302,
"order": 27,
"linearnum": 17,
"linearnum": 3,
"chapter": 3,
"route": 4,
"Episodetype": 1,
@ -1616,7 +1616,7 @@
"id": 304,
"previoustage": 303,
"order": 28,
"linearnum": 18,
"linearnum": 4,
"chapter": 3,
"route": 4,
"Episodetype": 1,
@ -1677,7 +1677,7 @@
"id": 305,
"previoustage": 304,
"order": 29,
"linearnum": 19,
"linearnum": 5,
"chapter": 3,
"route": 4,
"Episodetype": 1,
@ -1738,7 +1738,7 @@
"id": 306,
"previoustage": 305,
"order": 30,
"linearnum": 20,
"linearnum": 6,
"chapter": 3,
"route": 4,
"Episodetype": 1,
@ -1799,7 +1799,7 @@
"id": 307,
"previoustage": 306,
"order": 31,
"linearnum": 1,
"linearnum": 7,
"chapter": 3,
"route": 1,
"Episodetype": 1,
@ -1860,7 +1860,7 @@
"id": 308,
"previoustage": 307,
"order": 32,
"linearnum": 2,
"linearnum": 8,
"chapter": 3,
"route": 1,
"Episodetype": 1,
@ -1921,7 +1921,7 @@
"id": 309,
"previoustage": 308,
"order": 33,
"linearnum": 3,
"linearnum": 9,
"chapter": 3,
"route": 1,
"Episodetype": 1,
@ -1982,7 +1982,7 @@
"id": 310,
"previoustage": 309,
"order": 34,
"linearnum": 4,
"linearnum": 10,
"chapter": 3,
"route": 1,
"Episodetype": 1,
@ -2043,7 +2043,7 @@
"id": 311,
"previoustage": 310,
"order": 35,
"linearnum": 5,
"linearnum": 11,
"chapter": 3,
"route": 1,
"Episodetype": 1,
@ -2104,7 +2104,7 @@
"id": 312,
"previoustage": 311,
"order": 36,
"linearnum": 6,
"linearnum": 12,
"chapter": 3,
"route": 2,
"Episodetype": 1,
@ -2165,7 +2165,7 @@
"id": 401,
"previoustage": 312,
"order": 37,
"linearnum": 7,
"linearnum": 1,
"chapter": 4,
"route": 2,
"Episodetype": 1,
@ -2226,7 +2226,7 @@
"id": 402,
"previoustage": 401,
"order": 38,
"linearnum": 8,
"linearnum": 2,
"chapter": 4,
"route": 2,
"Episodetype": 1,
@ -2287,7 +2287,7 @@
"id": 403,
"previoustage": 402,
"order": 39,
"linearnum": 9,
"linearnum": 3,
"chapter": 4,
"route": 2,
"Episodetype": 1,
@ -2348,7 +2348,7 @@
"id": 404,
"previoustage": 403,
"order": 40,
"linearnum": 10,
"linearnum": 4,
"chapter": 4,
"route": 2,
"Episodetype": 1,
@ -2409,7 +2409,7 @@
"id": 405,
"previoustage": 404,
"order": 41,
"linearnum": 11,
"linearnum": 5,
"chapter": 4,
"route": 3,
"Episodetype": 1,
@ -2470,7 +2470,7 @@
"id": 406,
"previoustage": 405,
"order": 42,
"linearnum": 12,
"linearnum": 6,
"chapter": 4,
"route": 3,
"Episodetype": 1,
@ -2531,7 +2531,7 @@
"id": 407,
"previoustage": 406,
"order": 43,
"linearnum": 13,
"linearnum": 7,
"chapter": 4,
"route": 3,
"Episodetype": 1,
@ -2592,7 +2592,7 @@
"id": 408,
"previoustage": 407,
"order": 44,
"linearnum": 14,
"linearnum": 8,
"chapter": 4,
"route": 3,
"Episodetype": 1,
@ -2653,7 +2653,7 @@
"id": 409,
"previoustage": 408,
"order": 45,
"linearnum": 15,
"linearnum": 9,
"chapter": 4,
"route": 3,
"Episodetype": 1,
@ -2714,7 +2714,7 @@
"id": 410,
"previoustage": 409,
"order": 46,
"linearnum": 16,
"linearnum": 10,
"chapter": 4,
"route": 4,
"Episodetype": 1,
@ -2772,7 +2772,7 @@
"id": 411,
"previoustage": 410,
"order": 47,
"linearnum": 17,
"linearnum": 11,
"chapter": 4,
"route": 4,
"Episodetype": 1,
@ -2830,7 +2830,7 @@
"id": 412,
"previoustage": 411,
"order": 48,
"linearnum": 18,
"linearnum": 12,
"chapter": 4,
"route": 4,
"Episodetype": 1,
@ -2888,7 +2888,7 @@
"id": 501,
"previoustage": 412,
"order": 49,
"linearnum": 19,
"linearnum": 1,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@ -2946,7 +2946,7 @@
"id": 502,
"previoustage": 501,
"order": 50,
"linearnum": 20,
"linearnum": 2,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@ -3007,7 +3007,7 @@
"id": 503,
"previoustage": 502,
"order": 51,
"linearnum": 21,
"linearnum": 3,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@ -3065,7 +3065,7 @@
"id": 504,
"previoustage": 503,
"order": 52,
"linearnum": 22,
"linearnum": 4,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@ -3123,7 +3123,7 @@
"id": 505,
"previoustage": 504,
"order": 53,
"linearnum": 23,
"linearnum": 5,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@ -3181,7 +3181,7 @@
"id": 506,
"previoustage": 505,
"order": 54,
"linearnum": 24,
"linearnum": 6,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@ -3239,7 +3239,7 @@
"id": 507,
"previoustage": 506,
"order": 55,
"linearnum": 25,
"linearnum": 7,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@ -3300,7 +3300,7 @@
"id": 508,
"previoustage": 507,
"order": 56,
"linearnum": 1,
"linearnum": 8,
"chapter": 5,
"route": 1,
"Episodetype": 1,
@ -3361,7 +3361,7 @@
"id": 509,
"previoustage": 508,
"order": 57,
"linearnum": 2,
"linearnum": 9,
"chapter": 5,
"route": 1,
"Episodetype": 1,
@ -3419,7 +3419,7 @@
"id": 510,
"previoustage": 509,
"order": 58,
"linearnum": 3,
"linearnum": 10,
"chapter": 5,
"route": 1,
"Episodetype": 1,
@ -3477,7 +3477,7 @@
"id": 511,
"previoustage": 510,
"order": 59,
"linearnum": 4,
"linearnum": 11,
"chapter": 5,
"route": 1,
"Episodetype": 1,
@ -3535,7 +3535,7 @@
"id": 512,
"previoustage": 511,
"order": 60,
"linearnum": 5,
"linearnum": 12,
"chapter": 5,
"route": 1,
"Episodetype": 1,
@ -3596,7 +3596,7 @@
"id": 601,
"previoustage": 512,
"order": 61,
"linearnum": 6,
"linearnum": 1,
"chapter": 6,
"route": 2,
"Episodetype": 1,
@ -3654,7 +3654,7 @@
"id": 602,
"previoustage": 601,
"order": 62,
"linearnum": 7,
"linearnum": 2,
"chapter": 6,
"route": 2,
"Episodetype": 1,
@ -3712,7 +3712,7 @@
"id": 603,
"previoustage": 602,
"order": 63,
"linearnum": 8,
"linearnum": 3,
"chapter": 6,
"route": 2,
"Episodetype": 1,
@ -3770,7 +3770,7 @@
"id": 604,
"previoustage": 603,
"order": 64,
"linearnum": 9,
"linearnum": 4,
"chapter": 6,
"route": 2,
"Episodetype": 1,
@ -3828,7 +3828,7 @@
"id": 605,
"previoustage": 604,
"order": 65,
"linearnum": 10,
"linearnum": 5,
"chapter": 6,
"route": 2,
"Episodetype": 1,
@ -3889,7 +3889,7 @@
"id": 606,
"previoustage": 605,
"order": 66,
"linearnum": 11,
"linearnum": 6,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@ -3947,7 +3947,7 @@
"id": 607,
"previoustage": 606,
"order": 67,
"linearnum": 12,
"linearnum": 7,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@ -4005,7 +4005,7 @@
"id": 608,
"previoustage": 607,
"order": 68,
"linearnum": 13,
"linearnum": 8,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@ -4063,7 +4063,7 @@
"id": 609,
"previoustage": 608,
"order": 69,
"linearnum": 14,
"linearnum": 9,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@ -4121,7 +4121,7 @@
"id": 610,
"previoustage": 609,
"order": 70,
"linearnum": 15,
"linearnum": 10,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@ -4182,7 +4182,7 @@
"id": 611,
"previoustage": 610,
"order": 71,
"linearnum": 16,
"linearnum": 11,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@ -4240,7 +4240,7 @@
"id": 612,
"previoustage": 611,
"order": 72,
"linearnum": 17,
"linearnum": 12,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@ -4298,7 +4298,7 @@
"id": 701,
"previoustage": 612,
"order": 73,
"linearnum": 18,
"linearnum": 1,
"chapter": 7,
"route": 3,
"Episodetype": 1,
@ -4356,7 +4356,7 @@
"id": 702,
"previoustage": 701,
"order": 74,
"linearnum": 19,
"linearnum": 2,
"chapter": 7,
"route": 3,
"Episodetype": 1,
@ -4414,7 +4414,7 @@
"id": 703,
"previoustage": 702,
"order": 75,
"linearnum": 20,
"linearnum": 3,
"chapter": 7,
"route": 3,
"Episodetype": 1,
@ -4475,7 +4475,7 @@
"id": 704,
"previoustage": 703,
"order": 76,
"linearnum": 21,
"linearnum": 4,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@ -4533,7 +4533,7 @@
"id": 705,
"previoustage": 704,
"order": 77,
"linearnum": 22,
"linearnum": 5,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@ -4591,7 +4591,7 @@
"id": 706,
"previoustage": 705,
"order": 78,
"linearnum": 23,
"linearnum": 6,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@ -4649,7 +4649,7 @@
"id": 707,
"previoustage": 706,
"order": 79,
"linearnum": 24,
"linearnum": 7,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@ -4707,7 +4707,7 @@
"id": 708,
"previoustage": 707,
"order": 80,
"linearnum": 25,
"linearnum": 8,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@ -4768,7 +4768,7 @@
"id": 709,
"previoustage": 708,
"order": 81,
"linearnum": 26,
"linearnum": 9,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@ -4826,7 +4826,7 @@
"id": 710,
"previoustage": 709,
"order": 82,
"linearnum": 27,
"linearnum": 10,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@ -4884,7 +4884,7 @@
"id": 711,
"previoustage": 710,
"order": 83,
"linearnum": 28,
"linearnum": 11,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@ -4942,7 +4942,7 @@
"id": 712,
"previoustage": 711,
"order": 84,
"linearnum": 29,
"linearnum": 12,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@ -5000,7 +5000,7 @@
"id": 801,
"previoustage": 712,
"order": 85,
"linearnum": 30,
"linearnum": 1,
"chapter": 8,
"route": 4,
"Episodetype": 1,
@ -5061,7 +5061,7 @@
"id": 802,
"previoustage": 801,
"order": 86,
"linearnum": 1,
"linearnum": 2,
"chapter": 8,
"route": 1,
"Episodetype": 1,
@ -5122,7 +5122,7 @@
"id": 803,
"previoustage": 802,
"order": 87,
"linearnum": 2,
"linearnum": 3,
"chapter": 8,
"route": 1,
"Episodetype": 1,
@ -5180,7 +5180,7 @@
"id": 804,
"previoustage": 803,
"order": 88,
"linearnum": 3,
"linearnum": 4,
"chapter": 8,
"route": 1,
"Episodetype": 1,
@ -5238,7 +5238,7 @@
"id": 805,
"previoustage": 804,
"order": 89,
"linearnum": 4,
"linearnum": 5,
"chapter": 8,
"route": 1,
"Episodetype": 1,
@ -5296,7 +5296,7 @@
"id": 806,
"previoustage": 805,
"order": 90,
"linearnum": 5,
"linearnum": 6,
"chapter": 8,
"route": 1,
"Episodetype": 1,
@ -5357,7 +5357,7 @@
"id": 807,
"previoustage": 806,
"order": 91,
"linearnum": 6,
"linearnum": 7,
"chapter": 8,
"route": 2,
"Episodetype": 1,
@ -5415,7 +5415,7 @@
"id": 808,
"previoustage": 807,
"order": 92,
"linearnum": 7,
"linearnum": 8,
"chapter": 8,
"route": 2,
"Episodetype": 1,
@ -5473,7 +5473,7 @@
"id": 809,
"previoustage": 808,
"order": 93,
"linearnum": 8,
"linearnum": 9,
"chapter": 8,
"route": 2,
"Episodetype": 1,
@ -5531,7 +5531,7 @@
"id": 810,
"previoustage": 809,
"order": 94,
"linearnum": 9,
"linearnum": 10,
"chapter": 8,
"route": 2,
"Episodetype": 1,
@ -5589,7 +5589,7 @@
"id": 811,
"previoustage": 810,
"order": 95,
"linearnum": 10,
"linearnum": 11,
"chapter": 8,
"route": 2,
"Episodetype": 1,
@ -5650,7 +5650,7 @@
"id": 812,
"previoustage": 811,
"order": 96,
"linearnum": 11,
"linearnum": 12,
"chapter": 8,
"route": 2,
"Episodetype": 1,
@ -5708,7 +5708,7 @@
"id": 901,
"previoustage": 812,
"order": 97,
"linearnum": 12,
"linearnum": 1,
"chapter": 9,
"route": 2,
"Episodetype": 1,
@ -5766,7 +5766,7 @@
"id": 902,
"previoustage": 901,
"order": 98,
"linearnum": 13,
"linearnum": 2,
"chapter": 9,
"route": 2,
"Episodetype": 1,
@ -5824,7 +5824,7 @@
"id": 903,
"previoustage": 902,
"order": 99,
"linearnum": 14,
"linearnum": 3,
"chapter": 9,
"route": 2,
"Episodetype": 1,
@ -5882,7 +5882,7 @@
"id": 904,
"previoustage": 903,
"order": 100,
"linearnum": 15,
"linearnum": 4,
"chapter": 9,
"route": 2,
"Episodetype": 1,
@ -5943,7 +5943,7 @@
"id": 905,
"previoustage": 904,
"order": 101,
"linearnum": 16,
"linearnum": 5,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@ -6001,7 +6001,7 @@
"id": 906,
"previoustage": 905,
"order": 102,
"linearnum": 17,
"linearnum": 6,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@ -6059,7 +6059,7 @@
"id": 907,
"previoustage": 906,
"order": 103,
"linearnum": 18,
"linearnum": 7,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@ -6117,7 +6117,7 @@
"id": 908,
"previoustage": 907,
"order": 104,
"linearnum": 19,
"linearnum": 8,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@ -6175,7 +6175,7 @@
"id": 909,
"previoustage": 908,
"order": 105,
"linearnum": 20,
"linearnum": 9,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@ -6236,7 +6236,7 @@
"id": 910,
"previoustage": 909,
"order": 106,
"linearnum": 21,
"linearnum": 10,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@ -6294,7 +6294,7 @@
"id": 911,
"previoustage": 910,
"order": 107,
"linearnum": 22,
"linearnum": 11,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@ -6352,7 +6352,7 @@
"id": 912,
"previoustage": 911,
"order": 108,
"linearnum": 23,
"linearnum": 12,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@ -6410,7 +6410,7 @@
"id": 1001,
"previoustage": 912,
"order": 109,
"linearnum": 24,
"linearnum": 1,
"chapter": 10,
"route": 3,
"Episodetype": 1,
@ -6468,7 +6468,7 @@
"id": 1002,
"previoustage": 1001,
"order": 110,
"linearnum": 25,
"linearnum": 2,
"chapter": 10,
"route": 3,
"Episodetype": 1,
@ -6529,7 +6529,7 @@
"id": 1003,
"previoustage": 1002,
"order": 111,
"linearnum": 26,
"linearnum": 3,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@ -6587,7 +6587,7 @@
"id": 1004,
"previoustage": 1003,
"order": 112,
"linearnum": 27,
"linearnum": 4,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@ -6645,7 +6645,7 @@
"id": 1005,
"previoustage": 1004,
"order": 113,
"linearnum": 28,
"linearnum": 5,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@ -6703,7 +6703,7 @@
"id": 1006,
"previoustage": 1005,
"order": 114,
"linearnum": 29,
"linearnum": 6,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@ -6761,7 +6761,7 @@
"id": 1007,
"previoustage": 1006,
"order": 115,
"linearnum": 30,
"linearnum": 7,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@ -6822,7 +6822,7 @@
"id": 1008,
"previoustage": 1007,
"order": 116,
"linearnum": 31,
"linearnum": 8,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@ -6880,7 +6880,7 @@
"id": 1009,
"previoustage": 1008,
"order": 117,
"linearnum": 32,
"linearnum": 9,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@ -6938,7 +6938,7 @@
"id": 1010,
"previoustage": 1009,
"order": 118,
"linearnum": 33,
"linearnum": 10,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@ -6996,7 +6996,7 @@
"id": 1011,
"previoustage": 1010,
"order": 119,
"linearnum": 34,
"linearnum": 11,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@ -7054,7 +7054,7 @@
"id": 1012,
"previoustage": 1011,
"order": 120,
"linearnum": 35,
"linearnum": 12,
"chapter": 10,
"route": 4,
"Episodetype": 1,

View File

@ -561,7 +561,7 @@
"id": 111,
"previoustage": 110,
"order": 11,
"linearnum": 1,
"linearnum": 11,
"chapter": 1,
"route": 1,
"episodetype": 1,
@ -622,7 +622,7 @@
"id": 112,
"previoustage": 111,
"order": 12,
"linearnum": 2,
"linearnum": 12,
"chapter": 1,
"route": 1,
"episodetype": 1,
@ -680,7 +680,7 @@
"id": 201,
"previoustage": 112,
"order": 13,
"linearnum": 3,
"linearnum": 1,
"chapter": 2,
"route": 1,
"episodetype": 1,
@ -738,7 +738,7 @@
"id": 202,
"previoustage": 201,
"order": 14,
"linearnum": 4,
"linearnum": 2,
"chapter": 2,
"route": 1,
"episodetype": 1,
@ -796,7 +796,7 @@
"id": 203,
"previoustage": 202,
"order": 15,
"linearnum": 5,
"linearnum": 3,
"chapter": 2,
"route": 1,
"episodetype": 1,
@ -857,7 +857,7 @@
"id": 204,
"previoustage": 203,
"order": 16,
"linearnum": 6,
"linearnum": 4,
"chapter": 2,
"route": 2,
"episodetype": 1,
@ -915,7 +915,7 @@
"id": 205,
"previoustage": 204,
"order": 17,
"linearnum": 7,
"linearnum": 5,
"chapter": 2,
"route": 2,
"episodetype": 1,
@ -973,7 +973,7 @@
"id": 206,
"previoustage": 205,
"order": 18,
"linearnum": 8,
"linearnum": 6,
"chapter": 2,
"route": 2,
"episodetype": 1,
@ -1031,7 +1031,7 @@
"id": 207,
"previoustage": 206,
"order": 19,
"linearnum": 9,
"linearnum": 7,
"chapter": 2,
"route": 2,
"episodetype": 1,
@ -1089,7 +1089,7 @@
"id": 208,
"previoustage": 207,
"order": 20,
"linearnum": 10,
"linearnum": 8,
"chapter": 2,
"route": 2,
"episodetype": 1,
@ -1150,7 +1150,7 @@
"id": 209,
"previoustage": 208,
"order": 21,
"linearnum": 11,
"linearnum": 9,
"chapter": 2,
"route": 3,
"episodetype": 1,
@ -1208,7 +1208,7 @@
"id": 210,
"previoustage": 209,
"order": 22,
"linearnum": 12,
"linearnum": 10,
"chapter": 2,
"route": 3,
"episodetype": 1,
@ -1266,7 +1266,7 @@
"id": 211,
"previoustage": 210,
"order": 23,
"linearnum": 13,
"linearnum": 11,
"chapter": 2,
"route": 3,
"episodetype": 1,
@ -1324,7 +1324,7 @@
"id": 212,
"previoustage": 211,
"order": 24,
"linearnum": 14,
"linearnum": 12,
"chapter": 2,
"route": 3,
"episodetype": 1,
@ -1382,7 +1382,7 @@
"id": 301,
"previoustage": 212,
"order": 25,
"linearnum": 15,
"linearnum": 1,
"chapter": 3,
"route": 3,
"episodetype": 1,
@ -1443,7 +1443,7 @@
"id": 302,
"previoustage": 301,
"order": 26,
"linearnum": 16,
"linearnum": 2,
"chapter": 3,
"route": 4,
"episodetype": 1,
@ -1501,7 +1501,7 @@
"id": 303,
"previoustage": 302,
"order": 27,
"linearnum": 17,
"linearnum": 3,
"chapter": 3,
"route": 4,
"episodetype": 1,
@ -1559,7 +1559,7 @@
"id": 304,
"previoustage": 303,
"order": 28,
"linearnum": 18,
"linearnum": 4,
"chapter": 3,
"route": 4,
"episodetype": 1,
@ -1617,7 +1617,7 @@
"id": 305,
"previoustage": 304,
"order": 29,
"linearnum": 19,
"linearnum": 5,
"chapter": 3,
"route": 4,
"episodetype": 1,
@ -1675,7 +1675,7 @@
"id": 306,
"previoustage": 305,
"order": 30,
"linearnum": 20,
"linearnum": 6,
"chapter": 3,
"route": 4,
"episodetype": 1,
@ -1736,7 +1736,7 @@
"id": 307,
"previoustage": 306,
"order": 31,
"linearnum": 1,
"linearnum": 7,
"chapter": 3,
"route": 1,
"episodetype": 1,
@ -1797,7 +1797,7 @@
"id": 308,
"previoustage": 307,
"order": 32,
"linearnum": 2,
"linearnum": 8,
"chapter": 3,
"route": 1,
"episodetype": 1,
@ -1855,7 +1855,7 @@
"id": 309,
"previoustage": 308,
"order": 33,
"linearnum": 3,
"linearnum": 9,
"chapter": 3,
"route": 1,
"episodetype": 1,
@ -1913,7 +1913,7 @@
"id": 310,
"previoustage": 309,
"order": 34,
"linearnum": 4,
"linearnum": 10,
"chapter": 3,
"route": 1,
"episodetype": 1,
@ -1971,7 +1971,7 @@
"id": 311,
"previoustage": 310,
"order": 35,
"linearnum": 5,
"linearnum": 11,
"chapter": 3,
"route": 1,
"episodetype": 1,
@ -2032,7 +2032,7 @@
"id": 312,
"previoustage": 311,
"order": 36,
"linearnum": 6,
"linearnum": 12,
"chapter": 3,
"route": 2,
"episodetype": 1,
@ -2090,7 +2090,7 @@
"id": 401,
"previoustage": 312,
"order": 37,
"linearnum": 7,
"linearnum": 1,
"chapter": 4,
"route": 2,
"episodetype": 1,
@ -2148,7 +2148,7 @@
"id": 402,
"previoustage": 401,
"order": 38,
"linearnum": 8,
"linearnum": 2,
"chapter": 4,
"route": 2,
"episodetype": 1,
@ -2206,7 +2206,7 @@
"id": 403,
"previoustage": 402,
"order": 39,
"linearnum": 9,
"linearnum": 3,
"chapter": 4,
"route": 2,
"episodetype": 1,
@ -2264,7 +2264,7 @@
"id": 404,
"previoustage": 403,
"order": 40,
"linearnum": 10,
"linearnum": 4,
"chapter": 4,
"route": 2,
"episodetype": 1,
@ -2325,7 +2325,7 @@
"id": 405,
"previoustage": 404,
"order": 41,
"linearnum": 11,
"linearnum": 5,
"chapter": 4,
"route": 3,
"episodetype": 1,
@ -2383,7 +2383,7 @@
"id": 406,
"previoustage": 405,
"order": 42,
"linearnum": 12,
"linearnum": 6,
"chapter": 4,
"route": 3,
"episodetype": 1,
@ -2441,7 +2441,7 @@
"id": 407,
"previoustage": 406,
"order": 43,
"linearnum": 13,
"linearnum": 7,
"chapter": 4,
"route": 3,
"episodetype": 1,
@ -2499,7 +2499,7 @@
"id": 408,
"previoustage": 407,
"order": 44,
"linearnum": 14,
"linearnum": 8,
"chapter": 4,
"route": 3,
"episodetype": 1,
@ -2557,7 +2557,7 @@
"id": 409,
"previoustage": 408,
"order": 45,
"linearnum": 15,
"linearnum": 9,
"chapter": 4,
"route": 3,
"episodetype": 1,
@ -2618,7 +2618,7 @@
"id": 410,
"previoustage": 409,
"order": 46,
"linearnum": 16,
"linearnum": 10,
"chapter": 4,
"route": 4,
"episodetype": 1,
@ -2676,7 +2676,7 @@
"id": 411,
"previoustage": 410,
"order": 47,
"linearnum": 17,
"linearnum": 11,
"chapter": 4,
"route": 4,
"episodetype": 1,
@ -2734,7 +2734,7 @@
"id": 412,
"previoustage": 411,
"order": 48,
"linearnum": 18,
"linearnum": 12,
"chapter": 4,
"route": 4,
"episodetype": 1,
@ -2792,7 +2792,7 @@
"id": 501,
"previoustage": 412,
"order": 49,
"linearnum": 19,
"linearnum": 1,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -2850,7 +2850,7 @@
"id": 502,
"previoustage": 501,
"order": 50,
"linearnum": 20,
"linearnum": 2,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -2911,7 +2911,7 @@
"id": 503,
"previoustage": 502,
"order": 51,
"linearnum": 21,
"linearnum": 3,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -2969,7 +2969,7 @@
"id": 504,
"previoustage": 503,
"order": 52,
"linearnum": 22,
"linearnum": 4,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -3027,7 +3027,7 @@
"id": 505,
"previoustage": 504,
"order": 53,
"linearnum": 23,
"linearnum": 5,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -3085,7 +3085,7 @@
"id": 506,
"previoustage": 505,
"order": 54,
"linearnum": 24,
"linearnum": 6,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -3143,7 +3143,7 @@
"id": 507,
"previoustage": 506,
"order": 55,
"linearnum": 25,
"linearnum": 7,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -3204,7 +3204,7 @@
"id": 508,
"previoustage": 507,
"order": 56,
"linearnum": 1,
"linearnum": 8,
"chapter": 5,
"route": 1,
"episodetype": 1,
@ -3265,7 +3265,7 @@
"id": 509,
"previoustage": 508,
"order": 57,
"linearnum": 2,
"linearnum": 9,
"chapter": 5,
"route": 1,
"episodetype": 1,
@ -3323,7 +3323,7 @@
"id": 510,
"previoustage": 509,
"order": 58,
"linearnum": 3,
"linearnum": 10,
"chapter": 5,
"route": 1,
"episodetype": 1,
@ -3381,7 +3381,7 @@
"id": 511,
"previoustage": 510,
"order": 59,
"linearnum": 4,
"linearnum": 11,
"chapter": 5,
"route": 1,
"episodetype": 1,
@ -3439,7 +3439,7 @@
"id": 512,
"previoustage": 511,
"order": 60,
"linearnum": 5,
"linearnum": 12,
"chapter": 5,
"route": 1,
"episodetype": 1,
@ -3500,7 +3500,7 @@
"id": 601,
"previoustage": 512,
"order": 61,
"linearnum": 6,
"linearnum": 1,
"chapter": 6,
"route": 2,
"episodetype": 1,
@ -3558,7 +3558,7 @@
"id": 602,
"previoustage": 601,
"order": 62,
"linearnum": 7,
"linearnum": 2,
"chapter": 6,
"route": 2,
"episodetype": 1,
@ -3616,7 +3616,7 @@
"id": 603,
"previoustage": 602,
"order": 63,
"linearnum": 8,
"linearnum": 3,
"chapter": 6,
"route": 2,
"episodetype": 1,
@ -3674,7 +3674,7 @@
"id": 604,
"previoustage": 603,
"order": 64,
"linearnum": 9,
"linearnum": 4,
"chapter": 6,
"route": 2,
"episodetype": 1,
@ -3732,7 +3732,7 @@
"id": 605,
"previoustage": 604,
"order": 65,
"linearnum": 10,
"linearnum": 5,
"chapter": 6,
"route": 2,
"episodetype": 1,
@ -3793,7 +3793,7 @@
"id": 606,
"previoustage": 605,
"order": 66,
"linearnum": 11,
"linearnum": 6,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -3851,7 +3851,7 @@
"id": 607,
"previoustage": 606,
"order": 67,
"linearnum": 12,
"linearnum": 7,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -3909,7 +3909,7 @@
"id": 608,
"previoustage": 607,
"order": 68,
"linearnum": 13,
"linearnum": 8,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -3967,7 +3967,7 @@
"id": 609,
"previoustage": 608,
"order": 69,
"linearnum": 14,
"linearnum": 9,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -4025,7 +4025,7 @@
"id": 610,
"previoustage": 609,
"order": 70,
"linearnum": 15,
"linearnum": 10,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -4086,7 +4086,7 @@
"id": 611,
"previoustage": 610,
"order": 71,
"linearnum": 16,
"linearnum": 11,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -4144,7 +4144,7 @@
"id": 612,
"previoustage": 611,
"order": 72,
"linearnum": 17,
"linearnum": 12,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -4202,7 +4202,7 @@
"id": 701,
"previoustage": 612,
"order": 73,
"linearnum": 18,
"linearnum": 1,
"chapter": 7,
"route": 3,
"episodetype": 1,
@ -4260,7 +4260,7 @@
"id": 702,
"previoustage": 701,
"order": 74,
"linearnum": 19,
"linearnum": 2,
"chapter": 7,
"route": 3,
"episodetype": 1,
@ -4318,7 +4318,7 @@
"id": 703,
"previoustage": 702,
"order": 75,
"linearnum": 20,
"linearnum": 3,
"chapter": 7,
"route": 3,
"episodetype": 1,
@ -4379,7 +4379,7 @@
"id": 704,
"previoustage": 703,
"order": 76,
"linearnum": 21,
"linearnum": 4,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4437,7 +4437,7 @@
"id": 705,
"previoustage": 704,
"order": 77,
"linearnum": 22,
"linearnum": 5,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4495,7 +4495,7 @@
"id": 706,
"previoustage": 705,
"order": 78,
"linearnum": 23,
"linearnum": 6,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4553,7 +4553,7 @@
"id": 707,
"previoustage": 706,
"order": 79,
"linearnum": 24,
"linearnum": 7,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4611,7 +4611,7 @@
"id": 708,
"previoustage": 707,
"order": 80,
"linearnum": 25,
"linearnum": 8,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4672,7 +4672,7 @@
"id": 709,
"previoustage": 708,
"order": 81,
"linearnum": 26,
"linearnum": 9,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4730,7 +4730,7 @@
"id": 710,
"previoustage": 709,
"order": 82,
"linearnum": 27,
"linearnum": 10,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4788,7 +4788,7 @@
"id": 711,
"previoustage": 710,
"order": 83,
"linearnum": 28,
"linearnum": 11,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4846,7 +4846,7 @@
"id": 712,
"previoustage": 711,
"order": 84,
"linearnum": 29,
"linearnum": 12,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4904,7 +4904,7 @@
"id": 801,
"previoustage": 712,
"order": 85,
"linearnum": 30,
"linearnum": 1,
"chapter": 8,
"route": 4,
"episodetype": 1,
@ -4965,7 +4965,7 @@
"id": 802,
"previoustage": 801,
"order": 86,
"linearnum": 1,
"linearnum": 2,
"chapter": 8,
"route": 1,
"episodetype": 1,
@ -5026,7 +5026,7 @@
"id": 803,
"previoustage": 802,
"order": 87,
"linearnum": 2,
"linearnum": 3,
"chapter": 8,
"route": 1,
"episodetype": 1,
@ -5084,7 +5084,7 @@
"id": 804,
"previoustage": 803,
"order": 88,
"linearnum": 3,
"linearnum": 4,
"chapter": 8,
"route": 1,
"episodetype": 1,
@ -5142,7 +5142,7 @@
"id": 805,
"previoustage": 804,
"order": 89,
"linearnum": 4,
"linearnum": 5,
"chapter": 8,
"route": 1,
"episodetype": 1,
@ -5200,7 +5200,7 @@
"id": 806,
"previoustage": 805,
"order": 90,
"linearnum": 5,
"linearnum": 6,
"chapter": 8,
"route": 1,
"episodetype": 1,
@ -5261,7 +5261,7 @@
"id": 807,
"previoustage": 806,
"order": 91,
"linearnum": 6,
"linearnum": 7,
"chapter": 8,
"route": 2,
"episodetype": 1,
@ -5319,7 +5319,7 @@
"id": 808,
"previoustage": 807,
"order": 92,
"linearnum": 7,
"linearnum": 8,
"chapter": 8,
"route": 2,
"episodetype": 1,
@ -5377,7 +5377,7 @@
"id": 809,
"previoustage": 808,
"order": 93,
"linearnum": 8,
"linearnum": 9,
"chapter": 8,
"route": 2,
"episodetype": 1,
@ -5435,7 +5435,7 @@
"id": 810,
"previoustage": 809,
"order": 94,
"linearnum": 9,
"linearnum": 10,
"chapter": 8,
"route": 2,
"episodetype": 1,
@ -5493,7 +5493,7 @@
"id": 811,
"previoustage": 810,
"order": 95,
"linearnum": 10,
"linearnum": 11,
"chapter": 8,
"route": 2,
"episodetype": 1,
@ -5554,7 +5554,7 @@
"id": 812,
"previoustage": 811,
"order": 96,
"linearnum": 11,
"linearnum": 12,
"chapter": 8,
"route": 2,
"episodetype": 1,
@ -5612,7 +5612,7 @@
"id": 901,
"previoustage": 812,
"order": 97,
"linearnum": 12,
"linearnum": 1,
"chapter": 9,
"route": 2,
"episodetype": 1,
@ -5670,7 +5670,7 @@
"id": 902,
"previoustage": 901,
"order": 98,
"linearnum": 13,
"linearnum": 2,
"chapter": 9,
"route": 2,
"episodetype": 1,
@ -5728,7 +5728,7 @@
"id": 903,
"previoustage": 902,
"order": 99,
"linearnum": 14,
"linearnum": 3,
"chapter": 9,
"route": 2,
"episodetype": 1,
@ -5786,7 +5786,7 @@
"id": 904,
"previoustage": 903,
"order": 100,
"linearnum": 15,
"linearnum": 4,
"chapter": 9,
"route": 2,
"episodetype": 1,
@ -5847,7 +5847,7 @@
"id": 905,
"previoustage": 904,
"order": 101,
"linearnum": 16,
"linearnum": 5,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -5905,7 +5905,7 @@
"id": 906,
"previoustage": 905,
"order": 102,
"linearnum": 17,
"linearnum": 6,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -5963,7 +5963,7 @@
"id": 907,
"previoustage": 906,
"order": 103,
"linearnum": 18,
"linearnum": 7,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -6021,7 +6021,7 @@
"id": 908,
"previoustage": 907,
"order": 104,
"linearnum": 19,
"linearnum": 8,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -6079,7 +6079,7 @@
"id": 909,
"previoustage": 908,
"order": 105,
"linearnum": 20,
"linearnum": 9,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -6140,7 +6140,7 @@
"id": 910,
"previoustage": 909,
"order": 106,
"linearnum": 21,
"linearnum": 10,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -6198,7 +6198,7 @@
"id": 911,
"previoustage": 910,
"order": 107,
"linearnum": 22,
"linearnum": 11,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -6256,7 +6256,7 @@
"id": 912,
"previoustage": 911,
"order": 108,
"linearnum": 23,
"linearnum": 12,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -6314,7 +6314,7 @@
"id": 1001,
"previoustage": 912,
"order": 109,
"linearnum": 24,
"linearnum": 1,
"chapter": 10,
"route": 3,
"episodetype": 1,
@ -6372,7 +6372,7 @@
"id": 1002,
"previoustage": 1001,
"order": 110,
"linearnum": 25,
"linearnum": 2,
"chapter": 10,
"route": 3,
"episodetype": 1,
@ -6433,7 +6433,7 @@
"id": 1003,
"previoustage": 1002,
"order": 111,
"linearnum": 26,
"linearnum": 3,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6491,7 +6491,7 @@
"id": 1004,
"previoustage": 1003,
"order": 112,
"linearnum": 27,
"linearnum": 4,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6549,7 +6549,7 @@
"id": 1005,
"previoustage": 1004,
"order": 113,
"linearnum": 28,
"linearnum": 5,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6607,7 +6607,7 @@
"id": 1006,
"previoustage": 1005,
"order": 114,
"linearnum": 29,
"linearnum": 6,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6665,7 +6665,7 @@
"id": 1007,
"previoustage": 1006,
"order": 115,
"linearnum": 30,
"linearnum": 7,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6726,7 +6726,7 @@
"id": 1008,
"previoustage": 1007,
"order": 116,
"linearnum": 31,
"linearnum": 8,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6784,7 +6784,7 @@
"id": 1009,
"previoustage": 1008,
"order": 117,
"linearnum": 32,
"linearnum": 9,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6842,7 +6842,7 @@
"id": 1010,
"previoustage": 1009,
"order": 118,
"linearnum": 33,
"linearnum": 10,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6900,7 +6900,7 @@
"id": 1011,
"previoustage": 1010,
"order": 119,
"linearnum": 34,
"linearnum": 11,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6958,7 +6958,7 @@
"id": 1012,
"previoustage": 1011,
"order": 120,
"linearnum": 35,
"linearnum": 12,
"chapter": 10,
"route": 4,
"episodetype": 1,

View File

@ -561,7 +561,7 @@
"id": 111,
"previoustage": 110,
"order": 11,
"linearnum": 1,
"linearnum": 11,
"chapter": 1,
"route": 1,
"episodetype": 1,
@ -622,7 +622,7 @@
"id": 112,
"previoustage": 111,
"order": 12,
"linearnum": 2,
"linearnum": 12,
"chapter": 1,
"route": 1,
"episodetype": 1,
@ -680,7 +680,7 @@
"id": 201,
"previoustage": 112,
"order": 13,
"linearnum": 3,
"linearnum": 1,
"chapter": 2,
"route": 1,
"episodetype": 1,
@ -738,7 +738,7 @@
"id": 202,
"previoustage": 201,
"order": 14,
"linearnum": 4,
"linearnum": 2,
"chapter": 2,
"route": 1,
"episodetype": 1,
@ -796,7 +796,7 @@
"id": 203,
"previoustage": 202,
"order": 15,
"linearnum": 5,
"linearnum": 3,
"chapter": 2,
"route": 1,
"episodetype": 1,
@ -857,7 +857,7 @@
"id": 204,
"previoustage": 203,
"order": 16,
"linearnum": 6,
"linearnum": 4,
"chapter": 2,
"route": 2,
"episodetype": 1,
@ -915,7 +915,7 @@
"id": 205,
"previoustage": 204,
"order": 17,
"linearnum": 7,
"linearnum": 5,
"chapter": 2,
"route": 2,
"episodetype": 1,
@ -973,7 +973,7 @@
"id": 206,
"previoustage": 205,
"order": 18,
"linearnum": 8,
"linearnum": 6,
"chapter": 2,
"route": 2,
"episodetype": 1,
@ -1031,7 +1031,7 @@
"id": 207,
"previoustage": 206,
"order": 19,
"linearnum": 9,
"linearnum": 7,
"chapter": 2,
"route": 2,
"episodetype": 1,
@ -1089,7 +1089,7 @@
"id": 208,
"previoustage": 207,
"order": 20,
"linearnum": 10,
"linearnum": 8,
"chapter": 2,
"route": 2,
"episodetype": 1,
@ -1150,7 +1150,7 @@
"id": 209,
"previoustage": 208,
"order": 21,
"linearnum": 11,
"linearnum": 9,
"chapter": 2,
"route": 3,
"episodetype": 1,
@ -1208,7 +1208,7 @@
"id": 210,
"previoustage": 209,
"order": 22,
"linearnum": 12,
"linearnum": 10,
"chapter": 2,
"route": 3,
"episodetype": 1,
@ -1266,7 +1266,7 @@
"id": 211,
"previoustage": 210,
"order": 23,
"linearnum": 13,
"linearnum": 11,
"chapter": 2,
"route": 3,
"episodetype": 1,
@ -1324,7 +1324,7 @@
"id": 212,
"previoustage": 211,
"order": 24,
"linearnum": 14,
"linearnum": 12,
"chapter": 2,
"route": 3,
"episodetype": 1,
@ -1382,7 +1382,7 @@
"id": 301,
"previoustage": 212,
"order": 25,
"linearnum": 15,
"linearnum": 1,
"chapter": 3,
"route": 3,
"episodetype": 1,
@ -1443,7 +1443,7 @@
"id": 302,
"previoustage": 301,
"order": 26,
"linearnum": 16,
"linearnum": 2,
"chapter": 3,
"route": 4,
"episodetype": 1,
@ -1501,7 +1501,7 @@
"id": 303,
"previoustage": 302,
"order": 27,
"linearnum": 17,
"linearnum": 3,
"chapter": 3,
"route": 4,
"episodetype": 1,
@ -1559,7 +1559,7 @@
"id": 304,
"previoustage": 303,
"order": 28,
"linearnum": 18,
"linearnum": 4,
"chapter": 3,
"route": 4,
"episodetype": 1,
@ -1617,7 +1617,7 @@
"id": 305,
"previoustage": 304,
"order": 29,
"linearnum": 19,
"linearnum": 5,
"chapter": 3,
"route": 4,
"episodetype": 1,
@ -1675,7 +1675,7 @@
"id": 306,
"previoustage": 305,
"order": 30,
"linearnum": 20,
"linearnum": 6,
"chapter": 3,
"route": 4,
"episodetype": 1,
@ -1736,7 +1736,7 @@
"id": 307,
"previoustage": 306,
"order": 31,
"linearnum": 1,
"linearnum": 7,
"chapter": 3,
"route": 1,
"episodetype": 1,
@ -1797,7 +1797,7 @@
"id": 308,
"previoustage": 307,
"order": 32,
"linearnum": 2,
"linearnum": 8,
"chapter": 3,
"route": 1,
"episodetype": 1,
@ -1855,7 +1855,7 @@
"id": 309,
"previoustage": 308,
"order": 33,
"linearnum": 3,
"linearnum": 9,
"chapter": 3,
"route": 1,
"episodetype": 1,
@ -1913,7 +1913,7 @@
"id": 310,
"previoustage": 309,
"order": 34,
"linearnum": 4,
"linearnum": 10,
"chapter": 3,
"route": 1,
"episodetype": 1,
@ -1971,7 +1971,7 @@
"id": 311,
"previoustage": 310,
"order": 35,
"linearnum": 5,
"linearnum": 11,
"chapter": 3,
"route": 1,
"episodetype": 1,
@ -2032,7 +2032,7 @@
"id": 312,
"previoustage": 311,
"order": 36,
"linearnum": 6,
"linearnum": 12,
"chapter": 3,
"route": 2,
"episodetype": 1,
@ -2090,7 +2090,7 @@
"id": 401,
"previoustage": 312,
"order": 37,
"linearnum": 7,
"linearnum": 1,
"chapter": 4,
"route": 2,
"episodetype": 1,
@ -2148,7 +2148,7 @@
"id": 402,
"previoustage": 401,
"order": 38,
"linearnum": 8,
"linearnum": 2,
"chapter": 4,
"route": 2,
"episodetype": 1,
@ -2206,7 +2206,7 @@
"id": 403,
"previoustage": 402,
"order": 39,
"linearnum": 9,
"linearnum": 3,
"chapter": 4,
"route": 2,
"episodetype": 1,
@ -2264,7 +2264,7 @@
"id": 404,
"previoustage": 403,
"order": 40,
"linearnum": 10,
"linearnum": 4,
"chapter": 4,
"route": 2,
"episodetype": 1,
@ -2325,7 +2325,7 @@
"id": 405,
"previoustage": 404,
"order": 41,
"linearnum": 11,
"linearnum": 5,
"chapter": 4,
"route": 3,
"episodetype": 1,
@ -2383,7 +2383,7 @@
"id": 406,
"previoustage": 405,
"order": 42,
"linearnum": 12,
"linearnum": 6,
"chapter": 4,
"route": 3,
"episodetype": 1,
@ -2441,7 +2441,7 @@
"id": 407,
"previoustage": 406,
"order": 43,
"linearnum": 13,
"linearnum": 7,
"chapter": 4,
"route": 3,
"episodetype": 1,
@ -2499,7 +2499,7 @@
"id": 408,
"previoustage": 407,
"order": 44,
"linearnum": 14,
"linearnum": 8,
"chapter": 4,
"route": 3,
"episodetype": 1,
@ -2557,7 +2557,7 @@
"id": 409,
"previoustage": 408,
"order": 45,
"linearnum": 15,
"linearnum": 9,
"chapter": 4,
"route": 3,
"episodetype": 1,
@ -2618,7 +2618,7 @@
"id": 410,
"previoustage": 409,
"order": 46,
"linearnum": 16,
"linearnum": 10,
"chapter": 4,
"route": 4,
"episodetype": 1,
@ -2676,7 +2676,7 @@
"id": 411,
"previoustage": 410,
"order": 47,
"linearnum": 17,
"linearnum": 11,
"chapter": 4,
"route": 4,
"episodetype": 1,
@ -2734,7 +2734,7 @@
"id": 412,
"previoustage": 411,
"order": 48,
"linearnum": 18,
"linearnum": 12,
"chapter": 4,
"route": 4,
"episodetype": 1,
@ -2792,7 +2792,7 @@
"id": 501,
"previoustage": 412,
"order": 49,
"linearnum": 19,
"linearnum": 1,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -2850,7 +2850,7 @@
"id": 502,
"previoustage": 501,
"order": 50,
"linearnum": 20,
"linearnum": 2,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -2911,7 +2911,7 @@
"id": 503,
"previoustage": 502,
"order": 51,
"linearnum": 21,
"linearnum": 3,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -2969,7 +2969,7 @@
"id": 504,
"previoustage": 503,
"order": 52,
"linearnum": 22,
"linearnum": 4,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -3027,7 +3027,7 @@
"id": 505,
"previoustage": 504,
"order": 53,
"linearnum": 23,
"linearnum": 5,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -3085,7 +3085,7 @@
"id": 506,
"previoustage": 505,
"order": 54,
"linearnum": 24,
"linearnum": 6,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -3143,7 +3143,7 @@
"id": 507,
"previoustage": 506,
"order": 55,
"linearnum": 25,
"linearnum": 7,
"chapter": 5,
"route": 4,
"episodetype": 1,
@ -3204,7 +3204,7 @@
"id": 508,
"previoustage": 507,
"order": 56,
"linearnum": 1,
"linearnum": 8,
"chapter": 5,
"route": 1,
"episodetype": 1,
@ -3265,7 +3265,7 @@
"id": 509,
"previoustage": 508,
"order": 57,
"linearnum": 2,
"linearnum": 9,
"chapter": 5,
"route": 1,
"episodetype": 1,
@ -3323,7 +3323,7 @@
"id": 510,
"previoustage": 509,
"order": 58,
"linearnum": 3,
"linearnum": 10,
"chapter": 5,
"route": 1,
"episodetype": 1,
@ -3381,7 +3381,7 @@
"id": 511,
"previoustage": 510,
"order": 59,
"linearnum": 4,
"linearnum": 11,
"chapter": 5,
"route": 1,
"episodetype": 1,
@ -3439,7 +3439,7 @@
"id": 512,
"previoustage": 511,
"order": 60,
"linearnum": 5,
"linearnum": 12,
"chapter": 5,
"route": 1,
"episodetype": 1,
@ -3500,7 +3500,7 @@
"id": 601,
"previoustage": 512,
"order": 61,
"linearnum": 6,
"linearnum": 1,
"chapter": 6,
"route": 2,
"episodetype": 1,
@ -3558,7 +3558,7 @@
"id": 602,
"previoustage": 601,
"order": 62,
"linearnum": 7,
"linearnum": 2,
"chapter": 6,
"route": 2,
"episodetype": 1,
@ -3616,7 +3616,7 @@
"id": 603,
"previoustage": 602,
"order": 63,
"linearnum": 8,
"linearnum": 3,
"chapter": 6,
"route": 2,
"episodetype": 1,
@ -3674,7 +3674,7 @@
"id": 604,
"previoustage": 603,
"order": 64,
"linearnum": 9,
"linearnum": 4,
"chapter": 6,
"route": 2,
"episodetype": 1,
@ -3732,7 +3732,7 @@
"id": 605,
"previoustage": 604,
"order": 65,
"linearnum": 10,
"linearnum": 5,
"chapter": 6,
"route": 2,
"episodetype": 1,
@ -3793,7 +3793,7 @@
"id": 606,
"previoustage": 605,
"order": 66,
"linearnum": 11,
"linearnum": 6,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -3851,7 +3851,7 @@
"id": 607,
"previoustage": 606,
"order": 67,
"linearnum": 12,
"linearnum": 7,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -3909,7 +3909,7 @@
"id": 608,
"previoustage": 607,
"order": 68,
"linearnum": 13,
"linearnum": 8,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -3967,7 +3967,7 @@
"id": 609,
"previoustage": 608,
"order": 69,
"linearnum": 14,
"linearnum": 9,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -4025,7 +4025,7 @@
"id": 610,
"previoustage": 609,
"order": 70,
"linearnum": 15,
"linearnum": 10,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -4086,7 +4086,7 @@
"id": 611,
"previoustage": 610,
"order": 71,
"linearnum": 16,
"linearnum": 11,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -4144,7 +4144,7 @@
"id": 612,
"previoustage": 611,
"order": 72,
"linearnum": 17,
"linearnum": 12,
"chapter": 6,
"route": 3,
"episodetype": 1,
@ -4202,7 +4202,7 @@
"id": 701,
"previoustage": 612,
"order": 73,
"linearnum": 18,
"linearnum": 1,
"chapter": 7,
"route": 3,
"episodetype": 1,
@ -4260,7 +4260,7 @@
"id": 702,
"previoustage": 701,
"order": 74,
"linearnum": 19,
"linearnum": 2,
"chapter": 7,
"route": 3,
"episodetype": 1,
@ -4318,7 +4318,7 @@
"id": 703,
"previoustage": 702,
"order": 75,
"linearnum": 20,
"linearnum": 3,
"chapter": 7,
"route": 3,
"episodetype": 1,
@ -4379,7 +4379,7 @@
"id": 704,
"previoustage": 703,
"order": 76,
"linearnum": 21,
"linearnum": 4,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4437,7 +4437,7 @@
"id": 705,
"previoustage": 704,
"order": 77,
"linearnum": 22,
"linearnum": 5,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4495,7 +4495,7 @@
"id": 706,
"previoustage": 705,
"order": 78,
"linearnum": 23,
"linearnum": 6,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4553,7 +4553,7 @@
"id": 707,
"previoustage": 706,
"order": 79,
"linearnum": 24,
"linearnum": 7,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4611,7 +4611,7 @@
"id": 708,
"previoustage": 707,
"order": 80,
"linearnum": 25,
"linearnum": 8,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4672,7 +4672,7 @@
"id": 709,
"previoustage": 708,
"order": 81,
"linearnum": 26,
"linearnum": 9,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4730,7 +4730,7 @@
"id": 710,
"previoustage": 709,
"order": 82,
"linearnum": 27,
"linearnum": 10,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4788,7 +4788,7 @@
"id": 711,
"previoustage": 710,
"order": 83,
"linearnum": 28,
"linearnum": 11,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4846,7 +4846,7 @@
"id": 712,
"previoustage": 711,
"order": 84,
"linearnum": 29,
"linearnum": 12,
"chapter": 7,
"route": 4,
"episodetype": 1,
@ -4904,7 +4904,7 @@
"id": 801,
"previoustage": 712,
"order": 85,
"linearnum": 30,
"linearnum": 1,
"chapter": 8,
"route": 4,
"episodetype": 1,
@ -4965,7 +4965,7 @@
"id": 802,
"previoustage": 801,
"order": 86,
"linearnum": 1,
"linearnum": 2,
"chapter": 8,
"route": 1,
"episodetype": 1,
@ -5026,7 +5026,7 @@
"id": 803,
"previoustage": 802,
"order": 87,
"linearnum": 2,
"linearnum": 3,
"chapter": 8,
"route": 1,
"episodetype": 1,
@ -5084,7 +5084,7 @@
"id": 804,
"previoustage": 803,
"order": 88,
"linearnum": 3,
"linearnum": 4,
"chapter": 8,
"route": 1,
"episodetype": 1,
@ -5142,7 +5142,7 @@
"id": 805,
"previoustage": 804,
"order": 89,
"linearnum": 4,
"linearnum": 5,
"chapter": 8,
"route": 1,
"episodetype": 1,
@ -5200,7 +5200,7 @@
"id": 806,
"previoustage": 805,
"order": 90,
"linearnum": 5,
"linearnum": 6,
"chapter": 8,
"route": 1,
"episodetype": 1,
@ -5261,7 +5261,7 @@
"id": 807,
"previoustage": 806,
"order": 91,
"linearnum": 6,
"linearnum": 7,
"chapter": 8,
"route": 2,
"episodetype": 1,
@ -5319,7 +5319,7 @@
"id": 808,
"previoustage": 807,
"order": 92,
"linearnum": 7,
"linearnum": 8,
"chapter": 8,
"route": 2,
"episodetype": 1,
@ -5377,7 +5377,7 @@
"id": 809,
"previoustage": 808,
"order": 93,
"linearnum": 8,
"linearnum": 9,
"chapter": 8,
"route": 2,
"episodetype": 1,
@ -5435,7 +5435,7 @@
"id": 810,
"previoustage": 809,
"order": 94,
"linearnum": 9,
"linearnum": 10,
"chapter": 8,
"route": 2,
"episodetype": 1,
@ -5493,7 +5493,7 @@
"id": 811,
"previoustage": 810,
"order": 95,
"linearnum": 10,
"linearnum": 11,
"chapter": 8,
"route": 2,
"episodetype": 1,
@ -5554,7 +5554,7 @@
"id": 812,
"previoustage": 811,
"order": 96,
"linearnum": 11,
"linearnum": 12,
"chapter": 8,
"route": 2,
"episodetype": 1,
@ -5612,7 +5612,7 @@
"id": 901,
"previoustage": 812,
"order": 97,
"linearnum": 12,
"linearnum": 1,
"chapter": 9,
"route": 2,
"episodetype": 1,
@ -5670,7 +5670,7 @@
"id": 902,
"previoustage": 901,
"order": 98,
"linearnum": 13,
"linearnum": 2,
"chapter": 9,
"route": 2,
"episodetype": 1,
@ -5728,7 +5728,7 @@
"id": 903,
"previoustage": 902,
"order": 99,
"linearnum": 14,
"linearnum": 3,
"chapter": 9,
"route": 2,
"episodetype": 1,
@ -5786,7 +5786,7 @@
"id": 904,
"previoustage": 903,
"order": 100,
"linearnum": 15,
"linearnum": 4,
"chapter": 9,
"route": 2,
"episodetype": 1,
@ -5847,7 +5847,7 @@
"id": 905,
"previoustage": 904,
"order": 101,
"linearnum": 16,
"linearnum": 5,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -5905,7 +5905,7 @@
"id": 906,
"previoustage": 905,
"order": 102,
"linearnum": 17,
"linearnum": 6,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -5963,7 +5963,7 @@
"id": 907,
"previoustage": 906,
"order": 103,
"linearnum": 18,
"linearnum": 7,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -6021,7 +6021,7 @@
"id": 908,
"previoustage": 907,
"order": 104,
"linearnum": 19,
"linearnum": 8,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -6079,7 +6079,7 @@
"id": 909,
"previoustage": 908,
"order": 105,
"linearnum": 20,
"linearnum": 9,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -6140,7 +6140,7 @@
"id": 910,
"previoustage": 909,
"order": 106,
"linearnum": 21,
"linearnum": 10,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -6198,7 +6198,7 @@
"id": 911,
"previoustage": 910,
"order": 107,
"linearnum": 22,
"linearnum": 11,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -6256,7 +6256,7 @@
"id": 912,
"previoustage": 911,
"order": 108,
"linearnum": 23,
"linearnum": 12,
"chapter": 9,
"route": 3,
"episodetype": 1,
@ -6314,7 +6314,7 @@
"id": 1001,
"previoustage": 912,
"order": 109,
"linearnum": 24,
"linearnum": 1,
"chapter": 10,
"route": 3,
"episodetype": 1,
@ -6372,7 +6372,7 @@
"id": 1002,
"previoustage": 1001,
"order": 110,
"linearnum": 25,
"linearnum": 2,
"chapter": 10,
"route": 3,
"episodetype": 1,
@ -6433,7 +6433,7 @@
"id": 1003,
"previoustage": 1002,
"order": 111,
"linearnum": 26,
"linearnum": 3,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6491,7 +6491,7 @@
"id": 1004,
"previoustage": 1003,
"order": 112,
"linearnum": 27,
"linearnum": 4,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6549,7 +6549,7 @@
"id": 1005,
"previoustage": 1004,
"order": 113,
"linearnum": 28,
"linearnum": 5,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6607,7 +6607,7 @@
"id": 1006,
"previoustage": 1005,
"order": 114,
"linearnum": 29,
"linearnum": 6,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6665,7 +6665,7 @@
"id": 1007,
"previoustage": 1006,
"order": 115,
"linearnum": 30,
"linearnum": 7,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6726,7 +6726,7 @@
"id": 1008,
"previoustage": 1007,
"order": 116,
"linearnum": 31,
"linearnum": 8,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6784,7 +6784,7 @@
"id": 1009,
"previoustage": 1008,
"order": 117,
"linearnum": 32,
"linearnum": 9,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6842,7 +6842,7 @@
"id": 1010,
"previoustage": 1009,
"order": 118,
"linearnum": 33,
"linearnum": 10,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6900,7 +6900,7 @@
"id": 1011,
"previoustage": 1010,
"order": 119,
"linearnum": 34,
"linearnum": 11,
"chapter": 10,
"route": 4,
"episodetype": 1,
@ -6958,7 +6958,7 @@
"id": 1012,
"previoustage": 1011,
"order": 120,
"linearnum": 35,
"linearnum": 12,
"chapter": 10,
"route": 4,
"episodetype": 1,

View File

@ -241,7 +241,7 @@
},
{
"id": 25001,
"preson": "25001",
"preson": "90002",
"ico": "tx_js_25001",
"img": "sbkp_js_25001",
"heroimg": "hbkp_js_25001",
@ -265,7 +265,7 @@
},
{
"id": 25004,
"preson": "25004",
"preson": "90003",
"ico": "tx_js_25004",
"img": "sbkp_js_25004",
"heroimg": "hbkp_js_25004",
@ -386,9 +386,9 @@
{
"id": 35001,
"preson": "35001",
"ico": "tx_hhjs_35002",
"img": "sbkp_js_35002",
"heroimg": "hbkp_js_35002",
"ico": "tx_hhjs_35001",
"img": "sbkp_js_35001",
"heroimg": "hbkp_js_35001",
"portrait": "portrait_35001"
},
{
@ -522,9 +522,9 @@
{
"id": 44005,
"preson": "44005",
"ico": "tx_hhjs_35002",
"img": "sbkp_js_35002",
"heroimg": "hbkp_js_35002",
"ico": "tx_hhjs_44005",
"img": "sbkp_js_44005",
"heroimg": "hbkp_js_44005",
"portrait": "portrait_44005"
},
{
@ -554,9 +554,9 @@
{
"id": 45003,
"preson": "45003",
"ico": "tx_hhjs_35002",
"img": "sbkp_js_35002",
"heroimg": "hbkp_js_35002",
"ico": "tx_hhjs_45003",
"img": "sbkp_js_45003",
"heroimg": "hbkp_js_45003",
"portrait": "portrait_45003"
},
{

File diff suppressed because it is too large Load Diff

View File

@ -410,7 +410,7 @@
"active": 0,
"id_after": 0,
"jump_interface": "mainworld",
"icon": "wp_icon_0001",
"icon": "rw_cj_icon01",
"reword": [
{
"a": "attr",
@ -430,7 +430,7 @@
"active": 0,
"id_after": 30102,
"jump_interface": "mainworld",
"icon": "rw_cj_icon04",
"icon": "rw_cj_icon02",
"reword": [
{
"a": "attr",
@ -450,7 +450,7 @@
"active": 0,
"id_after": 30103,
"jump_interface": "mainworld",
"icon": "rw_cj_icon05",
"icon": "rw_cj_icon09",
"reword": [
{
"a": "attr",
@ -470,7 +470,7 @@
"active": 0,
"id_after": 30104,
"jump_interface": "mainworld",
"icon": "rw_cj_icon06",
"icon": "rw_cj_icon10",
"reword": [
{
"a": "attr",
@ -490,7 +490,7 @@
"active": 0,
"id_after": 30105,
"jump_interface": "mainworld",
"icon": "rw_cj_icon07",
"icon": "rw_cj_icon11",
"reword": [
{
"a": "attr",
@ -510,7 +510,7 @@
"active": 0,
"id_after": 30106,
"jump_interface": "mainworld",
"icon": "rw_cj_icon08",
"icon": "rw_cj_icon12",
"reword": [
{
"a": "attr",
@ -530,7 +530,7 @@
"active": 0,
"id_after": 30107,
"jump_interface": "mainworld",
"icon": "rw_cj_icon09",
"icon": "rw_cj_icon13",
"reword": [
{
"a": "attr",
@ -550,7 +550,7 @@
"active": 0,
"id_after": 30108,
"jump_interface": "mainworld",
"icon": "rw_cj_icon10",
"icon": "rw_cj_icon14",
"reword": [
{
"a": "attr",
@ -570,7 +570,7 @@
"active": 0,
"id_after": 30109,
"jump_interface": "mainworld",
"icon": "rw_cj_icon11",
"icon": "rw_cj_icon15",
"reword": [
{
"a": "attr",
@ -590,7 +590,7 @@
"active": 0,
"id_after": 30110,
"jump_interface": "mainworld",
"icon": "rw_cj_icon12",
"icon": "rw_cj_icon16",
"reword": [
{
"a": "attr",
@ -610,7 +610,7 @@
"active": 0,
"id_after": 30111,
"jump_interface": "mainworld",
"icon": "rw_cj_icon13",
"icon": "rw_cj_icon17",
"reword": [
{
"a": "attr",
@ -630,7 +630,7 @@
"active": 0,
"id_after": 30112,
"jump_interface": "mainworld",
"icon": "rw_cj_icon14",
"icon": "rw_cj_icon18",
"reword": [
{
"a": "attr",
@ -650,7 +650,7 @@
"active": 0,
"id_after": 30113,
"jump_interface": "mainworld",
"icon": "rw_cj_icon15",
"icon": "rw_cj_icon01",
"reword": [
{
"a": "attr",
@ -670,7 +670,7 @@
"active": 0,
"id_after": 30114,
"jump_interface": "mainworld",
"icon": "rw_cj_icon16",
"icon": "rw_cj_icon02",
"reword": [
{
"a": "attr",
@ -690,7 +690,7 @@
"active": 0,
"id_after": 30115,
"jump_interface": "mainworld",
"icon": "rw_cj_icon17",
"icon": "rw_cj_icon09",
"reword": [
{
"a": "attr",
@ -710,7 +710,7 @@
"active": 0,
"id_after": 30116,
"jump_interface": "mainworld",
"icon": "rw_cj_icon18",
"icon": "rw_cj_icon10",
"reword": [
{
"a": "attr",
@ -730,7 +730,7 @@
"active": 0,
"id_after": 30117,
"jump_interface": "mainworld",
"icon": "rw_cj_icon01",
"icon": "rw_cj_icon11",
"reword": [
{
"a": "attr",
@ -750,7 +750,7 @@
"active": 0,
"id_after": 30118,
"jump_interface": "mainworld",
"icon": "rw_cj_icon02",
"icon": "rw_cj_icon12",
"reword": [
{
"a": "attr",
@ -770,7 +770,7 @@
"active": 0,
"id_after": 30119,
"jump_interface": "mainworld",
"icon": "rw_cj_icon03",
"icon": "rw_cj_icon13",
"reword": [
{
"a": "attr",
@ -790,7 +790,7 @@
"active": 0,
"id_after": 0,
"jump_interface": "mainworld",
"icon": "rw_cj_icon04",
"icon": "rw_cj_icon14",
"reword": [
{
"a": "attr",
@ -810,7 +810,7 @@
"active": 0,
"id_after": 0,
"jump_interface": "mainworld",
"icon": "rw_cj_icon05",
"icon": "rw_cj_icon15",
"reword": [
{
"a": "attr",
@ -830,7 +830,7 @@
"active": 0,
"id_after": 0,
"jump_interface": "mainworld",
"icon": "rw_cj_icon06",
"icon": "rw_cj_icon16",
"reword": [
{
"a": "attr",
@ -850,7 +850,7 @@
"active": 0,
"id_after": 0,
"jump_interface": "mainworld",
"icon": "rw_cj_icon07",
"icon": "rw_cj_icon17",
"reword": [
{
"a": "attr",

View File

@ -24,7 +24,7 @@ var (
fmt.Printf("%d- %v\n", (i + 1), v)
}
},
enabled: true,
// enabled: true,
next: func(robot *Robot, rsp proto.Message) {
tcs := []*TestCase{}
if _, ok := rsp.(*pb.HeroListResp); ok {
@ -33,13 +33,16 @@ var (
mainType: string(comm.ModuleHero),
subType: hero.StrengthenUplv,
req: &pb.HeroStrengthenUplvReq{
HeroObjID: "62dabaacd8c5789e2cc8b95e",
ExpCards: map[string]int32{
"62dabac1d8c5789e2cc8b9d3": 1,
HeroObjID: "62de35b92f462b70c1105aa8",
ExpCards: []*pb.MapStringInt32{
{
Key: "62de35b92f462b70c1105ab8",
Value: 1,
},
},
},
rsp: &pb.HeroStrengthenUplvResp{},
enabled: true,
// enabled: true,
}
tcs = append(tcs, tc)
}
@ -50,7 +53,7 @@ var (
mainType: string(comm.ModuleHero),
subType: hero.HeroSubTypeChouka,
req: &pb.HeroChoukaReq{
HeroIds: []int32{14001, 14002, 14003, 14004, 14005, 14006, 14007},
HeroIds: []string{"14001"},
},
rsp: &pb.HeroChoukaResp{},
// enabled: true,
@ -97,8 +100,11 @@ var (
subType: hero.StrengthenUplv,
req: &pb.HeroStrengthenUplvReq{
HeroObjID: heroId,
ExpCards: map[string]int32{
"62da19017944b60fd473df61": 1,
ExpCards: []*pb.MapStringInt32{
{
Key: "62da19017944b60fd473df61",
Value: 1,
},
},
},
rsp: &pb.HeroStrengthenUplvResp{},

View File

@ -40,7 +40,7 @@ var (
subType: task.TaskSubTypeReceive,
req: &pb.TaskReceiveReq{
TaskTag: int32(comm.TASK_DAILY),
Id: "62dab21d9efd6536b1cc1bb9",
Id: "62de35b92f462b70c1105ac5",
},
rsp: &pb.TaskReceiveResp{},
// enabled: true,

View File

@ -11,14 +11,13 @@ import (
//申明测试接口及请求和响应参数
var user_builders = []*TestCase{
{
//create
desc: "创角",
desc: "修改名称",
mainType: string(comm.ModuleUser),
subType: user.UserSubTypeCreate,
req: &pb.UserCreateReq{ //设置请求参数
NickName: "乐谷70616",
subType: user.UserSubTypeModifyName,
req: &pb.UserModifynameReq{ //设置请求参数
Name: "uuuuuu",
},
rsp: &pb.UserCreateResp{},
rsp: &pb.UserModifynameResp{},
// enabled: true,
}, {
desc: "添加资源",
@ -45,7 +44,7 @@ var user_builders = []*TestCase{
N: 1,
},
},
rsp: &pb.UserAddResResp{},
rsp: &pb.UserAddResResp{},
// enabled: true,
}, {
desc: "获取配置",

View File

@ -67,6 +67,8 @@ const (
EventUserLogin core.Event_Key = "Event_UserLogin" //登录事件
EventCreateUser core.Event_Key = "Event_CreateUser" //创建角色事件
EventUserOffline core.Event_Key = "Event_UserOffline" //用户离线事件
EventUserChanged core.Event_Key = "event_user_changed" //用户数据变化
)
const (

View File

@ -60,6 +60,8 @@ type (
QueryAttributeValue(uid string, attr string) (value int32)
//添加/减少属性值 第四个参数控制是否推送给前端
AddAttributeValue(session IUserSession, attr string, add int32, bPush bool) (code pb.ErrorCode)
//用户改变事件
EventUserChanged(session IUserSession)
}
//武器模块
IEquipment interface {

65
lego/sys/event/v2/app.go Normal file
View File

@ -0,0 +1,65 @@
package event_v2
import (
"go_dreamfactory/lego/core"
"sync"
)
// 服务容器
type App struct {
//inject.Graph
sync.RWMutex
events map[core.Event_Key][]Listener // 事件
}
// 容器的目的是为了创建事件之后,为事件注入观察者,所以为了方便,直接全部解耦
// 创建
// 新建一个App可以在其中注册事件
func NewApp() *App {
app := &App{}
app.events = make(map[core.Event_Key][]Listener)
return app
}
// 给容器绑定事件,传入 类型-> 观察者的绑定
// 可以使用反射,传入类型的字符串
// 否则bind时也可以放置包括通配符的
func (app *App) Bind(t core.Event_Key, listeners []Listener) {
for k := range listeners {
app.Listen(t, listeners[k])
}
}
// 监听[事件][监听器],单独绑定一个监听器
func (app *App) Listen(str core.Event_Key, listener Listener) {
app.Lock()
app.events[str] = append(app.events[str], listener)
app.Unlock()
}
// 分发事件,传入各种事件,如果是
func (app *App) Dispatch(key core.Event_Key, events ...interface{}) {
// 容器分发数据
for k := range events {
// 如果实现了 事件接口 IEvent则调用事件的观察者模式得到所有的
var observers []Listener
if _, ok := events[k].(IEvent); ok {
obs := events[k].(IEvent).Observers()
observers = append(observers, obs...) // 将事件中自行添加的观察者,放在所有观察者之后
}
if obs, exist := app.events[key]; exist {
observers = append(observers, obs...)
}
if len(observers) > 0 {
// 得到了所有的观察者这里通过pipeline来执行通过next来控制什么时候调用这个观察者
new(Pipeline).Send(events[k]).Through(observers).Then(func(context interface{}) {
})
}
}
}

View File

@ -0,0 +1,36 @@
package event_v2
// 事件接口
type IEvent interface {
Attach(listeners ...Listener) // 事件添加观察者
Observers() []Listener // 获取所有的观察者
//Detach(listener Listener)
DetachIndexOf(index int)
}
type Event struct {
listeners []Listener
}
func (e *Event) Attach(listeners ...Listener) {
e.listeners = append(e.listeners, listeners...)
}
//func (e *Event) Detach(listener Listener) {
// for k := range e.listeners {
// if listener == e.listeners[k] {
//
// }
// }
//}
// 移除某个监听器
func (e *Event) DetachIndexOf(index int) {
if len(e.listeners) > index && index > 0 {
e.listeners = append(e.listeners[:index], e.listeners[index+1:]...)
}
}
func (e *Event) Observers() []Listener {
return e.listeners
}

View File

@ -0,0 +1,5 @@
package event_v2
// 监听器接口
type Listener func(event interface{},next func(event interface{}))

View File

@ -0,0 +1,41 @@
package event_v2
type Pipeline struct {
send interface{} // 穿过管道的上下文
through []Listener // 中间件数组
current int // 当前执行到第几个中间件
}
func (p *Pipeline) Send(context interface{}) *Pipeline {
p.send = context
return p
}
func (p *Pipeline) Through(middlewares []Listener) *Pipeline {
p.through = middlewares
return p
}
func (p *Pipeline) Exec() {
if len(p.through) > p.current {
m := p.through[p.current]
p.current += 1
m(p.send, func(c interface{}) {
p.Exec()
})
}
}
// 这里是路由的最后一站
func (p *Pipeline) Then(then func(context interface{})) {
// 按照顺序执行
// 将then作为最后一站的中间件
var m Listener
m = func(c interface{}, next func(c interface{})) {
then(c)
next(c)
}
p.through = append(p.through, m)
p.Exec()
}

View File

@ -10,8 +10,10 @@ import (
)
const (
game_global = "game_global.json"
game_initial = "game_initial.json"
game_global = "game_global.json" //全局配置表
game_initial = "game_initial.json" //初始化表
game_playerlv = "game_playerlv.json" //玩家等级
game_facemod = "game_facemod.json" // 形象配置表
)
///配置管理基础组件
@ -24,6 +26,8 @@ func (this *MCompConfigure) Init(service core.IService, module core.IModule, com
err = this.ModuleCompBase.Init(service, module, comp, options)
err = this.LoadConfigure(game_global, cfg.NewGame_global)
err = this.LoadConfigure(game_initial, cfg.NewGame_initial)
err = this.LoadConfigure(game_playerlv, cfg.NewGame_playerlv)
err = this.LoadConfigure(game_facemod, cfg.NewGame_facemod)
return
}
@ -50,7 +54,6 @@ func (this *MCompConfigure) GetConfigure(name string) (v interface{}, err error)
}
//全局配置
func (this *MCompConfigure) GetGlobalConf(key string) string {
if v, err := this.GetConfigure(game_initial); err != nil {
log.Errorf("get global conf err:%v", err)
@ -87,3 +90,54 @@ func (this *MCompConfigure) GetGlobalInitConf() (configure *cfg.Game_initial, er
}
return
}
// 主角等级经验配置列表
func (this *MCompConfigure) GetPlayerlvConfList() (list []*cfg.Game_playerlvData) {
if v, err := this.GetConfigure(game_playerlv); err != nil {
return
} else {
if configure, ok := v.(*cfg.Game_playerlv); !ok {
err = fmt.Errorf("%T no is *cfg.Game_playerlv", v)
return
} else {
if configure != nil {
list = configure.GetDataList()
}
}
}
return
}
// 玩家等级经验配置表
func (this *MCompConfigure) GetPlayerlvConf(lv int32) (data *cfg.Game_playerlvData) {
if v, err := this.GetConfigure(game_playerlv); err != nil {
return
} else {
if configure, ok := v.(*cfg.Game_playerlv); !ok {
err = fmt.Errorf("%T no is *cfg.Game_playerlv", v)
return
} else {
if configure != nil {
data = configure.GetDataMap()[lv]
}
}
}
return
}
// 玩家形象预设配置
func (this *MCompConfigure) GetPlayerFigureConf() (list []*cfg.Game_facemodData) {
if v, err := this.GetConfigure(game_facemod); err != nil {
return
} else {
if configure, ok := v.(*cfg.Game_facemod); !ok {
err = fmt.Errorf("%T no is *cfg.Game_playerlv", v)
return
} else {
if configure != nil {
list = configure.GetDataList()
}
}
}
return
}

View File

@ -492,7 +492,7 @@ func (this *MCompModel) DelListlds(uid string, ids ...string) (err error) {
func (this *MCompModel) GetUserExpand(uid string) (result *pb.DBUserExpand, err error) {
result = &pb.DBUserExpand{}
key := fmt.Sprintf("userexpand:%s", uid)
if err = this.Redis.HGetAll(key, result); err != nil && err != redis.RedisNil {
if err = this.Redis.HGetAll(key, result); err != nil {
return
}
if err == redis.RedisNil {

View File

@ -24,7 +24,9 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
var (
awakenData *cfg.Game_heroAwakenData
_hero *pb.DBHero
chanegCard []*pb.DBHero // change
)
chanegCard = make([]*pb.DBHero, 0)
code = this.AwakenCheck(session, req) // check
if code != pb.ErrorCode_Success {
return
@ -59,6 +61,14 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
if code != pb.ErrorCode_Success {
return
}
if _hero.SameCount > 1 { //有堆叠的情况
// 克隆一个新的
_hero.SameCount -= 1
newHero := this.module.modelHero.CloneNewHero(_hero)
chanegCard = append(chanegCard, newHero)
}
_hero.SameCount = 1
// 加属性 awakenData
_value, ok := strconv.Atoi(awakenData.Phasebonus[0])
if ok == nil { // 升级技能
@ -72,6 +82,7 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
}
_heroMap := map[string]interface{}{
"normalSkill": _hero.NormalSkill,
"sameCount": 1,
"isOverlying": false,
}
// 保存数据
@ -102,12 +113,12 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
}
}
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
this.module.Errorf("PushHeroProperty err!")
this.module.Errorf("ChangeHeroProperty err!")
}
_hero.Property = m
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
chanegCard = append(chanegCard, _hero)
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: chanegCard})
session.SendMsg(string(this.module.GetType()), Awaken, &pb.HeroAwakenResp{Hero: _hero})
return
}

View File

@ -33,7 +33,7 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
config5Count int32 // 配置表中5星保底次数
race int32
upDraw []*cfg.Game_drawUpdrawData // 活动数据 英雄抽卡权重增加
cardW map[string]int32 // 当前卡牌对应的权重
cardW map[string]int32 // 当前卡牌卡池卡牌对应的权重
)
upDraw = make([]*cfg.Game_drawUpdrawData, 0)
szCards = make([]string, 0)
@ -46,6 +46,9 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
for _, v := range cfgData.GetDataList() {
if time.Now().Unix() > int64(v.TimeOn) && time.Now().Unix() < int64(v.TimeOff) { // 在这个时间范围之内
upDraw = append(upDraw, v) // 记录下在这活动范围之内的数据
for index, v1 := range v.UpHero {
cardW[v1] += v.UpWeight[index]
}
}
}
}
@ -82,6 +85,7 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
for _, v := range _conf {
cardW[v.Id] += v.Weight
}
_costConf, err := this.module.configure.GetDrawCostConfigByID(req.DrawType) // 抽卡消耗
if err != nil {
code = pb.ErrorCode_ConfigNoFound
@ -103,30 +107,15 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
}
drawTimes = _costConf.Count // 抽卡次数
for k, v := range cardW { // k是heroid v 权重
for _, v1 := range upDraw {
for _, v2 := range v1.UpHero {
if v2 == k {
cardW[k] += v
}
}
// }
// if !updraw {
// totalWeight += int64(v.Weight) // 统计所有权重
// }
}
}
drawTimes = 1
for i := 0; i < int(drawTimes); i++ {
n, _ := rand.Int(rand.Reader, big.NewInt(totalWeight)) // [0,totalWeight)
for _, v := range _conf {
curWeigth += int64(v.Weight)
for k, v := range cardW {
curWeigth += int64(v)
if curWeigth < n.Int64() { // 命中
// 获取当前星级
_getCardCfg := this.module.configure.GetHero(v.Id) //获取的英雄信息
_getCardCfg := this.module.configure.GetHero(k) //获取的英雄信息
if _getCardCfg != nil {
continue
}
@ -183,7 +172,7 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
}
}
if !bGet {
szCards = append(szCards, v.Id)
szCards = append(szCards, k)
}
}
}

View File

@ -114,22 +114,17 @@ func (this *apiComp) Resonance(session comm.IUserSession, req *pb.HeroResonanceR
// 返还对应初始星级的卡
for _, v := range resonConfig.Prize {
if v.A == "hero" {
// value, err := strconv.Atoi(v.T)
// if err != nil {
// code = pb.ErrorCode_ConfigurationException
// return
// }
for i := 0; i < int(v.N); i++ { // 有多少张加多少次
this.module.modelHero.createOneHero(session.GetUserId(), v.T)
}
}
}
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
this.module.Errorf("PushHeroProperty err!")
this.module.Errorf("ChangeHeroProperty err!")
}
_hero.Property = m
changeHero = append(changeHero, _hero)
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: changeHero})
session.SendMsg(string(this.module.GetType()), Resonance, &pb.HeroResonanceResp{Hero: _hero})

View File

@ -81,11 +81,10 @@ func (this *apiComp) ResonanceReset(session comm.IUserSession, req *pb.HeroReson
code = pb.ErrorCode_DBError
return
}
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
this.module.Errorf("PushHeroProperty err!")
this.module.Errorf("ChangeHeroProperty err!")
}
_hero.Property = m
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
session.SendMsg(string(this.module.GetType()), ResonanceReset, &pb.HeroResonanceResetResp{Hero: _hero, Energy: _hero.ResonateNum})
return

View File

@ -67,11 +67,10 @@ func (this *apiComp) ResonanceUseEnergy(session comm.IUserSession, req *pb.HeroR
}
this.module.modelHero.mergeMainProperty(session.GetUserId(), _hero, property)
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
this.module.Errorf("PushHeroProperty err!")
this.module.Errorf("ChangeHeroProperty err!")
}
_hero.Property = m
session.SendMsg(string(this.module.GetType()), ResonanceUseEnergy, &pb.HeroResonanceUseEnergyResp{Hero: _hero})
return
}

View File

@ -131,11 +131,10 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroSt
return
}
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_costHero}})
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
this.module.Errorf("PushHeroProperty err!")
this.module.Errorf("ChangeHeroProperty err!")
}
_hero.Property = m
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
session.SendMsg(string(this.module.GetType()), StrengthenUpSkill, &pb.HeroStrengthenUpSkillResp{Hero: _hero})
return

View File

@ -153,11 +153,19 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStr
this.module.Errorf("del hero err card:%s,count = %d", k, v)
return
}
chanegCard = append(chanegCard, CostHeroObj[k])
}
if _hero.SameCount > 1 { //有堆叠的情况
// 克隆一个新的
_hero.SameCount -= 1
newHero := this.module.modelHero.CloneNewHero(_hero)
chanegCard = append(chanegCard, newHero)
}
_hero.Star += 1
_hero.SameCount = 1
_heroMap := map[string]interface{}{
"star": _hero.Star,
"sameCount": 1,
"isOverlying": false,
}
// 触发星级任务
@ -168,12 +176,11 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStr
code = pb.ErrorCode_DBError
this.module.Errorf("update hero skill failed:%v", err1)
}
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
code = pb.ErrorCode_Unknown
this.module.Errorf("PushHeroProperty err!")
this.module.Errorf("ChangeHeroProperty err!")
}
_hero.Property = m // 更新属性变化
chanegCard = append(chanegCard, _hero)
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: chanegCard})
session.SendMsg(string(this.module.GetType()), StrengthenUpStar, &pb.HeroStrengthenUpStarResp{Hero: _hero})

View File

@ -150,7 +150,7 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
this.module.Debugf("升级后当前等级: %d,经验: %d,需要消耗的金币: %d,增加的经验: %d", curLv, curExp, costGold, addExp)
// 执行升级逻辑
newhero, code := this.module.AddCardExp(session.GetUserId(), _hero, addExp) // 加经验
newhero, code := this.module.modelHero.AddCardExp(session.GetUserId(), _hero, addExp) // 加经验
if code != pb.ErrorCode_Success {
return
}
@ -167,7 +167,6 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
return
}
// 删除经验卡
for k, v := range _mapCost {
err1 := this.module.modelHero.consumeHeroCard(session.GetUserId(), _costExpHero[k], v)
if err1 != nil {
@ -178,12 +177,11 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
_changeHero = append(_changeHero, _costExpHero[k])
}
m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
err1 := this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
this.module.Errorf("PushHeroProperty err!")
this.module.Errorf("ChangeHeroProperty err!")
}
_hero.Property = m
_changeHero = append(_changeHero, _hero) // 升级后的英雄 hero id 不变
if newhero != nil {
_changeHero = append(_changeHero, newhero) // 原来的英雄 只是数量变化了

View File

@ -55,7 +55,7 @@ func (this *ModelHero) initHero(uid string, heroCfgId string) *pb.DBHero {
Energy: make(map[int32]int32),
Property: make(map[string]int32),
}
newHero.Property = this.PropertyCompute(uid, newHero)
this.PropertyCompute(uid, newHero)
this.initHeroSkill(newHero)
return newHero
}
@ -102,6 +102,7 @@ func (this *ModelHero) CloneNewHero(hero *pb.DBHero) (newHero *pb.DBHero) {
temp := *hero
newHero = &temp
newHero.Id = primitive.NewObjectID().Hex()
this.AddList(newHero.Uid, newHero.Id, newHero)
return
}
@ -217,7 +218,7 @@ func (this *ModelHero) getOneHero(uid, heroId string) *pb.DBHero {
return hero
}
//消耗英雄卡 (只需要传heroid即可)
//消耗英雄卡
func (this *ModelHero) consumeHeroCard(uid string, hero *pb.DBHero, count int32) (err error) {
if count == 0 {
return
@ -308,18 +309,16 @@ func (this *ModelHero) setEquipment(hero *pb.DBHero) (newHero *pb.DBHero, err er
return
}
//创建新卡
newHero = this.CloneNewHero(hero)
// newHero, err = this.createOneHero(hero.Uid, hero.HeroID)
// if err != nil {
// this.moduleHero.Errorf("%v", err)
// return
// }
update1 := make(map[string]interface{})
update1["sameCount"] = curSameCount
update1["isoverlying"] = true
newHero = this.CloneNewHero(hero)
newHero.EquipID = make([]string, 6)
newHero.IsOverlying = true
newHero.SameCount = curSameCount
update1 := make(map[string]interface{})
update["equipID"] = newHero.EquipID
update1["sameCount"] = curSameCount
update1["isoverlying"] = true
this.ChangeList(newHero.Uid, newHero.Id, update1)
} else {
update["equipID"] = hero.EquipID
@ -349,10 +348,6 @@ func (this *ModelHero) mergeMainProperty(uid string, hero *pb.DBHero, data map[s
//合并附加属性
func (this *ModelHero) mergeAddProperty(uid string, hero *pb.DBHero, data map[string]int32) {
//hero := this.getOneHero(uid, heroId)
if hero == nil {
return
}
hero.AddProperty = data
if err := this.ChangeList(uid, hero.Id, map[string]interface{}{
@ -364,36 +359,36 @@ func (this *ModelHero) mergeAddProperty(uid string, hero *pb.DBHero, data map[st
//属性计算 - 暂时放在modelHero里实现
//英雄基础属性 + 英雄等级基础属性 * 英雄成长系数 + 英雄星级对应等级属性 * 英雄品质系数
func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) map[string]int32 {
func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) {
//英雄等级基础属性levelup
heroLvCfg := this.moduleHero.configure.GetHeroLv(hero.Lv)
if heroLvCfg == nil {
return nil
return
}
//英雄基础配置 newhero
heroCfg := this.moduleHero.configure.GetHero(hero.HeroID)
if heroCfg == nil {
return nil
return
}
//品质系数
stargrowCfg := this.moduleHero.configure.GetHeroStar(heroCfg.Star)
if stargrowCfg == nil {
return nil
return
}
//英雄星级对应等级属性
heroStarCfg := this.moduleHero.configure.GetHeroLv(stargrowCfg.Level)
if heroStarCfg == nil {
return nil
return
}
//成长系数
lvGrow := this.moduleHero.configure.GetHeroLvgrow(hero.HeroID)
if lvGrow == nil {
return nil
return
}
curHp := hero.Property[comm.Hp]
@ -411,7 +406,7 @@ func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) map[string]i
(curDef + lvGrow.Def), heroLvCfg.Def, lvGrow.Defgrow, heroStarCfg.Def, stargrowCfg.StarupDef)
def, _ := mengine.ParseAndExec(exprDef)
return map[string]int32{
hero.Property = map[string]int32{
comm.Hp: int32(math.Floor(hp)),
comm.Atk: int32(math.Floor(atk)),
comm.Def: int32(math.Floor(def)),
@ -419,18 +414,18 @@ func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) map[string]i
}
//重新计算英雄属性
func (this *ModelHero) PushHeroProperty(session comm.IUserSession, hero *pb.DBHero) (m map[string]int32, err error) {
m = this.PropertyCompute(session.GetUserId(), hero)
func (this *ModelHero) ChangeHeroProperty(session comm.IUserSession, hero *pb.DBHero) (err error) {
this.PropertyCompute(session.GetUserId(), hero) //重新计算 property 的值
update := map[string]interface{}{
"property": m,
"property": hero.Property,
}
if err = this.ChangeList(session.GetUserId(), hero.Id, update); err != nil {
this.moduleHero.Errorf("PushHeroProperty err:%v", err)
this.moduleHero.Errorf("ChangeHeroProperty err:%v", err)
return
}
return //session.SendMsg("hero", "property", &pb.HeroPropertyPush{Property: m})
return
}
func (this *ModelHero) cleanData(uid string) {
@ -441,3 +436,78 @@ func (this *ModelHero) cleanData(uid string) {
}
}
}
func (this *ModelHero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhero *pb.DBHero, code pb.ErrorCode) {
var (
curExp int32
curLv int32
update map[string]interface{} // 属性变化
)
if hero == nil {
code = pb.ErrorCode_HeroNoExist
return
}
update = make(map[string]interface{}, 0)
curExp = hero.Exp
curLv = hero.Lv
var maxLv int32 // 校验等级达到上限
maxLv = hero.Star * comm.HeroStarLvRatio
_data := this.moduleHero.configure.GetHeroLv(curLv)
if _data != nil {
if maxLv <= hero.Lv && curExp >= _data.Heroexp[0].N { // 加经验之前校验是否达到最大等级
code = pb.ErrorCode_HeroMaxLv
return
}
curExp += exp // 先把经验加上
for { // 死循环判断一键升级
if maxLv <= hero.Lv && curExp >= _data.Heroexp[0].N { // 设置最大经验和等级
curLv = maxLv
curExp = _data.Heroexp[0].N
break
}
if _data.Heroexp[0].N > curExp { // 经验不够升级则不能执行升级操作
break
} else { // 升级操作
curExp -= _data.Heroexp[0].N
curLv += 1 // 经验够了 那么等级+1
_data = this.moduleHero.configure.GetHeroLv(curLv)
if _data == nil { // 等级加失败了 回到原来的等级
curLv -= 1
break
}
}
}
curCount := hero.SameCount - 1
if curCount != 0 { // 有叠加的情况
// 克隆一个英雄
newhero = this.CloneNewHero(hero)
update := map[string]interface{}{
"sameCount": curCount,
}
newhero.SameCount = curCount
if err := this.ChangeList(uid, newhero.Id, update); err != nil {
code = pb.ErrorCode_DBError
}
}
update["lv"] = curLv
update["exp"] = curExp
update["isOverlying"] = false
update["sameCount"] = 1
hero.Lv = curLv
hero.Exp = curExp
hero.IsOverlying = false
hero.SameCount = 1
if err := this.ChangeList(uid, hero.Id, update); err != nil {
code = pb.ErrorCode_DBError
}
} else {
code = pb.ErrorCode_HeroNoExist
return
}
return
}

View File

@ -102,97 +102,6 @@ func (this *Hero) QueryHeroAmount(uId string, heroCfgId string) (amount uint32)
return amount
}
// 给指定英雄加经验
func (this *Hero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhero *pb.DBHero, code pb.ErrorCode) {
var (
curExp int32
curLv int32
err1 error
update map[string]interface{} // 属性变化
)
if hero == nil {
code = pb.ErrorCode_HeroNoExist
return
}
update = make(map[string]interface{}, 0)
curExp = hero.Exp
curLv = hero.Lv
var maxLv int32 // 校验等级达到上限
maxLv = hero.Star * comm.HeroStarLvRatio
_data := this.configure.GetHeroLv(curLv)
if _data != nil {
if maxLv <= hero.Lv && curExp >= _data.Heroexp[0].N { // 加经验之前校验是否达到最大等级
code = pb.ErrorCode_HeroMaxLv
return
}
curExp += exp // 先把经验加上
for { // 死循环判断一键升级
if maxLv <= hero.Lv && curExp >= _data.Heroexp[0].N { // 设置最大经验和等级
curLv = maxLv
curExp = _data.Heroexp[0].N
break
}
if _data.Heroexp[0].N > curExp { // 经验不够升级则不能执行升级操作
break
} else { // 升级操作
curExp -= _data.Heroexp[0].N
curLv += 1 // 经验够了 那么等级+1
_data = this.configure.GetHeroLv(curLv)
if _data == nil { // 等级加失败了 回到原来的等级
curLv -= 1
break
}
}
}
// 检测等级有变化
if curLv != hero.Lv {
//data := make(map[string]int32, 0)
preConfig := this.configure.GetHeroLv(hero.Lv)
nowConfig := this.configure.GetHeroLv(curLv)
update[comm.Hp] = int32(nowConfig.Hp - preConfig.Hp)
update[comm.Atk] = int32(nowConfig.Atk - preConfig.Atk)
update[comm.Def] = int32(nowConfig.Def - preConfig.Def)
//this.modelHero.mergeMainProperty(uid, hero.Id, data)
}
curCount := hero.SameCount - 1
if curCount != 0 { // 有叠加的情况
newhero, err1 = this.modelHero.createOneHero(uid, hero.HeroID)
if err1 != nil {
code = pb.ErrorCode_DBError
}
update := map[string]interface{}{
"sameCount": curCount,
}
newhero.SameCount = curCount
if err := this.modelHero.ChangeList(uid, newhero.Id, update); err != nil {
code = pb.ErrorCode_DBError
}
}
update["lv"] = curLv
update["exp"] = curExp
update["isOverlying"] = false
update["sameCount"] = 1
hero.Lv = curLv
hero.Exp = curExp
hero.IsOverlying = false
hero.SameCount = 1
if err := this.modelHero.ChangeList(uid, hero.Id, update); err != nil {
code = pb.ErrorCode_DBError
}
} else {
code = pb.ErrorCode_HeroNoExist
return
}
return
}
// 删除指定卡牌
func (this *Hero) DelCard(udi string, hero *pb.DBHero, amount int32) (code pb.ErrorCode) {
var (

View File

@ -16,7 +16,6 @@ func (this *apiComp) ActiveListCheck(session comm.IUserSession, req *pb.TaskActi
}
func (this *apiComp) ActiveList(session comm.IUserSession, req *pb.TaskActiveListReq) (code pb.ErrorCode, data proto.Message) {
// this.moduleTask.ModuleTask.SendToTask(session.GetUserId(), comm.TaskTypeGetHero, &pb.TaskParam{First: 5})
if code = this.ActiveListCheck(session, req); code != pb.ErrorCode_Success {
return
}
@ -27,12 +26,11 @@ func (this *apiComp) ActiveList(session comm.IUserSession, req *pb.TaskActiveLis
if err != nil {
code = pb.ErrorCode_SystemError
}
// utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeActiveList, req, resp)
}()
resp.Active = this.moduleTask.modelTask.countActive(session.GetUserId(), comm.TaskTag(req.TaskTag))
//遍历活跃度奖励表
resp.List = this.moduleTask.modelTaskActive.getUserActiveList(session.GetUserId(), comm.TaskTag(req.TaskTag))
resp.List = this.moduleTask.modelTaskActive.getActiveListByTag(session.GetUserId(), comm.TaskTag(req.TaskTag))
return
}

View File

@ -28,7 +28,7 @@ func (this *apiComp) List(session comm.IUserSession, req *pb.TaskListReq) (code
// utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeList, req, rsp)
}()
rsp.List = this.moduleTask.modelTask.getTaskList(session.GetUserId(), comm.TaskTag(req.TaskTag))
rsp.List = this.moduleTask.modelTask.getTaskListByTag(session.GetUserId(), comm.TaskTag(req.TaskTag))
return
}

View File

@ -2,7 +2,6 @@ package task
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb"
"google.golang.org/protobuf/proto"
@ -27,7 +26,6 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq)
if err != nil {
code = pb.ErrorCode_SystemError
}
// utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeReceive, req, resp)
}()
userTask := this.moduleTask.modelTask.getUserTask(session.GetUserId(), req.Id)
if userTask != nil {
@ -41,10 +39,10 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq)
code = pb.ErrorCode_TaskReceived
return
}
conf, err := this.moduleTask.configure.getTaskById(userTask.TaskId)
if err != nil {
log.Errorf("get task config err:%v", err)
// 待领取的任务配置
conf := this.moduleTask.configure.getTaskById(userTask.TaskId)
if conf == nil {
code = pb.ErrorCode_ConfigNoFound
return
}
@ -63,6 +61,9 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq)
}
resp.TaskId = userTask.TaskId
// 监听玩家经验
this.moduleTask.ModuleUser.EventUserChanged(session)
}
return

View File

@ -2,6 +2,7 @@ package task
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
@ -62,11 +63,11 @@ func (this *configureComp) getTaskRoundCfg() (data *cfg.Game_taskRound, err erro
}
//根据taskId获取配置
func (this *configureComp) getTaskById(taskId int32) (data *cfg.Game_taskRoundData, err error) {
func (this *configureComp) getTaskById(taskId int32) (data *cfg.Game_taskRoundData) {
cfg, err := this.getTaskRoundCfg()
if err != nil {
log.Errorf("%v", err)
return data, err
return nil
}
if cfg != nil {
data = cfg.GetDataMap()[taskId]
@ -74,6 +75,28 @@ func (this *configureComp) getTaskById(taskId int32) (data *cfg.Game_taskRoundDa
return
}
//是否第一个成就任务
func (this *configureComp) isFirstTask(taskId int32) bool {
data := this.getTaskByTag(int32(comm.TASK_ACHIEVE))
for _, v := range data {
if v.IdAfter == taskId {
return false
}
}
return true
}
// 上一个任务
func (this *configureComp) getPreTask(preTaskId int32) *cfg.Game_taskRoundData {
data := this.getTaskByTag(int32(comm.TASK_ACHIEVE))
for _, v := range data {
if v.IdAfter == preTaskId {
return v
}
}
return nil
}
//获取任务配置列表
func (this *configureComp) getTaskList() (data []*cfg.Game_taskRoundData, err error) {
cfg, err := this.getTaskRoundCfg()
@ -116,11 +139,11 @@ func (this *configureComp) getSortedTasks(taskType int32) (data []*cfg.Game_task
}
//获取任务配置 条件 tasktag
func (this *configureComp) getTaskByTag(taskTag int32) (data []*cfg.Game_taskRoundData, err error) {
func (this *configureComp) getTaskByTag(taskTag int32) (data []*cfg.Game_taskRoundData) {
list, err := this.getTaskList()
if err != nil {
log.Errorf("%v", err)
return data, err
return data
}
for _, d := range list {
if d.IdTag == taskTag {

View File

@ -46,8 +46,16 @@ func (this *ModelTaskActive) initActiveReward(uid string) {
}
}
func (this *ModelTaskActive) getActiveList(uid string) (list []*pb.DBTaskActive) {
if err := this.GetList(uid, &list); err != nil {
log.Errorf("getActiveList err:%v", err)
return list
}
return
}
//获取玩家活跃度列表
func (this *ModelTaskActive) getUserActiveList(uid string, taskTag comm.TaskTag) (list []*pb.DBTaskActive) {
func (this *ModelTaskActive) getActiveListByTag(uid string, taskTag comm.TaskTag) (list []*pb.DBTaskActive) {
al := []*pb.DBTaskActive{}
if err := this.GetList(uid, &al); err != nil {
log.Errorf("getUserActiveList err:%v", err)
@ -65,7 +73,7 @@ func (this *ModelTaskActive) getUserActiveList(uid string, taskTag comm.TaskTag)
//获取玩家活跃记录 id 唯一ID
func (this *ModelTaskActive) getUserActive(uid, id string, taskTag comm.TaskTag) *pb.DBTaskActive {
record := this.getUserActiveList(uid, taskTag)
record := this.getActiveListByTag(uid, taskTag)
for _, v := range record {
if v.Id == id {
return v
@ -112,14 +120,16 @@ func (this *ModelTaskActive) receiveHandle(uid, id string, conf *cfg.Game_active
}
//清空任务
func (this *ModelTaskActive) clearTask(uid string, taskTag comm.TaskTag) error {
data := this.getUserActiveList(uid, taskTag)
func (this *ModelTaskActive) clearTask(uid string, taskTag ...comm.TaskTag) {
if len(taskTag) == 0 {
log.Errorf("least one param for taskTag")
return
}
data := this.getActiveListByTag(uid, taskTag[0])
for _, v := range data {
if err := this.moduleTask.modelTaskActive.DelListlds(uid, v.Id); err != nil {
log.Errorf("uid: %v taskTag:%v err:%v", uid, taskTag, err)
return err
log.Errorf("uid: %v err:%v", uid, err)
return
}
}
return nil
}

View File

@ -6,6 +6,7 @@ import (
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"sort"
"go.mongodb.org/mongo-driver/bson/primitive"
)
@ -26,19 +27,79 @@ func (this *ModelTask) Init(service core.IService, module core.IModule, comp cor
return
}
// 玩家的所有任务列表
func (this *ModelTask) getTaskList(uid string) (list []*pb.DBTask) {
if err := this.GetList(uid, &list); err != nil {
log.Errorf("getTaskList err %v", err)
return
}
return
}
//获取玩家任务列表
func (this *ModelTask) getTaskList(uid string, taskTag comm.TaskTag) (newlist []*pb.DBTask) {
func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) (newlist []*pb.DBTask) {
list := []*pb.DBTask{}
if err := this.GetList(uid, &list); err != nil {
log.Errorf("getTaskList err %v", err)
return
}
sort.SliceStable(list, func(i, j int) bool {
return list[i].Sort < list[j].Sort
})
var taskList []*pb.DBTask
for _, v := range list {
if v.Tag == int32(taskTag) {
newlist = append(newlist, v)
taskList = append(taskList, v)
}
}
// 当前玩家任务
getCurTask := func(taskId int32) *pb.DBTask {
for _, v := range list {
if v.TaskId == taskId {
return v
}
}
return nil
}
if taskTag == comm.TASK_ACHIEVE {
for _, v := range taskList {
if curTask := this.moduleTask.configure.getTaskById(v.TaskId); curTask != nil {
if v.Received == 0 && curTask.IdAfter == 0 && this.moduleTask.configure.isFirstTask(curTask.Key) { //未领取和没有下个连续任务的
newlist = append(newlist, v)
} else if this.moduleTask.configure.isFirstTask(curTask.Key) && curTask.IdAfter != 0 { //连续任务的第一个任务
next := this.moduleTask.configure.getTaskById(curTask.IdAfter)
if next != nil && v.Received == 0 {
newlist = append(newlist, v)
}
} else if !this.moduleTask.configure.isFirstTask(curTask.Key) && curTask.IdAfter == 0 { //连续任务的最后一个任务
// 上个任务
if preCnf := this.moduleTask.configure.getPreTask(curTask.Key); preCnf != nil {
if preTask := getCurTask(preCnf.Key); preTask != nil {
if preTask.Received == 1 { //判断上个任务领取了才显示最后一个任务
newlist = append(newlist, v)
}
}
}
} else {
if preCnf := this.moduleTask.configure.getPreTask(curTask.Key); preCnf != nil {
if preTask := getCurTask(preCnf.Key); preTask != nil {
if preTask.Received == 1 { //判断上个任务领取了才显示最后一个任务
newlist = append(newlist, v)
}
}
}
}
}
}
} else {
newlist = taskList
}
return
}
@ -46,7 +107,7 @@ func (this *ModelTask) getTaskList(uid string, taskTag comm.TaskTag) (newlist []
func (this *ModelTask) getTaskById(uid string, taskId int32) (newlist []*pb.DBTask) {
list := []*pb.DBTask{}
if err := this.GetList(uid, &list); err != nil {
log.Errorf("getTaskList err %v", err)
log.Errorf("getTaskById err %v", err)
return
}
@ -71,6 +132,7 @@ func (this *ModelTask) initTask(uid string) error {
TaskId: cnf.Key,
Active: cnf.Active,
Progress: cnf.ConditionSecond,
Sort: cnf.IdList,
}
if err := this.AddList(uid, task.Id, task); err != nil {
log.Errorf("initTask addlists err %v", err)
@ -104,7 +166,7 @@ func (this *ModelTask) getUnFinishTasks(uid string, taskId int32) (list []*pb.DB
//活跃度统计
func (this *ModelTask) countActive(uid string, taskTag comm.TaskTag) (total int32) {
taskList := this.getTaskList(uid, taskTag)
taskList := this.getTaskListByTag(uid, taskTag)
for _, v := range taskList {
if v.Status == 1 {
total += v.Active
@ -134,28 +196,27 @@ func (this *ModelTask) modifyUserTask(uid string, taskId string, data map[string
}
//清空任务
func (this *ModelTask) clearTask(uid string, taskTag comm.TaskTag) error {
taskList := this.getTaskList(uid, taskTag)
func (this *ModelTask) clearTask(uid string, taskTag ...comm.TaskTag) {
if len(taskTag) == 0 {
log.Errorf("least one param for taskTag")
return
}
taskList := this.getTaskListByTag(uid, taskTag[0])
for _, v := range taskList {
if err := this.moduleTask.modelTask.DelListlds(uid, v.Id); err != nil {
log.Errorf("uid: %v taskTag:%v err:%v", uid, taskTag, err)
return err
log.Errorf("uid: %v err:%v", uid, err)
return
}
}
return nil
}
//进入卡牌攻略
func (this *ModelTask) inStrategy(uid string, heroCfgId int32) (taskIds []int32, err error) {
//检查此英雄攻略是否完成
taskList := this.getTaskList(uid, comm.TASK_STRATEGY)
taskList := this.getTaskListByTag(uid, comm.TASK_STRATEGY)
allFinished := true
for _, v := range taskList {
conf, err := this.moduleTask.configure.getTaskById(v.TaskId)
if err != nil {
this.moduleTask.Errorf("get task[%v] config err %v", v.TaskId, err)
return nil, err
}
conf := this.moduleTask.configure.getTaskById(v.TaskId)
if conf != nil {
if conf.RestrictiveCondition == heroCfgId && v.Status != 1 {
allFinished = false
@ -197,13 +258,13 @@ func (this *ModelTask) UpHeroStar(uid string, taskId int32, tp *pb.TaskParam) *p
func (this *ModelTask) UpHeroLevel(uid string, taskId int32, tp *pb.TaskParam) *pb.DBTask {
if task, ok := this.checkTask(uid, taskId); ok {
var progress int32
// 任务完成
if tp.Second >= task.Progress {
progress = 0
//修改玩家任务状态和进度
update := map[string]interface{}{
"progress": progress,
"status": 1,
}
update["status"] = 1
if err := this.modifyUserTask(task.Uid, task.Id, update); err != nil {
log.Errorf("err %v", err)
return nil
@ -212,6 +273,7 @@ func (this *ModelTask) UpHeroLevel(uid string, taskId int32, tp *pb.TaskParam) *
task.Status = 1
return task
} else {
// 任务未完成
progress = task.Progress - tp.Second
if progress <= 0 {
progress = 0

View File

@ -57,17 +57,9 @@ func (this *ModuleTask) InitTaskAll(uid string) {
//重置任务
func (this *ModuleTask) ResetTask(uid string, taskTag comm.TaskTag) {
if err := this.modelTask.clearTask(uid, taskTag); err != nil {
log.Errorf("uid:%v tag:%v ResetTask err:%v", uid, taskTag, err)
return
}
this.modelTask.clearTask(uid, taskTag)
this.modelTaskActive.clearTask(uid, taskTag)
this.InitTaskAll(uid)
if err := this.modelTaskActive.clearTask(uid, taskTag); err != nil {
log.Errorf("uid:%v tag:%v ResetTaskActive err:%v", uid, taskTag, err)
return
}
// this.modelTaskActive.initActiveRewardByTag(uid, taskTag)
}
//任务处理
@ -96,13 +88,8 @@ func (this *ModuleTask) CreateTaskForStrategy(uid string, heroCfgId int32) {
// 清理任务数据
func (this *ModuleTask) CleanData(uid string) {
this.modelTask.clearTask(uid, comm.TASK_DAILY)
this.modelTask.clearTask(uid, comm.TASK_WEEKLY)
this.modelTask.clearTask(uid, comm.TASK_ACHIEVE)
this.modelTask.clearTask(uid, comm.TASK_STRATEGY)
this.modelTaskActive.clearTask(uid, comm.TASK_DAILY)
this.modelTaskActive.clearTask(uid, comm.TASK_WEEKLY)
this.modelTask.clearTask(uid)
this.modelTaskActive.clearTask(uid)
}
//任务处理器注册
@ -125,7 +112,7 @@ func (this *ModuleTask) initTaskHandle() {
case int32(comm.TaskTypeUpHeroLevel):
this.register(comm.TaskTypeUpHeroLevel, this.modelTask.UpHeroLevel)
default:
log.Errorf("%v task type not supported", v.TypeId)
log.Warnf("%v task type not supported", v.TypeId)
}
}
}

View File

@ -18,6 +18,9 @@ const (
UserSubTypeVeriCode = "vericode" //验证码
UserSubTypeInitData = "initdata" //初始化用户
UserGetTujianResp = "gettujian" //获取图鉴信息
UserSubTypeLvChangedPush = "lvChangedPush" //等级变化推送
UserSubTypeModifyName = "modifyname" //修改名称
UserSubTypeFigure = "figure" //形象
)
type apiComp struct {

View File

@ -0,0 +1,94 @@
package user
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
"google.golang.org/protobuf/proto"
)
// 主角形象设置
func (this *apiComp) FigureCheck(session comm.IUserSession, req *pb.UserFigureReq) (code pb.ErrorCode) {
if req.Preinstall < 1 || req.Preinstall > 5 || req.Action < 0 ||
req.Hair == nil || req.Eyes == nil || req.Mouth == nil || req.Body == nil || req.Complexion == nil {
code = pb.ErrorCode_ReqParameterError
}
return
}
func (this *apiComp) Figure(session comm.IUserSession, req *pb.UserFigureReq) (code pb.ErrorCode, data proto.Message) {
if code = this.FigureCheck(session, req); code != pb.ErrorCode_Success {
return
}
expand, err := this.module.modelUser.GetUserExpand(session.GetUserId())
if err != nil {
code = pb.ErrorCode_DBError
return
}
//当前形象
var curFigure *pb.Figure
if v, ok := expand.Preinstall[req.Preinstall]; ok {
curFigure = v
} else {
//TODO 设置默认形象
curFigure = &pb.Figure{}
return
}
rsp := &pb.UserFigureResp{
Uid: session.GetUserId(),
Action: req.Action,
}
if req.Action == 0 {
//直接返回预设形象
rsp.Figure = curFigure
} else {
update := make(map[string]interface{})
switch req.Action {
// 头发
case 1:
if req.Hair != nil {
curFigure.Hair = req.Hair
}
// 眼睛
case 2:
if req.Eyes != nil {
curFigure.Eyes = req.Eyes
}
// 嘴巴
case 3:
if req.Mouth != nil {
curFigure.Mouth = req.Mouth
}
// 体型
case 4:
if req.Body != nil {
curFigure.Body = req.Body
}
// 肤色
case 5:
if req.Complexion != nil {
curFigure.Complexion = req.Complexion
}
default:
code = pb.ErrorCode_ReqParameterError
return
}
update = utils.StructToMap(curFigure)
this.module.modelUser.ChanageUserExpand(session.GetUserId(), update)
}
if err := session.SendMsg(string(this.module.GetType()), UserSubTypeFigure, rsp); err != nil {
code = pb.ErrorCode_SystemError
return
}
return
}

View File

@ -20,7 +20,9 @@ func (this *apiComp) Initdata(session comm.IUserSession, req *pb.UserInitdataReq
return
}
rsp := &pb.UserInitdataResp{}
rsp := &pb.UserInitdataResp{
Uid: session.GetUserId(),
}
defer func() {
if err := session.SendMsg(string(this.module.GetType()), UserSubTypeInitData, rsp); err != nil {

View File

@ -4,12 +4,13 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"strings"
"google.golang.org/protobuf/proto"
)
func (this *apiComp) ModifynameCheck(session comm.IUserSession, req *pb.UserModifynameReq) (code pb.ErrorCode) {
if req.Name == "" || len(req.Name) > 6 {
if strings.TrimSpace(req.Name) == "" || len(strings.TrimSpace(req.Name)) > 6 {
code = pb.ErrorCode_ReqParameterError
}
return
@ -20,13 +21,14 @@ func (this *apiComp) Modifyname(session comm.IUserSession, req *pb.UserModifynam
return
}
name := strings.TrimSpace(req.Name)
//验证名称
if this.module.modelUser.NickNameIsExist(req.Name) {
if !this.module.modelUser.NickNameIsExist(name) {
code = pb.ErrorCode_NameExist
return
}
expand, err := this.module.modelUser.GetUserExpand(session.GetSessionId())
expand, err := this.module.modelUser.GetUserExpand(session.GetUserId())
if err != nil {
code = pb.ErrorCode_DBError
return
@ -56,7 +58,7 @@ func (this *apiComp) Modifyname(session comm.IUserSession, req *pb.UserModifynam
}
// 修改名称
if code = this.module.modelUser.modifyName(session.GetUserId(), req.Name); code != pb.ErrorCode_Success {
if code = this.module.modelUser.modifyName(session.GetUserId(), name); code != pb.ErrorCode_Success {
return
}

View File

@ -2,7 +2,9 @@ package user
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
event_v2 "go_dreamfactory/lego/sys/event/v2"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
@ -21,11 +23,17 @@ const ( //Redis
type ModelUser struct {
modules.MCompModel
moduleUser *User
eventApp *event_v2.App
}
func (this *ModelUser) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompModel.Init(service, module, comp, options)
this.TableName = string(TableUser)
this.moduleUser = module.(*User)
this.eventApp = event_v2.NewApp()
this.eventApp.Listen(comm.EventUserChanged, this.ChangeExp)
this.eventApp.Listen(comm.EventUserChanged, this.ChangeLevel)
return
}
@ -125,7 +133,64 @@ func (this *ModelUser) modifyName(uid string, newName string) (code pb.ErrorCode
return
}
//
func(this *ModelUser) UpLevel(){
// 初始化玩家形象
func (this *ModelUser) InitFigure(uid string) {
figureMap := make(map[int32]interface{})
for _, v := range this.moduleUser.configure.GetPlayerFigureConf() {
figure := &pb.Figure{
Hair: &pb.Hair{Color: v.Figure[0].Color},
Eyes: &pb.Eyes{Color: v.Figure[0].Color},
Mouth: &pb.Mouth{},
Body: &pb.Body{},
Complexion: &pb.Complexion{},
}
figureMap[v.Id] = figure
}
update := map[string]interface{}{
"preinstall": figureMap,
}
this.ChanageUserExpand(uid, update)
}
// change exp
func (this *ModelUser) ChangeExp(event interface{}, next func(event interface{})) {
ul := event.(*UserListen)
// TODO
next(ul)
}
//change level
func (this *ModelUser) ChangeLevel(event interface{}, next func(event interface{})) {
ul := event.(*UserListen)
curLv := ul.lv
curLvConf := this.moduleUser.configure.GetPlayerlvConf(curLv)
nextLvConf := this.moduleUser.configure.GetPlayerlvConf(curLv + 1)
if curLvConf.Exp == 0 || nextLvConf == nil { //最大等级
next(ul)
return
}
if ul.exp > curLvConf.Exp && ul.exp <= nextLvConf.Exp {
ul.lv++
// 更新等级
update := map[string]interface{}{
"lv": ul.lv,
}
this.moduleUser.modelUser.Change(ul.session.GetUserId(), update)
ul.session.SendMsg(string(this.moduleUser.GetType()),
UserSubTypeLvChangedPush,
&pb.UserChangedPush{Uid: ul.session.GetUserId(), Exp: ul.exp, Lv: ul.lv})
}
}
//玩家信息监听
type UserListen struct {
event_v2.Event
session comm.IUserSession
exp int32
lv int32
}

View File

@ -172,3 +172,14 @@ func (this *User) GetUserRecordData(uid string, typeValue int32, parmare int32)
//pb.DBUserRecord
return
}
func (this *User) EventUserChanged(session comm.IUserSession) {
ul := new(UserListen)
user := this.GetUser(session.GetUserId())
if user != nil {
ul.session = session
ul.exp = user.Exp
ul.lv = user.Lv
}
this.modelUser.eventApp.Dispatch(comm.EventUserChanged, ul)
}

View File

@ -34,6 +34,7 @@ type DBTask struct {
Status int32 `protobuf:"varint,7,opt,name=status,proto3" json:"status" bson:"status"` // 任务状态 默认0未完成 1已完成
Received int32 `protobuf:"varint,8,opt,name=received,proto3" json:"received" bson:"received"` //领取状态 默认0未领取 1已领取
TypeId int32 `protobuf:"varint,9,opt,name=typeId,proto3" json:"typeId" bson:"typeId"`
Sort int32 `protobuf:"varint,10,opt,name=sort,proto3" json:"sort" bson:"sort"`
}
func (x *DBTask) Reset() {
@ -131,6 +132,13 @@ func (x *DBTask) GetTypeId() int32 {
return 0
}
func (x *DBTask) GetSort() int32 {
if x != nil {
return x.Sort
}
return 0
}
type DBTaskActive struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -214,7 +222,7 @@ var File_task_task_db_proto protoreflect.FileDescriptor
var file_task_task_db_proto_rawDesc = []byte{
0x0a, 0x12, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x62, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd4, 0x01, 0x0a, 0x06, 0x44, 0x42, 0x54, 0x61, 0x73, 0x6b, 0x12,
0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe8, 0x01, 0x0a, 0x06, 0x44, 0x42, 0x54, 0x61, 0x73, 0x6b, 0x12,
0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69,
0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
@ -227,15 +235,17 @@ var file_task_task_db_proto_rawDesc = []byte{
0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69,
0x76, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69,
0x76, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x09, 0x20,
0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x70, 0x0a, 0x0c, 0x44,
0x42, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 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, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a,
0x03, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x49, 0x64, 0x12,
0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x74, 0x61,
0x67, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20,
0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x06, 0x5a,
0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73,
0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x22,
0x70, 0x0a, 0x0c, 0x44, 0x42, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 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, 0x03, 0x75, 0x69,
0x64, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
0x64, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
}
var (

View File

@ -774,6 +774,8 @@ type UserUpdateSettingResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
}
func (x *UserUpdateSettingResp) Reset() {
@ -808,6 +810,13 @@ func (*UserUpdateSettingResp) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{15}
}
func (x *UserUpdateSettingResp) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
// 初始化验证码
type UserVeriCodeReq struct {
state protoimpl.MessageState
@ -946,6 +955,8 @@ type UserInitdataResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
}
func (x *UserInitdataResp) Reset() {
@ -980,6 +991,13 @@ func (*UserInitdataResp) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{19}
}
func (x *UserInitdataResp) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
//修改玩家名字
type UserModifynameReq struct {
state protoimpl.MessageState
@ -1083,6 +1101,7 @@ func (x *UserModifynameResp) GetCount() uint32 {
return 0
}
// 图鉴
type UserGetTujianReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -1168,6 +1187,229 @@ func (x *UserGetTujianResp) GetHeroids() []string {
return nil
}
//玩家等级经验变化推送
type UserChangedPush struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
Exp int32 `protobuf:"varint,2,opt,name=exp,proto3" json:"exp"`
Lv int32 `protobuf:"varint,3,opt,name=lv,proto3" json:"lv"`
}
func (x *UserChangedPush) Reset() {
*x = UserChangedPush{}
if protoimpl.UnsafeEnabled {
mi := &file_user_user_msg_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UserChangedPush) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UserChangedPush) ProtoMessage() {}
func (x *UserChangedPush) ProtoReflect() protoreflect.Message {
mi := &file_user_user_msg_proto_msgTypes[24]
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 UserChangedPush.ProtoReflect.Descriptor instead.
func (*UserChangedPush) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{24}
}
func (x *UserChangedPush) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
func (x *UserChangedPush) GetExp() int32 {
if x != nil {
return x.Exp
}
return 0
}
func (x *UserChangedPush) GetLv() int32 {
if x != nil {
return x.Lv
}
return 0
}
//主角形象
type UserFigureReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Preinstall int32 `protobuf:"varint,1,opt,name=preinstall,proto3" json:"preinstall"` //预设编号 1-5
Action int32 `protobuf:"varint,2,opt,name=action,proto3" json:"action"` //部位 1-5 0不修改任何数据
Hair *Hair `protobuf:"bytes,3,opt,name=hair,proto3" json:"hair"` //部位 1
Eyes *Eyes `protobuf:"bytes,4,opt,name=eyes,proto3" json:"eyes"` //部位 2
Mouth *Mouth `protobuf:"bytes,5,opt,name=mouth,proto3" json:"mouth"` //部位 3
Body *Body `protobuf:"bytes,6,opt,name=body,proto3" json:"body"` //部位 4
Complexion *Complexion `protobuf:"bytes,7,opt,name=complexion,proto3" json:"complexion"` //部位 5
}
func (x *UserFigureReq) Reset() {
*x = UserFigureReq{}
if protoimpl.UnsafeEnabled {
mi := &file_user_user_msg_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UserFigureReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UserFigureReq) ProtoMessage() {}
func (x *UserFigureReq) ProtoReflect() protoreflect.Message {
mi := &file_user_user_msg_proto_msgTypes[25]
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 UserFigureReq.ProtoReflect.Descriptor instead.
func (*UserFigureReq) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{25}
}
func (x *UserFigureReq) GetPreinstall() int32 {
if x != nil {
return x.Preinstall
}
return 0
}
func (x *UserFigureReq) GetAction() int32 {
if x != nil {
return x.Action
}
return 0
}
func (x *UserFigureReq) GetHair() *Hair {
if x != nil {
return x.Hair
}
return nil
}
func (x *UserFigureReq) GetEyes() *Eyes {
if x != nil {
return x.Eyes
}
return nil
}
func (x *UserFigureReq) GetMouth() *Mouth {
if x != nil {
return x.Mouth
}
return nil
}
func (x *UserFigureReq) GetBody() *Body {
if x != nil {
return x.Body
}
return nil
}
func (x *UserFigureReq) GetComplexion() *Complexion {
if x != nil {
return x.Complexion
}
return nil
}
type UserFigureResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
Action int32 `protobuf:"varint,2,opt,name=action,proto3" json:"action"` //部位
Figure *Figure `protobuf:"bytes,3,opt,name=figure,proto3" json:"figure"`
}
func (x *UserFigureResp) Reset() {
*x = UserFigureResp{}
if protoimpl.UnsafeEnabled {
mi := &file_user_user_msg_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UserFigureResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UserFigureResp) ProtoMessage() {}
func (x *UserFigureResp) ProtoReflect() protoreflect.Message {
mi := &file_user_user_msg_proto_msgTypes[26]
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 UserFigureResp.ProtoReflect.Descriptor instead.
func (*UserFigureResp) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{26}
}
func (x *UserFigureResp) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
func (x *UserFigureResp) GetAction() int32 {
if x != nil {
return x.Action
}
return 0
}
func (x *UserFigureResp) GetFigure() *Figure {
if x != nil {
return x.Figure
}
return nil
}
var File_user_user_msg_proto protoreflect.FileDescriptor
var file_user_user_msg_proto_rawDesc = []byte{
@ -1227,27 +1469,54 @@ var file_user_user_msg_proto_rawDesc = []byte{
0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a,
0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e,
0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07,
0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x17, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x55,
0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x29, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70,
0x22, 0x11, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x43, 0x6f, 0x64, 0x65,
0x52, 0x65, 0x71, 0x22, 0x26, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x43,
0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x25, 0x0a, 0x0f, 0x55,
0x73, 0x65, 0x72, 0x49, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x12, 0x12,
0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f,
0x64, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x69, 0x74, 0x64, 0x61,
0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x22, 0x27, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f,
0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22,
0x3c, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d,
0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x12, 0x0a,
0x10, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x52, 0x65,
0x71, 0x22, 0x2d, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6a, 0x69,
0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x69, 0x64,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x69, 0x64, 0x73,
0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75,
0x69, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x43, 0x6f,
0x64, 0x65, 0x52, 0x65, 0x71, 0x22, 0x26, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72,
0x69, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x25, 0x0a,
0x0f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71,
0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
0x63, 0x6f, 0x64, 0x65, 0x22, 0x24, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x69, 0x74,
0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x11, 0x55, 0x73,
0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12,
0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66,
0x79, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x22, 0x12, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6a, 0x69,
0x61, 0x6e, 0x52, 0x65, 0x71, 0x22, 0x2d, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74,
0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65,
0x72, 0x6f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x72,
0x6f, 0x69, 0x64, 0x73, 0x22, 0x45, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x64, 0x50, 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x78, 0x70,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x6c,
0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x22, 0xe3, 0x01, 0x0a, 0x0d,
0x55, 0x73, 0x65, 0x72, 0x46, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a,
0x0a, 0x70, 0x72, 0x65, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x16, 0x0a,
0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x04, 0x68, 0x61, 0x69, 0x72, 0x18, 0x03, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x69, 0x72, 0x52, 0x04, 0x68, 0x61, 0x69, 0x72,
0x12, 0x19, 0x0a, 0x04, 0x65, 0x79, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05,
0x2e, 0x45, 0x79, 0x65, 0x73, 0x52, 0x04, 0x65, 0x79, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x05, 0x6d,
0x6f, 0x75, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x4d, 0x6f, 0x75,
0x74, 0x68, 0x52, 0x05, 0x6d, 0x6f, 0x75, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x04, 0x62, 0x6f, 0x64,
0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x04,
0x62, 0x6f, 0x64, 0x79, 0x12, 0x2b, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69,
0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c,
0x65, 0x78, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x6f,
0x6e, 0x22, 0x5b, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52,
0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a,
0x06, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e,
0x46, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x06, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x42, 0x06,
0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -1262,7 +1531,7 @@ func file_user_user_msg_proto_rawDescGZIP() []byte {
return file_user_user_msg_proto_rawDescData
}
var file_user_user_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
var file_user_user_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
var file_user_user_msg_proto_goTypes = []interface{}{
(*UserLoginReq)(nil), // 0: UserLoginReq
(*UserLoginResp)(nil), // 1: UserLoginResp
@ -1288,27 +1557,42 @@ var file_user_user_msg_proto_goTypes = []interface{}{
(*UserModifynameResp)(nil), // 21: UserModifynameResp
(*UserGetTujianReq)(nil), // 22: UserGetTujianReq
(*UserGetTujianResp)(nil), // 23: UserGetTujianResp
(*DBUser)(nil), // 24: DBUser
(*DBUserExpand)(nil), // 25: DBUserExpand
(ErrorCode)(0), // 26: ErrorCode
(*CacheUser)(nil), // 27: CacheUser
(*UserAssets)(nil), // 28: UserAssets
(*DBUserSetting)(nil), // 29: DBUserSetting
(*UserChangedPush)(nil), // 24: UserChangedPush
(*UserFigureReq)(nil), // 25: UserFigureReq
(*UserFigureResp)(nil), // 26: UserFigureResp
(*DBUser)(nil), // 27: DBUser
(*DBUserExpand)(nil), // 28: DBUserExpand
(ErrorCode)(0), // 29: ErrorCode
(*CacheUser)(nil), // 30: CacheUser
(*UserAssets)(nil), // 31: UserAssets
(*DBUserSetting)(nil), // 32: DBUserSetting
(*Hair)(nil), // 33: Hair
(*Eyes)(nil), // 34: Eyes
(*Mouth)(nil), // 35: Mouth
(*Body)(nil), // 36: Body
(*Complexion)(nil), // 37: Complexion
(*Figure)(nil), // 38: Figure
}
var file_user_user_msg_proto_depIdxs = []int32{
24, // 0: UserLoginResp.data:type_name -> DBUser
25, // 1: UserLoginResp.ex:type_name -> DBUserExpand
26, // 2: UserRegisterResp.Code:type_name -> ErrorCode
27, // 3: UserLoadResp.data:type_name -> CacheUser
28, // 4: UserAddResReq.res:type_name -> UserAssets
28, // 5: UserAddResResp.res:type_name -> UserAssets
29, // 6: UserGetSettingResp.setting:type_name -> DBUserSetting
29, // 7: UserUpdateSettingReq.setting:type_name -> DBUserSetting
8, // [8:8] is the sub-list for method output_type
8, // [8:8] is the sub-list for method input_type
8, // [8:8] is the sub-list for extension type_name
8, // [8:8] is the sub-list for extension extendee
0, // [0:8] is the sub-list for field type_name
27, // 0: UserLoginResp.data:type_name -> DBUser
28, // 1: UserLoginResp.ex:type_name -> DBUserExpand
29, // 2: UserRegisterResp.Code:type_name -> ErrorCode
30, // 3: UserLoadResp.data:type_name -> CacheUser
31, // 4: UserAddResReq.res:type_name -> UserAssets
31, // 5: UserAddResResp.res:type_name -> UserAssets
32, // 6: UserGetSettingResp.setting:type_name -> DBUserSetting
32, // 7: UserUpdateSettingReq.setting:type_name -> DBUserSetting
33, // 8: UserFigureReq.hair:type_name -> Hair
34, // 9: UserFigureReq.eyes:type_name -> Eyes
35, // 10: UserFigureReq.mouth:type_name -> Mouth
36, // 11: UserFigureReq.body:type_name -> Body
37, // 12: UserFigureReq.complexion:type_name -> Complexion
38, // 13: UserFigureResp.figure:type_name -> Figure
14, // [14:14] is the sub-list for method output_type
14, // [14:14] is the sub-list for method input_type
14, // [14:14] is the sub-list for extension type_name
14, // [14:14] is the sub-list for extension extendee
0, // [0:14] is the sub-list for field type_name
}
func init() { file_user_user_msg_proto_init() }
@ -1609,6 +1893,42 @@ func file_user_user_msg_proto_init() {
return nil
}
}
file_user_user_msg_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserChangedPush); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_user_user_msg_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserFigureReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_user_user_msg_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserFigureResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
@ -1616,7 +1936,7 @@ func file_user_user_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_user_user_msg_proto_rawDesc,
NumEnums: 0,
NumMessages: 24,
NumMessages: 27,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -20,26 +20,372 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// 发型
type Hair struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ResId int32 `protobuf:"varint,1,opt,name=resId,proto3" json:"resId"` //资源ID
Color string `protobuf:"bytes,2,opt,name=color,proto3" json:"color"` //颜色
}
func (x *Hair) Reset() {
*x = Hair{}
if protoimpl.UnsafeEnabled {
mi := &file_userexpand_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Hair) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Hair) ProtoMessage() {}
func (x *Hair) ProtoReflect() protoreflect.Message {
mi := &file_userexpand_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Hair.ProtoReflect.Descriptor instead.
func (*Hair) Descriptor() ([]byte, []int) {
return file_userexpand_proto_rawDescGZIP(), []int{0}
}
func (x *Hair) GetResId() int32 {
if x != nil {
return x.ResId
}
return 0
}
func (x *Hair) GetColor() string {
if x != nil {
return x.Color
}
return ""
}
// 眼睛
type Eyes struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ResId int32 `protobuf:"varint,1,opt,name=resId,proto3" json:"resId"` //资源ID
Color string `protobuf:"bytes,2,opt,name=color,proto3" json:"color"` //颜色
}
func (x *Eyes) Reset() {
*x = Eyes{}
if protoimpl.UnsafeEnabled {
mi := &file_userexpand_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Eyes) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Eyes) ProtoMessage() {}
func (x *Eyes) ProtoReflect() protoreflect.Message {
mi := &file_userexpand_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Eyes.ProtoReflect.Descriptor instead.
func (*Eyes) Descriptor() ([]byte, []int) {
return file_userexpand_proto_rawDescGZIP(), []int{1}
}
func (x *Eyes) GetResId() int32 {
if x != nil {
return x.ResId
}
return 0
}
func (x *Eyes) GetColor() string {
if x != nil {
return x.Color
}
return ""
}
// 嘴巴
type Mouth struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ResId string `protobuf:"bytes,1,opt,name=resId,proto3" json:"resId"` //资源ID
}
func (x *Mouth) Reset() {
*x = Mouth{}
if protoimpl.UnsafeEnabled {
mi := &file_userexpand_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Mouth) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Mouth) ProtoMessage() {}
func (x *Mouth) ProtoReflect() protoreflect.Message {
mi := &file_userexpand_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Mouth.ProtoReflect.Descriptor instead.
func (*Mouth) Descriptor() ([]byte, []int) {
return file_userexpand_proto_rawDescGZIP(), []int{2}
}
func (x *Mouth) GetResId() string {
if x != nil {
return x.ResId
}
return ""
}
// 身体
type Body struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
High int32 `protobuf:"varint,1,opt,name=high,proto3" json:"high"` //身高
Shape int32 `protobuf:"varint,2,opt,name=shape,proto3" json:"shape"` //体型
}
func (x *Body) Reset() {
*x = Body{}
if protoimpl.UnsafeEnabled {
mi := &file_userexpand_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Body) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Body) ProtoMessage() {}
func (x *Body) ProtoReflect() protoreflect.Message {
mi := &file_userexpand_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Body.ProtoReflect.Descriptor instead.
func (*Body) Descriptor() ([]byte, []int) {
return file_userexpand_proto_rawDescGZIP(), []int{3}
}
func (x *Body) GetHigh() int32 {
if x != nil {
return x.High
}
return 0
}
func (x *Body) GetShape() int32 {
if x != nil {
return x.Shape
}
return 0
}
// 肤色
type Complexion struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Color string `protobuf:"bytes,1,opt,name=color,proto3" json:"color"` //颜色值
}
func (x *Complexion) Reset() {
*x = Complexion{}
if protoimpl.UnsafeEnabled {
mi := &file_userexpand_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Complexion) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Complexion) ProtoMessage() {}
func (x *Complexion) ProtoReflect() protoreflect.Message {
mi := &file_userexpand_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Complexion.ProtoReflect.Descriptor instead.
func (*Complexion) Descriptor() ([]byte, []int) {
return file_userexpand_proto_rawDescGZIP(), []int{4}
}
func (x *Complexion) GetColor() string {
if x != nil {
return x.Color
}
return ""
}
// 形象
type Figure struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Hair *Hair `protobuf:"bytes,1,opt,name=hair,proto3" json:"hair"`
Eyes *Eyes `protobuf:"bytes,2,opt,name=eyes,proto3" json:"eyes"`
Mouth *Mouth `protobuf:"bytes,3,opt,name=mouth,proto3" json:"mouth"`
Body *Body `protobuf:"bytes,4,opt,name=body,proto3" json:"body"`
Complexion *Complexion `protobuf:"bytes,5,opt,name=complexion,proto3" json:"complexion"`
}
func (x *Figure) Reset() {
*x = Figure{}
if protoimpl.UnsafeEnabled {
mi := &file_userexpand_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Figure) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Figure) ProtoMessage() {}
func (x *Figure) ProtoReflect() protoreflect.Message {
mi := &file_userexpand_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Figure.ProtoReflect.Descriptor instead.
func (*Figure) Descriptor() ([]byte, []int) {
return file_userexpand_proto_rawDescGZIP(), []int{5}
}
func (x *Figure) GetHair() *Hair {
if x != nil {
return x.Hair
}
return nil
}
func (x *Figure) GetEyes() *Eyes {
if x != nil {
return x.Eyes
}
return nil
}
func (x *Figure) GetMouth() *Mouth {
if x != nil {
return x.Mouth
}
return nil
}
func (x *Figure) GetBody() *Body {
if x != nil {
return x.Body
}
return nil
}
func (x *Figure) GetComplexion() *Complexion {
if x != nil {
return x.Complexion
}
return nil
}
//用户扩展数据
type DBUserExpand struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` //主键id
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //用户id
Lastreadnotiftime int64 `protobuf:"varint,3,opt,name=lastreadnotiftime,proto3" json:"lastreadnotiftime"` //最后阅读公告时间
LastInitdataTime int64 `protobuf:"varint,4,opt,name=lastInitdataTime,proto3" json:"lastInitdataTime"` //上次初始数据时间
InitdataCount uint32 `protobuf:"varint,5,opt,name=initdataCount,proto3" json:"initdataCount"` //今日初始累计次数
Chatchannel int32 `protobuf:"varint,6,opt,name=chatchannel,proto3" json:"chatchannel"` //跨服聊天频道
ModifynameCount int32 `protobuf:"varint,7,opt,name=modifynameCount,proto3" json:"modifynameCount"` //修改昵称次数
Tujian map[string]bool `protobuf:"bytes,8,rep,name=tujian,proto3" json:"tujian" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 图鉴
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` //主键id
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //用户id
Lastreadnotiftime int64 `protobuf:"varint,3,opt,name=lastreadnotiftime,proto3" json:"lastreadnotiftime"` //最后阅读公告时间
LastInitdataTime int64 `protobuf:"varint,4,opt,name=lastInitdataTime,proto3" json:"lastInitdataTime"` //上次初始数据时间
InitdataCount uint32 `protobuf:"varint,5,opt,name=initdataCount,proto3" json:"initdataCount"` //今日初始累计次数
Chatchannel int32 `protobuf:"varint,6,opt,name=chatchannel,proto3" json:"chatchannel"` //跨服聊天频道
ModifynameCount int32 `protobuf:"varint,7,opt,name=modifynameCount,proto3" json:"modifynameCount"` //修改昵称次数
Tujian map[string]bool `protobuf:"bytes,8,rep,name=tujian,proto3" json:"tujian" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 图鉴
CurFigure int32 `protobuf:"varint,9,opt,name=curFigure,proto3" json:"curFigure"` //当前形象
Preinstall map[int32]*Figure `protobuf:"bytes,10,rep,name=preinstall,proto3" json:"preinstall" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //形象预设
}
func (x *DBUserExpand) Reset() {
*x = DBUserExpand{}
if protoimpl.UnsafeEnabled {
mi := &file_userexpand_proto_msgTypes[0]
mi := &file_userexpand_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -52,7 +398,7 @@ func (x *DBUserExpand) String() string {
func (*DBUserExpand) ProtoMessage() {}
func (x *DBUserExpand) ProtoReflect() protoreflect.Message {
mi := &file_userexpand_proto_msgTypes[0]
mi := &file_userexpand_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -65,7 +411,7 @@ func (x *DBUserExpand) ProtoReflect() protoreflect.Message {
// Deprecated: Use DBUserExpand.ProtoReflect.Descriptor instead.
func (*DBUserExpand) Descriptor() ([]byte, []int) {
return file_userexpand_proto_rawDescGZIP(), []int{0}
return file_userexpand_proto_rawDescGZIP(), []int{6}
}
func (x *DBUserExpand) GetId() string {
@ -124,34 +470,83 @@ func (x *DBUserExpand) GetTujian() map[string]bool {
return nil
}
func (x *DBUserExpand) GetCurFigure() int32 {
if x != nil {
return x.CurFigure
}
return 0
}
func (x *DBUserExpand) GetPreinstall() map[int32]*Figure {
if x != nil {
return x.Preinstall
}
return nil
}
var File_userexpand_proto protoreflect.FileDescriptor
var file_userexpand_proto_rawDesc = []byte{
0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0xea, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x70,
0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x65, 0x61,
0x64, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x65, 0x61, 0x64, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x74,
0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x64,
0x61, 0x74, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6c,
0x61, 0x73, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12,
0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x74, 0x63, 0x68, 0x61,
0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x74,
0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x6f, 0x64, 0x69, 0x66,
0x79, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x12, 0x31, 0x0a, 0x06, 0x74, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64,
0x2e, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x74, 0x75,
0x6a, 0x69, 0x61, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42,
0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x74, 0x6f, 0x22, 0x32, 0x0a, 0x04, 0x48, 0x61, 0x69, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65,
0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x65, 0x73, 0x49, 0x64,
0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x79, 0x65, 0x73, 0x12, 0x14,
0x0a, 0x05, 0x72, 0x65, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72,
0x65, 0x73, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x1d, 0x0a, 0x05, 0x4d, 0x6f,
0x75, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x73, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x04, 0x42, 0x6f, 0x64,
0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x22, 0x22, 0x0a, 0x0a, 0x43,
0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c,
0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22,
0xa4, 0x01, 0x0a, 0x06, 0x46, 0x69, 0x67, 0x75, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x68, 0x61,
0x69, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x69, 0x72, 0x52,
0x04, 0x68, 0x61, 0x69, 0x72, 0x12, 0x19, 0x0a, 0x04, 0x65, 0x79, 0x65, 0x73, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x45, 0x79, 0x65, 0x73, 0x52, 0x04, 0x65, 0x79, 0x65, 0x73,
0x12, 0x1c, 0x0a, 0x05, 0x6d, 0x6f, 0x75, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x06, 0x2e, 0x4d, 0x6f, 0x75, 0x74, 0x68, 0x52, 0x05, 0x6d, 0x6f, 0x75, 0x74, 0x68, 0x12, 0x19,
0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x42,
0x6f, 0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x2b, 0x0a, 0x0a, 0x63, 0x6f, 0x6d,
0x70, 0x6c, 0x65, 0x78, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70,
0x6c, 0x65, 0x78, 0x69, 0x6f, 0x6e, 0x22, 0x8f, 0x04, 0x0a, 0x0c, 0x44, 0x42, 0x55, 0x73, 0x65,
0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x73,
0x74, 0x72, 0x65, 0x61, 0x64, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x65, 0x61, 0x64, 0x6e, 0x6f,
0x74, 0x69, 0x66, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x49,
0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
0x03, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x54,
0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x43,
0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69, 0x6e, 0x69, 0x74,
0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61,
0x74, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
0x63, 0x68, 0x61, 0x74, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6d,
0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x74, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x18,
0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78,
0x70, 0x61, 0x6e, 0x64, 0x2e, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x52, 0x06, 0x74, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x75, 0x72, 0x46,
0x69, 0x67, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x75, 0x72,
0x46, 0x69, 0x67, 0x75, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x69, 0x6e, 0x73,
0x74, 0x61, 0x6c, 0x6c, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x44, 0x42, 0x55,
0x73, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x65, 0x69, 0x6e, 0x73,
0x74, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x69, 0x6e,
0x73, 0x74, 0x61, 0x6c, 0x6c, 0x1a, 0x39, 0x0a, 0x0b, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
0x1a, 0x46, 0x0a, 0x0f, 0x50, 0x72, 0x65, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x46, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -166,18 +561,32 @@ func file_userexpand_proto_rawDescGZIP() []byte {
return file_userexpand_proto_rawDescData
}
var file_userexpand_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_userexpand_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_userexpand_proto_goTypes = []interface{}{
(*DBUserExpand)(nil), // 0: DBUserExpand
nil, // 1: DBUserExpand.TujianEntry
(*Hair)(nil), // 0: Hair
(*Eyes)(nil), // 1: Eyes
(*Mouth)(nil), // 2: Mouth
(*Body)(nil), // 3: Body
(*Complexion)(nil), // 4: Complexion
(*Figure)(nil), // 5: Figure
(*DBUserExpand)(nil), // 6: DBUserExpand
nil, // 7: DBUserExpand.TujianEntry
nil, // 8: DBUserExpand.PreinstallEntry
}
var file_userexpand_proto_depIdxs = []int32{
1, // 0: DBUserExpand.tujian:type_name -> DBUserExpand.TujianEntry
1, // [1:1] is the sub-list for method output_type
1, // [1:1] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
0, // 0: Figure.hair:type_name -> Hair
1, // 1: Figure.eyes:type_name -> Eyes
2, // 2: Figure.mouth:type_name -> Mouth
3, // 3: Figure.body:type_name -> Body
4, // 4: Figure.complexion:type_name -> Complexion
7, // 5: DBUserExpand.tujian:type_name -> DBUserExpand.TujianEntry
8, // 6: DBUserExpand.preinstall:type_name -> DBUserExpand.PreinstallEntry
5, // 7: DBUserExpand.PreinstallEntry.value:type_name -> Figure
8, // [8:8] is the sub-list for method output_type
8, // [8:8] is the sub-list for method input_type
8, // [8:8] is the sub-list for extension type_name
8, // [8:8] is the sub-list for extension extendee
0, // [0:8] is the sub-list for field type_name
}
func init() { file_userexpand_proto_init() }
@ -187,6 +596,78 @@ func file_userexpand_proto_init() {
}
if !protoimpl.UnsafeEnabled {
file_userexpand_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Hair); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_userexpand_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Eyes); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_userexpand_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Mouth); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_userexpand_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Body); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_userexpand_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Complexion); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_userexpand_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Figure); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_userexpand_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DBUserExpand); i {
case 0:
return &v.state
@ -205,7 +686,7 @@ func file_userexpand_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_userexpand_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumMessages: 9,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -16,9 +16,7 @@ type Tables struct {
LocalizeConfig_ENCategory *Localize_LocalizeConfig_ENCategory
LocalizeConfig_TWCategory *Localize_LocalizeConfig_TWCategory
global *Game_global
hero *Game_hero
ui *Game_ui
skill *Game_skill
plot *Game_plot
extservers *Game_extservers
skillAtk *Game_skillAtk
@ -68,6 +66,8 @@ type Tables struct {
monster *Game_monster
equipPos *Game_equipPos
playerlv *Game_playerlv
propsgroup *Game_propsgroup
facemod *Game_facemod
}
func NewTables(loader JsonLoader) (*Tables, error) {
@ -99,24 +99,12 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.global, err = NewGame_global(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_hero") ; err != nil {
return nil, err
}
if tables.hero, err = NewGame_hero(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_ui") ; err != nil {
return nil, err
}
if tables.ui, err = NewGame_ui(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_skill") ; err != nil {
return nil, err
}
if tables.skill, err = NewGame_skill(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_plot") ; err != nil {
return nil, err
}
@ -411,5 +399,17 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.playerlv, err = NewGame_playerlv(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_propsgroup") ; err != nil {
return nil, err
}
if tables.propsgroup, err = NewGame_propsgroup(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_facemod") ; err != nil {
return nil, err
}
if tables.facemod, err = NewGame_facemod(buf) ; err != nil {
return nil, err
}
return tables, nil
}

View File

@ -0,0 +1,39 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type Game_Figure struct {
Id int32
Key string
Color string
Val int32
PositonX int32
PositonY int32
PositonZ int32
Icon string
}
func (Game_Figure) GetTypeId() int {
return -1818502016
}
func NewGame_Figure(_buf map[string]interface{}) (_v *Game_Figure, err error) {
_v = &Game_Figure{}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
{ var _ok_ bool; if _v.Key, _ok_ = _buf["key"].(string); !_ok_ { err = errors.New("key error"); return } }
{ var _ok_ bool; if _v.Color, _ok_ = _buf["color"].(string); !_ok_ { err = errors.New("color error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["val"].(float64); !_ok_ { err = errors.New("val error"); return }; _v.Val = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["positon_x"].(float64); !_ok_ { err = errors.New("positon_x error"); return }; _v.PositonX = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["positon_y"].(float64); !_ok_ { err = errors.New("positon_y error"); return }; _v.PositonY = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["positon_z"].(float64); !_ok_ { err = errors.New("positon_z error"); return }; _v.PositonZ = int32(_tempNum_) }
{ var _ok_ bool; if _v.Icon, _ok_ = _buf["icon"].(string); !_ok_ { err = errors.New("icon error"); return } }
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 Game_facemod struct {
_dataMap map[int32]*Game_facemodData
_dataList []*Game_facemodData
}
func NewGame_facemod(_buf []map[string]interface{}) (*Game_facemod, error) {
_dataList := make([]*Game_facemodData, 0, len(_buf))
dataMap := make(map[int32]*Game_facemodData)
for _, _ele_ := range _buf {
if _v, err2 := NewGame_facemodData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &Game_facemod{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *Game_facemod) GetDataMap() map[int32]*Game_facemodData {
return table._dataMap
}
func (table *Game_facemod) GetDataList() []*Game_facemodData {
return table._dataList
}
func (table *Game_facemod) Get(key int32) *Game_facemodData {
return table._dataMap[key]
}

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
import "errors"
type Game_facemodData struct {
Id int32
Suitintr string
Figure []*Game_Figure
}
func (Game_facemodData) GetTypeId() int {
return -214755117
}
func NewGame_facemodData(_buf map[string]interface{}) (_v *Game_facemodData, err error) {
_v = &Game_facemodData{}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
{ var _ok_ bool; if _v.Suitintr, _ok_ = _buf["suitintr"].(string); !_ok_ { err = errors.New("suitintr error"); return } }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["figure"].([]interface{}); !_ok_ { err = errors.New("figure error"); return }
_v.Figure = make([]*Game_Figure, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ *Game_Figure
{ 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 = NewGame_Figure(_x_); err != nil { return } }
_v.Figure = append(_v.Figure, _list_v_)
}
}
return
}

View File

@ -19,6 +19,7 @@ type Game_newHeroData struct {
Race int32
Job int32
Type int32
Handbook int32
Prefab int32
Icon int32
Sound string
@ -33,6 +34,8 @@ type Game_newHeroData struct {
Skill2 int32
Skill3 int32
Txt string
Enteranivalue int32
Camerainterval float32
}
func (Game_newHeroData) GetTypeId() int {
@ -48,6 +51,7 @@ func NewGame_newHeroData(_buf map[string]interface{}) (_v *Game_newHeroData, err
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["race"].(float64); !_ok_ { err = errors.New("race error"); return }; _v.Race = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["job"].(float64); !_ok_ { err = errors.New("job error"); return }; _v.Job = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["handbook"].(float64); !_ok_ { err = errors.New("handbook error"); return }; _v.Handbook = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["prefab"].(float64); !_ok_ { err = errors.New("prefab error"); return }; _v.Prefab = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["icon"].(float64); !_ok_ { err = errors.New("icon error"); return }; _v.Icon = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["sound"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Sound error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Sound, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
@ -95,5 +99,7 @@ func NewGame_newHeroData(_buf map[string]interface{}) (_v *Game_newHeroData, err
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skill2"].(float64); !_ok_ { err = errors.New("skill2 error"); return }; _v.Skill2 = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skill3"].(float64); !_ok_ { err = errors.New("skill3 error"); return }; _v.Skill3 = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["txt"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Txt error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Txt, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["enteranivalue"].(float64); !_ok_ { err = errors.New("enteranivalue error"); return }; _v.Enteranivalue = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["camerainterval"].(float64); !_ok_ { err = errors.New("camerainterval error"); return }; _v.Camerainterval = float32(_tempNum_) }
return
}