This commit is contained in:
meixiongfeng 2023-08-30 19:41:15 +08:00
commit 096299c16e
34 changed files with 2045 additions and 1638 deletions

View File

@ -1,7 +1,6 @@
[ [
{ {
"key": 1, "key": 1,
"id_tag": 2,
"active": 40, "active": 40,
"reword": [ "reword": [
{ {
@ -15,7 +14,6 @@
}, },
{ {
"key": 2, "key": 2,
"id_tag": 2,
"active": 80, "active": 80,
"reword": [ "reword": [
{ {
@ -34,7 +32,6 @@
}, },
{ {
"key": 3, "key": 3,
"id_tag": 2,
"active": 120, "active": 120,
"reword": [ "reword": [
{ {
@ -53,7 +50,6 @@
}, },
{ {
"key": 4, "key": 4,
"id_tag": 2,
"active": 160, "active": 160,
"reword": [ "reword": [
{ {

File diff suppressed because it is too large Load Diff

View File

@ -4954,7 +4954,7 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_115004211_1", "key": "skill_skill_atk_Desc_115004211_1",
"text": "攻击敌方全体伤害为自身攻击力350%85%概率为目标附加1回合[color=#e5621b]眩晕[/color]。" "text": "攻击敌方全体伤害为自身攻击力350%75%概率为目标附加1回合[color=#e5621b]眩晕[/color]。"
}, },
"buffid": [ "buffid": [
390001105 390001105
@ -7445,7 +7445,9 @@
"key": "skill_skill_atk_Desc_151004111_1", "key": "skill_skill_atk_Desc_151004111_1",
"text": "攻击一个目标造成2次攻击力125%的伤害20%概率添加1回合[color=#e5621b]防御下降[/color]。" "text": "攻击一个目标造成2次攻击力125%的伤害20%概率添加1回合[color=#e5621b]防御下降[/color]。"
}, },
"buffid": [], "buffid": [
390001007
],
"map": "" "map": ""
}, },
{ {
@ -7475,7 +7477,9 @@
"key": "skill_skill_atk_Desc_151004211_1", "key": "skill_skill_atk_Desc_151004211_1",
"text": "攻击一个目标造成攻击力400%的伤害添加2回合[color=#e5621b]攻击下降[/color] 。" "text": "攻击一个目标造成攻击力400%的伤害添加2回合[color=#e5621b]攻击下降[/color] 。"
}, },
"buffid": [], "buffid": [
390001006
],
"map": "" "map": ""
}, },
{ {
@ -7533,11 +7537,9 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_151005211_1", "key": "skill_skill_atk_Desc_151005211_1",
"text": "对敌方全体造成2次攻击力200%的伤害并降低目标10%行动值" "text": "对敌方全体造成合计攻击力400%的伤害并降低目标10%行动值"
}, },
"buffid": [ "buffid": [],
390001006
],
"map": "" "map": ""
}, },
{ {
@ -18399,7 +18401,9 @@
"key": "skill_skill_atk_Desc_113005311_2", "key": "skill_skill_atk_Desc_113005311_2",
"text": "技能冷却减少1回合。" "text": "技能冷却减少1回合。"
}, },
"buffid": [], "buffid": [
390001001
],
"map": "" "map": ""
}, },
{ {
@ -18430,7 +18434,9 @@
"key": "skill_skill_atk_Desc_113005311_3", "key": "skill_skill_atk_Desc_113005311_3",
"text": "技能冷却减少1回合。" "text": "技能冷却减少1回合。"
}, },
"buffid": [], "buffid": [
390001001
],
"map": "" "map": ""
}, },
{ {
@ -18489,7 +18495,7 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_124009111_1", "key": "skill_skill_atk_Desc_124009111_1",
"text": "云朵先生对敌方1个目标造成自身攻击力300%的伤害,若此次伤害触发了暴击,则使自身[color=#37d8a9]暴击提升[/color]效果延长1回合。" "text": "云朵先生对敌方1个目标造成自身攻击力300%的伤害,若此次伤害触发了暴击,则使自身[color=#37d8a9]暴击提升[/color]效果延长1回合。"
}, },
"buffid": [ "buffid": [
390001004 390001004
@ -18646,7 +18652,7 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_124009211_1", "key": "skill_skill_atk_Desc_124009211_1",
"text": "云朵先生对敌方1个目标造成3次自身攻击力135%的伤害并有50%的概率降低目标15%的行动值。触发暴击时为目标额外附加2回合【速度下降】效果。" "text": "云朵先生对敌方1个目标造成3次自身攻击力135%的伤害并有50%的概率降低目标15%的行动值。触发暴击时为目标额外附加2回合[color=#e5621b]速度下降[/color]效果。"
}, },
"buffid": [ "buffid": [
390001008 390001008
@ -18804,7 +18810,7 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_124009311_1", "key": "skill_skill_atk_Desc_124009311_1",
"text": "云朵先生为自身附加2回合[color=#37d8a9]暴击提升[/color]效果之后对敌方目标造成3次自身攻击力150%的伤害若此次伤害触发了暴击则有40%的概率[color=#e5621b]冰冻[/color]目标持续1回合。" "text": "云朵先生为自身附加2回合[color=#37d8a9]暴击提升[/color]效果之后对敌方目标造成3次自身攻击力150%的伤害若此次伤害触发了暴击则有40%的概率[color=#e5621b]冰冻[/color]目标持续1回合。"
}, },
"buffid": [ "buffid": [
390001004, 390001004,
@ -19487,7 +19493,7 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_151006211_1", "key": "skill_skill_atk_Desc_151006211_1",
"text": "对敌方发起1次攻击造成攻击力300%的伤害。" "text": "对敌方发起3次攻击造成攻击力300%的伤害。"
}, },
"buffid": [], "buffid": [],
"map": "" "map": ""
@ -20323,9 +20329,11 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_155001111_1", "key": "skill_skill_atk_Desc_155001111_1",
"text": "对敌方发起一次攻击并造成1次伤害。" "text": "对敌方发起一次攻击并造成1次伤害有80%概率附加3回合[color=#e5621b]流血[/color]状态。"
}, },
"buffid": [], "buffid": [
390001404
],
"map": "" "map": ""
}, },
{ {
@ -20354,7 +20362,7 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_155001211_1", "key": "skill_skill_atk_Desc_155001211_1",
"text": "(被动)自身生命值越低,造成的伤害越高。" "text": "(被动)若敌人死亡则立即获得回合。"
}, },
"buffid": [], "buffid": [],
"map": "" "map": ""
@ -20384,9 +20392,11 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_155001311_1", "key": "skill_skill_atk_Desc_155001311_1",
"text": "对敌方目标造成1次伤害。" "text": "对敌方目标造成1次伤害并附带1回合[color=#e5621b]眩晕[/color]。"
}, },
"buffid": [], "buffid": [
390001401
],
"map": "" "map": ""
}, },
{ {
@ -20414,7 +20424,7 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_155002111_1", "key": "skill_skill_atk_Desc_155002111_1",
"text": "对敌方全体目标发起一次攻击。" "text": "对敌方全体目标发起一次攻击并附加2回合[color=#e5621b]攻击下降[/color]。"
}, },
"buffid": [], "buffid": [],
"map": "" "map": ""
@ -20440,7 +20450,6 @@
"Id": [ "Id": [
255002211, 255002211,
255002212, 255002212,
255002213,
255002218 255002218
] ]
}, },
@ -20477,7 +20486,7 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_155002311_1", "key": "skill_skill_atk_Desc_155002311_1",
"text": "对敌方造成1次伤害。" "text": "对敌方造成1次伤害有一定概率附加1回合[color=#e5621b]眩晕[/color]。"
}, },
"buffid": [], "buffid": [],
"map": "" "map": ""
@ -20832,7 +20841,7 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_153003111_1", "key": "skill_skill_atk_Desc_153003111_1",
"text": "对敌方1个目标发起两段攻击力10%的伤害并有20%概率为自身附加2回合[color=#37d8a9]免疫[/color] 状态。" "text": "对敌方1个目标发起两段攻击力150%的伤害并有20%概率为自身附加2回合[color=#37d8a9]免疫[/color] 状态。"
}, },
"buffid": [ "buffid": [
390001111 390001111
@ -21305,7 +21314,7 @@
{ {
"id": 114002111, "id": 114002111,
"level": 1, "level": 1,
"MaxLV": 1, "MaxLV": 5,
"UnavailablePlayTypes": [], "UnavailablePlayTypes": [],
"Name": { "Name": {
"key": "skill_skill_atk_Name_114002111", "key": "skill_skill_atk_Name_114002111",
@ -21327,7 +21336,7 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_114002111_1", "key": "skill_skill_atk_Desc_114002111_1",
"text": "大龙对敌方1个目标造成攻击力100%的伤害追加自身最大生命值4.5%的伤害并有50%概率附加1回合[color=#e5621b]挑衅[/color] 状态。" "text": "大龙对敌方1个目标造成攻击力30%的伤害追加自身最大生命值6%的伤害并有50%概率附加1回合[color=#e5621b]挑衅[/color] 状态。"
}, },
"buffid": [ "buffid": [
390001110 390001110
@ -21392,7 +21401,129 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_114002311_1", "key": "skill_skill_atk_Desc_114002311_1",
"text": "攻击敌方伤害为自身攻击力100%和自身已损失生命值15%70%概率为目标附加2回合[color=#e5621b]攻击下降[/color]。" "text": "攻击敌方伤害为自身攻击力400%和自身已损失生命值15%70%概率为目标附加2回合[color=#e5621b]攻击下降[/color]。"
},
"buffid": [
390001426
],
"map": ""
},
{
"id": 114002311,
"level": 2,
"MaxLV": 5,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_114002311",
"text": "弱肉强食"
},
"ico": "jn_14002_3",
"CorrectPos": 0,
"IsMelee": 1,
"act": "Skill_3",
"Type": 1,
"CD": 4,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
214002321
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_114002311_2",
"text": "伤害提升480%。"
},
"buffid": [],
"map": ""
},
{
"id": 114002311,
"level": 3,
"MaxLV": 5,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_114002311",
"text": "弱肉强食"
},
"ico": "jn_14002_3",
"CorrectPos": 0,
"IsMelee": 1,
"act": "Skill_3",
"Type": 1,
"CD": 4,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
214002331
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_114002311_3",
"text": "伤害提升560%。"
},
"buffid": [],
"map": ""
},
{
"id": 114002311,
"level": 4,
"MaxLV": 5,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_114002311",
"text": "弱肉强食"
},
"ico": "jn_14002_3",
"CorrectPos": 0,
"IsMelee": 1,
"act": "Skill_3",
"Type": 1,
"CD": 4,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
214002341
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_114002311_4",
"text": "伤害提升640%。"
},
"buffid": [],
"map": ""
},
{
"id": 114002311,
"level": 5,
"MaxLV": 5,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_114002311",
"text": "弱肉强食"
},
"ico": "jn_14002_3",
"CorrectPos": 0,
"IsMelee": 1,
"act": "Skill_3",
"Type": 1,
"CD": 4,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
214002351
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_114002311_5",
"text": "伤害提升720%。"
}, },
"buffid": [ "buffid": [
390001426 390001426
@ -22783,10 +22914,12 @@
251010112 251010112
] ]
}, },
"passSkill": [], "passSkill": [
251010112
],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_151010111_1", "key": "skill_skill_atk_Desc_151010111_1",
"text": "对敌方一个目标造成100%攻击力的伤害,触发暴击时位自身回复30%基于伤害的生命值。" "text": "对敌方一个目标造成300%攻击力的伤害,触发暴击时为自身回复30%基于伤害的生命值。"
}, },
"buffid": [], "buffid": [],
"map": "" "map": ""
@ -22813,7 +22946,9 @@
251010211 251010211
] ]
}, },
"passSkill": [], "passSkill": [
251010212
],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_151010211_1", "key": "skill_skill_atk_Desc_151010211_1",
"text": "对敌方一个目标发起4段攻击每段可造成攻击力100%的伤害每段触发暴击时增加自身15%行动值。" "text": "对敌方一个目标发起4段攻击每段可造成攻击力100%的伤害每段触发暴击时增加自身15%行动值。"
@ -25191,7 +25326,7 @@
"passSkill": [], "passSkill": [],
"Desc": { "Desc": {
"key": "skill_skill_atk_Desc_153002111_1", "key": "skill_skill_atk_Desc_153002111_1",
"text": "对敌方一个目标发起两段攻击120%的伤害,每段为自身回复5%最大生命值。" "text": "对敌方一个目标发起两段攻击120%的伤害,回复造成伤害5%最大生命值。"
}, },
"buffid": [], "buffid": [],
"map": "" "map": ""
@ -43757,5 +43892,464 @@
}, },
"buffid": [], "buffid": [],
"map": "" "map": ""
},
{
"id": 175001111,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175001111",
"text": ""
},
"ico": "jn_33003_1",
"CorrectPos": 0,
"IsMelee": 0,
"act": "Skill_1",
"Type": 1,
"CD": 0,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
275001111
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175001111_1",
"text": "攻击1名敌人附加2回合速度下降并有30%概率附加1回合【眩晕】。"
},
"buffid": [],
"map": ""
},
{
"id": 175001211,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175001211",
"text": ""
},
"ico": "jn_33003_2",
"CorrectPos": 0,
"IsMelee": 0,
"act": "Skill_2",
"Type": 1,
"CD": 4,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
275001211
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175001211_1",
"text": "攻击全体敌人两次各以50%概率附加2回合【命中下降】和【攻击下降】。"
},
"buffid": [],
"map": ""
},
{
"id": 175001311,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175001311",
"text": ""
},
"ico": "jn_33003_3",
"CorrectPos": 0,
"IsMelee": 0,
"act": "Skill_3",
"Type": 2,
"CD": 0,
"Where": [],
"Target": 0,
"ChildSkill": {
"Id": [
275001311
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175001311_1",
"text": "被动从弱势属性英雄受到的伤害增加50%给优势属性的英雄造成的伤害增加50%。"
},
"buffid": [],
"map": ""
},
{
"id": 175002111,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175002111",
"text": ""
},
"ico": "jn_51005_1",
"CorrectPos": 0,
"IsMelee": 1,
"act": "Skill_1",
"Type": 1,
"CD": 0,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
275002111
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175002111_1",
"text": "攻击1名敌人附加2回合速度下降并有30%概率附加1回合【忘却】。"
},
"buffid": [],
"map": ""
},
{
"id": 175002211,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175002211",
"text": ""
},
"ico": "jn_51005_2",
"CorrectPos": 0,
"IsMelee": 1,
"act": "Skill_2",
"Type": 1,
"CD": 4,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
275002211
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175002211_1",
"text": "攻击全体敌人两次各以50%概率附加2回合【中毒】和【流血】。"
},
"buffid": [],
"map": ""
},
{
"id": 175002311,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175002311",
"text": ""
},
"ico": "jn_51004_3",
"CorrectPos": 0,
"IsMelee": 0,
"act": "Skill_3",
"Type": 2,
"CD": 0,
"Where": [],
"Target": 0,
"ChildSkill": {
"Id": [
275002311,
275002312
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175002311_1",
"text": "被动自身免疫持续伤害敌方受到持续伤害效果增加30%。"
},
"buffid": [],
"map": ""
},
{
"id": 175003111,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175003111",
"text": ""
},
"ico": "jn_23004_1",
"CorrectPos": 0,
"IsMelee": 0,
"act": "Skill_2",
"Type": 1,
"CD": 0,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
275003111
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175003111_1",
"text": "随机攻击3个敌方无视目标20%的防御。"
},
"buffid": [],
"map": ""
},
{
"id": 175003211,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175003211",
"text": ""
},
"ico": "jn_23004_2",
"CorrectPos": 0,
"IsMelee": 0,
"act": "Skill_1",
"Type": 2,
"CD": 0,
"Where": [],
"Target": 0,
"ChildSkill": {
"Id": [
275003211
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175003211_1",
"text": "被动受到攻击后为自身附加2回合【攻击提升】、【防御提升】、【护盾】"
},
"buffid": [],
"map": ""
},
{
"id": 175003311,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175003311",
"text": ""
},
"ico": "jn_23004_3",
"CorrectPos": 0,
"IsMelee": 0,
"act": "Skill_3",
"Type": 1,
"CD": 4,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
275003311
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175003311_1",
"text": "对敌方全体造成伤害,自身身上增益越多,伤害越高。"
},
"buffid": [],
"map": ""
},
{
"id": 175004111,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175004111",
"text": ""
},
"ico": "jn_53001_1",
"CorrectPos": 0,
"IsMelee": 0,
"act": "Skill_1",
"Type": 1,
"CD": 0,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
275004111
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175004111_1",
"text": "随机攻击3个敌方有概率为目标附加2回合【失手率提升】。"
},
"buffid": [],
"map": ""
},
{
"id": 175004211,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175004211",
"text": ""
},
"ico": "jn_53001_2",
"CorrectPos": 0,
"IsMelee": 1,
"act": "Skill_2",
"Type": 1,
"CD": 3,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
275003211
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175004211_1",
"text": "攻击1个敌方向目标转嫁自身1个减益。"
},
"buffid": [],
"map": ""
},
{
"id": 175004311,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175004311",
"text": ""
},
"ico": "jn_53001_3",
"CorrectPos": 0,
"IsMelee": 1,
"act": "Skill_3",
"Type": 1,
"CD": 4,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
275004311,
275004312
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175004311_1",
"text": "对敌方全体造成伤害,并净化自身所有减益效果,敌方身上减益越多,伤害越高。"
},
"buffid": [],
"map": ""
},
{
"id": 175005111,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175005111",
"text": ""
},
"ico": "jn_14001_1",
"CorrectPos": 0,
"IsMelee": 1,
"act": "Skill_1",
"Type": 1,
"CD": 0,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
275005111
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175005111_1",
"text": "对敌方单体目标造成2次伤害每次向目标转嫁自身1个减益并击退目标行动值。"
},
"buffid": [],
"map": ""
},
{
"id": 175005211,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175005211",
"text": ""
},
"ico": "jn_14001_2",
"CorrectPos": 0,
"IsMelee": 1,
"act": "Skill_3",
"Type": 1,
"CD": 4,
"Where": [],
"Target": 2,
"ChildSkill": {
"Id": [
275005211,
275005212
]
},
"passSkill": [],
"Desc": {
"key": "skill_skill_atk_Desc_175005211_1",
"text": "对敌方全体目标造成2次伤害每次有概率为目标附加2回合【流血】。每次攻击每层【维京直觉】造成一定额外伤害。"
},
"buffid": [],
"map": ""
},
{
"id": 175005311,
"level": 1,
"MaxLV": 1,
"UnavailablePlayTypes": [],
"Name": {
"key": "skill_skill_atk_Name_175005311",
"text": ""
},
"ico": "jn_14001_3",
"CorrectPos": 0,
"IsMelee": 0,
"act": "Skill_2",
"Type": 2,
"CD": 0,
"Where": [],
"Target": 0,
"ChildSkill": {
"Id": [
275005311,
275005312,
275005313
]
},
"passSkill": [
275005311,
275005312,
275005313
],
"Desc": {
"key": "skill_skill_atk_Desc_175005311_1",
"text": "被动战斗开始时自身获得1层【维京直觉】为当前防御最高的敌方附加【标记】为敌方全体目标附加【维京之吼】。自身受到来自无【标记】目标的伤害大幅降低。每回合结束时获得2层【维京直觉】。"
},
"buffid": [],
"map": ""
} }
] ]

