FunctionQuest = class("FunctionQuest",EventDispatcher) autoImport("GuideMaskView") FunctionQuest.UpdateTraceInfo = "MAINVIEWTASKQUESTPAGE_UPDATETRACEINFO" FunctionQuest.RemoveTraceInfo = "MAINVIEWTASKQUESTPAGE_REMOVETRACEINFO" FunctionQuest.AddTraceInfo = "MAINVIEWTASKQUESTPAGE_ADDTRACEINFO" FunctionQuest.DefaultTriggerInfinite = 99999 FunctionQuest.DefaultEffectTriggerInfinite = 20 local cmdArgs = {} function FunctionQuest.Me() if nil == FunctionQuest.me then FunctionQuest.me = FunctionQuest.new() end return FunctionQuest.me end function FunctionQuest:ctor() self.triggerCheck = Game.AreaTrigger_Mission self.iconAtlas = { "itemIcon", "skillIcon", "uiIcon", "npcIcon", } end function FunctionQuest:handleCameraQuestStart( pos ) -- body local temp = GameObject("Temp"); temp.transform.position = pos self.go = temp if(not FunctionCameraEffect.Me():Bussy())then self.cft = CameraEffectFocusTo.new(temp.transform, CameraConfig.NPC_Dialog_ViewPort, 0.6, function () LeanTween.delayedCall(temp,1, function () self:handleCameraquestEnd() end):setDestroyOnComplete(true); end); FunctionCameraEffect.Me():Start(self.cft) end end function FunctionQuest:handleCameraquestEnd( msg ) -- body FunctionCameraEffect.Me():End(self.cft); self.cft = nil; LeanTween.cancel(self.go) GameObject.Destroy(self.go) self.go = nil; end function FunctionQuest:test( ) -- body local datas = {} datas.items = {} local data = {} -- card -- data = {} -- data.id = 20011 -- data.count = 2 -- table.insert(datas.items,data) -- data = {} -- data.id = 20015 -- data.count = 1 -- table.insert(datas.items,data) -- data = {} -- data.id = 20017 -- data.count = 1 -- table.insert(datas.items,data) -- -- 2d item -- data = {} -- data.id = 40601 -- data.count = 1 -- table.insert(datas.items,data) -- data = {} -- data.id = 100 -- data.count = 1 -- table.insert(datas.items,data) -- data = {} -- data.id = 105 -- data.count = 1 -- table.insert(datas.items,data) -- data = {} -- data.id = 110 -- data.count = 1 -- table.insert(datas.items,data) -- data = {} -- data.id = 125 -- data.count = 1 -- table.insert(datas.items,data) -- data = {} -- data.id = 300 -- data.count = 1 -- table.insert(datas.items,data) -- data = {} -- data.id = 400 -- data.count = 1 -- table.insert(datas.items,data) -- data = {} -- data.id = 450 -- data.count = 1 -- table.insert(datas.items,data) -- data = {} -- data.id = 1002 -- data.count = 1 -- table.insert(datas.items,data) -- data = {} -- data.id = 3011 -- data.count = 1 -- table.insert(datas.items,data) -- data = {} -- data.id = 1002 -- data.count = 1 -- table.insert(datas.items,data) data = {} data.id = 40301 data.count = 2 table.insert(datas.items,data) ServiceItemProxy.Instance:RecvItemShow(datas) -- local str = "{icon = \'skill_35001\',text = \'icon帽\'}" -- data = {} -- data.type =2 -- data.data = str -- ServiceNUserProxy.Instance:RecvModelShow(data) -- str = "{icon = \'113\',text = \'技能\'}" -- data = {} -- data.type = 3 -- data.data = str -- ServiceNUserProxy.Instance:RecvModelShow(data) -- str = "{icon = \'icon_5_2\',text = \'職業\'}" -- data = {} -- data.type = 4 -- data.data = str -- ServiceNUserProxy.Instance:RecvModelShow(data) -- local list = {} -- for i=1,5 do -- local data = {} -- if(i%2 == 0)then -- data.type = QuestDataType.QuestDataType_INVADE -- else -- data.type = QuestDataType.QuestDataType_INVADE -- end -- data.id = 1+i -- data.questDataStepType = QuestDataStepType.QuestDataStepType_MOVE -- data.traceTitle = "物品追蹤" -- data.map = 2 -- data.pos = LuaVector3(-26.64,0,46) -- data.params = {pos={-26.64,0,46},distance=2} -- data.process = 0.3 -- table.insert(list,data) -- end -- QuestProxy.Instance:AddTraceCells(list) end local questStepOnFunc = function (questId) helplog("quest StepOn", questId); QuestProxy.Instance:notifyQuestState(questId); end function FunctionQuest:executeQuest( questData ) -- printRed("executeQuest content:"..questData.questDataStepType) -- printRed("executeQuest id:"..questData.id) -- if(true)then -- self:test() -- return -- end local isInHand,master= Game.Myself:IsHandInHand() if(isInHand and not master)then MsgManager.ShowMsgByID(824) return end local isDead = Game.Myself:IsDead() if(isDead and not QuestProxy.Instance:checkCanExcuteWhenDead(questData))then MsgManager.ShowMsgByID(2500) return end if(questData.questDataStepType == QuestDataStepType.QuestDataStepType_LEVEL)then return elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_WAIT)then return elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_GUIDE)then local guideType = questData.params.type if(guideType == QuestDataGuideType.QuestDataGuideType_explain)then FunctionGuide.Me():stopGuide( ) GameFacade.Instance:sendNotification(UIEvent.JumpPanel,{view = PanelConfig.GuidePanel, viewdata = {questData = questData}}) else FunctionGuide.Me():showGuideByQuestData(questData) end return elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_CLIENT_PLOT)then local plotid = questData.params.id; if(plotid)then Game.PlotStoryManager:ForceStart( plotid, questStepOnFunc, questData.id ) end return; elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_PLAY_CG)then local id = questData.params.id local video = Table_Video[id] if(video)then QuestProxy.Instance:notifyQuestState(questData.id,questData.staticData.FinishJump) helplog("此處應該播一段視訊:",video.Name) LuaUtils.PlayMovie(video.Name,true) else helplog("未找到該視訊任務配置Table_View,id=",id) end return; else -- cmd if(self.cmdData and self.cmdData.id == questData.id)then if(self.cmdData.step == questData.step)then return end end local sameNpcVisit = self:handleVisitQuest(questData) if(sameNpcVisit)then return end TableUtility.TableClear(cmdArgs) cmdArgs.targetMapID = questData.map cmdArgs.targetPos = questData.pos cmdArgs.distance = questData.params.distance if(questData.type ~= QuestDataType.QuestDataType_ACTIVITY_TRACEINFO)then cmdArgs.customType = AccessCustomType.Quest cmdArgs.custom = questData.id end cmdArgs.callback = function ( cmd,event ) -- body self:missionCallback(cmd,event) end local cmdClass = nil local questStepType = questData.questDataStepType if(QuestDataStepType.QuestDataStepType_VISIT == questStepType)then cmdArgs.npcUID = questData.params.uniqueid if nil == cmdArgs.npcUID then if type(questData.params.npc) == "table" then cmdArgs.npcID = questData.params.npc[1] else cmdArgs.npcID = questData.params.npc end end cmdClass = MissionCommandVisitNpc elseif(QuestDataStepType.QuestDataStepType_KILL == questStepType)then cmdArgs.groupID = questData.params.groupId cmdArgs.npcID = questData.params.monster cmdArgs.npcUID = questData.params.uniqueid cmdClass = MissionCommandSkill elseif(QuestDataStepType.QuestDataStepType_COLLECT == questStepType)then cmdArgs.groupID = questData.params.groupId cmdArgs.npcID = questData.params.monster cmdArgs.skillID = GameConfig.NewRole.riskskill[1] cmdArgs.npcUID = questData.params.uniqueid cmdClass = MissionCommandSkill elseif(QuestDataStepType.QuestDataStepType_USE == questStepType)then cmdClass = MissionCommandMove elseif(QuestDataStepType.QuestDataStepType_SELFIE == questStepType)then cmdClass = MissionCommandMove elseif(QuestDataStepType.QuestDataStepType_GATHER == questStepType)then cmdArgs.npcID = questData.params.monster cmdArgs.groupID = questData.params.groupId cmdArgs.npcUID = questData.params.uniqueid cmdClass = MissionCommandSkill elseif(QuestDataStepType.QuestDataStepType_MOVE == questStepType)then cmdClass = MissionCommandMove elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_TALK)then if(cmdArgs.targetMapID == nil and cmdArgs.targetPos == nil)then self:executeTalkQuest(questData) else cmdClass = MissionCommandMove self:handleAutoTrigger(questData) end elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_RAID)then -- helplog("ServiceQuestProxy.Instance:CallQuestRaidCmd",questData.id) if(cmdArgs.targetMapID == nil and cmdArgs.targetPos == nil)then ServiceQuestProxy.Instance:CallQuestRaidCmd(questData.id) else cmdClass = MissionCommandMove self:handleAutoTrigger(questData) end elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_DAILY)then if(cmdArgs.targetMapID == nil and cmdArgs.targetPos == nil)then return else cmdClass = MissionCommandMove end elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_ITEM)then if(cmdArgs.targetMapID == nil and cmdArgs.targetPos == nil)then return else local creatureId = questData.params.monster cmdArgs.npcID = creatureId cmdArgs.npcUID = questData.params.uniqueid if( creatureId and Table_Monster[creatureId])then cmdArgs.groupID = questData.params.groupId cmdClass = MissionCommandSkill elseif(creatureId and Table_Npc[creatureId])then cmdClass = MissionCommandVisitNpc end end elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_SEAL)then if(cmdArgs.targetMapID == nil and cmdArgs.targetPos == nil)then return else cmdArgs.npcUID = questData.params.uniqueid if nil == cmdArgs.npcUID then if type(questData.params.npc) == "table" then cmdArgs.npcID = questData.params.npc[1] else cmdArgs.npcID = questData.params.npc end end cmdClass = MissionCommandVisitNpc end elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_GUIDELOCKMONSTER)then self:handleAutoTrigger(questData) cmdClass = MissionCommandMove end if nil ~= cmdClass then -- :clonePartData() local cmd = MissionCommandFactory.CreateCommand(cmdArgs, cmdClass) Game.Myself:Client_SetMissionCommand(cmd) end TableUtility.TableClear(cmdArgs) end end function FunctionQuest:getCurCmdData( ) -- body return self.cmdData end function FunctionQuest:stopCurrentCmd( questData ) -- body if(self.cmdData and self.cmdData.id == questData.id)then if(self.cmdData.step == questData.step)then self.cmdData = nil end end end function FunctionQuest:missionCallback( cmd,event ) -- body -- local questId = cmd.args.custom -- local questData = QuestProxy.Instance:getQuestDataByIdAndType(questId) -- if(event == MissionCommand.CallbackEvent.Launch)then -- self.cmdData = questData -- GameFacade.Instance:sendNotification(MissionCommandEvent.MissionCommandEvent,{isOngoing = true,questDt = questData}) -- else -- self.cmdData = nil -- GameFacade.Instance:sendNotification(MissionCommandEvent.MissionCommandEvent,{isOngoing = false,questDt = questData}) -- self:handleMissShutdown(questId) -- end end function FunctionQuest:handleMissShutdown( questId ) -- body -- if(questData)then -- if(questData.questDataStepType == QuestDataStepType.QuestDataStepType_TALK)then -- end -- end end function FunctionQuest:executeTalkQuest( questData ) -- body local viewdata = { viewname = "DialogView", dialoglist = questData.params.dialog, callbackData = questData.id, questId = questData.id, callback = function (questId, optionid,state) if(state)then QuestProxy.Instance:notifyQuestState(questId,optionid) else local questData = QuestProxy.Instance:getQuestDataByIdAndType(questId) if(questData)then QuestProxy.Instance:notifyQuestState(questId,questData.staticData.FailJump) end end end } GameFacade.Instance:sendNotification(UIEvent.ShowUI, viewdata); end function FunctionQuest:handleAutoTrigger(questData) local qData = questData if(questData.questDataStepType == QuestDataStepType.QuestDataStepType_USE)then local questParam for i=1,#self.iconAtlas do questParam = questData.params[self.iconAtlas[i]] -- helplog("AddQuickUseCheck QuestDataStepType_USE quest1:",questParam,self.iconAtlas[i],questData.params.button) if(questParam) then -- helplog("AddQuickUseCheck QuestDataStepType_USE quest2 id:",questData.id,tostring(questData.map),tostring(questData.pos),qData.params.name,questData.params.distance) self.triggerCheck:AddQuickUseCheck(questData.id,questData.map,questData.pos,questData.params.distance,self.iconAtlas[i],questParam,qData.params.name,questData.params.button,qData) break end end elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_SELFIE )then if(questData.params.itemIcon ~= nil)then -- helplog("AddQuickUseCheck QuestDataStepType_SELFIE quest id:",questData.id,questData.map,questData.pos,questData.params.distance) self.triggerCheck:AddQuickUseCheck(questData.id,questData.map,questData.pos,questData.params.distance,"itemIcon",questData.params.itemIcon,qData.params.name,questData.params.button,qData) end elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_MOVE )then -- if(questData.params.itemIcon ~= nil)then -- printRed("autoTrigger4") local func = function ( owner,questData ) -- body -- helplog("QuestDataStepType_MOVE callback QuestProxy.Instance:notifyQuestState move:",questData.id) if(questData and questData.staticData)then QuestProxy.Instance:notifyQuestState(questData.id,questData.staticData.FinishJump) end -- printRed("self:notifyQuestState(questData.id)") end -- helplog("AddQuickUseCheck QuestDataStepType_MOVE quest id:",questData.id,questData.map,questData.pos,questData.params.distance) self.triggerCheck:AddCallBackCheck(questData.id,questData.map,questData.pos,questData.params.distance,qData,nil,func) -- end elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_TALK )then if( questData.map == nil and questData.pos ~=nil)then -- errorLog(" talk quest map is nil ;questId:"..questData.id) elseif(questData.map == nil and questData.pos ==nil)then -- errorLog(" talk quest map is nil ,pos is nil;questId:"..questData.id) else if(not questData.pos and questData.params.distance )then errorLog("pos is nil but distance is:"..questData.params.distance) end local func = function ( owner,questData ) -- helplog("executeTalkQuest id:",questData.id) if(questData and questData.staticData)then self:executeTalkQuest(questData) end end self.triggerCheck:AddCallBackCheck(questData.id,questData.map,questData.pos, questData.params.distance or FunctionQuest.DefaultTriggerInfinite,qData,nil,func) end elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_RAID )then if( questData.map == nil and questData.pos ~=nil)then -- errorLog(" RAID quest map is nil ;questId:"..questData.id) elseif(questData.map == nil and questData.pos ==nil)then else if(not questData.pos and questData.params.distance )then -- errorLog("pos is nil but distance is:"..questData.params.distance) end local func = function ( owner,questData ) ServiceQuestProxy.Instance:CallQuestRaidCmd(questData.id) end self.triggerCheck:AddCallBackCheck(questData.id,questData.map,questData.pos, questData.params.distance or FunctionQuest.DefaultTriggerInfinite,qData,nil,func) end elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_GUIDELOCKMONSTER )then local enter = function ( owner,questData ) if(questData)then local guideId = questData.params.guideID local guideData = Table_GuideID[guideId] local bubbleId = guideData.BubbleID if(bubbleId and Table_BubbleID[bubbleId])then -- helplog("ShowAutoFightBubble: true",questData.id) GameFacade.Instance:sendNotification(GuideEvent.ShowAutoFightBubble, {bubbleId = bubbleId,isShow = true}) end end end local exsit = function ( owner,questData ) local guideId = questData.params.guideID local guideData = Table_GuideID[guideId] local bubbleId = guideData.BubbleID if(bubbleId and Table_BubbleID[bubbleId])then -- helplog("ShowAutoFightBubble: false",questData.id) GameFacade.Instance:sendNotification(GuideEvent.ShowAutoFightBubble, {bubbleId = bubbleId,isShow = false}) end end local guideId = questData.params.guideID local guideData = Table_GuideID[guideId] local monsterId = guideData.guideLockMonster TableUtility.TableClear(cmdArgs) cmdArgs.questId = questData.id cmdArgs.monsterId = monsterId -- helplog("addOrRemoveLockMonsterGuide",questData.id) QuestProxy.Instance:addOrRemoveLockMonsterGuide(cmdArgs) self.triggerCheck:AddCallBackCheck(questData.id,questData.map,questData.pos, questData.params.distance or FunctionQuest.DefaultTriggerInfinite,qData,nil,enter,exsit) end end function FunctionQuest:handleEffectTrigger(questData) if(questData and questData.whetherTrace ~= 1 )then return end local qData = questData if(questData.questDataStepType == QuestDataStepType.QuestDataStepType_USE or questData.questDataStepType == QuestDataStepType.QuestDataStepType_SELFIE or questData.questDataStepType == QuestDataStepType.QuestDataStepType_MOVE)then local id = QuestProxy.Instance:getAreaTriggerIdByQuestId(questData.id) self.triggerCheck:AddShowAreaEffectCheck(id,questData.map,questData.pos, FunctionQuest.DefaultEffectTriggerInfinite,qData) elseif(questData.questDataStepType == QuestDataStepType.QuestDataStepType_TALK )then if(questData.map and questData.pos )then local id = QuestProxy.Instance:getAreaTriggerIdByQuestId(questData.id) self.triggerCheck:AddShowAreaEffectCheck(id,questData.map,questData.pos, FunctionQuest.DefaultEffectTriggerInfinite,qData) end end end function FunctionQuest:handleAutoExcute( questData ) -- body -- LogUtility.Info("handleAutoExcute start") -- LogUtility.Info(questData.staticData.orderId) -- LogUtility.Info(questData.staticData.id) -- LogUtility.Info(questData.staticData) -- LogUtility.Info(questData.staticData.Auto) -- LogUtility.Info("handleAutoExcute end") if(questData.staticData)then if(questData.staticData.Auto == 1 )then self:executeQuest(questData) end end end function FunctionQuest:handleAutoQuest( questData ) -- body self:handleAutoExcute(questData) self:handleAutoTrigger(questData) -- self:handleEffectTrigger(questData) end function FunctionQuest:handleQuestInit( questData ) -- body if(questData.questListType == SceneQuest_pb.EQUESTLIST_ACCEPT and QuestProxy.Instance:checkIfNeedAutoTrigger(questData))then self:handleAutoTrigger(questData) end if(questData.questListType == SceneQuest_pb.EQUESTLIST_ACCEPT and QuestProxy.Instance:checkIfNeedEffectTrigger(questData))then -- self:handleEffectTrigger(questData) end if(questData.questListType == SceneQuest_pb.EQUESTLIST_ACCEPT and QuestProxy.Instance:checkIfNeedAutoExcuteAtInit(questData))then self:handleAutoExcute(questData) end end function FunctionQuest:handleVisitQuest( questData ) -- body if(questData.questDataStepType == QuestDataStepType.QuestDataStepType_VISIT)then local target = FunctionVisitNpc.Me():GetTarget() local npcId = questData.params.npc local uniqueid = questData.params.uniqueid local targetData = target and target.data or nil local staticData = targetData and targetData.staticData or nil if(staticData)then local isSameNpc = false local targetId = staticData.id if(uniqueid == targetData.uniqueid)then isSameNpc = true elseif(type(npcId) == "table" )then for i=1,#npcId do local single = npcId[i] if(single == targetId)then isSameNpc = true break end end elseif(targetId == npcId )then isSameNpc = true end if(isSameNpc)then FunctionVisitNpc.Me():AccessTarget(target,questData.id,AccessCustomType.Quest) return true end end end end function FunctionQuest:stopTrigger( questData ) -- body self:stopMisstionTrigger(questData) self:stopQuestCheck(questData) self:stopQuestMiniShow(questData.id) self:stopAutoFightGuideQuest(questData) self:stopGuideChecker(questData) self:stopGuildChecker(questData) self:stopCountDownChecker(questData) self:removeMonsterNamePre(questData) -- self:stopEffectTrigger(questData) -- self:stopCurrentCmd(questData) end function FunctionQuest:stopCountDownChecker( questData ) Game.QuestCountDownManager:RemoveQuestEffect(questData.id) end function FunctionQuest:stopGuildChecker( questData ) Game.QuestGuildManager:RemoveQuestEffect(questData.id) end function FunctionQuest:stopQuestCheck( questData ) -- body FunctionQuestDisChecker.RemoveQuestCheck(questData.id) end function FunctionQuest:stopGuideChecker( questData ) -- body FunctionGuideChecker.RemoveGuideCheck(questData.id) end function FunctionQuest:removeMonsterNamePre( questData ) -- body if(QuestProxy.Instance:checkIfShowMonsterNamePre(questData))then if(self.currentShowQuest and self.currentShowQuest.id == questData.id)then GameFacade.Instance:sendNotification(SceneUIEvent.RemoveMonsterNamePre,questData) self.currentShowQuest = nil end end end function FunctionQuest:addMonsterNamePre( questData ) -- body if(self.currentShowQuest)then self:removeMonsterNamePre(self.currentShowQuest) end if(QuestProxy.Instance:checkIfShowMonsterNamePre(questData))then GameFacade.Instance:sendNotification(SceneUIEvent.AddMonsterNamePre,questData) self.currentShowQuest = questData end end function FunctionQuest:checkShowMonsterNamePre( creature ) -- body if(self.currentShowQuest)then local groupID = self.currentShowQuest.params.groupId local npcID = self.currentShowQuest.params.monster local npcUID = self.currentShowQuest.params.uniqueid if(npcID and creature.data.staticData.id == npcID)then return true end if(groupID and creature.data:GetGroupID() == groupID)then return true end if(npcUID and creature.data.uniqueid== npcUID)then return true end end end function FunctionQuest:stopAutoFightGuideQuest( questData ) -- body if(questData.questDataStepType == QuestDataStepType.QuestDataStepType_GUIDELOCKMONSTER )then local guideId = questData.params.guideID local guideData = Table_GuideID[guideId] local bubbleId = guideData.BubbleID local monsterId = guideData.guideLockMonster if(bubbleId and Table_BubbleID[bubbleId])then GameFacade.Instance:sendNotification(GuideEvent.ShowAutoFightBubble, {bubbleId = bubbleId,isShow = false}) end TableUtility.TableClear(cmdArgs) cmdArgs.questId = questData.id QuestProxy.Instance:addOrRemoveLockMonsterGuide(cmdArgs) end end function FunctionQuest:stopQuestMiniShow( id ) -- body Game.QuestMiniMapEffectManager:RemoveQuestEffect(id) end function FunctionQuest:addQuestMiniShow( questData ) -- body if(questData)then Game.QuestMiniMapEffectManager:AddQuestEffect(questData.id) end end function FunctionQuest:stopMisstionTrigger( questData ) -- body if(QuestProxy.Instance:checkIfNeedAutoTrigger(questData))then local triggerCheck = Game.AreaTrigger_Mission if(triggerCheck ~=nil)then triggerCheck:RemoveQuestCheck(questData.id) end end end function FunctionQuest:stopEffectTrigger( questData ) -- body if(QuestProxy.Instance:checkIfNeedEffectTrigger(questData))then local id = QuestProxy.Instance:getAreaTriggerIdByQuestId(questData.id) local triggerCheck = Game.AreaTrigger_Mission if(triggerCheck ~=nil)then triggerCheck:RemoveQuestCheck(id) end end end function FunctionQuest:playMediaQuest( mapId ) local quest,video = self:getMediaQuest(mapId) if(quest) then QuestProxy.Instance:notifyQuestState(quest.id,quest.staticData.FinishJump) helplog("此處應該播一段視訊:",video.Name) -- GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.MediaPanel}); -- GameFacade.Instance:sendNotification(MediaPanel.PlayVideo, video.Name); LuaUtils.PlayMovie(video.Name,true) return true end return false end function FunctionQuest:getMediaQuest(mapId) local type = SceneQuest_pb.EQUESTLIST_ACCEPT local list = QuestProxy.Instance.questList[type] -- printRed("playMediaQuest") -- printRed(mapId) if(list) then for i=1,#list do local single = list[i] if(single.questDataStepType == QuestDataStepType.QuestDataStepType_MEDIA and single.map == mapId)then local id = single.params.id local table = Table_Video[id] if(table)then return single,table end end end end return nil end function FunctionQuest:updateTraceView( traceData ) -- body EventManager.Me():PassEvent(FunctionQuest.UpdateTraceInfo,traceData) end function FunctionQuest:removeTraceView(traceData ) -- body EventManager.Me():PassEvent(FunctionQuest.RemoveTraceInfo,traceData) end function FunctionQuest:addTraceView( traceData ) -- body EventManager.Me():PassEvent(FunctionQuest.AddTraceInfo,traceData) end function FunctionQuest:getIllustrationQuest( mapId ) -- body -- printRed("getIllustrationQuest") -- printRed(mapId) local questData = QuestProxy.Instance:getIllustrationQuest(mapId) if(questData)then QuestProxy.Instance:notifyQuestState(questData.id,questData.staticData.FinishJump) return questData.params.id else return nil end end function FunctionQuest:executeManualQuest( questData ) -- body if(questData and questData.staticData)then if(self.onGoingQuestId)then self:stopQuestMiniShow(self.onGoingQuestId) end self:ShowDirAndDis(questData) local symbol = questData.staticData.Params.symbol if(symbol == 1 or questData.step < 4 )then self:executeQuest(questData) end end end function FunctionQuest:ShowDirAndDis( questData ) -- body self:addQuestMiniShow(questData) self:addMonsterNamePre(questData) Game.QuestMiniMapEffectManager:ShowMiniMapDirEffect(questData.id) FunctionGuide.Me():AddMapGuide(questData.map) GameFacade.Instance:sendNotification(QuestEvent.ShowManualGoEffect, {questid = questData.id}) self.onGoingQuestId = questData.id end function FunctionQuest:TestEquip( ) -- body -- printRed("getIllustrationQuest") -- printRed(mapId) for k,v in pairs(Table_GM_CMD) do local func = loadstring(v.Cmd.."Func") if(func)then func() end end end function additemFunc( ) -- body local cmd = v.Cmd.." " local params = v.Param local symbol = "({(.-)})" for str,param in string.gmatch(params, symbol) do local split = string.split(param,",") local input = "" local result = split[2].."="..input cmd = cmd..result end ServiceGMProxy.Instance:Call(cmd) end