diff --git a/bin/json/LocalizeConfig_CN.json b/bin/json/LocalizeConfig_CN.json index e7b12a2ee..a3ef2fdc3 100644 --- a/bin/json/LocalizeConfig_CN.json +++ b/bin/json/LocalizeConfig_CN.json @@ -2958,5 +2958,9 @@ { "key": "mainline_name_10070", "text_cn": "Chapter 70" + }, + { + "key": "mainline_name_10071", + "text_cn": "故事发生在很久以前的古代中国,而且要从一只喜欢滚来滚去、滚来滚去的大熊猫身上说起。" } ] \ No newline at end of file diff --git a/bin/json/LocalizeConfig_EN.json b/bin/json/LocalizeConfig_EN.json index e4376f0ac..9d0b5eca7 100644 --- a/bin/json/LocalizeConfig_EN.json +++ b/bin/json/LocalizeConfig_EN.json @@ -2958,5 +2958,9 @@ { "key": "mainline_name_10070", "text_en": "" + }, + { + "key": "mainline_name_10071", + "text_en": "" } ] \ No newline at end of file diff --git a/bin/json/LocalizeConfig_TW.json b/bin/json/LocalizeConfig_TW.json index 7fa12d5aa..b987bd34a 100644 --- a/bin/json/LocalizeConfig_TW.json +++ b/bin/json/LocalizeConfig_TW.json @@ -2958,5 +2958,9 @@ { "key": "mainline_name_10070", "text_tw": "" + }, + { + "key": "mainline_name_10071", + "text_tw": "" } ] \ No newline at end of file diff --git a/bin/json/game_equip.json b/bin/json/game_equip.json index d045b508f..e1bfb958a 100644 --- a/bin/json/game_equip.json +++ b/bin/json/game_equip.json @@ -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, diff --git a/bin/json/game_equipsuit.json b/bin/json/game_equipsuit.json index 73535569a..4d1b032f9 100644 --- a/bin/json/game_equipsuit.json +++ b/bin/json/game_equipsuit.json @@ -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": "一拳干碎" } ] \ No newline at end of file diff --git a/bin/json/game_facemod.json b/bin/json/game_facemod.json new file mode 100644 index 000000000..152e7eef8 --- /dev/null +++ b/bin/json/game_facemod.json @@ -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": "" + } + ] + } +] \ No newline at end of file diff --git a/bin/json/game_mainlineeasy.json b/bin/json/game_mainlineeasy.json index a9ebd6881..4068786d7 100644 --- a/bin/json/game_mainlineeasy.json +++ b/bin/json/game_mainlineeasy.json @@ -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, diff --git a/bin/json/game_mainlinehard.json b/bin/json/game_mainlinehard.json index d998067fc..738dd9400 100644 --- a/bin/json/game_mainlinehard.json +++ b/bin/json/game_mainlinehard.json @@ -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, diff --git a/bin/json/game_mainlinepurgatory.json b/bin/json/game_mainlinepurgatory.json index d998067fc..738dd9400 100644 --- a/bin/json/game_mainlinepurgatory.json +++ b/bin/json/game_mainlinepurgatory.json @@ -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, diff --git a/bin/json/game_model.json b/bin/json/game_model.json index f1ee04781..0f680139e 100644 --- a/bin/json/game_model.json +++ b/bin/json/game_model.json @@ -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" }, { diff --git a/bin/json/game_newhero.json b/bin/json/game_newhero.json index d7162b311..a41930aad 100644 --- a/bin/json/game_newhero.json +++ b/bin/json/game_newhero.json @@ -10,6 +10,7 @@ "race": 1, "job": 2, "type": 1, + "handbook": -1, "prefab": 13001, "icon": 13001, "sound": { @@ -38,7 +39,9 @@ "txt": { "key": "hero_55009", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "13002", @@ -51,6 +54,7 @@ "race": 1, "job": 1, "type": 1, + "handbook": -1, "prefab": 13002, "icon": 13002, "sound": { @@ -79,7 +83,9 @@ "txt": { "key": "hero_55010", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "13003", @@ -92,6 +98,7 @@ "race": 1, "job": 2, "type": 1, + "handbook": -1, "prefab": 13003, "icon": 13003, "sound": { @@ -120,7 +127,9 @@ "txt": { "key": "hero_55011", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "13004", @@ -133,6 +142,7 @@ "race": 1, "job": 1, "type": 1, + "handbook": -1, "prefab": 13004, "icon": 13004, "sound": { @@ -161,7 +171,9 @@ "txt": { "key": "hero_55012", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "13005", @@ -174,6 +186,7 @@ "race": 1, "job": 3, "type": 1, + "handbook": -1, "prefab": 13005, "icon": 13005, "sound": { @@ -202,7 +215,9 @@ "txt": { "key": "hero_55013", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "14001", @@ -215,6 +230,7 @@ "race": 1, "job": 2, "type": 1, + "handbook": -1, "prefab": 14001, "icon": 14001, "sound": { @@ -243,7 +259,9 @@ "txt": { "key": "hero_55014", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "14002", @@ -256,6 +274,7 @@ "race": 1, "job": 2, "type": 1, + "handbook": -1, "prefab": 14002, "icon": 14002, "sound": { @@ -284,7 +303,9 @@ "txt": { "key": "hero_55015", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "14003", @@ -297,6 +318,7 @@ "race": 1, "job": 4, "type": 1, + "handbook": -1, "prefab": 14003, "icon": 14003, "sound": { @@ -325,7 +347,9 @@ "txt": { "key": "hero_55016", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "14004", @@ -338,6 +362,7 @@ "race": 1, "job": 3, "type": 1, + "handbook": -1, "prefab": 14004, "icon": 14004, "sound": { @@ -366,7 +391,9 @@ "txt": { "key": "hero_55017", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "14005", @@ -379,6 +406,7 @@ "race": 1, "job": 1, "type": 1, + "handbook": -1, "prefab": 14005, "icon": 14005, "sound": { @@ -407,7 +435,9 @@ "txt": { "key": "hero_55018", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "14006", @@ -420,6 +450,7 @@ "race": 1, "job": 4, "type": 1, + "handbook": -1, "prefab": 14006, "icon": 14006, "sound": { @@ -448,7 +479,9 @@ "txt": { "key": "hero_55019", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "14007", @@ -461,6 +494,7 @@ "race": 1, "job": 2, "type": 1, + "handbook": -1, "prefab": 14007, "icon": 14007, "sound": { @@ -489,7 +523,9 @@ "txt": { "key": "hero_55020", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "15001", @@ -502,6 +538,7 @@ "race": 1, "job": 1, "type": 1, + "handbook": -1, "prefab": 15001, "icon": 15001, "sound": { @@ -530,7 +567,9 @@ "txt": { "key": "hero_55021", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "15002", @@ -543,6 +582,7 @@ "race": 1, "job": 1, "type": 1, + "handbook": -1, "prefab": 15002, "icon": 15002, "sound": { @@ -571,7 +611,9 @@ "txt": { "key": "hero_55022", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "15003", @@ -584,6 +626,7 @@ "race": 1, "job": 1, "type": 1, + "handbook": -1, "prefab": 15003, "icon": 15003, "sound": { @@ -612,7 +655,9 @@ "txt": { "key": "hero_55023", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "15004", @@ -625,6 +670,7 @@ "race": 1, "job": 4, "type": 1, + "handbook": -1, "prefab": 15004, "icon": 15004, "sound": { @@ -653,48 +699,9 @@ "txt": { "key": "hero_55024", "text": "" - } - }, - { - "hid": "15005", - "name": { - "key": "hero_15005", - "text": "亚力克斯" }, - "star": 5, - "color": 4, - "race": 1, - "job": 3, - "type": 1, - "prefab": 15005, - "icon": 15005, - "sound": { - "key": "15005", - "text": "" - }, - "tujing": [ - 1 - ], - "intr": { - "key": "", - "text": "" - }, - "events": "hero_15005", - "cite": "", - "effectstay": [], - "hpspace": { - "x": 0, - "y": 0, - "z": 0 - }, - "skill": 190011000, - "skill1": 190012000, - "skill2": 190013000, - "skill3": 190014000, - "txt": { - "key": "hero_55025", - "text": "" - } + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "23001", @@ -707,6 +714,7 @@ "race": 2, "job": 3, "type": 1, + "handbook": -1, "prefab": 23001, "icon": 23001, "sound": { @@ -735,7 +743,9 @@ "txt": { "key": "hero_55026", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "23002", @@ -748,6 +758,7 @@ "race": 2, "job": 1, "type": 1, + "handbook": -1, "prefab": 23002, "icon": 23002, "sound": { @@ -776,7 +787,9 @@ "txt": { "key": "hero_55027", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "23003", @@ -789,6 +802,7 @@ "race": 2, "job": 3, "type": 1, + "handbook": -1, "prefab": 23003, "icon": 23003, "sound": { @@ -817,7 +831,9 @@ "txt": { "key": "hero_55028", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "23004", @@ -830,6 +846,7 @@ "race": 2, "job": 4, "type": 1, + "handbook": -1, "prefab": 23004, "icon": 23004, "sound": { @@ -858,7 +875,9 @@ "txt": { "key": "hero_55029", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "24001", @@ -871,6 +890,7 @@ "race": 2, "job": 1, "type": 1, + "handbook": -1, "prefab": 24001, "icon": 24001, "sound": { @@ -899,7 +919,9 @@ "txt": { "key": "hero_55030", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "24002", @@ -912,6 +934,7 @@ "race": 2, "job": 1, "type": 1, + "handbook": -1, "prefab": 24002, "icon": 24002, "sound": { @@ -940,7 +963,9 @@ "txt": { "key": "hero_55031", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "24003", @@ -953,6 +978,7 @@ "race": 2, "job": 4, "type": 1, + "handbook": -1, "prefab": 24003, "icon": 24003, "sound": { @@ -981,7 +1007,9 @@ "txt": { "key": "hero_55032", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "24004", @@ -994,6 +1022,7 @@ "race": 2, "job": 1, "type": 1, + "handbook": -1, "prefab": 24004, "icon": 24004, "sound": { @@ -1022,7 +1051,9 @@ "txt": { "key": "hero_55033", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "24005", @@ -1035,6 +1066,7 @@ "race": 2, "job": 3, "type": 1, + "handbook": -1, "prefab": 24005, "icon": 24005, "sound": { @@ -1063,7 +1095,9 @@ "txt": { "key": "hero_55034", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "24006", @@ -1076,6 +1110,7 @@ "race": 2, "job": 3, "type": 1, + "handbook": -1, "prefab": 24006, "icon": 24006, "sound": { @@ -1104,7 +1139,9 @@ "txt": { "key": "hero_55035", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "24007", @@ -1117,6 +1154,7 @@ "race": 2, "job": 3, "type": 1, + "handbook": -1, "prefab": 24007, "icon": 24007, "sound": { @@ -1145,7 +1183,9 @@ "txt": { "key": "hero_55036", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "24008", @@ -1158,6 +1198,7 @@ "race": 2, "job": 1, "type": 1, + "handbook": -1, "prefab": 24008, "icon": 24008, "sound": { @@ -1186,7 +1227,9 @@ "txt": { "key": "hero_55037", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "24009", @@ -1199,6 +1242,7 @@ "race": 2, "job": 4, "type": 1, + "handbook": -1, "prefab": 24009, "icon": 24009, "sound": { @@ -1227,7 +1271,9 @@ "txt": { "key": "hero_55038", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "25001", @@ -1240,7 +1286,8 @@ "race": 2, "job": 2, "type": 1, - "prefab": 25001, + "handbook": 1, + "prefab": 90002, "icon": 25001, "sound": { "key": "25001", @@ -1268,7 +1315,9 @@ "txt": { "key": "hero_55039", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "25002", @@ -1281,6 +1330,7 @@ "race": 2, "job": 3, "type": 1, + "handbook": -1, "prefab": 25002, "icon": 25002, "sound": { @@ -1309,7 +1359,9 @@ "txt": { "key": "hero_55040", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "25003", @@ -1322,6 +1374,7 @@ "race": 2, "job": 4, "type": 1, + "handbook": -1, "prefab": 25003, "icon": 25003, "sound": { @@ -1350,7 +1403,9 @@ "txt": { "key": "hero_55041", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "25004", @@ -1363,7 +1418,8 @@ "race": 2, "job": 3, "type": 1, - "prefab": 25004, + "handbook": 1, + "prefab": 90003, "icon": 25004, "sound": { "key": "25004", @@ -1391,7 +1447,9 @@ "txt": { "key": "hero_55042", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "33001", @@ -1404,6 +1462,7 @@ "race": 3, "job": 3, "type": 1, + "handbook": -1, "prefab": 33001, "icon": 33001, "sound": { @@ -1432,7 +1491,9 @@ "txt": { "key": "hero_55043", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "33002", @@ -1445,6 +1506,7 @@ "race": 3, "job": 1, "type": 1, + "handbook": -1, "prefab": 33002, "icon": 33002, "sound": { @@ -1473,7 +1535,9 @@ "txt": { "key": "hero_55044", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "33003", @@ -1486,6 +1550,7 @@ "race": 3, "job": 1, "type": 1, + "handbook": -1, "prefab": 33003, "icon": 33003, "sound": { @@ -1514,7 +1579,9 @@ "txt": { "key": "hero_55045", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "33004", @@ -1527,6 +1594,7 @@ "race": 3, "job": 1, "type": 1, + "handbook": -1, "prefab": 33004, "icon": 33004, "sound": { @@ -1555,7 +1623,9 @@ "txt": { "key": "hero_55046", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "33005", @@ -1568,6 +1638,7 @@ "race": 3, "job": 1, "type": 1, + "handbook": -1, "prefab": 33005, "icon": 33005, "sound": { @@ -1596,7 +1667,9 @@ "txt": { "key": "hero_55047", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "33006", @@ -1609,6 +1682,7 @@ "race": 3, "job": 3, "type": 1, + "handbook": -1, "prefab": 33006, "icon": 33006, "sound": { @@ -1637,7 +1711,9 @@ "txt": { "key": "hero_55048", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "34001", @@ -1650,6 +1726,7 @@ "race": 3, "job": 1, "type": 1, + "handbook": -1, "prefab": 34001, "icon": 34001, "sound": { @@ -1678,7 +1755,9 @@ "txt": { "key": "hero_55049", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "34002", @@ -1691,6 +1770,7 @@ "race": 3, "job": 3, "type": 1, + "handbook": -1, "prefab": 34002, "icon": 34002, "sound": { @@ -1719,7 +1799,9 @@ "txt": { "key": "hero_55050", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "34003", @@ -1732,6 +1814,7 @@ "race": 3, "job": 1, "type": 1, + "handbook": -1, "prefab": 34003, "icon": 34003, "sound": { @@ -1760,7 +1843,9 @@ "txt": { "key": "hero_55051", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "34004", @@ -1773,6 +1858,7 @@ "race": 3, "job": 3, "type": 1, + "handbook": -1, "prefab": 34004, "icon": 34004, "sound": { @@ -1801,7 +1887,9 @@ "txt": { "key": "hero_55052", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "34005", @@ -1814,6 +1902,7 @@ "race": 3, "job": 4, "type": 1, + "handbook": -1, "prefab": 34005, "icon": 34005, "sound": { @@ -1842,7 +1931,9 @@ "txt": { "key": "hero_55053", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "34006", @@ -1855,6 +1946,7 @@ "race": 3, "job": 4, "type": 1, + "handbook": -1, "prefab": 34006, "icon": 34006, "sound": { @@ -1883,7 +1975,9 @@ "txt": { "key": "hero_55054", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "34007", @@ -1896,6 +1990,7 @@ "race": 3, "job": 1, "type": 1, + "handbook": -1, "prefab": 34007, "icon": 34007, "sound": { @@ -1924,7 +2019,9 @@ "txt": { "key": "hero_55055", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "34008", @@ -1937,6 +2034,7 @@ "race": 3, "job": 4, "type": 1, + "handbook": -1, "prefab": 34008, "icon": 34008, "sound": { @@ -1965,48 +2063,9 @@ "txt": { "key": "hero_55056", "text": "" - } - }, - { - "hid": "35001", - "name": { - "key": "hero_35001", - "text": "师父" }, - "star": 5, - "color": 4, - "race": 3, - "job": 1, - "type": 1, - "prefab": 35001, - "icon": 35001, - "sound": { - "key": "35001", - "text": "" - }, - "tujing": [ - 1 - ], - "intr": { - "key": "", - "text": "" - }, - "events": "hero_35001", - "cite": "", - "effectstay": [], - "hpspace": { - "x": 0, - "y": 0, - "z": 0 - }, - "skill": 190011000, - "skill1": 190012000, - "skill2": 190013000, - "skill3": 190014000, - "txt": { - "key": "hero_55057", - "text": "" - } + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "35002", @@ -2019,6 +2078,7 @@ "race": 3, "job": 4, "type": 1, + "handbook": -1, "prefab": 35002, "icon": 35002, "sound": { @@ -2047,7 +2107,9 @@ "txt": { "key": "hero_55058", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "35003", @@ -2060,6 +2122,7 @@ "race": 3, "job": 1, "type": 1, + "handbook": -1, "prefab": 35003, "icon": 35003, "sound": { @@ -2088,7 +2151,9 @@ "txt": { "key": "hero_55059", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "35004", @@ -2101,6 +2166,7 @@ "race": 3, "job": 1, "type": 1, + "handbook": -1, "prefab": 35004, "icon": 35004, "sound": { @@ -2129,7 +2195,9 @@ "txt": { "key": "hero_55060", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "35005", @@ -2142,6 +2210,7 @@ "race": 3, "job": 3, "type": 1, + "handbook": -1, "prefab": 35005, "icon": 35005, "sound": { @@ -2170,7 +2239,9 @@ "txt": { "key": "hero_55061", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "35006", @@ -2183,6 +2254,7 @@ "race": 3, "job": 3, "type": 1, + "handbook": -1, "prefab": 35006, "icon": 35006, "sound": { @@ -2211,7 +2283,9 @@ "txt": { "key": "hero_55062", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "43001", @@ -2224,6 +2298,7 @@ "race": 4, "job": 3, "type": 1, + "handbook": -1, "prefab": 43001, "icon": 43001, "sound": { @@ -2252,7 +2327,9 @@ "txt": { "key": "hero_55063", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "43002", @@ -2265,6 +2342,7 @@ "race": 4, "job": 4, "type": 1, + "handbook": -1, "prefab": 43002, "icon": 43002, "sound": { @@ -2293,7 +2371,9 @@ "txt": { "key": "hero_55064", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "43003", @@ -2306,6 +2386,7 @@ "race": 4, "job": 3, "type": 1, + "handbook": -1, "prefab": 43003, "icon": 43003, "sound": { @@ -2334,7 +2415,9 @@ "txt": { "key": "hero_55065", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "43004", @@ -2347,6 +2430,7 @@ "race": 4, "job": 1, "type": 1, + "handbook": -1, "prefab": 43004, "icon": 43004, "sound": { @@ -2375,7 +2459,9 @@ "txt": { "key": "hero_55066", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "43005", @@ -2388,6 +2474,7 @@ "race": 4, "job": 1, "type": 1, + "handbook": -1, "prefab": 43005, "icon": 43005, "sound": { @@ -2416,7 +2503,9 @@ "txt": { "key": "hero_55067", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "43006", @@ -2429,6 +2518,7 @@ "race": 4, "job": 3, "type": 1, + "handbook": -1, "prefab": 43006, "icon": 43006, "sound": { @@ -2457,7 +2547,9 @@ "txt": { "key": "hero_55068", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "43007", @@ -2470,6 +2562,7 @@ "race": 4, "job": 1, "type": 1, + "handbook": -1, "prefab": 43007, "icon": 43007, "sound": { @@ -2498,7 +2591,9 @@ "txt": { "key": "hero_55069", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "44001", @@ -2511,6 +2606,7 @@ "race": 4, "job": 3, "type": 1, + "handbook": -1, "prefab": 44001, "icon": 44001, "sound": { @@ -2539,7 +2635,9 @@ "txt": { "key": "hero_55070", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "44002", @@ -2552,6 +2650,7 @@ "race": 4, "job": 3, "type": 1, + "handbook": -1, "prefab": 44002, "icon": 44002, "sound": { @@ -2580,7 +2679,9 @@ "txt": { "key": "hero_55071", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "44003", @@ -2593,6 +2694,7 @@ "race": 4, "job": 1, "type": 1, + "handbook": -1, "prefab": 44003, "icon": 44003, "sound": { @@ -2621,7 +2723,9 @@ "txt": { "key": "hero_55072", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "44004", @@ -2634,6 +2738,7 @@ "race": 4, "job": 3, "type": 1, + "handbook": -1, "prefab": 44004, "icon": 44004, "sound": { @@ -2662,48 +2767,9 @@ "txt": { "key": "hero_55073", "text": "" - } - }, - { - "hid": "44005", - "name": { - "key": "hero_44005", - "text": "小伊" }, - "star": 4, - "color": 3, - "race": 4, - "job": 3, - "type": 1, - "prefab": 44005, - "icon": 44005, - "sound": { - "key": "44005", - "text": "" - }, - "tujing": [ - 1 - ], - "intr": { - "key": "", - "text": "" - }, - "events": "hero_44005", - "cite": "", - "effectstay": [], - "hpspace": { - "x": 0, - "y": 0, - "z": 0 - }, - "skill": 190011000, - "skill1": 190012000, - "skill2": 190013000, - "skill3": 190014000, - "txt": { - "key": "hero_55074", - "text": "" - } + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "44006", @@ -2716,6 +2782,7 @@ "race": 4, "job": 1, "type": 1, + "handbook": -1, "prefab": 44006, "icon": 44006, "sound": { @@ -2744,7 +2811,9 @@ "txt": { "key": "hero_55075", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "45001", @@ -2757,6 +2826,7 @@ "race": 4, "job": 1, "type": 1, + "handbook": -1, "prefab": 45001, "icon": 45001, "sound": { @@ -2785,7 +2855,9 @@ "txt": { "key": "hero_55076", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "45002", @@ -2798,6 +2870,7 @@ "race": 4, "job": 3, "type": 1, + "handbook": -1, "prefab": 45002, "icon": 45002, "sound": { @@ -2826,7 +2899,9 @@ "txt": { "key": "hero_55077", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "45003", @@ -2839,6 +2914,7 @@ "race": 4, "job": 3, "type": 1, + "handbook": -1, "prefab": 45003, "icon": 45003, "sound": { @@ -2867,7 +2943,9 @@ "txt": { "key": "hero_55078", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "45004", @@ -2880,6 +2958,7 @@ "race": 4, "job": 1, "type": 1, + "handbook": -1, "prefab": 45004, "icon": 45004, "sound": { @@ -2908,7 +2987,9 @@ "txt": { "key": "hero_55079", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "43901", @@ -2921,6 +3002,7 @@ "race": 4, "job": 5, "type": 2, + "handbook": -1, "prefab": 43901, "icon": 43901, "sound": { @@ -2949,7 +3031,9 @@ "txt": { "key": "hero_55080", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "42911", @@ -2962,6 +3046,7 @@ "race": 4, "job": 5, "type": 3, + "handbook": -1, "prefab": 42911, "icon": 42911, "sound": { @@ -2990,7 +3075,9 @@ "txt": { "key": "hero_55081", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "43911", @@ -3003,6 +3090,7 @@ "race": 4, "job": 5, "type": 3, + "handbook": -1, "prefab": 43911, "icon": 43911, "sound": { @@ -3031,7 +3119,9 @@ "txt": { "key": "hero_55082", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "44911", @@ -3044,6 +3134,7 @@ "race": 4, "job": 5, "type": 3, + "handbook": -1, "prefab": 44911, "icon": 44911, "sound": { @@ -3072,7 +3163,9 @@ "txt": { "key": "hero_55083", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "43921", @@ -3085,6 +3178,7 @@ "race": 4, "job": 5, "type": 4, + "handbook": -1, "prefab": 43921, "icon": 43921, "sound": { @@ -3113,7 +3207,9 @@ "txt": { "key": "hero_55084", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "44921", @@ -3126,6 +3222,7 @@ "race": 4, "job": 5, "type": 4, + "handbook": -1, "prefab": 44921, "icon": 44921, "sound": { @@ -3154,7 +3251,9 @@ "txt": { "key": "hero_55085", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "45921", @@ -3167,6 +3266,7 @@ "race": 4, "job": 5, "type": 4, + "handbook": -1, "prefab": 45921, "icon": 45921, "sound": { @@ -3195,7 +3295,9 @@ "txt": { "key": "hero_55086", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51001", @@ -3208,6 +3310,7 @@ "race": 4, "job": 3, "type": 5, + "handbook": -1, "prefab": 51001, "icon": 51001, "sound": { @@ -3236,7 +3339,9 @@ "txt": { "key": "hero_55087", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51002", @@ -3249,6 +3354,7 @@ "race": 4, "job": 3, "type": 5, + "handbook": -1, "prefab": 51002, "icon": 51002, "sound": { @@ -3277,7 +3383,9 @@ "txt": { "key": "hero_55088", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51003", @@ -3290,6 +3398,7 @@ "race": 4, "job": 3, "type": 5, + "handbook": -1, "prefab": 51003, "icon": 51003, "sound": { @@ -3318,7 +3427,9 @@ "txt": { "key": "hero_55089", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51004", @@ -3331,6 +3442,7 @@ "race": 4, "job": 3, "type": 5, + "handbook": -1, "prefab": 51004, "icon": 51004, "sound": { @@ -3359,7 +3471,9 @@ "txt": { "key": "hero_55090", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51005", @@ -3372,6 +3486,7 @@ "race": 4, "job": 1, "type": 5, + "handbook": -1, "prefab": 51005, "icon": 51005, "sound": { @@ -3400,7 +3515,9 @@ "txt": { "key": "hero_55091", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51006", @@ -3413,6 +3530,7 @@ "race": 4, "job": 3, "type": 5, + "handbook": -1, "prefab": 51006, "icon": 51006, "sound": { @@ -3441,7 +3559,9 @@ "txt": { "key": "hero_55092", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51007", @@ -3454,6 +3574,7 @@ "race": 4, "job": 3, "type": 5, + "handbook": -1, "prefab": 51007, "icon": 51007, "sound": { @@ -3482,7 +3603,9 @@ "txt": { "key": "hero_55093", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51008", @@ -3495,6 +3618,7 @@ "race": 4, "job": 1, "type": 5, + "handbook": -1, "prefab": 51008, "icon": 51008, "sound": { @@ -3523,7 +3647,9 @@ "txt": { "key": "hero_55094", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51009", @@ -3536,6 +3662,7 @@ "race": 4, "job": 1, "type": 5, + "handbook": -1, "prefab": 51009, "icon": 51009, "sound": { @@ -3564,7 +3691,9 @@ "txt": { "key": "hero_55095", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51010", @@ -3577,6 +3706,7 @@ "race": 4, "job": 1, "type": 5, + "handbook": -1, "prefab": 51010, "icon": 51010, "sound": { @@ -3605,7 +3735,9 @@ "txt": { "key": "hero_55096", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51011", @@ -3618,6 +3750,7 @@ "race": 4, "job": 3, "type": 5, + "handbook": -1, "prefab": 51011, "icon": 51011, "sound": { @@ -3646,7 +3779,9 @@ "txt": { "key": "hero_55097", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51012", @@ -3659,6 +3794,7 @@ "race": 4, "job": 3, "type": 5, + "handbook": -1, "prefab": 51012, "icon": 51012, "sound": { @@ -3687,7 +3823,9 @@ "txt": { "key": "hero_55098", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51013", @@ -3700,6 +3838,7 @@ "race": 4, "job": 1, "type": 5, + "handbook": -1, "prefab": 51013, "icon": 51013, "sound": { @@ -3728,7 +3867,9 @@ "txt": { "key": "hero_55099", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "51014", @@ -3741,6 +3882,7 @@ "race": 4, "job": 1, "type": 5, + "handbook": -1, "prefab": 51014, "icon": 51014, "sound": { @@ -3769,7 +3911,9 @@ "txt": { "key": "hero_55100", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "53001", @@ -3782,6 +3926,7 @@ "race": 4, "job": 3, "type": 5, + "handbook": -1, "prefab": 53001, "icon": 53001, "sound": { @@ -3810,7 +3955,9 @@ "txt": { "key": "hero_55101", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "53002", @@ -3823,6 +3970,7 @@ "race": 4, "job": 1, "type": 5, + "handbook": -1, "prefab": 53002, "icon": 53002, "sound": { @@ -3851,7 +3999,9 @@ "txt": { "key": "hero_55102", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "53003", @@ -3864,6 +4014,7 @@ "race": 4, "job": 1, "type": 5, + "handbook": -1, "prefab": 53003, "icon": 53003, "sound": { @@ -3892,7 +4043,9 @@ "txt": { "key": "hero_55103", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "53004", @@ -3905,6 +4058,7 @@ "race": 4, "job": 1, "type": 5, + "handbook": -1, "prefab": 53004, "icon": 53004, "sound": { @@ -3933,7 +4087,9 @@ "txt": { "key": "hero_55104", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "53005", @@ -3946,6 +4102,7 @@ "race": 4, "job": 1, "type": 5, + "handbook": -1, "prefab": 53005, "icon": 53005, "sound": { @@ -3974,7 +4131,9 @@ "txt": { "key": "hero_55105", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "53006", @@ -3987,6 +4146,7 @@ "race": 4, "job": 3, "type": 5, + "handbook": -1, "prefab": 53006, "icon": 53006, "sound": { @@ -4015,7 +4175,9 @@ "txt": { "key": "hero_55106", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "55001", @@ -4028,6 +4190,7 @@ "race": 4, "job": 2, "type": 5, + "handbook": -1, "prefab": 55001, "icon": 55001, "sound": { @@ -4056,7 +4219,9 @@ "txt": { "key": "hero_55107", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "55002", @@ -4069,6 +4234,7 @@ "race": 4, "job": 2, "type": 5, + "handbook": -1, "prefab": 55002, "icon": 55002, "sound": { @@ -4097,7 +4263,9 @@ "txt": { "key": "hero_55108", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "55003", @@ -4110,6 +4278,7 @@ "race": 4, "job": 2, "type": 5, + "handbook": -1, "prefab": 55003, "icon": 55003, "sound": { @@ -4138,7 +4307,9 @@ "txt": { "key": "hero_55109", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "55004", @@ -4151,6 +4322,7 @@ "race": 4, "job": 2, "type": 5, + "handbook": -1, "prefab": 55004, "icon": 55004, "sound": { @@ -4179,7 +4351,9 @@ "txt": { "key": "hero_55110", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "55005", @@ -4192,6 +4366,7 @@ "race": 4, "job": 2, "type": 5, + "handbook": -1, "prefab": 55005, "icon": 55005, "sound": { @@ -4220,7 +4395,9 @@ "txt": { "key": "hero_55111", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "55006", @@ -4233,6 +4410,7 @@ "race": 4, "job": 2, "type": 5, + "handbook": -1, "prefab": 55006, "icon": 55006, "sound": { @@ -4261,7 +4439,9 @@ "txt": { "key": "hero_55112", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "55007", @@ -4274,6 +4454,7 @@ "race": 4, "job": 2, "type": 5, + "handbook": -1, "prefab": 55007, "icon": 55007, "sound": { @@ -4302,7 +4483,9 @@ "txt": { "key": "hero_55113", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 }, { "hid": "55008", @@ -4315,6 +4498,7 @@ "race": 4, "job": 2, "type": 5, + "handbook": -1, "prefab": 55008, "icon": 55008, "sound": { @@ -4343,6 +4527,1119 @@ "txt": { "key": "hero_55114", "text": "" - } + }, + "enteranivalue": 0, + "camerainterval": 0 + }, + { + "hid": "11001", + "name": { + "key": "11001", + "text": "阿宝" + }, + "star": 4, + "color": 3, + "race": 1, + "job": 1, + "type": 1, + "handbook": 0, + "prefab": 11001, + "icon": 11001, + "sound": { + "key": "121323", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11001.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 110011, + "skill2": 110012, + "skill3": 110013, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 100, + "camerainterval": 0.5 + }, + { + "hid": "11002", + "name": { + "key": "11002", + "text": "原始人" + }, + "star": 5, + "color": 4, + "race": 1, + "job": 1, + "type": 1, + "handbook": 0, + "prefab": 11002, + "icon": 11002, + "sound": { + "key": "11002", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11002.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 110021, + "skill2": 110022, + "skill3": 110023, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11003", + "name": { + "key": "11003", + "text": "波比" + }, + "star": 5, + "color": 4, + "race": 2, + "job": 1, + "type": 1, + "handbook": 0, + "prefab": 11003, + "icon": 11003, + "sound": { + "key": "11003", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11003.asset", + "cite": "", + "effectstay": [ + "this,Skill/Role/11003/effect_11003_wuqitexiao" + ], + "hpspace": { + "x": 0, + "y": -0.69, + "z": 0 + }, + "skill": -1, + "skill1": 110031, + "skill2": 110032, + "skill3": 110033, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11004", + "name": { + "key": "11004", + "text": "布兰" + }, + "star": 5, + "color": 4, + "race": 1, + "job": 1, + "type": 1, + "handbook": 0, + "prefab": 11004, + "icon": 11004, + "sound": { + "key": "11004", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "hero_2011", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 110041, + "skill2": 110042, + "skill3": 110043, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11005", + "name": { + "key": "11005", + "text": "无牙仔" + }, + "star": 4, + "color": 3, + "race": 1, + "job": 1, + "type": 1, + "handbook": 0, + "prefab": 11005, + "icon": 11005, + "sound": { + "key": "121323", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11001.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 110051, + "skill2": 110052, + "skill3": 110053, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11006", + "name": { + "key": "11006", + "text": "亚丝翠" + }, + "star": 5, + "color": 4, + "race": 1, + "job": 1, + "type": 1, + "handbook": 0, + "prefab": 11006, + "icon": 11006, + "sound": { + "key": "11006", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "hero_2011", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 110061, + "skill2": 110062, + "skill3": 110063, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11009", + "name": { + "key": "11009", + "text": "希卡普" + }, + "star": 4, + "color": 3, + "race": 3, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 11009, + "icon": 11009, + "sound": { + "key": "11009", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11009.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": -0.1, + "z": 0 + }, + "skill": -1, + "skill1": 110091, + "skill2": 110092, + "skill3": 110093, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "22002", + "name": { + "key": "22002", + "text": "沈王爷青春版" + }, + "star": 5, + "color": 4, + "race": 2, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 22002, + "icon": 22002, + "sound": { + "key": "22002", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "hero_2011", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 220021, + "skill2": 220022, + "skill3": 220023, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "90001", + "name": { + "key": "90001", + "text": "邪恶阿宝" + }, + "star": 4, + "color": 3, + "race": 1, + "job": 1, + "type": 1, + "handbook": 0, + "prefab": 90001, + "icon": 90001, + "sound": { + "key": "90001", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "hero_90001", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 900011, + "skill2": 900012, + "skill3": 900013, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11011", + "name": { + "key": "11011", + "text": "浣熊" + }, + "star": 4, + "color": 3, + "race": 2, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 11011, + "icon": 11011, + "sound": { + "key": "11011", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11011.asset", + "cite": "11011", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 110111, + "skill2": 110112, + "skill3": 110113, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11008", + "name": { + "key": "11008", + "text": "悍娇虎" + }, + "star": 5, + "color": 4, + "race": 2, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 11008, + "icon": 11008, + "sound": { + "key": "11008", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11008.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 110081, + "skill2": 110082, + "skill3": 110083, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11017", + "name": { + "key": "11017", + "text": "冰霜杰克" + }, + "star": 5, + "color": 4, + "race": 4, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 11017, + "icon": 11017, + "sound": { + "key": "11017", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11017.asset", + "cite": "", + "effectstay": [ + "Bone001/Dummy001,Skill/Role/11017/effect_11017_weapon1" + ], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 110171, + "skill2": 110172, + "skill3": 110173, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11018", + "name": { + "key": "11018", + "text": "睡神" + }, + "star": 5, + "color": 4, + "race": 4, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 11018, + "icon": 11018, + "sound": { + "key": "11018", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11018.asset", + "cite": "", + "effectstay": [ + "Bip001,Skill/Role/11018/effect_11018_sleep", + "Bip001,Skill/Role/11018/effect_11018_fengsha" + ], + "hpspace": { + "x": 0, + "y": -0.31, + "z": 0 + }, + "skill": -1, + "skill1": 110181, + "skill2": 110182, + "skill3": 110183, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11019", + "name": { + "key": "11019", + "text": "莫甘娜" + }, + "star": 5, + "color": 4, + "race": 2, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 11019, + "icon": 11019, + "sound": { + "key": "11019", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11019.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 110191, + "skill2": 110192, + "skill3": 110193, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11020", + "name": { + "key": "11020", + "text": "莫甘娜二阶段" + }, + "star": 5, + "color": 4, + "race": 2, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 11020, + "icon": 11020, + "sound": { + "key": "11020", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11020.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 110201, + "skill2": 110202, + "skill3": 110203, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11021", + "name": { + "key": "11021", + "text": "莫甘娜巨怪" + }, + "star": 5, + "color": 4, + "race": 2, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 11021, + "icon": 11021, + "sound": { + "key": "11021", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11021.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 110211, + "skill2": 110212, + "skill3": 110213, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "11099", + "name": { + "key": "11099", + "text": "触手" + }, + "star": 5, + "color": 4, + "race": 2, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 11099, + "icon": 11099, + "sound": { + "key": "11099", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11099.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 110991, + "skill2": 110992, + "skill3": 110993, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "12001", + "name": { + "key": "12001", + "text": "黑化阿宝" + }, + "star": 5, + "color": 4, + "race": 2, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 12001, + "icon": 12001, + "sound": { + "key": "121323", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_12001.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 120011, + "skill2": 120012, + "skill3": 120013, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "12003", + "name": { + "key": "12003", + "text": "黑化包比" + }, + "star": 5, + "color": 4, + "race": 2, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 12003, + "icon": 12003, + "sound": { + "key": "12003", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11003.asset", + "cite": "", + "effectstay": [ + "this,Skill/Role/12003/effect_12003_wuqitexiao" + ], + "hpspace": { + "x": 0, + "y": 0.154, + "z": 0 + }, + "skill": -1, + "skill1": 120031, + "skill2": 120032, + "skill3": 120033, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "12009", + "name": { + "key": "12009", + "text": "黑化希卡普" + }, + "star": 5, + "color": 4, + "race": 2, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 12009, + "icon": 11009, + "sound": { + "key": "11009", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11009.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 120091, + "skill2": 120092, + "skill3": 120093, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "12017", + "name": { + "key": "12017", + "text": "黑化杰克" + }, + "star": 5, + "color": 4, + "race": 2, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 12017, + "icon": 12017, + "sound": { + "key": "12017", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11017.asset", + "cite": "", + "effectstay": [ + "Bone001/Dummy001,Skill/Role/12017/effect_12017_weapon1_bad" + ], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 120171, + "skill2": 120172, + "skill3": 120173, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "12018", + "name": { + "key": "12018", + "text": "黑化睡神" + }, + "star": 5, + "color": 4, + "race": 2, + "job": 2, + "type": 1, + "handbook": 0, + "prefab": 12018, + "icon": 12018, + "sound": { + "key": "12018", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_11018.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0.26, + "z": 0 + }, + "skill": -1, + "skill1": 120181, + "skill2": 120182, + "skill3": 120183, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "44005", + "name": { + "key": "44005", + "text": "小伊" + }, + "star": 4, + "color": 4, + "race": 4, + "job": 3, + "type": 1, + "handbook": 0, + "prefab": 44005, + "icon": 44005, + "sound": { + "key": "44005", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_44005.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 440051, + "skill2": 440052, + "skill3": 440053, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "15005", + "name": { + "key": "15005", + "text": "亚力克斯" + }, + "star": 5, + "color": 5, + "race": 1, + "job": 3, + "type": 1, + "handbook": 0, + "prefab": 15005, + "icon": 15005, + "sound": { + "key": "15005", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_15005.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 150051, + "skill2": 150052, + "skill3": 150053, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 + }, + { + "hid": "35001", + "name": { + "key": "35001", + "text": "浣熊" + }, + "star": 4, + "color": 4, + "race": 4, + "job": 3, + "type": 1, + "handbook": 0, + "prefab": 35001, + "icon": 35001, + "sound": { + "key": "35001", + "text": "" + }, + "tujing": [ + 1 + ], + "intr": { + "key": "", + "text": "" + }, + "events": "EventDataSet/Hero_35001.asset", + "cite": "", + "effectstay": [], + "hpspace": { + "x": 0, + "y": 0, + "z": 0 + }, + "skill": -1, + "skill1": 350011, + "skill2": 350012, + "skill3": 350013, + "txt": { + "key": "", + "text": "" + }, + "enteranivalue": 0, + "camerainterval": 0.6 } ] \ No newline at end of file diff --git a/bin/json/game_taskround.json b/bin/json/game_taskround.json index 2decd4d88..00ab0fc4f 100644 --- a/bin/json/game_taskround.json +++ b/bin/json/game_taskround.json @@ -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", diff --git a/cmd/robot/hero.go b/cmd/robot/hero.go index 243dea09a..433bd7e89 100644 --- a/cmd/robot/hero.go +++ b/cmd/robot/hero.go @@ -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{}, diff --git a/cmd/robot/task.go b/cmd/robot/task.go index 27ff3f051..71242b3a5 100644 --- a/cmd/robot/task.go +++ b/cmd/robot/task.go @@ -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, diff --git a/cmd/robot/user.go b/cmd/robot/user.go index 3aae5e74b..4e64c59ae 100644 --- a/cmd/robot/user.go +++ b/cmd/robot/user.go @@ -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: "获取配置", diff --git a/comm/const.go b/comm/const.go index c03a585a5..d8e5b3dee 100644 --- a/comm/const.go +++ b/comm/const.go @@ -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 ( diff --git a/comm/imodule.go b/comm/imodule.go index 438cf95ce..4062fdf8b 100644 --- a/comm/imodule.go +++ b/comm/imodule.go @@ -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 { diff --git a/lego/sys/event/v2/app.go b/lego/sys/event/v2/app.go new file mode 100644 index 000000000..88827cc7c --- /dev/null +++ b/lego/sys/event/v2/app.go @@ -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{}) { + + }) + } + + } + +} diff --git a/lego/sys/event/v2/event.go b/lego/sys/event/v2/event.go new file mode 100644 index 000000000..4ca1266c0 --- /dev/null +++ b/lego/sys/event/v2/event.go @@ -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 +} diff --git a/lego/sys/event/v2/listener.go b/lego/sys/event/v2/listener.go new file mode 100644 index 000000000..a3ace0452 --- /dev/null +++ b/lego/sys/event/v2/listener.go @@ -0,0 +1,5 @@ +package event_v2 + +// 监听器接口 + +type Listener func(event interface{},next func(event interface{})) diff --git a/lego/sys/event/v2/pipeline.go b/lego/sys/event/v2/pipeline.go new file mode 100644 index 000000000..51d5c812c --- /dev/null +++ b/lego/sys/event/v2/pipeline.go @@ -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() +} diff --git a/modules/comp_configure.go b/modules/comp_configure.go index e382a9b62..cd53f8c07 100644 --- a/modules/comp_configure.go +++ b/modules/comp_configure.go @@ -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 +} diff --git a/modules/comp_model.go b/modules/comp_model.go index 17b5e079b..c4d6c90b3 100644 --- a/modules/comp_model.go +++ b/modules/comp_model.go @@ -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 { diff --git a/modules/hero/api_awaken.go b/modules/hero/api_awaken.go index fd896cac8..46f3be84a 100644 --- a/modules/hero/api_awaken.go +++ b/modules/hero/api_awaken.go @@ -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 } diff --git a/modules/hero/api_drawCard.go b/modules/hero/api_drawCard.go index a05907ed8..f312d24f3 100644 --- a/modules/hero/api_drawCard.go +++ b/modules/hero/api_drawCard.go @@ -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) } } } diff --git a/modules/hero/api_resonance.go b/modules/hero/api_resonance.go index 890282bba..7d149ccce 100644 --- a/modules/hero/api_resonance.go +++ b/modules/hero/api_resonance.go @@ -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}) diff --git a/modules/hero/api_resonanceReset.go b/modules/hero/api_resonanceReset.go index e833ad801..9e52a30ce 100644 --- a/modules/hero/api_resonanceReset.go +++ b/modules/hero/api_resonanceReset.go @@ -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 diff --git a/modules/hero/api_resonanceSelect.go b/modules/hero/api_resonanceSelect.go index 66bea6f13..3825fc6b0 100644 --- a/modules/hero/api_resonanceSelect.go +++ b/modules/hero/api_resonanceSelect.go @@ -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 } diff --git a/modules/hero/api_strengthenUpSkill.go b/modules/hero/api_strengthenUpSkill.go index 3cf7ef1a1..1453a3fee 100644 --- a/modules/hero/api_strengthenUpSkill.go +++ b/modules/hero/api_strengthenUpSkill.go @@ -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 diff --git a/modules/hero/api_strengthenUpStar.go b/modules/hero/api_strengthenUpStar.go index 02afc0886..f5ecc81b8 100644 --- a/modules/hero/api_strengthenUpStar.go +++ b/modules/hero/api_strengthenUpStar.go @@ -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}) diff --git a/modules/hero/api_strengthenUplv.go b/modules/hero/api_strengthenUplv.go index 08b0890b9..c0eb9a498 100644 --- a/modules/hero/api_strengthenUplv.go +++ b/modules/hero/api_strengthenUplv.go @@ -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) // 原来的英雄 只是数量变化了 diff --git a/modules/hero/model_hero.go b/modules/hero/model_hero.go index 87084e5d0..2cf038397 100644 --- a/modules/hero/model_hero.go +++ b/modules/hero/model_hero.go @@ -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 +} diff --git a/modules/hero/module.go b/modules/hero/module.go index 2b2a1a05a..2bc6727e5 100644 --- a/modules/hero/module.go +++ b/modules/hero/module.go @@ -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 ( diff --git a/modules/task/api_activelist.go b/modules/task/api_activelist.go index 322ef4fb2..10932bfe2 100644 --- a/modules/task/api_activelist.go +++ b/modules/task/api_activelist.go @@ -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 } diff --git a/modules/task/api_list.go b/modules/task/api_list.go index 4d272f908..07201ac92 100644 --- a/modules/task/api_list.go +++ b/modules/task/api_list.go @@ -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 } diff --git a/modules/task/api_receive.go b/modules/task/api_receive.go index ba84c0c7a..0085110f2 100644 --- a/modules/task/api_receive.go +++ b/modules/task/api_receive.go @@ -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 diff --git a/modules/task/config.go b/modules/task/config.go index 918cbe307..597e12048 100644 --- a/modules/task/config.go +++ b/modules/task/config.go @@ -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 { diff --git a/modules/task/model_active.go b/modules/task/model_active.go index 4d4737103..d956b59d9 100644 --- a/modules/task/model_active.go +++ b/modules/task/model_active.go @@ -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 } diff --git a/modules/task/model_task.go b/modules/task/model_task.go index f21dd0367..99a144c86 100644 --- a/modules/task/model_task.go +++ b/modules/task/model_task.go @@ -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 diff --git a/modules/task/module.go b/modules/task/module.go index 9097f62d5..4ac1e4a9e 100644 --- a/modules/task/module.go +++ b/modules/task/module.go @@ -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) } } } diff --git a/modules/user/api.go b/modules/user/api.go index 507517801..c736ef178 100644 --- a/modules/user/api.go +++ b/modules/user/api.go @@ -18,6 +18,9 @@ const ( UserSubTypeVeriCode = "vericode" //验证码 UserSubTypeInitData = "initdata" //初始化用户 UserGetTujianResp = "gettujian" //获取图鉴信息 + UserSubTypeLvChangedPush = "lvChangedPush" //等级变化推送 + UserSubTypeModifyName = "modifyname" //修改名称 + UserSubTypeFigure = "figure" //形象 ) type apiComp struct { diff --git a/modules/user/api_figure.go b/modules/user/api_figure.go new file mode 100644 index 000000000..6eb72fc5a --- /dev/null +++ b/modules/user/api_figure.go @@ -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 +} diff --git a/modules/user/api_initdata.go b/modules/user/api_initdata.go index b59001c0a..988fa444c 100644 --- a/modules/user/api_initdata.go +++ b/modules/user/api_initdata.go @@ -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 { diff --git a/modules/user/api_modifyname.go b/modules/user/api_modifyname.go index fb02d84be..da44b6a92 100644 --- a/modules/user/api_modifyname.go +++ b/modules/user/api_modifyname.go @@ -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 } diff --git a/modules/user/model_user.go b/modules/user/model_user.go index bc0d115c1..31dacf38f 100644 --- a/modules/user/model_user.go +++ b/modules/user/model_user.go @@ -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 +} diff --git a/modules/user/module.go b/modules/user/module.go index 663d5634c..4254cc738 100644 --- a/modules/user/module.go +++ b/modules/user/module.go @@ -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) +} diff --git a/pb/task_db.pb.go b/pb/task_db.pb.go index a3ac6e3e6..a56bb940b 100644 --- a/pb/task_db.pb.go +++ b/pb/task_db.pb.go @@ -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 ( diff --git a/pb/user_msg.pb.go b/pb/user_msg.pb.go index 353340fdb..5cd7dc3d5 100644 --- a/pb/user_msg.pb.go +++ b/pb/user_msg.pb.go @@ -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, }, diff --git a/pb/userexpand.pb.go b/pb/userexpand.pb.go index c1fecda2e..b38281522 100644 --- a/pb/userexpand.pb.go +++ b/pb/userexpand.pb.go @@ -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, }, diff --git a/sys/configure/structs/Tables.go b/sys/configure/structs/Tables.go index 83bc6b541..90ce3d76c 100644 --- a/sys/configure/structs/Tables.go +++ b/sys/configure/structs/Tables.go @@ -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 } diff --git a/sys/configure/structs/game.Figure.go b/sys/configure/structs/game.Figure.go new file mode 100644 index 000000000..ca6add3cc --- /dev/null +++ b/sys/configure/structs/game.Figure.go @@ -0,0 +1,39 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +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 +} diff --git a/sys/configure/structs/game.facemod.go b/sys/configure/structs/game.facemod.go new file mode 100644 index 000000000..dc10813dc --- /dev/null +++ b/sys/configure/structs/game.facemod.go @@ -0,0 +1,42 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +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] +} + + diff --git a/sys/configure/structs/game.facemodData.go b/sys/configure/structs/game.facemodData.go new file mode 100644 index 000000000..104e459c0 --- /dev/null +++ b/sys/configure/structs/game.facemodData.go @@ -0,0 +1,42 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +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 +} diff --git a/sys/configure/structs/game.newHeroData.go b/sys/configure/structs/game.newHeroData.go index e8eeb738b..aaf7877e1 100644 --- a/sys/configure/structs/game.newHeroData.go +++ b/sys/configure/structs/game.newHeroData.go @@ -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 }