View File

@ -2252,7 +2252,7 @@
"When": 10, "When": 10,
"FromCheck": "Target=3", "FromCheck": "Target=3",
"TargetCheck": "3", "TargetCheck": "3",
"MainSkillCheck": "", "MainSkillCheck": "MainSkillID=151010111",
"AfterSkillCheck": "", "AfterSkillCheck": "",
"BuffCheck": "", "BuffCheck": "",
"AddCon": [], "AddCon": [],
@ -2271,7 +2271,7 @@
"When": 10, "When": 10,
"FromCheck": "Target=3", "FromCheck": "Target=3",
"TargetCheck": "3", "TargetCheck": "3",
"MainSkillCheck": "", "MainSkillCheck": "MainSkillID=151010211",
"AfterSkillCheck": "", "AfterSkillCheck": "",
"BuffCheck": "", "BuffCheck": "",
"AddCon": [], "AddCon": [],
@ -2424,8 +2424,8 @@
"Id": 444001113, "Id": 444001113,
"When": 10, "When": 10,
"FromCheck": "Target=3", "FromCheck": "Target=3",
"TargetCheck": "3", "TargetCheck": "Target=2",
"MainSkillCheck": "", "MainSkillCheck": "MainSkillID=144001111",
"AfterSkillCheck": "", "AfterSkillCheck": "",
"BuffCheck": "", "BuffCheck": "",
"AddCon": [], "AddCon": [],
@ -2443,8 +2443,8 @@
"Id": 444001213, "Id": 444001213,
"When": 10, "When": 10,
"FromCheck": "Target=3", "FromCheck": "Target=3",
"TargetCheck": "3", "TargetCheck": "Target=2",
"MainSkillCheck": "", "MainSkillCheck": "MainSkillID=144001211",
"AfterSkillCheck": "", "AfterSkillCheck": "",
"BuffCheck": "", "BuffCheck": "",
"AddCon": [], "AddCon": [],
@ -2900,13 +2900,11 @@
"Id": 455002213, "Id": 455002213,
"When": 16, "When": 16,
"FromCheck": "", "FromCheck": "",
"TargetCheck": "Target=3", "TargetCheck": "Target=3,Hpproless=300",
"MainSkillCheck": "", "MainSkillCheck": "",
"AfterSkillCheck": "", "AfterSkillCheck": "",
"BuffCheck": "", "BuffCheck": "",
"AddCon": [ "AddCon": [],
"Hpproless=300"
],
"PasPr": 1000, "PasPr": 1000,
"PasCorrection": 0, "PasCorrection": 0,
"Type": "CallSkillPas", "Type": "CallSkillPas",
@ -7610,5 +7608,45 @@
"Callback": [ "Callback": [
234007216 234007216
] ]
},
{
"Id": 475003311,
"When": 16,
"FromCheck": "Target=2",
"TargetCheck": "Target=3",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "",
"AddCon": [],
"PasPr": 1000,
"PasCorrection": 0,
"Type": "CallSkillPas",
"MaxEmitTimesInRoundByRole": 0,
"MaxEmitTimes": 0,
"MaxEmitTimesInRound": 1,
"Callback": [
275003212,
275003213,
275003214
]
},
{
"Id": 475005211,
"When": 16,
"FromCheck": "Target=3,HasBuff=390001211",
"TargetCheck": "",
"MainSkillCheck": "",
"AfterSkillCheck": "",
"BuffCheck": "",
"AddCon": [],
"PasPr": 1000,
"PasCorrection": 0,
"Type": "CallSkillPas",
"MaxEmitTimesInRoundByRole": 0,
"MaxEmitTimes": 0,
"MaxEmitTimesInRound": 1,
"Callback": [
275005213
]
} }
] ]

