diff --git a/bin/json/game_taskcond.json b/bin/json/game_taskcond.json
new file mode 100644
index 000000000..7cd5be3ab
--- /dev/null
+++ b/bin/json/game_taskcond.json
@@ -0,0 +1,65 @@
+[
+ {
+ "id": 101,
+ "type": 1,
+ "data1": 25001,
+ "data2": 40,
+ "data3": 5,
+ "data4": 0,
+ "data5": 0
+ },
+ {
+ "id": 102,
+ "type": 2,
+ "data1": 3,
+ "data2": 0,
+ "data3": 0,
+ "data4": 0,
+ "data5": 0
+ },
+ {
+ "id": 103,
+ "type": 3,
+ "data1": 2,
+ "data2": 0,
+ "data3": 0,
+ "data4": 0,
+ "data5": 0
+ },
+ {
+ "id": 104,
+ "type": 4,
+ "data1": 14007,
+ "data2": 10,
+ "data3": 0,
+ "data4": 0,
+ "data5": 0
+ },
+ {
+ "id": 105,
+ "type": 5,
+ "data1": 25001,
+ "data2": 2,
+ "data3": 0,
+ "data4": 0,
+ "data5": 0
+ },
+ {
+ "id": 106,
+ "type": 6,
+ "data1": 25004,
+ "data2": 5,
+ "data3": 0,
+ "data4": 0,
+ "data5": 0
+ },
+ {
+ "id": 107,
+ "type": 7,
+ "data1": 1,
+ "data2": 0,
+ "data3": 0,
+ "data4": 0,
+ "data5": 0
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_tasktype.json b/bin/json/game_tasktype.json
new file mode 100644
index 000000000..4287ebcbf
--- /dev/null
+++ b/bin/json/game_tasktype.json
@@ -0,0 +1,659 @@
+[
+ {
+ "id": 1,
+ "datatype": 0,
+ "desc": "英雄指定",
+ "data1": "英雄ID",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 2,
+ "datatype": 0,
+ "desc": "主线之内触发了剧情Id",
+ "data1": "剧情ID",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 3,
+ "datatype": 0,
+ "desc": "每日任务",
+ "data1": "任务ID",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 4,
+ "datatype": 0,
+ "desc": "指定英雄的等级限制",
+ "data1": "英雄ID",
+ "data2": "填写英雄需要的等级",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 5,
+ "datatype": 0,
+ "desc": "指定英雄的装备数量",
+ "data1": "英雄ID",
+ "data2": "填写装备数量",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 6,
+ "datatype": 0,
+ "desc": "指定英雄的星级",
+ "data1": "英雄ID",
+ "data2": "填写星级",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 7,
+ "datatype": 0,
+ "desc": "日常登录一次",
+ "data1": "日常登录次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 8,
+ "datatype": 0,
+ "desc": "累计登陆xx天",
+ "data1": "登录天数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 9,
+ "datatype": 0,
+ "desc": "连续登陆xx天",
+ "data1": "登录天数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 10,
+ "datatype": 0,
+ "desc": "拥有xx个好友",
+ "data1": "拥有的好友数量",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 11,
+ "datatype": 0,
+ "desc": "赠送X次友情点",
+ "data1": "赠送次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 12,
+ "datatype": 0,
+ "desc": "使用好友助战英雄xx次",
+ "data1": "使用好友助战英雄次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 13,
+ "datatype": 0,
+ "desc": "更换X次助战英雄",
+ "data1": "更换次数数量",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 14,
+ "datatype": 0,
+ "desc": "累计xx次普通招募",
+ "data1": "累计招募次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 15,
+ "datatype": 0,
+ "desc": "累计xx次阵营招募",
+ "data1": "累计招募次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 16,
+ "datatype": 0,
+ "desc": "招募获得xx品质英雄xx个",
+ "data1": "获得英雄数量",
+ "data2": "品质",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 17,
+ "datatype": 0,
+ "desc": "普通招募十连,获得xx个以上xx星英雄",
+ "data1": "获得个数",
+ "data2": "星级",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 18,
+ "datatype": 0,
+ "desc": "xx次普通招募",
+ "data1": "招募次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 19,
+ "datatype": 0,
+ "desc": "xx次阵营招募",
+ "data1": "招募次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 20,
+ "datatype": 0,
+ "desc": "用户等级达到xx级",
+ "data1": "等级",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 21,
+ "datatype": 0,
+ "desc": "英雄合成xx次",
+ "data1": "合成次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 22,
+ "datatype": 0,
+ "desc": "合成xx英雄",
+ "data1": "英雄ID",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 23,
+ "datatype": 0,
+ "desc": "拥有xx个xx星级的xx等级英雄",
+ "data1": "拥有数量",
+ "data2": "",
+ "data3": "等级",
+ "data4": ""
+ },
+ {
+ "id": 24,
+ "datatype": 0,
+ "desc": "为任意英雄提升xx次等级",
+ "data1": "提升等级次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 25,
+ "datatype": 0,
+ "desc": "xx名xx英雄升至xx星",
+ "data1": "共计要升几名英雄",
+ "data2": "英雄ID",
+ "data3": "星级",
+ "data4": ""
+ },
+ {
+ "id": 26,
+ "datatype": 0,
+ "desc": "xx名英雄从三星升四星",
+ "data1": "升星的英雄数量",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 27,
+ "datatype": 0,
+ "desc": "xx名英雄从四星升五星",
+ "data1": "升星的英雄数量",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 28,
+ "datatype": 0,
+ "desc": "xx名英雄从五星升六星",
+ "data1": "升星的英雄数量",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 29,
+ "datatype": 0,
+ "desc": "拥有xx个xx级及以上的【xx】英雄",
+ "data1": "拥有数量",
+ "data2": "等级",
+ "data3": "英雄ID",
+ "data4": ""
+ },
+ {
+ "id": 30,
+ "datatype": 0,
+ "desc": "获得xx个品质为xx的英雄",
+ "data1": "获得数量",
+ "data2": "品质",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 31,
+ "datatype": 0,
+ "desc": "获得xx个品质为xx以上的英雄",
+ "data1": "获得数量",
+ "data2": "品质",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 32,
+ "datatype": 0,
+ "desc": "xx个品质为xx的英雄升到xx级",
+ "data1": "满足条件的英雄数量",
+ "data2": "满足条件的英雄品质",
+ "data3": "需要升到的等级",
+ "data4": ""
+ },
+ {
+ "id": 33,
+ "datatype": 0,
+ "desc": "xx个品质为xx以及以上英雄升到xx级",
+ "data1": "满足条件的英雄数量",
+ "data2": "满足条件的英雄品质",
+ "data3": "需要升到的等级",
+ "data4": ""
+ },
+ {
+ "id": 34,
+ "datatype": 0,
+ "desc": "xx个英雄觉醒达到xx阶段",
+ "data1": "英雄数量",
+ "data2": "觉醒阶段",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 35,
+ "datatype": 0,
+ "desc": "xx英雄觉醒达到xx阶段",
+ "data1": "觉醒阶段",
+ "data2": "英雄ID",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 36,
+ "datatype": 0,
+ "desc": "xx位xx品质xx职业英雄(xx阵营)觉醒达到xx阶段",
+ "data1": "数量",
+ "data2": "英雄品质",
+ "data3": "指定职业",
+ "data4": "指定阵营"
+ },
+ {
+ "id": 37,
+ "datatype": 0,
+ "desc": "xx名xx品质英雄满共鸣、等级、觉醒",
+ "data1": "数量",
+ "data2": "英雄品质",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 38,
+ "datatype": 0,
+ "desc": "xx英雄满级、共鸣、觉醒至最高状态",
+ "data1": "数量",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 39,
+ "datatype": 0,
+ "desc": "累计英雄共鸣xx次",
+ "data1": "共鸣次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 40,
+ "datatype": 0,
+ "desc": "xx个英雄共鸣满xx次",
+ "data1": "英雄数量",
+ "data2": "共鸣次数",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 41,
+ "datatype": 0,
+ "desc": "xx名英雄穿戴xx件xx星级的装备",
+ "data1": "英雄数量",
+ "data2": "装备数量",
+ "data3": "指定星级",
+ "data4": ""
+ },
+ {
+ "id": 42,
+ "datatype": 0,
+ "desc": "xx名英雄穿戴xx件xx等级的装备",
+ "data1": "英雄数量",
+ "data2": "装备数量",
+ "data3": "指定等级",
+ "data4": ""
+ },
+ {
+ "id": 43,
+ "datatype": 0,
+ "desc": "将xx件装备强化至xx级",
+ "data1": "数量",
+ "data2": "等级",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 44,
+ "datatype": 0,
+ "desc": "任意装备强化到xx级",
+ "data1": "强化等级",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 45,
+ "datatype": 0,
+ "desc": "将xx件xx星【xx】套装装备强化至xx级",
+ "data1": "数量",
+ "data2": "指定装备星级",
+ "data3": "指定套装",
+ "data4": "强化等级"
+ },
+ {
+ "id": 46,
+ "datatype": 0,
+ "desc": "为xx名英雄穿戴完整xx星【xx】套装装备",
+ "data1": "数量",
+ "data2": "指定装备星级",
+ "data3": "指定套装",
+ "data4": ""
+ },
+ {
+ "id": 47,
+ "datatype": 0,
+ "desc": "累计强化装备成功xx次",
+ "data1": "数量",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 48,
+ "datatype": 0,
+ "desc": "xx次xx星的二件套装备强化至xx并穿戴",
+ "data1": "次数",
+ "data2": "指定装备星级",
+ "data3": "强化等级",
+ "data4": ""
+ },
+ {
+ "id": 49,
+ "datatype": 0,
+ "desc": "xx次xx星的四件套装备强化至xx并穿戴",
+ "data1": "次数",
+ "data2": "指定装备星级",
+ "data3": "强化等级",
+ "data4": ""
+ },
+ {
+ "id": 50,
+ "datatype": 0,
+ "desc": "获得xx星以上装备xx件",
+ "data1": "数量",
+ "data2": "指定装备星级",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 51,
+ "datatype": 0,
+ "desc": "在铁匠铺中获得xx件xx星装备",
+ "data1": "数量",
+ "data2": "指定装备品质",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 52,
+ "datatype": 0,
+ "desc": "xx英雄提升xx次技能等级",
+ "data1": "提升技能次数",
+ "data2": "指定英雄",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 53,
+ "datatype": 0,
+ "desc": "技能升级累计xx次",
+ "data1": "累计提升次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 54,
+ "datatype": 0,
+ "desc": "x名卡牌角色技能全满级",
+ "data1": "满技能卡片角色数量",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 55,
+ "datatype": 0,
+ "desc": "xx品质英雄提升xx次技能等级",
+ "data1": "次数",
+ "data2": "指定品质",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 56,
+ "datatype": 0,
+ "desc": "拥有xx名技能升级xx次的xx职业英雄",
+ "data1": "数量",
+ "data2": "技能升级次数",
+ "data3": "指定职业",
+ "data4": ""
+ },
+ {
+ "id": 57,
+ "datatype": 0,
+ "desc": "xx名英雄技能满级",
+ "data1": "数量",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 58,
+ "datatype": 0,
+ "desc": "通关任意普通爬塔层数",
+ "data1": "次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 59,
+ "datatype": 0,
+ "desc": "通关普通爬塔xx层",
+ "data1": "层数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 60,
+ "datatype": 0,
+ "desc": "任意主线副本通关X次",
+ "data1": "次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 61,
+ "datatype": 0,
+ "desc": "通关主线关卡xx",
+ "data1": "关卡ID",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 62,
+ "datatype": 0,
+ "desc": "世界聊天发言xx次",
+ "data1": "次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 63,
+ "datatype": 0,
+ "desc": "日常任务活跃度达到xx",
+ "data1": "活跃值",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 64,
+ "datatype": 0,
+ "desc": "任意商品购买xx次",
+ "data1": "次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 65,
+ "datatype": 0,
+ "desc": "在商店购买xx商品xx件",
+ "data1": "数量",
+ "data2": "道具ID",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 66,
+ "datatype": 0,
+ "desc": "xx商店购买任意商品xx次",
+ "data1": "数量",
+ "data2": "商店ID",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 67,
+ "datatype": 0,
+ "desc": "商店购物消耗xx货币xx个",
+ "data1": "数量",
+ "data2": "货币ID",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 68,
+ "datatype": 0,
+ "desc": "任意渠道消耗xx金币",
+ "data1": "金币消耗的数量",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 69,
+ "datatype": 0,
+ "desc": "与其他玩家切磋xx次",
+ "data1": "切磋次数",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 70,
+ "datatype": 0,
+ "desc": "通关随机任务XX关卡",
+ "data1": "通关的关卡ID",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 71,
+ "datatype": 0,
+ "desc": "主角等级达到X级",
+ "data1": "等级",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 72,
+ "datatype": 0,
+ "desc": "完成一次创角",
+ "data1": "",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ },
+ {
+ "id": 73,
+ "datatype": 0,
+ "desc": "完成一段剧情表内的对话",
+ "data1": "",
+ "data2": "",
+ "data3": "",
+ "data4": ""
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_worldtask.json b/bin/json/game_worldtask.json
new file mode 100644
index 000000000..de94e6994
--- /dev/null
+++ b/bin/json/game_worldtask.json
@@ -0,0 +1,325 @@
+[
+ {
+ "key": 10100,
+ "lock": 1,
+ "ontxe": 0,
+ "id_after": 10101,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "阿宝组件名",
+ "getafter_event": [
+ "2",
+ "20"
+ ],
+ "completetask": 0,
+ "auto_accept": 0,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10101,
+ "lock": 1,
+ "ontxe": 10100,
+ "id_after": 10102,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "邦尼兔组件名",
+ "getafter_event": [
+ "2",
+ "20"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10102,
+ "lock": 1,
+ "ontxe": 10101,
+ "id_after": 10103,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "波比组件名",
+ "getafter_event": [
+ "2",
+ "20"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10103,
+ "lock": 1,
+ "ontxe": 10102,
+ "id_after": 10104,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "阿宝组件名",
+ "getafter_event": [
+ "2",
+ "20"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10104,
+ "lock": 1,
+ "ontxe": 10103,
+ "id_after": 10105,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "阿宝组件名",
+ "getafter_event": [
+ "2",
+ "20"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10106,
+ "lock": 1,
+ "ontxe": 10105,
+ "id_after": 10107,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "邦尼兔组件名",
+ "getafter_event": [
+ "2",
+ "20"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10107,
+ "lock": 1,
+ "ontxe": 10106,
+ "id_after": 10108,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "阿宝组件名",
+ "getafter_event": [
+ "2",
+ "20"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10108,
+ "lock": 1,
+ "ontxe": 10107,
+ "id_after": 10109,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "",
+ "getafter_event": [
+ "6",
+ "跳转铁匠铺3D场景"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10109,
+ "lock": 1,
+ "ontxe": 10108,
+ "id_after": 10110,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "阿宝组件名",
+ "getafter_event": [
+ "2",
+ "20"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10110,
+ "lock": 1,
+ "ontxe": 10109,
+ "id_after": 10111,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "",
+ "getafter_event": [
+ "6",
+ "跳转美食馆外面的3D场景"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10111,
+ "lock": 1,
+ "ontxe": 10110,
+ "id_after": 10112,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "瓜哥组件名",
+ "getafter_event": [
+ "2",
+ "20"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10112,
+ "lock": 1,
+ "ontxe": 10111,
+ "id_after": 10113,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "瓜哥组件名",
+ "getafter_event": [
+ "2",
+ "20"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10113,
+ "lock": 1,
+ "ontxe": 10112,
+ "id_after": 10114,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "",
+ "getafter_event": [
+ "6",
+ "跳转美食馆内3D场景"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10114,
+ "lock": 1,
+ "ontxe": 10113,
+ "id_after": 10115,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "",
+ "getafter_event": [
+ "3",
+ "播放timeline"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10115,
+ "lock": 1,
+ "ontxe": 10114,
+ "id_after": 10116,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "阿宝组件名",
+ "getafter_event": [
+ "2",
+ "20"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10116,
+ "lock": 1,
+ "ontxe": 10115,
+ "id_after": 10117,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "",
+ "getafter_event": [
+ "6",
+ "开启书籍玩法"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ },
+ {
+ "key": 10117,
+ "lock": 1,
+ "ontxe": 10116,
+ "id_after": 10118,
+ "des": 2,
+ "icon": "",
+ "task_name": "",
+ "task_display": "",
+ "npc": "阿宝组件名",
+ "getafter_event": [
+ "2",
+ "20"
+ ],
+ "completetask": 0,
+ "auto_accept": 1,
+ "overtips": 1,
+ "reword": []
+ }
+]
\ No newline at end of file
diff --git a/comm/const.go b/comm/const.go
index e0c85cc35..c6a66f8b2 100644
--- a/comm/const.go
+++ b/comm/const.go
@@ -72,7 +72,8 @@ const (
ModulePay core.M_Modules = "pay" //支付
ModuleAlliance core.M_Modules = "alliance" //联盟学院
ModulePrivilege core.M_Modules = "privilege" //特权
- ModuleGrowtask core.M_Modules = "growtask" //成长任务
+ ModuleGrowtask core.M_Modules = "growtask" //成长任务
+ ModuleWorldtask core.M_Modules = "worldtask" //世界任务
)
//数据表名定义处
@@ -196,6 +197,8 @@ const (
TableSign = "sign"
// 成长任务
TableGrowtask = "growtask"
+ // 世界任务
+ TableWorldtask = "worldtask"
)
//RPC服务接口定义处
diff --git a/modules/worldtask/api.go b/modules/worldtask/api.go
new file mode 100644
index 000000000..81927be14
--- /dev/null
+++ b/modules/worldtask/api.go
@@ -0,0 +1,19 @@
+package worldtask
+
+import (
+ "go_dreamfactory/lego/base"
+ "go_dreamfactory/lego/core"
+ "go_dreamfactory/modules"
+)
+
+type apiComp struct {
+ modules.MCompGate
+ service base.IRPCXService
+ module *Worldtask
+}
+
+func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
+ _ = this.MCompGate.Init(service, module, comp, options)
+ this.module = module.(*Worldtask)
+ return
+}
diff --git a/modules/worldtask/configure.go b/modules/worldtask/configure.go
new file mode 100644
index 000000000..130ef9a61
--- /dev/null
+++ b/modules/worldtask/configure.go
@@ -0,0 +1,23 @@
+package worldtask
+
+import (
+ "go_dreamfactory/lego/core"
+ "go_dreamfactory/modules"
+)
+
+const (
+ gameWorldTask = "game_worldtask.json"
+)
+
+type configureComp struct {
+ modules.MCompConfigure
+}
+
+func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
+ err = this.MCompConfigure.Init(service, module, comp, options)
+ err = this.LoadMultiConfigure(map[string]interface{}{
+ // gameGrowreward: cfg.NewGameGrowReward,
+ // gameGrowTask: cfg.NewGameGrowTask,
+ })
+ return
+}
diff --git a/modules/worldtask/model_worldtask.go b/modules/worldtask/model_worldtask.go
new file mode 100644
index 000000000..15456ec1b
--- /dev/null
+++ b/modules/worldtask/model_worldtask.go
@@ -0,0 +1,19 @@
+package worldtask
+
+import (
+ "go_dreamfactory/comm"
+ "go_dreamfactory/lego/core"
+ "go_dreamfactory/modules"
+)
+
+type ModelWorldtask struct {
+ modules.MCompModel
+ moduleWorldtask *Worldtask
+}
+
+func (this *ModelWorldtask) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
+ err = this.MCompModel.Init(service, module, comp, options)
+ this.TableName = comm.TableWorldtask
+ this.moduleWorldtask = module.(*Worldtask)
+ return
+}
diff --git a/modules/worldtask/module.go b/modules/worldtask/module.go
new file mode 100644
index 000000000..0fc23e088
--- /dev/null
+++ b/modules/worldtask/module.go
@@ -0,0 +1,26 @@
+package worldtask
+
+import (
+ "go_dreamfactory/comm"
+ "go_dreamfactory/lego/base"
+ "go_dreamfactory/lego/core"
+ "go_dreamfactory/modules"
+)
+
+type Worldtask struct {
+ modules.ModuleBase
+ api *apiComp
+ service base.IRPCXService
+ configure *configureComp
+}
+
+func NewModule() core.IModule {
+ return &Worldtask{}
+}
+func (this *Worldtask) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) {
+ err = this.ModuleBase.Init(service, module, options)
+ return
+}
+func (this *Worldtask) GetType() core.M_Modules {
+ return comm.ModuleWorldtask
+}
diff --git a/sys/configure/structs/Game.TaskCond.go b/sys/configure/structs/Game.TaskCond.go
new file mode 100644
index 000000000..0185feed8
--- /dev/null
+++ b/sys/configure/structs/Game.TaskCond.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 GameTaskCond struct {
+ _dataMap map[int32]*GameTaskCondData
+ _dataList []*GameTaskCondData
+}
+
+func NewGameTaskCond(_buf []map[string]interface{}) (*GameTaskCond, error) {
+ _dataList := make([]*GameTaskCondData, 0, len(_buf))
+ dataMap := make(map[int32]*GameTaskCondData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := DeserializeGameTaskCondData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Id] = _v
+ }
+ }
+ return &GameTaskCond{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *GameTaskCond) GetDataMap() map[int32]*GameTaskCondData {
+ return table._dataMap
+}
+
+func (table *GameTaskCond) GetDataList() []*GameTaskCondData {
+ return table._dataList
+}
+
+func (table *GameTaskCond) Get(key int32) *GameTaskCondData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/Game.TaskCondData.go b/sys/configure/structs/Game.TaskCondData.go
new file mode 100644
index 000000000..fcea43388
--- /dev/null
+++ b/sys/configure/structs/Game.TaskCondData.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 GameTaskCondData struct {
+ Id int32
+ Type int32
+ Data1 int32
+ Data2 int32
+ Data3 int32
+ Data4 int32
+ Data5 int32
+}
+
+const TypeId_GameTaskCondData = -1719868659
+
+func (*GameTaskCondData) GetTypeId() int32 {
+ return -1719868659
+}
+
+func (_v *GameTaskCondData)Deserialize(_buf map[string]interface{}) (err error) {
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = 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_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data4"].(float64); !_ok_ { err = errors.New("data4 error"); return }; _v.Data4 = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data5"].(float64); !_ok_ { err = errors.New("data5 error"); return }; _v.Data5 = int32(_tempNum_) }
+ return
+}
+
+func DeserializeGameTaskCondData(_buf map[string]interface{}) (*GameTaskCondData, error) {
+ v := &GameTaskCondData{}
+ if err := v.Deserialize(_buf); err == nil {
+ return v, nil
+ } else {
+ return nil, err
+ }
+}
diff --git a/sys/configure/structs/Game.TaskType.go b/sys/configure/structs/Game.TaskType.go
new file mode 100644
index 000000000..b6325cb52
--- /dev/null
+++ b/sys/configure/structs/Game.TaskType.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 GameTaskType struct {
+ _dataMap map[int32]*GameTaskTypeData
+ _dataList []*GameTaskTypeData
+}
+
+func NewGameTaskType(_buf []map[string]interface{}) (*GameTaskType, error) {
+ _dataList := make([]*GameTaskTypeData, 0, len(_buf))
+ dataMap := make(map[int32]*GameTaskTypeData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := DeserializeGameTaskTypeData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Id] = _v
+ }
+ }
+ return &GameTaskType{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *GameTaskType) GetDataMap() map[int32]*GameTaskTypeData {
+ return table._dataMap
+}
+
+func (table *GameTaskType) GetDataList() []*GameTaskTypeData {
+ return table._dataList
+}
+
+func (table *GameTaskType) Get(key int32) *GameTaskTypeData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/Game.TaskTypeData.go b/sys/configure/structs/Game.TaskTypeData.go
new file mode 100644
index 000000000..9294b950d
--- /dev/null
+++ b/sys/configure/structs/Game.TaskTypeData.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 GameTaskTypeData struct {
+ Id int32
+ Datatype int32
+ Desc string
+ Data1 string
+ Data2 string
+ Data3 string
+ Data4 string
+}
+
+const TypeId_GameTaskTypeData = -1813579995
+
+func (*GameTaskTypeData) GetTypeId() int32 {
+ return -1813579995
+}
+
+func (_v *GameTaskTypeData)Deserialize(_buf map[string]interface{}) (err error) {
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["datatype"].(float64); !_ok_ { err = errors.New("datatype error"); return }; _v.Datatype = int32(_tempNum_) }
+ { var _ok_ bool; if _v.Desc, _ok_ = _buf["desc"].(string); !_ok_ { err = errors.New("desc error"); return } }
+ { var _ok_ bool; if _v.Data1, _ok_ = _buf["data1"].(string); !_ok_ { err = errors.New("data1 error"); return } }
+ { var _ok_ bool; if _v.Data2, _ok_ = _buf["data2"].(string); !_ok_ { err = errors.New("data2 error"); return } }
+ { var _ok_ bool; if _v.Data3, _ok_ = _buf["data3"].(string); !_ok_ { err = errors.New("data3 error"); return } }
+ { var _ok_ bool; if _v.Data4, _ok_ = _buf["data4"].(string); !_ok_ { err = errors.New("data4 error"); return } }
+ return
+}
+
+func DeserializeGameTaskTypeData(_buf map[string]interface{}) (*GameTaskTypeData, error) {
+ v := &GameTaskTypeData{}
+ if err := v.Deserialize(_buf); err == nil {
+ return v, nil
+ } else {
+ return nil, err
+ }
+}
diff --git a/sys/configure/structs/Game.WorldTask.go b/sys/configure/structs/Game.WorldTask.go
new file mode 100644
index 000000000..cdd9c0f01
--- /dev/null
+++ b/sys/configure/structs/Game.WorldTask.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 GameWorldTask struct {
+ _dataMap map[int32]*GameWorldTaskData
+ _dataList []*GameWorldTaskData
+}
+
+func NewGameWorldTask(_buf []map[string]interface{}) (*GameWorldTask, error) {
+ _dataList := make([]*GameWorldTaskData, 0, len(_buf))
+ dataMap := make(map[int32]*GameWorldTaskData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := DeserializeGameWorldTaskData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Key] = _v
+ }
+ }
+ return &GameWorldTask{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *GameWorldTask) GetDataMap() map[int32]*GameWorldTaskData {
+ return table._dataMap
+}
+
+func (table *GameWorldTask) GetDataList() []*GameWorldTaskData {
+ return table._dataList
+}
+
+func (table *GameWorldTask) Get(key int32) *GameWorldTaskData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/Game.WorldTaskData.go b/sys/configure/structs/Game.WorldTaskData.go
new file mode 100644
index 000000000..88aae3974
--- /dev/null
+++ b/sys/configure/structs/Game.WorldTaskData.go
@@ -0,0 +1,87 @@
+//------------------------------------------------------------------------------
+//
+// 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 GameWorldTaskData struct {
+ Key int32
+ Lock int32
+ Ontxe int32
+ IdAfter int32
+ Des int32
+ Icon string
+ TaskName string
+ TaskDisplay string
+ Npc string
+ GetafterEvent []string
+ Completetask int32
+ AutoAccept int32
+ Overtips int32
+ Reword []*Gameatn
+}
+
+const TypeId_GameWorldTaskData = -1059668091
+
+func (*GameWorldTaskData) GetTypeId() int32 {
+ return -1059668091
+}
+
+func (_v *GameWorldTaskData)Deserialize(_buf map[string]interface{}) (err error) {
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["lock"].(float64); !_ok_ { err = errors.New("lock error"); return }; _v.Lock = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["ontxe"].(float64); !_ok_ { err = errors.New("ontxe error"); return }; _v.Ontxe = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_after"].(float64); !_ok_ { err = errors.New("id_after error"); return }; _v.IdAfter = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["des"].(float64); !_ok_ { err = errors.New("des error"); return }; _v.Des = int32(_tempNum_) }
+ { var _ok_ bool; if _v.Icon, _ok_ = _buf["icon"].(string); !_ok_ { err = errors.New("icon error"); return } }
+ { var _ok_ bool; if _v.TaskName, _ok_ = _buf["task_name"].(string); !_ok_ { err = errors.New("task_name error"); return } }
+ { var _ok_ bool; if _v.TaskDisplay, _ok_ = _buf["task_display"].(string); !_ok_ { err = errors.New("task_display error"); return } }
+ { var _ok_ bool; if _v.Npc, _ok_ = _buf["npc"].(string); !_ok_ { err = errors.New("npc error"); return } }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["getafter_event"].([]interface{}); !_ok_ { err = errors.New("getafter_event error"); return }
+
+ _v.GetafterEvent = make([]string, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ string
+ { if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } }
+ _v.GetafterEvent = append(_v.GetafterEvent, _list_v_)
+ }
+ }
+
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["completetask"].(float64); !_ok_ { err = errors.New("completetask error"); return }; _v.Completetask = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["auto_accept"].(float64); !_ok_ { err = errors.New("auto_accept error"); return }; _v.AutoAccept = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["overtips"].(float64); !_ok_ { err = errors.New("overtips error"); return }; _v.Overtips = 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_)
+ }
+ }
+
+ return
+}
+
+func DeserializeGameWorldTaskData(_buf map[string]interface{}) (*GameWorldTaskData, error) {
+ v := &GameWorldTaskData{}
+ if err := v.Deserialize(_buf); err == nil {
+ return v, nil
+ } else {
+ return nil, err
+ }
+}