10403 【越南】【BT】【GM】【英文】【GM版本】境界相关修改(增加境界任务类型7:完成xx主线任务)
| | |
| | | list MailItemPrize; //活动更新时发送邮件奖励物品
|
| | | };
|
| | |
|
| | | //任务列表
|
| | |
|
| | | struct tagTaskList
|
| | | {
|
| | | DWORD _TaskID; //任务ID
|
| | | };
|
| | |
|
| | | //日常任务表
|
| | |
|
| | | struct tagDailyQuest
|
| | |
| | | import ChPyNetSendPack
|
| | | import NetPackCommon
|
| | | import EventShell
|
| | | import IpyGameDataPY
|
| | | #---------------------------------------------------------------------
|
| | | #所有任务的索引
|
| | | FindQuestFunc = None
|
| | |
| | | DataRecordPack.DR_DeleteMission(curPlayer, curMissionID)
|
| | | return
|
| | |
|
| | | def GetMainTaskIDList():
|
| | | ## 获取主线任务ID顺序列表
|
| | | MainTaskIDList = IpyGameDataPY.GetConfigEx("MainTaskIDList")
|
| | | if not MainTaskIDList:
|
| | | MainTaskIDList = []
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in range(ipyDataMgr.GetTaskListCount()):
|
| | | ipyData = ipyDataMgr.GetTaskListByIndex(index)
|
| | | MainTaskIDList.append(ipyData.GetTaskID())
|
| | | IpyGameDataPY.SetConfigEx("MainTaskIDList", MainTaskIDList)
|
| | | GameWorld.DebugLog("加载主线任务ID顺序列表: %s" % MainTaskIDList)
|
| | | return MainTaskIDList
|
| | |
|
| | | def GetHadFinishMainMission(curPlayer, missionID):
|
| | | ''' 检查是否已经完成该主线任务 '''
|
| | |
|
| | | curMission = curPlayer.FindMission(missionID)
|
| | | if curMission != None:
|
| | | #GameWorld.DebugLog("当前任务未完成...missionID=%s" % missionID)
|
| | | GameWorld.DebugLog("当前任务中未完成...missionID=%s" % missionID)
|
| | | return curMission.GetState() == ChConfig.Def_Mission_State_Over
|
| | |
|
| | | curMissionData = FindQuestFunc(missionID)
|
| | | if not curMissionData:
|
| | | mainTaskIDList = GetMainTaskIDList()
|
| | | if not mainTaskIDList:
|
| | | GameWorld.DebugLog("没有主线任务列表! missionID=%s" % missionID)
|
| | | return False
|
| | |
|
| | | # 非主线不判断
|
| | | if curMissionData.Type not in Def_MainTask_Type_List:
|
| | | #GameWorld.DebugLog("非主线不判断...missionID=%s" % missionID)
|
| | | if missionID not in mainTaskIDList:
|
| | | GameWorld.DebugLog("非主线任务ID! missionID=%s" % missionID)
|
| | | return False
|
| | | taskIDIndex = mainTaskIDList.index(missionID)
|
| | |
|
| | | nowTaskID = 0
|
| | | nowTaskIDIndex = -1
|
| | | # 不存在该任务,则判断同类型的任务ID
|
| | | for i in range(curPlayer.GetMissionCount()):
|
| | | mission = curPlayer.GetMissionByIndex(i)
|
| | |
| | | if not missionData:
|
| | | continue
|
| | |
|
| | | taskType = missionData.Type
|
| | | if taskType not in Def_MainTask_Type_List:
|
| | | if taskID not in mainTaskIDList:
|
| | | continue
|
| | | |
| | | # 由于主线任务ID是按任务顺序递增的,故只要存在大于该任务ID的主线任务则代表该主线任务已完成
|
| | | if taskID > missionID:
|
| | | #GameWorld.DebugLog("存在主线任务 %s > missionID=%s" % (taskID, missionID))
|
| | | return True
|
| | | |
| | | #GameWorld.DebugLog("该主线任务未完成...missionID=%s" % missionID)
|
| | | return False
|
| | | nowTaskID = taskID
|
| | | nowTaskIDIndex = mainTaskIDList.index(taskID)
|
| | | break
|
| | | |
| | | if not nowTaskID:
|
| | | GameWorld.DebugLog("当前身上没有主线任务! missionID=%s" % missionID)
|
| | | return False
|
| | | |
| | | isFinish = nowTaskIDIndex > taskIDIndex
|
| | | GameWorld.DebugLog("判断主线任务是否已完成! missionID=%s(%s),isFinish=%s,nowTaskID=%s(%s)" |
| | | % (missionID, taskIDIndex, isFinish, nowTaskID, nowTaskIDIndex), curPlayer.GetPlayerID())
|
| | | return isFinish
|
| | |
|
| | | ##任务是否被删除
|
| | | # @param None
|
| | |
| | | ("list", "MailItemPrize", 0),
|
| | | ),
|
| | |
|
| | | "TaskList":(
|
| | | ("DWORD", "TaskID", 1),
|
| | | ),
|
| | |
|
| | | "DailyQuest":(
|
| | | ("DWORD", "ID", 1),
|
| | | ("BYTE", "RelatedType", 0),
|
| | |
| | | def GetMailKey(self): return self.attrTuple[9] # 活动更新时发送邮件key char
|
| | | def GetMailItemPrize(self): return self.attrTuple[10] # 活动更新时发送邮件奖励物品 list |
| | | |
| | | # 任务列表 |
| | | class IPY_TaskList(): |
| | | |
| | | def __init__(self): |
| | | self.attrTuple = None |
| | | return |
| | | |
| | | def GetTaskID(self): return self.attrTuple[0] # 任务ID DWORD |
| | | |
| | | # 日常任务表 |
| | | class IPY_DailyQuest(): |
| | | |
| | |
| | | self.__LoadFileData("VipPrivilege", onlyCheck)
|
| | | self.__LoadFileData("Store", onlyCheck)
|
| | | self.__LoadFileData("ActSpringSale", onlyCheck)
|
| | | self.__LoadFileData("TaskList", onlyCheck)
|
| | | self.__LoadFileData("DailyQuest", onlyCheck)
|
| | | self.__LoadFileData("DailyLivenessReward", onlyCheck)
|
| | | self.__LoadFileData("ActivityPlaceReward", onlyCheck)
|
| | |
| | | self.CheckLoadData("ActSpringSale") |
| | | return self.ipyActSpringSaleCache[index]
|
| | | |
| | | def GetTaskListCount(self): |
| | | self.CheckLoadData("TaskList") |
| | | return self.ipyTaskListLen
|
| | | def GetTaskListByIndex(self, index): |
| | | self.CheckLoadData("TaskList") |
| | | return self.ipyTaskListCache[index]
|
| | | |
| | | def GetDailyQuestCount(self): |
| | | self.CheckLoadData("DailyQuest") |
| | | return self.ipyDailyQuestLen
|
| | |
| | | import ItemCommon
|
| | | import ItemControler
|
| | | import FBCommon
|
| | | import QuestCommon
|
| | | import GameFuncComm
|
| | | import PlayerControl
|
| | | import ChPyNetSendPack
|
| | |
| | | RealmTaskType_LVUPItem, # 进阶丹 4
|
| | | RealmTaskType_Equip, # 基础装备明细 5
|
| | | RealmTaskType_Dujie, # 渡劫boss 6
|
| | | ) = range(1, 1 + 6)
|
| | | RealmTaskType_FinishMainTask, # 完成xx主线任务 7
|
| | | ) = range(1, 1 + 7)
|
| | |
|
| | | # 需要记录任务值的任务类型列表
|
| | | NeedTaskValueTypeList = [RealmTaskType_KillNPC, RealmTaskType_Dujie]
|
| | |
| | | GameWorld.DebugLog('境界任务领奖,渡劫未过关! realmLV=%s,taskID=%s,taskType=%s' % (realmLV, taskID, taskType), playerID)
|
| | | return
|
| | |
|
| | | # 完成xx主线任务
|
| | | elif taskType == RealmTaskType_FinishMainTask:
|
| | | missionID = needValueA
|
| | | if not QuestCommon.GetHadFinishMainMission(curPlayer, missionID):
|
| | | GameWorld.DebugLog('境界任务领奖,主线任务未完成! realmLV=%s,taskID=%s,taskType=%s,missionID=%s' % (realmLV, taskID, taskType, missionID), playerID)
|
| | | return
|
| | | |
| | | # 根据记录任务进度值
|
| | | elif taskType in NeedTaskValueTypeList:
|
| | | curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskValue % taskID)
|