View File

@ -1,7 +1,6 @@
[ [
{ {
"key": 1, "key": 1,
"id_tag": 2,
"active": 40, "active": 40,
"reword": [ "reword": [
{ {
@ -15,7 +14,6 @@
}, },
{ {
"key": 2, "key": 2,
"id_tag": 2,
"active": 80, "active": 80,
"reword": [ "reword": [
{ {
@ -34,7 +32,6 @@
}, },
{ {
"key": 3, "key": 3,
"id_tag": 2,
"active": 120, "active": 120,
"reword": [ "reword": [
{ {
@ -53,7 +50,6 @@
}, },
{ {
"key": 4, "key": 4,
"id_tag": 2,
"active": 160, "active": 160,
"reword": [ "reword": [
{ {

View File

@ -2,15 +2,16 @@
{ {
"key": 20001, "key": 20001,
"id_list": 1, "id_list": 1,
"id_tag": 2,
"open": "", "open": "",
"opentask": "arena",
"id_before": 0,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_1", "key": "task_task_round_task_display_1",
"text": "本周竞技场挑战10次" "text": "本周竞技场挑战10次"
}, },
"type_id": 13000001, "type_id": 13000001,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 156, "jump_interface": 156,
"icon": "wp_icon_0001", "icon": "wp_icon_0001",
"reword": [ "reword": [
@ -29,15 +30,16 @@
{ {
"key": 20002, "key": 20002,
"id_list": 2, "id_list": 2,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 20001,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_2", "key": "task_task_round_task_display_2",
"text": "本周竞技场挑战30次" "text": "本周竞技场挑战30次"
}, },
"type_id": 13000002, "type_id": 13000002,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 156, "jump_interface": 156,
"icon": "wp_icon_0001", "icon": "wp_icon_0001",
"reword": [ "reword": [
@ -56,15 +58,16 @@
{ {
"key": 20003, "key": 20003,
"id_list": 3, "id_list": 3,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 20002,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_3", "key": "task_task_round_task_display_3",
"text": "本周竞技场挑战50次" "text": "本周竞技场挑战50次"
}, },
"type_id": 13000003, "type_id": 13000003,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 156, "jump_interface": 156,
"icon": "wp_icon_0001", "icon": "wp_icon_0001",
"reword": [ "reword": [
@ -83,15 +86,16 @@
{ {
"key": 20004, "key": 20004,
"id_list": 4, "id_list": 4,
"id_tag": 2,
"open": "", "open": "",
"opentask": "arena",
"id_before": 0,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_4", "key": "task_task_round_task_display_4",
"text": "本周竞技场胜利10次" "text": "本周竞技场胜利10次"
}, },
"type_id": 13000004, "type_id": 13000004,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 156, "jump_interface": 156,
"icon": "wp_icon_0001", "icon": "wp_icon_0001",
"reword": [ "reword": [
@ -110,15 +114,16 @@
{ {
"key": 20005, "key": 20005,
"id_list": 5, "id_list": 5,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 20004,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_5", "key": "task_task_round_task_display_5",
"text": "本周竞技场胜利20次" "text": "本周竞技场胜利20次"
}, },
"type_id": 13000005, "type_id": 13000005,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 156, "jump_interface": 156,
"icon": "wp_icon_0001", "icon": "wp_icon_0001",
"reword": [ "reword": [
@ -137,15 +142,16 @@
{ {
"key": 20006, "key": 20006,
"id_list": 6, "id_list": 6,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 20005,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_6", "key": "task_task_round_task_display_6",
"text": "本周竞技场胜利30次" "text": "本周竞技场胜利30次"
}, },
"type_id": 13000006, "type_id": 13000006,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 156, "jump_interface": 156,
"icon": "wp_icon_0001", "icon": "wp_icon_0001",
"reword": [ "reword": [
@ -164,15 +170,16 @@
{ {
"key": 20007, "key": 20007,
"id_list": 7, "id_list": 7,
"id_tag": 2,
"open": "", "open": "",
"opentask": "vikingexpedition_experience",
"id_before": 0,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_7", "key": "task_task_round_task_display_7",
"text": "本周累计梦境回廊消耗300体力" "text": "本周累计梦境回廊消耗300体力"
}, },
"type_id": 13000007, "type_id": 13000007,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 11012, "jump_interface": 11012,
"icon": "wp_icon_0001", "icon": "wp_icon_0001",
"reword": [ "reword": [
@ -191,15 +198,16 @@
{ {
"key": 20008, "key": 20008,
"id_list": 8, "id_list": 8,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 20007,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_8", "key": "task_task_round_task_display_8",
"text": "本周累计梦境回廊消耗600体力" "text": "本周累计梦境回廊消耗600体力"
}, },
"type_id": 13000008, "type_id": 13000008,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 11012, "jump_interface": 11012,
"icon": "wp_icon_0001", "icon": "wp_icon_0001",
"reword": [ "reword": [
@ -218,15 +226,16 @@
{ {
"key": 20009, "key": 20009,
"id_list": 9, "id_list": 9,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 20008,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_9", "key": "task_task_round_task_display_9",
"text": "本周累计梦境回廊消耗1000体力" "text": "本周累计梦境回廊消耗1000体力"
}, },
"type_id": 13000009, "type_id": 13000009,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 11012, "jump_interface": 11012,
"icon": "wp_icon_0002", "icon": "wp_icon_0002",
"reword": [ "reword": [
@ -245,15 +254,16 @@
{ {
"key": 20010, "key": 20010,
"id_list": 10, "id_list": 10,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 0,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_10", "key": "task_task_round_task_display_10",
"text": "本周累计消耗3000000点金币" "text": "本周累计消耗3000000点金币"
}, },
"type_id": 13000010, "type_id": 13000010,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 122, "jump_interface": 122,
"icon": "wp_icon_0003", "icon": "wp_icon_0003",
"reword": [ "reword": [
@ -272,15 +282,16 @@
{ {
"key": 20011, "key": 20011,
"id_list": 11, "id_list": 11,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 20010,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_11", "key": "task_task_round_task_display_11",
"text": "本周累计消耗6000000点金币" "text": "本周累计消耗6000000点金币"
}, },
"type_id": 13000011, "type_id": 13000011,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 122, "jump_interface": 122,
"icon": "wp_icon_0004", "icon": "wp_icon_0004",
"reword": [ "reword": [
@ -299,15 +310,16 @@
{ {
"key": 20012, "key": 20012,
"id_list": 12, "id_list": 12,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 20011,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_12", "key": "task_task_round_task_display_12",
"text": "本周累计消耗10000000点金币" "text": "本周累计消耗10000000点金币"
}, },
"type_id": 13000012, "type_id": 13000012,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 122, "jump_interface": 122,
"icon": "wp_icon_0005", "icon": "wp_icon_0005",
"reword": [ "reword": [
@ -326,15 +338,16 @@
{ {
"key": 20013, "key": 20013,
"id_list": 13, "id_list": 13,
"id_tag": 2,
"open": "", "open": "",
"opentask": "vikingexpedition",
"id_before": 0,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_13", "key": "task_task_round_task_display_13",
"text": "本周累计维京远征消耗300体力" "text": "本周累计维京远征消耗300体力"
}, },
"type_id": 13000013, "type_id": 13000013,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 11012, "jump_interface": 11012,
"icon": "wp_icon_0006", "icon": "wp_icon_0006",
"reword": [ "reword": [
@ -353,15 +366,16 @@
{ {
"key": 20014, "key": 20014,
"id_list": 14, "id_list": 14,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 20013,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_14", "key": "task_task_round_task_display_14",
"text": "本周累计维京远征消耗600体力" "text": "本周累计维京远征消耗600体力"
}, },
"type_id": 13000014, "type_id": 13000014,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 11012, "jump_interface": 11012,
"icon": "wp_icon_0007", "icon": "wp_icon_0007",
"reword": [ "reword": [
@ -380,15 +394,16 @@
{ {
"key": 20015, "key": 20015,
"id_list": 15, "id_list": 15,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 20014,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_15", "key": "task_task_round_task_display_15",
"text": "本周累计维京远征消耗1000体力" "text": "本周累计维京远征消耗1000体力"
}, },
"type_id": 13000015, "type_id": 13000015,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 11012, "jump_interface": 11012,
"icon": "wp_icon_0008", "icon": "wp_icon_0008",
"reword": [ "reword": [
@ -407,15 +422,16 @@
{ {
"key": 20016, "key": 20016,
"id_list": 16, "id_list": 16,
"id_tag": 2,
"open": "", "open": "",
"opentask": "hunting",
"id_before": 0,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_16", "key": "task_task_round_task_display_16",
"text": "本周累计猎魂挑战消耗300体力" "text": "本周累计猎魂挑战消耗300体力"
}, },
"type_id": 13000016, "type_id": 13000016,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 168, "jump_interface": 168,
"icon": "wp_icon_0009", "icon": "wp_icon_0009",
"reword": [ "reword": [
@ -434,15 +450,16 @@
{ {
"key": 20017, "key": 20017,
"id_list": 17, "id_list": 17,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 20016,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_17", "key": "task_task_round_task_display_17",
"text": "本周累计猎魂挑战消耗600体力" "text": "本周累计猎魂挑战消耗600体力"
}, },
"type_id": 13000017, "type_id": 13000017,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 168, "jump_interface": 168,
"icon": "wp_icon_0010", "icon": "wp_icon_0010",
"reword": [ "reword": [
@ -461,15 +478,16 @@
{ {
"key": 20018, "key": 20018,
"id_list": 18, "id_list": 18,
"id_tag": 2,
"open": "", "open": "",
"opentask": "",
"id_before": 20017,
"Id_after": 0,
"task_display": { "task_display": {
"key": "task_task_round_task_display_18", "key": "task_task_round_task_display_18",
"text": "本周累计猎魂挑战消耗1000体力" "text": "本周累计猎魂挑战消耗1000体力"
}, },
"type_id": 13000018, "type_id": 13000018,
"active": 10, "active": 10,
"id_after": 0,
"jump_interface": 168, "jump_interface": 168,
"icon": "wp_icon_0011", "icon": "wp_icon_0011",
"reword": [ "reword": [

View File

@ -5049,15 +5049,15 @@
"icon": "25001", "icon": "25001",
"task_name": { "task_name": {
"key": "worldtask_world_task_task_name_122", "key": "worldtask_world_task_task_name_122",
"text": "商队任务1-任意1装备+3" "text": "兄弟,带一程"
}, },
"task_details": { "task_details": {
"key": "worldtask_world_task_task_details_122", "key": "worldtask_world_task_task_details_122",
"text": "商队任务1-任意1装备+3" "text": "途中偶遇的守护者,期望我们带他前往某个城市。"
}, },
"npctxt": { "npctxt": {
"key": "worldtask_world_task_npctxt_122", "key": "worldtask_world_task_npctxt_122",
"text": "商队任务1-任意1装备+3" "text": "兄弟,带一程"
}, },
"get_item": [], "get_item": [],
"trigger": 0, "trigger": 0,
@ -5068,7 +5068,7 @@
"deliver_npc": 50018, "deliver_npc": 50018,
"taskend_removeitem": [], "taskend_removeitem": [],
"auto_accept": 0, "auto_accept": 0,
"tasktips": 1, "tasktips": 0,
"lock_add": 1, "lock_add": 1,
"reword": [ "reword": [
{ {
@ -5094,15 +5094,15 @@
"icon": "25001", "icon": "25001",
"task_name": { "task_name": {
"key": "worldtask_world_task_task_name_123", "key": "worldtask_world_task_task_name_123",
"text": "商队任务1-任意2装备+3" "text": "特产不嫌多"
}, },
"task_details": { "task_details": {
"key": "worldtask_world_task_task_details_123", "key": "worldtask_world_task_task_details_123",
"text": "商队任务1-任意2装备+3" "text": "一名守护者希望我们帮他购买一些特产,并承诺会用其他东西作为报酬。"
}, },
"npctxt": { "npctxt": {
"key": "worldtask_world_task_npctxt_123", "key": "worldtask_world_task_npctxt_123",
"text": "商队任务1-任意2装备+3" "text": "特产不嫌多"
}, },
"get_item": [], "get_item": [],
"trigger": 0, "trigger": 0,
@ -5113,7 +5113,7 @@
"deliver_npc": 50028, "deliver_npc": 50028,
"taskend_removeitem": [], "taskend_removeitem": [],
"auto_accept": 0, "auto_accept": 0,
"tasktips": 1, "tasktips": 0,
"lock_add": 1, "lock_add": 1,
"reword": [ "reword": [
{ {
@ -5139,15 +5139,15 @@
"icon": "25001", "icon": "25001",
"task_name": { "task_name": {
"key": "worldtask_world_task_task_name_124", "key": "worldtask_world_task_task_name_124",
"text": "商队任务1-任意3装备+3" "text": "资助城市"
}, },
"task_details": { "task_details": {
"key": "worldtask_world_task_task_details_124", "key": "worldtask_world_task_task_details_124",
"text": "商队任务1-任意3装备+3" "text": "如今我们稍有资产,守护者希望我们能资助一些城市,当地人会给予一些报酬。"
}, },
"npctxt": { "npctxt": {
"key": "worldtask_world_task_npctxt_124", "key": "worldtask_world_task_npctxt_124",
"text": "商队任务1-任意3装备+3" "text": "资助城市"
}, },
"get_item": [], "get_item": [],
"trigger": 0, "trigger": 0,
@ -5158,7 +5158,7 @@
"deliver_npc": 50038, "deliver_npc": 50038,
"taskend_removeitem": [], "taskend_removeitem": [],
"auto_accept": 0, "auto_accept": 0,
"tasktips": 1, "tasktips": 0,
"lock_add": 1, "lock_add": 1,
"reword": [ "reword": [
{ {
@ -5184,15 +5184,15 @@
"icon": "25001", "icon": "25001",
"task_name": { "task_name": {
"key": "worldtask_world_task_task_name_125", "key": "worldtask_world_task_task_name_125",
"text": "商队任务2-维京远征2次" "text": "雪中送炭"
}, },
"task_details": { "task_details": {
"key": "worldtask_world_task_task_details_125", "key": "worldtask_world_task_task_details_125",
"text": "商队任务2-维京远征2次" "text": "一些城市急需某些道具度过难关,我们或许应当帮助他们运转一下。"
}, },
"npctxt": { "npctxt": {
"key": "worldtask_world_task_npctxt_125", "key": "worldtask_world_task_npctxt_125",
"text": "商队任务2-维京远征2次" "text": "雪中送炭"
}, },
"get_item": [], "get_item": [],
"trigger": 0, "trigger": 0,
@ -5203,7 +5203,7 @@
"deliver_npc": 50048, "deliver_npc": 50048,
"taskend_removeitem": [], "taskend_removeitem": [],
"auto_accept": 0, "auto_accept": 0,
"tasktips": 1, "tasktips": 0,
"lock_add": 1, "lock_add": 1,
"reword": [ "reword": [
{ {

View File

@ -547,6 +547,8 @@ type (
} }
//埋点中心 //埋点中心
IBuried interface { IBuried interface {
//完成任务埋点
CompleteCondition(uid string, condiId int32) (err error)
//埋点中心触发 //埋点中心触发
TriggerBuried(session IUserSession, burieds ...*pb.BuriedParam) TriggerBuried(session IUserSession, burieds ...*pb.BuriedParam)
//校验条件是否达成 返回未完成列表 //校验条件是否达成 返回未完成列表

View File

@ -86,6 +86,89 @@ func (this *Buried) Rpc_ModuleBuriedTrigger(ctx context.Context, req *pb.Rpc_Mod
return return
} }
//完成任务
func (this *Buried) CompleteCondition(uid string, condiId int32) (err error) {
var (
model *buriedModel
bdatas *pb.DBBuried
bitem *pb.DBBuriedConItem
conf *cfg.GameBuriedCondiData
ok bool
bdata *pb.DBBuriedItem
)
if model, err = this.modelBuried.getburiedModel(uid); err != nil {
return
}
if bdatas, err = model.getUserBurieds(uid); err != nil {
return
}
this.Debug("完成埋点!", log.Field{Key: "condiId", Value: condiId})
lock, _ := model.userlock(uid)
err = lock.Lock()
if err != nil {
this.Error("埋点分布式锁失效 err!", log.Field{Key: "uid", Value: uid}, log.Field{Key: "err", Value: err.Error()})
return
}
defer lock.Unlock()
if conf, err = this.configure.getburiedcondidata(condiId); err != nil {
return
}
if bdata, ok = bdatas.Items[conf.Type]; ok {
ok = false
for _, v1 := range bdata.Condi {
if v1.Conid == condiId {
ok = true
if v1.Finish != pb.BuriedItemFinishState_buried_finish {
if conf.Ctype == ctype_once { //完成后自动锁定
v1.State = pb.BuriedItemState_Freeze
} else if conf.Ctype == ctype_repeat {
v1.State = pb.BuriedItemState_Sleep
} else if conf.Ctype == ctype_daily {
v1.State = pb.BuriedItemState_Sleep
} else if conf.Ctype == ctype_weekly {
v1.State = pb.BuriedItemState_Sleep
}
v1.Value = conf.Value
v1.Finish = pb.BuriedItemFinishState_buried_finish
}
}
}
} else {
bdata = &pb.DBBuriedItem{
Btype: conf.Type,
Condi: make([]*pb.DBBuriedConItem, 0),
}
bdatas.Items[conf.Type] = bdata
}
if !ok { //未找到 初始化一个
bitem = &pb.DBBuriedConItem{
Conid: condiId,
State: pb.BuriedItemState_Activated,
Value: conf.Value,
Statistics: make([]string, 0),
Timestamp: time.Now().Unix(),
Finish: pb.BuriedItemFinishState_buried_finish,
}
if conf.Ctype == ctype_once { //完成后自动锁定
bitem.State = pb.BuriedItemState_Freeze
} else if conf.Ctype == ctype_repeat {
bitem.State = pb.BuriedItemState_Sleep
} else if conf.Ctype == ctype_daily {
bitem.State = pb.BuriedItemState_Sleep
} else if conf.Ctype == ctype_weekly {
bitem.State = pb.BuriedItemState_Sleep
}
bdata.Condi = append(bdata.Condi, bitem)
}
if err = model.updateUserBurieds(uid, bdatas); err != nil {
this.Error("更新用户埋点数据错误!", log.Field{Key: "err", Value: err.Error()})
return
}
return
}
// 激活数据采集点 // 激活数据采集点
func (this *Buried) ActiveCondition(uid string, condiIds ...int32) (errdata *pb.ErrorData) { func (this *Buried) ActiveCondition(uid string, condiIds ...int32) (errdata *pb.ErrorData) {
var ( var (

View File

@ -663,6 +663,30 @@ func (this *GM) CreateCmd(session comm.IUserSession, cmd string) (errdata *pb.Er
} }
module1.(comm.Imail).SendNewMail(mail, session.GetUserId()) module1.(comm.Imail).SendNewMail(mail, session.GetUserId())
this.Debug("使用bingo命令:uid = %s ",
log.Field{Key: "uid", Value: session.GetUserId()},
log.Field{Key: "0", Value: datas[0]},
)
} else if len(datas) == 2 && (datas[0] == "buried") {
var (
condiId int
err error
)
condiId, err = strconv.Atoi(datas[1])
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.ToString(),
}
return
}
module1, err := this.service.GetModule(comm.ModuleBuried)
if err != nil {
return
}
module1.(comm.IBuried).CompleteCondition(session.GetUserId(), int32(condiId))
this.Debug("使用bingo命令:uid = %s ", this.Debug("使用bingo命令:uid = %s ",
log.Field{Key: "uid", Value: session.GetUserId()}, log.Field{Key: "uid", Value: session.GetUserId()},
log.Field{Key: "0", Value: datas[0]}, log.Field{Key: "0", Value: datas[0]},

View File

@ -33,7 +33,6 @@ type ModuleBase struct {
ModuleItems comm.IItems //道具背包模块 ModuleItems comm.IItems //道具背包模块
ModuleHero comm.IHero //英雄模块 ModuleHero comm.IHero //英雄模块
ModuleEquipment comm.IEquipment //装备模块 ModuleEquipment comm.IEquipment //装备模块
ModuleTask comm.ITask //任务
ModuleFriend comm.IFriend //好友 ModuleFriend comm.IFriend //好友
ModuleSociaty comm.ISociaty //公会 ModuleSociaty comm.ISociaty //公会
ModulePrivilege comm.IPrivilege // 月卡 ModulePrivilege comm.IPrivilege // 月卡
@ -92,11 +91,6 @@ func (this *ModuleBase) Start() (err error) {
} }
this.ModuleEquipment = module.(comm.IEquipment) this.ModuleEquipment = module.(comm.IEquipment)
if module, err = this.service.GetModule(comm.ModuleTask); err != nil {
return
}
this.ModuleTask = module.(comm.ITask)
if module, err = this.service.GetModule(comm.ModuleFriend); err != nil { if module, err = this.service.GetModule(comm.ModuleFriend); err != nil {
return return
} }

View File

@ -23,10 +23,10 @@ func (this *apiComp) Get(session comm.IUserSession, req *pb.ReddotGetReq) (errda
_rid := comm.ReddotType(rid) _rid := comm.ReddotType(rid)
switch _rid { switch _rid {
//任务 //任务
case comm.Reddot10101, comm.Reddot10102, comm.Reddot10103, comm.Reddot10201, comm.Reddot10301: // case comm.Reddot10101, comm.Reddot10102, comm.Reddot10103, comm.Reddot10201, comm.Reddot10301:
for k, v := range this.module.ModuleTask.Reddot(session, _rid) { // for k, v := range this.module.ModuleTask.Reddot(session, _rid) {
reddot[int32(k)] = v // reddot[int32(k)] = v
} // }
//主线 //主线
case comm.Reddot24101: case comm.Reddot24101:
for k, v := range this.module.mline.Reddot(session, _rid) { for k, v := range this.module.mline.Reddot(session, _rid) {

View File

@ -20,14 +20,14 @@ func (this *apiComp) GetAll(session comm.IUserSession, req *pb.ReddotGetAllReq)
return return
} }
//任务系统 //任务系统
for k, v := range this.module.ModuleTask.Reddot(session, // for k, v := range this.module.ModuleTask.Reddot(session,
comm.Reddot10101, // comm.Reddot10101,
comm.Reddot10102, // comm.Reddot10102,
comm.Reddot10103, // comm.Reddot10103,
comm.Reddot10201, // comm.Reddot10201,
comm.Reddot10301) { // comm.Reddot10301) {
reddot[int32(k)] = v // reddot[int32(k)] = v
} // }
//每日任务 //每日任务
for k, v := range this.module.dailytask.Reddot(session, for k, v := range this.module.dailytask.Reddot(session,

View File

@ -1,37 +0,0 @@
package task
import (
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
)
const (
TaskSubTypeList = "list" //任务列表
TaskSubTypeReceive = "receive" //领取
TaskSubTypeActiveList = "activelist" //活跃度列表
TaskSubTypeActiveReceive = "activereceive" //活跃度领取
TaskSubTypeStrategy = "strategy" //卡牌攻略
TaskSubTypeFinishedPush = "taskfinishedpush" //推送
TaskSubTypeGetrecord = "getrecord" //任务数据
TaskSubTypeSend = "send" //触发任务
)
type apiComp struct {
modules.MCompGate
service core.IService
module *ModuleTask
}
// 组件初始化接口
func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompGate.Init(service, module, comp, options)
this.module = module.(*ModuleTask)
this.service = service
return
}
func (this *apiComp) Start() (err error) {
err = this.MCompGate.Start()
return
}

View File

@ -1,53 +0,0 @@
package task
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
// 活跃度列表
func (this *apiComp) ActiveListCheck(session comm.IUserSession, req *pb.TaskActiveListReq) (errdata *pb.ErrorData) {
if req.TaskTag <= 0 || req.TaskTag > 2 {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.ToString(),
}
}
return
}
func (this *apiComp) ActiveList(session comm.IUserSession, req *pb.TaskActiveListReq) (errdata *pb.ErrorData) {
if errdata = this.ActiveListCheck(session, req); errdata != nil {
return
}
resp := &pb.TaskActiveListResp{}
defer func() {
session.SendMsg(string(this.module.GetType()), TaskSubTypeActiveList, resp)
}()
// 获取玩家活跃度
expand, err := this.module.ModuleUser.GetUserExpand(session.GetUserId())
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
if expand != nil {
// 返回活跃度
if req.TaskTag == int32(comm.TASK_DAILY) {
resp.Active = expand.Activeday
} else if req.TaskTag == int32(comm.TASK_WEEKLY) {
resp.Active = expand.Activeweek
}
}
//获取当前Tag的活跃度列表
resp.List = this.module.modelTaskActive.getActiveListByTag(session.GetUserId(), comm.TaskTag(req.TaskTag))
return
}

View File

@ -1,143 +0,0 @@
package task
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
// 活跃度领取
func (this *apiComp) ActiveReceiveCheck(session comm.IUserSession, req *pb.TaskActiveReceiveReq) (errdata *pb.ErrorData) {
var code pb.ErrorCode
if req.Id == 0 {
code = pb.ErrorCode_TaskIdEmpty
} else if req.TaskTag <= 0 || req.TaskTag > 2 {
code = pb.ErrorCode_TaskTagEmpty
}
errdata = &pb.ErrorData{
Code: code,
Title: code.ToString(),
}
return
}
func (this *apiComp) ActiveReceive(session comm.IUserSession, req *pb.TaskActiveReceiveReq) (errdata *pb.ErrorData) {
var (
active *pb.DBActivity
err error
)
if errdata = this.ActiveReceiveCheck(session, req); errdata != nil {
return
}
uid := session.GetUserId()
ue, err := this.module.ModuleUser.GetUserExpand(uid)
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
if ue == nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_UserExpandNull,
Title: pb.ErrorCode_UserExpandNull.ToString(),
Message: err.Error(),
}
return
}
var rewards []*cfg.Gameatn
var flag bool
update := map[string]interface{}{}
// 玩家的
if active, err = this.module.modelTaskActive.getActiveList(uid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
// var activityData *pb.ActivityData
for _, v := range active.ActivityList {
if v.TaskId == req.Id {
if v.Received != 1 {
conf := this.module.configure.getTaskActiveById(v.TaskId)
if conf == nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.ToString(),
Message: err.Error(),
}
return
}
if req.TaskTag == int32(comm.TASK_DAILY) {
if ue.Activeday < conf.Active {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_TaskActiveNoenough,
Title: pb.ErrorCode_TaskActiveNoenough.ToString(),
Message: err.Error(),
}
return
}
} else if req.TaskTag == int32(comm.TASK_WEEKLY) {
if ue.Activeweek < conf.Active {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_TaskActiveNoenough,
Title: pb.ErrorCode_TaskActiveNoenough.ToString(),
Message: err.Error(),
}
return
}
}
v.Received = 1
flag = true
rewards = append(rewards, conf.Reword...)
}
break
}
}
if flag {
update["activityList"] = active.ActivityList
if err := this.module.modelTaskActive.Change(session.GetUserId(), update); err != nil {
this.module.Errorf("updateReceive err %v", err)
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
}
if len(rewards) > 0 {
//派发奖励
if errdata = this.module.DispenseRes(session, rewards, true); errdata != nil {
this.module.Error("活跃度奖励",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "rewards", Value: rewards},
)
}
go this.module.ModuleBuried.TriggerBuried(session.Clone(), comm.GetBuriedParam(comm.Rtype171, 1))
}
resp := &pb.TaskActiveReceiveResp{
TaskTag: req.TaskTag,
Id: req.Id,
}
session.SendMsg(string(this.module.GetType()), TaskSubTypeActiveReceive, resp)
return
}

View File

@ -1,46 +0,0 @@
package task
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
// 任务列表
func (this *apiComp) ListCheck(session comm.IUserSession, req *pb.TaskListReq) (errdata *pb.ErrorData) {
if req.TaskTag <= 0 || req.TaskTag > 3 {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.ToString(),
}
}
return
}
func (this *apiComp) List(session comm.IUserSession, req *pb.TaskListReq) (errdata *pb.ErrorData) {
if errdata = this.ListCheck(session, req); errdata != nil {
return
}
rsp := &pb.TaskListResp{}
task := this.module.modelTask.getTaskListByTag(session.GetUserId(), comm.TaskTag(req.TaskTag))
if task == nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_TaskNotFound,
Title: pb.ErrorCode_TaskNotFound.ToString(),
}
return
}
switch req.TaskTag {
case int32(comm.TASK_DAILY):
rsp.List = task.DayList
case int32(comm.TASK_WEEKLY):
rsp.List = task.WeekList
case int32(comm.TASK_ACHIEVE):
rsp.List = task.AchieveList
}
session.SendMsg(string(this.module.GetType()), TaskSubTypeList, rsp)
return
}

View File

@ -1,228 +0,0 @@
package task
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
//任务奖励领取
func (this *apiComp) ReceiveCheck(session comm.IUserSession, req *pb.TaskReceiveReq) (errdata *pb.ErrorData) {
var code pb.ErrorCode
if req.Id == 0 {
code = pb.ErrorCode_TaskIdEmpty
} else if req.TaskTag == 0 {
code = pb.ErrorCode_TaskTagEmpty
}
if code != 0 {
errdata = &pb.ErrorData{
Code: code,
Title: code.ToString(),
Message: fmt.Sprintf("Id:%v tag:%v", req.Id, req.TaskTag),
}
}
return
}
func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq) (errdata *pb.ErrorData) {
var (
userTask *pb.DBTask
taskDataList []*pb.TaskData
active *pb.DBActivity
err error
)
if errdata = this.ReceiveCheck(session, req); errdata != nil {
return
}
uid := session.GetUserId()
// 获取待领取的任务
if userTask, err = this.module.modelTask.getUserTask(uid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_TaskNotFound,
Title: pb.ErrorCode_TaskNotFound.ToString(),
}
return
}
switch req.TaskTag {
case int32(comm.TASK_DAILY):
taskDataList = userTask.DayList
case int32(comm.TASK_WEEKLY):
taskDataList = userTask.WeekList
case int32(comm.TASK_ACHIEVE):
taskDataList = userTask.AchieveList
}
var taskData *pb.TaskData
for _, v := range taskDataList {
if v.TaskId == req.Id {
taskData = v
}
}
//判断是否完成
if taskData.Status == 0 {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_TaskNoFinished,
Title: pb.ErrorCode_TaskNoFinished.ToString(),
}
return
}
//判断任务是否领取
if taskData.Received == 1 {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_TaskReceived,
Title: pb.ErrorCode_TaskReceived.ToString(),
}
return
}
// 待领取的任务配置
conf := this.module.configure.getTaskById(taskData.TaskId)
if conf == nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.ToString(),
}
return
}
// 更新活跃度
if conf.Active > 0 {
//更新活跃度
ue, err := this.module.ModuleUser.GetUserExpand(session.GetUserId())
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
update := make(map[string]interface{})
if ue != nil {
if comm.TaskTag(req.TaskTag) == comm.TASK_DAILY {
ue.Activeday = ue.Activeday + conf.Active
update["activeday"] = ue.Activeday
}
if comm.TaskTag(req.TaskTag) == comm.TASK_WEEKLY {
ue.Activeweek = ue.Activeweek + conf.Active
update["activeweek"] = ue.Activeweek
}
// 周任务 自动领取奖励
if comm.TaskTag(req.TaskTag) == comm.TASK_WEEKLY {
TaskActive := make(map[string]interface{})
if active, err = this.module.modelTaskActive.getActiveList(uid); err != nil {
}
var rewards []*cfg.Gameatn
var maxTaskId int32
for _, v := range active.ActivityList {
if v.Received != 1 {
conf := this.module.configure.getTaskActiveById(v.TaskId)
if conf == nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.ToString(),
Message: err.Error(),
}
return
}
if ue.Activeweek < conf.Active {
continue
}
v.Received = 1
rewards = append(rewards, conf.Reword...)
}
maxTaskId = v.TaskId
}
if len(rewards) > 0 {
TaskActive["activityList"] = active.ActivityList
if err := this.module.modelTaskActive.Change(session.GetUserId(), TaskActive); err != nil {
this.module.Errorf("updateReceive err %v", err)
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
//派发奖励
if errdata = this.module.DispenseRes(session, rewards, true); errdata != nil {
this.module.Error("活跃度奖励",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "rewards", Value: rewards},
)
}
go this.module.ModuleBuried.TriggerBuried(session.Clone(), comm.GetBuriedParam(comm.Rtype171, 1))
session.SendMsg(string(this.module.GetType()), "activereceive", &pb.TaskActiveReceivePush{
TaskTag: int32(comm.TASK_WEEKLY),
Id: maxTaskId,
})
}
}
}
if len(update) > 0 {
if err = this.module.ModuleUser.ChangeUserExpand(session.GetUserId(), update); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
}
}
//奖励
if errdata = this.module.DispenseRes(session, conf.Reword, true); errdata != nil {
this.module.Error("发送奖励",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "rewards", Value: conf.Reword},
log.Field{Key: "errdata", Value: errdata},
)
return
}
//更新用户领取状态
for _, v := range taskDataList {
if v.TaskId == req.Id {
v.Received = 1
break
}
}
update := map[string]interface{}{}
switch req.TaskTag {
case int32(comm.TASK_DAILY):
update["dayList"] = taskDataList
case int32(comm.TASK_WEEKLY):
update["weekList"] = taskDataList
case int32(comm.TASK_ACHIEVE):
update["achieveList"] = taskDataList
}
if err := this.module.modelTask.Change(session.GetUserId(), update); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
session.SendMsg(string(this.module.GetType()), TaskSubTypeReceive, &pb.TaskReceiveResp{TaskId: taskData.TaskId})
return
}

View File

@ -1,31 +0,0 @@
package task
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
func (this *apiComp) SendCheck(session comm.IUserSession, req *pb.TaskSendReq) (errdata *pb.ErrorData) {
if len(req.Params) == 0 || req.TaskType == 0 {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.ToString(),
}
}
return
}
func (this *apiComp) Send(session comm.IUserSession, req *pb.TaskSendReq) (errdata *pb.ErrorData) {
// if imodule, err := this.service.GetModule(comm.ModuleRtask); err == nil {
// if itask, ok := imodule.(comm.IRtask); ok {
// itask.TriggerTask(session.GetUserId(), comm.GetTaskParam(comm.TaskType(req.TaskType), req.Params...))
// }
// }
// this.module.ModuleBuried.TriggerBuried(session.Clone(),comm.GetBuriedParam(comm.TaskType(req.TaskType)))
rsp := &pb.TaskSendResp{
IsSucc: true,
}
session.SendMsg(string(this.module.GetType()), TaskSubTypeSend, rsp)
return
}

View File

@ -1,201 +0,0 @@
package task
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
cfg "go_dreamfactory/sys/configure/structs"
"sort"
)
const (
gameActiveReward = "game_taskactivereward.json"
gameTaskRound = "game_taskround.json"
)
type configureComp struct {
modules.MCompConfigure
}
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompConfigure.Init(service, module, comp, options)
this.LoadMultiConfigure(map[string]interface{}{
gameTaskRound: cfg.NewGameTaskRound,
gameActiveReward: cfg.NewGameActiveReward,
})
return
}
//获取活跃度奖励配置
func (this *configureComp) getActiveRewardCfg() (data *cfg.GameActiveReward, err error) {
var (
v interface{}
ok bool
)
if v, err = this.GetConfigure(gameActiveReward); err != nil {
return
} else {
if data, ok = v.(*cfg.GameActiveReward); !ok {
err = fmt.Errorf("%T no is *cfg.Game_ActiveReward", v)
return
}
}
return
}
//获取任务配置
func (this *configureComp) getTaskRoundCfg() (data *cfg.GameTaskRound, err error) {
var (
v interface{}
ok bool
)
if v, err = this.GetConfigure(gameTaskRound); err != nil {
return
} else {
if data, ok = v.(*cfg.GameTaskRound); !ok {
err = fmt.Errorf("%T no is *cfg.Game_taskRound", v)
return
}
}
return
}
//根据taskId获取配置
func (this *configureComp) getTaskById(taskId int32) (data *cfg.GameTaskRoundData) {
cfg, err := this.getTaskRoundCfg()
if err != nil {
log.Errorf("%v", err)
return nil
}
if cfg != nil {
data = cfg.GetDataMap()[taskId]
}
return
}
//是否第一个成就任务
func (this *configureComp) isFirstTask(taskId int32) bool {
data := this.getTaskByTag(int32(comm.TASK_ACHIEVE))
for _, v := range data {
if taskId == v.IdAfter {
return false
} else {
continue
}
}
return true
}
// 上一个任务
func (this *configureComp) getPreTask(preTaskId int32) *cfg.GameTaskRoundData {
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.GameTaskRoundData, err error) {
cfg, err := this.getTaskRoundCfg()
if err != nil {
log.Errorf("%v", err)
return data, err
}
if cfg != nil {
data = cfg.GetDataList()
}
return
}
//根据任务类型获取任务列表
func (this *configureComp) getTasks(taskType int32) (data []*cfg.GameTaskRoundData, err error) {
list, err := this.getTaskList()
if err != nil {
log.Errorf("%v", err)
return data, err
}
for _, d := range list {
if d.TypeId == taskType {
data = append(data, d)
}
}
return
}
//任务列表 正序
func (this *configureComp) getSortedTasks(taskType int32) (data []*cfg.GameTaskRoundData, err error) {
if data, err = this.getTasks(taskType); err != nil {
return nil, err
}
sort.SliceStable(data, func(i, j int) bool {
return data[i].IdList > data[j].IdList
})
return
}
//获取任务配置 条件 tasktag
func (this *configureComp) getTaskByTag(taskTag int32) (data []*cfg.GameTaskRoundData) {
list, err := this.getTaskList()
if err != nil {
log.Errorf("%v", err)
return data
}
for _, d := range list {
if d.IdTag == taskTag {
data = append(data, d)
}
}
return
}
func (this *configureComp) getTaskActiveList() (data []*cfg.GameActiveRewardData) {
conf, err := this.getActiveRewardCfg()
if err != nil {
log.Errorf("get conf err:%v", err)
return
}
if conf != nil {
data = conf.GetDataList()
}
return
}
//获取活跃度奖励list
func (this *configureComp) getTaskActiveByTag(taskTag int32) (data []*cfg.GameActiveRewardData) {
conf, err := this.getActiveRewardCfg()
if err != nil {
log.Errorf("get conf err:%v", err)
return
}
if conf != nil {
for _, v := range conf.GetDataList() {
if v.IdTag == taskTag {
data = append(data, v)
}
}
}
return
}
// 获取活跃度配置map
func (this *configureComp) getTaskActiveById(id int32) (data *cfg.GameActiveRewardData) {
conf, err := this.getActiveRewardCfg()
if err != nil {
log.Errorf("get conf err:%v", err)
return
}
if conf != nil {
if v, ok := conf.GetDataMap()[id]; ok {
return v
}
}
return
}

View File

@ -1,147 +0,0 @@
package task
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/x/bsonx"
)
type ModelTaskActive struct {
modules.MCompModel
module *ModuleTask
}
func (this *ModelTaskActive) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = comm.TableTaskActive
err = this.MCompModel.Init(service, module, comp, options)
this.module = module.(*ModuleTask)
// 加索引
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
})
return
}
// 初始化活跃度
func (this *ModelTaskActive) initActiveReward(active *pb.DBActivity, taskTag comm.TaskTag) {
data := this.module.configure.getTaskActiveByTag(int32(taskTag))
for _, conf := range data {
ta := &pb.ActivityData{
Tag: int32(taskTag),
TaskId: conf.Key,
}
active.ActivityList = append(active.ActivityList, ta)
}
}
func (this *ModelTaskActive) getActiveList(uid string) (active *pb.DBActivity, err error) {
active = &pb.DBActivity{}
if err = this.Get(uid, active); err != nil && err != mgo.MongodbNil {
this.module.Errorf("getTaskList err %v", err)
return
}
if err == mongo.ErrNoDocuments {
objId := primitive.NewObjectID().Hex()
active = &pb.DBActivity{
Uid: uid,
Id: objId,
ActivityList: make([]*pb.ActivityData, 0),
}
err = this.Add(uid, active)
}
return
}
// 获取玩家活跃度列表
func (this *ModelTaskActive) getActiveListByTag(uid string, taskTag comm.TaskTag) (list []*pb.ActivityData) {
task := &pb.DBActivity{}
if err := this.Get(uid, task); err != nil {
this.module.Errorf("getTaskList err %v", err)
return
}
for _, v := range task.ActivityList {
if v.Tag == int32(taskTag) {
list = append(list, v)
}
}
return list
}
// 查询完成的且未领取的任务 发现未领取返回true
func (this *ModelTaskActive) noReceiveTaskActive(user *pb.DBUserExpand, activityList []*pb.ActivityData, taskTag comm.TaskTag) (bool, error) {
for _, v := range activityList {
if v.Tag == int32(taskTag) && v.Received == 0 {
conf := this.module.configure.getTaskActiveById(v.TaskId)
if conf != nil && user != nil {
switch taskTag {
case comm.TASK_DAILY:
if user.Activeday >= conf.Active {
return true, nil
}
case comm.TASK_WEEKLY:
if user.Activeweek >= conf.Active {
return true, nil
}
}
}
}
}
return false, nil
}
// 获取玩家活跃记录 id 唯一ID
func (this *ModelTaskActive) getUserActive(uid string, taskId int32, taskTag comm.TaskTag) *pb.ActivityData {
record := this.getActiveListByTag(uid, taskTag)
for _, v := range record {
if v.TaskId == taskId {
return v
}
}
return nil
}
func (this *ModelTaskActive) updateReceive(uid string, data map[string]interface{}) (err error) {
if len(data) == 0 {
return
}
return this.module.modelTaskActive.Change(uid, data)
}
// 清空活跃度任务
func (this *ModelTaskActive) clearTask(uid string, taskTag ...comm.TaskTag) {
if len(taskTag) == 0 {
this.module.Errorf("least one param for taskTag")
return
}
var (
active *pb.DBActivity
err error
)
if active, err = this.getActiveList(uid); err != nil {
this.module.Errorln(err)
return
}
for i := 0; i < len(active.ActivityList); i++ {
if active.ActivityList[i].Tag == int32(taskTag[0]) {
active.ActivityList = append(active.ActivityList[:i], active.ActivityList[i+1:]...)
i--
}
}
update := map[string]interface{}{
"activityList": active.ActivityList,
}
if err := this.module.modelTaskActive.Change(uid, update); err != nil {
this.module.Errorf("uid: %v err:%v", uid, err)
return
}
}

View File

@ -1,371 +0,0 @@
package task
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
event_v2 "go_dreamfactory/lego/sys/event/v2"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"sort"
"github.com/pkg/errors"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/x/bsonx"
)
type ModelTask struct {
modules.MCompModel
module *ModuleTask
EventApp *event_v2.App
}
func (this *ModelTask) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = comm.TableTask
err = this.MCompModel.Init(service, module, comp, options)
this.module = module.(*ModuleTask)
this.EventApp = event_v2.NewApp()
// this.EventApp.Listen(comm.EventTaskChanged, this.doTaskHandle)
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
})
return
}
// 查询完成的且未领取的任务 发现未领取返回true
func (this *ModelTask) noReceiveTask(task *pb.DBTask, taskTag comm.TaskTag) (bool, error) {
if taskTag == comm.TASK_DAILY {
for _, v := range task.DayList {
if v.Received == 0 {
return true, nil
}
}
} else if taskTag == comm.TASK_WEEKLY {
for _, v := range task.WeekList {
if v.Received == 0 {
return true, nil
}
}
}
return false, nil
}
func (this *ModelTask) checkTaskStatus(uid string, list []*pb.TaskData) []*pb.TaskData {
// 待校验的条件ID
condIds := []int32{}
for _, v := range list {
condIds = append(condIds, v.TypeId)
}
conds, err := this.module.ModuleBuried.CheckCondition(uid, condIds...)
if err != nil {
this.module.Error(err.Error())
return nil
}
for _, v := range list {
for _, cond := range conds {
if v.TypeId == cond.Conid {
v.Cond = cond
if cond.State == pb.BuriedItemFinishState_buried_finish {
v.Status = 1
}
}
}
}
return list
}
// 获取玩家任务列表
func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) *pb.DBTask {
task := &pb.DBTask{}
if err := this.Get(uid, task); err != nil {
this.module.Errorf("getTaskList err %v", err)
return nil
}
if task == nil {
return nil
}
// 排序
sort.SliceStable(task.DayList, func(i, j int) bool {
return task.DayList[i].Sort < task.DayList[j].Sort
})
sort.SliceStable(task.WeekList, func(i, j int) bool {
return task.WeekList[i].Sort < task.WeekList[j].Sort
})
update := map[string]interface{}{}
var dataList []*pb.TaskData
if taskTag == comm.TASK_DAILY {
dataList = task.DayList
} else if taskTag == comm.TASK_WEEKLY {
dataList = task.WeekList
}
dataList = this.checkTaskStatus(uid, dataList)
if taskTag == comm.TASK_DAILY {
update["dayList"] = dataList
} else if taskTag == comm.TASK_WEEKLY {
update["weekList"] = dataList
}
if err := this.module.modelTask.Change(uid, update); err != nil {
this.module.Error("change err", log.Field{Key: "uid", Value: uid})
}
// 当前玩家成就任务
getCurTask := func(taskId int32) *pb.TaskData {
for _, v := range task.AchieveList {
if v.TaskId == taskId {
return v
}
}
return nil
}
// 判断上个成就任务领取了才显示最后一个任务
isReceived := func(taskId int32) bool {
if preCnf := this.module.configure.getPreTask(taskId); preCnf != nil {
if preTask := getCurTask(preCnf.Key); preTask != nil {
if preTask.Received == 1 {
return true
}
}
}
return false
}
// 成就列表
var achieveList []*pb.TaskData
if taskTag == comm.TASK_ACHIEVE {
for _, v := range task.AchieveList {
if curTask := this.module.configure.getTaskById(v.TaskId); curTask != nil {
if v.Received == 0 {
isFirst := this.module.configure.isFirstTask(curTask.Key)
if curTask.IdAfter == 0 && isFirst { //未领取和没有下个连续任务的
achieveList = append(achieveList, v)
continue
}
if isFirst && curTask.IdAfter != 0 { //连续任务的第一个任务
next := this.module.configure.getTaskById(curTask.IdAfter)
if next != nil && v.Received == 0 {
achieveList = append(achieveList, v)
}
} else {
if isReceived(curTask.Key) {
achieveList = append(achieveList, v)
}
}
}
}
}
achieveList = this.checkTaskStatus(uid, achieveList)
update["achieveList"] = achieveList
if err := this.module.modelTask.Change(uid, update); err != nil {
log.Error("err", log.Field{Key: "uid", Value: uid})
}
task.AchieveList = achieveList
}
return task
}
// 获取用户任务
func (this *ModelTask) getTaskById(uid string, taskTag comm.TaskTag, taskId int32) *pb.DBTask {
task := &pb.DBTask{}
if err := this.Get(uid, task); err != nil {
this.module.Errorf("getTaskById err %v", err)
return nil
}
if task != nil {
if taskTag == comm.TASK_DAILY {
for _, v := range task.DayList {
if v.TaskId == taskId {
task.DayList = append(task.DayList, v)
}
}
} else if taskTag == comm.TASK_WEEKLY {
for _, v := range task.WeekList {
if v.TaskId == taskId {
task.WeekList = append(task.WeekList, v)
}
}
} else if taskTag == comm.TASK_ACHIEVE {
for _, v := range task.AchieveList {
if v.TaskId == taskId {
task.AchieveList = append(task.AchieveList, v)
}
}
}
}
return task
}
// 初始化任务
func (this *ModelTask) initTask(opencond map[string]int32, task *pb.DBTask, taskTag comm.TaskTag) error {
data := this.module.configure.getTaskByTag(int32(taskTag))
for _, cnf := range data {
if unlock, ok := opencond[cnf.Open]; cnf.Open != "" && (!ok || unlock != 2) {
continue
}
t := &pb.TaskData{
Tag: cnf.IdTag,
TypeId: cnf.TypeId,
TaskId: cnf.Key,
Active: cnf.Active,
Sort: cnf.IdList,
}
if taskTag == comm.TASK_DAILY {
task.DayList = append(task.DayList, t)
} else if taskTag == comm.TASK_WEEKLY {
task.WeekList = append(task.WeekList, t)
} else if taskTag == comm.TASK_ACHIEVE {
task.AchieveList = append(task.AchieveList, t)
}
}
return nil
}
// 查询用户任务
func (this *ModelTask) getUserTask(uid string) (task *pb.DBTask, err error) {
task = &pb.DBTask{}
if err = this.Get(uid, task); err != nil && err != mgo.MongodbNil {
return
}
if err == mongo.ErrNoDocuments {
objId := primitive.NewObjectID().Hex()
task = &pb.DBTask{
Uid: uid,
Id: objId,
}
if err = this.Add(uid, task); err != nil {
return
}
}
return
}
// 获取待处理的(日、周)任务
func (this *ModelTask) getUnFinishTasks(uid string, taskId int32) (list []*pb.TaskData) {
task := &pb.DBTask{}
if err := this.Get(uid, task); err != nil {
this.module.Errorf("getTaskById err %v", err)
return nil
}
if task != nil {
for _, v := range task.DayList {
if v.TaskId == taskId && v.Status == 0 {
list = append(list, v)
}
}
for _, v := range task.WeekList {
if v.TaskId == taskId && v.Status == 0 {
list = append(list, v)
}
}
for _, v := range task.AchieveList {
if v.TaskId == taskId && v.Status == 0 {
list = append(list, v)
}
}
}
return
}
// 更改用户任务
// Deprecated
func (this *ModelTask) modifyUserTask(uid string, taskId int32, data map[string]interface{}) error {
var task *pb.DBTask
if err := this.GetList(uid, &task); err != nil {
this.module.Errorf("getTaskById err %v", err)
return nil
}
var err error
for _, v := range task.DayList {
if v.TaskId == taskId {
// v.Progress = data["progress"].(int32)
v.Status = data["status"].(int32)
}
}
day_update := map[string]interface{}{
"dayList": task.DayList,
}
err = this.Change(uid, day_update)
for _, v := range task.WeekList {
if v.TaskId == taskId {
// v.Progress = data["progress"].(int32)
v.Status = data["status"].(int32)
}
}
week_update := map[string]interface{}{
"weekList": task.WeekList,
}
err = this.Change(uid, week_update)
for _, v := range task.AchieveList {
if v.TaskId == taskId {
// v.Progress = data["progress"].(int32)
v.Status = data["status"].(int32)
}
}
achieve_update := map[string]interface{}{
"achieveList": task.AchieveList,
}
err = this.Change(uid, achieve_update)
return err
}
// 更新活跃度
func (this *ModelTask) updateActive(uid string, cfgId int32) error {
// 更新活跃度
de, err := this.module.ModuleUser.GetUserExpand(uid)
if err != nil {
return err
}
conf := this.module.configure.getTaskById(cfgId)
if conf == nil {
return errors.New(fmt.Sprintf("%v config nil", cfgId))
}
switch conf.IdTag {
case int32(comm.TASK_DAILY):
de.Activeday += conf.Active
case int32(comm.TASK_WEEKLY):
de.Activeweek += conf.Active
}
update := map[string]interface{}{
"activeday": de.Activeday,
"activeweek": de.Activeweek,
}
return this.module.ModuleUser.ChangeUserExpand(uid, update)
}
type TaskListen struct {
event_v2.Event
Uid string
TaskType comm.TaskType
}

View File

@ -1,184 +0,0 @@
// package
// 日/周常成就任务
// 赵长远
package task
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/event"
event_v2 "go_dreamfactory/lego/sys/event/v2"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
)
var _ comm.ITask = (*ModuleTask)(nil)
type ModuleTask struct {
modules.ModuleBase
modelTask *ModelTask
modelTaskActive *ModelTaskActive
api *apiComp
configure *configureComp
}
func NewModule() core.IModule {
return &ModuleTask{}
}
func (this *ModuleTask) GetType() core.M_Modules {
return comm.ModuleTask
}
func (this *ModuleTask) GetEventApp() *event_v2.App {
return this.modelTask.EventApp
}
func (this *ModuleTask) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) {
err = this.ModuleBase.Init(service, module, options)
return
}
func (this *ModuleTask) OnInstallComp() {
this.ModuleBase.OnInstallComp()
this.api = this.RegisterComp(new(apiComp)).(*apiComp)
this.modelTask = this.RegisterComp(new(ModelTask)).(*ModelTask)
this.modelTaskActive = this.RegisterComp(new(ModelTaskActive)).(*ModelTaskActive)
this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
}
// 模块启动接口
func (this *ModuleTask) Start() (err error) {
err = this.ModuleBase.Start()
event.RegisterGO(comm.EventUserLogin, this.EventUserLogin)
event.RegisterGO(comm.EventUserOffline, this.CleanTask)
return
}
func (this *ModuleTask) EventUserLogin(session comm.IUserSession) {
var (
opencond map[string]int32
errdata *pb.ErrorData
task *pb.DBTask
active *pb.DBActivity
err error
)
if opencond, errdata = this.ModuleSys.QueryOpenCondData(session.GetUserId()); errdata != nil {
this.Errorf("getTaskList err %v", errdata)
return
}
if task, err = this.modelTask.getUserTask(session.GetUserId()); err != nil {
this.Errorf("getTaskList err %v", err)
return
}
this.modelTask.initTask(opencond, task, comm.TASK_DAILY)
this.modelTask.initTask(opencond, task, comm.TASK_WEEKLY)
this.modelTask.initTask(opencond, task, comm.TASK_ACHIEVE)
if err = this.modelTask.Change(session.GetUserId(), map[string]interface{}{
"dayList": task.DayList,
"weekList": task.WeekList,
"achieveList": task.AchieveList,
}); err != nil {
log.Error("err", log.Field{Key: "uid", Value: session.GetUserId()})
return
}
if active, err = this.modelTaskActive.getActiveList(session.GetUserId()); err != nil {
return
}
this.modelTaskActive.initActiveReward(active, comm.TASK_DAILY)
this.modelTaskActive.initActiveReward(active, comm.TASK_WEEKLY)
if err = this.modelTaskActive.Change(session.GetUserId(), map[string]interface{}{
"activityList": active.ActivityList,
}); err != nil {
log.Error("err", log.Field{Key: "uid", Value: session.GetUserId()})
return
}
}
// 清除缓存
func (this *ModuleTask) CleanTask(uid, sessionid string) {
this.modelTask.BatchDelLists(uid)
this.modelTaskActive.BatchDelLists(uid)
}
// 重置玩家活跃度
func (this *ModuleTask) resetActive(uid string, taskTag comm.TaskTag) {
update := make(map[string]interface{})
if taskTag == comm.TASK_DAILY {
update["activeday"] = 0
} else if taskTag == comm.TASK_WEEKLY {
update["activeweek"] = 0
}
if len(update) > 0 {
this.ModuleUser.ChangeUserExpand(uid, update)
}
}
func (this *ModuleTask) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (reddot map[comm.ReddotType]*pb.ReddotItem) {
reddot = make(map[comm.ReddotType]*pb.ReddotItem)
var (
task *pb.DBTask = &pb.DBTask{}
active *pb.DBActivity
userExpand *pb.DBUserExpand
err error
)
if task, err = this.modelTask.getUserTask(session.GetUserId()); err != nil {
this.Errorf("getTaskList err %v", err)
return
}
if active, err = this.modelTaskActive.getActiveList(session.GetUserId()); err != nil {
return
}
// 获取玩家活跃度
userExpand, err = this.ModuleUser.GetUserExpand(session.GetUserId())
if err != nil {
return
}
for _, v := range rid {
switch v {
case comm.Reddot10101:
tf, _ := this.modelTask.noReceiveTask(task, comm.TASK_DAILY)
reddot[comm.Reddot10101] = &pb.ReddotItem{
Rid: int32(comm.Reddot10101),
Activated: tf,
Nextchanagetime: 0,
}
case comm.Reddot10102:
tf, _ := this.modelTask.noReceiveTask(task, comm.TASK_WEEKLY)
reddot[comm.Reddot10102] = &pb.ReddotItem{
Rid: int32(comm.Reddot10102),
Activated: tf,
Nextchanagetime: 0,
}
case comm.Reddot10103:
tf, _ := this.modelTask.noReceiveTask(task, comm.TASK_ACHIEVE)
reddot[comm.Reddot10103] = &pb.ReddotItem{
Rid: int32(comm.Reddot10103),
Activated: tf,
Nextchanagetime: 0,
}
case comm.Reddot10201:
tf, _ := this.modelTaskActive.noReceiveTaskActive(userExpand, active.ActivityList, comm.TASK_DAILY)
reddot[comm.Reddot10201] = &pb.ReddotItem{
Rid: int32(comm.Reddot10201),
Activated: tf,
Nextchanagetime: 0,
}
case comm.Reddot10301:
tf, _ := this.modelTaskActive.noReceiveTaskActive(userExpand, active.ActivityList, comm.TASK_WEEKLY)
reddot[comm.Reddot10301] = &pb.ReddotItem{
Rid: int32(comm.Reddot10301),
Activated: tf,
Nextchanagetime: 0,
}
}
}
return
}

View File

@ -1,4 +1,4 @@
package dailytask package weektask
import ( import (
"go_dreamfactory/lego/base" "go_dreamfactory/lego/base"

View File

@ -1,4 +1,4 @@
package dailytask package weektask
import ( import (
"go_dreamfactory/comm" "go_dreamfactory/comm"

View File

@ -1,4 +1,4 @@
package dailytask package weektask
import ( import (
"go_dreamfactory/comm" "go_dreamfactory/comm"

View File

@ -1,4 +1,4 @@
package dailytask package weektask
import ( import (
"go_dreamfactory/comm" "go_dreamfactory/comm"

View File

@ -1,4 +1,4 @@
package dailytask package weektask
import ( import (
"go_dreamfactory/comm" "go_dreamfactory/comm"

View File

@ -1,4 +1,4 @@
package dailytask package weektask
import ( import (
"fmt" "fmt"
@ -7,6 +7,7 @@ import (
"go_dreamfactory/lego/sys/mgo" "go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs" cfg "go_dreamfactory/sys/configure/structs"
"go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/bson/primitive"
@ -44,7 +45,7 @@ func (this *ModelWeektask) getUserDTasks(uid string) (results *pb.DBWeektask, er
Tasks: make([]int32, 0), Tasks: make([]int32, 0),
Tcomplete: make(map[int32]bool), Tcomplete: make(map[int32]bool),
Acomplete: make(map[int32]bool), Acomplete: make(map[int32]bool),
Rtime: 0, Rtime: configure.Now().Unix(),
} }
if opencmd, errdata := this.module.sys.QueryOpenCondData(uid); errdata != nil { if opencmd, errdata := this.module.sys.QueryOpenCondData(uid); errdata != nil {
err = fmt.Errorf("sys.QueryOpenCondData err:%s", errdata.Message) err = fmt.Errorf("sys.QueryOpenCondData err:%s", errdata.Message)
@ -78,10 +79,9 @@ func (this *ModelWeektask) inquireActivations(info *pb.DBWeektask, opencmd map[s
if v.Open != "" && opencmd[v.Open] != 2 { //功能未开启 if v.Open != "" && opencmd[v.Open] != 2 { //功能未开启
continue continue
} }
if v.IdBefore != 0 && !info.Tcomplete[v.Key] { //前置任务未完成
// if v.IdBefore != 0 && !info.Tcomplete[v.Key] { //前置任务未完成 continue
// continue }
// }
info.Tasks = append(info.Tasks, v.Key) info.Tasks = append(info.Tasks, v.Key)
} }
return return

View File

@ -1,4 +1,4 @@
package dailytask package weektask
import ( import (
"go_dreamfactory/comm" "go_dreamfactory/comm"

View File

@ -57,12 +57,12 @@ import (
"go_dreamfactory/modules/stonehenge" "go_dreamfactory/modules/stonehenge"
"go_dreamfactory/modules/storyline" "go_dreamfactory/modules/storyline"
"go_dreamfactory/modules/sys" "go_dreamfactory/modules/sys"
"go_dreamfactory/modules/task"
"go_dreamfactory/modules/tools" "go_dreamfactory/modules/tools"
"go_dreamfactory/modules/uigame" "go_dreamfactory/modules/uigame"
"go_dreamfactory/modules/user" "go_dreamfactory/modules/user"
"go_dreamfactory/modules/viking" "go_dreamfactory/modules/viking"
"go_dreamfactory/modules/warorder" "go_dreamfactory/modules/warorder"
"go_dreamfactory/modules/weektask"
"go_dreamfactory/modules/wtask" "go_dreamfactory/modules/wtask"
"go_dreamfactory/services" "go_dreamfactory/services"
"go_dreamfactory/sys/db" "go_dreamfactory/sys/db"
@ -102,7 +102,6 @@ func main() {
friend.NewModule(), friend.NewModule(),
hero.NewModule(), hero.NewModule(),
equipment.NewModule(), equipment.NewModule(),
task.NewModule(),
shop.NewModule(), shop.NewModule(),
notify.NewModule(), notify.NewModule(),
chat.NewModule(), chat.NewModule(),
@ -156,6 +155,7 @@ func main() {
pushgiftbag.NewModule(), pushgiftbag.NewModule(),
uigame.NewModule(), uigame.NewModule(),
battlerecord.NewModule(), battlerecord.NewModule(),
weektask.NewModule(),
) )
} }

View File

@ -12,7 +12,6 @@ import "errors"
type GameActiveRewardData struct { type GameActiveRewardData struct {
Key int32 Key int32
IdTag int32
Active int32 Active int32
Reword []*Gameatn Reword []*Gameatn
Action string Action string
@ -27,7 +26,6 @@ func (*GameActiveRewardData) GetTypeId() int32 {
func (_v *GameActiveRewardData)Deserialize(_buf map[string]interface{}) (err error) { func (_v *GameActiveRewardData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_tag"].(float64); !_ok_ { err = errors.New("id_tag error"); return }; _v.IdTag = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["active"].(float64); !_ok_ { err = errors.New("active error"); return }; _v.Active = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["active"].(float64); !_ok_ { err = errors.New("active error"); return }; _v.Active = int32(_tempNum_) }
{ {
var _arr_ []interface{} var _arr_ []interface{}

View File

@ -12,7 +12,6 @@ import "errors"
type GameTaskActiveRewardData struct { type GameTaskActiveRewardData struct {
Key int32 Key int32
IdTag int32
Active int32 Active int32
Reword []*Gameatn Reword []*Gameatn
Action string Action string
@ -27,7 +26,6 @@ func (*GameTaskActiveRewardData) GetTypeId() int32 {
func (_v *GameTaskActiveRewardData)Deserialize(_buf map[string]interface{}) (err error) { func (_v *GameTaskActiveRewardData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_tag"].(float64); !_ok_ { err = errors.New("id_tag error"); return }; _v.IdTag = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["active"].(float64); !_ok_ { err = errors.New("active error"); return }; _v.Active = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["active"].(float64); !_ok_ { err = errors.New("active error"); return }; _v.Active = int32(_tempNum_) }
{ {
var _arr_ []interface{} var _arr_ []interface{}

View File

@ -13,12 +13,13 @@ import "errors"
type GameTaskRoundData struct { type GameTaskRoundData struct {
Key int32 Key int32
IdList int32 IdList int32
IdTag int32
Open string Open string
Opentask string
IdBefore int32
IdAfter int32
TaskDisplay string TaskDisplay string
TypeId int32 TypeId int32
Active int32 Active int32
IdAfter int32
JumpInterface int32 JumpInterface int32
Icon string Icon string
Reword []*Gameatn Reword []*Gameatn
@ -33,12 +34,13 @@ func (*GameTaskRoundData) GetTypeId() int32 {
func (_v *GameTaskRoundData)Deserialize(_buf map[string]interface{}) (err error) { func (_v *GameTaskRoundData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_list"].(float64); !_ok_ { err = errors.New("id_list error"); return }; _v.IdList = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_list"].(float64); !_ok_ { err = errors.New("id_list error"); return }; _v.IdList = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_tag"].(float64); !_ok_ { err = errors.New("id_tag error"); return }; _v.IdTag = int32(_tempNum_) }
{ var _ok_ bool; if _v.Open, _ok_ = _buf["open"].(string); !_ok_ { err = errors.New("open error"); return } } { var _ok_ bool; if _v.Open, _ok_ = _buf["open"].(string); !_ok_ { err = errors.New("open error"); return } }
{ var _ok_ bool; if _v.Opentask, _ok_ = _buf["opentask"].(string); !_ok_ { err = errors.New("opentask error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_before"].(float64); !_ok_ { err = errors.New("id_before error"); return }; _v.IdBefore = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Id_after"].(float64); !_ok_ { err = errors.New("Id_after error"); return }; _v.IdAfter = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["task_display"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.TaskDisplay error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.TaskDisplay, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["task_display"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.TaskDisplay error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.TaskDisplay, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type_id"].(float64); !_ok_ { err = errors.New("type_id error"); return }; _v.TypeId = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type_id"].(float64); !_ok_ { err = errors.New("type_id error"); return }; _v.TypeId = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["active"].(float64); !_ok_ { err = errors.New("active error"); return }; _v.Active = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["active"].(float64); !_ok_ { err = errors.New("active error"); return }; _v.Active = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_after"].(float64); !_ok_ { err = errors.New("id_after error"); return }; _v.IdAfter = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["jump_interface"].(float64); !_ok_ { err = errors.New("jump_interface error"); return }; _v.JumpInterface = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["jump_interface"].(float64); !_ok_ { err = errors.New("jump_interface error"); return }; _v.JumpInterface = int32(_tempNum_) }
{ var _ok_ bool; if _v.Icon, _ok_ = _buf["icon"].(string); !_ok_ { err = errors.New("icon error"); return } } { var _ok_ bool; if _v.Icon, _ok_ = _buf["icon"].(string); !_ok_ { err = errors.New("icon error"); return } }
{ {