This commit is contained in:
meixiongfeng 2023-03-03 15:50:23 +08:00
commit f80a3f08ec
14 changed files with 1246 additions and 312 deletions

View File

@ -1,6 +1,7 @@
[ [
{ {
"id": "10001", "id": "10001",
"race": 1,
"type": 1, "type": 1,
"name": "shirenyu", "name": "shirenyu",
"color": 3, "color": 3,
@ -22,6 +23,7 @@
}, },
{ {
"id": "10002", "id": "10002",
"race": 2,
"type": 1, "type": 1,
"name": "shanshan", "name": "shanshan",
"color": 3, "color": 3,
@ -43,6 +45,7 @@
}, },
{ {
"id": "10003", "id": "10003",
"race": 3,
"type": 1, "type": 1,
"name": "shexiansheng", "name": "shexiansheng",
"color": 4, "color": 4,
@ -64,6 +67,7 @@
}, },
{ {
"id": "10004", "id": "10004",
"race": 4,
"type": 1, "type": 1,
"name": "jinhou", "name": "jinhou",
"color": 4, "color": 4,
@ -96,6 +100,7 @@
}, },
{ {
"id": "10005", "id": "10005",
"race": 1,
"type": 1, "type": 1,
"name": "hedashi", "name": "hedashi",
"color": 4, "color": 4,
@ -108,7 +113,7 @@
"key": "wuguanhedashi", "key": "wuguanhedashi",
"text": "提升可挂机的时间{0}秒" "text": "提升可挂机的时间{0}秒"
}, },
"duration": 1000, "duration": 1,
"exp": 0, "exp": 0,
"probability": 0, "probability": 0,
"ants": [], "ants": [],
@ -117,6 +122,7 @@
}, },
{ {
"id": "10006", "id": "10006",
"race": 2,
"type": 1, "type": 1,
"name": "hanjiaohu", "name": "hanjiaohu",
"color": 4, "color": 4,
@ -129,7 +135,7 @@
"key": "wuguanhanjiaohu", "key": "wuguanhanjiaohu",
"text": "提升可挂机的时间{0}秒" "text": "提升可挂机的时间{0}秒"
}, },
"duration": 1200, "duration": 1,
"exp": 0, "exp": 0,
"probability": 0, "probability": 0,
"ants": [], "ants": [],
@ -138,6 +144,7 @@
}, },
{ {
"id": "10007", "id": "10007",
"race": 3,
"type": 1, "type": 1,
"name": "gai", "name": "gai",
"color": 5, "color": 5,
@ -150,7 +157,7 @@
"key": "wuguangai", "key": "wuguangai",
"text": "提升可挂机的时间{0}秒" "text": "提升可挂机的时间{0}秒"
}, },
"duration": 1500, "duration": 1,
"exp": 0, "exp": 0,
"probability": 0, "probability": 0,
"ants": [], "ants": [],
@ -159,6 +166,7 @@
}, },
{ {
"id": "10008", "id": "10008",
"race": 4,
"type": 1, "type": 1,
"name": "xikapu", "name": "xikapu",
"color": 5, "color": 5,
@ -171,7 +179,7 @@
"key": "wuguanxikapu", "key": "wuguanxikapu",
"text": "提升可挂机的时间{0}秒,提升每分钟的经验值获取{0}%" "text": "提升可挂机的时间{0}秒,提升每分钟的经验值获取{0}%"
}, },
"duration": 1000, "duration": 1,
"exp": 10, "exp": 10,
"probability": 0, "probability": 0,
"ants": [], "ants": [],
@ -180,6 +188,7 @@
}, },
{ {
"id": "10009", "id": "10009",
"race": 1,
"type": 1, "type": 1,
"name": "mao", "name": "mao",
"color": 5, "color": 5,
@ -212,6 +221,7 @@
}, },
{ {
"id": "10010", "id": "10010",
"race": 2,
"type": 1, "type": 1,
"name": "shifu", "name": "shifu",
"color": 5, "color": 5,
@ -244,6 +254,7 @@
}, },
{ {
"id": "10011", "id": "10011",
"race": 1,
"type": 1, "type": 1,
"name": "abao", "name": "abao",
"color": 5, "color": 5,
@ -276,6 +287,7 @@
}, },
{ {
"id": "10012", "id": "10012",
"race": 2,
"type": 1, "type": 1,
"name": "wuguidashi", "name": "wuguidashi",
"color": 5, "color": 5,
@ -308,6 +320,7 @@
}, },
{ {
"id": "20001", "id": "20001",
"race": 0,
"type": 2, "type": 2,
"name": "shisuo", "name": "shisuo",
"color": 3, "color": 3,
@ -340,6 +353,7 @@
}, },
{ {
"id": "20002", "id": "20002",
"race": 0,
"type": 2, "type": 2,
"name": "kongzu", "name": "kongzu",
"color": 3, "color": 3,
@ -361,6 +375,7 @@
}, },
{ {
"id": "20003", "id": "20003",
"race": 0,
"type": 2, "type": 2,
"name": "mupajia", "name": "mupajia",
"color": 3, "color": 3,
@ -382,6 +397,7 @@
}, },
{ {
"id": "20004", "id": "20004",
"race": 0,
"type": 2, "type": 2,
"name": "budaoweng", "name": "budaoweng",
"color": 3, "color": 3,
@ -403,6 +419,7 @@
}, },
{ {
"id": "20005", "id": "20005",
"race": 0,
"type": 2, "type": 2,
"name": "bangchui", "name": "bangchui",
"color": 4, "color": 4,
@ -415,7 +432,7 @@
"key": "wuguanbangchui", "key": "wuguanbangchui",
"text": "提升可挂机的时间{0}秒" "text": "提升可挂机的时间{0}秒"
}, },
"duration": 1000, "duration": 1,
"exp": 0, "exp": 0,
"probability": 0, "probability": 0,
"ants": [], "ants": [],
@ -424,6 +441,7 @@
}, },
{ {
"id": "20006", "id": "20006",
"race": 0,
"type": 2, "type": 2,
"name": "tongling", "name": "tongling",
"color": 4, "color": 4,
@ -436,7 +454,7 @@
"key": "wuguantongling", "key": "wuguantongling",
"text": "提升可挂机的时间{0}秒" "text": "提升可挂机的时间{0}秒"
}, },
"duration": 1200, "duration": 1,
"exp": 0, "exp": 0,
"probability": 0, "probability": 0,
"ants": [], "ants": [],
@ -445,6 +463,7 @@
}, },
{ {
"id": "20007", "id": "20007",
"race": 0,
"type": 2, "type": 2,
"name": "diaohuan", "name": "diaohuan",
"color": 4, "color": 4,
@ -457,7 +476,7 @@
"key": "wuguandiaohuan", "key": "wuguandiaohuan",
"text": "提升可挂机的时间{0}秒" "text": "提升可挂机的时间{0}秒"
}, },
"duration": 1500, "duration": 1,
"exp": 0, "exp": 0,
"probability": 0, "probability": 0,
"ants": [], "ants": [],
@ -466,6 +485,7 @@
}, },
{ {
"id": "20008", "id": "20008",
"race": 0,
"type": 2, "type": 2,
"name": "tuoluo", "name": "tuoluo",
"color": 4, "color": 4,
@ -478,7 +498,7 @@
"key": "wuguantuoluo", "key": "wuguantuoluo",
"text": "提升可挂机的时间{0}秒,提升每分钟的经验值获取{0}%" "text": "提升可挂机的时间{0}秒,提升每分钟的经验值获取{0}%"
}, },
"duration": 1000, "duration": 1,
"exp": 0, "exp": 0,
"probability": 0, "probability": 0,
"ants": [], "ants": [],
@ -487,6 +507,7 @@
}, },
{ {
"id": "20009", "id": "20009",
"race": 0,
"type": 2, "type": 2,
"name": "dazhuanlun", "name": "dazhuanlun",
"color": 4, "color": 4,
@ -519,6 +540,7 @@
}, },
{ {
"id": "20010", "id": "20010",
"race": 0,
"type": 2, "type": 2,
"name": "mutoupai", "name": "mutoupai",
"color": 4, "color": 4,
@ -551,6 +573,7 @@
}, },
{ {
"id": "20011", "id": "20011",
"race": 0,
"type": 2, "type": 2,
"name": "shuangjiegun", "name": "shuangjiegun",
"color": 4, "color": 4,
@ -583,6 +606,7 @@
}, },
{ {
"id": "20012", "id": "20012",
"race": 0,
"type": 2, "type": 2,
"name": "liangongdai", "name": "liangongdai",
"color": 4, "color": 4,
@ -615,6 +639,7 @@
}, },
{ {
"id": "20013", "id": "20013",
"race": 0,
"type": 2, "type": 2,
"name": "qicaihuagun", "name": "qicaihuagun",
"color": 4, "color": 4,
@ -647,6 +672,7 @@
}, },
{ {
"id": "20014", "id": "20014",
"race": 0,
"type": 2, "type": 2,
"name": "liuxingfeibiao", "name": "liuxingfeibiao",
"color": 4, "color": 4,
@ -659,7 +685,7 @@
"key": "wuguanliuxingfeibiao", "key": "wuguanliuxingfeibiao",
"text": "提升可挂机的时间{0}秒" "text": "提升可挂机的时间{0}秒"
}, },
"duration": 1000, "duration": 1,
"exp": 0, "exp": 0,
"probability": 0, "probability": 0,
"ants": [], "ants": [],
@ -668,6 +694,7 @@
}, },
{ {
"id": "20015", "id": "20015",
"race": 0,
"type": 2, "type": 2,
"name": "mingxiangluo", "name": "mingxiangluo",
"color": 5, "color": 5,
@ -680,7 +707,7 @@
"key": "wuguanmingxiangluo", "key": "wuguanmingxiangluo",
"text": "提升可挂机的时间{0}秒" "text": "提升可挂机的时间{0}秒"
}, },
"duration": 1200, "duration": 1,
"exp": 0, "exp": 0,
"probability": 0, "probability": 0,
"ants": [], "ants": [],
@ -689,6 +716,7 @@
}, },
{ {
"id": "20016", "id": "20016",
"race": 0,
"type": 2, "type": 2,
"name": "caitiaolong", "name": "caitiaolong",
"color": 5, "color": 5,
@ -701,7 +729,7 @@
"key": "wuguancaitiaolong", "key": "wuguancaitiaolong",
"text": "提升可挂机的时间{0}秒,提升每分钟的经验值获取{0}%" "text": "提升可挂机的时间{0}秒,提升每分钟的经验值获取{0}%"
}, },
"duration": 1500, "duration": 1,
"exp": 10, "exp": 10,
"probability": 0, "probability": 0,
"ants": [], "ants": [],
@ -710,6 +738,7 @@
}, },
{ {
"id": "20017", "id": "20017",
"race": 0,
"type": 2, "type": 2,
"name": "kongquemaosan", "name": "kongquemaosan",
"color": 5, "color": 5,
@ -740,6 +769,7 @@
}, },
{ {
"id": "20018", "id": "20018",
"race": 0,
"type": 2, "type": 2,
"name": "pinghengmu", "name": "pinghengmu",
"color": 5, "color": 5,
@ -770,6 +800,7 @@
}, },
{ {
"id": "20019", "id": "20019",
"race": 0,
"type": 2, "type": 2,
"name": "tiehuan", "name": "tiehuan",
"color": 5, "color": 5,
@ -800,6 +831,7 @@
}, },
{ {
"id": "20020", "id": "20020",
"race": 0,
"type": 2, "type": 2,
"name": "taijiqiu", "name": "taijiqiu",
"color": 5, "color": 5,

View File

@ -5,6 +5,12 @@
"key": "wuguandongzuo_101", "key": "wuguandongzuo_101",
"text": "开合跳" "text": "开合跳"
}, },
"icon": "",
"des": {
"key": "wuguandongzuo_",
"text": "开合跳"
},
"p": 200,
"buff_group": 1000001 "buff_group": 1000001
}, },
{ {
@ -13,6 +19,12 @@
"key": "wuguandongzuo_102", "key": "wuguandongzuo_102",
"text": "手臂环绕" "text": "手臂环绕"
}, },
"icon": "",
"des": {
"key": "wuguandongzuo_",
"text": "手臂环绕"
},
"p": 200,
"buff_group": 1000001 "buff_group": 1000001
}, },
{ {
@ -21,6 +33,12 @@
"key": "wuguandongzuo_103", "key": "wuguandongzuo_103",
"text": "肩部拉伸" "text": "肩部拉伸"
}, },
"icon": "",
"des": {
"key": "wuguandongzuo_",
"text": "肩部拉伸"
},
"p": 200,
"buff_group": 1000001 "buff_group": 1000001
}, },
{ {
@ -29,6 +47,12 @@
"key": "wuguandongzuo_104", "key": "wuguandongzuo_104",
"text": "波比" "text": "波比"
}, },
"icon": "",
"des": {
"key": "wuguandongzuo_",
"text": "波比"
},
"p": 200,
"buff_group": 1000001 "buff_group": 1000001
}, },
{ {
@ -37,6 +61,12 @@
"key": "wuguandongzuo_105", "key": "wuguandongzuo_105",
"text": "交错俯卧撑" "text": "交错俯卧撑"
}, },
"icon": "",
"des": {
"key": "wuguandongzuo_",
"text": "交错俯卧撑"
},
"p": 200,
"buff_group": 1000001 "buff_group": 1000001
}, },
{ {
@ -45,6 +75,12 @@
"key": "wuguandongzuo_106", "key": "wuguandongzuo_106",
"text": "钻石俯卧撑" "text": "钻石俯卧撑"
}, },
"icon": "",
"des": {
"key": "wuguandongzuo_",
"text": "钻石俯卧撑"
},
"p": 200,
"buff_group": 1000001 "buff_group": 1000001
}, },
{ {
@ -53,6 +89,12 @@
"key": "wuguandongzuo_107", "key": "wuguandongzuo_107",
"text": "掌上压后转身" "text": "掌上压后转身"
}, },
"icon": "",
"des": {
"key": "wuguandongzuo_",
"text": "掌上压后转身"
},
"p": 200,
"buff_group": 1000001 "buff_group": 1000001
}, },
{ {
@ -61,6 +103,12 @@
"key": "wuguandongzuo_108", "key": "wuguandongzuo_108",
"text": "眼镜蛇式拉伸" "text": "眼镜蛇式拉伸"
}, },
"icon": "",
"des": {
"key": "wuguandongzuo_",
"text": "眼镜蛇式拉伸"
},
"p": 200,
"buff_group": 1000001 "buff_group": 1000001
}, },
{ {
@ -69,6 +117,12 @@
"key": "wuguandongzuo_109", "key": "wuguandongzuo_109",
"text": "胸部拉伸" "text": "胸部拉伸"
}, },
"icon": "",
"des": {
"key": "wuguandongzuo_",
"text": "胸部拉伸"
},
"p": 200,
"buff_group": 1000001 "buff_group": 1000001
}, },
{ {
@ -77,6 +131,12 @@
"key": "wuguandongzuo_110", "key": "wuguandongzuo_110",
"text": "原地跑" "text": "原地跑"
}, },
"icon": "",
"des": {
"key": "wuguandongzuo_",
"text": "原地跑"
},
"p": 200,
"buff_group": 1000001 "buff_group": 1000001
}, },
{ {
@ -85,6 +145,12 @@
"key": "wuguandongzuo_111", "key": "wuguandongzuo_111",
"text": "深蹲" "text": "深蹲"
}, },
"icon": "",
"des": {
"key": "wuguandongzuo_",
"text": "深蹲"
},
"p": 200,
"buff_group": 1000001 "buff_group": 1000001
}, },
{ {
@ -93,6 +159,12 @@
"key": "wuguandongzuo_112", "key": "wuguandongzuo_112",
"text": "仰卧起坐" "text": "仰卧起坐"
}, },
"icon": "",
"des": {
"key": "wuguandongzuo_",
"text": "仰卧起坐"
},
"p": 200,
"buff_group": 1000001 "buff_group": 1000001
} }
] ]

