123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- ---
- --- Generated by EmmyLua(https://github.com/EmmyLua)
- --- Created by zhangkai.
- --- DateTime: 2024/8/29 下午2:08
- ---
- TaskHandler = {}
- local this = {}
- ---任务状态
- TaskHandler.Status = {
- ---已接取
- ACCEPT = 1,
- ---已完成
- FINISH = 2,
- ---已提交
- SUBMIT = 3,
- }
- ---任务记录
- function this.GetNewTaskRecord()
- local TaskRecord = {
- ---任务id
- task_id = 0,
- ---任务目标id
- target_id = 0,
- ---任务目标类型
- task_goal = 0,
- ---任务当前进度
- goal_count = 0,
- ---任务目标数量
- max_count = 0,
- ---任务状态
- state = TaskHandler.Status.ACCEPT,
- }
- return TaskRecord
- end
- ---@alias TaskGoalHandler table 外置任务类型目标
- TaskGoalHandler = {
- ---@see 通关副本次数
- [TaskTargetType.FINISH_DUPLICATE] = ActivityTaskGoal.FlushFinishDupCount,
- ---@see 通关指定副本次数
- [TaskTargetType.FINISH_GOAL_DUP] = ActivityTaskGoal.FlushFinishGoalDupCount,
- ---@see 合成次数
- [TaskTargetType.SYNTHESIS] = EquipTaskGoal.FlushSynthesisCount,
- ---@see 回收次数
- [TaskTargetType.RECOVERY] = EquipTaskGoal.FlushRecoveryCount,
- ---@see 指定部位强化到达指定等级
- [TaskTargetType.PARTS_STRENGTHEN_LV] = EquipTaskGoal.FlushPartsStrengthenLv,
- ---@see 完成勇士任务
- [TaskTargetType.FINISH_GOLD_TASK] = ActivityTaskGoal.FlushFinishGoldTaskCount,
- ---@see 在指定地图对怪造成伤害
- [TaskTargetType.HURT_MAP_MONSTER] = MonsterTaskGoal.FlushHurtMapMonster,
- ---@see 首饰升级
- [TaskTargetType.JEWELRY_LV_UP] = EquipTaskGoal.FlushJewelryLvUp,
- ---@see 通关秘境副本
- [TaskTargetType.FINISH_SECRET_REALM_DUPLICATE] = ActivityTaskGoal.FlushSecretRealmFinishTimes,
- ---@see 开启三倍收益
- [TaskTargetType.OPEN_TRIPLE_INCOME] = PlayerTaskGoal.FlushTripleIncome,
- ---@see 指定部位追加到达指定等级
- [TaskTargetType.EQUIP_APPEND] = EquipTaskGoal.FlushPartsAppendLv,
- ---@see 击杀指定类型怪物
- [TaskTargetType.KILL_TYPE_MONSTER] = MonsterTaskGoal.FlushKillTypeMonster,
- ---@see 交易行上架商品
- [TaskTargetType.TRADE_LINE_UP_GOODS] = TradeTaskGoal.FlushTradeLineUpGoods,
- ---@see 商城购买商品
- [TaskTargetType.MALL_BUY_GOODS] = TradeTaskGoal.FlushMallBuyGoods,
- ---@see 装备叠加
- [TaskTargetType.EQUIP_SUPERPOSITION] = EquipTaskGoal.FlushEquipSuperposition,
- ---@see 卓越词条
- [TaskTargetType.EXCELLENCE_ATTR] = EquipTaskGoal.FlushExcellenceAttr,
- ---@see 镶嵌萤石
- [TaskTargetType.INLAID_GEMSTONES] = EquipTaskGoal.FlushInlaidGemstones,
- ---@see 装备卓越词条数量
- [TaskTargetType.EQUIP_EXCELLENCE_ATTR_COUNT] = EquipTaskGoal.FlushExcellenceAttrCount,
- ---@see 加点
- [TaskTargetType.DEPLOY_ATTR_POINT] = PlayerTaskGoal.FlushDeployAttrPoint,
- ---@see 重新获取一个指定道具
- [TaskTargetType.RE_GET_ITEM] = EquipTaskGoal.FlushReGetItem,
- ---@see 从NPC商店购买指定道具
- [TaskTargetType.NPC_MALL_BUY_GOODS] = TradeTaskGoal.FlushNpcMallBuyGoods,
- ---@see 回收获得指定道具
- [TaskTargetType.RECOVERY_GET_APPOINT_ITEM] = EquipTaskGoal.FlushRecoveryGetAppointItem,
- ---@see 完成一次BOSS悬赏
- [TaskTargetType.BOSS_BOUNTY] = ActivityTaskGoal.FlushBossRewardBounty,
- ---@see 激活连击技能
- [TaskTargetType.ACTIVATE_COMBO_SKILL] = PlayerTaskGoal.FlushActivateComboSkill,
- ---@see 激活白银特权
- [TaskTargetType.ACTIVATE_SILVER_PRIVILEGE] = PlayerTaskGoal.ActivateSilverPrivilege,
- ---@see 完成第X章首饰任务
- [TaskTargetType.JEWELRY_TASK_CHAPTER] = ActivityTaskGoal.JewelryTaskChapter,
- ---@see 穿戴装备累计强化x次数
- [TaskTargetType.EQUIP_STRENGTHEN_TIMES] = EquipTaskGoal.EquipStrengthenTimes,
- ---@see 击杀x次指定等级以上怪物
- [TaskTargetType.KILL_LEVEL_MONSTER] = MonsterTaskGoal.KillLevelMonster,
- ---@see 使用果实
- [TaskTargetType.USE_FRUIT_ITEM] = PlayerTaskGoal.UseFruitItem,
- ---@see 穿戴装备的总追加达到x级
- [TaskTargetType.EQUIP_APPEND_TOTAL_LV] = EquipTaskGoal.EquipAppendTotalLv,
- ---@see 穿戴指定装备
- [TaskTargetType.SPECIFIC_STAGE_EQUIP] = EquipTaskGoal.SpecificStageEquip,
- ---@see 尾刀击杀怪物
- [TaskTargetType.LAST_KILL_MONSTER] = MonsterTaskGoal.LastKillMonster,
- ---@see 镶嵌卡牌
- [TaskTargetType.INLAID_TRANSFORMATION_CARD] = EquipTaskGoal.InlaidTransformationCard,
- ---@see 完成勇气试炼X层
- [TaskTargetType.FLUSH_BRAVE_TEST_LV] = ActivityTaskGoal.FlushBraveTestLv,
- ---@see 进入地图分线
- [TaskTargetType.ENTER_MAP_LINE] = PlayerTaskGoal.EnterMapLine,
- ---@see 首刀击杀怪物
- [TaskTargetType.FIRST_ATTACK_MONSTER] = MonsterTaskGoal.FirstAttackMonster,
- ---@see 合成卡牌
- [TaskTargetType.SYNTHESIS_CARD] = EquipTaskGoal.FlushSynthesisCard,
- ---@see 装备指定数量圣杯
- [TaskTargetType.TAKE_ON_GRAIL_COUNT] = EquipTaskGoal.FlushTakeOnGrailCount,
- ---@see 强化圣杯 达到强化到指定等级的圣杯数量
- [TaskTargetType.STRENGTHEN_GRAIL] = EquipTaskGoal.FlushStrengthenGrail,
- }
- ---@description 触发任务刷新
- ---@param actor table 玩家对象
- ---@param taskTargetType number 任务目标类型
- ---@param param any 自定义刷新参数
- function TaskHandler.TriggerTaskGoal(actor, taskTargetType, param)
- local success, errorInfo = xpcall(this.TriggerTaskGoal, debug.traceback, actor, taskTargetType, param)
- if not success then
- gameDebug.assertPrint(success, "任务目标更新异常:", errorInfo, "参数", actor, taskTargetType, param)
- end
- end
- function this.TriggerTaskGoal(actor, taskTargetType, param)
- local ok = TaskGoal.IsTaskTargetType(taskTargetType)
- if not ok then
- return
- end
- ---触发内置任务系统系统刷新
- if TaskGoal.isLuaGoalType(taskTargetType) then
- taskgoalflush(actor, taskTargetType, param)
- end
- -- 任意任务类型刷新触发
- DailyActivity.taskGoalFlush(actor, taskTargetType, param)
- -- 刷新王者之路任务
- KingRoad.FlushKingRoadTask(actor, taskTargetType, param)
- -- 翅膀任务刷新
- Wings.FlushWingsTask(actor, taskTargetType, param)
- end
- ---构建任务记录
- ---@param actor table 玩家对象
- ---@param taskId number 任务id
- ---@param targetId number 任务目标配置id
- function TaskHandler.BuildTaskRecord(actor, taskId, targetId)
- local success, taskRecord = xpcall(this.BuildTaskRecord, debug.traceback, actor, taskId, targetId)
- if not success then
- gameDebug.assertPrint(success, "构建任务记录异常:", taskRecord, "参数", actor, taskId, targetId)
- return nil
- end
- return taskRecord
- end
- function this.BuildTaskRecord(actor, taskId, targetId)
- local targetList = ConfigDataManager.getTable("cfg_task_target", "id", targetId)
- if table.isNullOrEmpty(targetList) or #targetList < 1 then
- return nil
- end
- local targetConfig = targetList[1]
- local taskGoalType = tonumber(targetConfig["taskgoaltype"])
- local ok = TaskGoal.IsTaskTargetType(taskGoalType)
- if not ok then
- return nil
- end
- local maxCount = tonumber(targetConfig["goalcount"])
- if maxCount == nil then
- maxCount = 1
- end
- local taskRecord = this.GetNewTaskRecord()
- taskRecord.task_id = taskId
- taskRecord.target_id = targetId
- taskRecord.task_goal = taskGoalType
- taskRecord.max_count = maxCount
- local count = TaskGoal.FlushTaskCount(actor, taskGoalType, targetId, 0, nil)
- if count > 0 then
- taskRecord.goal_count = math.min(count, maxCount)
- if count >= maxCount then
- taskRecord.state = TaskHandler.Status.FINISH
- end
- end
- return taskRecord
- end
- function TaskHandler.onTaskChange(actor, taskId, state)
- TaskHandler.saveTaskChange(actor, taskId, state)
- TaskHandler.sendTaskState(actor)
- end
- function TaskHandler.saveTaskChange(actor, taskId, state)
- local taskStates = getplaydef(actor, "T$taskStates") or {}
- taskStates[taskId] = state
- setplaydef(actor, "T$taskStates", taskStates)
- end
- function TaskHandler.sendTaskState(actor)
- local taskStates = getplaydef(actor, "T$taskStates") or {}
- sendluamsg(actor, LuaMessageIdToClient.RES_TASK_STATES_TO_FUNC_ON, taskStates)
- end
|