diff --git a/bin/json/game_com.json b/bin/json/game_com.json
index 00f11b087..26ae44012 100644
--- a/bin/json/game_com.json
+++ b/bin/json/game_com.json
@@ -79,6 +79,31 @@
"t": "10005",
"n": 1
},
+ "base_pool_10cost": {
+ "a": "item",
+ "t": "10001",
+ "n": 10
+ },
+ "camp1_pool_10cost": {
+ "a": "item",
+ "t": "10002",
+ "n": 10
+ },
+ "camp2_pool_10cost": {
+ "a": "item",
+ "t": "10003",
+ "n": 10
+ },
+ "camp3_pool_10cost": {
+ "a": "item",
+ "t": "10004",
+ "n": 10
+ },
+ "camp4_pool_10cost": {
+ "a": "item",
+ "t": "10005",
+ "n": 10
+ },
"camp1_pool1": "camp1_pool",
"camp2_pool1": "camp2_pool",
"camp3_pool1": "camp3_pool",
@@ -109,6 +134,8 @@
"camp_pool_star3": 9000,
"camp_pool_star4": 900,
"camp_pool_star5": 100,
- "gourmet": 500
+ "gourmet": 500,
+ "smithy_maxplayer": 20,
+ "smithy_maxtime": 36000
}
]
\ No newline at end of file
diff --git a/bin/json/game_extservers.json b/bin/json/game_extservers.json
index 679d03863..7a1bf41d0 100644
--- a/bin/json/game_extservers.json
+++ b/bin/json/game_extservers.json
@@ -11,16 +11,6 @@
},
{
"index": 2,
- "name": {
- "key": "server_10003",
- "text": "和平谷"
- },
- "ips": "119.3.89.14:7891",
- "debug": false,
- "sid": ""
- },
- {
- "index": 3,
"name": {
"key": "debug_server_01",
"text": "lw"
@@ -30,7 +20,7 @@
"sid": "dfli01"
},
{
- "index": 4,
+ "index": 3,
"name": {
"key": "debug_server_02",
"text": "mxf"
@@ -40,33 +30,43 @@
"sid": "dfmxf"
},
{
- "index": 5,
+ "index": 4,
"name": {
"key": "server_10004",
"text": "凤凰城"
},
- "ips": "119.3.89.14:7891",
+ "ips": "119.3.89.14:9891",
"debug": false,
- "sid": ""
+ "sid": "df01"
},
{
- "index": 6,
+ "index": 5,
"name": {
"key": "server_10005",
"text": "翡翠宫"
},
- "ips": "119.3.89.14:7891",
+ "ips": "119.3.89.14:9891",
"debug": false,
- "sid": ""
+ "sid": "df01"
},
{
- "index": 7,
+ "index": 6,
"name": {
"key": "server_10006",
"text": "乌鸦岭"
},
- "ips": "119.3.89.14:7891",
+ "ips": "119.3.89.14:9891",
"debug": false,
- "sid": ""
+ "sid": "df01"
+ },
+ {
+ "index": 7,
+ "name": {
+ "key": "server_10003",
+ "text": "和平谷"
+ },
+ "ips": "119.3.89.14:9891",
+ "debug": false,
+ "sid": "df01"
}
]
\ No newline at end of file
diff --git a/bin/json/game_global.json b/bin/json/game_global.json
index 00f11b087..26ae44012 100644
--- a/bin/json/game_global.json
+++ b/bin/json/game_global.json
@@ -79,6 +79,31 @@
"t": "10005",
"n": 1
},
+ "base_pool_10cost": {
+ "a": "item",
+ "t": "10001",
+ "n": 10
+ },
+ "camp1_pool_10cost": {
+ "a": "item",
+ "t": "10002",
+ "n": 10
+ },
+ "camp2_pool_10cost": {
+ "a": "item",
+ "t": "10003",
+ "n": 10
+ },
+ "camp3_pool_10cost": {
+ "a": "item",
+ "t": "10004",
+ "n": 10
+ },
+ "camp4_pool_10cost": {
+ "a": "item",
+ "t": "10005",
+ "n": 10
+ },
"camp1_pool1": "camp1_pool",
"camp2_pool1": "camp2_pool",
"camp3_pool1": "camp3_pool",
@@ -109,6 +134,8 @@
"camp_pool_star3": 9000,
"camp_pool_star4": 900,
"camp_pool_star5": 100,
- "gourmet": 500
+ "gourmet": 500,
+ "smithy_maxplayer": 20,
+ "smithy_maxtime": 36000
}
]
\ No newline at end of file
diff --git a/bin/json/game_rdtaksall.json b/bin/json/game_rdtaksall.json
new file mode 100644
index 000000000..7347b8308
--- /dev/null
+++ b/bin/json/game_rdtaksall.json
@@ -0,0 +1,66 @@
+[
+ {
+ "rdtaks_id": 1001,
+ "task_type": 2,
+ "rdtaks_num": [
+ 101,
+ 102
+ ],
+ "id_last": [
+ 0
+ ],
+ "id_after": 1002,
+ "id_tag": 1,
+ "story": 3,
+ "completetask": 0,
+ "reword": [
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 10
+ },
+ {
+ "a": "attr",
+ "t": "gold",
+ "n": 1000
+ }
+ ],
+ "choose_id": [
+ 10001,
+ 10002,
+ 10003
+ ]
+ },
+ {
+ "rdtaks_id": 1002,
+ "task_type": 2,
+ "rdtaks_num": [
+ 101,
+ 104
+ ],
+ "id_last": [
+ 1001
+ ],
+ "id_after": 0,
+ "id_tag": 2,
+ "story": 3,
+ "completetask": 0,
+ "reword": [
+ {
+ "a": "attr",
+ "t": "diamond",
+ "n": 15
+ },
+ {
+ "a": "attr",
+ "t": "gold",
+ "n": 1500
+ }
+ ],
+ "choose_id": [
+ 10011,
+ 10012,
+ 10013
+ ]
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_rdtakschoose.json b/bin/json/game_rdtakschoose.json
new file mode 100644
index 000000000..8ef50afe8
--- /dev/null
+++ b/bin/json/game_rdtakschoose.json
@@ -0,0 +1,38 @@
+[
+ {
+ "choose_id": 10001,
+ "num": 1,
+ "rdtaks_num": 104,
+ "rdtaks_id": 0
+ },
+ {
+ "choose_id": 10002,
+ "num": 2,
+ "rdtaks_num": 105,
+ "rdtaks_id": 1002
+ },
+ {
+ "choose_id": 10003,
+ "num": 3,
+ "rdtaks_num": 0,
+ "rdtaks_id": 0
+ },
+ {
+ "choose_id": 10011,
+ "num": 1,
+ "rdtaks_num": 106,
+ "rdtaks_id": 0
+ },
+ {
+ "choose_id": 10012,
+ "num": 2,
+ "rdtaks_num": 107,
+ "rdtaks_id": 0
+ },
+ {
+ "choose_id": 10013,
+ "num": 3,
+ "rdtaks_num": 0,
+ "rdtaks_id": 0
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_rdtakstype.json b/bin/json/game_rdtakstype.json
new file mode 100644
index 000000000..08ee6b0e7
--- /dev/null
+++ b/bin/json/game_rdtakstype.json
@@ -0,0 +1,74 @@
+[
+ {
+ "rdtaks_num": 101,
+ "typdes": 2,
+ "datatime": 1,
+ "typtask_id": 1,
+ "data1": 90001,
+ "data2": 0,
+ "data3": 0
+ },
+ {
+ "rdtaks_num": 102,
+ "typdes": 2,
+ "datatime": 1,
+ "typtask_id": 2,
+ "data1": 10,
+ "data2": 0,
+ "data3": 0
+ },
+ {
+ "rdtaks_num": 103,
+ "typdes": 2,
+ "datatime": 1,
+ "typtask_id": 3,
+ "data1": 3,
+ "data2": 0,
+ "data3": 0
+ },
+ {
+ "rdtaks_num": 104,
+ "typdes": 2,
+ "datatime": 1,
+ "typtask_id": 4,
+ "data1": 2,
+ "data2": 0,
+ "data3": 0
+ },
+ {
+ "rdtaks_num": 105,
+ "typdes": 2,
+ "datatime": 1,
+ "typtask_id": 5,
+ "data1": 101,
+ "data2": 0,
+ "data3": 0
+ },
+ {
+ "rdtaks_num": 106,
+ "typdes": 2,
+ "datatime": 1,
+ "typtask_id": 6,
+ "data1": 3,
+ "data2": 0,
+ "data3": 0
+ },
+ {
+ "rdtaks_num": 107,
+ "typdes": 2,
+ "datatime": 1,
+ "typtask_id": 7,
+ "data1": 10002,
+ "data2": 0,
+ "data3": 0
+ },
+ {
+ "rdtaks_num": 108,
+ "typdes": 2,
+ "datatime": 1,
+ "typtask_id": 8,
+ "data1": 90001,
+ "data2": 15,
+ "data3": 0
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_skill.json b/bin/json/game_skill.json
index 65446527a..ca933420c 100644
--- a/bin/json/game_skill.json
+++ b/bin/json/game_skill.json
@@ -6733,21 +6733,10 @@
"Type": 3,
"MaxLV": 1,
"CD": [
- -1,
- -1,
- -1,
- -1,
- -1,
-1
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 225004011
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1250040111"
],
@@ -6759,7 +6748,7 @@
"key": "skillname_125004111",
"text": "波比1技能"
},
- "ico": "skillicon_004",
+ "ico": "jn_icon_001",
"act": "Skill_1",
"Type": 1,
"MaxLV": 6,
@@ -6772,44 +6761,7 @@
0
],
"Target": 4,
- "ChildSkill": [
- {
- "Id": [
- 225004111,
- 225004112
- ]
- },
- {
- "Id": [
- 225004121,
- 225004122
- ]
- },
- {
- "Id": [
- 225004131,
- 225004132
- ]
- },
- {
- "Id": [
- 225004141,
- 225004142
- ]
- },
- {
- "Id": [
- 225004151,
- 225004152
- ]
- },
- {
- "Id": [
- 225004161,
- 225004162
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1250041111",
"skill_1250041112",
@@ -6826,42 +6778,17 @@
"key": "skillname_125004211",
"text": "波比2技能"
},
- "ico": "skillicon_005",
+ "ico": "jn_icon_002",
"act": "Skill_2",
"Type": 2,
"MaxLV": 3,
"CD": [
5,
4,
- 3,
- 3,
- 3,
3
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 225004211,
- 225004212,
- 225004213
- ]
- },
- {
- "Id": [
- 225004211,
- 225004212,
- 225004213
- ]
- },
- {
- "Id": [
- 225004211,
- 225004212,
- 225004213
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1250042111",
"skill_1250042112",
@@ -6875,7 +6802,7 @@
"key": "skillname_125004311",
"text": "波比3技能"
},
- "ico": "skillicon_006",
+ "ico": "jn_icon_003",
"act": "Skill_3",
"Type": 1,
"MaxLV": 5,
@@ -6884,37 +6811,10 @@
5,
5,
5,
- 4,
4
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 225004311
- ]
- },
- {
- "Id": [
- 225004312
- ]
- },
- {
- "Id": [
- 225004313
- ]
- },
- {
- "Id": [
- 225004314
- ]
- },
- {
- "Id": [
- 225004315
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1250043111",
"skill_1250043112",
@@ -6935,21 +6835,10 @@
"Type": 3,
"MaxLV": 1,
"CD": [
- -1,
- -1,
- -1,
- -1,
- -1,
-1
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 235002011
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1350020111"
],
@@ -6961,7 +6850,7 @@
"key": "skillname_135002111",
"text": "希卡普1技能"
},
- "ico": "skillicon_007",
+ "ico": "jn_icon_001",
"act": "Skill_1",
"Type": 1,
"MaxLV": 6,
@@ -6974,47 +6863,7 @@
0
],
"Target": 4,
- "ChildSkill": [
- {
- "Id": [
- 235002011,
- 235002111,
- 235002112,
- 235002113,
- 235002114
- ]
- },
- {
- "Id": [
- 235002122,
- 235002124
- ]
- },
- {
- "Id": [
- 235002132,
- 235002134
- ]
- },
- {
- "Id": [
- 235002142,
- 235002144
- ]
- },
- {
- "Id": [
- 235002152,
- 235002154
- ]
- },
- {
- "Id": [
- 235002162,
- 235002164
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1350021111",
"skill_1350021112",
@@ -7031,7 +6880,7 @@
"key": "skillname_135002211",
"text": "希卡普2技能"
},
- "ico": "skillicon_008",
+ "ico": "jn_icon_002",
"act": "Skill_2",
"Type": 2,
"MaxLV": 1,
@@ -7039,17 +6888,7 @@
-1
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 235002211,
- 235002212,
- 235002213,
- 235002214,
- 235002215
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1350022111"
],
@@ -7061,7 +6900,7 @@
"key": "skillname_135002311",
"text": "希卡普3技能"
},
- "ico": "skillicon_009",
+ "ico": "jn_icon_003",
"act": "Skill_3",
"Type": 1,
"MaxLV": 6,
@@ -7074,45 +6913,7 @@
4
],
"Target": 2,
- "ChildSkill": [
- {
- "Id": [
- 235002311,
- 235002312,
- 235002313
- ]
- },
- {
- "Id": [
- 235002321,
- 235002322
- ]
- },
- {
- "Id": [
- 235002331,
- 235002332
- ]
- },
- {
- "Id": [
- 235002341,
- 235002342
- ]
- },
- {
- "Id": [
- 235002351,
- 235002352
- ]
- },
- {
- "Id": [
- 235002361,
- 235002362
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1350023111",
"skill_1350023112",
@@ -7126,7 +6927,7 @@
{
"Id": 935002411,
"Name": {
- "key": "skillname_935002321",
+ "key": "skillname_935002411",
"text": "希卡普3技能"
},
"ico": "jn_icon_003",
@@ -7142,46 +6943,7 @@
4
],
"Target": 2,
- "ChildSkill": [
- {
- "Id": [
- 935002311,
- 935002312,
- 935002313,
- 935002314
- ]
- },
- {
- "Id": [
- 935002321,
- 935002322
- ]
- },
- {
- "Id": [
- 935002331,
- 935002332
- ]
- },
- {
- "Id": [
- 935002341,
- 935002342
- ]
- },
- {
- "Id": [
- 935002351,
- 935002352
- ]
- },
- {
- "Id": [
- 935002361,
- 935002362
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_9350023211",
"skill_9350023212",
@@ -7206,13 +6968,7 @@
-1
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 224003011
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1240030111"
],
@@ -7236,44 +6992,7 @@
0
],
"Target": 4,
- "ChildSkill": [
- {
- "Id": [
- 224003111,
- 224003112
- ]
- },
- {
- "Id": [
- 224003121,
- 224003122
- ]
- },
- {
- "Id": [
- 224003131,
- 224003132
- ]
- },
- {
- "Id": [
- 224003141,
- 224003142
- ]
- },
- {
- "Id": [
- 224003151,
- 224003152
- ]
- },
- {
- "Id": [
- 224003161,
- 224003162
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1240031111",
"skill_1240031112",
@@ -7298,20 +7017,7 @@
3
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 224003211,
- 224003212
- ]
- },
- {
- "Id": [
- 224003211,
- 224003212
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1240032111",
"skill_1240032112"
@@ -7337,50 +7043,7 @@
3
],
"Target": 2,
- "ChildSkill": [
- {
- "Id": [
- 224003311,
- 224003312,
- 224003313
- ]
- },
- {
- "Id": [
- 224003311,
- 224003322,
- 224003323
- ]
- },
- {
- "Id": [
- 224003311,
- 224003332,
- 224003333
- ]
- },
- {
- "Id": [
- 224003311,
- 224003342,
- 224003343
- ]
- },
- {
- "Id": [
- 224003311,
- 224003352,
- 224003353
- ]
- },
- {
- "Id": [
- 224003311,
- 224003362,
- 224003363
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1240033111",
"skill_1240033112",
@@ -7406,26 +7069,117 @@
3
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 924003411,
- 924003412,
- 924003413
- ]
- },
- {
- "Id": [
- 924003411,
- 924003412,
- 924003413
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_9240034111",
"skill_9240034112"
],
"buffid": []
+ },
+ {
+ "Id": 134006011,
+ "Name": {
+ "key": "skillname_134006011",
+ "text": "杰克队长技"
+ },
+ "ico": "jn_dzj_01",
+ "act": "Skill_1",
+ "Type": 3,
+ "MaxLV": 1,
+ "CD": [
+ -1
+ ],
+ "Target": 1,
+ "ChildSkill": [],
+ "Desc": [],
+ "buffid": []
+ },
+ {
+ "Id": 134006111,
+ "Name": {
+ "key": "skillname_134006111",
+ "text": "杰克1技能"
+ },
+ "ico": "jn_icon_001",
+ "act": "Skill_2",
+ "Type": 1,
+ "MaxLV": 5,
+ "CD": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "Target": 4,
+ "ChildSkill": [],
+ "Desc": [],
+ "buffid": []
+ },
+ {
+ "Id": 134006211,
+ "Name": {
+ "key": "skillname_134006211",
+ "text": "杰克2技能"
+ },
+ "ico": "jn_icon_002",
+ "act": "Skill_3",
+ "Type": 1,
+ "MaxLV": 5,
+ "CD": [
+ 5,
+ 5,
+ 5,
+ 5,
+ 4
+ ],
+ "Target": 2,
+ "ChildSkill": [],
+ "Desc": [],
+ "buffid": []
+ },
+ {
+ "Id": 134006311,
+ "Name": {
+ "key": "skillname_134006311",
+ "text": "杰克3技能"
+ },
+ "ico": "jn_icon_003",
+ "act": "Skill_2",
+ "Type": 1,
+ "MaxLV": 5,
+ "CD": [
+ 4,
+ 4,
+ 4,
+ 4,
+ 3
+ ],
+ "Target": 2,
+ "ChildSkill": [],
+ "Desc": [],
+ "buffid": []
+ },
+ {
+ "Id": 934006411,
+ "Name": {
+ "key": "skillname_934006411",
+ "text": "杰克2技能"
+ },
+ "ico": "jn_icon_002",
+ "act": "Skill_3",
+ "Type": 4,
+ "MaxLV": 5,
+ "CD": [
+ 5,
+ 5,
+ 5,
+ 5,
+ 4
+ ],
+ "Target": 2,
+ "ChildSkill": [],
+ "Desc": [],
+ "buffid": []
}
]
\ No newline at end of file
diff --git a/bin/json/game_skillafteratk.json b/bin/json/game_skillafteratk.json
index 307c54ac4..2d2a12a4b 100644
--- a/bin/json/game_skillafteratk.json
+++ b/bin/json/game_skillafteratk.json
@@ -3655,7 +3655,7 @@
"Where": [],
"Order": [],
"Type": "AddBuff",
- "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001001,Round=-1,BufPro1=Total_Hp,BufVal1=300,BufQuaType1=1",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001001,Round=-1,BufPro1=Total_Hp,BufVal1=300,BufQuaType1=1,BufParNum1=1",
"AddEffect": false,
"FollowSK": [],
"SucFollowSK": [],
@@ -3677,7 +3677,7 @@
"Argu": "DoVal=3,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=300",
"AddEffect": false,
"FollowSK": [
- 290012102
+ 225004112
],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -3717,7 +3717,7 @@
"Argu": "DoVal=3,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=350",
"AddEffect": false,
"FollowSK": [
- 290012112
+ 225004122
],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -3757,7 +3757,7 @@
"Argu": "DoVal=3,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=350",
"AddEffect": false,
"FollowSK": [
- 290012122
+ 225004132
],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -3797,7 +3797,7 @@
"Argu": "DoVal=3,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=400",
"AddEffect": false,
"FollowSK": [
- 290012132
+ 225004142
],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -3837,7 +3837,7 @@
"Argu": "DoVal=3,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=400",
"AddEffect": false,
"FollowSK": [
- 290012142
+ 225004152
],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -3877,7 +3877,7 @@
"Argu": "DoVal=3,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=450",
"AddEffect": false,
"FollowSK": [
- 290012152
+ 225004162
],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -3952,7 +3952,7 @@
"Where": [],
"Order": [],
"Type": "AddBuff",
- "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001001,Round=2,BufPro1=Total_Atk,BufVal1=400,BufQuaType1=1",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001001,Round=2,BufPro1=Total_Atk,BufVal1=400,BufQuaType1=1,BufParNum1=1",
"AddEffect": false,
"FollowSK": [],
"SucFollowSK": [],
@@ -3990,7 +3990,7 @@
"Where": [],
"Order": [],
"Type": "AddBuff",
- "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=300102103,Round=2,BufPro1=DamRe,BufVal1=250,BufQuaType1=1",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=300102103,Round=2,BufPro1=DamRe,BufVal1=250,BufQuaType1=1,BufParNum1=1",
"AddEffect": false,
"FollowSK": [],
"SucFollowSK": [],
@@ -4066,7 +4066,7 @@
"Where": [],
"Order": [],
"Type": "AddBuff",
- "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001001,Round=2,BufPro1=Total_EffHit,BufVal1=400,BufQuaType1=1",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001001,Round=2,BufPro1=Total_EffHit,BufVal1=400,BufQuaType1=1,BufParNum1=1",
"AddEffect": false,
"FollowSK": [],
"SucFollowSK": [],
@@ -4085,12 +4085,12 @@
"Where": [],
"Order": [],
"Type": "Dmg",
- "Argu": "DoVal=1,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=300",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=2,Pro1=Total_Atk,ProPar1=300",
"AddEffect": false,
- "FollowSK": [
- 235002113
+ "FollowSK": [],
+ "SucFollowSK": [
+ "235002113"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4106,12 +4106,12 @@
"Where": [],
"Order": [],
"Type": "Dmg",
- "Argu": "DoVal=1,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=800",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=2,Pro1=Total_Atk,ProPar1=800",
"AddEffect": false,
- "FollowSK": [
- 235002113
+ "FollowSK": [],
+ "SucFollowSK": [
+ "235002113"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4149,7 +4149,7 @@
"Order": [],
"Type": "AddBuff",
"Argu": "DoVal=1,Pr=500,NumVal=1,Id=390004001,Round=1",
- "AddEffect": false,
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -4167,12 +4167,12 @@
"Where": [],
"Order": [],
"Type": "Dmg",
- "Argu": "DoVal=1,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=900",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=2,Pro1=Total_Atk,ProPar1=900",
"AddEffect": false,
- "FollowSK": [
- 235002113
+ "FollowSK": [],
+ "SucFollowSK": [
+ "235002124"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4189,7 +4189,7 @@
"Order": [],
"Type": "AddBuff",
"Argu": "DoVal=1,Pr=500,NumVal=1,Id=390004001,Round=1",
- "AddEffect": false,
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -4207,12 +4207,12 @@
"Where": [],
"Order": [],
"Type": "Dmg",
- "Argu": "DoVal=1,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=900",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=2,Pro1=Total_Atk,ProPar1=900",
"AddEffect": false,
- "FollowSK": [
- 235002113
+ "FollowSK": [],
+ "SucFollowSK": [
+ "235002134"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4229,7 +4229,7 @@
"Order": [],
"Type": "AddBuff",
"Argu": "DoVal=1,Pr=600,NumVal=1,Id=390004001,Round=1",
- "AddEffect": false,
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -4247,12 +4247,12 @@
"Where": [],
"Order": [],
"Type": "Dmg",
- "Argu": "DoVal=1,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=1000",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=2,Pro1=Total_Atk,ProPar1=1000",
"AddEffect": false,
- "FollowSK": [
- 235002113
+ "FollowSK": [],
+ "SucFollowSK": [
+ "235002144"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4269,7 +4269,7 @@
"Order": [],
"Type": "AddBuff",
"Argu": "DoVal=1,Pr=600,NumVal=1,Id=390004001,Round=1",
- "AddEffect": false,
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -4287,12 +4287,12 @@
"Where": [],
"Order": [],
"Type": "Dmg",
- "Argu": "DoVal=1,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=1000",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=2,Pro1=Total_Atk,ProPar1=1000",
"AddEffect": false,
- "FollowSK": [
- 235002113
+ "FollowSK": [],
+ "SucFollowSK": [
+ "235002154"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4309,7 +4309,7 @@
"Order": [],
"Type": "AddBuff",
"Argu": "DoVal=1,Pr=700,NumVal=1,Id=390004001,Round=1",
- "AddEffect": false,
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -4327,12 +4327,12 @@
"Where": [],
"Order": [],
"Type": "Dmg",
- "Argu": "DoVal=1,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=1100",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=2,Pro1=Total_Atk,ProPar1=1100",
"AddEffect": false,
- "FollowSK": [
- 235002113
+ "FollowSK": [],
+ "SucFollowSK": [
+ "235002164"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4349,7 +4349,7 @@
"Order": [],
"Type": "AddBuff",
"Argu": "DoVal=1,Pr=700,NumVal=1,Id=390004001,Round=1",
- "AddEffect": false,
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -4386,7 +4386,7 @@
"Where": [],
"Order": [],
"Type": "AddPas",
- "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=435002201,Round=-1,PasPr=1000,PasRouCD=0,PasId1=290012304",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=435002201,Round=-1,PasPr=1000,PasRouCD=0,PasId1=235002213,PasId2=235002214,PasId3=235002215",
"AddEffect": false,
"FollowSK": [],
"SucFollowSK": [],
@@ -4464,10 +4464,10 @@
"Type": "Dmg",
"Argu": "DoVal=3,Pr=1000,Suck=0,ProSou1=1,Pro1=Total_Atk,ProPar1=350",
"AddEffect": false,
- "FollowSK": [
- 235002312
+ "FollowSK": [],
+ "SucFollowSK": [
+ "235002312"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4504,8 +4504,8 @@
"Where": [],
"Order": [],
"Type": "AddBuff",
- "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390002006,Round=2,BufPro1=MissPr,BufVal1=500,BufQuaType1=0",
- "AddEffect": false,
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390002006,Round=2,BufPro1=MissPr,BufVal1=500,BufQuaType1=0,BufParNum1=1",
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -4525,10 +4525,10 @@
"Type": "Dmg",
"Argu": "DoVal=3,Pr=1000,Suck=0,ProSou1=1,Pro1=Total_Atk,ProPar1=370",
"AddEffect": false,
- "FollowSK": [
- 235002322
+ "FollowSK": [],
+ "SucFollowSK": [
+ "235002322"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4567,10 +4567,10 @@
"Type": "Dmg",
"Argu": "DoVal=3,Pr=1000,Suck=0,ProSou1=1,Pro1=Total_Atk,ProPar1=370",
"AddEffect": false,
- "FollowSK": [
- 235002332
+ "FollowSK": [],
+ "SucFollowSK": [
+ "235002332"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4609,10 +4609,10 @@
"Type": "Dmg",
"Argu": "DoVal=3,Pr=1000,Suck=0,ProSou1=1,Pro1=Total_Atk,ProPar1=400",
"AddEffect": false,
- "FollowSK": [
- 235002342
+ "FollowSK": [],
+ "SucFollowSK": [
+ "235002342"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4651,10 +4651,10 @@
"Type": "Dmg",
"Argu": "DoVal=3,Pr=1000,Suck=0,ProSou1=1,Pro1=Total_Atk,ProPar1=400",
"AddEffect": false,
- "FollowSK": [
- 235002352
+ "FollowSK": [],
+ "SucFollowSK": [
+ "235002352"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4693,11 +4693,11 @@
"Type": "Dmg",
"Argu": "DoVal=3,Pr=1000,Suck=0,ProSou1=1,Pro1=Total_Atk,ProPar1=350",
"AddEffect": false,
- "FollowSK": [
- 935002312,
- 935002314
+ "FollowSK": [],
+ "SucFollowSK": [
+ "935002312",
+ "935002314"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4734,8 +4734,8 @@
"Where": [],
"Order": [],
"Type": "AddBuff",
- "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390002006,Round=2,BufPro1=MissPr,BufVal1=500,BufQuaType1=0",
- "AddEffect": false,
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390002006,Round=2,BufPro1=MissPr,BufVal1=500,BufQuaType1=0,BufParNum1=1",
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -4774,11 +4774,11 @@
"Type": "Dmg",
"Argu": "DoVal=3,Pr=1000,Suck=0,ProSou1=1,Pro1=Total_Atk,ProPar1=370",
"AddEffect": false,
- "FollowSK": [
- 935002322,
- 935002314
+ "FollowSK": [],
+ "SucFollowSK": [
+ "935002322",
+ "935002314"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4817,11 +4817,11 @@
"Type": "Dmg",
"Argu": "DoVal=3,Pr=1000,Suck=0,ProSou1=1,Pro1=Total_Atk,ProPar1=370",
"AddEffect": false,
- "FollowSK": [
- 935002332,
- 935002314
+ "FollowSK": [],
+ "SucFollowSK": [
+ "935002332",
+ "935002314"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4860,11 +4860,11 @@
"Type": "Dmg",
"Argu": "DoVal=3,Pr=1000,Suck=0,ProSou1=1,Pro1=Total_Atk,ProPar1=400",
"AddEffect": false,
- "FollowSK": [
- 935002342,
- 935002314
+ "FollowSK": [],
+ "SucFollowSK": [
+ "935002342",
+ "935002314"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4903,11 +4903,11 @@
"Type": "Dmg",
"Argu": "DoVal=3,Pr=1000,Suck=0,ProSou1=1,Pro1=Total_Atk,ProPar1=400",
"AddEffect": false,
- "FollowSK": [
- 935002352,
- 935002314
+ "FollowSK": [],
+ "SucFollowSK": [
+ "935002352",
+ "935002314"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4944,7 +4944,7 @@
"Where": [],
"Order": [],
"Type": "AddBuff",
- "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001001,Round=-1,BufPro1=Total_EffHit,BufVal1=300,BufQuaType1=1",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001001,Round=-1,BufPro1=Total_EffHit,BufVal1=300,BufQuaType1=1,BufParNum1=1",
"AddEffect": false,
"FollowSK": [],
"SucFollowSK": [],
@@ -4963,12 +4963,12 @@
"Where": [],
"Order": [],
"Type": "Dmg",
- "Argu": "DoVal=1,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=900",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=2,Pro1=Total_Atk,ProPar1=900",
"AddEffect": false,
- "FollowSK": [
- 224003112
+ "FollowSK": [],
+ "SucFollowSK": [
+ "224003112"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -4985,7 +4985,7 @@
"Order": [],
"Type": "AddBuff",
"Argu": "DoVal=1,Pr=500,NumVal=1,Id=390004010,Round=1",
- "AddEffect": false,
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -5003,12 +5003,12 @@
"Where": [],
"Order": [],
"Type": "Dmg",
- "Argu": "DoVal=1,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=1000",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=2,Pro1=Total_Atk,ProPar1=1000",
"AddEffect": false,
- "FollowSK": [
- 224003112
+ "FollowSK": [],
+ "SucFollowSK": [
+ "224003112"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -5025,7 +5025,7 @@
"Order": [],
"Type": "AddBuff",
"Argu": "DoVal=1,Pr=500,NumVal=1,Id=390004010,Round=1",
- "AddEffect": false,
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -5043,12 +5043,12 @@
"Where": [],
"Order": [],
"Type": "Dmg",
- "Argu": "DoVal=1,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=1000",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=2,Pro1=Total_Atk,ProPar1=1000",
"AddEffect": false,
- "FollowSK": [
- 224003112
+ "FollowSK": [],
+ "SucFollowSK": [
+ "224003112"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -5065,7 +5065,7 @@
"Order": [],
"Type": "AddBuff",
"Argu": "DoVal=1,Pr=600,NumVal=1,Id=390004010,Round=1",
- "AddEffect": false,
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -5083,12 +5083,12 @@
"Where": [],
"Order": [],
"Type": "Dmg",
- "Argu": "DoVal=1,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=1100",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=2,Pro1=Total_Atk,ProPar1=1100",
"AddEffect": false,
- "FollowSK": [
- 224003112
+ "FollowSK": [],
+ "SucFollowSK": [
+ "224003112"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -5105,7 +5105,7 @@
"Order": [],
"Type": "AddBuff",
"Argu": "DoVal=1,Pr=600,NumVal=1,Id=390004010,Round=1",
- "AddEffect": false,
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -5123,12 +5123,12 @@
"Where": [],
"Order": [],
"Type": "Dmg",
- "Argu": "DoVal=1,Pr=1000,ProSou1=0,Pro1=Total_Atk,ProPar1=1100",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=2,Pro1=Total_Atk,ProPar1=1100",
"AddEffect": false,
- "FollowSK": [
- 224003112
+ "FollowSK": [],
+ "SucFollowSK": [
+ "224003112"
],
- "SucFollowSK": [],
"FailFollowSK": [],
"MustHit": false,
"Tags": [],
@@ -5145,7 +5145,7 @@
"Order": [],
"Type": "AddBuff",
"Argu": "DoVal=1,Pr=700,NumVal=1,Id=390004010,Round=1",
- "AddEffect": false,
+ "AddEffect": true,
"FollowSK": [],
"SucFollowSK": [],
"FailFollowSK": [],
@@ -5182,7 +5182,7 @@
"Where": [],
"Order": [],
"Type": "AddBuff",
- "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=1",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=1,BufParNum1=1",
"AddEffect": false,
"FollowSK": [],
"SucFollowSK": [],
@@ -5220,7 +5220,7 @@
"Where": [],
"Order": [],
"Type": "AddBuff",
- "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=1",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=1,BufParNum1=1",
"AddEffect": false,
"FollowSK": [],
"SucFollowSK": [],
@@ -5239,7 +5239,7 @@
"Where": [],
"Order": [],
"Type": "AddBuff",
- "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001002,Round=2,BufPro1=Total_Agi,BufVal1=600,BufQuaType1=1",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001002,Round=2,BufPro1=Total_Agi,BufVal1=600,BufQuaType1=1,BufParNum1=1",
"AddEffect": false,
"FollowSK": [],
"SucFollowSK": [],
@@ -5467,7 +5467,808 @@
"Where": [],
"Order": [],
"Type": "AddBuff",
- "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001003,Round=-1,BufPro1=Total_Agi,BufVal1=200,BufQuaType1=1",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390001003,Round=-1,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=1,BufParNum1=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006111,
+ "Desc": "对敌方1个目标造成2次攻击力50%的伤害",
+ "From": 4,
+ "Limit": 1,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=2,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=500",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006112"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006112,
+ "Desc": "有60%概率为目标附加2回合【速度下降】",
+ "From": 4,
+ "Limit": 1,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=600,NumVal=1,Id=390002003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=0,BufParNum1=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006121,
+ "Desc": "对敌方1个目标造成2次攻击力55%的伤害",
+ "From": 4,
+ "Limit": 1,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=2,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=550",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006122"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006122,
+ "Desc": "有60%概率为目标附加2回合【速度下降】",
+ "From": 4,
+ "Limit": 1,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=600,NumVal=1,Id=390002003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=0,BufParNum1=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006131,
+ "Desc": "对敌方1个目标造成2次攻击力55%的伤害",
+ "From": 4,
+ "Limit": 1,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=2,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=550",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006132"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006132,
+ "Desc": "有70%概率为目标附加2回合【速度下降】",
+ "From": 4,
+ "Limit": 1,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=700,NumVal=1,Id=390002003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=0,BufParNum1=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006141,
+ "Desc": "对敌方1个目标造成2次攻击力60%的伤害",
+ "From": 4,
+ "Limit": 1,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=2,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=600",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006142"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006142,
+ "Desc": "有70%概率为目标附加2回合【速度下降】",
+ "From": 4,
+ "Limit": 1,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=700,NumVal=1,Id=390002003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=0,BufParNum1=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006151,
+ "Desc": "对敌方1个目标造成2次攻击力60%的伤害",
+ "From": 4,
+ "Limit": 1,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=2,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=600",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006152"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006152,
+ "Desc": "有80%概率为目标附加2回合【速度下降】",
+ "From": 4,
+ "Limit": 1,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=800,NumVal=1,Id=390002003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=0,BufParNum1=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006211,
+ "Desc": "攻击全体敌方,伤害为自身攻击力70%",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=700",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006212"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006212,
+ "Desc": "70%概率降低目标30%行动值;",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddActValue",
+ "Argu": "DoVal=1,Pr=700,QuaType=0,Val=300",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006221,
+ "Desc": "攻击全体敌方,伤害为自身攻击力75%",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=750",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006212"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006222,
+ "Desc": "70%概率降低目标30%行动值;",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddActValue",
+ "Argu": "DoVal=1,Pr=700,QuaType=0,Val=300",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006231,
+ "Desc": "攻击全体敌方,伤害为自身攻击力75%",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=750",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006212"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006232,
+ "Desc": "80%概率降低目标30%行动值;",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddActValue",
+ "Argu": "DoVal=1,Pr=800,QuaType=0,Val=300",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006241,
+ "Desc": "攻击全体敌方,伤害为自身攻击力80%",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=800",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006212"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006242,
+ "Desc": "80%概率降低目标30%行动值;",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddActValue",
+ "Argu": "DoVal=1,Pr=800,QuaType=0,Val=300",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006311,
+ "Desc": "攻击敌方全体,伤害为自身攻击力100%",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=1000",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006312"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006312,
+ "Desc": "90%概率为目标附加2回合【速度下降】",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=900,NumVal=1,Id=390002003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=0,BufParNum1=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006313,
+ "Desc": "90%概率为目标附加1回合【冰冻】",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=900,NumVal=1,Id=390004002,Round=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006321,
+ "Desc": "攻击敌方全体,伤害为自身攻击力105%",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=1050",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006322",
+ "234006323"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006322,
+ "Desc": "90%概率为目标附加2回合【速度下降】",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=900,NumVal=1,Id=390002003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=0,BufParNum1=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006323,
+ "Desc": "90%概率为目标附加1回合【冰冻】",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=900,NumVal=1,Id=390004002,Round=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006331,
+ "Desc": "攻击敌方全体,伤害为自身攻击力105%",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=1050",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006332",
+ "234006333"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006332,
+ "Desc": "100%概率为目标附加2回合【速度下降】",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390002003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=0,BufParNum1=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006333,
+ "Desc": "100%概率为目标附加1回合【冰冻】",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390004002,Round=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006341,
+ "Desc": "攻击敌方全体,伤害为自身攻击力110%",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=1050",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "234006342",
+ "234006343"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006342,
+ "Desc": "100%概率为目标附加2回合【速度下降】",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390002003,Round=2,BufPro1=Total_Agi,BufVal1=300,BufQuaType1=0,BufParNum1=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 234006343,
+ "Desc": "100%概率为目标附加1回合【冰冻】",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddBuff",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=390004002,Round=1",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 934006211,
+ "Desc": "攻击全体敌方,伤害为自身攻击力70%",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=700",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "934006212",
+ "934006213"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 934006212,
+ "Desc": "70%概率降低目标30%行动值;",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddActValue",
+ "Argu": "DoVal=1,Pr=700,QuaType=0,Val=300",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 934006213,
+ "Desc": "附加效果检测,检测目标身上是否有速度下降状态",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddPas",
+ "Argu": "DoVal=1,Pr=1000,NumVal=1,Id=434006201,Round=0,PasPr=1000,PasId1=234006214",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 934006214,
+ "Desc": "降低目标30%行动值;",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddActValue",
+ "Argu": "DoVal=1,Pr=1000,QuaType=0,Val=300",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 934006221,
+ "Desc": "攻击全体敌方,伤害为自身攻击力75%",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=750",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "934006212",
+ "934006213"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 934006222,
+ "Desc": "70%概率降低目标30%行动值;",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddActValue",
+ "Argu": "DoVal=1,Pr=700,QuaType=0,Val=300",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 934006231,
+ "Desc": "攻击全体敌方,伤害为自身攻击力75%",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=750",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "934006212",
+ "934006213"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 934006232,
+ "Desc": "80%概率降低目标30%行动值;",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddActValue",
+ "Argu": "DoVal=1,Pr=800,QuaType=0,Val=300",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 934006241,
+ "Desc": "攻击全体敌方,伤害为自身攻击力80%",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "Dmg",
+ "Argu": "DoVal=1,Pr=1000,ProSou1=1,Pro1=Total_Atk,ProPar1=800",
+ "AddEffect": false,
+ "FollowSK": [],
+ "SucFollowSK": [
+ "934006212",
+ "934006213"
+ ],
+ "FailFollowSK": [],
+ "MustHit": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
+ },
+ {
+ "Id": 934006242,
+ "Desc": "80%概率降低目标30%行动值;",
+ "From": 2,
+ "Limit": 10,
+ "EmitPR": 1000,
+ "Where": [],
+ "Order": [],
+ "Type": "AddActValue",
+ "Argu": "DoVal=1,Pr=800,QuaType=0,Val=300",
"AddEffect": false,
"FollowSK": [],
"SucFollowSK": [],
diff --git a/bin/json/game_skillatk.json b/bin/json/game_skillatk.json
index 65446527a..ca933420c 100644
--- a/bin/json/game_skillatk.json
+++ b/bin/json/game_skillatk.json
@@ -6733,21 +6733,10 @@
"Type": 3,
"MaxLV": 1,
"CD": [
- -1,
- -1,
- -1,
- -1,
- -1,
-1
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 225004011
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1250040111"
],
@@ -6759,7 +6748,7 @@
"key": "skillname_125004111",
"text": "波比1技能"
},
- "ico": "skillicon_004",
+ "ico": "jn_icon_001",
"act": "Skill_1",
"Type": 1,
"MaxLV": 6,
@@ -6772,44 +6761,7 @@
0
],
"Target": 4,
- "ChildSkill": [
- {
- "Id": [
- 225004111,
- 225004112
- ]
- },
- {
- "Id": [
- 225004121,
- 225004122
- ]
- },
- {
- "Id": [
- 225004131,
- 225004132
- ]
- },
- {
- "Id": [
- 225004141,
- 225004142
- ]
- },
- {
- "Id": [
- 225004151,
- 225004152
- ]
- },
- {
- "Id": [
- 225004161,
- 225004162
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1250041111",
"skill_1250041112",
@@ -6826,42 +6778,17 @@
"key": "skillname_125004211",
"text": "波比2技能"
},
- "ico": "skillicon_005",
+ "ico": "jn_icon_002",
"act": "Skill_2",
"Type": 2,
"MaxLV": 3,
"CD": [
5,
4,
- 3,
- 3,
- 3,
3
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 225004211,
- 225004212,
- 225004213
- ]
- },
- {
- "Id": [
- 225004211,
- 225004212,
- 225004213
- ]
- },
- {
- "Id": [
- 225004211,
- 225004212,
- 225004213
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1250042111",
"skill_1250042112",
@@ -6875,7 +6802,7 @@
"key": "skillname_125004311",
"text": "波比3技能"
},
- "ico": "skillicon_006",
+ "ico": "jn_icon_003",
"act": "Skill_3",
"Type": 1,
"MaxLV": 5,
@@ -6884,37 +6811,10 @@
5,
5,
5,
- 4,
4
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 225004311
- ]
- },
- {
- "Id": [
- 225004312
- ]
- },
- {
- "Id": [
- 225004313
- ]
- },
- {
- "Id": [
- 225004314
- ]
- },
- {
- "Id": [
- 225004315
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1250043111",
"skill_1250043112",
@@ -6935,21 +6835,10 @@
"Type": 3,
"MaxLV": 1,
"CD": [
- -1,
- -1,
- -1,
- -1,
- -1,
-1
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 235002011
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1350020111"
],
@@ -6961,7 +6850,7 @@
"key": "skillname_135002111",
"text": "希卡普1技能"
},
- "ico": "skillicon_007",
+ "ico": "jn_icon_001",
"act": "Skill_1",
"Type": 1,
"MaxLV": 6,
@@ -6974,47 +6863,7 @@
0
],
"Target": 4,
- "ChildSkill": [
- {
- "Id": [
- 235002011,
- 235002111,
- 235002112,
- 235002113,
- 235002114
- ]
- },
- {
- "Id": [
- 235002122,
- 235002124
- ]
- },
- {
- "Id": [
- 235002132,
- 235002134
- ]
- },
- {
- "Id": [
- 235002142,
- 235002144
- ]
- },
- {
- "Id": [
- 235002152,
- 235002154
- ]
- },
- {
- "Id": [
- 235002162,
- 235002164
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1350021111",
"skill_1350021112",
@@ -7031,7 +6880,7 @@
"key": "skillname_135002211",
"text": "希卡普2技能"
},
- "ico": "skillicon_008",
+ "ico": "jn_icon_002",
"act": "Skill_2",
"Type": 2,
"MaxLV": 1,
@@ -7039,17 +6888,7 @@
-1
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 235002211,
- 235002212,
- 235002213,
- 235002214,
- 235002215
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1350022111"
],
@@ -7061,7 +6900,7 @@
"key": "skillname_135002311",
"text": "希卡普3技能"
},
- "ico": "skillicon_009",
+ "ico": "jn_icon_003",
"act": "Skill_3",
"Type": 1,
"MaxLV": 6,
@@ -7074,45 +6913,7 @@
4
],
"Target": 2,
- "ChildSkill": [
- {
- "Id": [
- 235002311,
- 235002312,
- 235002313
- ]
- },
- {
- "Id": [
- 235002321,
- 235002322
- ]
- },
- {
- "Id": [
- 235002331,
- 235002332
- ]
- },
- {
- "Id": [
- 235002341,
- 235002342
- ]
- },
- {
- "Id": [
- 235002351,
- 235002352
- ]
- },
- {
- "Id": [
- 235002361,
- 235002362
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1350023111",
"skill_1350023112",
@@ -7126,7 +6927,7 @@
{
"Id": 935002411,
"Name": {
- "key": "skillname_935002321",
+ "key": "skillname_935002411",
"text": "希卡普3技能"
},
"ico": "jn_icon_003",
@@ -7142,46 +6943,7 @@
4
],
"Target": 2,
- "ChildSkill": [
- {
- "Id": [
- 935002311,
- 935002312,
- 935002313,
- 935002314
- ]
- },
- {
- "Id": [
- 935002321,
- 935002322
- ]
- },
- {
- "Id": [
- 935002331,
- 935002332
- ]
- },
- {
- "Id": [
- 935002341,
- 935002342
- ]
- },
- {
- "Id": [
- 935002351,
- 935002352
- ]
- },
- {
- "Id": [
- 935002361,
- 935002362
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_9350023211",
"skill_9350023212",
@@ -7206,13 +6968,7 @@
-1
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 224003011
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1240030111"
],
@@ -7236,44 +6992,7 @@
0
],
"Target": 4,
- "ChildSkill": [
- {
- "Id": [
- 224003111,
- 224003112
- ]
- },
- {
- "Id": [
- 224003121,
- 224003122
- ]
- },
- {
- "Id": [
- 224003131,
- 224003132
- ]
- },
- {
- "Id": [
- 224003141,
- 224003142
- ]
- },
- {
- "Id": [
- 224003151,
- 224003152
- ]
- },
- {
- "Id": [
- 224003161,
- 224003162
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1240031111",
"skill_1240031112",
@@ -7298,20 +7017,7 @@
3
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 224003211,
- 224003212
- ]
- },
- {
- "Id": [
- 224003211,
- 224003212
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1240032111",
"skill_1240032112"
@@ -7337,50 +7043,7 @@
3
],
"Target": 2,
- "ChildSkill": [
- {
- "Id": [
- 224003311,
- 224003312,
- 224003313
- ]
- },
- {
- "Id": [
- 224003311,
- 224003322,
- 224003323
- ]
- },
- {
- "Id": [
- 224003311,
- 224003332,
- 224003333
- ]
- },
- {
- "Id": [
- 224003311,
- 224003342,
- 224003343
- ]
- },
- {
- "Id": [
- 224003311,
- 224003352,
- 224003353
- ]
- },
- {
- "Id": [
- 224003311,
- 224003362,
- 224003363
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_1240033111",
"skill_1240033112",
@@ -7406,26 +7069,117 @@
3
],
"Target": 1,
- "ChildSkill": [
- {
- "Id": [
- 924003411,
- 924003412,
- 924003413
- ]
- },
- {
- "Id": [
- 924003411,
- 924003412,
- 924003413
- ]
- }
- ],
+ "ChildSkill": [],
"Desc": [
"skill_9240034111",
"skill_9240034112"
],
"buffid": []
+ },
+ {
+ "Id": 134006011,
+ "Name": {
+ "key": "skillname_134006011",
+ "text": "杰克队长技"
+ },
+ "ico": "jn_dzj_01",
+ "act": "Skill_1",
+ "Type": 3,
+ "MaxLV": 1,
+ "CD": [
+ -1
+ ],
+ "Target": 1,
+ "ChildSkill": [],
+ "Desc": [],
+ "buffid": []
+ },
+ {
+ "Id": 134006111,
+ "Name": {
+ "key": "skillname_134006111",
+ "text": "杰克1技能"
+ },
+ "ico": "jn_icon_001",
+ "act": "Skill_2",
+ "Type": 1,
+ "MaxLV": 5,
+ "CD": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "Target": 4,
+ "ChildSkill": [],
+ "Desc": [],
+ "buffid": []
+ },
+ {
+ "Id": 134006211,
+ "Name": {
+ "key": "skillname_134006211",
+ "text": "杰克2技能"
+ },
+ "ico": "jn_icon_002",
+ "act": "Skill_3",
+ "Type": 1,
+ "MaxLV": 5,
+ "CD": [
+ 5,
+ 5,
+ 5,
+ 5,
+ 4
+ ],
+ "Target": 2,
+ "ChildSkill": [],
+ "Desc": [],
+ "buffid": []
+ },
+ {
+ "Id": 134006311,
+ "Name": {
+ "key": "skillname_134006311",
+ "text": "杰克3技能"
+ },
+ "ico": "jn_icon_003",
+ "act": "Skill_2",
+ "Type": 1,
+ "MaxLV": 5,
+ "CD": [
+ 4,
+ 4,
+ 4,
+ 4,
+ 3
+ ],
+ "Target": 2,
+ "ChildSkill": [],
+ "Desc": [],
+ "buffid": []
+ },
+ {
+ "Id": 934006411,
+ "Name": {
+ "key": "skillname_934006411",
+ "text": "杰克2技能"
+ },
+ "ico": "jn_icon_002",
+ "act": "Skill_3",
+ "Type": 4,
+ "MaxLV": 5,
+ "CD": [
+ 5,
+ 5,
+ 5,
+ 5,
+ 4
+ ],
+ "Target": 2,
+ "ChildSkill": [],
+ "Desc": [],
+ "buffid": []
}
]
\ No newline at end of file
diff --git a/bin/json/game_skillpassive.json b/bin/json/game_skillpassive.json
index 1fdd49b07..83b70da23 100644
--- a/bin/json/game_skillpassive.json
+++ b/bin/json/game_skillpassive.json
@@ -710,5 +710,21 @@
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
+ },
+ {
+ "Id": 434006201,
+ "Desc": "施加效果",
+ "When": "ImpEff",
+ "Where": "Target=2,EffType=0,EffID=390002003,EffTakeRel=1,TesLim=1,TriLim=1",
+ "AddCon": [
+ "CallSkillPas"
+ ],
+ "Type": "",
+ "MaxEmitTimes": 0,
+ "OverlayTimes": 0,
+ "SameID": false,
+ "Tags": [],
+ "RelyTags": [],
+ "NoRelyTags": []
}
]
\ No newline at end of file
diff --git a/bin/json/game_ui.json b/bin/json/game_ui.json
index 6b0b3ccb1..f22d4714a 100644
--- a/bin/json/game_ui.json
+++ b/bin/json/game_ui.json
@@ -760,7 +760,7 @@
"file": "PlotWindow",
"unloadpkg": 2,
"loadtype": 1,
- "full": 2,
+ "full": 1,
"blur": 0,
"package": "plotsystem/plotsystem",
"packagename": "plotsystem",
@@ -779,6 +779,30 @@
"comname": "main",
"des": "招募"
},
+ {
+ "id": "recruittendraw",
+ "file": "RecruitTenDrawWindow",
+ "unloadpkg": 2,
+ "loadtype": 1,
+ "full": 1,
+ "blur": 0,
+ "package": "recruit/recruit",
+ "packagename": "recruit",
+ "comname": "tendraw",
+ "des": "招募十连抽"
+ },
+ {
+ "id": "recruitonedraw",
+ "file": "RecruitOneDrawWindow",
+ "unloadpkg": 2,
+ "loadtype": 1,
+ "full": 1,
+ "blur": 0,
+ "package": "recruit/recruit",
+ "packagename": "recruit",
+ "comname": "onedraw",
+ "des": "招募单抽"
+ },
{
"id": "resonancepopup",
"file": "ResonancePopup",
@@ -802,5 +826,29 @@
"packagename": "roledetails",
"comname": "com_synthesis",
"des": "材料合成弹窗"
+ },
+ {
+ "id": "chatsystem",
+ "file": "ChatSystemWindow",
+ "unloadpkg": 3,
+ "loadtype": 1,
+ "full": 2,
+ "blur": 0,
+ "package": "chatsystem/chatsystem",
+ "packagename": "chatsystem",
+ "comname": "main",
+ "des": "聊天"
+ },
+ {
+ "id": "pagoda",
+ "file": "PagodaWindow",
+ "unloadpkg": 2,
+ "loadtype": 1,
+ "full": 1,
+ "blur": 0,
+ "package": "pagoda/pagoda",
+ "packagename": "pagoda",
+ "comname": "main",
+ "des": "心魔之塔"
}
]
\ No newline at end of file
diff --git a/cmd/upgrade/build.sh b/cmd/upgrade/build.sh
new file mode 100644
index 000000000..e69de29bb
diff --git a/cmd/upgrade/build_linux.bat b/cmd/upgrade/build_linux.bat
new file mode 100644
index 000000000..3d2bf438e
--- /dev/null
+++ b/cmd/upgrade/build_linux.bat
@@ -0,0 +1,5 @@
+SET CGO_ENABLED=0
+SET GOOS=linux
+SET GOARCH=amd64
+
+go build -o update main.go
\ No newline at end of file
diff --git a/cmd/upgrade/main.go b/cmd/upgrade/main.go
new file mode 100644
index 000000000..83e5ff798
--- /dev/null
+++ b/cmd/upgrade/main.go
@@ -0,0 +1,167 @@
+package main
+
+import (
+ "embed"
+ "flag"
+ "fmt"
+ "go_dreamfactory/cmd/upgrade/tools"
+ "html/template"
+ "io"
+ "io/ioutil"
+ "log"
+ "net/http"
+ "os"
+ "path"
+ "strconv"
+ "strings"
+ "time"
+
+ "github.com/gin-gonic/gin"
+)
+
+// func main() {
+// http.HandleFunc("/download", FileDownload)
+// http.HandleFunc("/upload", FileUpload)
+
+// log.Print("http server start")
+// if err := http.ListenAndServe(":8910", nil); err != nil {
+// log.Fatal(err)
+// }
+// }
+
+func FileUpload(w http.ResponseWriter, r *http.Request) {
+ //获取文件流,第三个返回值是错误对象
+ file, header, _ := r.FormFile("file")
+ //读取文件流为[]byte
+ b, _ := ioutil.ReadAll(file)
+ //把文件保存到指定位置
+ ioutil.WriteFile("/opt/upgrade", b, 0777)
+ //输出上传时文件名
+ fmt.Println("上传文件名:", header.Filename)
+}
+
+func FileDownload(w http.ResponseWriter, r *http.Request) {
+ filename := "E:\\projects\\workspace\\go_dreamfactory\\cmd\\v2\\RobotGUI.exe"
+
+ file, _ := os.Open(filename)
+ defer file.Close()
+
+ fileHeader := make([]byte, 512)
+ file.Read(fileHeader)
+
+ fileStat, _ := file.Stat()
+
+ w.Header().Set("Content-Disposition", "attachment; filename="+filename)
+ w.Header().Set("Content-Type", http.DetectContentType(fileHeader))
+ w.Header().Set("Content-Length", strconv.FormatInt(fileStat.Size(), 10))
+
+ file.Seek(0, 0)
+ io.Copy(w, file)
+
+ return
+}
+
+//go:embed views/*
+var f embed.FS
+
+var version = "0.0.1"
+
+func main() {
+
+ host := flag.String("host", "10.0.0.9", "Host")
+ port := flag.String("port", "8080", "Port")
+ uploadsDir := flag.String("uploadsDir", "./uploads", "上传文件存储地址")
+ wwwDir := flag.String("wwwDir", "./www", "www服务地址,即解压地址")
+
+ flag.Parse()
+
+ gin.SetMode(gin.ReleaseMode)
+ r := gin.Default()
+ r.Static("/prd", "./www")
+ tmpl := template.Must(template.New("").ParseFS(f, "views/*"))
+ r.SetHTMLTemplate(tmpl)
+
+ r.GET("/version", func(c *gin.Context) {
+ c.JSON(http.StatusOK, gin.H{
+ "version": version,
+ })
+ })
+
+ r.GET("/", func(c *gin.Context) {
+ fmt.Println(tmpl.DefinedTemplates())
+ c.HTML(http.StatusOK, "index.html", nil)
+ })
+
+ r.POST("/upload", func(c *gin.Context) {
+ f, err := c.FormFile("file")
+ if err != nil {
+ c.JSON(http.StatusBadRequest, gin.H{
+ "error": err.Error(),
+ })
+ }
+
+ //从上传的文件名获取到版本号
+ s := strings.SplitN(f.Filename, "-", 2)
+ if len(s) != 2 {
+ c.JSON(http.StatusBadRequest, gin.H{
+ "error": "上传的文件名中没有包含版本号 eg. update.zip-0.0.1",
+ })
+ return
+ }
+ version = s[1] //设置版本号
+
+ dst := path.Join(*uploadsDir, f.Filename)
+ err = c.SaveUploadedFile(f, dst)
+ if err != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{
+ "error": err.Error(),
+ })
+ }
+ _, err = tools.Unzip(dst, *wwwDir)
+ if err != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{
+ "error": err.Error(),
+ })
+ }
+
+ c.JSON(http.StatusOK, gin.H{
+ "msg": "upload success",
+ "url": strings.Join([]string{"http://" + *host + ":" + *port, "/prd/", strings.Split(f.Filename, ".")[0], "/index.html"}, ""),
+ })
+ })
+
+ r.GET("/dirs", func(c *gin.Context) {
+ dir, err := ioutil.ReadDir(*wwwDir)
+ if err != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{
+ "error": err.Error(),
+ })
+ }
+
+ type Item struct {
+ Name string `json:"name"`
+ Url string `json:"url"`
+ DateTime string `json:"dateTime"`
+ }
+
+ var dirs []Item
+ for _, f := range dir {
+ // if f.IsDir() && len(f.Name()) > 0 && f.Name() != "__MACOSX" {
+ dirs = append(dirs, Item{
+ Name: f.Name(),
+ Url: strings.Join([]string{"http://" + *host + ":" + *port, "/prd/", f.Name()}, ""),
+ DateTime: f.ModTime().Format(time.RFC3339),
+ })
+ // }
+ }
+
+ c.JSON(http.StatusOK, gin.H{
+ "dirs": dirs,
+ })
+ })
+
+ err := r.Run("0.0.0.0:" + *port)
+ if err != nil {
+ log.Fatal(err)
+ }
+}
diff --git a/cmd/upgrade/readme.md b/cmd/upgrade/readme.md
new file mode 100644
index 000000000..e69de29bb
diff --git a/cmd/upgrade/tools/gz.go b/cmd/upgrade/tools/gz.go
new file mode 100644
index 000000000..85ab1fcbc
--- /dev/null
+++ b/cmd/upgrade/tools/gz.go
@@ -0,0 +1,125 @@
+package tools
+
+import (
+ "archive/tar"
+ "compress/gzip"
+ "fmt"
+ "io"
+ "os"
+ "path/filepath"
+ "strings"
+)
+
+func UnGz(tarFile, dest string) error {
+ srcFile, err := os.Open(tarFile)
+ if err != nil {
+ return err
+ }
+ defer srcFile.Close()
+ gr, err := gzip.NewReader(srcFile)
+ if err != nil {
+ return err
+ }
+ defer gr.Close()
+ tr := tar.NewReader(gr)
+ for {
+ hdr, err := tr.Next()
+ if err != nil {
+ if err == io.EOF {
+ break
+ } else {
+ return err
+ }
+ }
+ filename := dest + hdr.Name
+ file, err := createFile(filename)
+ if err != nil {
+ return err
+ }
+ io.Copy(file, tr)
+ }
+ return nil
+}
+
+func createFile(name string) (*os.File, error) {
+ err := os.MkdirAll(string([]rune(name)[0:strings.LastIndex(name, "/")]), 0755)
+ if err != nil {
+ return nil, err
+ }
+ return os.Create(name)
+}
+
+func UnGzip(tarName, xpath string) (err error) {
+ tarFile, err := os.Open(tarName)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ err = tarFile.Close()
+ }()
+
+ os.Mkdir(xpath, 0755)
+
+ absPath, err := filepath.Abs(xpath)
+ if err != nil {
+ return err
+ }
+
+ tr := tar.NewReader(tarFile)
+ if strings.HasSuffix(tarName, ".gz") || strings.HasSuffix(tarName, ".gzip") {
+ gz, err := gzip.NewReader(tarFile)
+ if err != nil {
+ return err
+ }
+ defer gz.Close()
+ tr = tar.NewReader(gz)
+ }
+
+ // untar each segment
+ for {
+ hdr, err := tr.Next()
+ if err == io.EOF {
+ break
+ }
+ if err != nil {
+ return err
+ }
+
+ // determine proper file path info
+ finfo := hdr.FileInfo()
+ fileName := hdr.Name
+ if filepath.IsAbs(fileName) {
+ fmt.Printf("removing / prefix from %s\n", fileName)
+ fileName, err = filepath.Rel("/", fileName)
+ if err != nil {
+ return err
+ }
+ }
+ absFileName := filepath.Join(absPath, fileName)
+
+ if finfo.Mode().IsDir() {
+ if err := os.MkdirAll(absFileName, 0755); err != nil {
+ return err
+ }
+ continue
+ }
+
+ // create new file with original file mode
+ file, err := os.OpenFile(absFileName, os.O_RDWR|os.O_CREATE|os.O_TRUNC, finfo.Mode().Perm())
+ if err != nil {
+ return err
+ }
+ fmt.Printf("x %s\n", absFileName)
+ n, cpErr := io.Copy(file, tr)
+ if closeErr := file.Close(); closeErr != nil { // close file immediately
+ return err
+ }
+ if cpErr != nil {
+ return cpErr
+ }
+ if n != finfo.Size() {
+ return fmt.Errorf("unexpected bytes written: wrote %d, want %d", n, finfo.Size())
+ }
+ }
+ return nil
+}
diff --git a/cmd/upgrade/tools/zip.go b/cmd/upgrade/tools/zip.go
new file mode 100644
index 000000000..d75a518ae
--- /dev/null
+++ b/cmd/upgrade/tools/zip.go
@@ -0,0 +1,54 @@
+package tools
+
+import (
+ "archive/zip"
+ "fmt"
+ "io"
+ "os"
+ "path/filepath"
+ "strings"
+)
+
+func Unzip(src string, dest string) ([]string, error) {
+ var filenames []string
+ r, err := zip.OpenReader(src)
+ if err != nil {
+ return filenames, err
+ }
+ defer r.Close()
+
+ for _, f := range r.File {
+ // Store filename/path for returning and using later on
+ fpath := filepath.Join(dest, f.Name)
+ // Check for ZipSlip. More Info: http://bit.ly/2MsjAWE
+ if !strings.HasPrefix(fpath, filepath.Clean(dest)+string(os.PathSeparator)) {
+ return filenames, fmt.Errorf("%s: illegal file path", fpath)
+ }
+ filenames = append(filenames, fpath)
+ if f.FileInfo().IsDir() {
+ // Make Folder
+ os.MkdirAll(fpath, os.ModePerm)
+ continue
+ }
+ // Make File
+ if err = os.MkdirAll(filepath.Dir(fpath), os.ModePerm); err != nil {
+ return filenames, err
+ }
+ outFile, err := os.OpenFile(fpath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
+ if err != nil {
+ return filenames, err
+ }
+ rc, err := f.Open()
+ if err != nil {
+ return filenames, err
+ }
+ _, err = io.Copy(outFile, rc)
+ // Close the file without defer to close before next iteration of loop
+ outFile.Close()
+ rc.Close()
+ if err != nil {
+ return filenames, err
+ }
+ }
+ return filenames, nil
+}
diff --git a/cmd/upgrade/views/index.html b/cmd/upgrade/views/index.html
new file mode 100644
index 000000000..d8181e590
--- /dev/null
+++ b/cmd/upgrade/views/index.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+ 上传
+
+
+
+
+
+
+
+
+
+
+
+
+
+
上传原型,获取永久在线浏览地址
+
+
+
+
+
+
+ 浏览地址:${ url }
+
+
+
+
+
历史prd:
+
+
+
+ ${ dir.name } ${ dir.dateTime}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/cmd/v2/FyneApp.toml b/cmd/v2/FyneApp.toml
new file mode 100644
index 000000000..442490eaf
--- /dev/null
+++ b/cmd/v2/FyneApp.toml
@@ -0,0 +1,8 @@
+Website = "https://legu.com"
+
+[Details]
+ Icon = "Icon.png"
+ Name = "RobotGUI"
+ ID = "com.legu.app"
+ Version = "1.0.1"
+ Build = 7
diff --git a/cmd/v2/lib/common/lang.go b/cmd/v2/lib/common/lang.go
index f2fb827fd..ab69b2374 100644
--- a/cmd/v2/lib/common/lang.go
+++ b/cmd/v2/lib/common/lang.go
@@ -70,8 +70,9 @@ package common
// zh
const (
- // app
APP_NAME = "机器人"
+ // app 子标题 [0.0.1 build-1] 应用名称
+ APP_WIN_TITLE = "%s [%s build-%d] %s"
//about
APP_ABOUT_TITLE = "关于"
diff --git a/cmd/v2/lib/common/utils.go b/cmd/v2/lib/common/utils.go
index 914319d37..ae2db1bc3 100644
--- a/cmd/v2/lib/common/utils.go
+++ b/cmd/v2/lib/common/utils.go
@@ -3,6 +3,10 @@ package common
import (
"bytes"
"encoding/json"
+ "strings"
+
+ "github.com/sirupsen/logrus"
+ "github.com/spf13/cast"
)
func FormatJson(data string) (string, error) {
@@ -12,32 +16,55 @@ func FormatJson(data string) (string, error) {
}
func SubStr(str string, start int, length int) (result string) {
- s := []rune(str)
- total := len(s)
- if total == 0 {
- return
- }
- // 允许从尾部开始计算
- if start < 0 {
- start = total + start
- if start < 0 {
- return
- }
- }
- if start > total {
- return
- }
- // 到末尾
- if length < 0 {
- length = total
- }
-
- end := start + length
- if end > total {
- result = string(s[start:])
- } else {
- result = string(s[start:end])
- }
-
- return
+ s := []rune(str)
+ total := len(s)
+ if total == 0 {
+ return
+ }
+ // 允许从尾部开始计算
+ if start < 0 {
+ start = total + start
+ if start < 0 {
+ return
+ }
+ }
+ if start > total {
+ return
+ }
+ // 到末尾
+ if length < 0 {
+ length = total
+ }
+
+ end := start + length
+ if end > total {
+ result = string(s[start:])
+ } else {
+ result = string(s[start:end])
+ }
+
+ return
+}
+
+// 是否升级
+func IsUpgrade(newVersion, oldVersion string) bool {
+ nvArr := strings.SplitN(newVersion, ".", 3)
+ if len(nvArr) != 3 {
+ logrus.Error("new version format err")
+ return false
+ }
+
+ ovArr := strings.SplitN(oldVersion, ".", 3)
+ if len(ovArr) != 3 {
+ logrus.Error("old version format err")
+ return false
+ }
+
+ nvNum := cast.ToInt(nvArr[0])*100 + cast.ToInt(nvArr[1])*10 + cast.ToInt(nvArr[2])
+ ovNum := cast.ToInt(ovArr[0])*100 + cast.ToInt(ovArr[1])*10 + cast.ToInt(ovArr[2])
+
+ if nvNum > ovNum {
+ return true
+ }
+ return false
}
diff --git a/cmd/v2/main.go b/cmd/v2/main.go
index 44371a9f2..88213f7cd 100644
--- a/cmd/v2/main.go
+++ b/cmd/v2/main.go
@@ -49,8 +49,6 @@ func init() {
}
func main() {
- logrus.Info("Starting...")
-
// create a new ui
app := app.NewWithID("protocol-test-tool")
app.SetIcon(theme.ResourceIconPng)
@@ -58,7 +56,7 @@ func main() {
mainWindow := ui.NewMainWindow(appUI)
mainWindow.CreateWindow(common.APP_NAME, 1366, 768, true)
-
+ logrus.WithField("version", app.Metadata().Version).Info("app starting")
appUI.Run()
}
diff --git a/cmd/v2/model/friend.go b/cmd/v2/model/friend.go
deleted file mode 100644
index 5ed8c2e74..000000000
--- a/cmd/v2/model/friend.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package model
-
-type FriendModel struct {
- Uid string
- Name string
-}
-
-type FriendModelList struct {
- DataList []*FriendModel
-}
-
-func NewFriendModelList() *FriendModelList {
- return &FriendModelList{
- DataList: make([]*FriendModel, 0),
- }
-}
-
-func (s *FriendModelList) AsInterfaceArray() []interface{} {
- rs := make([]interface{}, len(s.DataList), len(s.DataList))
- for i := range s.DataList {
- rs[i] = s.DataList[i]
- }
- return rs
-}
diff --git a/cmd/v2/model/item.go b/cmd/v2/model/item.go
new file mode 100644
index 000000000..ef535634c
--- /dev/null
+++ b/cmd/v2/model/item.go
@@ -0,0 +1,27 @@
+package model
+
+import "github.com/sirupsen/logrus"
+
+type ItemModel struct {
+ Id string
+ Label string
+}
+
+type ItemModelList struct {
+ DataList []*ItemModel
+}
+
+func NewItemModelList() *ItemModelList {
+ return &ItemModelList{
+ DataList: make([]*ItemModel, 0),
+ }
+}
+
+func (s *ItemModelList) AsInterfaceArray() []interface{} {
+ logrus.Debug(len(s.DataList))
+ rs := make([]interface{}, len(s.DataList))
+ for i := range s.DataList {
+ rs[i] = s.DataList[i]
+ }
+ return rs
+}
diff --git a/cmd/v2/readme.md b/cmd/v2/readme.md
index b42fa5c53..2eee84dac 100644
--- a/cmd/v2/readme.md
+++ b/cmd/v2/readme.md
@@ -11,7 +11,6 @@ fyne bundle msyh.ttc >> bundled.go
fyne bundle -append msyhbd.ttc >> bundled.go
(不要使用powershell 或vscode自带终端)
-
## icon
1.
@@ -20,16 +19,16 @@ fyne bundle fav.png >> bundled.go
如果是要追加资源
fyne bundle -append image2.jpg >> bundled.go
-2.
+2.
a := app.New()
a.SetIcon(resourceFavPng)
-## package
+## package
-fyne package -os windows -icon icon.png
+fyne package --name robotGUI-1.0.1 -os windows -icon Icon.png
## 开发协议参数表单
-1.
+1.
2.
3.
diff --git a/cmd/v2/resources/config.yaml b/cmd/v2/resources/config.yaml
index a839c154b..c53bb3846 100644
--- a/cmd/v2/resources/config.yaml
+++ b/cmd/v2/resources/config.yaml
@@ -1,3 +1,4 @@
+upgradeUrl: http://10.0.0.9:8080/
services:
- service:
sid: 1
diff --git a/cmd/v2/service/configService.go b/cmd/v2/service/configService.go
index 014acf773..7e5a2341d 100644
--- a/cmd/v2/service/configService.go
+++ b/cmd/v2/service/configService.go
@@ -30,7 +30,8 @@ type Services struct {
}
type Config struct {
- Services []*Services `yaml:"services"`
+ Services []*Services `yaml:"services"`
+ UpgradeUrl string `yaml:"upgradeUrl"`
}
func NewConfigService() (ConfigService, error) {
diff --git a/cmd/v2/service/connService.go b/cmd/v2/service/connService.go
index 73cb15467..a32f3c3c2 100644
--- a/cmd/v2/service/connService.go
+++ b/cmd/v2/service/connService.go
@@ -6,6 +6,8 @@ import (
"go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
+ "io/ioutil"
+ "net/http"
"strings"
"time"
@@ -19,7 +21,8 @@ var (
)
type ConnService interface {
- Connect(wsUrl string) error
+ WsConnect(wsUrl string) error
+ HttpConnect(url string) ([]byte, error)
SendMsg(msg *pb.UserMessage, rsp proto.Message) (err error)
ReceiveMsg() (code pb.ErrorCode, msg *pb.UserMessage)
ListenerPush()
@@ -40,7 +43,7 @@ func GetConnService() *ConnServiceImpl {
}
// connect ...
-func (c *ConnServiceImpl) Connect(wsUrl string) error {
+func (c *ConnServiceImpl) WsConnect(wsUrl string) error {
dialer := &websocket.Dialer{
HandshakeTimeout: 5 * time.Second,
}
@@ -64,6 +67,15 @@ func (c *ConnServiceImpl) Connect(wsUrl string) error {
return nil
}
+func (c *ConnServiceImpl) HttpConnect(url string) ([]byte, error) {
+ res, err := http.Get(url)
+ if err != nil {
+ return nil, err
+ }
+ defer res.Body.Close()
+ return ioutil.ReadAll(res.Body)
+}
+
// listener push
func (c *ConnServiceImpl) ListenerPush() {
go func() {
diff --git a/cmd/v2/ui/formview/friend_base.go b/cmd/v2/ui/formview/friend_base.go
deleted file mode 100644
index 0b4fb933d..000000000
--- a/cmd/v2/ui/formview/friend_base.go
+++ /dev/null
@@ -1,75 +0,0 @@
-package formview
-
-import (
- "go_dreamfactory/cmd/v2/model"
- "go_dreamfactory/cmd/v2/service"
- "go_dreamfactory/comm"
- "go_dreamfactory/modules/friend"
- "go_dreamfactory/pb"
- "go_dreamfactory/utils"
-
- "fyne.io/fyne/v2"
- "fyne.io/fyne/v2/container"
- "fyne.io/fyne/v2/data/binding"
- "fyne.io/fyne/v2/widget"
- "github.com/sirupsen/logrus"
-)
-
-type FriendListBaseView struct {
- BaseformView
- dataList *widget.List
- friendBinding binding.UntypedList
- selFriendIds []string //选择的UID
- friendData *model.FriendModelList
-}
-
-// init data
-func (this *FriendListBaseView) initFriendList() {
- this.friendBinding = binding.NewUntypedList()
- this.friendData = model.NewFriendModelList()
-}
-
-// create list view
-func (this *FriendListBaseView) createList() *widget.List {
- this.dataList = widget.NewListWithData(this.friendBinding,
- func() fyne.CanvasObject {
- return container.NewHBox(
- widget.NewCheck("", func(b bool) {}),
- widget.NewLabelWithStyle("", fyne.TextAlignCenter, fyne.TextStyle{}),
- )
- },
- func(data binding.DataItem, item fyne.CanvasObject) {
- o, _ := data.(binding.Untyped).Get()
- pd := o.(*model.FriendModel)
- item.(*fyne.Container).Objects[0].(*widget.Check).OnChanged = func(b bool) {
- if b {
- this.selFriendIds = append(this.selFriendIds, pd.Uid)
- } else {
- utils.DeleteString(this.selFriendIds, pd.Uid)
- }
- }
- item.(*fyne.Container).Objects[1].(*widget.Label).SetText(pd.Name)
- },
- )
- return this.dataList
-}
-
-func (this *FriendListBaseView) applyListBtnFun() func() {
- return func() {
- if err := service.GetPttService().SendToClient(
- string(comm.ModuleFriend),
- friend.FriendSubTypeApplyList,
- &pb.FriendApplyListReq{}); err != nil {
- logrus.Error(err)
- }
- this.friendData = model.NewFriendModelList()
- }
-}
-
-// set data
-func (this *FriendListBaseView) reloadFriendData() {
- if this.friendData != nil {
- d := this.friendData.AsInterfaceArray()
- this.friendBinding.Set(d)
- }
-}
diff --git a/cmd/v2/ui/formview/hero_list.go b/cmd/v2/ui/formview/hero_list.go
deleted file mode 100644
index f64fcf73c..000000000
--- a/cmd/v2/ui/formview/hero_list.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package formview
-
-import (
- "go_dreamfactory/cmd/v2/model"
- "go_dreamfactory/cmd/v2/service"
- "go_dreamfactory/pb"
-
- "fyne.io/fyne/v2"
- "github.com/sirupsen/logrus"
-)
-
-type HeroListView struct {
- BaseformView
-}
-
-func (this *HeroListView) CreateView(t *model.TestCase) fyne.CanvasObject {
- this.form.OnSubmit = func() {
- if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.HeroListReq{}); err != nil {
- logrus.Error(err)
- }
-
- }
- return this.form
-}
diff --git a/cmd/v2/ui/formview/task_activelist.go b/cmd/v2/ui/formview/task_activelist.go
deleted file mode 100644
index de51edcdc..000000000
--- a/cmd/v2/ui/formview/task_activelist.go
+++ /dev/null
@@ -1,32 +0,0 @@
-package formview
-
-import (
- "go_dreamfactory/cmd/v2/lib/common"
- "go_dreamfactory/cmd/v2/model"
- "go_dreamfactory/cmd/v2/service"
- "go_dreamfactory/pb"
-
- "fyne.io/fyne/v2"
- "fyne.io/fyne/v2/widget"
- "github.com/sirupsen/logrus"
- "github.com/spf13/cast"
-)
-
-type TaskActiveListView struct {
- BaseformView
-}
-
-func (this *TaskActiveListView) CreateView(t *model.TestCase) fyne.CanvasObject {
- tagSelect := getTaskTagSelect()
- this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASKTAG, tagSelect))
-
- this.form.OnSubmit = func() {
- if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.TaskActiveListReq{
-
- TaskTag: cast.ToInt32(tagSelect.Selected),
- }); err != nil {
- logrus.Error(err)
- }
- }
- return this.form
-}
diff --git a/cmd/v2/ui/formview/task_list.go b/cmd/v2/ui/formview/task_list.go
deleted file mode 100644
index 92dfedd69..000000000
--- a/cmd/v2/ui/formview/task_list.go
+++ /dev/null
@@ -1,31 +0,0 @@
-package formview
-
-import (
- "go_dreamfactory/cmd/v2/lib/common"
- "go_dreamfactory/cmd/v2/model"
- "go_dreamfactory/cmd/v2/service"
- "go_dreamfactory/pb"
-
- "fyne.io/fyne/v2"
- "fyne.io/fyne/v2/widget"
- "github.com/sirupsen/logrus"
- "github.com/spf13/cast"
-)
-
-type TaskListView struct {
- BaseformView
-}
-
-func (this *TaskListView) CreateView(t *model.TestCase) fyne.CanvasObject {
- tagSelect := getTaskTagSelect()
- this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASKTAG, tagSelect))
-
- this.form.OnSubmit = func() {
- if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.TaskListReq{
- TaskTag: cast.ToInt32(tagSelect.Selected),
- }); err != nil {
- logrus.Error(err)
- }
- }
- return this.form
-}
diff --git a/cmd/v2/ui/formview/task_receive.go b/cmd/v2/ui/formview/task_receive.go
deleted file mode 100644
index 73a4d3d3c..000000000
--- a/cmd/v2/ui/formview/task_receive.go
+++ /dev/null
@@ -1,40 +0,0 @@
-package formview
-
-import (
- "go_dreamfactory/cmd/v2/lib/common"
- "go_dreamfactory/cmd/v2/model"
- "go_dreamfactory/cmd/v2/service"
- "go_dreamfactory/comm"
- "go_dreamfactory/modules/task"
- "go_dreamfactory/pb"
-
- "fyne.io/fyne/v2"
- "fyne.io/fyne/v2/widget"
- "github.com/sirupsen/logrus"
- "github.com/spf13/cast"
-)
-
-type TaskReceiveView struct {
- BaseformView
-}
-
-func (this *TaskReceiveView) CreateView(t *model.TestCase) fyne.CanvasObject {
-
- if t.MainType == string(comm.ModuleTask) && t.SubType == task.TaskSubTypeReceive {
- id := widget.NewEntry()
- tagSelect := getTaskTagSelect()
- this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASK_OID, id))
- this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASKTAG, tagSelect))
-
- this.form.OnSubmit = func() {
- if err := service.GetPttService().SendToClient(t.MainType, t.SubType,
- &pb.TaskReceiveReq{Id: id.Text, TaskTag: cast.ToInt32(tagSelect.Selected)}); err != nil {
- logrus.Error(err)
- return
- }
-
- }
- }
-
- return this.form
-}
diff --git a/cmd/v2/ui/mainwindow.go b/cmd/v2/ui/mainwindow.go
index 8fc98e34e..83d835ec8 100644
--- a/cmd/v2/ui/mainwindow.go
+++ b/cmd/v2/ui/mainwindow.go
@@ -1,6 +1,7 @@
package ui
import (
+ "errors"
"fmt"
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/service"
@@ -8,6 +9,8 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/modules/user"
"go_dreamfactory/pb"
+ "os/exec"
+ "runtime"
"strings"
"fyne.io/fyne/v2"
@@ -17,6 +20,7 @@ import (
"github.com/BabySid/gobase"
"github.com/Pallinder/go-randomdata"
"github.com/sirupsen/logrus"
+ "github.com/tidwall/gjson"
)
var (
@@ -114,6 +118,7 @@ func (ui *MainWindowImpl) quiteHandle() {
// CreateWindow ....
func (ui *MainWindowImpl) CreateWindow(title string, width, height float32, _ bool) {
// init window
+ title = fmt.Sprintf(common.APP_WIN_TITLE, "登录", ui.app.Metadata().Version, ui.app.Metadata().Build, common.APP_NAME)
w := ui.app.NewWindow(title)
ui.AddWindow("main", w)
ui.w = w
@@ -128,21 +133,60 @@ func (ui *MainWindowImpl) CreateWindow(title string, width, height float32, _ bo
// ui.mm = newMainMenu()
// w.SetMainMenu(ui.mm.MainMenu)
- // create window container
- // mainLayout := ui.createWindowContainer()
-
w.SetMaster()
- // w.Show()
- // w.SetContent(mainLayout)
w.CenterOnScreen()
_ = ui.createChooseServerPopUp(w)
}
+// check version
+func (ui *MainWindowImpl) checkVersion(parent fyne.Window) {
+ logrus.Debug("check version")
+ b, err := ui.connService.HttpConnect(ui.configService.GetConfig().UpgradeUrl + "version")
+ if err != nil {
+ dialog.ShowError(errors.New("版本检查:"+err.Error()), parent)
+ return
+ }
+
+ ver := gjson.Get(string(b), "version").String()
+ if strings.HasSuffix(ver, ".zip") {
+ ver = strings.TrimSuffix(ver, ".zip")
+ }
+ logrus.WithField("version", ver).Debug("server version")
+ if common.IsUpgrade(ver, ui.app.Metadata().Version) {
+ chkDialog := dialog.NewConfirm("版本检查", "检查到新版本:"+ver+" 请升级后使用", func(b bool) {
+ var commands = map[string]string{
+ "windows": "explorer",
+ "darwin": "open",
+ "linux": "xdg-open",
+ }
+ //open browser
+ open := func(uri string) error {
+ // runtime.GOOS获取当前平台
+ run, ok := commands[runtime.GOOS]
+ if !ok {
+ logrus.Errorf("don't know how to open things on %s platform", runtime.GOOS)
+ }
+
+ cmd := exec.Command(run, uri)
+ return cmd.Run()
+ }
+ _ = open(ui.configService.GetConfig().UpgradeUrl)
+ defer parent.Close()
+ }, parent)
+ chkDialog.SetConfirmText(common.BUTTON_OK)
+ chkDialog.Show()
+ }
+
+}
+
// createChooseServerPopUp
func (ui *MainWindowImpl) createChooseServerPopUp(w fyne.Window) error {
ch := make(chan string)
- selServerWin := ui.createChooseServerWindow("选服", ch)
+ title := fmt.Sprintf(common.APP_WIN_TITLE, "选服", ui.app.Metadata().Version, ui.app.Metadata().Build, common.APP_NAME)
+ selServerWin := ui.createChooseServerWindow(title, ch)
+ ui.checkVersion(selServerWin)
+
go func() {
data := <-ch
selServerWin.Hide()
@@ -156,16 +200,16 @@ func (ui *MainWindowImpl) createChooseServerPopUp(w fyne.Window) error {
func (ui *MainWindowImpl) createChooseServerWindow(
title string,
ch chan string) fyne.Window {
-
+ // choose server button func
makeButton := func(s *service.ServiceConf, parent fyne.Window) *widget.Button {
btn := widget.NewButton(s.Name, func() {
d := dialog.NewInformation("", common.INFO_WAIT, parent)
d.SetDismissText(common.BUTTON_CANCEL)
d.Show()
- logrus.WithField("server", s.Name).Debug("choose server")
+ logrus.WithFields(logrus.Fields{"server": s.Name, "sid": s.SId}).Debug("choose server")
//conn server
- if err := ui.connService.Connect(s.Url); err != nil {
+ if err := ui.connService.WsConnect(s.Url); err != nil {
d.Hide()
dialog.ShowError(err, parent)
} else {
@@ -217,7 +261,7 @@ func (ui *MainWindowImpl) createLoginWin(sid, sname string) {
}
// hide toolbar
ui.tb.toolbar.Hide()
- // 必须在创建窗口之后调用
+ // call after ui.createWindowContainer
ui.connService.ListenerPush()
if code := ui.pttService.Login(sid, account.Text); code != pb.ErrorCode_Success {
err := fmt.Errorf("login err: %v[%d]", code, int32(code))
@@ -237,7 +281,9 @@ func (ui *MainWindowImpl) createLoginWin(sid, sname string) {
return
}
- ui.w.SetTitle(fmt.Sprintf("%s[%s]", sname, sid))
+ // reset main window title
+ subTitle := fmt.Sprintf("%s[%s]", sname, sid)
+ ui.w.SetTitle(fmt.Sprintf(common.APP_WIN_TITLE, subTitle, ui.app.Metadata().Version, ui.app.Metadata().Build, common.APP_NAME))
ui.pttService.SetUser(rsp.Data, rsp.Ex)
// isCreateRole
if rsp.Data.Created {
diff --git a/cmd/v2/ui/protocol.go b/cmd/v2/ui/protocol.go
index 9cf317c71..73c004561 100644
--- a/cmd/v2/ui/protocol.go
+++ b/cmd/v2/ui/protocol.go
@@ -4,7 +4,7 @@ import (
"fmt"
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service/observer"
- "go_dreamfactory/cmd/v2/ui/formview"
+ formview "go_dreamfactory/cmd/v2/ui/views"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules/friend"
@@ -44,7 +44,6 @@ var (
ff(comm.ModuleMail, "getallmailattachment"): &formview.MailAttachmentAllView{},
//task
ff(comm.ModuleTask, task.TaskSubTypeList): &formview.TaskListView{},
- ff(comm.ModuleTask, task.TaskSubTypeReceive): &formview.TaskReceiveView{},
ff(comm.ModuleTask, task.TaskSubTypeActiveList): &formview.TaskActiveListView{},
ff(comm.ModuleTask, task.TaskSubTypeActiveReceive): &formview.TaskActiveReceiveView{},
// hero
@@ -121,7 +120,6 @@ var (
},
"task": {
ff(comm.ModuleTask, task.TaskSubTypeList),
- ff(comm.ModuleTask, task.TaskSubTypeReceive),
ff(comm.ModuleTask, task.TaskSubTypeActiveList),
ff(comm.ModuleTask, task.TaskSubTypeActiveReceive),
},
@@ -277,15 +275,8 @@ var (
Rsp: &pb.TaskListResp{},
Enabled: true,
},
- "task.receive": {
- NavLabel: "任务领取",
- Desc: "用户任务领取",
- MainType: "task",
- SubType: "receive",
- Enabled: true,
- },
ff(comm.ModuleTask, task.TaskSubTypeActiveList): {
- NavLabel: "活跃度",
+ NavLabel: "活跃度列表",
Desc: "用户活跃度列表",
MainType: string(comm.ModuleTask),
SubType: task.TaskSubTypeActiveList,
diff --git a/cmd/v2/ui/formview/baseformview.go b/cmd/v2/ui/views/baseformview.go
similarity index 100%
rename from cmd/v2/ui/formview/baseformview.go
rename to cmd/v2/ui/views/baseformview.go
diff --git a/cmd/v2/ui/views/baselistview.go b/cmd/v2/ui/views/baselistview.go
new file mode 100644
index 000000000..4580256c6
--- /dev/null
+++ b/cmd/v2/ui/views/baselistview.go
@@ -0,0 +1,99 @@
+package formview
+
+import (
+ "go_dreamfactory/cmd/v2/model"
+ "go_dreamfactory/cmd/v2/service"
+ "go_dreamfactory/comm"
+ "go_dreamfactory/modules/friend"
+ "go_dreamfactory/pb"
+ "go_dreamfactory/utils"
+
+ "fyne.io/fyne/v2"
+ "fyne.io/fyne/v2/container"
+ "fyne.io/fyne/v2/data/binding"
+ "fyne.io/fyne/v2/widget"
+ "github.com/sirupsen/logrus"
+)
+
+type ListBaseView struct {
+ BaseformView
+ dataListWidget *widget.List
+ dataBinding binding.UntypedList
+ selItemIds []string //选择的ID
+ itemListData *model.ItemModelList
+}
+
+// init data
+func (this *ListBaseView) initItemList() {
+ this.dataBinding = binding.NewUntypedList()
+ this.itemListData = model.NewItemModelList()
+}
+
+// create list view with check widget
+func (this *ListBaseView) createItemListWithCheck() *widget.List {
+ this.dataListWidget = widget.NewListWithData(this.dataBinding,
+ func() fyne.CanvasObject {
+ return container.NewHBox(
+ widget.NewCheck("", func(b bool) {}),
+ widget.NewLabelWithStyle("", fyne.TextAlignCenter, fyne.TextStyle{}),
+ )
+ },
+ func(data binding.DataItem, item fyne.CanvasObject) {
+ o, _ := data.(binding.Untyped).Get()
+ pd := o.(*model.ItemModel)
+ item.(*fyne.Container).Objects[0].(*widget.Check).OnChanged = func(b bool) {
+ if b {
+ this.selItemIds = append(this.selItemIds, pd.Id)
+ } else {
+ utils.DeleteString(this.selItemIds, pd.Id)
+ }
+ }
+ item.(*fyne.Container).Objects[1].(*widget.Label).SetText(pd.Label)
+ },
+ )
+ return this.dataListWidget
+}
+
+// create list , single select
+func (this *ListBaseView) createItemList() *widget.List {
+ this.dataListWidget = widget.NewListWithData(this.dataBinding,
+ func() fyne.CanvasObject {
+ return container.NewHBox(
+ widget.NewLabelWithStyle("", fyne.TextAlignCenter, fyne.TextStyle{}),
+ )
+ },
+ func(data binding.DataItem, item fyne.CanvasObject) {
+ o, _ := data.(binding.Untyped).Get()
+ pd := o.(*model.ItemModel)
+ item.(*fyne.Container).Objects[0].(*widget.Label).SetText(pd.Label)
+ },
+ )
+
+ // single select
+ this.dataListWidget.OnSelected = func(id widget.ListItemID) {
+ sel := this.itemListData.DataList[id]
+ this.selItemIds = []string{sel.Id}
+ }
+
+ return this.dataListWidget
+}
+
+func (this *ListBaseView) listBtnFun() func() {
+ return func() {
+ if err := service.GetPttService().SendToClient(
+ string(comm.ModuleFriend),
+ friend.FriendSubTypeApplyList,
+ &pb.FriendApplyListReq{}); err != nil {
+ logrus.Error(err)
+ }
+ this.itemListData = model.NewItemModelList()
+ }
+}
+
+// set data
+func (this *ListBaseView) reloadListData() {
+ if this.itemListData != nil {
+ d := this.itemListData.AsInterfaceArray()
+ this.dataBinding.Set(d)
+ }
+}
diff --git a/cmd/v2/ui/formview/bingoview.go b/cmd/v2/ui/views/bingoview.go
similarity index 100%
rename from cmd/v2/ui/formview/bingoview.go
rename to cmd/v2/ui/views/bingoview.go
diff --git a/cmd/v2/ui/formview/common.go b/cmd/v2/ui/views/common.go
similarity index 100%
rename from cmd/v2/ui/formview/common.go
rename to cmd/v2/ui/views/common.go
diff --git a/cmd/v2/ui/formview/equip_list.go b/cmd/v2/ui/views/equip_list.go
similarity index 100%
rename from cmd/v2/ui/formview/equip_list.go
rename to cmd/v2/ui/views/equip_list.go
diff --git a/cmd/v2/ui/formview/equip_updown.go b/cmd/v2/ui/views/equip_updown.go
similarity index 100%
rename from cmd/v2/ui/formview/equip_updown.go
rename to cmd/v2/ui/views/equip_updown.go
diff --git a/cmd/v2/ui/formview/equip_upgrade.go b/cmd/v2/ui/views/equip_upgrade.go
similarity index 100%
rename from cmd/v2/ui/formview/equip_upgrade.go
rename to cmd/v2/ui/views/equip_upgrade.go
diff --git a/cmd/v2/ui/formview/friend_addblack.go b/cmd/v2/ui/views/friend_addblack.go
similarity index 100%
rename from cmd/v2/ui/formview/friend_addblack.go
rename to cmd/v2/ui/views/friend_addblack.go
diff --git a/cmd/v2/ui/formview/friend_agree.go b/cmd/v2/ui/views/friend_agree.go
similarity index 75%
rename from cmd/v2/ui/formview/friend_agree.go
rename to cmd/v2/ui/views/friend_agree.go
index f1434dd1c..9e4ad9956 100644
--- a/cmd/v2/ui/formview/friend_agree.go
+++ b/cmd/v2/ui/views/friend_agree.go
@@ -16,12 +16,12 @@ import (
)
type FriendAgreeView struct {
- FriendListBaseView
+ ListBaseView
}
func (this *FriendAgreeView) CreateView(t *model.TestCase) fyne.CanvasObject {
//init required
- this.initFriendList()
+ this.initItemList()
//同意提交
agreeBtn := widget.NewButtonWithIcon("同意", theme.ConfirmIcon(), func() {
@@ -29,13 +29,13 @@ func (this *FriendAgreeView) CreateView(t *model.TestCase) fyne.CanvasObject {
t.MainType,
t.SubType,
&pb.FriendAgreeReq{
- FriendIds: this.selFriendIds,
+ FriendIds: this.selItemIds,
},
); err != nil {
logrus.Error(err)
return
}
- this.applyListBtnFun()
+ this.listBtnFun()
})
//拒绝
@@ -44,19 +44,19 @@ func (this *FriendAgreeView) CreateView(t *model.TestCase) fyne.CanvasObject {
string(comm.ModuleFriend),
friend.FriendSubTypeRefuse,
&pb.FriendRefuseReq{
- FriendIds: this.selFriendIds,
+ FriendIds: this.selItemIds,
}); err != nil {
logrus.Error(err)
return
}
- this.applyListBtnFun()
+ this.listBtnFun()
})
- this.createList()
+ this.createItemListWithCheck()
- applyListBtn := widget.NewButton("申请列表", this.applyListBtnFun())
+ applyListBtn := widget.NewButton("申请列表", this.listBtnFun())
- split := container.NewHSplit(this.dataList, container.NewVBox(applyListBtn, agreeBtn, refuseBtn))
+ split := container.NewHSplit(this.dataListWidget, container.NewVBox(applyListBtn, agreeBtn, refuseBtn))
split.Offset = 1
this.dataListener()
@@ -79,13 +79,13 @@ func (this *FriendAgreeView) dataListener() {
}
for _, v := range rsp.List {
- fm := &model.FriendModel{
- Uid: v.UserId,
- Name: v.NickName,
+ fm := &model.ItemModel{
+ Id: v.UserId,
+ Label: v.NickName,
}
- this.friendData.DataList = append(this.friendData.DataList, fm)
+ this.itemListData.DataList = append(this.itemListData.DataList, fm)
}
- this.reloadFriendData()
+ this.reloadListData()
},
})
}
diff --git a/cmd/v2/ui/formview/friend_apply.go b/cmd/v2/ui/views/friend_apply.go
similarity index 100%
rename from cmd/v2/ui/formview/friend_apply.go
rename to cmd/v2/ui/views/friend_apply.go
diff --git a/cmd/v2/ui/formview/friend_applylist.go b/cmd/v2/ui/views/friend_applylist.go
similarity index 100%
rename from cmd/v2/ui/formview/friend_applylist.go
rename to cmd/v2/ui/views/friend_applylist.go
diff --git a/cmd/v2/ui/formview/friend_blacklist.go b/cmd/v2/ui/views/friend_blacklist.go
similarity index 78%
rename from cmd/v2/ui/formview/friend_blacklist.go
rename to cmd/v2/ui/views/friend_blacklist.go
index e755e5e3a..8a5d79ddf 100644
--- a/cmd/v2/ui/formview/friend_blacklist.go
+++ b/cmd/v2/ui/views/friend_blacklist.go
@@ -15,14 +15,14 @@ import (
)
type FriendBlacklistView struct {
- FriendListBaseView
+ ListBaseView
}
func (this *FriendBlacklistView) CreateView(t *model.TestCase) fyne.CanvasObject {
// init required
- this.initFriendList()
+ this.initItemList()
// create friend list view
- this.createList()
+ this.createItemListWithCheck()
friendList := func() {
if err := service.GetPttService().SendToClient(
@@ -31,12 +31,12 @@ func (this *FriendBlacklistView) CreateView(t *model.TestCase) fyne.CanvasObject
&pb.FriendBlackListReq{}); err != nil {
logrus.Error(err)
}
- this.friendData = model.NewFriendModelList()
+ this.itemListData = model.NewItemModelList()
}
friendListBtn := widget.NewButton("黑名单列表", friendList)
// layout
- split := container.NewHSplit(this.dataList, container.NewVBox(friendListBtn))
+ split := container.NewHSplit(this.dataListWidget, container.NewVBox(friendListBtn))
split.Offset = 1
//data listener for
@@ -60,13 +60,13 @@ func (this *FriendBlacklistView) dataListener() {
}
for _, v := range rsp.Friends {
- fm := &model.FriendModel{
- Uid: v.UserId,
- Name: v.NickName,
+ fm := &model.ItemModel{
+ Id: v.UserId,
+ Label: v.NickName,
}
- this.friendData.DataList = append(this.friendData.DataList, fm)
+ this.itemListData.DataList = append(this.itemListData.DataList, fm)
}
- this.reloadFriendData()
+ this.reloadListData()
},
})
}
diff --git a/cmd/v2/ui/formview/friend_delblack.go b/cmd/v2/ui/views/friend_delblack.go
similarity index 100%
rename from cmd/v2/ui/formview/friend_delblack.go
rename to cmd/v2/ui/views/friend_delblack.go
diff --git a/cmd/v2/ui/formview/friend_list.go b/cmd/v2/ui/views/friend_list.go
similarity index 76%
rename from cmd/v2/ui/formview/friend_list.go
rename to cmd/v2/ui/views/friend_list.go
index 3c45bd1e0..1e2e608ac 100644
--- a/cmd/v2/ui/formview/friend_list.go
+++ b/cmd/v2/ui/views/friend_list.go
@@ -17,16 +17,16 @@ import (
//好友列表
type FriendListView struct {
- FriendListBaseView //继承支持好友列表的基类
- friendList func()
+ ListBaseView //继承支持好友列表的基类
+ friendList func()
}
func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject {
// init required
- this.initFriendList()
+ this.initItemList()
// create friend list view
- this.createList()
+ this.createItemListWithCheck()
// new friendlist btn
this.friendList = func() {
@@ -36,7 +36,7 @@ func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject {
&pb.FriendListReq{}); err != nil {
logrus.Error(err)
}
- this.friendData = model.NewFriendModelList()
+ this.itemListData = model.NewItemModelList()
}
friendListBtn := widget.NewButton("好友列表", this.friendList)
@@ -47,17 +47,17 @@ func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject {
t.MainType,
friend.FriendSubTypeZan,
&pb.FriendZanReq{
- FriendId: this.selFriendIds[0],
+ FriendId: this.selItemIds[0],
},
); err != nil {
logrus.Error(err)
return
}
- this.applyListBtnFun()
+ this.listBtnFun()
})
// layout
- split := container.NewHSplit(this.dataList, container.NewVBox(friendListBtn, zanBtn))
+ split := container.NewHSplit(this.dataListWidget, container.NewVBox(friendListBtn, zanBtn))
split.Offset = 1
//data listener for
@@ -83,15 +83,15 @@ func (this *FriendListView) dataListener() {
logrus.Error("unmarshal err")
}
- this.friendData = model.NewFriendModelList()
+ this.itemListData = model.NewItemModelList()
for _, v := range rsp.List {
- fm := &model.FriendModel{
- Uid: v.UserId,
- Name: v.NickName,
+ fm := &model.ItemModel{
+ Id: v.UserId,
+ Label: v.NickName,
}
- this.friendData.DataList = append(this.friendData.DataList, fm)
+ this.itemListData.DataList = append(this.itemListData.DataList, fm)
}
- this.reloadFriendData()
+ this.reloadListData()
},
})
}
diff --git a/cmd/v2/ui/formview/friend_refuse.go b/cmd/v2/ui/views/friend_refuse.go
similarity index 100%
rename from cmd/v2/ui/formview/friend_refuse.go
rename to cmd/v2/ui/views/friend_refuse.go
diff --git a/cmd/v2/ui/formview/friend_search.go b/cmd/v2/ui/views/friend_search.go
similarity index 100%
rename from cmd/v2/ui/formview/friend_search.go
rename to cmd/v2/ui/views/friend_search.go
diff --git a/cmd/v2/ui/formview/friend_zan.go b/cmd/v2/ui/views/friend_zan.go
similarity index 76%
rename from cmd/v2/ui/formview/friend_zan.go
rename to cmd/v2/ui/views/friend_zan.go
index d463e768b..610fbc15b 100644
--- a/cmd/v2/ui/formview/friend_zan.go
+++ b/cmd/v2/ui/views/friend_zan.go
@@ -16,12 +16,12 @@ import (
)
type FriendZanView struct {
- FriendListBaseView
+ ListBaseView
}
func (this *FriendZanView) CreateView(t *model.TestCase) fyne.CanvasObject {
//init required
- this.initFriendList()
+ this.initItemList()
receiveBtn := widget.NewButtonWithIcon("获赞", theme.ConfirmIcon(), func() {
@@ -29,13 +29,13 @@ func (this *FriendZanView) CreateView(t *model.TestCase) fyne.CanvasObject {
t.MainType,
"zanreceive",
&pb.FriendZanreceiveReq{
- FriendId: this.selFriendIds[0],
+ FriendId: this.selItemIds[0],
},
); err != nil {
logrus.Error(err)
return
}
- this.applyListBtnFun()
+ this.listBtnFun()
})
// new zanlist btn
@@ -46,15 +46,15 @@ func (this *FriendZanView) CreateView(t *model.TestCase) fyne.CanvasObject {
&pb.FriendZanlistReq{}); err != nil {
logrus.Error(err)
}
- this.friendData = model.NewFriendModelList()
+ this.itemListData = model.NewItemModelList()
}
zanListBtn := widget.NewButton("点赞列表", zanList)
// create friend list view
- this.createList()
+ this.createItemListWithCheck()
// layout
- split := container.NewHSplit(this.dataList, container.NewVBox(zanListBtn, receiveBtn))
+ split := container.NewHSplit(this.dataListWidget, container.NewVBox(zanListBtn, receiveBtn))
split.Offset = 1
this.dataListener()
@@ -75,15 +75,15 @@ func (this *FriendZanView) dataListener() {
logrus.Error("unmarshal err")
}
- this.friendData = model.NewFriendModelList()
+ this.itemListData = model.NewItemModelList()
for _, v := range rsp.List {
- fm := &model.FriendModel{
- Uid: v.UserId,
- Name: v.NickName,
+ fm := &model.ItemModel{
+ Id: v.UserId,
+ Label: v.NickName,
}
- this.friendData.DataList = append(this.friendData.DataList, fm)
+ this.itemListData.DataList = append(this.itemListData.DataList, fm)
}
- this.reloadFriendData()
+ this.reloadListData()
},
})
}
diff --git a/cmd/v2/ui/views/hero_list.go b/cmd/v2/ui/views/hero_list.go
new file mode 100644
index 000000000..0d6733532
--- /dev/null
+++ b/cmd/v2/ui/views/hero_list.go
@@ -0,0 +1,138 @@
+package formview
+
+import (
+ "fmt"
+ "go_dreamfactory/cmd/v2/model"
+ "go_dreamfactory/cmd/v2/service"
+ "go_dreamfactory/cmd/v2/service/observer"
+ "go_dreamfactory/comm"
+ "go_dreamfactory/modules/hero"
+ "go_dreamfactory/pb"
+
+ "fyne.io/fyne/v2"
+ "fyne.io/fyne/v2/container"
+ "fyne.io/fyne/v2/theme"
+ "fyne.io/fyne/v2/widget"
+ "github.com/sirupsen/logrus"
+ "github.com/spf13/cast"
+)
+
+type HeroListView struct {
+ ListBaseView
+ subWindows *SubWindowListView
+ heroList []*pb.DBHero
+}
+
+func (this *HeroListView) CreateView(t *model.TestCase) fyne.CanvasObject {
+ // init required
+ this.initItemList()
+
+ // create friend list view
+ l := this.createItemList()
+ l.OnSelected = func(id widget.ListItemID) {
+ //创建window
+ m := this.itemListData.DataList[id]
+ // if this.subWindows == nil {
+ this.subWindows = NewSubWindowView(m.Id, m.Label, this.obs)
+ this.subWindows.initItemList()
+ this.subWindows.createItemListWithCheck()
+ this.subWindows.createWindows()
+ // }
+
+ // TODO 升星
+ starBtn := widget.NewButtonWithIcon("升星", theme.ConfirmIcon(), func() {
+ if err := service.GetPttService().SendToClient(t.MainType, hero.StrengthenUpStar,
+ &pb.HeroStrengthenUpStarReq{
+ HeroObjID: m.Id,
+ // HeroRace: heroRace,
+ // Hero: hero,
+ }); err != nil {
+ logrus.Error(err)
+ return
+ }
+ })
+
+ lvBtn := widget.NewButtonWithIcon("升级", theme.ConfirmIcon(), func() {
+ var cards []*pb.MapStringInt32
+ for _, v := range this.subWindows.selItemIds {
+ cards = append(cards, &pb.MapStringInt32{
+ Key: v,
+ Value: 1,
+ })
+ }
+ if err := service.GetPttService().SendToClient(t.MainType, hero.StrengthenUplv,
+ &pb.HeroStrengthenUplvReq{
+ HeroObjID: m.Id,
+ ExpCards: cards,
+ }); err != nil {
+ logrus.Error(err)
+ return
+ }
+ })
+
+ this.subWindows.itemListData = model.NewItemModelList()
+ for _, v := range this.heroList {
+ if v.CardType == 3 { //不显示类型是3的
+ fm := &model.ItemModel{
+ Id: cast.ToString(v.Id),
+ Label: fmt.Sprintf("%s Lv:%d S:%d T:%d", cast.ToString(v.HeroID), v.Lv, v.Star, v.CardType),
+ }
+ this.subWindows.itemListData.DataList = append(this.subWindows.itemListData.DataList, fm)
+ }
+ }
+ this.subWindows.reloadListData()
+
+ split := container.NewHSplit(this.subWindows.dataListWidget, container.NewVBox(starBtn, lvBtn))
+ split.Offset = 1
+
+ this.subWindows.w.SetContent(split)
+
+ this.subWindows.w.Show()
+ }
+
+ // hero list button
+ heroListBtn := widget.NewButtonWithIcon("英雄列表", theme.ConfirmIcon(), func() {
+ if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.HeroListReq{}); err != nil {
+ logrus.Error(err)
+ }
+ })
+
+ // layout
+ split := container.NewHSplit(this.dataListWidget, container.NewVBox(heroListBtn))
+ split.Offset = 1
+
+ //data listener for
+ this.dataListener()
+
+ return split
+}
+
+func (this *HeroListView) dataListener() {
+ this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{
+ OnNotify: func(d interface{}, args ...interface{}) {
+ data := d.(*pb.UserMessage)
+ if !(data.MainType == string(comm.ModuleHero) &&
+ data.SubType == hero.HeroSubTypeList) {
+ return
+ }
+
+ rsp := &pb.HeroListResp{}
+ if !comm.ProtoUnmarshal(data, rsp) {
+ logrus.Error("unmarshal err")
+ }
+ this.heroList = rsp.List
+
+ this.itemListData = model.NewItemModelList()
+ for _, v := range rsp.List {
+ if v.CardType != 3 { //不显示类型是3的
+ fm := &model.ItemModel{
+ Id: cast.ToString(v.Id),
+ Label: fmt.Sprintf("%s Lv:%d S:%d T:%d", cast.ToString(v.HeroID), v.Lv, v.Star, v.CardType),
+ }
+ this.itemListData.DataList = append(this.itemListData.DataList, fm)
+ }
+ }
+ this.reloadListData()
+ },
+ })
+}
diff --git a/cmd/v2/ui/formview/hero_strengthenUpStar.go b/cmd/v2/ui/views/hero_strengthenUpStar.go
similarity index 100%
rename from cmd/v2/ui/formview/hero_strengthenUpStar.go
rename to cmd/v2/ui/views/hero_strengthenUpStar.go
diff --git a/cmd/v2/ui/formview/hero_strengthenUplv.go b/cmd/v2/ui/views/hero_strengthenUplv.go
similarity index 100%
rename from cmd/v2/ui/formview/hero_strengthenUplv.go
rename to cmd/v2/ui/views/hero_strengthenUplv.go
diff --git a/cmd/v2/ui/formview/items_list.go b/cmd/v2/ui/views/items_list.go
similarity index 100%
rename from cmd/v2/ui/formview/items_list.go
rename to cmd/v2/ui/views/items_list.go
diff --git a/cmd/v2/ui/formview/items_sell.go b/cmd/v2/ui/views/items_sell.go
similarity index 100%
rename from cmd/v2/ui/formview/items_sell.go
rename to cmd/v2/ui/views/items_sell.go
diff --git a/cmd/v2/ui/formview/items_use.go b/cmd/v2/ui/views/items_use.go
similarity index 100%
rename from cmd/v2/ui/formview/items_use.go
rename to cmd/v2/ui/views/items_use.go
diff --git a/cmd/v2/ui/formview/mail_attachment.go b/cmd/v2/ui/views/mail_attachment.go
similarity index 100%
rename from cmd/v2/ui/formview/mail_attachment.go
rename to cmd/v2/ui/views/mail_attachment.go
diff --git a/cmd/v2/ui/formview/mail_attachmentall.go b/cmd/v2/ui/views/mail_attachmentall.go
similarity index 100%
rename from cmd/v2/ui/formview/mail_attachmentall.go
rename to cmd/v2/ui/views/mail_attachmentall.go
diff --git a/cmd/v2/ui/formview/mail_del.go b/cmd/v2/ui/views/mail_del.go
similarity index 100%
rename from cmd/v2/ui/formview/mail_del.go
rename to cmd/v2/ui/views/mail_del.go
diff --git a/cmd/v2/ui/formview/mail_list.go b/cmd/v2/ui/views/mail_list.go
similarity index 100%
rename from cmd/v2/ui/formview/mail_list.go
rename to cmd/v2/ui/views/mail_list.go
diff --git a/cmd/v2/ui/formview/mail_readmail.go b/cmd/v2/ui/views/mail_readmail.go
similarity index 100%
rename from cmd/v2/ui/formview/mail_readmail.go
rename to cmd/v2/ui/views/mail_readmail.go
diff --git a/cmd/v2/ui/formview/mainline_challenge.go b/cmd/v2/ui/views/mainline_challenge.go
similarity index 100%
rename from cmd/v2/ui/formview/mainline_challenge.go
rename to cmd/v2/ui/views/mainline_challenge.go
diff --git a/cmd/v2/ui/formview/mainline_list.go b/cmd/v2/ui/views/mainline_list.go
similarity index 100%
rename from cmd/v2/ui/formview/mainline_list.go
rename to cmd/v2/ui/views/mainline_list.go
diff --git a/cmd/v2/ui/formview/mainline_reward.go b/cmd/v2/ui/views/mainline_reward.go
similarity index 100%
rename from cmd/v2/ui/formview/mainline_reward.go
rename to cmd/v2/ui/views/mainline_reward.go
diff --git a/cmd/v2/ui/formview/pagoda_list.go b/cmd/v2/ui/views/pagoda_list.go
similarity index 100%
rename from cmd/v2/ui/formview/pagoda_list.go
rename to cmd/v2/ui/views/pagoda_list.go
diff --git a/cmd/v2/ui/formview/shop_buy.go b/cmd/v2/ui/views/shop_buy.go
similarity index 100%
rename from cmd/v2/ui/formview/shop_buy.go
rename to cmd/v2/ui/views/shop_buy.go
diff --git a/cmd/v2/ui/formview/shop_list.go b/cmd/v2/ui/views/shop_list.go
similarity index 100%
rename from cmd/v2/ui/formview/shop_list.go
rename to cmd/v2/ui/views/shop_list.go
diff --git a/cmd/v2/ui/views/subwindowbase.go b/cmd/v2/ui/views/subwindowbase.go
new file mode 100644
index 000000000..a763680ef
--- /dev/null
+++ b/cmd/v2/ui/views/subwindowbase.go
@@ -0,0 +1,69 @@
+package formview
+
+import (
+ "fmt"
+ "go_dreamfactory/cmd/v2/model"
+ "go_dreamfactory/cmd/v2/service/observer"
+ "go_dreamfactory/comm"
+ "go_dreamfactory/modules/hero"
+ "go_dreamfactory/pb"
+
+ "fyne.io/fyne/v2"
+ "github.com/sirupsen/logrus"
+ "github.com/spf13/cast"
+)
+
+type SubWindowListView struct {
+ ListBaseView
+ title string
+ winId string
+ obs observer.Observer
+ w fyne.Window
+}
+
+func NewSubWindowView(winId, title string, obs observer.Observer) *SubWindowListView {
+ return &SubWindowListView{
+ title: title,
+ winId: winId,
+ obs: obs,
+ }
+}
+
+func (this *SubWindowListView) createWindows() fyne.Window {
+ this.w = fyne.CurrentApp().NewWindow(this.title)
+
+ this.w.CenterOnScreen()
+ this.w.SetFixedSize(true)
+ this.w.Resize(fyne.Size{Width: 800, Height: 650})
+ this.dataListener()
+ return this.w
+}
+
+func (this *SubWindowListView) dataListener() {
+ this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{
+ OnNotify: func(d interface{}, args ...interface{}) {
+ data := d.(*pb.UserMessage)
+ if !(data.MainType == string(comm.ModuleHero) &&
+ data.SubType == hero.HeroSubTypeList) {
+ return
+ }
+
+ rsp := &pb.HeroListResp{}
+ if !comm.ProtoUnmarshal(data, rsp) {
+ logrus.Error("unmarshal err")
+ }
+
+ this.itemListData = model.NewItemModelList()
+ for _, v := range rsp.List {
+ if v.CardType == 3 { //只显示类型是3的
+ fm := &model.ItemModel{
+ Id: cast.ToString(v.Id),
+ Label: fmt.Sprintf("%s Lv:%d S:%d T:%d", cast.ToString(v.HeroID), v.Lv, v.Star, v.CardType),
+ }
+ this.itemListData.DataList = append(this.itemListData.DataList, fm)
+ }
+ }
+ this.reloadListData()
+ },
+ })
+}
diff --git a/cmd/v2/ui/views/task_activelist.go b/cmd/v2/ui/views/task_activelist.go
new file mode 100644
index 000000000..77bf8ddcf
--- /dev/null
+++ b/cmd/v2/ui/views/task_activelist.go
@@ -0,0 +1,103 @@
+package formview
+
+import (
+ "errors"
+ "fmt"
+ "go_dreamfactory/cmd/v2/lib/common"
+ "go_dreamfactory/cmd/v2/model"
+ "go_dreamfactory/cmd/v2/service"
+ "go_dreamfactory/cmd/v2/service/observer"
+ "go_dreamfactory/comm"
+ "go_dreamfactory/modules/task"
+ "go_dreamfactory/pb"
+
+ "fyne.io/fyne/v2"
+ "fyne.io/fyne/v2/container"
+ "fyne.io/fyne/v2/dialog"
+ "fyne.io/fyne/v2/theme"
+ "fyne.io/fyne/v2/widget"
+ "github.com/sirupsen/logrus"
+ "github.com/spf13/cast"
+)
+
+type TaskActiveListView struct {
+ ListBaseView
+ activeVal int32
+}
+
+func (this *TaskActiveListView) CreateView(t *model.TestCase) fyne.CanvasObject {
+ // init required
+ this.initItemList()
+
+ // create friend list view
+ this.createItemList()
+
+ // select widget
+ tagSelect := getTaskTagSelect()
+ this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASKTAG, tagSelect))
+
+ // task active list button
+ taskListBtn := widget.NewButtonWithIcon("活跃度", theme.ConfirmIcon(), func() {
+ if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.TaskActiveListReq{
+ TaskTag: cast.ToInt32(tagSelect.Selected),
+ }); err != nil {
+ logrus.Error(err)
+ }
+ })
+
+ //label
+ activeLabel := widget.NewLabel(fmt.Sprintf("当前活跃度:%d", this.activeVal))
+
+ //receive button
+ receiveBtn := widget.NewButtonWithIcon("领取", theme.ConfirmIcon(), func() {
+ if len(this.selItemIds) != 1 {
+ dialog.ShowError(errors.New("请选择一项"), this.w)
+ return
+ }
+ if err := service.GetPttService().SendToClient(
+ t.MainType, "activereceive",
+ &pb.TaskReceiveReq{Id: this.selItemIds[0], TaskTag: cast.ToInt32(tagSelect.Selected)}); err != nil {
+ logrus.Error(err)
+ return
+ }
+ })
+
+ // layout
+ split := container.NewHSplit(this.dataListWidget, container.NewVBox(activeLabel, this.form, taskListBtn, receiveBtn))
+ split.Offset = 1
+
+ //data listener for
+ this.dataListener()
+
+ return split
+}
+
+func (this *TaskActiveListView) dataListener() {
+ this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{
+ OnNotify: func(d interface{}, args ...interface{}) {
+ data := d.(*pb.UserMessage)
+ if !(data.MainType == string(comm.ModuleTask) &&
+ data.SubType == task.TaskSubTypeActiveList) {
+ return
+ }
+
+ rsp := &pb.TaskActiveListResp{}
+ if !comm.ProtoUnmarshal(data, rsp) {
+ logrus.Error("unmarshal err")
+ }
+
+ this.activeVal = rsp.Active
+
+ this.itemListData = model.NewItemModelList()
+ for _, v := range rsp.List {
+ fm := &model.ItemModel{
+ Id: cast.ToString(v.Id),
+ Label: fmt.Sprintf("%s R:%d", cast.ToString(v.RId), v.Received),
+ }
+ this.itemListData.DataList = append(this.itemListData.DataList, fm)
+ }
+ this.reloadListData()
+
+ },
+ })
+}
diff --git a/cmd/v2/ui/formview/task_activereceive.go b/cmd/v2/ui/views/task_activereceive.go
similarity index 100%
rename from cmd/v2/ui/formview/task_activereceive.go
rename to cmd/v2/ui/views/task_activereceive.go
diff --git a/cmd/v2/ui/views/task_list.go b/cmd/v2/ui/views/task_list.go
new file mode 100644
index 000000000..934d99eb9
--- /dev/null
+++ b/cmd/v2/ui/views/task_list.go
@@ -0,0 +1,96 @@
+package formview
+
+import (
+ "errors"
+ "fmt"
+ "go_dreamfactory/cmd/v2/lib/common"
+ "go_dreamfactory/cmd/v2/model"
+ "go_dreamfactory/cmd/v2/service"
+ "go_dreamfactory/cmd/v2/service/observer"
+ "go_dreamfactory/comm"
+ "go_dreamfactory/modules/task"
+ "go_dreamfactory/pb"
+
+ "fyne.io/fyne/v2"
+ "fyne.io/fyne/v2/container"
+ "fyne.io/fyne/v2/dialog"
+ "fyne.io/fyne/v2/theme"
+ "fyne.io/fyne/v2/widget"
+ "github.com/sirupsen/logrus"
+ "github.com/spf13/cast"
+)
+
+type TaskListView struct {
+ ListBaseView
+}
+
+func (this *TaskListView) CreateView(t *model.TestCase) fyne.CanvasObject {
+ // init required
+ this.initItemList()
+
+ // create friend list view
+ this.createItemList()
+
+ // select widget
+ tagSelect := getTaskTagSelect()
+ this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASKTAG, tagSelect))
+
+ // task list button
+ taskListBtn := widget.NewButtonWithIcon("任务列表", theme.ConfirmIcon(), func() {
+ if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.TaskListReq{
+ TaskTag: cast.ToInt32(tagSelect.Selected),
+ }); err != nil {
+ logrus.Error(err)
+ }
+ })
+
+ // task receive button
+ receiveBtn := widget.NewButtonWithIcon("任务领取", theme.ConfirmIcon(), func() {
+ if len(this.selItemIds) != 1 {
+ dialog.ShowError(errors.New("请选择一项"), this.w)
+ return
+ }
+ if err := service.GetPttService().SendToClient(
+ t.MainType, "receive",
+ &pb.TaskReceiveReq{Id: this.selItemIds[0], TaskTag: cast.ToInt32(tagSelect.Selected)}); err != nil {
+ logrus.Error(err)
+ return
+ }
+ })
+
+ // layout
+ split := container.NewHSplit(this.dataListWidget, container.NewVBox(this.form, taskListBtn, receiveBtn))
+ split.Offset = 1
+
+ //data listener for
+ this.dataListener()
+
+ return split
+}
+
+func (this *TaskListView) dataListener() {
+ this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{
+ OnNotify: func(d interface{}, args ...interface{}) {
+ data := d.(*pb.UserMessage)
+ if !(data.MainType == string(comm.ModuleTask) &&
+ data.SubType == task.TaskSubTypeList) {
+ return
+ }
+
+ rsp := &pb.TaskListResp{}
+ if !comm.ProtoUnmarshal(data, rsp) {
+ logrus.Error("unmarshal err")
+ }
+
+ this.itemListData = model.NewItemModelList()
+ for _, v := range rsp.List {
+ fm := &model.ItemModel{
+ Id: cast.ToString(v.Id),
+ Label: fmt.Sprintf("%s S:%d R:%d", cast.ToString(v.TaskId), v.Status, v.Received),
+ }
+ this.itemListData.DataList = append(this.itemListData.DataList, fm)
+ }
+ this.reloadListData()
+ },
+ })
+}
diff --git a/cmd/v2/ui/formview/user_modifyname.go b/cmd/v2/ui/views/user_modifyname.go
similarity index 100%
rename from cmd/v2/ui/formview/user_modifyname.go
rename to cmd/v2/ui/views/user_modifyname.go
diff --git a/cmd/v2/ui/formview/user_modifysign.go b/cmd/v2/ui/views/user_modifysign.go
similarity index 100%
rename from cmd/v2/ui/formview/user_modifysign.go
rename to cmd/v2/ui/views/user_modifysign.go
diff --git a/go.mod b/go.mod
index 8aed86c5d..7a8aed0b8 100644
--- a/go.mod
+++ b/go.mod
@@ -10,6 +10,7 @@ require (
github.com/atotto/clipboard v0.1.4
github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394
github.com/dengsgo/math-engine v0.0.0-20220213125415-0351c3c75eca
+ github.com/gin-gonic/gin v1.8.1
github.com/go-playground/validator/v10 v10.10.1
github.com/go-redis/redis/v8 v8.11.5
github.com/golang-jwt/jwt v3.2.2+incompatible
@@ -61,6 +62,7 @@ require (
github.com/fyne-io/gl-js v0.0.0-20220119005834-d2da28d9ccfe // indirect
github.com/fyne-io/glfw-js v0.0.0-20220120001248-ee7290d23504 // indirect
github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2 // indirect
+ github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-cmd/cmd v1.4.0 // indirect
github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 // indirect
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20211213063430-748e38ca8aec // indirect
@@ -73,6 +75,7 @@ require (
github.com/go-redis/redis_rate/v9 v9.1.2 // indirect
github.com/go-stack/stack v1.8.0 // indirect
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect
+ github.com/goccy/go-json v0.9.7 // indirect
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/goki/freetype v0.0.0-20181231101311-fa8a33aabaff // indirect
@@ -117,6 +120,7 @@ require (
github.com/nxadm/tail v1.4.8 // indirect
github.com/onsi/ginkgo v1.16.5 // indirect
github.com/pelletier/go-toml v1.9.3 // indirect
+ github.com/pelletier/go-toml/v2 v2.0.1 // indirect
github.com/philhofer/fwd v1.1.1 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
diff --git a/go.sum b/go.sum
index 1ef8d27b6..ba6705670 100644
--- a/go.sum
+++ b/go.sum
@@ -163,6 +163,10 @@ github.com/fyne-io/glfw-js v0.0.0-20220120001248-ee7290d23504/go.mod h1:gLRWYfYn
github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2 h1:hnLq+55b7Zh7/2IRzWCpiTcAvjv/P8ERF+N7+xXbZhk=
github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2/go.mod h1:eO7W361vmlPOrykIg+Rsh1SZ3tQBaOsfzZhsIOb/Lm0=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8=
+github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk=
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
github.com/go-cmd/cmd v1.4.0 h1:dF+1JtZMlgCKAcsvstp2VNmVA/jXRjlRYFOF4/w7Bbo=
github.com/go-cmd/cmd v1.4.0/go.mod h1:tbBenttXtZU4c5djS1o7PWL5pd2xAr5sIqH1kGdNiRc=
@@ -231,6 +235,8 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe
github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ=
github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0=
github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
+github.com/goccy/go-json v0.9.7 h1:IcB+Aqpx/iMHu5Yooh7jEzJk1JZ7Pjtmys2ukPr7EeM=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
@@ -561,6 +567,8 @@ github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144T
github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ=
github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
+github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU=
+github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
github.com/peterbourgon/g2s v0.0.0-20140925154142-ec76db4c1ac1 h1:5Dl+ADmsGerAqHwWzyLqkNaUBQ+48DQwfDCaW1gHAQM=
github.com/peterbourgon/g2s v0.0.0-20140925154142-ec76db4c1ac1/go.mod h1:1VcHEd3ro4QMoHfiNl/j7Jkln9+KQuorp0PItHMJYNg=
github.com/philhofer/fwd v1.1.1 h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ=
diff --git a/modules/hero/api_drawCard.go b/modules/hero/api_drawCard.go
index 5901b5857..c98043ed2 100644
--- a/modules/hero/api_drawCard.go
+++ b/modules/hero/api_drawCard.go
@@ -9,7 +9,7 @@ import (
)
func (this *apiComp) DrawCardCheck(session comm.IUserSession, req *pb.HeroDrawCardReq) (code pb.ErrorCode) {
- if req.DrawType <= 0 { // 只能是单抽或10抽
+ if req.DrawType < 0 && (req.DrawCount == 1 || req.DrawCount == 10) { // 只能是单抽或10抽
code = pb.ErrorCode_ReqParameterError
}
return
@@ -27,35 +27,39 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
cfgDraw *cfg.GameglobalData
costAtn *cfg.Gameatn
heroRecord *pb.DBHeroRecord
-
+ pool string
//heroRecord *pb.DBHeroRecord // 英雄扩展属性
)
-
+ req.DrawCount = 10 // test
cfgDraw = this.module.configure.GetGlobalConf() // 读取抽卡配置文件
-
+ if cfgDraw == nil {
+ return
+ }
+ code = this.DrawCardCheck(session, req)
+ if code != pb.ErrorCode_Success {
+ return
+ }
szCards = make([]string, 0)
rsp := &pb.HeroDrawCardResp{}
cfg := cfgDraw
heroRecord, _ = this.module.modelRecord.GetHeroRecord(session.GetUserId())
drawCount = heroRecord.Drawcount
+ pool = this.module.modelHero.CheckPool(drawCount, cfg)
if req.DrawType == 0 { // 普通卡池抽卡
// 获取普通抽卡池
- pool := this.module.modelHero.CheckPool(drawCount, cfg)
- _data := this.module.configure.GetPollByType(pool)
- if _data == nil {
- code = pb.ErrorCode_ConfigNoFound
- return
+ if req.DrawCount == 1 {
+ costAtn = cfgDraw.BasePoolCost
+ } else {
+ costAtn = cfgDraw.BasePool10cost
}
- costAtn = cfgDraw.BasePoolCost
- costAtn.N *= req.DrawCount // 重新计算消耗数量
costRes = append(costRes, costAtn)
code = this.module.CheckRes(session, costRes)
if code != pb.ErrorCode_Success { // 消耗数量不足直接返回
return
}
- for {
+ for i := 0; i < int(req.DrawCount); i++ {
sz := make([]int32, 0)
if cfgDraw.BasePoolStar3 != 0 {
sz = append(sz, cfgDraw.BasePoolStar3)
@@ -74,52 +78,53 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
} else if starIndex == 2 {
star5Max++
}
- if star4Max >= cfgDraw.Draw10Star4Max {
- starIndex = 0
- } else if star5Max >= cfgDraw.Draw10Star5Max {
+ if star4Max >= cfgDraw.Draw10Star4Max || star5Max >= cfgDraw.Draw10Star5Max {
starIndex = 0
}
- szStar = append(szStar, starIndex)
+ szStar = append(szStar, starIndex+3)
if len(szStar) >= int(req.DrawCount) {
break
}
}
- for star := range szCards { // szStar 转 szHeroId
-
- sz := make([]int32, 0)
- for _, v := range _data[int32(star)] {
- sz = append(sz, v.Weight)
- }
- randomIndex := this.module.modelHero.GetRandW(sz)
-
- szCards = append(szCards, _data[int32(star)][randomIndex].Id)
- }
-
} else { // 所有阵营抽卡都走这里
- pool := ""
+ if req.DrawCount == 1 {
+ switch req.DrawType {
+ case 1:
+ pool = cfg.Camp1Pool1
+ costAtn = cfgDraw.Camp1PoolCost
- switch req.DrawType {
- case 1:
- pool = cfg.Camp1Pool1
+ case 2:
+ pool = cfg.Camp2Pool1
+ costAtn = cfgDraw.Camp2PoolCost
+ case 3:
+ pool = cfg.Camp3Pool1
+ costAtn = cfgDraw.Camp3PoolCost
+ case 4:
+ pool = cfg.Camp4Pool1
+ costAtn = cfgDraw.Camp4PoolCost
+ }
+ } else {
costAtn = cfgDraw.Camp1PoolCost
+ switch req.DrawType {
+ case 1:
+ pool = cfg.Camp1Pool1
+ costAtn = cfgDraw.Camp1Pool10cost
- case 2:
- pool = cfg.Camp2Pool1
- costAtn = cfgDraw.Camp2PoolCost
- case 3:
- pool = cfg.Camp3Pool1
- costAtn = cfgDraw.Camp3PoolCost
- case 4:
- pool = cfg.Camp4Pool1
- costAtn = cfgDraw.Camp4PoolCost
+ case 2:
+ pool = cfg.Camp2Pool1
+ costAtn = cfgDraw.Camp2Pool10cost
+ case 3:
+ pool = cfg.Camp3Pool1
+ costAtn = cfgDraw.Camp3Pool10cost
+ case 4:
+ pool = cfg.Camp4Pool1
+ costAtn = cfgDraw.Camp4Pool10cost
+ }
}
+
costAtn.N *= req.DrawCount
costRes = append(costRes, costAtn)
- _data := this.module.configure.GetPollByType(pool)
- if _data == nil {
- code = pb.ErrorCode_ConfigNoFound
- return
- }
+
//阵营消耗
code = this.module.CheckRes(session, costRes)
if code != pb.ErrorCode_Success { // 消耗数量不足直接返回
@@ -128,11 +133,10 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
for {
sz := make([]int32, 0)
if cfgDraw.CampPoolStar3 != 0 {
- sz = append(sz, cfgDraw.CampPoolStar3)
+ sz = append(sz, cfgDraw.CampPoolStar3) // 3 4 5 性权重
}
if cfgDraw.CampPoolStar4 != 0 {
sz = append(sz, cfgDraw.CampPoolStar4)
-
}
if cfgDraw.CampPoolStar5 != 0 {
sz = append(sz, cfgDraw.CampPoolStar5)
@@ -144,35 +148,36 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
} else if starIndex == 2 {
star5Max++
}
- if star4Max >= cfgDraw.Draw10Star4Max {
- starIndex = 0
- } else if star5Max >= cfgDraw.Draw10Star5Max {
+ if star4Max >= cfgDraw.Draw10Star4Max || star5Max >= cfgDraw.Draw10Star5Max {
starIndex = 0
}
- szStar = append(szStar, starIndex)
+ szStar = append(szStar, starIndex+3)
if len(szStar) >= int(req.DrawCount) {
break
}
}
- for star := range szCards { // szStar 转 szHeroId
-
- sz := make([]int32, 0)
- for _, v := range _data[int32(star)] {
- sz = append(sz, v.Weight)
- }
- randomIndex := this.module.modelHero.GetRandW(sz)
-
- szCards = append(szCards, _data[int32(star)][randomIndex].Id)
- }
}
+ _data := this.module.configure.GetPollByType(pool)
+ if _data == nil {
+ code = pb.ErrorCode_ConfigNoFound
+ return
+ }
+ for _, star := range szStar { // szStar 转 szHeroId
+ sz := make([]int32, 0)
+ for _, v := range _data[int32(star)] {
+ sz = append(sz, v.Weight)
+ }
+ randomIndex := this.module.modelHero.GetRandW(sz)
+
+ szCards = append(szCards, _data[int32(star)][randomIndex].Id)
+ }
// 更新record 配置信息
update := map[string]interface{}{}
if drawCount != -1 {
drawCount += req.DrawCount
update["drawcount"] = drawCount
}
- //update["race"+strconv.Itoa(int(race)-1)] = raceData
this.module.modelRecord.ChangeHeroRecord(session.GetUserId(), update)
// 消耗道具
code = this.module.ConsumeRes(session, costRes, true)
diff --git a/modules/items/module.go b/modules/items/module.go
index 8be1a3d08..b62df821c 100644
--- a/modules/items/module.go
+++ b/modules/items/module.go
@@ -61,7 +61,7 @@ func (this *Items) EventUserOffline(session comm.IUserSession) {
//IItems-------------------------------------------------------------------------------------------------------------------------------
///查询用户背包物品数量
func (this *Items) QueryItemAmount(source *comm.ModuleCallSource, uId string, itemid string) (amount uint32) {
- defer this.Debugf("获取物品 uId:%s itemid:%d addnum:%d ", uId, itemid, amount)
+ defer this.Debugf("获取物品 uId:%s itemid:%s addnum:%d ", uId, itemid, amount)
amount = 0
if result := this.modelItems.QueryUserPackItemsAmount(uId, itemid); result != nil && len(result) > 0 {
return result[itemid]
diff --git a/modules/task/config.go b/modules/task/config.go
index 8d6f1c34e..3c3c0385a 100644
--- a/modules/task/config.go
+++ b/modules/task/config.go
@@ -76,14 +76,17 @@ func (this *configureComp) getTaskById(taskId int32) (data *cfg.GametaskRoundDat
}
//是否第一个成就任务
-func (this *configureComp) isFirstTask(taskId int32) bool {
+func (this *configureComp) isFirstTask(taskId int32) (ok bool) {
data := this.getTaskByTag(int32(comm.TASK_ACHIEVE))
for _, v := range data {
if v.IdAfter == taskId {
- return false
+ ok = false
+ } else {
+ ok = true
}
+ break
}
- return true
+ return
}
// 上一个任务
diff --git a/modules/task/model_task.go b/modules/task/model_task.go
index 9e313d226..bf6b36ba9 100644
--- a/modules/task/model_task.go
+++ b/modules/task/model_task.go
@@ -82,7 +82,7 @@ func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) (newli
newlist = append(newlist, v)
}
}
-
+ break
}
}
diff --git a/sys/configure/structs/game.RdtaksAll.go b/sys/configure/structs/game.RdtaksAll.go
new file mode 100644
index 000000000..e8b38f20e
--- /dev/null
+++ b/sys/configure/structs/game.RdtaksAll.go
@@ -0,0 +1,42 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+type GameRdtaksAll struct {
+ _dataMap map[int32]*GameRdtaksAllData
+ _dataList []*GameRdtaksAllData
+}
+
+func NewGameRdtaksAll(_buf []map[string]interface{}) (*GameRdtaksAll, error) {
+ _dataList := make([]*GameRdtaksAllData, 0, len(_buf))
+ dataMap := make(map[int32]*GameRdtaksAllData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := DeserializeGameRdtaksAllData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.RdtaksId] = _v
+ }
+ }
+ return &GameRdtaksAll{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *GameRdtaksAll) GetDataMap() map[int32]*GameRdtaksAllData {
+ return table._dataMap
+}
+
+func (table *GameRdtaksAll) GetDataList() []*GameRdtaksAllData {
+ return table._dataList
+}
+
+func (table *GameRdtaksAll) Get(key int32) *GameRdtaksAllData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/game.RdtaksAllData.go b/sys/configure/structs/game.RdtaksAllData.go
new file mode 100644
index 000000000..039999325
--- /dev/null
+++ b/sys/configure/structs/game.RdtaksAllData.go
@@ -0,0 +1,105 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+import "errors"
+
+type GameRdtaksAllData struct {
+ RdtaksId int32
+ TaskType int32
+ RdtaksNum []int32
+ IdLast []int32
+ IdAfter int32
+ IdTag int32
+ Story int32
+ Completetask int32
+ Reword []*Gameatn
+ ChooseId []int32
+}
+
+const TypeId_GameRdtaksAllData = -100955128
+
+func (*GameRdtaksAllData) GetTypeId() int32 {
+ return -100955128
+}
+
+func (_v *GameRdtaksAllData)Deserialize(_buf map[string]interface{}) (err error) {
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rdtaks_id"].(float64); !_ok_ { err = errors.New("rdtaks_id error"); return }; _v.RdtaksId = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["task_type"].(float64); !_ok_ { err = errors.New("task_type error"); return }; _v.TaskType = int32(_tempNum_) }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["rdtaks_num"].([]interface{}); !_ok_ { err = errors.New("rdtaks_num error"); return }
+
+ _v.RdtaksNum = make([]int32, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ int32
+ { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
+ _v.RdtaksNum = append(_v.RdtaksNum, _list_v_)
+ }
+ }
+
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["id_last"].([]interface{}); !_ok_ { err = errors.New("id_last error"); return }
+
+ _v.IdLast = make([]int32, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ int32
+ { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
+ _v.IdLast = append(_v.IdLast, _list_v_)
+ }
+ }
+
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_after"].(float64); !_ok_ { err = errors.New("id_after error"); return }; _v.IdAfter = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_tag"].(float64); !_ok_ { err = errors.New("id_tag error"); return }; _v.IdTag = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["story"].(float64); !_ok_ { err = errors.New("story error"); return }; _v.Story = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["completetask"].(float64); !_ok_ { err = errors.New("completetask error"); return }; _v.Completetask = int32(_tempNum_) }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["reword"].([]interface{}); !_ok_ { err = errors.New("reword error"); return }
+
+ _v.Reword = make([]*Gameatn, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ *Gameatn
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } }
+ _v.Reword = append(_v.Reword, _list_v_)
+ }
+ }
+
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["choose_id"].([]interface{}); !_ok_ { err = errors.New("choose_id error"); return }
+
+ _v.ChooseId = make([]int32, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ int32
+ { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
+ _v.ChooseId = append(_v.ChooseId, _list_v_)
+ }
+ }
+
+ return
+}
+
+func DeserializeGameRdtaksAllData(_buf map[string]interface{}) (*GameRdtaksAllData, error) {
+ v := &GameRdtaksAllData{}
+ if err := v.Deserialize(_buf); err == nil {
+ return v, nil
+ } else {
+ return nil, err
+ }
+}
diff --git a/sys/configure/structs/game.RdtaksChoose.go b/sys/configure/structs/game.RdtaksChoose.go
new file mode 100644
index 000000000..8b8c6b67c
--- /dev/null
+++ b/sys/configure/structs/game.RdtaksChoose.go
@@ -0,0 +1,42 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+type GameRdtaksChoose struct {
+ _dataMap map[int32]*GameRdtaksChooseData
+ _dataList []*GameRdtaksChooseData
+}
+
+func NewGameRdtaksChoose(_buf []map[string]interface{}) (*GameRdtaksChoose, error) {
+ _dataList := make([]*GameRdtaksChooseData, 0, len(_buf))
+ dataMap := make(map[int32]*GameRdtaksChooseData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := DeserializeGameRdtaksChooseData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.ChooseId] = _v
+ }
+ }
+ return &GameRdtaksChoose{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *GameRdtaksChoose) GetDataMap() map[int32]*GameRdtaksChooseData {
+ return table._dataMap
+}
+
+func (table *GameRdtaksChoose) GetDataList() []*GameRdtaksChooseData {
+ return table._dataList
+}
+
+func (table *GameRdtaksChoose) Get(key int32) *GameRdtaksChooseData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/game.RdtaksChooseData.go b/sys/configure/structs/game.RdtaksChooseData.go
new file mode 100644
index 000000000..74b20694a
--- /dev/null
+++ b/sys/configure/structs/game.RdtaksChooseData.go
@@ -0,0 +1,41 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+import "errors"
+
+type GameRdtaksChooseData struct {
+ ChooseId int32
+ Num int32
+ RdtaksNum int32
+ RdtaksId int32
+}
+
+const TypeId_GameRdtaksChooseData = -1888133596
+
+func (*GameRdtaksChooseData) GetTypeId() int32 {
+ return -1888133596
+}
+
+func (_v *GameRdtaksChooseData)Deserialize(_buf map[string]interface{}) (err error) {
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["choose_id"].(float64); !_ok_ { err = errors.New("choose_id error"); return }; _v.ChooseId = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["num"].(float64); !_ok_ { err = errors.New("num error"); return }; _v.Num = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rdtaks_num"].(float64); !_ok_ { err = errors.New("rdtaks_num error"); return }; _v.RdtaksNum = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rdtaks_id"].(float64); !_ok_ { err = errors.New("rdtaks_id error"); return }; _v.RdtaksId = int32(_tempNum_) }
+ return
+}
+
+func DeserializeGameRdtaksChooseData(_buf map[string]interface{}) (*GameRdtaksChooseData, error) {
+ v := &GameRdtaksChooseData{}
+ if err := v.Deserialize(_buf); err == nil {
+ return v, nil
+ } else {
+ return nil, err
+ }
+}
diff --git a/sys/configure/structs/game.RdtaksType.go b/sys/configure/structs/game.RdtaksType.go
new file mode 100644
index 000000000..df279548b
--- /dev/null
+++ b/sys/configure/structs/game.RdtaksType.go
@@ -0,0 +1,42 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+type GameRdtaksType struct {
+ _dataMap map[int32]*GameRdtaksTypeData
+ _dataList []*GameRdtaksTypeData
+}
+
+func NewGameRdtaksType(_buf []map[string]interface{}) (*GameRdtaksType, error) {
+ _dataList := make([]*GameRdtaksTypeData, 0, len(_buf))
+ dataMap := make(map[int32]*GameRdtaksTypeData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := DeserializeGameRdtaksTypeData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.RdtaksNum] = _v
+ }
+ }
+ return &GameRdtaksType{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *GameRdtaksType) GetDataMap() map[int32]*GameRdtaksTypeData {
+ return table._dataMap
+}
+
+func (table *GameRdtaksType) GetDataList() []*GameRdtaksTypeData {
+ return table._dataList
+}
+
+func (table *GameRdtaksType) Get(key int32) *GameRdtaksTypeData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/game.RdtaksTypeData.go b/sys/configure/structs/game.RdtaksTypeData.go
new file mode 100644
index 000000000..ca2461f89
--- /dev/null
+++ b/sys/configure/structs/game.RdtaksTypeData.go
@@ -0,0 +1,47 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+import "errors"
+
+type GameRdtaksTypeData struct {
+ RdtaksNum int32
+ Typdes int32
+ Datatime int32
+ TyptaskId int32
+ Data1 int32
+ Data2 int32
+ Data3 int32
+}
+
+const TypeId_GameRdtaksTypeData = -1284226425
+
+func (*GameRdtaksTypeData) GetTypeId() int32 {
+ return -1284226425
+}
+
+func (_v *GameRdtaksTypeData)Deserialize(_buf map[string]interface{}) (err error) {
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rdtaks_num"].(float64); !_ok_ { err = errors.New("rdtaks_num error"); return }; _v.RdtaksNum = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["typdes"].(float64); !_ok_ { err = errors.New("typdes error"); return }; _v.Typdes = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["datatime"].(float64); !_ok_ { err = errors.New("datatime error"); return }; _v.Datatime = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["typtask_id"].(float64); !_ok_ { err = errors.New("typtask_id error"); return }; _v.TyptaskId = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data1"].(float64); !_ok_ { err = errors.New("data1 error"); return }; _v.Data1 = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data2"].(float64); !_ok_ { err = errors.New("data2 error"); return }; _v.Data2 = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data3"].(float64); !_ok_ { err = errors.New("data3 error"); return }; _v.Data3 = int32(_tempNum_) }
+ return
+}
+
+func DeserializeGameRdtaksTypeData(_buf map[string]interface{}) (*GameRdtaksTypeData, error) {
+ v := &GameRdtaksTypeData{}
+ if err := v.Deserialize(_buf); err == nil {
+ return v, nil
+ } else {
+ return nil, err
+ }
+}
diff --git a/sys/configure/structs/game.comData.go b/sys/configure/structs/game.comData.go
index 9d340aa9b..746ed7f86 100644
--- a/sys/configure/structs/game.comData.go
+++ b/sys/configure/structs/game.comData.go
@@ -49,6 +49,11 @@ type GamecomData struct {
Camp2PoolCost *Gameatn
Camp3PoolCost *Gameatn
Camp4PoolCost *Gameatn
+ BasePool10cost *Gameatn
+ Camp1Pool10cost *Gameatn
+ Camp2Pool10cost *Gameatn
+ Camp3Pool10cost *Gameatn
+ Camp4Pool10cost *Gameatn
Camp1Pool1 string
Camp2Pool1 string
Camp3Pool1 string
@@ -64,6 +69,8 @@ type GamecomData struct {
CampPoolStar4 int32
CampPoolStar5 int32
Gourmet int32
+ SmithyMaxplayer int32
+ SmithyMaxtime int32
}
const TypeId_GamecomData = -395344177
@@ -176,6 +183,11 @@ func (_v *GamecomData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp2_pool_cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp2_pool_cost error"); return }; if _v.Camp2PoolCost, err = DeserializeGameatn(_x_); err != nil { return } }
{ var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp3_pool_cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp3_pool_cost error"); return }; if _v.Camp3PoolCost, err = DeserializeGameatn(_x_); err != nil { return } }
{ var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp4_pool_cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp4_pool_cost error"); return }; if _v.Camp4PoolCost, err = DeserializeGameatn(_x_); err != nil { return } }
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["base_pool_10cost"].(map[string]interface{}); !_ok_ { err = errors.New("base_pool_10cost error"); return }; if _v.BasePool10cost, err = DeserializeGameatn(_x_); err != nil { return } }
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp1_pool_10cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp1_pool_10cost error"); return }; if _v.Camp1Pool10cost, err = DeserializeGameatn(_x_); err != nil { return } }
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp2_pool_10cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp2_pool_10cost error"); return }; if _v.Camp2Pool10cost, err = DeserializeGameatn(_x_); err != nil { return } }
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp3_pool_10cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp3_pool_10cost error"); return }; if _v.Camp3Pool10cost, err = DeserializeGameatn(_x_); err != nil { return } }
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp4_pool_10cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp4_pool_10cost error"); return }; if _v.Camp4Pool10cost, err = DeserializeGameatn(_x_); err != nil { return } }
{ var _ok_ bool; if _v.Camp1Pool1, _ok_ = _buf["camp1_pool1"].(string); !_ok_ { err = errors.New("camp1_pool1 error"); return } }
{ var _ok_ bool; if _v.Camp2Pool1, _ok_ = _buf["camp2_pool1"].(string); !_ok_ { err = errors.New("camp2_pool1 error"); return } }
{ var _ok_ bool; if _v.Camp3Pool1, _ok_ = _buf["camp3_pool1"].(string); !_ok_ { err = errors.New("camp3_pool1 error"); return } }
@@ -191,6 +203,8 @@ func (_v *GamecomData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["camp_pool_star4"].(float64); !_ok_ { err = errors.New("camp_pool_star4 error"); return }; _v.CampPoolStar4 = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["camp_pool_star5"].(float64); !_ok_ { err = errors.New("camp_pool_star5 error"); return }; _v.CampPoolStar5 = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["gourmet"].(float64); !_ok_ { err = errors.New("gourmet error"); return }; _v.Gourmet = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["smithy_maxplayer"].(float64); !_ok_ { err = errors.New("smithy_maxplayer error"); return }; _v.SmithyMaxplayer = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["smithy_maxtime"].(float64); !_ok_ { err = errors.New("smithy_maxtime error"); return }; _v.SmithyMaxtime = int32(_tempNum_) }
return
}
diff --git a/sys/configure/structs/game.globalData.go b/sys/configure/structs/game.globalData.go
index 6bb58126e..27d2ddb76 100644
--- a/sys/configure/structs/game.globalData.go
+++ b/sys/configure/structs/game.globalData.go
@@ -49,6 +49,11 @@ type GameglobalData struct {
Camp2PoolCost *Gameatn
Camp3PoolCost *Gameatn
Camp4PoolCost *Gameatn
+ BasePool10cost *Gameatn
+ Camp1Pool10cost *Gameatn
+ Camp2Pool10cost *Gameatn
+ Camp3Pool10cost *Gameatn
+ Camp4Pool10cost *Gameatn
Camp1Pool1 string
Camp2Pool1 string
Camp3Pool1 string
@@ -64,6 +69,8 @@ type GameglobalData struct {
CampPoolStar4 int32
CampPoolStar5 int32
Gourmet int32
+ SmithyMaxplayer int32
+ SmithyMaxtime int32
}
const TypeId_GameglobalData = -518904471
@@ -176,6 +183,11 @@ func (_v *GameglobalData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp2_pool_cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp2_pool_cost error"); return }; if _v.Camp2PoolCost, err = DeserializeGameatn(_x_); err != nil { return } }
{ var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp3_pool_cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp3_pool_cost error"); return }; if _v.Camp3PoolCost, err = DeserializeGameatn(_x_); err != nil { return } }
{ var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp4_pool_cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp4_pool_cost error"); return }; if _v.Camp4PoolCost, err = DeserializeGameatn(_x_); err != nil { return } }
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["base_pool_10cost"].(map[string]interface{}); !_ok_ { err = errors.New("base_pool_10cost error"); return }; if _v.BasePool10cost, err = DeserializeGameatn(_x_); err != nil { return } }
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp1_pool_10cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp1_pool_10cost error"); return }; if _v.Camp1Pool10cost, err = DeserializeGameatn(_x_); err != nil { return } }
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp2_pool_10cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp2_pool_10cost error"); return }; if _v.Camp2Pool10cost, err = DeserializeGameatn(_x_); err != nil { return } }
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp3_pool_10cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp3_pool_10cost error"); return }; if _v.Camp3Pool10cost, err = DeserializeGameatn(_x_); err != nil { return } }
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["camp4_pool_10cost"].(map[string]interface{}); !_ok_ { err = errors.New("camp4_pool_10cost error"); return }; if _v.Camp4Pool10cost, err = DeserializeGameatn(_x_); err != nil { return } }
{ var _ok_ bool; if _v.Camp1Pool1, _ok_ = _buf["camp1_pool1"].(string); !_ok_ { err = errors.New("camp1_pool1 error"); return } }
{ var _ok_ bool; if _v.Camp2Pool1, _ok_ = _buf["camp2_pool1"].(string); !_ok_ { err = errors.New("camp2_pool1 error"); return } }
{ var _ok_ bool; if _v.Camp3Pool1, _ok_ = _buf["camp3_pool1"].(string); !_ok_ { err = errors.New("camp3_pool1 error"); return } }
@@ -191,6 +203,8 @@ func (_v *GameglobalData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["camp_pool_star4"].(float64); !_ok_ { err = errors.New("camp_pool_star4 error"); return }; _v.CampPoolStar4 = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["camp_pool_star5"].(float64); !_ok_ { err = errors.New("camp_pool_star5 error"); return }; _v.CampPoolStar5 = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["gourmet"].(float64); !_ok_ { err = errors.New("gourmet error"); return }; _v.Gourmet = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["smithy_maxplayer"].(float64); !_ok_ { err = errors.New("smithy_maxplayer error"); return }; _v.SmithyMaxplayer = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["smithy_maxtime"].(float64); !_ok_ { err = errors.New("smithy_maxtime error"); return }; _v.SmithyMaxtime = int32(_tempNum_) }
return
}