View File

@ -28,7 +28,7 @@
} }
], ],
"min_exp": 10, "min_exp": 10,
"placement_duration": 14400, "placement_duration": 2,
"prop_position": 0, "prop_position": 0,
"photo_guide_unlocking": [] "photo_guide_unlocking": []
}, },
@ -61,7 +61,7 @@
} }
], ],
"min_exp": 15, "min_exp": 15,
"placement_duration": 18000, "placement_duration": 2,
"prop_position": 1, "prop_position": 1,
"photo_guide_unlocking": [] "photo_guide_unlocking": []
}, },
@ -94,7 +94,7 @@
} }
], ],
"min_exp": 20, "min_exp": 20,
"placement_duration": 21600, "placement_duration": 2,
"prop_position": 1, "prop_position": 1,
"photo_guide_unlocking": [] "photo_guide_unlocking": []
}, },
@ -127,7 +127,7 @@
} }
], ],
"min_exp": 25, "min_exp": 25,
"placement_duration": 25200, "placement_duration": 2,
"prop_position": 1, "prop_position": 1,
"photo_guide_unlocking": [] "photo_guide_unlocking": []
}, },
@ -144,7 +144,7 @@
}, },
"up_lv_consume": [], "up_lv_consume": [],
"min_exp": 30, "min_exp": 30,
"placement_duration": 28800, "placement_duration": 2,
"prop_position": 1, "prop_position": 1,
"photo_guide_unlocking": [] "photo_guide_unlocking": []
} }

View File

