diff --git a/bin/json/game_comatn.json b/bin/json/game_comatn.json index 74ddb5d36..73f5c7c13 100644 --- a/bin/json/game_comatn.json +++ b/bin/json/game_comatn.json @@ -48,5 +48,15 @@ "n": 20000 } ] + }, + { + "index": "unified_reward", + "var": [ + { + "a": "attr", + "t": "gold", + "n": 20000 + } + ] } ] \ No newline at end of file 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/pagoda/api.go b/modules/pagoda/api.go index 0f052bbee..ead17d995 100644 --- a/modules/pagoda/api.go +++ b/modules/pagoda/api.go @@ -13,6 +13,7 @@ const ( PagodaChallengeOverResp = "challengeover" PagodaGetRewardResp = "getreward" PagodaRankListResp = "ranklist" + PagodaActivateResp = "activate" ) type apiComp struct { diff --git a/modules/pagoda/api_activate.go b/modules/pagoda/api_activate.go new file mode 100644 index 000000000..1bc60ea76 --- /dev/null +++ b/modules/pagoda/api_activate.go @@ -0,0 +1,56 @@ +package pagoda + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" + "go_dreamfactory/sys/db" + + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/bson/primitive" + "google.golang.org/protobuf/proto" +) + +//参数校验 +func (this *apiComp) ActivateCheck(session comm.IUserSession, req *pb.PagodaActivateReq) (code pb.ErrorCode) { + + return +} + +///获取主线关卡信息 +func (this *apiComp) Activate(session comm.IUserSession, req *pb.PagodaActivateReq) (code pb.ErrorCode, data proto.Message) { + var ( + list *pb.DBPagoda + ) + this.ActivateCheck(session, req) + expand, err := this.module.ModuleUser.GetUserExpand(session.GetUserId()) + if err != nil { + code = pb.ErrorCode_DBError + return + } + if expand.CompletePagoda { // 普通塔 + season, _ := this.module.modelSeasonPagoda.getSeasonPagodaList(session.GetUserId()) + if season.Id == "" { + season.Id = primitive.NewObjectID().Hex() + season.Uid = session.GetUserId() + season.PagodaId = 0 // 初始数据0层 + if conn, err := db.Cross(); err == nil { + rst := conn.Mgo.FindOne(comm.TableServerData, bson.M{}) + server := &pb.DBServerData{} + rst.Decode(server) + season.Type = server.SeasonType + } + this.module.modelSeasonPagoda.addNewSeasonPagoda(session.GetUserId(), season) + } + + list = &pb.DBPagoda{ + Id: season.Id, + Uid: season.Uid, + PagodaId: season.PagodaId, + Reward: season.Reward, + Type: season.Type, + } + } + + session.SendMsg(string(this.module.GetType()), PagodaActivateResp, &pb.PagodaActivateResp{Data: list}) + return +} diff --git a/modules/pagoda/api_challengeover.go b/modules/pagoda/api_challengeover.go index 9c0d5d066..8902afa99 100644 --- a/modules/pagoda/api_challengeover.go +++ b/modules/pagoda/api_challengeover.go @@ -7,7 +7,6 @@ import ( "strconv" "time" - "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "google.golang.org/protobuf/proto" ) @@ -24,10 +23,9 @@ func (this *apiComp) ChallengeOverCheck(session comm.IUserSession, req *pb.Pagod ///挑战主线关卡 func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChallengeOverReq) (code pb.ErrorCode, data proto.Message) { var ( - mapData map[string]interface{} - pagoda *pb.DBPagoda - seasonPagoda *pb.DBSeasonPagoda - costTime int32 // 本次战斗消耗的时间 + mapData map[string]interface{} + pagoda *pb.DBPagoda + costTime int32 // 本次战斗消耗的时间 ) mapData = make(map[string]interface{}, 0) code = this.ChallengeOverCheck(session, req) @@ -58,12 +56,12 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal } } else { // 塔数据校验 - seasonPagoda, err = this.module.modelSeasonPagoda.getSeasonPagodaList(session.GetUserId()) + pagoda, err = this.module.modelSeasonPagoda.getSeasonPagodaList(session.GetUserId()) if err != nil { code = pb.ErrorCode_PagodaNotFound return } - if seasonPagoda.Type != req.PagodaType || conf.LayerNum-1 != seasonPagoda.PagodaId { + if pagoda.Type != req.PagodaType || conf.LayerNum-1 != pagoda.PagodaId { code = pb.ErrorCode_PagodaLevlErr // 挑战关卡数据不匹配 return } @@ -119,32 +117,15 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal } // 普通塔通关了 Nomalcfg := this.module.configure.GetPagodaConfigData(comm.PagodaType, pagoda.PagodaId+1) - if Nomalcfg == nil { // 创建赛季塔数据 + if Nomalcfg == nil { // 修改expand 数据 update := map[string]interface{}{ "completePagoda": true, } this.module.ModuleUser.ChangeUserExpand(session.GetUserId(), update) - seasonPagoda := &pb.DBSeasonPagoda{} - seasonPagoda.Id = primitive.NewObjectID().Hex() - - seasonPagoda.Uid = session.GetUserId() - seasonPagoda.PagodaId = 0 // 初始数据0层 - - if conn, err := db.Cross(); err == nil { - rst := conn.Mgo.FindOne(comm.TableServerData, bson.M{}) - server := &pb.DBServerData{} - rst.Decode(server) - seasonPagoda.Type = server.SeasonType // 动态获取塔数据 - } - this.module.modelSeasonPagoda.addNewSeasonPagoda(session.GetUserId(), seasonPagoda) - // 推送新的 - pagoda.PagodaId = seasonPagoda.PagodaId - pagoda.Type = seasonPagoda.Type - session.SendMsg(string(this.module.GetType()), PagodaGetListResp, &pb.PagodaGetListResp{Data: pagoda}) } } else { - seasonPagoda.PagodaId = conf.LayerNum + pagoda.PagodaId = conf.LayerNum mapData["pagodaId"] = conf.LayerNum // 记录爬塔明细数据 if req.Report != nil && req.Report.Info != nil && len(req.Report.Info.Redflist) > 0 { @@ -164,8 +145,8 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal newData := &pb.DBPagodaRecord{ Id: primitive.NewObjectID().Hex(), Uid: session.GetUserId(), - PagodaId: seasonPagoda.PagodaId, - Type: seasonPagoda.Type, + PagodaId: pagoda.PagodaId, + Type: pagoda.Type, Nickname: userinfo.Name, Icon: "", // icon 暂无 Lv: userinfo.Lv, @@ -175,24 +156,16 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal // 数据写到跨服中 conn_, err := db.Cross() dbModel := db.NewDBModel(comm.TableSeasonRecord, time.Hour, conn_) - //if err = dbModel.GetList(uid, newData); err == nil { dbModel.AddList(uid, newData.Id, newData) this.module.SetPagodaRankList("pagodaList"+strconv.Itoa(int(newData.PagodaId)), newData.CostTime, newData.Id) - //} dbModelTable := db.NewDBModel(comm.TableSeasonPagoda, time.Hour, conn_) - if err = dbModelTable.Get(session.GetUserId(), seasonPagoda); err == nil { + if err = dbModelTable.Get(session.GetUserId(), pagoda); err == nil { dbModelTable.Change(session.GetUserId(), mapData) // 修改跨服数据 - this.module.SetPagodaRankList("pagodaSeasonRank", seasonPagoda.PagodaId<<8+costTime, session.GetUserId()) + this.module.SetPagodaRankList("pagodaSeasonRank", pagoda.PagodaId<<8+costTime, session.GetUserId()) } } code = this.module.ModifySeasonPagodaData(session.GetUserId(), mapData) - pagoda = &pb.DBPagoda{ - Id: seasonPagoda.Id, - Uid: seasonPagoda.Uid, - PagodaId: seasonPagoda.PagodaId, - Reward: seasonPagoda.Reward, - Type: seasonPagoda.Type, - } + session.SendMsg(string(this.module.GetType()), PagodaChallengeOverResp, &pb.PagodaChallengeOverResp{Data: pagoda}) } diff --git a/modules/pagoda/api_getlist.go b/modules/pagoda/api_getlist.go index 569cbf36f..6b7521fb3 100644 --- a/modules/pagoda/api_getlist.go +++ b/modules/pagoda/api_getlist.go @@ -3,9 +3,7 @@ package pagoda import ( "go_dreamfactory/comm" "go_dreamfactory/pb" - "go_dreamfactory/sys/db" - "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "google.golang.org/protobuf/proto" ) @@ -27,8 +25,8 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.PagodaGetListReq code = pb.ErrorCode_DBError return } + list, _ = this.module.modelPagoda.getPagodaList(session.GetUserId()) if !expand.CompletePagoda { // 普通塔 - list, _ = this.module.modelPagoda.getPagodaList(session.GetUserId()) if list == nil { // redis没有数据 list = &pb.DBPagoda{} list.Id = primitive.NewObjectID().Hex() @@ -41,24 +39,9 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.PagodaGetListReq } else { season, _ := this.module.modelSeasonPagoda.getSeasonPagodaList(session.GetUserId()) if season.Id == "" { - season.Id = primitive.NewObjectID().Hex() - season.Uid = session.GetUserId() - season.PagodaId = 0 // 初始数据0层 - if conn, err := db.Cross(); err == nil { - rst := conn.Mgo.FindOne(comm.TableServerData, bson.M{}) - server := &pb.DBServerData{} - rst.Decode(server) - season.Type = server.SeasonType - } - this.module.modelSeasonPagoda.addNewSeasonPagoda(session.GetUserId(), season) - } - - list = &pb.DBPagoda{ - Id: season.Id, - Uid: season.Uid, - PagodaId: season.PagodaId, - Reward: season.Reward, - Type: season.Type, + list.Complete = true + } else { + list = season } } diff --git a/modules/pagoda/model_rank.go b/modules/pagoda/model_rank.go index 421afef6b..759ebf9bc 100644 --- a/modules/pagoda/model_rank.go +++ b/modules/pagoda/model_rank.go @@ -80,7 +80,7 @@ func (this *ModelRank) getPagodaRankList(uid string) []*pb.DBPagodaRecord { } // 插入新的排行数据 -func (this *ModelRank) addPagodaRankList(session comm.IUserSession, data *pb.DBSeasonPagoda, Leadpos int32, line []*pb.LineUp, costTime int32) { +func (this *ModelRank) addPagodaRankList(session comm.IUserSession, data *pb.DBPagoda, Leadpos int32, line []*pb.LineUp, costTime int32) { uid := session.GetUserId() var ( dbModel *db.DBModel diff --git a/modules/pagoda/model_seasonpagoda.go b/modules/pagoda/model_seasonpagoda.go index 460c2d7ad..dd83c0d83 100644 --- a/modules/pagoda/model_seasonpagoda.go +++ b/modules/pagoda/model_seasonpagoda.go @@ -32,8 +32,8 @@ func (this *ModelSeasonPagoda) Init(service core.IService, module core.IModule, } // 获取爬塔信息 -func (this *ModelSeasonPagoda) getSeasonPagodaList(uid string) (result *pb.DBSeasonPagoda, err error) { - result = &pb.DBSeasonPagoda{} +func (this *ModelSeasonPagoda) getSeasonPagodaList(uid string) (result *pb.DBPagoda, err error) { + result = &pb.DBPagoda{} if err = this.Get(uid, result); err != nil { return @@ -48,7 +48,7 @@ func (this *ModelSeasonPagoda) modifySeasonPagodaDataByObjId(uid string, data ma } // 创建一个新的赛季塔数据 -func (this *ModelSeasonPagoda) addNewSeasonPagoda(uId string, data *pb.DBSeasonPagoda) (err error) { +func (this *ModelSeasonPagoda) addNewSeasonPagoda(uId string, data *pb.DBPagoda) (err error) { //err = this.InsertModelLogs(this.TableName, uId, []interface{}{data}) // 不需要经过redis if err = this.Add(uId, data); err != nil { this.module.Errorf("err:%v", err) diff --git a/modules/rtask/config.go b/modules/rtask/config.go index 5fccc26a0..0fa8566be 100644 --- a/modules/rtask/config.go +++ b/modules/rtask/config.go @@ -10,7 +10,7 @@ import ( const ( gameRtask = "game_rdtask.json" gameRtaskChoose = "game_rdtaskchoose.json" - gameRtaskCondi = "game_rdtaskcondi.json" + gameTaskCond = "game_taskcond.json" gameRtaskSide = "game_rdtaskside.json" gameRtaskBattle = "game_rdtaskbattle.json" ) @@ -24,7 +24,7 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp err = this.LoadMultiConfigure(map[string]interface{}{ gameRtask: cfg.NewGameRdtask, gameRtaskChoose: cfg.NewGameRdtaskChoose, - gameRtaskCondi: cfg.NewGameRdtaskCondi, + gameTaskCond: cfg.NewGameTaskCond, gameRtaskSide: cfg.NewGameRdtaskSide, gameRtaskBattle: cfg.NewGameRdtaskBattle, }) @@ -52,7 +52,7 @@ func (this *configureComp) getRtaskCondiCfg() (data *cfg.GameRdtaskCondi, err er v interface{} ok bool ) - if v, err = this.GetConfigure(gameRtaskCondi); err != nil { + if v, err = this.GetConfigure(gameTaskCond); err != nil { return } else { if data, ok = v.(*cfg.GameRdtaskCondi); !ok { diff --git a/modules/sociaty/api_cross_mine.go b/modules/sociaty/api_cross_mine.go index 1ea9ef6ec..04a0d8437 100644 --- a/modules/sociaty/api_cross_mine.go +++ b/modules/sociaty/api_cross_mine.go @@ -53,9 +53,9 @@ func (this *apiComp) Mine(session comm.IUserSession, req *pb.SociatyMineReq) (co // 获取会长 master := this.module.modelSociaty.getMasterInfo(sociaty) if master != nil { - //判断当前玩家是否是会长 - if master.Uid == uid { //会长 - this.module.modelSociaty.extendJob(uid, sociaty) + if err := this.module.modelSociaty.extendJob(master.Uid, sociaty); err == nil { + // 获取新的会长 + master = this.module.modelSociaty.getMasterInfo(sociaty) } } rsp.Sociaty = sociaty diff --git a/modules/sociaty/api_cross_quit.go b/modules/sociaty/api_cross_quit.go index c44860ba5..dd9e70163 100644 --- a/modules/sociaty/api_cross_quit.go +++ b/modules/sociaty/api_cross_quit.go @@ -63,7 +63,7 @@ func (this *apiComp) Quit(session comm.IUserSession, req *pb.SociatyQuitReq) (co Uid: uid, SociatyId: sociaty.Id, } - if err := session.SendMsg(string(this.module.GetType()), SociatySubTypeDismiss, rsp); err != nil { + if err := session.SendMsg(string(this.module.GetType()), SociatySubTypeQuit, rsp); err != nil { code = pb.ErrorCode_SystemError } return diff --git a/modules/sociaty/model_sociaty.go b/modules/sociaty/model_sociaty.go index 63de1cdf3..584e6350d 100644 --- a/modules/sociaty/model_sociaty.go +++ b/modules/sociaty/model_sociaty.go @@ -569,22 +569,26 @@ func (this *ModelSociaty) accuse(sociaty *pb.DBSociaty) error { // srcMasterId 原会长ID func (this *ModelSociaty) extendJob(srcMasterId string, sociaty *pb.DBSociaty) error { if sociaty.AccuseTime != 0 { + ggd := this.moduleSociaty.configure.GetGlobalConf() + if ggd == nil { + return errors.New("config not found") + } now := time.Now().Unix() - //48小时内终止弹劾 - if now-sociaty.AccuseTime < 48*3600 { + //终止弹劾 + if now-sociaty.AccuseTime < int64(ggd.GuildImpeachmentCountDown*3600) { update := map[string]interface{}{ "accuseTime": 0, } return this.updateSociaty(sociaty.Id, update) } else { - //会长降为普通成员 - if err := this.settingJob(srcMasterId, pb.SociatyJob_MEMBER, sociaty); err != nil { - return err - } //选举新会长 if err := this.electNewMaster(srcMasterId, sociaty); err != nil { return err } + //会长降为普通成员 + if err := this.settingJob(srcMasterId, pb.SociatyJob_MEMBER, sociaty); err != nil { + return err + } } } return nil @@ -602,7 +606,7 @@ func (this *ModelSociaty) electNewMaster(srcMasterId string, sociaty *pb.DBSocia vpIds = append(vpIds, m) } else if m.Job == pb.SociatyJob_ADMIN { aIds = append(aIds, m) - } else { + } else if m.Job == pb.SociatyJob_MEMBER { mIds = append(mIds, m) } } @@ -649,7 +653,7 @@ func (this *ModelSociaty) electNewMaster(srcMasterId string, sociaty *pb.DBSocia } if len(mIds) > 0 { - return elect(aIds) + return elect(mIds) } return nil } diff --git a/modules/timer/season.go b/modules/timer/season.go index 903db58c8..76367e63e 100644 --- a/modules/timer/season.go +++ b/modules/timer/season.go @@ -62,7 +62,7 @@ func (this *SeasonPagoda) Start() (err error) { return } func (this *SeasonPagoda) CreatTestData(index int) { - seasonPagoda := &pb.DBSeasonPagoda{} + seasonPagoda := &pb.DBPagoda{} seasonPagoda.Id = primitive.NewObjectID().Hex() seasonPagoda.Uid = "dfmxf_634f8f28609d489230fb40fa" @@ -166,49 +166,3 @@ func (this *SeasonPagoda) TimerSeasonOver() { func (this *SeasonPagoda) TimerSeasonStar() { this.module.Debugf("TimerSeasonStar:%d", time.Now().Unix()) } - -// 测试用 后面删 -func (this *SeasonPagoda) TestFunc() { - // newData1 := &pb.DBSeasonPagoda{ - // Id: primitive.NewObjectID().Hex(), - // Uid: "sdsdassd", - // PagodaId: 1, - // Reward: map[int32]bool{}, - // Type: 201, - // } - // if conn, err := db.Cross(); err == nil { - // rst, err := conn.Mgo.InsertOne(comm.TableSeasonPagoda, newData) - - // fmt.Printf("%v,%v", rst, err) - // } - // _data := this.GetSeasonLoop(2) - // this.module.Debugf("%v", _data) - // for i := 0; i < 10000; i++ { - // this.CreatTestData(i) - // } - - // if conn, err := db.Cross(); err == nil { - // rst := conn.Mgo.FindOne(comm.TableServerData, bson.M{}) - // server := &pb.DBServerData{} - // rst.Decode(server) - // fmt.Printf("%v", server) - // } - - // newData := &pb.DBPagodaRecord{ - // Id: primitive.NewObjectID().Hex(), - // Uid: "sdsd", - // PagodaId: 1, - // Type: 2, - // Nickname: "userinfo.Name", - // Icon: "", // icon 暂无 - // Lv: 12, - // CostTime: 12000, - // } - // // 数据写到跨服中 - // if !db.IsCross() { - // if conn, err := db.Cross(); err == nil { - // conn.Mgo.InsertOne(comm.TableSeasonRecord, newData) - // } - // } - //this.TimerSeasonOver() -} diff --git a/modules/troll/api_getlist.go b/modules/troll/api_getlist.go index f4864b4c9..ff028f810 100644 --- a/modules/troll/api_getlist.go +++ b/modules/troll/api_getlist.go @@ -79,16 +79,20 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.TrollGetListReq) if trolltrain.Circle != c { trolltrain.SurpriseID = make(map[int32]int32, 0) n, _ := rand.Int(rand.Reader, big.NewInt(int64(trainNum))) - n2, _ := rand.Int(rand.Reader, big.NewInt(int64(maxCoefficient-1))) //算的是下标所以-1 + goods := this.configure.GetTrollAllGoods() + n2, _ := rand.Int(rand.Reader, big.NewInt(int64(len(goods)-1))) //算的是下标所以-1 trolltrain.SurpriseID[int32(n.Int64())+1] = int32(n2.Int64()) + 1 update["surpriseID"] = trolltrain.SurpriseID trolltrain.Circle = c update["circle"] = trolltrain.Circle } leftTime = (int32(t) % circletime) - // 循环次数 + index += circleCount * trainNum // 计算火车的位置信息 - for _, v := range sz { + for pos, v := range sz { + if pos < int(trolltrain.TarinPos-1) { // 起始位置 + continue + } if leftTime <= v { trolltrain.RefreshTime = time.Now().Unix() trolltrain.TarinPos += index diff --git a/modules/troll/module.go b/modules/troll/module.go index bd016bb00..172b888e1 100644 --- a/modules/troll/module.go +++ b/modules/troll/module.go @@ -87,7 +87,9 @@ func (this *Troll) TrollAI(session comm.IUserSession, troll *pb.DBTrollTrain) (c } iCount := this.configure.GetTrollRule(comm.TrollAIBuyCount) for index = 0; ; index++ { - + if index < troll.TarinPos-1 { // 起始位置 + continue + } index := int32(index) % trainNum troll.RefreshTime += int64(sz[index]) diff --git a/modules/user/api_login.go b/modules/user/api_login.go index d189e838c..7abfd0d59 100644 --- a/modules/user/api_login.go +++ b/modules/user/api_login.go @@ -145,6 +145,7 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (cod // 每日签到检测 this.module.modelSign.checkResetSignData(session) + this.Sign(session, &pb.UserSignReq{}) //推送登录公告 this.chat.SendSysChatToUser(session, comm.UserLoginNotice, 0) mail := &pb.DBMailData{ diff --git a/modules/user/api_sign.go b/modules/user/api_sign.go index 79d9f515d..a422ac90b 100644 --- a/modules/user/api_sign.go +++ b/modules/user/api_sign.go @@ -15,6 +15,7 @@ func (this *apiComp) SignCheck(session comm.IUserSession, req *pb.UserSignReq) ( //登录 func (this *apiComp) Sign(session comm.IUserSession, req *pb.UserSignReq) (code pb.ErrorCode, data proto.Message) { - this.module.modelSign.checkResetSignData(session) + + code = this.module.modelSign.checkResetSignData(session) return } diff --git a/modules/user/model_sign.go b/modules/user/model_sign.go index 94ad0e6f0..2dcdfa933 100644 --- a/modules/user/model_sign.go +++ b/modules/user/model_sign.go @@ -78,11 +78,12 @@ func (this *ModelSign) updateSignData(uid string, sign *pb.DBSign) (err error) { } // 检测是否达到重置日期 -func (this *ModelSign) checkResetSignData(session comm.IUserSession) { +func (this *ModelSign) checkResetSignData(session comm.IUserSession) (code pb.ErrorCode) { var ( update map[string]interface{} bReward bool ) + update = make(map[string]interface{}, 0) if sign, err := this.module.modelSign.GetUserSign(session.GetUserId()); err == nil { start, _ := utils.GetMonthStartEnd() @@ -114,8 +115,19 @@ func (this *ModelSign) checkResetSignData(session comm.IUserSession) { } } _data := this.module.configure.GetSignConf(sign.Cid, sign.Group) - if bReward && _data != nil { // 发奖 - this.module.DispenseRes(session, _data.Loopgift, true) + if _data != nil { // 发奖 + if bReward { + this.module.DispenseRes(session, _data.Loopgift, true) + } + } else { + globalCnf := this.module.configure.GetGlobalAtnConf("unified_reward") // 获取重置消耗 + if globalCnf == nil { + code = pb.ErrorCode_ConfigNoFound + return + } + if bReward { + this.module.DispenseRes(session, globalCnf.Var, true) // 发放通用奖励 + } } session.SendMsg(string(this.module.GetType()), "sign", &pb.UserSignResp{ Data: sign, 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..6ab05faad --- /dev/null +++ b/modules/worldtask/configure.go @@ -0,0 +1,40 @@ +package worldtask + +import ( + "fmt" + "go_dreamfactory/lego/core" + "go_dreamfactory/modules" + cfg "go_dreamfactory/sys/configure/structs" +) + +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{}{ + gameWorldTask: cfg.NewGameWorldTask, + }) + return +} + +func (this *configureComp) getWorldtaskCfg() (data *cfg.GameWorldTask, err error) { + var ( + v interface{} + ok bool + ) + if v, err = this.GetConfigure(gameWorldTask); err != nil { + return + } else { + if data, ok = v.(*cfg.GameWorldTask); !ok { + err = fmt.Errorf("%T is *cfg.GameWorldTask", v) + return + } + } + 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/services/worker/main.go b/services/worker/main.go index 737aa9dc6..af8752fc1 100644 --- a/services/worker/main.go +++ b/services/worker/main.go @@ -35,6 +35,7 @@ import ( "go_dreamfactory/modules/troll" "go_dreamfactory/modules/user" "go_dreamfactory/modules/viking" + "go_dreamfactory/modules/worldtask" "go_dreamfactory/pb" "go_dreamfactory/services" "go_dreamfactory/sys/db" @@ -101,6 +102,7 @@ func main() { pay.NewModule(), //privilege.NewModule(), growtask.NewModule(), + worldtask.NewModule(), ) } 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 + } +}