This commit is contained in:
liwei1dao 2022-09-26 20:25:25 +08:00
commit 97fc44039d
57 changed files with 34401 additions and 31887 deletions

View File

@ -4,8 +4,8 @@
"var": [
{
"a": "attr",
"t": "rmbmoney",
"n": 20
"t": "gold",
"n": 20000
}
]
},
@ -14,7 +14,7 @@
"var": [
{
"a": "attr",
"t": "rmbmoney",
"t": "gold",
"n": 20
}
]

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,7 @@
"name": "高级经验精灵",
"star": 4,
"color": 3,
"heroexp": 18518,
"heroexp": 18510,
"skilllevelup": 0,
"needgold": 23324
},

File diff suppressed because it is too large Load Diff

View File

@ -232,7 +232,7 @@
},
{
"hid": "14003",
"star": 4,
"star": 3,
"energy": 6,
"prize": [
{
@ -364,7 +364,7 @@
},
{
"hid": "14007",
"star": 4,
"star": 5,
"energy": 6,
"prize": [
{
@ -496,7 +496,7 @@
},
{
"hid": "15004",
"star": 5,
"star": 3,
"energy": 6,
"prize": [
{
@ -694,7 +694,7 @@
},
{
"hid": "24002",
"star": 4,
"star": 3,
"energy": 6,
"prize": [
{
@ -727,7 +727,7 @@
},
{
"hid": "24003",
"star": 4,
"star": 3,
"energy": 6,
"prize": [
{
@ -760,7 +760,7 @@
},
{
"hid": "24004",
"star": 4,
"star": 3,
"energy": 6,
"prize": [
{
@ -958,7 +958,7 @@
},
{
"hid": "25001",
"star": 5,
"star": 4,
"energy": 6,
"prize": [
{
@ -1057,7 +1057,7 @@
},
{
"hid": "25004",
"star": 5,
"star": 3,
"energy": 6,
"prize": [
{
@ -1552,7 +1552,7 @@
},
{
"hid": "35001",
"star": 4,
"star": 3,
"energy": 6,
"prize": [
{
@ -1618,7 +1618,7 @@
},
{
"hid": "35003",
"star": 5,
"star": 3,
"energy": 6,
"prize": [
{
@ -2113,7 +2113,7 @@
},
{
"hid": "44006",
"star": 4,
"star": 3,
"energy": 6,
"prize": [
{
@ -2212,7 +2212,7 @@
},
{
"hid": "45003",
"star": 5,
"star": 3,
"energy": 6,
"prize": [
{
@ -2278,7 +2278,7 @@
},
{
"hid": "44005",
"star": 4,
"star": 3,
"energy": 6,
"prize": [
{
@ -2311,7 +2311,7 @@
},
{
"hid": "15005",
"star": 5,
"star": 3,
"energy": 6,
"prize": [
{

View File

@ -1,56 +1,56 @@
[
{
"star": 1,
"level": 1,
"maxlevel": 10,
"starup_hp": 0,
"starup_atk": 0,
"starup_def": 0,
"starup_speed": 0
},
{
"star": 2,
"level": 10,
"maxlevel": 20,
"starup_hp": 9.5,
"starup_atk": 9.5,
"starup_def": 9.5,
"starup_speed": 9.5
},
{
"star": 3,
"level": 20,
"maxlevel": 30,
"starup_hp": 19,
"starup_atk": 19,
"starup_def": 19,
"starup_speed": 19
},
{
"star": 4,
"level": 30,
"maxlevel": 40,
"starup_hp": 28.5,
"starup_atk": 28.5,
"starup_def": 28.5,
"starup_speed": 28.5
},
{
"star": 5,
"level": 40,
"maxlevel": 50,
"starup_hp": 38,
"starup_atk": 38,
"starup_def": 38,
"starup_speed": 38
},
{
"star": 6,
"level": 50,
"maxlevel": 60,
"starup_hp": 47.5,
"starup_atk": 47.5,
"starup_def": 47.5,
"starup_speed": 47.5
}
[
{
"star": 1,
"level": 1,
"maxlevel": 10,
"starup_hp": 0,
"starup_atk": 0,
"starup_def": 0,
"starup_speed": 0
},
{
"star": 2,
"level": 10,
"maxlevel": 20,
"starup_hp": 15,
"starup_atk": 15,
"starup_def": 15,
"starup_speed": 15
},
{
"star": 3,
"level": 20,
"maxlevel": 30,
"starup_hp": 25,
"starup_atk": 25,
"starup_def": 25,
"starup_speed": 25
},
{
"star": 4,
"level": 30,
"maxlevel": 40,
"starup_hp": 55,
"starup_atk": 55,
"starup_def": 55,
"starup_speed": 55
},
{
"star": 5,
"level": 40,
"maxlevel": 50,
"starup_hp": 95,
"starup_atk": 95,
"starup_def": 95,
"starup_speed": 95
},
{
"star": 6,
"level": 50,
"maxlevel": 60,
"starup_hp": 145,
"starup_atk": 145,
"starup_def": 145,
"starup_speed": 145
}
]

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +1,4 @@
[
{
"index": "1",
"var": [
{
"a": "hero",
"t": "25001",
"n": 5
}
]
},
{
"index": "2",
"var": [
@ -19,106 +9,6 @@
}
]
},
{
"index": "3",
"var": [
{
"a": "hero",
"t": "25004",
"n": 5
}
]
},
{
"index": "13",
"var": [
{
"a": "equi",
"t": "10051",
"n": 100
}
]
},
{
"index": "14",
"var": [
{
"a": "equi",
"t": "10052",
"n": 100
}
]
},
{
"index": "15",
"var": [
{
"a": "equi",
"t": "10053",
"n": 100
}
]
},
{
"index": "16",
"var": [
{
"a": "equi",
"t": "10054",
"n": 100
}
]
},
{
"index": "17",
"var": [
{
"a": "equi",
"t": "10055",
"n": 100
}
]
},
{
"index": "18",
"var": [
{
"a": "equi",
"t": "10056",
"n": 100
}
]
},
{
"index": "19",
"var": [
{
"a": "hero",
"t": "42911",
"n": 100
}
]
},
{
"index": "20",
"var": [
{
"a": "hero",
"t": "43911",
"n": 100
}
]
},
{
"index": "21",
"var": [
{
"a": "hero",
"t": "44911",
"n": 100
}
]
},
{
"index": "23",
"var": [
@ -129,356 +19,6 @@
}
]
},
{
"index": "24",
"var": [
{
"a": "item",
"t": "10006",
"n": 5
}
]
},
{
"index": "25",
"var": [
{
"a": "item",
"t": "10009",
"n": 1
}
]
},
{
"index": "26",
"var": [
{
"a": "item",
"t": "10010",
"n": 45
}
]
},
{
"index": "27",
"var": [
{
"a": "item",
"t": "10011",
"n": 1
}
]
},
{
"index": "28",
"var": [
{
"a": "item",
"t": "10012",
"n": 1250
}
]
},
{
"index": "29",
"var": [
{
"a": "item",
"t": "10013",
"n": 1000
}
]
},
{
"index": "30",
"var": [
{
"a": "item",
"t": "10014",
"n": 1
}
]
},
{
"index": "31",
"var": [
{
"a": "item",
"t": "10015",
"n": 1
}
]
},
{
"index": "32",
"var": [
{
"a": "item",
"t": "10016",
"n": 1
}
]
},
{
"index": "33",
"var": [
{
"a": "item",
"t": "50001",
"n": 200
}
]
},
{
"index": "34",
"var": [
{
"a": "item",
"t": "50002",
"n": 200
}
]
},
{
"index": "35",
"var": [
{
"a": "item",
"t": "50003",
"n": 200
}
]
},
{
"index": "36",
"var": [
{
"a": "item",
"t": "50004",
"n": 200
}
]
},
{
"index": "37",
"var": [
{
"a": "item",
"t": "50005",
"n": 200
}
]
},
{
"index": "38",
"var": [
{
"a": "item",
"t": "50006",
"n": 200
}
]
},
{
"index": "39",
"var": [
{
"a": "item",
"t": "50007",
"n": 200
}
]
},
{
"index": "40",
"var": [
{
"a": "item",
"t": "50008",
"n": 200
}
]
},
{
"index": "41",
"var": [
{
"a": "item",
"t": "50009",
"n": 200
}
]
},
{
"index": "42",
"var": [
{
"a": "item",
"t": "50010",
"n": 200
}
]
},
{
"index": "43",
"var": [
{
"a": "item",
"t": "50011",
"n": 200
}
]
},
{
"index": "44",
"var": [
{
"a": "item",
"t": "50012",
"n": 200
}
]
},
{
"index": "45",
"var": [
{
"a": "item",
"t": "30001",
"n": 999
}
]
},
{
"index": "46",
"var": [
{
"a": "item",
"t": "30002",
"n": 999
}
]
},
{
"index": "47",
"var": [
{
"a": "item",
"t": "30003",
"n": 999
}
]
},
{
"index": "48",
"var": [
{
"a": "item",
"t": "30004",
"n": 999
}
]
},
{
"index": "49",
"var": [
{
"a": "item",
"t": "30005",
"n": 999
}
]
},
{
"index": "50",
"var": [
{
"a": "item",
"t": "10002",
"n": 1000
}
]
},
{
"index": "51",
"var": [
{
"a": "hero",
"t": "43921",
"n": 50
}
]
},
{
"index": "52",
"var": [
{
"a": "hero",
"t": "44921",
"n": 50
}
]
},
{
"index": "53",
"var": [
{
"a": "hero",
"t": "45921",
"n": 50
}
]
},
{
"index": "54",
"var": [
{
"a": "hero",
"t": "44006",
"n": 5
}
]
},
{
"index": "55",
"var": [
{
"a": "hero",
"t": "35001",
"n": 5
}
]
},
{
"index": "56",
"var": [
{
"a": "hero",
"t": "44005",
"n": 5
}
]
},
{
"index": "57",
"var": [
{
"a": "hero",
"t": "15004",
"n": 5
}
]
},
{
"index": "59",
"var": [
{
"a": "hero",
"t": "14007",
"n": 5
}
]
},
{
"index": "60",
"var": [
@ -488,115 +28,5 @@
"n": 5
}
]
},
{
"index": "61",
"var": [
{
"a": "hero",
"t": "24004",
"n": 5
}
]
},
{
"index": "65",
"var": [
{
"a": "hero",
"t": "34006",
"n": 5
}
]
},
{
"index": "66",
"var": [
{
"a": "hero",
"t": "24003",
"n": 5
}
]
},
{
"index": "67",
"var": [
{
"a": "item",
"t": "10004",
"n": 5
}
]
},
{
"index": "68",
"var": [
{
"a": "hero",
"t": "43901",
"n": 5
}
]
},
{
"index": "69",
"var": [
{
"a": "hero",
"t": "43902",
"n": 5
}
]
},
{
"index": "70",
"var": [
{
"a": "hero",
"t": "43903",
"n": 5
}
]
},
{
"index": "71",
"var": [
{
"a": "hero",
"t": "14003",
"n": 5
}
]
},
{
"index": "72",
"var": [
{
"a": "hero",
"t": "24002",
"n": 5
}
]
},
{
"index": "73",
"var": [
{
"a": "hero",
"t": "15005",
"n": 5
}
]
},
{
"index": "74",
"var": [
{
"a": "hero",
"t": "35003",
"n": 5
}
]
}
]

View File

@ -132,7 +132,7 @@
"id": "10004",
"name": {
"key": "itemname_10004",
"text": "声波自选箱"
"text": "金币自选箱"
},
"usetype": 4,
"color": 4,
@ -168,7 +168,7 @@
"synthetize_deplete": [],
"tipstxt": {
"key": "itemtipstxt_10004",
"text": "声波自选箱不足"
"text": "金币自选箱不足"
}
},
{
@ -777,7 +777,7 @@
"id": "30001",
"name": {
"key": "itemname_30001",
"text": "普通招募券"
"text": "时空石"
},
"usetype": 3,
"color": 5,
@ -798,23 +798,23 @@
"star": 0,
"race": 0,
"img": "wp_icon_10009",
"ico": "wp_icon_10009",
"ico": "wp_icon_10019",
"intr": {
"key": "itemdesc_30001",
"text": "可以用于普通招募招募英雄"
"text": "可以用于招募英雄"
},
"sale": [],
"synthetize_deplete": [],
"tipstxt": {
"key": "itemtipstxt_30001",
"text": "普通招募券不足"
"text": "时空石不足"
}
},
{
"id": "30002",
"name": {
"key": "itemname_30002",
"text": "阵营1招募券"
"text": "奥术石"
},
"usetype": 3,
"color": 5,
@ -835,23 +835,23 @@
"star": 0,
"race": 0,
"img": "wp_icon_10010",
"ico": "wp_icon_10010",
"ico": "wp_icon_10020",
"intr": {
"key": "itemdesc_30002",
"text": "可以用于阵营1招募英雄"
"text": "可以用于奥术阵营招募英雄"
},
"sale": [],
"synthetize_deplete": [],
"tipstxt": {
"key": "itemtipstxt_30002",
"text": "阵营1招募券不足"
"text": "奥术石不足"
}
},
{
"id": "30003",
"name": {
"key": "itemname_30003",
"text": "阵营2招募券"
"text": "科技石"
},
"usetype": 3,
"color": 5,
@ -872,23 +872,23 @@
"star": 0,
"race": 0,
"img": "wp_icon_10011",
"ico": "wp_icon_10011",
"ico": "wp_icon_10021",
"intr": {
"key": "itemdesc_30003",
"text": "可以用于阵营2招募英雄"
"text": "可以用于科技阵营招募英雄"
},
"sale": [],
"synthetize_deplete": [],
"tipstxt": {
"key": "itemtipstxt_30003",
"text": "阵营2招募券不足"
"text": "科技石不足"
}
},
{
"id": "30004",
"name": {
"key": "itemname_30004",
"text": "阵营3招募券"
"text": "自然石"
},
"usetype": 3,
"color": 5,
@ -909,23 +909,23 @@
"star": 0,
"race": 0,
"img": "wp_icon_10012",
"ico": "wp_icon_10012",
"ico": "wp_icon_10022",
"intr": {
"key": "itemdesc_30004",
"text": "可以用于阵营3招募英雄"
"text": "可以用于自然阵营招募英雄"
},
"sale": [],
"synthetize_deplete": [],
"tipstxt": {
"key": "itemtipstxt_30004",
"text": "阵营3招募券不足"
"text": "自然石不足"
}
},
{
"id": "30005",
"name": {
"key": "itemname_30005",
"text": "阵营4招募券"
"text": "光耀石"
},
"usetype": 3,
"color": 5,
@ -946,23 +946,23 @@
"star": 0,
"race": 0,
"img": "wp_icon_10013",
"ico": "wp_icon_10013",
"ico": "wp_icon_10023",
"intr": {
"key": "itemdesc_30005",
"text": "可以用于阵营4招募英雄"
"text": "可以用于光耀阵营招募英雄"
},
"sale": [],
"synthetize_deplete": [],
"tipstxt": {
"key": "itemtipstxt_30005",
"text": "阵营4招募券不足"
"text": "光耀石不足"
}
},
{
"id": "50001",
"name": {
"key": "itemname_50001",
"text": "闪耀声波-低级"
"text": "奥术美食-低级"
},
"usetype": 8,
"color": 3,
@ -971,7 +971,7 @@
"special_type": 0,
"time": 0,
"effects": "",
"box_id": 50005,
"box_id": 0,
"synthetize_num": 5,
"access": [
109
@ -982,11 +982,11 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10013",
"ico": "wp_icon_10013",
"img": "wp_icon_10031",
"ico": "wp_icon_10031",
"intr": {
"key": "itemdesc_50001",
"text": "把它放在背包里会带来好运"
"text": "食用后可以提升奥术系英雄的觉醒等级"
},
"sale": [
{
@ -1004,14 +1004,14 @@
],
"tipstxt": {
"key": "itemtipstxt_50001",
"text": "闪耀声波-低级不足"
"text": "奥术美食-低级不足"
}
},
{
"id": "50002",
"name": {
"key": "itemname_50002",
"text": "灼热声波-低级"
"text": "科技美食-低级"
},
"usetype": 8,
"color": 3,
@ -1020,7 +1020,7 @@
"special_type": 0,
"time": 0,
"effects": "",
"box_id": 50006,
"box_id": 0,
"synthetize_num": 5,
"access": [
109
@ -1031,11 +1031,11 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10014",
"ico": "wp_icon_10014",
"img": "wp_icon_10032",
"ico": "wp_icon_10032",
"intr": {
"key": "itemdesc_50002",
"text": "你登录了游戏就是冒险家,就会获得这个勋章"
"text": "食用后可以提升科技系英雄的觉醒等级"
},
"sale": [
{
@ -1053,14 +1053,14 @@
],
"tipstxt": {
"key": "itemtipstxt_50002",
"text": "灼热声波-低级不足"
"text": "科技美食-低级不足"
}
},
{
"id": "50003",
"name": {
"key": "itemname_50003",
"text": "呼啸声波-低级"
"text": "自然美食-低级"
},
"usetype": 8,
"color": 3,
@ -1069,7 +1069,7 @@
"special_type": 0,
"time": 0,
"effects": "",
"box_id": 50007,
"box_id": 0,
"synthetize_num": 5,
"access": [
109
@ -1080,11 +1080,11 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10015",
"ico": "wp_icon_10015",
"img": "wp_icon_10033",
"ico": "wp_icon_10033",
"intr": {
"key": "itemdesc_50003",
"text": "比幸运草更幸运"
"text": "食用后可以提升自然系英雄的觉醒等级"
},
"sale": [
{
@ -1102,14 +1102,14 @@
],
"tipstxt": {
"key": "itemtipstxt_50003",
"text": "呼啸声波-低级不足"
"text": "自然美食-低级不足"
}
},
{
"id": "50004",
"name": {
"key": "itemname_50004",
"text": "涌动声波-低级"
"text": "光耀美食-低级"
},
"usetype": 8,
"color": 3,
@ -1118,7 +1118,7 @@
"special_type": 0,
"time": 0,
"effects": "",
"box_id": 50008,
"box_id": 0,
"synthetize_num": 5,
"access": [
109
@ -1129,11 +1129,11 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10016",
"ico": "wp_icon_10016",
"img": "wp_icon_10034",
"ico": "wp_icon_10034",
"intr": {
"key": "itemdesc_50004",
"text": "钻石是人造的,所以不能用来买商城的商品"
"text": "食用后可以提升光耀系英雄的觉醒等级"
},
"sale": [
{
@ -1151,14 +1151,14 @@
],
"tipstxt": {
"key": "itemtipstxt_50004",
"text": "涌动声波-低级不足"
"text": "光耀美食-低级不足"
}
},
{
"id": "50005",
"name": {
"key": "itemname_50005",
"text": "闪耀声波-中级"
"text": "奥术美食-中级"
},
"usetype": 8,
"color": 4,
@ -1167,7 +1167,7 @@
"special_type": 0,
"time": 0,
"effects": "",
"box_id": 50009,
"box_id": 0,
"synthetize_num": 5,
"access": [
109
@ -1178,11 +1178,11 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10013",
"ico": "wp_icon_10013",
"img": "wp_icon_10031",
"ico": "wp_icon_10031",
"intr": {
"key": "itemdesc_50005",
"text": "把它放在背包里会带来好运"
"text": "食用后可以提升奥术系英雄的觉醒等级"
},
"sale": [
{
@ -1200,14 +1200,14 @@
],
"tipstxt": {
"key": "itemtipstxt_50005",
"text": "闪耀声波-中级不足"
"text": "奥术美食-中级不足"
}
},
{
"id": "50006",
"name": {
"key": "itemname_50006",
"text": "灼热声波-中级"
"text": "科技美食-中级"
},
"usetype": 8,
"color": 4,
@ -1216,7 +1216,7 @@
"special_type": 0,
"time": 0,
"effects": "",
"box_id": 50010,
"box_id": 0,
"synthetize_num": 5,
"access": [
109
@ -1227,11 +1227,11 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10014",
"ico": "wp_icon_10014",
"img": "wp_icon_10032",
"ico": "wp_icon_10032",
"intr": {
"key": "itemdesc_50006",
"text": "你登录了游戏就是冒险家,就会获得这个勋章"
"text": "食用后可以提升科技系英雄的觉醒等级"
},
"sale": [
{
@ -1249,14 +1249,14 @@
],
"tipstxt": {
"key": "itemtipstxt_50006",
"text": "灼热声波-中级不足"
"text": "科技美食-中级不足"
}
},
{
"id": "50007",
"name": {
"key": "itemname_50007",
"text": "呼啸声波-中级"
"text": "自然美食-中级"
},
"usetype": 8,
"color": 4,
@ -1265,7 +1265,7 @@
"special_type": 0,
"time": 0,
"effects": "",
"box_id": 50011,
"box_id": 0,
"synthetize_num": 5,
"access": [
109
@ -1276,11 +1276,11 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10015",
"ico": "wp_icon_10015",
"img": "wp_icon_10033",
"ico": "wp_icon_10033",
"intr": {
"key": "itemdesc_50007",
"text": "比幸运草更幸运"
"text": "食用后可以提升自然系英雄的觉醒等级"
},
"sale": [
{
@ -1298,14 +1298,14 @@
],
"tipstxt": {
"key": "itemtipstxt_50007",
"text": "呼啸声波-中级不足"
"text": "自然美食-中级不足"
}
},
{
"id": "50008",
"name": {
"key": "itemname_50008",
"text": "涌动声波-中级"
"text": "光耀美食-中级"
},
"usetype": 8,
"color": 4,
@ -1314,7 +1314,7 @@
"special_type": 0,
"time": 0,
"effects": "",
"box_id": 50012,
"box_id": 0,
"synthetize_num": 5,
"access": [
109
@ -1325,11 +1325,11 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10016",
"ico": "wp_icon_10016",
"img": "wp_icon_10034",
"ico": "wp_icon_10034",
"intr": {
"key": "itemdesc_50008",
"text": "钻石是人造的,所以不能用来买商城的商品"
"text": "食用后可以提升光耀系英雄的觉醒等级"
},
"sale": [
{
@ -1347,14 +1347,14 @@
],
"tipstxt": {
"key": "itemtipstxt_50008",
"text": "涌动声波-中级不足"
"text": "光耀美食-中级不足"
}
},
{
"id": "50009",
"name": {
"key": "itemname_50009",
"text": "闪耀声波-高级"
"text": "奥术美食-高级"
},
"usetype": 8,
"color": 5,
@ -1374,11 +1374,11 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10013",
"ico": "wp_icon_10013",
"img": "wp_icon_10031",
"ico": "wp_icon_10031",
"intr": {
"key": "itemdesc_50009",
"text": "把它放在背包里会带来好运"
"text": "食用后可以提升奥术系英雄的觉醒等级"
},
"sale": [
{
@ -1390,14 +1390,14 @@
"synthetize_deplete": [],
"tipstxt": {
"key": "itemtipstxt_50009",
"text": "闪耀声波-高级不足"
"text": "奥术美食-高级不足"
}
},
{
"id": "50010",
"name": {
"key": "itemname_50010",
"text": "灼热声波-高级"
"text": "科技美食-高级"
},
"usetype": 8,
"color": 5,
@ -1417,11 +1417,11 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10014",
"ico": "wp_icon_10014",
"img": "wp_icon_10032",
"ico": "wp_icon_10032",
"intr": {
"key": "itemdesc_50010",
"text": "你登录了游戏就是冒险家,就会获得这个勋章"
"text": "食用后可以提升科技系英雄的觉醒等级"
},
"sale": [
{
@ -1433,14 +1433,14 @@
"synthetize_deplete": [],
"tipstxt": {
"key": "itemtipstxt_50010",
"text": "灼热声波-高级不足"
"text": "科技美食-高级不足"
}
},
{
"id": "50011",
"name": {
"key": "itemname_50011",
"text": "呼啸声波-高级"
"text": "自然美食-高级"
},
"usetype": 8,
"color": 5,
@ -1460,11 +1460,11 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10015",
"ico": "wp_icon_10015",
"img": "wp_icon_10033",
"ico": "wp_icon_10033",
"intr": {
"key": "itemdesc_50011",
"text": "比幸运草更幸运"
"text": "食用后可以提升自然系英雄的觉醒等级"
},
"sale": [
{
@ -1476,14 +1476,14 @@
"synthetize_deplete": [],
"tipstxt": {
"key": "itemtipstxt_50011",
"text": "呼啸声波-高级不足"
"text": "自然美食-高级不足"
}
},
{
"id": "50012",
"name": {
"key": "itemname_50012",
"text": "涌动声波-高级"
"text": "光耀美食-高级"
},
"usetype": 8,
"color": 5,
@ -1503,11 +1503,11 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10016",
"ico": "wp_icon_10016",
"img": "wp_icon_10034",
"ico": "wp_icon_10034",
"intr": {
"key": "itemdesc_50012",
"text": "钻石是人造的,所以不能用来买商城的商品"
"text": "食用后可以提升光耀系英雄的觉醒等级"
},
"sale": [
{
@ -1519,7 +1519,7 @@
"synthetize_deplete": [],
"tipstxt": {
"key": "itemtipstxt_50012",
"text": "涌动声波-高级不足"
"text": "光耀美食-高级不足"
}
},
{
@ -1546,8 +1546,8 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10009",
"ico": "wp_icon_10009",
"img": "wp_icon_10029",
"ico": "wp_icon_10029",
"intr": {
"key": "itemdesc_60001",
"text": "可以任选一件5星装备"
@ -1583,8 +1583,8 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10009",
"ico": "wp_icon_10009",
"img": "wp_icon_10029",
"ico": "wp_icon_10029",
"intr": {
"key": "itemdesc_60002",
"text": "可以随机获得一件5星装备"
@ -1620,8 +1620,8 @@
"isani": 0,
"star": 0,
"race": 0,
"img": "wp_icon_10009",
"ico": "wp_icon_10009",
"img": "wp_icon_10030",
"ico": "wp_icon_10030",
"intr": {
"key": "itemdesc_60003",
"text": "可以获得一套5星装备"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -37,7 +37,7 @@
"id": "shop",
"name": {
"key": "opencond_name_10003",
"text": "商店"
"text": "购物"
},
"main": 1,
"optional": "",
@ -67,6 +67,57 @@
},
"uiid": 0
},
{
"id": "mall",
"name": {
"key": "opencond_name_10003",
"text": "商城"
},
"main": 999,
"optional": "",
"wkqbx": 2,
"kqbx": 0,
"img": "zc_icon_01",
"prompt": {
"key": "opencond_prompt_mall",
"text": "功能暂未开启"
},
"uiid": 0
},
{
"id": "rdtask",
"name": {
"key": "opencond_name_10003",
"text": "随机任务总览"
},
"main": 1,
"optional": "",
"wkqbx": 0,
"kqbx": 0,
"img": "zc_icon_01",
"prompt": {
"key": "opencond_prompt_rdtask",
"text": "功能暂未开启"
},
"uiid": 0
},
{
"id": "currency",
"name": {
"key": "opencond_name_10003",
"text": "货币栏"
},
"main": 999,
"optional": "",
"wkqbx": 2,
"kqbx": 0,
"img": "zc_icon_01",
"prompt": {
"key": "opencond_prompt_currency",
"text": "功能暂未开启"
},
"uiid": 0
},
{
"id": "alliance",
"name": {

View File

@ -4,7 +4,7 @@
"group": 1,
"subgroup": 0,
"type": 2,
"preTid": 0,
"preTid": 100104,
"condition": [
104
],
@ -79,6 +79,19 @@
1008
]
},
{
"id": 100200,
"group": 3,
"subgroup": 0,
"type": 2,
"preTid": 100104,
"condition": [
0
],
"sidequest": [
2035
]
},
{
"id": 100201,
"group": 2,
@ -212,9 +225,9 @@
0
],
"sidequest": [
2016,
2017,
2018
2036,
2037,
2038
]
},
{
@ -227,7 +240,9 @@
0
],
"sidequest": [
2019
2016,
2017,
2018
]
},
{
@ -240,7 +255,7 @@
0
],
"sidequest": [
2020
2019
]
},
{
@ -253,9 +268,7 @@
0
],
"sidequest": [
2021,
2022,
2023
2020
]
},
{
@ -268,9 +281,9 @@
0
],
"sidequest": [
2024,
2025,
2026
2021,
2022,
2023
]
},
{
@ -283,9 +296,9 @@
0
],
"sidequest": [
2027,
2028,
2029
2024,
2025,
2026
]
},
{
@ -297,6 +310,21 @@
"condition": [
0
],
"sidequest": [
2027,
2028,
2029
]
},
{
"id": 100217,
"group": 2,
"subgroup": 0,
"type": 2,
"preTid": 100216,
"condition": [
0
],
"sidequest": [
2030,
2031,

View File

@ -217,7 +217,7 @@
"needItem": [
0
],
"nextTid": 100211
"nextTid": 100212
},
{
"id": 200011,
@ -227,7 +227,7 @@
"needItem": [
0
],
"nextTid": 100213
"nextTid": 100214
},
{
"id": 200012,
@ -287,7 +287,7 @@
"needItem": [
0
],
"nextTid": 100212
"nextTid": 100213
},
{
"id": 200018,
@ -297,7 +297,7 @@
"needItem": [
0
],
"nextTid": 100213
"nextTid": 100214
},
{
"id": 200019,
@ -307,7 +307,7 @@
"needItem": [
0
],
"nextTid": 100215
"nextTid": 100216
},
{
"id": 200020,
@ -327,6 +327,26 @@
"needItem": [
0
],
"nextTid": 100216
"nextTid": 100217
},
{
"id": 200022,
"num": 1,
"preTid": 0,
"gotoLevel": 0,
"needItem": [
0
],
"nextTid": -1
},
{
"id": 200023,
"num": 1,
"preTid": 0,
"gotoLevel": 0,
"needItem": [
0
],
"nextTid": 100211
}
]

View File

@ -37,8 +37,8 @@
"datatype": 2,
"type": 4,
"inited": [],
"data1": 25001,
"data2": 20,
"data1": 25004,
"data2": 10,
"data3": 0,
"data4": 0,
"data5": 0
@ -554,8 +554,8 @@
"type": 46,
"inited": [],
"data1": 1,
"data2": 1,
"data3": 1,
"data2": 6,
"data3": 0,
"data4": 0,
"data5": 0
},
@ -718,7 +718,7 @@
"datatype": 2,
"type": 61,
"inited": [],
"data1": 101,
"data1": 109,
"data2": 0,
"data3": 0,
"data4": 0,
@ -828,7 +828,799 @@
"datatype": 2,
"type": 70,
"inited": [],
"data1": 101,
"data1": 109,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10001,
"datatype": 2,
"type": 24,
"inited": [],
"data1": 1,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10002,
"datatype": 2,
"type": 24,
"inited": [],
"data1": 5,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10003,
"datatype": 2,
"type": 24,
"inited": [],
"data1": 10,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10004,
"datatype": 2,
"type": 24,
"inited": [],
"data1": 20,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10005,
"datatype": 2,
"type": 24,
"inited": [],
"data1": 50,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10006,
"datatype": 2,
"type": 24,
"inited": [],
"data1": 100,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10007,
"datatype": 2,
"type": 24,
"inited": [],
"data1": 200,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10008,
"datatype": 2,
"type": 24,
"inited": [],
"data1": 300,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10009,
"datatype": 2,
"type": 24,
"inited": [],
"data1": 500,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10010,
"datatype": 2,
"type": 24,
"inited": [],
"data1": 1000,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10101,
"datatype": 2,
"type": 7,
"inited": [],
"data1": 1,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10201,
"datatype": 2,
"type": 18,
"inited": [],
"data1": 1,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10202,
"datatype": 2,
"type": 18,
"inited": [],
"data1": 5,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10203,
"datatype": 2,
"type": 18,
"inited": [],
"data1": 10,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10204,
"datatype": 2,
"type": 18,
"inited": [],
"data1": 20,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10205,
"datatype": 2,
"type": 18,
"inited": [],
"data1": 50,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10206,
"datatype": 2,
"type": 18,
"inited": [],
"data1": 100,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10207,
"datatype": 2,
"type": 18,
"inited": [],
"data1": 200,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10208,
"datatype": 2,
"type": 18,
"inited": [],
"data1": 300,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10209,
"datatype": 2,
"type": 18,
"inited": [],
"data1": 500,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10210,
"datatype": 2,
"type": 18,
"inited": [],
"data1": 1000,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10301,
"datatype": 2,
"type": 18,
"inited": [],
"data1": 1,
"data2": 5,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10302,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 5,
"data2": 5,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10303,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 10,
"data2": 5,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10304,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 20,
"data2": 5,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10305,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 50,
"data2": 5,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10306,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 100,
"data2": 5,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10307,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 200,
"data2": 5,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10308,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 300,
"data2": 5,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10309,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 500,
"data2": 5,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10310,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 1000,
"data2": 5,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10401,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 1,
"data2": 6,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10402,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 5,
"data2": 6,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10403,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 10,
"data2": 6,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10404,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 20,
"data2": 6,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10405,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 50,
"data2": 6,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10406,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 100,
"data2": 6,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10407,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 200,
"data2": 6,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10408,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 300,
"data2": 6,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10409,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 500,
"data2": 6,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10410,
"datatype": 2,
"type": 50,
"inited": [],
"data1": 1000,
"data2": 6,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10501,
"datatype": 2,
"type": 58,
"inited": [],
"data1": 1,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10502,
"datatype": 2,
"type": 58,
"inited": [],
"data1": 5,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10503,
"datatype": 2,
"type": 58,
"inited": [],
"data1": 10,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10504,
"datatype": 2,
"type": 58,
"inited": [],
"data1": 20,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10505,
"datatype": 2,
"type": 58,
"inited": [],
"data1": 30,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10506,
"datatype": 2,
"type": 58,
"inited": [],
"data1": 50,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10507,
"datatype": 2,
"type": 58,
"inited": [],
"data1": 70,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10508,
"datatype": 2,
"type": 58,
"inited": [],
"data1": 100,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10601,
"datatype": 2,
"type": 62,
"inited": [],
"data1": 1,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10602,
"datatype": 2,
"type": 62,
"inited": [],
"data1": 5,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10603,
"datatype": 2,
"type": 62,
"inited": [],
"data1": 99,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10701,
"datatype": 2,
"type": 64,
"inited": [],
"data1": 1,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10702,
"datatype": 2,
"type": 64,
"inited": [],
"data1": 5,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10703,
"datatype": 2,
"type": 64,
"inited": [],
"data1": 10,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10704,
"datatype": 2,
"type": 64,
"inited": [],
"data1": 20,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10705,
"datatype": 2,
"type": 64,
"inited": [],
"data1": 50,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10706,
"datatype": 2,
"type": 64,
"inited": [],
"data1": 100,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10707,
"datatype": 2,
"type": 64,
"inited": [],
"data1": 200,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10708,
"datatype": 2,
"type": 64,
"inited": [],
"data1": 300,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10709,
"datatype": 2,
"type": 64,
"inited": [],
"data1": 500,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10710,
"datatype": 2,
"type": 64,
"inited": [],
"data1": 1000,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10801,
"datatype": 2,
"type": 8,
"inited": [],
"data1": 1,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10802,
"datatype": 2,
"type": 8,
"inited": [],
"data1": 5,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10803,
"datatype": 2,
"type": 8,
"inited": [],
"data1": 10,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10804,
"datatype": 2,
"type": 8,
"inited": [],
"data1": 20,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10805,
"datatype": 2,
"type": 8,
"inited": [],
"data1": 50,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10806,
"datatype": 2,
"type": 8,
"inited": [],
"data1": 100,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10807,
"datatype": 2,
"type": 8,
"inited": [],
"data1": 200,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10808,
"datatype": 2,
"type": 8,
"inited": [],
"data1": 300,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10809,
"datatype": 2,
"type": 8,
"inited": [],
"data1": 500,
"data2": 0,
"data3": 0,
"data4": 0,
"data5": 0
},
{
"id": 10810,
"datatype": 2,
"type": 8,
"inited": [],
"data1": 1000,
"data2": 0,
"data3": 0,
"data4": 0,

View File

@ -471,7 +471,7 @@
20004
],
"endTid": [
171
-1
],
"storyEnd": 0,
"reward": [
@ -569,7 +569,7 @@
"EntityInteractive": [
false
],
"modelaction": "",
"modelaction": "Enter",
"rotation": {
"x": 0,
"y": -90,
@ -588,7 +588,7 @@
"endTid": [
-1
],
"storyEnd": 311,
"storyEnd": 0,
"reward": [
{
"ChooseId": 20008,
@ -693,7 +693,7 @@
200015
],
"endTid": [
-1
118
],
"storyEnd": 0,
"reward": [],
@ -758,12 +758,11 @@
200015
],
"endTid": [
152,
146
104
],
"storyEnd": 317,
"reward": [],
"nextTid": 100210,
"nextTid": 100211,
"CD": 0
},
{
@ -863,13 +862,13 @@
"Reward": [
{
"a": "hero",
"t": "45921",
"n": 1
"t": "43901",
"n": 5
}
]
}
],
"nextTid": 100211,
"nextTid": 100212,
"CD": 0
},
{
@ -962,9 +961,9 @@
"endTid": [
158
],
"storyEnd": 322,
"storyEnd": 0,
"reward": [],
"nextTid": 100212,
"nextTid": 100213,
"CD": 0
},
{
@ -997,7 +996,7 @@
],
"storyEnd": 322,
"reward": [],
"nextTid": 100213,
"nextTid": 100214,
"CD": 0
},
{
@ -1045,7 +1044,7 @@
]
}
],
"nextTid": 100214,
"nextTid": 100215,
"CD": 0
},
{
@ -1141,7 +1140,7 @@
],
"storyEnd": 0,
"reward": [],
"nextTid": 100215,
"nextTid": 100216,
"CD": 0
},
{
@ -1228,12 +1227,9 @@
"enableAi": false,
"boxreplace": "",
"timeline": "",
"chooseId": [
200021,
200020
],
"chooseId": [],
"endTid": [
106
-1
],
"storyEnd": 0,
"reward": [],
@ -1293,13 +1289,16 @@
"enableAi": false,
"boxreplace": "",
"timeline": "",
"chooseId": [],
"chooseId": [
200021,
200020
],
"endTid": [
-1
106
],
"storyEnd": 329,
"reward": [],
"nextTid": 100216,
"nextTid": 100217,
"CD": 0
},
{
@ -1438,7 +1437,7 @@
"EntityChange": [],
"EntityStateChange": [],
"EntityInteractive": [],
"modelaction": "Enter",
"modelaction": "",
"rotation": {
"x": 0,
"y": -90,
@ -1458,5 +1457,134 @@
"reward": [],
"nextTid": 100207,
"CD": 0
},
{
"id": 2035,
"objType": 1,
"location": "middle",
"point": "model_07",
"storyBegin": 999,
"Entity": [],
"EntityChange": [],
"EntityStateChange": [],
"EntityInteractive": [],
"modelaction": "Enter",
"rotation": {
"x": 0,
"y": -180,
"z": 0
},
"modelstate": 0,
"popup": "",
"special": "",
"enableAi": false,
"boxreplace": "",
"timeline": "",
"chooseId": [
200022
],
"endTid": [
-1
],
"storyEnd": 0,
"reward": [],
"nextTid": 0,
"CD": 0
},
{
"id": 2036,
"objType": 1,
"location": "middle",
"point": "model_07",
"storyBegin": 338,
"Entity": [],
"EntityChange": [],
"EntityStateChange": [],
"EntityInteractive": [],
"modelaction": "",
"rotation": {
"x": 0,
"y": -180,
"z": 0
},
"modelstate": 0,
"popup": "",
"special": "",
"enableAi": false,
"boxreplace": "",
"timeline": "",
"chooseId": [
200023,
200015
],
"endTid": [
146
],
"storyEnd": 0,
"reward": [],
"nextTid": 0,
"CD": 0
},
{
"id": 2037,
"objType": 1,
"location": "middle",
"point": "model_02",
"storyBegin": 339,
"Entity": [],
"EntityChange": [],
"EntityStateChange": [],
"EntityInteractive": [],
"modelaction": "",
"rotation": {
"x": 0,
"y": -90,
"z": 0
},
"modelstate": 0,
"popup": "",
"special": "",
"enableAi": false,
"boxreplace": "",
"timeline": "",
"chooseId": [],
"endTid": [
-1
],
"storyEnd": 0,
"reward": [],
"nextTid": -1,
"CD": 0
},
{
"id": 2038,
"objType": 1,
"location": "middle",
"point": "model_03",
"storyBegin": 340,
"Entity": [],
"EntityChange": [],
"EntityStateChange": [],
"EntityInteractive": [],
"modelaction": "",
"rotation": {
"x": 0,
"y": 90,
"z": 0
},
"modelstate": 0,
"popup": "",
"special": "",
"enableAi": false,
"boxreplace": "",
"timeline": "",
"chooseId": [],
"endTid": [
-1
],
"storyEnd": 0,
"reward": [],
"nextTid": -1,
"CD": 0
}
]

View File

@ -29,13 +29,18 @@
{
"a": "attr",
"t": "diamond",
"n": 20
"n": 50
}
],
"shopitem": [
10001,
10002,
10003
10001,
10001,
10001,
10001,
10001,
10001,
10001
]
},
{
@ -43,7 +48,7 @@
"tab": 2,
"shopname": {
"key": "shop_2",
"text": "钻石商店"
"text": "友情商店"
},
"upper_shop": {
"key": "",
@ -52,7 +57,7 @@
"needshow": [
{
"a": "attr",
"t": "gold",
"t": "friend",
"n": 1
},
{
@ -63,27 +68,10 @@
],
"rtype": 2,
"rtime": 1,
"rnum": 5,
"rneed": [
{
"a": "attr",
"t": "diamond",
"n": 20
}
],
"rnum": -1,
"rneed": [],
"shopitem": [
20001,
20002,
20003,
20004,
20005,
20006,
20007,
20008,
20009,
20010,
20011,
20012
20001
]
},
{
@ -114,7 +102,9 @@
"rnum": -1,
"rneed": [],
"shopitem": [
10005
30001,
30002,
30003
]
},
{
@ -145,39 +135,8 @@
"rnum": -1,
"rneed": [],
"shopitem": [
10006
]
},
{
"shopid": 5,
"tab": 5,
"shopname": {
"key": "shop_5",
"text": "联盟商店"
},
"upper_shop": {
"key": "shop_title1",
"text": "玩法商店"
},
"needshow": [
{
"a": "attr",
"t": "gold",
"n": 1
},
{
"a": "attr",
"t": "diamond",
"n": 1
}
],
"rtype": 2,
"rtime": 14,
"rnum": -1,
"rneed": [],
"shopitem": [
10007,
10008
40001,
40002
]
}
]

File diff suppressed because it is too large Load Diff

View File

@ -2692,10 +2692,10 @@
"Argu": [
1,
4,
300,
150,
1,
5,
500
250
],
"FollowSK": [],
"SucFollowSK": [
@ -2736,10 +2736,10 @@
"Argu": [
1,
4,
300,
150,
1,
5,
600
300
],
"FollowSK": [],
"SucFollowSK": [
@ -2780,10 +2780,10 @@
"Argu": [
1,
4,
300,
150,
1,
5,
600
300
],
"FollowSK": [],
"SucFollowSK": [
@ -2824,10 +2824,10 @@
"Argu": [
1,
4,
300,
150,
1,
5,
700
350
],
"FollowSK": [],
"SucFollowSK": [
@ -2868,10 +2868,10 @@
"Argu": [
1,
4,
300,
150,
1,
5,
700
350
],
"FollowSK": [],
"SucFollowSK": [
@ -3492,10 +3492,10 @@
"Argu": [
1,
4,
800,
400,
1,
5,
1000
500
],
"FollowSK": [],
"SucFollowSK": [],
@ -3554,10 +3554,10 @@
"Argu": [
1,
4,
800,
400,
1,
5,
1100
550
],
"FollowSK": [],
"SucFollowSK": [],
@ -3576,10 +3576,10 @@
"Argu": [
1,
4,
800,
400,
1,
5,
1200
600
],
"FollowSK": [],
"SucFollowSK": [],
@ -3598,10 +3598,10 @@
"Argu": [
1,
4,
800,
400,
1,
5,
1400
700
],
"FollowSK": [],
"SucFollowSK": [],
@ -9176,10 +9176,10 @@
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"ExecuteCnt": 3,
"Type": 1,
"Argu": [
3,
1,
4,
500
],
@ -9214,10 +9214,10 @@
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"ExecuteCnt": 3,
"Type": 1,
"Argu": [
3,
1,
4,
550
],
@ -9252,10 +9252,10 @@
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"ExecuteCnt": 3,
"Type": 1,
"Argu": [
3,
1,
4,
550
],
@ -9290,10 +9290,10 @@
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"ExecuteCnt": 3,
"Type": 1,
"Argu": [
3,
1,
4,
600
],
@ -9891,5 +9891,281 @@
"SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251002111,
"EmitPR": 1000,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"Type": 1,
"Argu": [
1,
4,
1000
],
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251002211,
"EmitPR": 1000,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"Type": 1,
"Argu": [
1,
4,
1200
],
"FollowSK": [],
"SucFollowSK": [
251002212
],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251002212,
"EmitPR": 1000,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"Type": 3,
"Argu": [
390001007,
500,
2,
1
],
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251003111,
"EmitPR": 1000,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"Type": 1,
"Argu": [
1,
4,
1000
],
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251003211,
"EmitPR": 1000,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"Type": 1,
"Argu": [
1,
4,
1200
],
"FollowSK": [],
"SucFollowSK": [
251003212
],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251003212,
"EmitPR": 1000,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"Type": 3,
"Argu": [
390001105,
250,
1,
1
],
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251004111,
"EmitPR": 1000,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 2,
"Type": 1,
"Argu": [
1,
4,
500
],
"FollowSK": [],
"SucFollowSK": [
251005112
],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251004112,
"EmitPR": 1000,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"Type": 3,
"Argu": [
390001007,
200,
1
],
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251004211,
"EmitPR": 1000,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"Type": 1,
"Argu": [
1,
4,
1800
],
"FollowSK": [],
"SucFollowSK": [
251005212
],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251004212,
"EmitPR": 1000,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"Type": 3,
"Argu": [
390001006,
200,
2
],
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251005111,
"EmitPR": 1000,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 2,
"Type": 1,
"Argu": [
1,
4,
500
],
"FollowSK": [],
"SucFollowSK": [
251005112
],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251005112,
"EmitPR": 200,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"Type": 11,
"Argu": [
-200
],
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251005211,
"EmitPR": 1000,
"From": 2,
"Where": "",
"Order": "",
"Limit": 10,
"ExecuteCnt": 2,
"Type": 1,
"Argu": [
1,
4,
500
],
"FollowSK": [],
"SucFollowSK": [
251005212
],
"FailFollowSK": [],
"MustHit": false
},
{
"Id": 251005212,
"EmitPR": 1000,
"From": 4,
"Where": "",
"Order": "",
"Limit": 1,
"ExecuteCnt": 1,
"Type": 11,
"Argu": [
-100
],
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false
}
]

View File

@ -6963,5 +6963,205 @@
},
"buffid": [],
"map": ""
},
{
"id": 151002111,
"level": 1,
"MaxLV": 1,
"Name": {
"key": "skillname_151002111",
"text": "盾击"
},
"ico": "jn_icon_046",
"act": "Skill_1",
"Type": 1,
"CD": 1,
"Target": 2,
"ChildSkill": {
"Id": [
251002111
]
},
"Desc": {
"key": "skill_1510021111",
"text": "对敌方一个目标发起攻击造成攻击力100%的伤害"
},
"buffid": [],
"map": ""
},
{
"id": 151002211,
"level": 1,
"MaxLV": 1,
"Name": {
"key": "skillname_151002211",
"text": "力倾"
},
"ico": "jn_icon_047",
"act": "Skill_2",
"Type": 1,
"CD": 2,
"Target": 2,
"ChildSkill": {
"Id": [
251002211
]
},
"Desc": {
"key": "skill_1510022111",
"text": "对敌方一个目标发起攻击造成攻击力120%的伤害。并有50%概率附加2回合【防御下降】状态。"
},
"buffid": [],
"map": ""
},
{
"id": 151003111,
"level": 1,
"MaxLV": 1,
"Name": {
"key": "skillname_151003111",
"text": "攻守之势"
},
"ico": "jn_icon_048",
"act": "Skill_1",
"Type": 1,
"CD": 1,
"Target": 2,
"ChildSkill": {
"Id": [
251003111
]
},
"Desc": {
"key": "skill_1510031111",
"text": "对敌方一个目标发起攻击造成攻击力100%的伤害"
},
"buffid": [],
"map": ""
},
{
"id": 151003211,
"level": 1,
"MaxLV": 1,
"Name": {
"key": "skillname_151003211",
"text": "重枪冲击"
},
"ico": "jn_icon_049",
"act": "Skill_2",
"Type": 1,
"CD": 2,
"Target": 2,
"ChildSkill": {
"Id": [
251003211
]
},
"Desc": {
"key": "skill_1510032111",
"text": "对敌方一个目标发起攻击造成攻击力120%的伤害。并有25%概率附加1回合【眩晕】状态。"
},
"buffid": [],
"map": ""
},
{
"id": 151004111,
"level": 1,
"MaxLV": 1,
"Name": {
"key": "skillname_151004111",
"text": "野性之力"
},
"ico": "jn_icon_050",
"act": "Skill_1",
"Type": 1,
"CD": 1,
"Target": 2,
"ChildSkill": {
"Id": [
251004111
]
},
"Desc": {
"key": "skill_1510041111",
"text": "对敌方1个目标发起2段攻击每段可造成攻击力50%的伤害并有20%概率减少目标20%行动值。"
},
"buffid": [],
"map": ""
},
{
"id": 151004211,
"level": 1,
"MaxLV": 1,
"Name": {
"key": "skillname_151004211",
"text": "绝命上挑"
},
"ico": "jn_icon_051",
"act": "Skill_2",
"Type": 1,
"CD": 3,
"Target": 2,
"ChildSkill": {
"Id": [
251004211
]
},
"Desc": {
"key": "skill_1510042111",
"text": "对敌方全体发起2段攻击每段可造成攻击50%的伤害若发生暴击可使目标减少10%行动值。"
},
"buffid": [],
"map": ""
},
{
"id": 151005111,
"level": 1,
"MaxLV": 1,
"Name": {
"key": "skillname_151005111",
"text": "双重攻势"
},
"ico": "jn_icon_052",
"act": "Skill_1",
"Type": 1,
"CD": 1,
"Target": 2,
"ChildSkill": {
"Id": [
251005111
]
},
"Desc": {
"key": "skill_1510051111",
"text": "对敌方一个目标发起两段攻击每段造成攻击力75%的伤害"
},
"buffid": [],
"map": ""
},
{
"id": 151005211,
"level": 1,
"MaxLV": 1,
"Name": {
"key": "skillname_151005211",
"text": "力之回旋"
},
"ico": "jn_icon_053",
"act": "Skill_2",
"Type": 1,
"CD": 3,
"Target": 2,
"ChildSkill": {
"Id": [
251005211
]
},
"Desc": {
"key": "skill_1510052111",
"text": "对敌方1个目标发起攻击造成攻击力180%的伤害并附加2回合【攻击下降】状态。"
},
"buffid": [],
"map": ""
}
]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -87,7 +87,7 @@ const (
APP_TESTCASE_INTRO = "选择左侧的测试接口"
// toolbar
TOOLBAR_MONITOR = "监控"
TOOLBAR_MONITOR = "推送"
TOOLBAR_TESTER = "接口测试"
TOOLBAR_GEN = "Luban"
TOOLBAR_SEC = "密码器"

View File

@ -18,6 +18,8 @@ import (
"github.com/BabySid/gobase"
"github.com/Pallinder/go-randomdata"
"github.com/sirupsen/logrus"
"github.com/go-vgo/robotgo"
)
var (
@ -98,6 +100,10 @@ func (ui *MainWindowImpl) createWindowContainer() {
ui.at = newAppContainer(appRegister, ui.obs)
content := container.NewBorder(ui.tb.toolbar, ui.sb.widget, nil, ui.toys.widget, ui.at)
ui.w.SetContent(content)
// 屏幕最大
width, height := robotgo.GetScaleSize()
ui.w.Resize(fyne.NewSize(float32(width), float32(height)))
ui.w.CenterOnScreen()
ui.w.SetCloseIntercept(ui.quiteHandle)
}
@ -106,7 +112,13 @@ func (ui *MainWindowImpl) SetStatusMsg(msg string) {
}
func (ui *MainWindowImpl) quiteHandle() {
ui.app.Quit()
dialog.ShowConfirm("推出系统", "确定退出吗", func(b bool) {
if !b {
return
}
ui.app.Quit()
}, ui.w)
}
// CreateWindow ....

View File

@ -363,7 +363,7 @@ func (this *appGen) LazyInit(obs observer.Observer) error {
quesWin := fyne.CurrentApp().NewWindow("使用说明")
quesWin.SetContent(widget.NewRichTextFromMarkdown(
`
1. 更新excel文件
1. SVN更新excel文件
2. 配置Luban(已做可忽略)
3. 选择**生成类型**,单击生成
4. 选择要覆盖的文件
@ -475,6 +475,12 @@ func (f *fileList) changeItem(tmpDir, projectDir string) {
return
}
defer func() {
if len(tmpFiles) == 0 || len(f.cachedList.Items) == 0 {
showTip("没有任何变更的文件,请确定SVN拉取最新文件")
}
}()
projectFiles, err := ioutil.ReadDir(projectDir)
if err != nil {
logrus.Error(err)

View File

@ -21,7 +21,11 @@ func (this *RtaskDoitView) CreateView(t *model.TestCase) fyne.CanvasObject {
taskId := widget.NewEntry()
taskId.PlaceHolder = "任务ID"
subTaskId := widget.NewEntry()
subTaskId.PlaceHolder = "支线任务ID"
this.form.AppendItem(widget.NewFormItem("任务ID", taskId))
this.form.AppendItem(widget.NewFormItem("支线任务ID", subTaskId))
this.form.OnSubmit = func() {
if taskId.Text == "" {
@ -29,7 +33,8 @@ func (this *RtaskDoitView) CreateView(t *model.TestCase) fyne.CanvasObject {
return
}
if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.RtaskApplyReq{
RtaskId: cast.ToInt32(taskId.Text),
RtaskId: cast.ToInt32(taskId.Text),
RtaskSubId: cast.ToInt32(subTaskId.Text),
}); err != nil {
logrus.Error(err)
}

12
go.mod
View File

@ -44,11 +44,23 @@ require (
require (
github.com/BurntSushi/toml v1.2.0 // indirect
github.com/StackExchange/wmi v1.2.1 // indirect
github.com/go-vgo/robotgo v0.100.10 // indirect
github.com/jtolds/gls v4.20.0+incompatible // indirect
github.com/kr/fs v0.1.0 // indirect
github.com/lxn/win v0.0.0-20210218163916-a377121e959e // indirect
github.com/onsi/gomega v1.20.0 // indirect
github.com/otiai10/gosseract v2.2.1+incompatible // indirect
github.com/robotn/gohook v0.31.3 // indirect
github.com/robotn/xgb v0.0.0-20190912153532-2cb92d044934 // indirect
github.com/robotn/xgbutil v0.0.0-20190912154524-c861d6f87770 // indirect
github.com/rogpeppe/go-internal v1.8.1 // indirect
github.com/shirou/gopsutil v3.21.10+incompatible // indirect
github.com/smartystreets/assertions v1.2.0 // indirect
github.com/vcaesar/gops v0.21.3 // indirect
github.com/vcaesar/imgo v0.30.0 // indirect
github.com/vcaesar/keycode v0.10.0 // indirect
github.com/vcaesar/tt v0.20.0 // indirect
)
require (

29
go.sum
View File

@ -53,6 +53,8 @@ fyne.io/systray v1.10.1-0.20220621085403-9a2652634e93/go.mod h1:oM2AQqGJ1AMo4nNq
git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg=
github.com/BabySid/gobase v0.0.0-20220614103908-39ac0a583c02 h1:4VkwDX+9araWz3MeAx/3EAWuQTu+dYnJqBlYrk86i4k=
github.com/BabySid/gobase v0.0.0-20220614103908-39ac0a583c02/go.mod h1:psRlcjEywZdxNf9jp6IdYY7VcAsYPtcnLHYQ+dWG5uw=
github.com/BurntSushi/freetype-go v0.0.0-20160129220410-b763ddbfe298/go.mod h1:D+QujdIlUNfa0igpNMk6UIvlb6C252URs4yupRUV4lQ=
github.com/BurntSushi/graphics-go v0.0.0-20160129215708-b43f31a4a966/go.mod h1:Mid70uvE93zn9wgF92A/r5ixgnvX8Lh68fxp9KQBaI0=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=
@ -64,6 +66,8 @@ github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00
github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y=
github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=
github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
github.com/agiledragon/gomonkey/v2 v2.8.0 h1:u2K2nNGyk0ippzklz1CWalllEB9ptD+DtSXeCX5O000=
github.com/agiledragon/gomonkey/v2 v2.8.0/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY=
github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
@ -197,6 +201,7 @@ github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ping/ping v0.0.0-20211130115550-779d1e919534 h1:dhy9OQKGBh4zVXbjwbxxHjRxMJtLXj3zfgpBYQaR4Q4=
@ -221,6 +226,8 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
github.com/go-vgo/robotgo v0.100.10 h1:bZe7AslG6oq5ops1SWUxsPfM9Z3QQvlqfA3ezxLFNO4=
github.com/go-vgo/robotgo v0.100.10/go.mod h1:7QeIpSHX7bjeXWRPxvQeKSx9mHI+3l80Ahq+CQF0C68=
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY=
github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
@ -486,6 +493,8 @@ github.com/lucor/goinfo v0.0.0-20210802170112-c078a2b0f08b/go.mod h1:PRq09yoB+Q2
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
github.com/lxn/win v0.0.0-20210218163916-a377121e959e h1:H+t6A/QJMbhCSEH5rAuRxh+CtW96g0Or0Fxa9IKr4uc=
github.com/lxn/win v0.0.0-20210218163916-a377121e959e/go.mod h1:KxxjdtRkfNoYDCUP5ryK7XJJNTnpC8atvtmTheChOtk=
github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
@ -582,6 +591,8 @@ github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5h
github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q=
github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
github.com/otiai10/gosseract v2.2.1+incompatible h1:Ry5ltVdpdp4LAa2bMjsSJH34XHVOV7XMi41HtzL8X2I=
github.com/otiai10/gosseract v2.2.1+incompatible/go.mod h1:XrzWItCzCpFRZ35n3YtVTgq5bLAhFIkascoRo8G32QE=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
@ -629,6 +640,12 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5X
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
github.com/robotn/gohook v0.31.3 h1:kGX8iukJ9ensVRwRKnTtdojAMQOpa6KFnXDi4OA4RaI=
github.com/robotn/gohook v0.31.3/go.mod h1:wyGik0yb4iwCfJjDprtNkTyxkgQWuKoVPQ3hkz6+6js=
github.com/robotn/xgb v0.0.0-20190912153532-2cb92d044934 h1:2lhSR8N3T6I30q096DT7/5AKEIcf1vvnnWAmS0wfnNY=
github.com/robotn/xgb v0.0.0-20190912153532-2cb92d044934/go.mod h1:SxQhJskUJ4rleVU44YvnrdvxQr0tKy5SRSigBrCgyyQ=
github.com/robotn/xgbutil v0.0.0-20190912154524-c861d6f87770 h1:2uX8QRLkkxn2EpAQ6I3KhA79BkdRZfvugJUzJadiJwk=
github.com/robotn/xgbutil v0.0.0-20190912154524-c861d6f87770/go.mod h1:svkDXUDQjUiWzLrA0OZgHc4lbOts3C+uRfP6/yjwYnU=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
@ -659,6 +676,8 @@ github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAm
github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b/go.mod h1:/yeG0My1xr/u+HZrFQ1tOQQQQrOawfyMUH13ai5brBc=
github.com/sethvargo/go-password v0.2.0 h1:BTDl4CC/gjf/axHMaDQtw507ogrXLci6XRiLc7i/UHI=
github.com/sethvargo/go-password v0.2.0/go.mod h1:Ym4Mr9JXLBycr02MFuVQ/0JHidNetSgbzutTr3zsYXE=
github.com/shirou/gopsutil v3.21.10+incompatible h1:AL2kpVykjkqeN+MFe1WcwSBVUjGjvdU8/ubvCuXAjrU=
github.com/shirou/gopsutil v3.21.10+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/gopsutil/v3 v3.22.7 h1:flKnuCMfUUrO+oAvwAd6GKZgnPzr098VA/UJ14nhJd4=
github.com/shirou/gopsutil/v3 v3.22.7/go.mod h1:s648gW4IywYzUfE/KjXxUsqrqx/T2xO5VqOXxONeRfI=
github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY=
@ -780,6 +799,14 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fastrand v1.1.0 h1:f+5HkLW4rsgzdNoleUOB69hyT9IlD2ZQh9GyDMfb5G8=
github.com/valyala/fastrand v1.1.0/go.mod h1:HWqCzkrkg6QXT8V2EXWvXCoow7vLwOFN002oeRzjapQ=
github.com/vcaesar/gops v0.21.3 h1:VR7amkxVv9CQfsotkXrmMyT19dVuNTa1PM/oopJeIc0=
github.com/vcaesar/gops v0.21.3/go.mod h1:3e2EnlZTI9/44bqzRwkeZ3s0ZQwK2Cn4QPLx8Ii8Agk=
github.com/vcaesar/imgo v0.30.0 h1:ODQVX0EFJEh+WkKahCBtE0SqcDCIjl/kjiOplR0Ouh8=
github.com/vcaesar/imgo v0.30.0/go.mod h1:8TGnt5hjaMgwDByvMFIzUDSh5uSea4n1tAbSvnhvA6U=
github.com/vcaesar/keycode v0.10.0 h1:Qx5QE8ZXHyRyjoA2QOxBp25OKMKB+zxMVqm0FWGV0d4=
github.com/vcaesar/keycode v0.10.0/go.mod h1:JNlY7xbKsh+LAGfY2j4M3znVrGEm5W1R8s/Uv6BJcfQ=
github.com/vcaesar/tt v0.20.0 h1:9t2Ycb9RNHcP0WgQgIaRKJBB+FrRdejuaL6uWIHuoBA=
github.com/vcaesar/tt v0.20.0/go.mod h1:GHPxQYhn+7OgKakRusH7KJ0M5MhywoeLb8Fcffs/Gtg=
github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU=
github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM=
github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU=
@ -878,6 +905,7 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
golang.org/x/image v0.0.0-20220601225756-64ec528b34cd h1:9NbNcTg//wfC5JskFW4Z3sqwVnjmJKHxLAol1bW2qgw=
golang.org/x/image v0.0.0-20220601225756-64ec528b34cd/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY=
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@ -1047,6 +1075,7 @@ golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=

View File

@ -62,7 +62,10 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
if _hero.SameCount > 1 { //有堆叠的情况
// 克隆一个新的
_hero.SameCount -= 1
_hero.JuexProperty = map[string]int32{}
newHero := this.module.modelHero.CloneNewHero(_hero)
_hero.JuexProperty = map[string]int32{}
chanegCard = append(chanegCard, newHero)
_heroMap["isOverlying"] = false
_heroMap["sameCount"] = 1

View File

@ -45,7 +45,7 @@ func (this *apiComp) ResonanceReset(session comm.IUserSession, req *pb.HeroReson
return
}
if _hero.ResonateNum*resonConfig.Energy >= _hero.DistributionResonate {
if _hero.ResonateNum*resonConfig.Energy == _hero.DistributionResonate {
code = pb.ErrorCode_HeroNotNeedResonate // 已经是重置状态
return
}

View File

@ -132,9 +132,20 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroSt
// 堆叠情况
if _hero.SameCount > 1 {
_hero.SameCount -= 1
sz := make([]*pb.SkillData, 0)
for _, v := range _hero.NormalSkill {
sz = append(sz, &pb.SkillData{
SkillID: v.SkillID,
SkillLv: v.SkillLv,
})
v.SkillLv = 1
}
newHero := this.module.modelHero.CloneNewHero(_hero)
ChangeList = append(ChangeList, newHero)
_hero.NormalSkill = sz
}
_heroMap := map[string]interface{}{
"normalSkill": _hero.NormalSkill,
"isOverlying": false,
@ -147,6 +158,7 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroSt
code = pb.ErrorCode_DBError
return
}
/////
this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
ChangeList = append(ChangeList, _hero)
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: ChangeList})

View File

@ -131,6 +131,7 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStr
if _hero.SameCount > 1 { //有堆叠的情况
// 克隆一个新的
_hero.SameCount -= 1
newHero := this.module.modelHero.CloneNewHero(_hero)
chanegCard = append(chanegCard, newHero)
}

View File

@ -52,6 +52,7 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
if code != pb.ErrorCode_Success {
return
}
//this.module.Debug("StrengthenUplv", log.Field{Key: "hero", Value: _hero})
// 只有英雄卡才能升级
if _hero.CardType != comm.CardTypeHero {
code = pb.ErrorCode_HeroTypeErr
@ -192,7 +193,7 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
this.module.ModuleTask.SendToTask(session, comm.TaskTypeUpHeroLevel, &pb.TaskParam{Second: iLvUp})
this.module.ModuleRtask.SendToRtask(session, comm.Rtype4, utils.ToInt32(_hero.HeroID), _hero.Lv)
this.module.ModuleRtask.SendToRtask(session, comm.Rtype23, 1, _hero.Star, _hero.Lv)
this.module.ModuleRtask.SendToRtask(session, comm.Rtype24, iLvUp)
this.module.ModuleRtask.SendToRtask(session, comm.Rtype24, 1)
this.module.ModuleRtask.SendToRtask(session, comm.Rtype29, 1, _hero.Lv, utils.ToInt32(_hero.HeroID))
cfg := this.module.configure.GetHero(_hero.HeroID)
if cfg != nil {

View File

@ -452,10 +452,14 @@ func (this *ModelHero) PropertyCompute(hero *pb.DBHero) {
lvGrow.Speed, 0, 0, 0, stargrowCfg.StarupSpeed)
speed, _ := mengine.ParseAndExec(exprSpeed)
hero.Property = map[string]int32{
comm.Hp: int32(math.Floor(hp)),
comm.Atk: int32(math.Floor(atk)),
comm.Def: int32(math.Floor(def)),
comm.Speed: int32(math.Floor(speed)),
comm.Hp: int32(math.Floor(hp)),
comm.Atk: int32(math.Floor(atk)),
comm.Def: int32(math.Floor(def)),
comm.Speed: int32(math.Floor(speed)),
comm.Cri: int32(lvGrow.Cri), //暴击
comm.Effhit: int32(lvGrow.Effhit), //效果命中
comm.Cridam: int32(lvGrow.Cridam), //暴击伤害
comm.Effre: int32(lvGrow.Effre), //效果抵抗
}
}
@ -541,10 +545,12 @@ func (this *ModelHero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhe
hero.Exp = curExp
hero.IsOverlying = false
hero.SameCount = 1
this.moduleHero.Debugf("add hero exp :%v", hero)
if err := this.ChangeList(uid, hero.Id, update); err != nil {
this.moduleHero.Errorf("add hero exp failed ChangeList %v", err)
code = pb.ErrorCode_DBError
}
}
return
}

View File

@ -283,10 +283,14 @@ func (this *Hero) AddHeroExp(session comm.IUserSession, heroObjID string, exp in
newhero *pb.DBHero
_changeHero []*pb.DBHero // 变化的英雄
)
if heroObjID == "" {
return
}
_hero, code = this.GetHeroByObjID(session.GetUserId(), heroObjID)
if code != pb.ErrorCode_Success {
return
}
//this.Debug("AddHeroExp", log.Field{Key: "hero", Value: _hero})
newhero, code = this.modelHero.AddCardExp(session.GetUserId(), _hero, exp)
if code != pb.ErrorCode_Success {
return
@ -295,7 +299,6 @@ func (this *Hero) AddHeroExp(session comm.IUserSession, heroObjID string, exp in
if newhero != nil {
_changeHero = append(_changeHero, newhero) // 原来的英雄 只是数量变化了
}
_changeHero = append(_changeHero, _hero)
session.SendMsg(string(this.GetType()), "change", &pb.HeroChangePush{List: _changeHero})
return
}

View File

@ -64,7 +64,7 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.HuntingCha
hunting.Boss[req.BossType] += 1
mapData["boss"] = hunting.Boss
mapData["challengeTime"] = hunting.BossTime
if req.Report != nil && len(req.Report.Info.Redflist) > 0 {
if req.Report != nil && req.Report.Info != nil && len(req.Report.Info.Redflist) > 0 {
sz := make([]*pb.LineUp, 5)
for i, v := range req.Report.Info.Redflist[0].Team {
if v != nil {

View File

@ -60,7 +60,7 @@ func (this *Library) CreateLibrary(uid string, fids []int32, heroConfId string)
Uid: uid,
Fid: fid,
Hero: map[string]int32{},
Prize: false,
Prize: map[int32]int32{},
Fetterlv: 0,
}

View File

@ -102,10 +102,12 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.MainlineCh
this.module.Debugf("DispenseRes err:+%v", res)
}
// 加经验
if req.Report != nil && len(req.Report.Info.Redflist) > 0 {
for _, v := range req.Report.Info.Redflist[0].Team {
if node.Exp > 0 {
this.module.ModuleHero.AddHeroExp(session, v.Oid, node.Exp)
if node.Episodetype != 5 && node.Episodetype != 7 {
if req.Report != nil && req.Report.Info != nil && len(req.Report.Info.Redflist) > 0 {
for _, v := range req.Report.Info.Redflist[0].Team {
if node.Exp > 0 {
this.module.ModuleHero.AddHeroExp(session, v.Oid, node.Exp)
}
}
}
}

View File

@ -109,7 +109,7 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal
}
} else {
// 记录爬塔明细数据
if req.Report != nil && len(req.Report.Info.Redflist) > 0 {
if req.Report != nil && req.Report.Info != nil && len(req.Report.Info.Redflist) > 0 {
sz := make([]*pb.LineUp, 5)
for i, v := range req.Report.Info.Redflist[0].Team {
if v != nil {
@ -129,7 +129,7 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal
session.SendMsg(string(this.module.GetType()), PagodaChallengeOverResp, &pb.PagodaChallengeOverResp{Data: pagoda})
}
// 加经验
if req.Report != nil && len(req.Report.Info.Redflist) > 0 {
if req.Report != nil && req.Report.Info != nil && len(req.Report.Info.Redflist) > 0 {
for _, v := range req.Report.Info.Redflist[0].Team {
if conf.Exp > 0 {
this.module.ModuleHero.AddHeroExp(session, v.Oid, conf.Exp)

View File

@ -11,7 +11,9 @@ import (
// 做任务
func (this *apiComp) ApplyCheck(session comm.IUserSession, req *pb.RtaskApplyReq) (code pb.ErrorCode) {
if req.RtaskId == 0 || req.RtaskSubId == 0 {
code = pb.ErrorCode_ReqParameterError
}
return
}
@ -38,9 +40,9 @@ func (this *apiComp) Apply(session comm.IUserSession, req *pb.RtaskApplyReq) (co
var (
frtaskArr *pb.FrtaskIds
ok bool
err error
)
// 获取当前组下已完成的任务
if frtaskArr, ok = rtask.FrtaskIds[conf.Group]; !ok {
frtaskArr = &pb.FrtaskIds{}
}
@ -51,54 +53,42 @@ func (this *apiComp) Apply(session comm.IUserSession, req *pb.RtaskApplyReq) (co
return
}
if req.RtaskSubId == 0 {
//校验前置任务和限定条件
if err, ok = this.moduleRtask.modelRtask.checkHandle(session.GetUserId(), frtaskArr.RtaskIds, conf); !ok {
this.moduleRtask.Error(err.Error())
code = pb.ErrorCode_RtaskCondiNoReach
return
}
} else {
sideConf := this.moduleRtask.configure.getRtaskSidById(req.RtaskSubId)
if sideConf == nil {
code = pb.ErrorCode_ConfigNoFound
log.Errorf("rdtask_side %v no found", req.RtaskSubId)
return
}
// 没有设置选项,表示任务完成
if len(sideConf.EndTid) == 0 {
code = pb.ErrorCode_ConfigurationException
return
}
if sideConf.EndTid[0] == -1 {
frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId)
if rtask.FrtaskIds == nil {
rtask.FrtaskIds = make(map[int32]*pb.FrtaskIds)
}
rtask.FrtaskIds[conf.Group] = frtaskArr
update := map[string]interface{}{
"frtaskIds": rtask.FrtaskIds,
}
if err := this.moduleRtask.modelRtask.Change(session.GetUserId(), update); err != nil {
code = pb.ErrorCode_SystemError
}
} else {
// 校验完成条件
for _, v := range sideConf.EndTid {
if err, ok := this.moduleRtask.modelRtask.checkCondi(session.GetUserId(), v); !ok {
this.moduleRtask.Error(err.Error())
code = pb.ErrorCode_RtaskCondiNoReach
return
}
}
}
sideConf := this.moduleRtask.configure.getRtaskSidById(req.RtaskSubId)
if sideConf == nil {
code = pb.ErrorCode_ConfigNoFound
log.Errorf("rdtask_side %v no found", req.RtaskSubId)
return
}
if len(sideConf.EndTid) == 0 {
code = pb.ErrorCode_ConfigurationException
return
}
// 没有设置选项,表示任务完成
if sideConf.EndTid[0] == -1 && len(sideConf.ChooseId) == 0 {
frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId)
if rtask.FrtaskIds == nil {
rtask.FrtaskIds = make(map[int32]*pb.FrtaskIds)
}
rtask.FrtaskIds[conf.Group] = frtaskArr
update := map[string]interface{}{
"frtaskIds": rtask.FrtaskIds,
}
if err := this.moduleRtask.modelRtask.Change(session.GetUserId(), update); err != nil {
code = pb.ErrorCode_SystemError
return
}
if err := this.moduleRtask.modelRtask.updateUserRtaskId(session.GetUserId(), req.RtaskId); err != nil {
this.moduleRtask.Errorf("update rtaskId err: %v", err)
}
}
if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeApply, &pb.RtaskApplyResp{
RtaskId: req.RtaskId,
}); err != nil {

View File

@ -74,6 +74,14 @@ func (this *apiComp) Choose(session comm.IUserSession, req *pb.RtaskChooseReq) (
}
if chooseCnf.NextTid != 0 {
// 校验完成条件
for _, v := range sideConf.EndTid {
if err, ok := this.moduleRtask.modelRtask.checkCondi(session.GetUserId(), v); !ok {
this.moduleRtask.Error(err.Error())
code = pb.ErrorCode_RtaskCondiNoReach
return
}
}
// 更新完成的任务
frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId)
if rtask.FrtaskIds == nil {
@ -87,6 +95,12 @@ func (this *apiComp) Choose(session comm.IUserSession, req *pb.RtaskChooseReq) (
code = pb.ErrorCode_SystemError
return
}
// userexpand update
if err := this.moduleRtask.modelRtask.updateUserRtaskId(session.GetUserId(), req.RtaskId); err != nil {
this.moduleRtask.Errorf("update user rtaskId err %v", err)
}
// 发奖励
for _, v := range sideConf.Reward {
if v.ChooseId == req.ChooseId {

View File

@ -1,27 +1,34 @@
// 匹配类型和参数返回任务条件ID
package rtask
import cfg "go_dreamfactory/sys/configure/structs"
import (
cfg "go_dreamfactory/sys/configure/structs"
func (this *ModelRtaskRecord) equalFirstParam(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32) {
"github.com/pkg/errors"
)
func (this *ModelRtaskRecord) equalFirstParam(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32, err error) {
//只查询参数于配置相等的情况下设置condiId否则返回0
if !soEqual(vals[0], cfg.Data1) {
if ok, err1 := soEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
condiId = cfg.Id
return
}
func (this *ModelRtaskRecord) greatEqualFirstParam(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32) {
if !soGreatEqual(vals[0], cfg.Data1) {
func (this *ModelRtaskRecord) greatEqualFirstParam(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32, err error) {
if ok, err1 := soGreatEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
condiId = cfg.Id
return
}
func (this *ModelRtaskRecord) lessEqualFirstParam(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32) {
if !soLessEqual(vals[0], cfg.Data1) {
func (this *ModelRtaskRecord) lessEqualFirstParam(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32, err error) {
if ok, err1 := soLessEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
condiId = cfg.Id
@ -29,10 +36,8 @@ func (this *ModelRtaskRecord) lessEqualFirstParam(cfg *cfg.GameRdtaskCondiData,
}
// 与每个参数比较
// Deprecated
func (this *ModelRtaskRecord) equalParams(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32) {
func (this *ModelRtaskRecord) equalParams(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32, err error) {
var (
err error
paramLen int
)
if paramLen, err = lenParam(cfg, vals...); err != nil {
@ -41,25 +46,68 @@ func (this *ModelRtaskRecord) equalParams(cfg *cfg.GameRdtaskCondiData, vals ...
switch paramLen {
case 1:
if !soEqual(vals[0], cfg.Data1) {
if ok, err1 := soEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
case 2:
if !(soEqual(vals[0], cfg.Data1) && soGreatEqual(vals[1], cfg.Data2)) {
if ok, err1 := soEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[1], cfg.Data2); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
case 3:
if !(soEqual(vals[0], cfg.Data1) && soGreatEqual(vals[1], cfg.Data2) && soGreatEqual(vals[2], cfg.Data3)) {
if ok, err1 := soEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[1], cfg.Data2); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[2], cfg.Data3); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
case 4:
if !(soEqual(vals[0], cfg.Data1) && soGreatEqual(vals[1], cfg.Data2) &&
soGreatEqual(vals[2], cfg.Data3) && soGreatEqual(vals[3], cfg.Data4)) {
if ok, err1 := soEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[1], cfg.Data2); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[2], cfg.Data3); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[3], cfg.Data4); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
case 5:
if !(soEqual(vals[0], cfg.Data1) && soGreatEqual(vals[1], cfg.Data2) &&
soGreatEqual(vals[2], cfg.Data3) && soGreatEqual(vals[3], cfg.Data4) && soGreatEqual(vals[4], cfg.Data5)) {
if ok, err1 := soEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[1], cfg.Data2); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[2], cfg.Data3); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[3], cfg.Data4); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[4], cfg.Data5); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
default:
@ -71,9 +119,8 @@ func (this *ModelRtaskRecord) equalParams(cfg *cfg.GameRdtaskCondiData, vals ...
return
}
func (this *ModelRtaskRecord) greatThanParams(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32) {
func (this *ModelRtaskRecord) greatThanParams(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32, err error) {
var (
err error
paramLen int
)
if paramLen, err = lenParam(cfg, vals...); err != nil {
@ -82,25 +129,68 @@ func (this *ModelRtaskRecord) greatThanParams(cfg *cfg.GameRdtaskCondiData, vals
switch paramLen {
case 1:
if !soGreatEqual(vals[0], cfg.Data1) {
if ok, err1 := soGreatEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
case 2:
if !(soGreatEqual(vals[0], cfg.Data1) && soEqual(vals[1], cfg.Data2)) {
if ok, err1 := soGreatEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[1], cfg.Data2); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
case 3:
if !(soGreatEqual(vals[0], cfg.Data1) && soEqual(vals[1], cfg.Data2) && soEqual(vals[2], cfg.Data3)) {
if ok, err1 := soGreatEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[1], cfg.Data2); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[2], cfg.Data3); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
case 4:
if !(soGreatEqual(vals[0], cfg.Data1) && soEqual(vals[1], cfg.Data2) &&
soEqual(vals[2], cfg.Data3) && soEqual(vals[3], cfg.Data4)) {
if ok, err1 := soGreatEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[1], cfg.Data2); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[2], cfg.Data3); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[3], cfg.Data4); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
case 5:
if !(soGreatEqual(vals[0], cfg.Data1) && soEqual(vals[1], cfg.Data2) &&
soEqual(vals[2], cfg.Data3) && soEqual(vals[3], cfg.Data4) && soEqual(vals[4], cfg.Data5)) {
if ok, err1 := soGreatEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[1], cfg.Data2); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[2], cfg.Data3); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[3], cfg.Data4); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[4], cfg.Data5); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
default:
@ -112,9 +202,8 @@ func (this *ModelRtaskRecord) greatThanParams(cfg *cfg.GameRdtaskCondiData, vals
}
// 需要累加更新的查询
func (this *ModelRtaskRecord) lessThanParams(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32) {
func (this *ModelRtaskRecord) lessThanParams(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32, err error) {
var (
err error
paramLen int
)
if paramLen, err = lenParam(cfg, vals...); err != nil {
@ -123,25 +212,68 @@ func (this *ModelRtaskRecord) lessThanParams(cfg *cfg.GameRdtaskCondiData, vals
switch paramLen {
case 1:
if !soLessEqual(vals[0], cfg.Data1) {
if ok, err1 := soLessEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
case 2:
if !(soLessEqual(vals[0], cfg.Data1) && soGreatEqual(vals[1], cfg.Data2)) {
if ok, err1 := soLessEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[1], cfg.Data2); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
case 3:
if !(soLessEqual(vals[0], cfg.Data1) && soGreatEqual(vals[1], cfg.Data2) && soGreatEqual(vals[2], cfg.Data3)) {
if ok, err1 := soLessEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[1], cfg.Data2); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[2], cfg.Data3); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
case 4:
if !(soLessEqual(vals[0], cfg.Data1) && soGreatEqual(vals[1], cfg.Data2) &&
soGreatEqual(vals[2], cfg.Data3) && soGreatEqual(vals[3], cfg.Data4)) {
if ok, err1 := soLessEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[1], cfg.Data2); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[2], cfg.Data3); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[3], cfg.Data4); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
case 5:
if !(soLessEqual(vals[0], cfg.Data1) && soGreatEqual(vals[1], cfg.Data2) &&
soGreatEqual(vals[2], cfg.Data3) && soGreatEqual(vals[3], cfg.Data4) && soGreatEqual(vals[4], cfg.Data5)) {
if ok, err1 := soLessEqual(vals[0], cfg.Data1); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[1], cfg.Data2); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[2], cfg.Data3); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[3], cfg.Data4); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
if ok, err1 := soGreatEqual(vals[4], cfg.Data5); !ok {
err = errors.WithMessagef(err1, "id: %v type:%v", cfg.Id, cfg.Type)
return
}
default:

View File

@ -154,27 +154,27 @@ func lessEqual(actual, expected int32) bool {
return actual <= expected
}
func soEqual[T Num](actual T, expected T) (ok bool) {
func soEqual[T Num](actual T, expected T) (ok bool, err error) {
if !equal(actual, expected) {
log.Debugf("实际:%v 期望:%v", actual, expected)
err = errors.New(fmt.Sprintf("soEqual actual:%v expect:%v", actual, expected))
return
}
ok = true
return
}
func soGreatEqual(actual, expected int32) (ok bool) {
func soGreatEqual(actual, expected int32) (ok bool, err error) {
if !greatEual(actual, expected) {
log.Debugf("实际:%v 期望:%v", actual, expected)
err = errors.New(fmt.Sprintf("soGreatEqual actual:%v expect:%v", actual, expected))
return
}
ok = true
return
}
func soLessEqual(actual, expected int32) (ok bool) {
func soLessEqual(actual, expected int32) (ok bool, err error) {
if !lessEqual(actual, expected) {
log.Debugf("实际:%v 期望:%v", actual, expected)
err = errors.New(fmt.Sprintf("soLessEqual actual:%v expect:%v", actual, expected))
return
}
ok = true

View File

@ -28,6 +28,14 @@ func (this *ModelRtask) Init(service core.IService, module core.IModule, comp co
return
}
// 更新玩家的随机任务ID
func (this *ModelRtask) updateUserRtaskId(uid string, rtaskId int32) (err error) {
ex_update := map[string]interface{}{
"rtaskId": rtaskId,
}
return this.moduleRtask.ModuleUser.ChangeUserExpand(uid, ex_update)
}
//查询用户随机任务
func (this *ModelRtask) GetRtask(uid string) *pb.DBRtask {
rtask := &pb.DBRtask{Uid: uid}
@ -73,7 +81,7 @@ func (this *ModelRtask) checkCondi(uid string, condiId int32) (err error, ok boo
var condi *rtaskCondi
if condi, ok = this.moduleRtask.handleMap[condiId]; ok {
if condi.verify != nil {
if err, ok = condi.verify(uid, condi.cfg); !ok {
if ok, err = condi.verify(uid, condi.cfg); !ok {
err = errors.WithMessagef(err, "uid: %v do rtask %v condition not reach", uid, condiId)
return
}

View File

@ -20,8 +20,8 @@ type rtaskCondi struct {
update updateDataHandle //更新任务数据
}
type verifyHandle func(uid string, cfg *cfg.GameRdtaskCondiData) (error, bool)
type condiFindHandle func(cfg *cfg.GameRdtaskCondiData, vals ...int32) int32
type verifyHandle func(uid string, cfg *cfg.GameRdtaskCondiData) (bool, error)
type condiFindHandle func(cfg *cfg.GameRdtaskCondiData, vals ...int32) (int32, error)
type updateDataHandle func(uid string, cfg *cfg.GameRdtaskCondiData, vals ...int32) error
type ModuleRtask struct {
@ -193,10 +193,12 @@ func (this *ModuleRtask) initRtaskVerifyHandle() {
}
func (this *ModuleRtask) SendToRtask(session comm.IUserSession, rtaskType comm.TaskType, params ...int32) (code pb.ErrorCode) {
log.Debugf("Rtask params: %v", params)
this.Debugf("receive Rtask %v params: %v", rtaskType, params)
var (
err error
condiId int32
condi *rtaskCondi
// condi *rtaskCondi
condis []*rtaskCondi
)
user := this.ModuleUser.GetUser(session.GetUserId())
@ -211,29 +213,34 @@ func (this *ModuleRtask) SendToRtask(session comm.IUserSession, rtaskType comm.T
if v.find == nil {
break
}
if condiId = v.find(v.cfg, params...); condiId == 0 {
if condiId, err = v.find(v.cfg, params...); condiId == 0 {
if err != nil {
this.Error(err.Error())
}
continue
} else {
//数据记录方式是1
// if v.cfg.Datatype == 1 ||
// v.cfg.Datatype == 2 && this.ModuleSys.IsAccess("task", user.Lv) {
condi = v
condis = append(condis, v)
// }
break
}
}
}
if condiId == 0 {
log.Debugf("condi not found, typeId: %v params: %v", rtaskType, params)
if len(condis) == 0 {
this.Warnf("没有找到符合的条件任务, typeId: %v params: %v", rtaskType, params)
code = pb.ErrorCode_RtaskCondiNoFound
return
}
// update
if condi.update != nil {
if err := condi.update(session.GetUserId(), condi.cfg, params...); err != nil {
code = pb.ErrorCode_DBError
for _, v := range condis {
if v.update != nil {
if err := v.update(session.GetUserId(), v.cfg, params...); err != nil {
code = pb.ErrorCode_DBError
}
}
}

View File

@ -11,7 +11,7 @@ import (
"github.com/spf13/cast"
)
func (this *ModelRtaskRecord) verifyFromDb(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtaskRecord) verifyFromDb(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
var rd *pb.RtaskData
if rd, err = this.GetVerifyData(uid, cfg.Id); rd != nil {
if len(rd.Data) == 0 {
@ -23,23 +23,60 @@ func (this *ModelRtaskRecord) verifyFromDb(uid string, cfg *cfg.GameRdtaskCondiD
//参数比较,默认第一个参数soGreateEqual,其它soEqual
switch paramLen {
case 1:
return nil, soGreatEqual(rd.Data[0], cfg.Data1)
return soGreatEqual(rd.Data[0], cfg.Data1)
case 2:
return nil, soGreatEqual(rd.Data[0], cfg.Data1) && soEqual(rd.Data[1], cfg.Data2)
if ok, err = soGreatEqual(rd.Data[0], cfg.Data1); !ok {
return
}
if ok, err = soEqual(rd.Data[1], cfg.Data2); !ok {
return
}
case 3:
return nil, soGreatEqual(rd.Data[0], cfg.Data1) && soEqual(rd.Data[1], cfg.Data2) && soEqual(rd.Data[2], cfg.Data3)
if ok, err = soGreatEqual(rd.Data[0], cfg.Data1); !ok {
return
}
if ok, err = soEqual(rd.Data[1], cfg.Data2); !ok {
return
}
if ok, err = soEqual(rd.Data[2], cfg.Data3); !ok {
return
}
case 4:
return nil, soGreatEqual(rd.Data[0], cfg.Data1) && soEqual(rd.Data[1], cfg.Data2) && soEqual(rd.Data[2], cfg.Data3) && soEqual(rd.Data[3], cfg.Data4)
if ok, err = soGreatEqual(rd.Data[0], cfg.Data1); !ok {
return
}
if ok, err = soEqual(rd.Data[1], cfg.Data2); !ok {
return
}
if ok, err = soEqual(rd.Data[2], cfg.Data3); !ok {
return
}
if ok, err = soEqual(rd.Data[3], cfg.Data4); !ok {
return
}
case 5:
return nil, soGreatEqual(rd.Data[0], cfg.Data1) && soEqual(rd.Data[1], cfg.Data2) && soEqual(rd.Data[2], cfg.Data3) &&
soEqual(rd.Data[3], cfg.Data4) && soEqual(rd.Data[4], cfg.Data5)
if ok, err = soGreatEqual(rd.Data[0], cfg.Data1); !ok {
return
}
if ok, err = soEqual(rd.Data[1], cfg.Data2); !ok {
return
}
if ok, err = soEqual(rd.Data[2], cfg.Data3); !ok {
return
}
if ok, err = soEqual(rd.Data[3], cfg.Data4); !ok {
return
}
if ok, err = soEqual(rd.Data[4], cfg.Data5); !ok {
return
}
}
}
}
return
}
func (this *ModelRtaskRecord) verifyFirstEqualParam(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtaskRecord) verifyFirstEqualParam(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
var rd *pb.RtaskData
if rd, err = this.GetVerifyData(uid, cfg.Id); rd != nil {
if len(rd.Data) == 0 {
@ -47,12 +84,12 @@ func (this *ModelRtaskRecord) verifyFirstEqualParam(uid string, cfg *cfg.GameRdt
return
}
return nil, soEqual(rd.Data[0], cfg.Data1)
return soEqual(rd.Data[0], cfg.Data1)
}
return
}
func (this *ModelRtaskRecord) verifyFirstGreatEqualParam(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtaskRecord) verifyFirstGreatEqualParam(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
var rd *pb.RtaskData
if rd, err = this.GetVerifyData(uid, cfg.Id); rd != nil {
if len(rd.Data) == 0 {
@ -60,22 +97,22 @@ func (this *ModelRtaskRecord) verifyFirstGreatEqualParam(uid string, cfg *cfg.Ga
return
}
return nil, soGreatEqual(rd.Data[0], cfg.Data1)
return soGreatEqual(rd.Data[0], cfg.Data1)
}
return
}
// 英雄指定
func (this *ModelRtask) verfiyRtype1(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtask) verfiyRtype1(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
heroModule, err := this.service.GetModule(comm.ModuleHero)
if err != nil {
return err, false
return false, err
}
if h, y := heroModule.(comm.IHero); y {
for _, v := range h.GetHeroList(uid) {
if soEqual(cast.ToString(cfg.Data1), v.HeroID) {
ok = true
ok, err = soEqual(cast.ToString(cfg.Data1), v.HeroID)
if ok {
return
}
}
@ -84,7 +121,7 @@ func (this *ModelRtask) verfiyRtype1(uid string, cfg *cfg.GameRdtaskCondiData) (
}
// 剧情
func (this *ModelRtask) verifyRtype2(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtask) verifyRtype2(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
m, err := this.service.GetModule(comm.ModuleMainline)
if err != nil {
return
@ -92,13 +129,13 @@ func (this *ModelRtask) verifyRtype2(uid string, cfg *cfg.GameRdtaskCondiData) (
if ml, y := m.(comm.IMainline); y {
qjId := ml.GetUsermainLineData(uid)
return nil, soEqual(qjId, cfg.Data1)
return soEqual(qjId, cfg.Data1)
}
return
}
// 每日任务
func (this *ModelRtask) verifyRtype3(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtask) verifyRtype3(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
m, err := this.service.GetModule(comm.ModuleTask)
if err != nil {
return
@ -116,7 +153,7 @@ func (this *ModelRtask) verifyRtype3(uid string, cfg *cfg.GameRdtaskCondiData) (
}
// 指定英雄等级
func (this *ModelRtask) verifyRtype4(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtask) verifyRtype4(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
defer printCondiLog(uid, cfg)
m, err := this.service.GetModule(comm.ModuleHero)
if err != nil {
@ -132,15 +169,19 @@ func (this *ModelRtask) verifyRtype4(uid string, cfg *cfg.GameRdtaskCondiData) (
}
}
if hero != nil {
return nil, soEqual(hero.HeroID, cast.ToString(cfg.Data1)) &&
soGreatEqual(hero.Lv, cfg.Data2)
if ok, err = soEqual(hero.HeroID, cast.ToString(cfg.Data1)); !ok {
return
}
if ok, err = soGreatEqual(hero.Lv, cfg.Data2); !ok {
return
}
}
}
return
}
// 指定英雄的指定装备数量
func (this *ModelRtask) verifyRtype5(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtask) verifyRtype5(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
defer printCondiLog(uid, cfg)
m, err := this.service.GetModule(comm.ModuleHero)
if err != nil {
@ -164,14 +205,16 @@ func (this *ModelRtask) verifyRtype5(uid string, cfg *cfg.GameRdtaskCondiData) (
}
}
}
return nil, soEqual(hero.HeroID, cast.ToString(cfg.Data1)) &&
soGreatEqual(count, cfg.Data2)
if ok, err = soEqual(hero.HeroID, cast.ToString(cfg.Data1)); !ok {
return
}
return soGreatEqual(count, cfg.Data2)
}
return
}
// 指定英雄星级
func (this *ModelRtask) verifyRtype6(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtask) verifyRtype6(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
defer printCondiLog(uid, cfg)
m, err := this.service.GetModule(comm.ModuleHero)
if err != nil {
@ -188,15 +231,17 @@ func (this *ModelRtask) verifyRtype6(uid string, cfg *cfg.GameRdtaskCondiData) (
}
if hero != nil {
return nil, soEqual(hero.HeroID, cast.ToString(cfg.Data1)) &&
soGreatEqual(hero.Star, cfg.Data2)
if ok, err = soEqual(hero.HeroID, cast.ToString(cfg.Data1)); !ok {
return
}
return soGreatEqual(hero.Star, cfg.Data2)
}
}
return
}
// 日常登录一次
func (this *ModelRtask) verfiyRtype7(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtask) verfiyRtype7(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
defer printCondiLog(uid, cfg)
userModule, err := this.service.GetModule(comm.ModuleUser)
if err != nil {
@ -205,14 +250,14 @@ func (this *ModelRtask) verfiyRtype7(uid string, cfg *cfg.GameRdtaskCondiData) (
if um, y := userModule.(comm.IUser); y {
if user := um.GetUser(uid); user != nil {
return nil, soEqual(utils.IsToday(user.Logintime), true)
return soEqual(utils.IsToday(user.Logintime), true)
}
}
return
}
// 累计登陆xx天
func (this *ModelRtask) verfiyRtype8(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtask) verfiyRtype8(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
defer printCondiLog(uid, cfg)
userModule, err := this.service.GetModule(comm.ModuleUser)
if err != nil {
@ -222,15 +267,15 @@ func (this *ModelRtask) verfiyRtype8(uid string, cfg *cfg.GameRdtaskCondiData) (
if um, y := userModule.(comm.IUser); y {
ud, err := um.GetUserExpand(uid)
if err != nil {
return err, false
return false, err
}
return nil, soGreatEqual(ud.LoginAddCount, cfg.Data1)
return soGreatEqual(ud.LoginAddCount, cfg.Data1)
}
return
}
// 连续登陆xx天
func (this *ModelRtask) verfiyRtype9(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtask) verfiyRtype9(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
defer printCondiLog(uid, cfg)
userModule, err := this.service.GetModule(comm.ModuleUser)
if err != nil {
@ -240,15 +285,15 @@ func (this *ModelRtask) verfiyRtype9(uid string, cfg *cfg.GameRdtaskCondiData) (
if um, y := userModule.(comm.IUser); y {
ud, err := um.GetUserExpand(uid)
if err != nil {
return err, false
return false, err
}
return nil, soGreatEqual(ud.LoginContinueCount, cfg.Data1)
return soGreatEqual(ud.LoginContinueCount, cfg.Data1)
}
return
}
// 拥有xx个好友
func (this *ModelRtask) verfiyRtype10(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtask) verfiyRtype10(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
defer printCondiLog(uid, cfg)
m, err := this.service.GetModule(comm.ModuleFriend)
if err != nil {
@ -257,13 +302,13 @@ func (this *ModelRtask) verfiyRtype10(uid string, cfg *cfg.GameRdtaskCondiData)
if mi, y := m.(comm.IFriend); y {
count := mi.GetFriendCount(uid)
return nil, soGreatEqual(count, cfg.Data1)
return soGreatEqual(count, cfg.Data1)
}
return
}
// 用户等级达到xx级
func (this *ModelRtask) verifyRtype20(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtask) verifyRtype20(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
defer printCondiLog(uid, cfg)
userModule, err := this.service.GetModule(comm.ModuleUser)
if err != nil {
@ -272,14 +317,14 @@ func (this *ModelRtask) verifyRtype20(uid string, cfg *cfg.GameRdtaskCondiData)
if um, y := userModule.(comm.IUser); y {
if user := um.GetUser(uid); user != nil {
return nil, soGreatEqual(user.Lv, cfg.Data1)
return soGreatEqual(user.Lv, cfg.Data1)
}
}
return
}
// 日常任务活跃度达到xx
func (this *ModelRtask) verifyRtype63(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) {
func (this *ModelRtask) verifyRtype63(uid string, cfg *cfg.GameRdtaskCondiData) (ok bool, err error) {
userModule, err := this.service.GetModule(comm.ModuleUser)
if err != nil {
return
@ -288,11 +333,11 @@ func (this *ModelRtask) verifyRtype63(uid string, cfg *cfg.GameRdtaskCondiData)
if um, y := userModule.(comm.IUser); y {
de, err := um.GetUserExpand(uid)
if err != nil {
return err, false
return false, err
}
if de != nil {
ok = soGreatEqual(de.Activeday, cfg.Data1)
return soGreatEqual(de.Activeday, cfg.Data1)
}
}

View File

@ -62,7 +62,7 @@ func TestVerify2(t *testing.T) {
patches3 := gomonkey.ApplyGlobalVar(&vals, []int32{25001})
defer patches3.Reset()
condiId := rtask.equalParams(conf, vals...)
condiId, _ := rtask.equalParams(conf, vals...)
So(condiId, ShouldEqual, 101)
})

View File

@ -1,6 +1,7 @@
package task
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
event_v2 "go_dreamfactory/lego/sys/event/v2"
@ -8,6 +9,7 @@ import (
"go_dreamfactory/pb"
"sort"
"github.com/pkg/errors"
"go.mongodb.org/mongo-driver/bson/primitive"
)
@ -257,18 +259,22 @@ func (this *ModelTask) inStrategy(uid string, heroCfgId int32) (taskIds []int32,
func (this *ModelTask) doTaskHandle(event interface{}, next func(event interface{})) {
tl := event.(*TaskListen)
// 获取玩家的指定事件列表
data, err := this.moduleTask.configure.getTasks(int32(tl.TaskType))
if err != nil {
this.moduleTask.Errorf("taskHandle err %v", err)
return
}
// 获取玩家的任务条件数据
dr := this.moduleTask.ModuleRtask.GetCondiData(tl.Uid)
if dr == nil {
return
}
// 遍历事件列表
for _, conf := range data {
// 从任务条件中查找
ret, ok := dr.Vals[conf.TypeId]
if !ok {
continue
@ -286,6 +292,7 @@ func (this *ModelTask) doTaskHandle(event interface{}, next func(event interface
"progress": progress,
"status": 1,
}
err = this.updateActive(tl.Uid, conf.Key)
} else {
if ret != nil && len(ret.Data) > 0 {
progress = ret.Data[0]
@ -298,11 +305,38 @@ func (this *ModelTask) doTaskHandle(event interface{}, next func(event interface
return
}
}
}
return
}
// 更新活跃度
func (this *ModelTask) updateActive(uid string, cfgId int32) error {
// 更新活跃度
de, err := this.moduleTask.ModuleUser.GetUserExpand(uid)
if err != nil {
return err
}
conf := this.moduleTask.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.moduleTask.ModuleUser.ChangeUserExpand(uid, update)
}
type TaskListen struct {
event_v2.Event
Uid string

View File

@ -134,11 +134,12 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (cod
} else {
rsp.Ex = expand
}
// if this.module.ModuleSys.IsAccess("", user.Lv) {
this.module.ModuleRtask.InitCondiData(user.Uid)
// }
}
// if this.module.ModuleSys.IsAccess("", user.Lv) {
this.module.ModuleRtask.InitCondiData(user.Uid)
// }
mail := &pb.DBMailData{
ObjId: primitive.NewObjectID().Hex(),
Uid: user.Uid,

View File

@ -65,7 +65,7 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.VikingChal
viking.Boss[req.BossType] += 1
mapData["boss"] = viking.Boss
if req.Report != nil && len(req.Report.Info.Redflist) > 0 {
if req.Report != nil && req.Report.Info != nil && len(req.Report.Info.Redflist) > 0 {
sz := make([]*pb.LineUp, 5)
for i, v := range req.Report.Info.Redflist[0].Team {
if v != nil {

View File

@ -80,12 +80,13 @@ type DBLibrary struct {
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" bson:"uid"` //用户ID
Fid int32 `protobuf:"varint,3,opt,name=fid,proto3" json:"fid"` // 配置表id 羁绊id
Hero map[string]int32 `protobuf:"bytes,4,rep,name=hero,proto3" json:"hero" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // key: hid value: favorlv
Prize bool `protobuf:"varint,5,opt,name=prize,proto3" json:"prize"` //是否领奖
Fetterlv int32 `protobuf:"varint,6,opt,name=fetterlv,proto3" json:"fetterlv"` // 当前羁绊等级
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID
Fid int32 `protobuf:"varint,3,opt,name=fid,proto3" json:"fid"` // 配置表id 羁绊id
Hero map[string]int32 `protobuf:"bytes,4,rep,name=hero,proto3" json:"hero" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // key: hid value: favorlv
Prize map[int32]int32 `protobuf:"bytes,5,rep,name=prize,proto3" json:"prize" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //是否领奖
Fetterlv int32 `protobuf:"varint,6,opt,name=fetterlv,proto3" json:"fetterlv"` // 当前羁绊等级
Storyid int32 `protobuf:"varint,7,opt,name=storyid,proto3" json:"storyid"` // 故事id 用来判断是否领奖
}
func (x *DBLibrary) Reset() {
@ -148,11 +149,11 @@ func (x *DBLibrary) GetHero() map[string]int32 {
return nil
}
func (x *DBLibrary) GetPrize() bool {
func (x *DBLibrary) GetPrize() map[int32]int32 {
if x != nil {
return x.Prize
}
return false
return nil
}
func (x *DBLibrary) GetFetterlv() int32 {
@ -162,6 +163,13 @@ func (x *DBLibrary) GetFetterlv() int32 {
return 0
}
func (x *DBLibrary) GetStoryid() int32 {
if x != nil {
return x.Storyid
}
return 0
}
var File_library_library_db_proto protoreflect.FileDescriptor
var file_library_library_db_proto_rawDesc = []byte{
@ -169,21 +177,28 @@ var file_library_library_db_proto_rawDesc = []byte{
0x79, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2a, 0x0a, 0x06, 0x46, 0x65,
0x74, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x22, 0xd4, 0x01, 0x0a, 0x09, 0x44, 0x42, 0x4c, 0x69, 0x62,
0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x22, 0xbf, 0x02, 0x0a, 0x09, 0x44, 0x42, 0x4c, 0x69, 0x62,
0x72, 0x61, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x69, 0x64, 0x18, 0x03, 0x20,
0x01, 0x28, 0x05, 0x52, 0x03, 0x66, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f,
0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x44, 0x42, 0x4c, 0x69, 0x62, 0x72, 0x61,
0x72, 0x79, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x68, 0x65,
0x72, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
0x08, 0x52, 0x05, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65, 0x74, 0x74,
0x65, 0x72, 0x6c, 0x76, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x65, 0x74, 0x74,
0x65, 0x72, 0x6c, 0x76, 0x1a, 0x37, 0x0a, 0x09, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a,
0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x72, 0x6f, 0x12, 0x2b, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x15, 0x2e, 0x44, 0x42, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x2e, 0x50, 0x72,
0x69, 0x7a, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x12,
0x1a, 0x0a, 0x08, 0x66, 0x65, 0x74, 0x74, 0x65, 0x72, 0x6c, 0x76, 0x18, 0x06, 0x20, 0x01, 0x28,
0x05, 0x52, 0x08, 0x66, 0x65, 0x74, 0x74, 0x65, 0x72, 0x6c, 0x76, 0x12, 0x18, 0x0a, 0x07, 0x73,
0x74, 0x6f, 0x72, 0x79, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74,
0x6f, 0x72, 0x79, 0x69, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38,
0x0a, 0x0a, 0x50, 0x72, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
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,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -198,19 +213,21 @@ func file_library_library_db_proto_rawDescGZIP() []byte {
return file_library_library_db_proto_rawDescData
}
var file_library_library_db_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
var file_library_library_db_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_library_library_db_proto_goTypes = []interface{}{
(*Fetter)(nil), // 0: Fetter
(*DBLibrary)(nil), // 1: DBLibrary
nil, // 2: DBLibrary.HeroEntry
nil, // 3: DBLibrary.PrizeEntry
}
var file_library_library_db_proto_depIdxs = []int32{
2, // 0: DBLibrary.hero:type_name -> DBLibrary.HeroEntry
1, // [1:1] is the sub-list for method output_type
1, // [1:1] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
3, // 1: DBLibrary.prize:type_name -> DBLibrary.PrizeEntry
2, // [2:2] is the sub-list for method output_type
2, // [2:2] is the sub-list for method input_type
2, // [2:2] is the sub-list for extension type_name
2, // [2:2] is the sub-list for extension extendee
0, // [0:2] is the sub-list for field type_name
}
func init() { file_library_library_db_proto_init() }
@ -250,7 +267,7 @@ func file_library_library_db_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_library_library_db_proto_rawDesc,
NumEnums: 0,
NumMessages: 3,
NumMessages: 4,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type GameNameLibrary struct {
_dataMap map[int32]*GameNameLibraryData
_dataList []*GameNameLibraryData
}
func NewGameNameLibrary(_buf []map[string]interface{}) (*GameNameLibrary, error) {
_dataList := make([]*GameNameLibraryData, 0, len(_buf))
dataMap := make(map[int32]*GameNameLibraryData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameNameLibraryData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameNameLibrary{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameNameLibrary) GetDataMap() map[int32]*GameNameLibraryData {
return table._dataMap
}
func (table *GameNameLibrary) GetDataList() []*GameNameLibraryData {
return table._dataList
}
func (table *GameNameLibrary) Get(key int32) *GameNameLibraryData {
return table._dataMap[key]
}

View File

@ -0,0 +1,39 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameNameLibraryData struct {
Id int32
Surname string
Name string
}
const TypeId_GameNameLibraryData = 77094270
func (*GameNameLibraryData) GetTypeId() int32 {
return 77094270
}
func (_v *GameNameLibraryData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["surname"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Surname error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Surname, _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["name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Name, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
return
}
func DeserializeGameNameLibraryData(_buf map[string]interface{}) (*GameNameLibraryData, error) {
v := &GameNameLibraryData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -13,6 +13,7 @@ import "errors"
type GameRdtaskData struct {
Id int32
Group int32
Subgroup int32
Type int32
PreTid int32
Condition []int32
@ -28,6 +29,7 @@ func (*GameRdtaskData) GetTypeId() int32 {
func (_v *GameRdtaskData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["group"].(float64); !_ok_ { err = errors.New("group error"); return }; _v.Group = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["subgroup"].(float64); !_ok_ { err = errors.New("subgroup error"); return }; _v.Subgroup = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["preTid"].(float64); !_ok_ { err = errors.New("preTid error"); return }; _v.PreTid = int32(_tempNum_) }
{

View File

@ -99,6 +99,7 @@ type Tables struct {
Robot *GameRobot
Ip *GameIp
GameColor *GameGameColor
NameLibrary *GameNameLibrary
}
func NewTables(loader JsonLoader) (*Tables, error) {
@ -634,5 +635,11 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.GameColor, err = NewGameGameColor(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_namelibrary") ; err != nil {
return nil, err
}
if tables.NameLibrary, err = NewGameNameLibrary(buf) ; err != nil {
return nil, err
}
return tables, nil
}

View File

@ -41,6 +41,7 @@ type GameHeroData struct {
Camerainterval float32
Equiprcom []string
Angle int32
Deviation int32
}
const TypeId_GameHeroData = 1513828672
@ -125,6 +126,7 @@ func (_v *GameHeroData)Deserialize(_buf map[string]interface{}) (err error) {
}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["angle"].(float64); !_ok_ { err = errors.New("angle error"); return }; _v.Angle = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["deviation"].(float64); !_ok_ { err = errors.New("deviation error"); return }; _v.Deviation = int32(_tempNum_) }
return
}

View File

@ -151,6 +151,7 @@ func (this *DBModel) UpdateModelLogs(table string, uID string, where bson.M, tar
//添加新的数据
func (this *DBModel) Add(uid string, data interface{}, opt ...DBOption) (err error) {
//defer log.Debug("DBModel Add", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "data", Value: data})
if err = this.Redis.HMSet(this.ukey(uid), data); err != nil {
return
}
@ -167,6 +168,7 @@ func (this *DBModel) Add(uid string, data interface{}, opt ...DBOption) (err err
//添加新的数据到列表
func (this *DBModel) AddList(uid string, id string, data interface{}, opt ...DBOption) (err error) {
//defer log.Debug("DBModel AddList", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "_id", Value: id}, log.Field{Key: "data", Value: data})
key := this.ukeylist(uid, id)
if err = this.Redis.HMSet(key, data); err != nil {
return
@ -187,6 +189,7 @@ func (this *DBModel) AddList(uid string, id string, data interface{}, opt ...DBO
//添加新的多个数据到列表 data map[string]type
func (this *DBModel) AddLists(uid string, data interface{}, opt ...DBOption) (err error) {
//defer log.Debug("DBModel AddLists", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "data", Value: data})
vof := reflect.ValueOf(data)
if !vof.IsValid() {
return fmt.Errorf("Model_Comp: AddLists(nil)")
@ -229,6 +232,7 @@ func (this *DBModel) AddLists(uid string, data interface{}, opt ...DBOption) (er
//添加队列
func (this *DBModel) AddQueues(key string, uplimit int64, data interface{}) (outkey []string, err error) {
//defer log.Debug("DBModel AddQueues", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "key", Value: key}, log.Field{Key: "data", Value: data})
vof := reflect.ValueOf(data)
if !vof.IsValid() {
err = fmt.Errorf("Model_Comp: AddLists(nil)")
@ -268,6 +272,7 @@ func (this *DBModel) AddQueues(key string, uplimit int64, data interface{}) (out
//修改数据多个字段 uid 作为主键
func (this *DBModel) Change(uid string, data map[string]interface{}, opt ...DBOption) (err error) {
//defer log.Debug("DBModel Change", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "data", Value: data})
if err = this.Redis.HMSet(this.ukey(uid), data); err != nil {
return
}
@ -284,7 +289,9 @@ func (this *DBModel) Change(uid string, data map[string]interface{}, opt ...DBOp
//修改数据多个字段 uid 作为主键
func (this *DBModel) ChangeList(uid string, _id string, data map[string]interface{}, opt ...DBOption) (err error) {
//defer log.Debug("DBModel ChangeList", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "_id", Value: _id}, log.Field{Key: "data", Value: data})
if err = this.Redis.HMSet(this.ukeylist(uid, _id), data); err != nil {
log.Error("DBModel ChangeList", log.Field{Key: "err", Value: err})
return
}
@ -301,6 +308,7 @@ func (this *DBModel) ChangeList(uid string, _id string, data map[string]interfac
//读取全部数据
func (this *DBModel) Get(uid string, data interface{}, opt ...DBOption) (err error) {
//defer log.Debug("DBModel Get", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "data", Value: data})
if err = this.Redis.HGetAll(this.ukey(uid), data); err != nil && err != lgredis.RedisNil {
return
}
@ -320,6 +328,7 @@ func (this *DBModel) Get(uid string, data interface{}, opt ...DBOption) (err err
//获取列表数据 注意 data 必须是 切片的指针 *[]type
func (this *DBModel) GetList(uid string, data interface{}) (err error) {
//defer log.Debug("DBModel GetList", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "data", Value: data})
var (
dtype reflect2.Type
dkind reflect.Kind
@ -435,6 +444,7 @@ func (this *DBModel) GetList(uid string, data interface{}) (err error) {
//获取队列数据
func (this *DBModel) GetQueues(key string, count int, data interface{}) (err error) {
//defer log.Debug("DBModel GetQueues", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "key", Value: key}, log.Field{Key: "data", Value: data})
var (
dtype reflect2.Type
dkind reflect.Kind
@ -505,6 +515,7 @@ func (this *DBModel) GetQueues(key string, count int, data interface{}) (err err
//读取单个数据中 多个字段数据
func (this *DBModel) GetFields(uid string, data interface{}, fields ...string) (err error) {
//defer log.Debug("DBModel GetFields", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "data", Value: data})
if err = this.Redis.HMGet(this.ukey(uid), data, fields...); err != nil && err != lgredis.RedisNil {
return
}
@ -524,6 +535,7 @@ func (this *DBModel) GetFields(uid string, data interface{}, fields ...string) (
//读取List列表中单个数据中 多个字段数据
func (this *DBModel) GetListFields(uid string, id string, data interface{}, fields ...string) (err error) {
//defer log.Debug("DBModel GetListFields", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "id", Value: id}, log.Field{Key: "data", Value: data})
var (
c *mongo.Cursor
keys map[string]string
@ -578,6 +590,7 @@ func (this *DBModel) GetListFields(uid string, id string, data interface{}, fiel
//读取列表数据中单个数据
func (this *DBModel) GetListObj(uid string, id string, data interface{}) (err error) {
//defer log.Debug("DBModel GetListObj", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "id", Value: id}, log.Field{Key: "data", Value: data})
var (
c *mongo.Cursor
keys map[string]string
@ -642,6 +655,7 @@ func (this *DBModel) GetListObj(uid string, id string, data interface{}) (err er
//读取列表数据中单个数据
func (this *DBModel) GetListObjs(uid string, ids []string, data interface{}) (err error) {
//defer log.Debug("DBModel GetListObjs", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "ids", Value: ids}, log.Field{Key: "data", Value: data})
var (
dtype reflect2.Type
dkind reflect.Kind
@ -754,6 +768,7 @@ func (this *DBModel) GetListObjs(uid string, ids []string, data interface{}) (er
//删除用户数据
func (this *DBModel) Del(uid string, opt ...DBOption) (err error) {
//defer log.Debug("DBModel Del", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid})
err = this.Redis.Delete(this.ukey(uid))
if err != nil {
return err
@ -767,6 +782,7 @@ func (this *DBModel) Del(uid string, opt ...DBOption) (err error) {
//删除多条数据
func (this *DBModel) DelListlds(uid string, ids ...string) (err error) {
//defer log.Debug("DBModel DelListlds", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "ids", Value: ids})
listkey := this.ukey(uid)
pipe := this.Redis.RedisPipe(context.TODO())
for _, v := range ids {
@ -782,6 +798,7 @@ func (this *DBModel) DelListlds(uid string, ids ...string) (err error) {
//批量删除数据
func (this *DBModel) BatchDelLists(uid string) (err error) {
//defer log.Debug("DBModel BatchDelLists", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid})
var keys map[string]string
pipe := this.Redis.RedisPipe(context.TODO())
if keys, err = this.Redis.HGetAllToMapString(this.ukey(uid)); err == nil {