@ -1,274 +1,631 @@
[ [
{ {
"id": "10110", "id": "100001",
"tab_id": 1, "tab_id": 1,
"name_text": { "name_text": {
"key": "1", "key": "wuguan_1",
"text": "神龙卷轴残卷一" "text": "Lv1木桩"
}, },
"effect_text": { "effect_text": {
"key": "1", "key": "wuguan_1",
"text": "神龙卷轴残卷一" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "1", "key": "wuguan_1",
"text": "神龙卷轴来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 30 "atlas_score": 30
}, },
{ {
"id": "10111", "id": "100002",
"tab_id": 1, "tab_id": 1,
"name_text": { "name_text": {
"key": "2", "key": "wuguan_1",
"text": "神龙卷轴残卷二" "text": "Lv2木桩"
}, },
"effect_text": { "effect_text": {
"key": "2", "key": "wuguan_1",
"text": "神龙卷轴残卷二" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "2", "key": "wuguan_1",
"text": "神龙卷轴来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 45 "atlas_score": 45
}, },
{ {
"id": "10112", "id": "100003",
"tab_id": 1, "tab_id": 1,
"name_text": { "name_text": {
"key": "3", "key": "wuguan_1",
"text": "神龙卷轴残卷三" "text": "Lv3木桩"
}, },
"effect_text": { "effect_text": {
"key": "3", "key": "wuguan_1",
"text": "神龙卷轴残卷三" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "3", "key": "wuguan_1",
"text": "神龙卷轴来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 60 "atlas_score": 60
}, },
{ {
"id": "10113", "id": "100004",
"tab_id": 1, "tab_id": 1,
"name_text": { "name_text": {
"key": "4", "key": "wuguan_1",
"text": "神龙卷轴残卷四" "text": "Lv4木桩"
}, },
"effect_text": { "effect_text": {
"key": "4", "key": "wuguan_1",
"text": "神龙卷轴残卷四" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "4", "key": "wuguan_1",
"text": "神龙卷轴来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 75 "atlas_score": 75
}, },
{ {
"id": "10210", "id": "100005",
"tab_id": 2, "tab_id": 1,
"name_text": { "name_text": {
"key": "5", "key": "wuguan_1",
"text": "魔法大师卷一" "text": "Lv5木桩"
}, },
"effect_text": { "effect_text": {
"key": "5", "key": "wuguan_1",
"text": "魔法大师卷一" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "5", "key": "wuguan_1",
"text": "魔法大师来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 90 "atlas_score": 90
}, },
{ {
"id": "10211", "id": "10001",
"tab_id": 2, "tab_id": 2,
"name_text": { "name_text": {
"key": "6", "key": "wuguan_2",
"text": "魔法大师卷二" "text": "食人鱼"
}, },
"effect_text": { "effect_text": {
"key": "6", "key": "wuguan_2",
"text": "魔法大师卷二" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "6", "key": "wuguan_2",
"text": "魔法大师来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 105 "atlas_score": 105
}, },
{ {
"id": "10212", "id": "10002",
"tab_id": 2, "tab_id": 2,
"name_text": { "name_text": {
"key": "7", "key": "wuguan_2",
"text": "魔法大师卷三" "text": "闪闪"
}, },
"effect_text": { "effect_text": {
"key": "7", "key": "wuguan_2",
"text": "魔法大师卷三" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "7", "key": "wuguan_2",
"text": "魔法大师来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 120 "atlas_score": 120
}, },
{ {
"id": "10213", "id": "10003",
"tab_id": 2, "tab_id": 2,
"name_text": { "name_text": {
"key": "8", "key": "wuguan_2",
"text": "魔法大师卷四" "text": "蛇先生"
}, },
"effect_text": { "effect_text": {
"key": "8", "key": "wuguan_2",
"text": "魔法大师卷四" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "8", "key": "wuguan_2",
"text": "魔法大师来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 135 "atlas_score": 135
}, },
{ {
"id": "10310", "id": "10004",
"tab_id": 3, "tab_id": 2,
"name_text": { "name_text": {
"key": "1", "key": "wuguan_2",
"text": "神龙卷轴残卷一" "text": "金猴"
}, },
"effect_text": { "effect_text": {
"key": "1", "key": "wuguan_2",
"text": "神龙卷轴残卷一" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "1", "key": "wuguan_2",
"text": "神龙卷轴来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 150 "atlas_score": 150
}, },
{ {
"id": "10311", "id": "10005",
"tab_id": 3, "tab_id": 2,
"name_text": { "name_text": {
"key": "2", "key": "wuguan_2",
"text": "神龙卷轴残卷二" "text": "鹤大师"
}, },
"effect_text": { "effect_text": {
"key": "2", "key": "wuguan_2",
"text": "神龙卷轴残卷二" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "2", "key": "wuguan_2",
"text": "神龙卷轴来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 165 "atlas_score": 165
}, },
{ {
"id": "10312", "id": "10006",
"tab_id": 3, "tab_id": 2,
"name_text": { "name_text": {
"key": "3", "key": "wuguan_2",
"text": "神龙卷轴残卷三" "text": "悍娇虎"
}, },
"effect_text": { "effect_text": {
"key": "3", "key": "wuguan_2",
"text": "神龙卷轴残卷三" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "3", "key": "wuguan_2",
"text": "神龙卷轴来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 180 "atlas_score": 180
}, },
{ {
"id": "10313", "id": "10007",
"tab_id": 3, "tab_id": 2,
"name_text": { "name_text": {
"key": "4", "key": "wuguan_2",
"text": "神龙卷轴残卷四" "text": ""
}, },
"effect_text": { "effect_text": {
"key": "4", "key": "wuguan_2",
"text": "神龙卷轴残卷四" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "4", "key": "wuguan_2",
"text": "神龙卷轴来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 195 "atlas_score": 195
}, },
{ {
"id": "10013", "id": "10008",
"tab_id": 4, "tab_id": 2,
"name_text": { "name_text": {
"key": "5", "key": "wuguan_2",
"text": "魔法大师卷一" "text": "希卡普"
}, },
"effect_text": { "effect_text": {
"key": "5", "key": "wuguan_2",
"text": "魔法大师卷一" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "5", "key": "wuguan_2",
"text": "魔法大师来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 210 "atlas_score": 210
}, },
{ {
"id": "10014", "id": "10009",
"tab_id": 4, "tab_id": 2,
"name_text": { "name_text": {
"key": "6", "key": "wuguan_2",
"text": "魔法大师卷二" "text": "穿靴猫"
}, },
"effect_text": { "effect_text": {
"key": "6", "key": "wuguan_2",
"text": "魔法大师卷二" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "6", "key": "wuguan_2",
"text": "魔法大师来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 225 "atlas_score": 225
}, },
{ {
"id": "10015", "id": "10010",
"tab_id": 4, "tab_id": 2,
"name_text": { "name_text": {
"key": "7", "key": "wuguan_2",
"text": "魔法大师卷三" "text": "师父"
}, },
"effect_text": { "effect_text": {
"key": "7", "key": "wuguan_2",
"text": "魔法大师卷三" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "7", "key": "wuguan_2",
"text": "魔法大师来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 240 "atlas_score": 240
}, },
{ {
"id": "10016", "id": "10011",
"tab_id": 4, "tab_id": 2,
"name_text": { "name_text": {
"key": "8", "key": "wuguan_2",
"text": "魔法大师卷四" "text": "阿宝"
}, },
"effect_text": { "effect_text": {
"key": "8", "key": "wuguan_2",
"text": "魔法大师卷四" "text": "道具效果描述"
}, },
"content_text": { "content_text": {
"key": "8", "key": "wuguan_2",
"text": "魔法大师来历描述" "text": "图鉴信息描述"
}, },
"atlas_score": 255 "atlas_score": 255
},
{
"id": "10012",
"tab_id": 2,
"name_text": {
"key": "wuguan_2",
"text": "乌龟大师"
},
"effect_text": {
"key": "wuguan_2",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_2",
"text": "图鉴信息描述"
},
"atlas_score": 270
},
{
"id": "20001",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "石锁"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 285
},
{
"id": "20002",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "双头空竹"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 300
},
{
"id": "20003",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "木爬架"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 315
},
{
"id": "20004",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "不倒翁"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 330
},
{
"id": "20005",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "棒槌"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 345
},
{
"id": "20006",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "铜铃"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 360
},
{
"id": "20007",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "尖刺吊环"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 375
},
{
"id": "20008",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "陀螺"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 390
},
{
"id": "20009",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "大转轮"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 405
},
{
"id": "20010",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "木头牌"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 420
},
{
"id": "20011",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "双节棍"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 435
},
{
"id": "20012",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "练功带"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 450
},
{
"id": "20013",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "七彩花棍"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 465
},
{
"id": "20014",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "流星飞镖"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 480
},
{
"id": "20015",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "冥想锣"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 495
},
{
"id": "20016",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "彩条龙"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 510
},
{
"id": "20017",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "孔雀毛扇"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 525
},
{
"id": "20018",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "平衡木"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 540
},
{
"id": "20019",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "铁环"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 555
},
{
"id": "20020",
"tab_id": 3,
"name_text": {
"key": "wuguan_3",
"text": "太极球"
},
"effect_text": {
"key": "wuguan_3",
"text": "道具效果描述"
},
"content_text": {
"key": "wuguan_3",
"text": "图鉴信息描述"
},
"atlas_score": 570
} }
] ]

View File

@ -5,6 +5,7 @@ import (
"go_dreamfactory/lego/sys/log" "go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure" "go_dreamfactory/sys/configure"
"time"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
) )
@ -22,49 +23,74 @@ func (this *apiComp) Accept(session comm.IUserSession, req *pb.PracticeAcceptReq
if code = this.AcceptCheck(session, req); code != pb.ErrorCode_Success { if code = this.AcceptCheck(session, req); code != pb.ErrorCode_Success {
return return
} }
var (
err error
redRecord *pb.DBPracticeQiecuoRecord
blueRecord *pb.DBPracticeQiecuoRecord
keep bool
)
//校验切磋请求是否超时 //校验切磋请求是否超时
if qr := this.module.modelQiecuo.getQiecuo(req.Uid); qr != nil { if redRecord, err = this.module.modelQiecuo.queryQiecuo(req.Uid); err != nil {
now := configure.Now().Unix() code = pb.ErrorCode_DBError
if now-qr.Timestamp > 10 { //大于10s 切磋超时 return
code = pb.ErrorCode_FriendQiecuoTimeout }
this.module.Debug("切磋接受超时", log.Field{Key: "uid", Value: session.GetUserId()}) if blueRecord, err = this.module.modelQiecuo.queryQiecuo(session.GetUserId()); err != nil {
return code = pb.ErrorCode_DBError
return
}
if redRecord.Status == 1 { //已经在战斗中了
code = pb.ErrorCode_PracticeQiecuoing
return
}
keep = false
for _, v := range redRecord.Targets {
if v.Uid == session.GetUserId() {
if configure.Now().Sub(time.Unix(v.Timestamp, 0)).Seconds() > 10 {
code = pb.ErrorCode_PracticeInviteTimeOut
return
}
keep = true
} }
} else { }
code = pb.ErrorCode_FriendQiecuoNoRequest if !keep {
code = pb.ErrorCode_ReqParameterError
return return
} }
if imodule, err := this.module.service.GetModule(comm.ModulePvp); err == nil { //发起者 red
if ipvp, ok := imodule.(comm.IPvp); ok { red := this.module.ModuleUser.GetUser(req.Uid)
//发起者 red if red == nil {
red := this.module.ModuleUser.GetUser(req.Uid) code = pb.ErrorCode_UserNofound
if red == nil { this.module.Error("未找到红方信息", log.Field{Key: "uid", Value: req.Uid})
code = pb.ErrorCode_UserNofound return
this.module.Error("未找到红方信息", log.Field{Key: "uid", Value: req.Uid})
return
}
blue := this.module.ModuleUser.GetUser(session.GetUserId())
if blue == nil {
code = pb.ErrorCode_UserNofound
this.module.Error("未找到蓝方信息", log.Field{Key: "uid", Value: session.GetUserId()})
return
}
matchId, c := ipvp.CreatePvp(
&pb.PvpUserInfo{Uid: red.Uid, Name: red.Name, Avatar: red.Avatar, Lv: red.Lv},
&pb.PvpUserInfo{Uid: blue.Uid, Name: blue.Name, Avatar: blue.Avatar, Lv: blue.Lv},
pb.PvpType_friends,
)
if c != pb.ErrorCode_Success {
this.module.Debug("createPvp code:", log.Field{Key: "code", Value: c})
return
}
//更新状态
this.module.modelQiecuo.updateQiecuoRecord(req.Uid, session.GetUserId(), matchId)
}
} }
blue := this.module.ModuleUser.GetUser(session.GetUserId())
if blue == nil {
code = pb.ErrorCode_UserNofound
this.module.Error("未找到蓝方信息", log.Field{Key: "uid", Value: session.GetUserId()})
return
}
if redRecord.Battid, code = this.module.pvp.CreatePvp(
&pb.PvpUserInfo{Uid: red.Uid, Name: red.Name, Avatar: red.Avatar, Lv: red.Lv},
&pb.PvpUserInfo{Uid: blue.Uid, Name: blue.Name, Avatar: blue.Avatar, Lv: blue.Lv},
pb.PvpType_friends,
); code != pb.ErrorCode_Success {
this.module.Error("CreatePvp", log.Field{Key: "code", Value: code})
return
}
redRecord.Status = 1
redRecord.Member = []string{session.GetUserId(), req.Uid}
blueRecord.Status = 1
blueRecord.Member = []string{session.GetUserId(), req.Uid}
this.module.modelQiecuo.Change(session.GetUserId(), map[string]interface{}{
"status": 1,
"member": redRecord.Member,
})
this.module.modelQiecuo.Change(req.Uid, map[string]interface{}{
"status": 1,
"member": redRecord.Member,
})
if err := session.SendMsg(string(this.module.GetType()), "accept", &pb.FriendAcceptResp{ if err := session.SendMsg(string(this.module.GetType()), "accept", &pb.FriendAcceptResp{
IsSucc: true, IsSucc: true,
@ -78,3 +104,4 @@ func (this *apiComp) Accept(session comm.IUserSession, req *pb.PracticeAcceptReq
return return
} }

View File

@ -42,7 +42,7 @@ func (this *apiComp) Loot(session comm.IUserSession, req *pb.PracticeLootReq) (c
code = pb.ErrorCode_ConfigNoFound code = pb.ErrorCode_ConfigNoFound
return return
} }
if code = this.module.ModuleHero.KungFuHero(session, req.Hero, true, ""); code != pb.ErrorCode_Success { if code = this.module.ModuleHero.KungFuHero(session, req.Hero, true, req.Friend); code != pb.ErrorCode_Success {
return return
} }
if req.Teacher != "" { if req.Teacher != "" {
@ -71,6 +71,7 @@ func (this *apiComp) Loot(session comm.IUserSession, req *pb.PracticeLootReq) (c
extra += pconfigure.Duration extra += pconfigure.Duration
froom.Pillarf.Prop = req.Prop froom.Pillarf.Prop = req.Prop
} }
froom.Pillarf.Uid = session.GetUserId()
froom.Pillarf.Hero = req.Hero froom.Pillarf.Hero = req.Hero
froom.Pillarf.Start = configure.Now().Unix() froom.Pillarf.Start = configure.Now().Unix()
froom.Pillarf.End = configure.Now().Add(time.Minute * (time.Duration(pillarconfigure.PlacementDuration + extra))).Unix() froom.Pillarf.End = configure.Now().Add(time.Minute * (time.Duration(pillarconfigure.PlacementDuration + extra))).Unix()

View File

@ -1,9 +1,10 @@
package practice package practice
import ( import (
"errors"
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"time"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
) )
@ -20,6 +21,12 @@ func (this *apiComp) Qiecuo(session comm.IUserSession, req *pb.PracticeQiecuoReq
if code = this.QiecuoCheck(session, req); code != pb.ErrorCode_Success { if code = this.QiecuoCheck(session, req); code != pb.ErrorCode_Success {
return return
} }
var (
err error
result *pb.DBPracticeQiecuoRecord
fresult *pb.DBPracticeQiecuoRecord
keep bool
)
//目标是否在线 //目标是否在线
if !this.module.ModuleUser.IsOnline(req.Fid) { if !this.module.ModuleUser.IsOnline(req.Fid) {
@ -28,22 +35,45 @@ func (this *apiComp) Qiecuo(session comm.IUserSession, req *pb.PracticeQiecuoReq
} }
//切磋请求处理 //切磋请求处理
if err := this.module.modelQiecuo.qiecuoReq(session.GetUserId(), req.Fid); err != nil { if result, err = this.module.modelQiecuo.queryQiecuo(session.GetUserId()); err != nil {
var customErr = new(comm.CustomError) code = pb.ErrorCode_DBError
if errors.As(err, &customErr) {
code = customErr.Code
} else {
code = pb.ErrorCode_DBError
}
return return
} }
if fresult, err = this.module.modelQiecuo.queryQiecuo(req.Fid); err != nil {
code = pb.ErrorCode_DBError
return
}
if result.Status == 1 || fresult.Status == 1 { //已经在战斗中了
code = pb.ErrorCode_PracticeQiecuoing
return
}
keep = false
for _, v := range result.Targets {
if v.Uid == req.Fid {
keep = true
if configure.Now().Sub(time.Unix(v.Timestamp, 0)).Seconds() > 10 {
v.Timestamp = configure.Now().Unix()
} else {
code = pb.ErrorCode_PracticeSent
return
}
}
}
if !keep {
result.Targets = append(result.Targets, &pb.DBPracticeQiecuoInvite{
Uid: req.Fid,
Timestamp: configure.Now().Unix(),
})
}
this.module.modelQiecuo.Change(session.GetUserId(), map[string]interface{}{
"targets": result.Targets,
})
if err := session.SendMsg(string(this.module.GetType()), "qiecuo", &pb.PracticeQiecuoResp{ if err = session.SendMsg(string(this.module.GetType()), "qiecuo", &pb.PracticeQiecuoResp{Fid: req.Fid}); err != nil {
Fid: req.Fid,
}); err != nil {
code = pb.ErrorCode_SystemError code = pb.ErrorCode_SystemError
return return
} }
this.module.SendMsgToUser(string(this.module.GetType()), "qiecuonotify", this.module.SendMsgToUser(string(this.module.GetType()), "qiecuonotify",
&pb.PracticeQiecuonotifyPush{Uid: session.GetUserId(), NotifyType: 1}, req.Fid) &pb.PracticeQiecuonotifyPush{Uid: session.GetUserId(), NotifyType: 1}, req.Fid)

View File

@ -12,13 +12,54 @@ func (this *apiComp) RefuseCheck(session comm.IUserSession, req *pb.PracticeRefu
return return
} }
//拒绝切磋
func (this *apiComp) Refuse(session comm.IUserSession, req *pb.PracticeRefuseReq) (code pb.ErrorCode, data proto.Message) { func (this *apiComp) Refuse(session comm.IUserSession, req *pb.PracticeRefuseReq) (code pb.ErrorCode, data proto.Message) {
if code = this.RefuseCheck(session, req); code != pb.ErrorCode_Success { if code = this.RefuseCheck(session, req); code != pb.ErrorCode_Success {
return return
} }
var (
err error
result *pb.DBPracticeQiecuoRecord
keep bool
room *pb.DBPracticeRoom
)
//清楚切磋请求记录 //切磋请求处理
this.module.modelQiecuo.DelByUId(req.Uid) if result, err = this.module.modelQiecuo.queryQiecuo(req.Uid); err != nil {
code = pb.ErrorCode_DBError
return
}
keep = false
for i, v := range result.Targets {
if v.Uid == session.GetUserId() {
result.Targets = append(result.Targets[0:i], result.Targets[i+1:]...)
keep = true
}
}
if !keep {
code = pb.ErrorCode_ReqParameterError
return
}
this.module.modelQiecuo.Change(session.GetUserId(), map[string]interface{}{
"targets": result.Targets,
})
if room, err = this.module.modelPandata.queryUserMartialhall(req.Uid); err != nil {
code = pb.ErrorCode_DBError
return
}
for i, v := range room.Statuers {
if v.Uid == session.GetUserId() { //移除雕像
room.Statuers = append(room.Statuers[0:i], room.Statuers[i+1:]...)
this.module.modelPandata.Change(req.Uid, map[string]interface{}{
"statuers": room.Statuers,
})
break
}
}
if err := session.SendMsg(string(this.module.GetType()), "refuse", &pb.PracticeRefuseResp{ if err := session.SendMsg(string(this.module.GetType()), "refuse", &pb.PracticeRefuseResp{
IsSucc: true, IsSucc: true,
@ -26,6 +67,7 @@ func (this *apiComp) Refuse(session comm.IUserSession, req *pb.PracticeRefuseReq
code = pb.ErrorCode_SystemError code = pb.ErrorCode_SystemError
return return
} }
this.module.SendMsgToUser(string(this.module.GetType()), "qiecuonotify", this.module.SendMsgToUser(string(this.module.GetType()), "qiecuonotify",
&pb.PracticeQiecuonotifyPush{Uid: session.GetUserId(), NotifyType: 3}, req.Uid) &pb.PracticeQiecuonotifyPush{Uid: session.GetUserId(), NotifyType: 3}, req.Uid)
return return

View File

@ -57,6 +57,9 @@ func (this *apiComp) Upgrade(session comm.IUserSession, req *pb.PracticeUpgradeR
return return
} }
pillar.Lv++ pillar.Lv++
if room.Pillarf.Lv < pillar.Lv {
room.Pillarf.Lv = pillar.Lv
}
switch pillar.Lv { switch pillar.Lv {
case 2: case 2:
this.module.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), "1002") this.module.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), "1002")
@ -72,7 +75,8 @@ func (this *apiComp) Upgrade(session comm.IUserSession, req *pb.PracticeUpgradeR
break break
} }
this.module.modelPandata.Change(session.GetUserId(), map[string]interface{}{ this.module.modelPandata.Change(session.GetUserId(), map[string]interface{}{
filed: pillar, filed: pillar,
"pillarf": room.Pillarf,
}) })
session.SendMsg(string(this.module.GetType()), "upgrade", &pb.PracticeUpgradeResp{Index: req.Index, Lv: pillar.Lv}) session.SendMsg(string(this.module.GetType()), "upgrade", &pb.PracticeUpgradeResp{Index: req.Index, Lv: pillar.Lv})
return return

View File

@ -3,11 +3,11 @@ package practice
import ( import (
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log" "go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/x/bsonx" "go.mongodb.org/mongo-driver/x/bsonx"
) )
@ -29,68 +29,46 @@ func (this *modelQiecuo) Init(service core.IService, module core.IModule, comp c
return return
} }
func (this *modelQiecuo) getQiecuo(uid string) *pb.QiecuoRecord {
record := &pb.QiecuoRecord{}
if err := this.Get(uid, record); err != nil {
this.module.Errorln(err)
return nil
}
return record
}
// 切磋请求处理 // 切磋请求处理
func (this *modelQiecuo) qiecuoReq(uid, targetUid string) error { func (this *modelQiecuo) queryQiecuo(uid string) (result *pb.DBPracticeQiecuoRecord, err error) {
qr := this.getQiecuo(uid) result = &pb.DBPracticeQiecuoRecord{}
if qr == nil { if err = this.Get(uid, result); err != nil && err != mgo.MongodbNil {
//创建切磋记录 this.module.Errorln(err)
qr = &pb.QiecuoRecord{ }
Uid: uid, if err == mgo.MongodbNil {
TargetId: targetUid, result = &pb.DBPracticeQiecuoRecord{
Timestamp: configure.Now().Unix(), Id: primitive.NewObjectID().Hex(),
Status: 1, //已发起 Uid: uid,
Targets: make([]*pb.DBPracticeQiecuoInvite, 0),
} }
if err := this.Add(uid, qr); err != nil { if err = this.Add(uid, result); err != nil {
this.module.Errorln(err) this.module.Errorln(err)
return err return
}
} else {
//如果目标未接受且在超时时间内,不允许再次发送
now := configure.Now().Unix()
if qr.Status == 1 && now-qr.Timestamp < 10 {
return comm.NewCustomError(pb.ErrorCode_FriendQiecuoRequested)
} else if qr.Status == 2 || qr.MatchId != "" {
return comm.NewCustomError(pb.ErrorCode_FriendQiecuoing)
} else {
update := map[string]interface{}{
"targetId": targetUid,
"timestamp": configure.Now().Unix(),
}
if err := this.Change(uid, update); err != nil {
return err
}
} }
} }
err = nil
return nil return
} }
func (this *modelQiecuo) endQiecuo(uid string) (result *pb.DBPracticeQiecuoRecord, err error) {
// 更新切磋记录 result = &pb.DBPracticeQiecuoRecord{}
func (this *modelQiecuo) updateQiecuoRecord(uid, targetUid, matchId string) error { if err = this.Get(uid, result); err != nil {
qr := this.getQiecuo(uid) this.module.Errorln(err)
if qr != nil {
update := map[string]interface{}{
"matchId": matchId,
"status": 2, //已接受
"timestamp": configure.Now().Unix(),
}
if err := this.Change(uid, update); err != nil {
this.module.Errorln(err)
return err
}
this.module.Debug("更新切磋",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "matchId", Value: matchId})
} }
this.Change(uid, map[string]interface{}{
return nil "status": 0,
"battid": "",
"targets": []*pb.DBPracticeQiecuoInvite{},
"member": []string{},
})
for _, v := range result.Member {
if v != uid {
this.Change(v, map[string]interface{}{
"status": 0,
"battid": "",
"targets": []*pb.DBPracticeQiecuoInvite{},
"member": []string{},
})
}
}
return
} }

View File

@ -5,10 +5,15 @@ import (
"go_dreamfactory/lego/base" "go_dreamfactory/lego/base"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log" "go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure" "go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs" cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/sys/db"
"time"
"go.mongodb.org/mongo-driver/bson/primitive"
) )
/* /*
@ -24,7 +29,7 @@ func NewModule() core.IModule {
type Practice struct { type Practice struct {
modules.ModuleBase modules.ModuleBase
service base.IRPCXService service base.IRPCXService
friend comm.IFriend pvp comm.IPvp
mail comm.Imail mail comm.Imail
atlas comm.IPandaAtlas atlas comm.IPandaAtlas
api *apiComp api *apiComp
@ -47,10 +52,10 @@ func (this *Practice) Init(service core.IService, module core.IModule, options c
func (this *Practice) Start() (err error) { func (this *Practice) Start() (err error) {
err = this.ModuleBase.Start() err = this.ModuleBase.Start()
var module core.IModule var module core.IModule
if module, err = this.service.GetModule(comm.ModuleFriend); err != nil { if module, err = this.service.GetModule(comm.ModulePvp); err != nil {
return return
} }
this.friend = module.(comm.IFriend) this.pvp = module.(comm.IPvp)
if module, err = this.service.GetModule(comm.ModuleMail); err != nil { if module, err = this.service.GetModule(comm.ModuleMail); err != nil {
return return
} }
@ -71,25 +76,70 @@ func (this *Practice) OnInstallComp() {
this.modelQiecuo = this.RegisterComp(new(modelQiecuo)).(*modelQiecuo) this.modelQiecuo = this.RegisterComp(new(modelQiecuo)).(*modelQiecuo)
} }
//添加武馆资源
func (this *Practice) AddItems(session comm.IUserSession, items map[string]int32, bPush bool) (code pb.ErrorCode) { func (this *Practice) AddItems(session comm.IUserSession, items map[string]int32, bPush bool) (code pb.ErrorCode) {
var ( var (
err error err error
room *pb.DBPracticeRoom room *pb.DBPracticeRoom
id []string id []string
) )
if room, err = this.modelPandata.queryUserMartialhall(session.GetUserId()); err != nil { if this.IsCross() {
code = pb.ErrorCode_DBError if room, err = this.modelPandata.queryUserMartialhall(session.GetUserId()); err != nil {
return code = pb.ErrorCode_DBError
return
}
id = make([]string, 0)
for k, _ := range items {
room.Knapsack[k] = 0
id = append(id, k)
this.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), k)
}
this.modelPandata.Change(session.GetUserId(), map[string]interface{}{
"knapsack": room.Knapsack,
})
} else {
room := &pb.DBPracticeRoom{}
conn, _ := db.Cross()
model := db.NewDBModel(comm.TablePandata, time.Hour, conn)
if err = model.Get(session.GetUserId(), room); err != nil && err != mgo.MongodbNil {
this.Errorln(err)
}
if err == mgo.MongodbNil {
room = &pb.DBPracticeRoom{
Id: primitive.NewObjectID().Hex(),
Uid: session.GetUserId(),
Full: make(map[int32]int32),
Knapsack: make(map[string]int32),
Gymaction: 0,
Gymrefresh: 0,
Pillar1: &pb.DBPracticePillar{Index: 1, Isunlock: true, Lv: 1},
Pillar2: &pb.DBPracticePillar{Index: 2, Lv: 1},
Pillar3: &pb.DBPracticePillar{Index: 3, Lv: 1},
Pillarf: &pb.DBPracticePillar{Index: 4, Lv: 1},
Statuers: make([]*pb.DBPracticeStatuer, 0),
}
id = make([]string, 0)
for k, _ := range items {
room.Knapsack[k] = 0
id = append(id, k)
this.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), k)
}
if err = model.Add(session.GetUserId(), room); err != nil {
this.Errorln(err)
return
}
} else {
id = make([]string, 0)
for k, _ := range items {
room.Knapsack[k] = 0
id = append(id, k)
this.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), k)
}
model.Change(session.GetUserId(), map[string]interface{}{
"knapsack": room.Knapsack,
})
}
} }
id = make([]string, 0)
for k, _ := range items {
room.Knapsack[k] = 0
id = append(id, k)
this.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), k)
}
this.modelPandata.Change(session.GetUserId(), map[string]interface{}{
"knapsack": room.Knapsack,
})
session.SendMsg(string(this.GetType()), "jxitem", &pb.PracticeJXItemPush{Id: id}) session.SendMsg(string(this.GetType()), "jxitem", &pb.PracticeJXItemPush{Id: id})
return return
} }
@ -116,8 +166,12 @@ func (this *Practice) TaskComplete(session comm.IUserSession, taskid int32) {
if !room.Pillar1.Isunlock { if !room.Pillar1.Isunlock {
room.Pillar1.Isunlock = true room.Pillar1.Isunlock = true
} }
if !room.Pillarf.Isunlock {
room.Pillarf.Isunlock = true
}
this.modelPandata.Change(session.GetUserId(), map[string]interface{}{ this.modelPandata.Change(session.GetUserId(), map[string]interface{}{
"pillar1": room.Pillar1, "pillar1": room.Pillar1,
"pillarf": room.Pillarf,
}) })
this.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), "1001") this.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), "1001")
break break
@ -125,8 +179,12 @@ func (this *Practice) TaskComplete(session comm.IUserSession, taskid int32) {
if !room.Pillar2.Isunlock { if !room.Pillar2.Isunlock {
room.Pillar2.Isunlock = true room.Pillar2.Isunlock = true
} }
if !room.Pillarf.Isunlock {
room.Pillarf.Isunlock = true
}
this.modelPandata.Change(session.GetUserId(), map[string]interface{}{ this.modelPandata.Change(session.GetUserId(), map[string]interface{}{
"pillar2": room.Pillar2, "pillar2": room.Pillar2,
"pillarf": room.Pillarf,
}) })
this.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), "1001") this.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), "1001")
break break
@ -134,8 +192,12 @@ func (this *Practice) TaskComplete(session comm.IUserSession, taskid int32) {
if !room.Pillar3.Isunlock { if !room.Pillar3.Isunlock {
room.Pillar3.Isunlock = true room.Pillar3.Isunlock = true
} }
if !room.Pillarf.Isunlock {
room.Pillarf.Isunlock = true
}
this.modelPandata.Change(session.GetUserId(), map[string]interface{}{ this.modelPandata.Change(session.GetUserId(), map[string]interface{}{
"pillar3": room.Pillar3, "pillar3": room.Pillar3,
"pillarf": room.Pillarf,
}) })
this.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), "1001") this.atlas.CheckActivatePandaAtlasCollect(session.GetUserId(), "1001")
break break
@ -145,6 +207,12 @@ func (this *Practice) TaskComplete(session comm.IUserSession, taskid int32) {
} }
func (this *Practice) ChallengeResults(bid, red, bule string, winSide int32) { func (this *Practice) ChallengeResults(bid, red, bule string, winSide int32) {
this.Debug("ChallengeResults",
log.Field{Key: "bid", Value: bid},
log.Field{Key: "red", Value: red},
log.Field{Key: "bule", Value: bule},
log.Field{Key: "winSide", Value: winSide},
)
var ( var (
redroom *pb.DBPracticeRoom redroom *pb.DBPracticeRoom
reduser *pb.DBUser reduser *pb.DBUser
@ -154,21 +222,8 @@ func (this *Practice) ChallengeResults(bid, red, bule string, winSide int32) {
err error err error
) )
qr := this.modelQiecuo.getQiecuo(red) if _, err = this.modelQiecuo.endQiecuo(red); err != nil {
if qr != nil && qr.MatchId == bid { this.Errorln(err)
this.Debug("清理切磋记录",
log.Field{Key: "redUid", Value: red},
log.Field{Key: "matchId", Value: bid})
//更新时间戳
update := map[string]interface{}{
"endTime": configure.Now().Unix(),
}
if err = this.modelQiecuo.Change(red, update); err != nil {
this.Errorln(err)
return
}
return
} }
if winSide == 0 { if winSide == 0 {

View File

@ -342,6 +342,10 @@ const (
ErrorCode_DispatchTicketNoEnough ErrorCode = 4203 //门票不足 ErrorCode_DispatchTicketNoEnough ErrorCode = 4203 //门票不足
ErrorCode_DispatchHeroAssigned ErrorCode = 4204 //英雄已派遣 ErrorCode_DispatchHeroAssigned ErrorCode = 4204 //英雄已派遣
ErrorCode_DispatchTaskExpired ErrorCode = 4205 //任务已过期 ErrorCode_DispatchTaskExpired ErrorCode = 4205 //任务已过期
//practice
ErrorCode_PracticeQiecuoing ErrorCode = 4301 //武馆切磋中
ErrorCode_PracticeSent ErrorCode = 4302 //邀请已发送 10秒内请勿重复邀请
ErrorCode_PracticeInviteTimeOut ErrorCode = 4303 //邀请超时
) )
// Enum value maps for ErrorCode. // Enum value maps for ErrorCode.
@ -633,6 +637,9 @@ var (
4203: "DispatchTicketNoEnough", 4203: "DispatchTicketNoEnough",
4204: "DispatchHeroAssigned", 4204: "DispatchHeroAssigned",
4205: "DispatchTaskExpired", 4205: "DispatchTaskExpired",
4301: "PracticeQiecuoing",
4302: "PracticeSent",
4303: "PracticeInviteTimeOut",
} }
ErrorCode_value = map[string]int32{ ErrorCode_value = map[string]int32{
"Success": 0, "Success": 0,
@ -921,6 +928,9 @@ var (
"DispatchTicketNoEnough": 4203, "DispatchTicketNoEnough": 4203,
"DispatchHeroAssigned": 4204, "DispatchHeroAssigned": 4204,
"DispatchTaskExpired": 4205, "DispatchTaskExpired": 4205,
"PracticeQiecuoing": 4301,
"PracticeSent": 4302,
"PracticeInviteTimeOut": 4303,
} }
) )
@ -955,7 +965,7 @@ var File_errorcode_proto protoreflect.FileDescriptor
var file_errorcode_proto_rawDesc = []byte{ var file_errorcode_proto_rawDesc = []byte{
0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2a, 0x8d, 0x34, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x6f, 0x2a, 0xd4, 0x34, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d,
0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12,
0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
@ -1372,8 +1382,12 @@ var file_errorcode_proto_rawDesc = []byte{
0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x73, 0x73, 0x69, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x73, 0x73, 0x69,
0x67, 0x6e, 0x65, 0x64, 0x10, 0xec, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x70, 0x61, 0x67, 0x6e, 0x65, 0x64, 0x10, 0xec, 0x20, 0x12, 0x18, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x70, 0x61,
0x74, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x10, 0xed, 0x74, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x10, 0xed,
0x20, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x20, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x51, 0x69, 0x65,
0x33, 0x63, 0x75, 0x6f, 0x69, 0x6e, 0x67, 0x10, 0xcd, 0x21, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x72, 0x61,
0x63, 0x74, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x10, 0xce, 0x21, 0x12, 0x1a, 0x0a, 0x15,
0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x69,
0x6d, 0x65, 0x4f, 0x75, 0x74, 0x10, 0xcf, 0x21, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

View File

@ -274,7 +274,7 @@ type DBPracticeRoom struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` //id Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //id
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //用户id Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //用户id
Gymaction int32 `protobuf:"varint,3,opt,name=gymaction,proto3" json:"gymaction"` //健身房动作 Gymaction int32 `protobuf:"varint,3,opt,name=gymaction,proto3" json:"gymaction"` //健身房动作
Gymrefresh int32 `protobuf:"varint,4,opt,name=gymrefresh,proto3" json:"gymrefresh"` //健身房刷新次数 Gymrefresh int32 `protobuf:"varint,4,opt,name=gymrefresh,proto3" json:"gymrefresh"` //健身房刷新次数
@ -404,6 +404,149 @@ func (x *DBPracticeRoom) GetStatuers() []*DBPracticeStatuer {
return nil return nil
} }
type DBPracticeQiecuoInvite struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp"`
}
func (x *DBPracticeQiecuoInvite) Reset() {
*x = DBPracticeQiecuoInvite{}
if protoimpl.UnsafeEnabled {
mi := &file_practice_practice_db_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DBPracticeQiecuoInvite) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DBPracticeQiecuoInvite) ProtoMessage() {}
func (x *DBPracticeQiecuoInvite) ProtoReflect() protoreflect.Message {
mi := &file_practice_practice_db_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 DBPracticeQiecuoInvite.ProtoReflect.Descriptor instead.
func (*DBPracticeQiecuoInvite) Descriptor() ([]byte, []int) {
return file_practice_practice_db_proto_rawDescGZIP(), []int{4}
}
func (x *DBPracticeQiecuoInvite) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
func (x *DBPracticeQiecuoInvite) GetTimestamp() int64 {
if x != nil {
return x.Timestamp
}
return 0
}
//切磋请求记录
type DBPracticeQiecuoRecord struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //id
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //发起人id
Targets []*DBPracticeQiecuoInvite `protobuf:"bytes,3,rep,name=targets,proto3" json:"targets"`
Status int32 `protobuf:"varint,4,opt,name=status,proto3" json:"status"` //0邀请中 1战斗中
Battid string `protobuf:"bytes,5,opt,name=battid,proto3" json:"battid"`
Member []string `protobuf:"bytes,6,rep,name=member,proto3" json:"member"` //接受方id
}
func (x *DBPracticeQiecuoRecord) Reset() {
*x = DBPracticeQiecuoRecord{}
if protoimpl.UnsafeEnabled {
mi := &file_practice_practice_db_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DBPracticeQiecuoRecord) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DBPracticeQiecuoRecord) ProtoMessage() {}
func (x *DBPracticeQiecuoRecord) ProtoReflect() protoreflect.Message {
mi := &file_practice_practice_db_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 DBPracticeQiecuoRecord.ProtoReflect.Descriptor instead.
func (*DBPracticeQiecuoRecord) Descriptor() ([]byte, []int) {
return file_practice_practice_db_proto_rawDescGZIP(), []int{5}
}
func (x *DBPracticeQiecuoRecord) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *DBPracticeQiecuoRecord) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
func (x *DBPracticeQiecuoRecord) GetTargets() []*DBPracticeQiecuoInvite {
if x != nil {
return x.Targets
}
return nil
}
func (x *DBPracticeQiecuoRecord) GetStatus() int32 {
if x != nil {
return x.Status
}
return 0
}
func (x *DBPracticeQiecuoRecord) GetBattid() string {
if x != nil {
return x.Battid
}
return ""
}
func (x *DBPracticeQiecuoRecord) GetMember() []string {
if x != nil {
return x.Member
}
return nil
}
var File_practice_practice_db_proto protoreflect.FileDescriptor var File_practice_practice_db_proto protoreflect.FileDescriptor
var file_practice_practice_db_proto_rawDesc = []byte{ var file_practice_practice_db_proto_rawDesc = []byte{
@ -471,8 +614,24 @@ var file_practice_practice_db_proto_rawDesc = []byte{
0x6e, 0x61, 0x70, 0x73, 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x61, 0x70, 0x73, 0x61, 0x63, 0x6b, 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, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x48, 0x0a, 0x16, 0x44, 0x42, 0x50, 0x72,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x49, 0x6e, 0x76, 0x69,
0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
0x6d, 0x70, 0x22, 0xb5, 0x01, 0x0a, 0x16, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63,
0x65, 0x51, 0x69, 0x65, 0x63, 0x75, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 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,
0x31, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x17, 0x2e, 0x44, 0x42, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x51, 0x69, 0x65,
0x63, 0x75, 0x6f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65,
0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01,
0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61,
0x74, 0x74, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x74, 0x74,
0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03,
0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -487,28 +646,31 @@ func file_practice_practice_db_proto_rawDescGZIP() []byte {
return file_practice_practice_db_proto_rawDescData return file_practice_practice_db_proto_rawDescData
} }
var file_practice_practice_db_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_practice_practice_db_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_practice_practice_db_proto_goTypes = []interface{}{ var file_practice_practice_db_proto_goTypes = []interface{}{
(*DBPracticePillar)(nil), // 0: DBPracticePillar (*DBPracticePillar)(nil), // 0: DBPracticePillar
(*DBPracticeTeacher)(nil), // 1: DBPracticeTeacher (*DBPracticeTeacher)(nil), // 1: DBPracticeTeacher
(*DBPracticeStatuer)(nil), // 2: DBPracticeStatuer (*DBPracticeStatuer)(nil), // 2: DBPracticeStatuer
(*DBPracticeRoom)(nil), // 3: DBPracticeRoom (*DBPracticeRoom)(nil), // 3: DBPracticeRoom
nil, // 4: DBPracticeRoom.FullEntry (*DBPracticeQiecuoInvite)(nil), // 4: DBPracticeQiecuoInvite
nil, // 5: DBPracticeRoom.KnapsackEntry (*DBPracticeQiecuoRecord)(nil), // 5: DBPracticeQiecuoRecord
nil, // 6: DBPracticeRoom.FullEntry
nil, // 7: DBPracticeRoom.KnapsackEntry
} }
var file_practice_practice_db_proto_depIdxs = []int32{ var file_practice_practice_db_proto_depIdxs = []int32{
4, // 0: DBPracticeRoom.full:type_name -> DBPracticeRoom.FullEntry 6, // 0: DBPracticeRoom.full:type_name -> DBPracticeRoom.FullEntry
5, // 1: DBPracticeRoom.knapsack:type_name -> DBPracticeRoom.KnapsackEntry 7, // 1: DBPracticeRoom.knapsack:type_name -> DBPracticeRoom.KnapsackEntry
0, // 2: DBPracticeRoom.pillar1:type_name -> DBPracticePillar 0, // 2: DBPracticeRoom.pillar1:type_name -> DBPracticePillar
0, // 3: DBPracticeRoom.pillar2:type_name -> DBPracticePillar 0, // 3: DBPracticeRoom.pillar2:type_name -> DBPracticePillar
0, // 4: DBPracticeRoom.pillar3:type_name -> DBPracticePillar 0, // 4: DBPracticeRoom.pillar3:type_name -> DBPracticePillar
0, // 5: DBPracticeRoom.pillarf:type_name -> DBPracticePillar 0, // 5: DBPracticeRoom.pillarf:type_name -> DBPracticePillar
2, // 6: DBPracticeRoom.statuers:type_name -> DBPracticeStatuer 2, // 6: DBPracticeRoom.statuers:type_name -> DBPracticeStatuer
7, // [7:7] is the sub-list for method output_type 4, // 7: DBPracticeQiecuoRecord.targets:type_name -> DBPracticeQiecuoInvite
7, // [7:7] is the sub-list for method input_type 8, // [8:8] is the sub-list for method output_type
7, // [7:7] is the sub-list for extension type_name 8, // [8:8] is the sub-list for method input_type
7, // [7:7] is the sub-list for extension extendee 8, // [8:8] is the sub-list for extension type_name
0, // [0:7] is the sub-list for field 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_practice_practice_db_proto_init() } func init() { file_practice_practice_db_proto_init() }
@ -565,6 +727,30 @@ func file_practice_practice_db_proto_init() {
return nil return nil
} }
} }
file_practice_practice_db_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DBPracticeQiecuoInvite); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_practice_practice_db_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DBPracticeQiecuoRecord); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
} }
type x struct{} type x struct{}
out := protoimpl.TypeBuilder{ out := protoimpl.TypeBuilder{
@ -572,7 +758,7 @@ func file_practice_practice_db_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_practice_practice_db_proto_rawDesc, RawDescriptor: file_practice_practice_db_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 6, NumMessages: 8,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View File

@ -559,6 +559,109 @@ func (x *WorldtaskFinishIdsPush) GetTaskList() []*Worldtask {
return nil return nil
} }
// 前置任务是否完成
type WorldtaskPreReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
GroupId int32 `protobuf:"varint,1,opt,name=groupId,proto3" json:"groupId"` //分组ID
TaskId int32 `protobuf:"varint,2,opt,name=taskId,proto3" json:"taskId"` //任务ID
}
func (x *WorldtaskPreReq) Reset() {
*x = WorldtaskPreReq{}
if protoimpl.UnsafeEnabled {
mi := &file_worldtask_worldtask_msg_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *WorldtaskPreReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*WorldtaskPreReq) ProtoMessage() {}
func (x *WorldtaskPreReq) ProtoReflect() protoreflect.Message {
mi := &file_worldtask_worldtask_msg_proto_msgTypes[10]
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 WorldtaskPreReq.ProtoReflect.Descriptor instead.
func (*WorldtaskPreReq) Descriptor() ([]byte, []int) {
return file_worldtask_worldtask_msg_proto_rawDescGZIP(), []int{10}
}
func (x *WorldtaskPreReq) GetGroupId() int32 {
if x != nil {
return x.GroupId
}
return 0
}
func (x *WorldtaskPreReq) GetTaskId() int32 {
if x != nil {
return x.TaskId
}
return 0
}
type WorldtaskPreResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
IsSucc bool `protobuf:"varint,1,opt,name=isSucc,proto3" json:"isSucc"` // 前置是否完成
}
func (x *WorldtaskPreResp) Reset() {
*x = WorldtaskPreResp{}
if protoimpl.UnsafeEnabled {
mi := &file_worldtask_worldtask_msg_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *WorldtaskPreResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*WorldtaskPreResp) ProtoMessage() {}
func (x *WorldtaskPreResp) ProtoReflect() protoreflect.Message {
mi := &file_worldtask_worldtask_msg_proto_msgTypes[11]
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 WorldtaskPreResp.ProtoReflect.Descriptor instead.
func (*WorldtaskPreResp) Descriptor() ([]byte, []int) {
return file_worldtask_worldtask_msg_proto_rawDescGZIP(), []int{11}
}
func (x *WorldtaskPreResp) GetIsSucc() bool {
if x != nil {
return x.IsSucc
}
return false
}
var File_worldtask_worldtask_msg_proto protoreflect.FileDescriptor var File_worldtask_worldtask_msg_proto protoreflect.FileDescriptor
var file_worldtask_worldtask_msg_proto_rawDesc = []byte{ var file_worldtask_worldtask_msg_proto_rawDesc = []byte{
@ -616,8 +719,15 @@ var file_worldtask_worldtask_msg_proto_rawDesc = []byte{
0x6e, 0x69, 0x73, 0x68, 0x49, 0x64, 0x73, 0x50, 0x75, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x08, 0x74, 0x6e, 0x69, 0x73, 0x68, 0x49, 0x64, 0x73, 0x50, 0x75, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x08, 0x74,
0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e,
0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4c,
0x69, 0x73, 0x74, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x69, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b,
0x74, 0x6f, 0x33, 0x50, 0x72, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64,
0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6c,
0x64, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06,
0x69, 0x73, 0x53, 0x75, 0x63, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73,
0x53, 0x75, 0x63, 0x63, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -632,7 +742,7 @@ func file_worldtask_worldtask_msg_proto_rawDescGZIP() []byte {
return file_worldtask_worldtask_msg_proto_rawDescData return file_worldtask_worldtask_msg_proto_rawDescData
} }
var file_worldtask_worldtask_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_worldtask_worldtask_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
var file_worldtask_worldtask_msg_proto_goTypes = []interface{}{ var file_worldtask_worldtask_msg_proto_goTypes = []interface{}{
(*WorldtaskMineReq)(nil), // 0: WorldtaskMineReq (*WorldtaskMineReq)(nil), // 0: WorldtaskMineReq
(*WorldtaskMineResp)(nil), // 1: WorldtaskMineResp (*WorldtaskMineResp)(nil), // 1: WorldtaskMineResp
@ -644,18 +754,20 @@ var file_worldtask_worldtask_msg_proto_goTypes = []interface{}{
(*WorldtaskBattleFinishReq)(nil), // 7: WorldtaskBattleFinishReq (*WorldtaskBattleFinishReq)(nil), // 7: WorldtaskBattleFinishReq
(*WorldtaskBattleFinishResp)(nil), // 8: WorldtaskBattleFinishResp (*WorldtaskBattleFinishResp)(nil), // 8: WorldtaskBattleFinishResp
(*WorldtaskFinishIdsPush)(nil), // 9: WorldtaskFinishIdsPush (*WorldtaskFinishIdsPush)(nil), // 9: WorldtaskFinishIdsPush
(*DBWorldtask)(nil), // 10: DBWorldtask (*WorldtaskPreReq)(nil), // 10: WorldtaskPreReq
(*BattleFormation)(nil), // 11: BattleFormation (*WorldtaskPreResp)(nil), // 11: WorldtaskPreResp
(*BattleInfo)(nil), // 12: BattleInfo (*DBWorldtask)(nil), // 12: DBWorldtask
(*BattleReport)(nil), // 13: BattleReport (*BattleFormation)(nil), // 13: BattleFormation
(*Worldtask)(nil), // 14: Worldtask (*BattleInfo)(nil), // 14: BattleInfo
(*BattleReport)(nil), // 15: BattleReport
(*Worldtask)(nil), // 16: Worldtask
} }
var file_worldtask_worldtask_msg_proto_depIdxs = []int32{ var file_worldtask_worldtask_msg_proto_depIdxs = []int32{
10, // 0: WorldtaskMineResp.task:type_name -> DBWorldtask 12, // 0: WorldtaskMineResp.task:type_name -> DBWorldtask
11, // 1: WorldtaskBattleStartReq.battle:type_name -> BattleFormation 13, // 1: WorldtaskBattleStartReq.battle:type_name -> BattleFormation
12, // 2: WorldtaskBattleStartResp.info:type_name -> BattleInfo 14, // 2: WorldtaskBattleStartResp.info:type_name -> BattleInfo
13, // 3: WorldtaskBattleFinishReq.report:type_name -> BattleReport 15, // 3: WorldtaskBattleFinishReq.report:type_name -> BattleReport
14, // 4: WorldtaskFinishIdsPush.taskList:type_name -> Worldtask 16, // 4: WorldtaskFinishIdsPush.taskList:type_name -> Worldtask
5, // [5:5] is the sub-list for method output_type 5, // [5:5] is the sub-list for method output_type
5, // [5:5] is the sub-list for method input_type 5, // [5:5] is the sub-list for method input_type
5, // [5:5] is the sub-list for extension type_name 5, // [5:5] is the sub-list for extension type_name
@ -791,6 +903,30 @@ func file_worldtask_worldtask_msg_proto_init() {
return nil return nil
} }
} }
file_worldtask_worldtask_msg_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WorldtaskPreReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_worldtask_worldtask_msg_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WorldtaskPreResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
} }
type x struct{} type x struct{}
out := protoimpl.TypeBuilder{ out := protoimpl.TypeBuilder{
@ -798,7 +934,7 @@ func file_worldtask_worldtask_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_worldtask_worldtask_msg_proto_rawDesc, RawDescriptor: file_worldtask_worldtask_msg_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 10, NumMessages: 12,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },