From b15c3f182daff017a8fd25a43af8ed12f5651b33 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期一, 24 六月 2019 16:26:27 +0800 Subject: [PATCH] 6603 【后端】【2.0】增加新版的sp和被动技能 - 有专精的被动可触发技能 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py | 326 ++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 257 insertions(+), 69 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py index 8201199..5847a24 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py @@ -56,8 +56,10 @@ import PlayerFairyCeremony import PlayerNewFairyCeremony import Operate_EquipStone +import OpenServerCampaign import PlayerWeekParty import PlayerFairyDomain +import GameFuncComm import PlayerActLogin import PlayerHorse import FBCommon @@ -2501,23 +2503,7 @@ # @return 返回值, 是否判断成功 # @remarks <QualityEquipCnt quality="装备品质" value="期望数量"/> def ConditionType_Qualityequipcnt(curPlayer, curMission, curConditionNode): - conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0) - quality = GameWorld.ToIntDef(curConditionNode.GetAttribute("quality"), 0) - conditionType = curConditionNode.GetAttribute("type") - curQualityEquipCnt = 0 #达到该品质的装备数量,品质高的兼容品质低的 - equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) - for equipIndex in range(0, equipPack.GetCount()): - #备用装备栏不处理 - if equipIndex not in ShareDefine.RoleEquipType: - continue - curEquip = equipPack.GetAt(equipIndex) - if curEquip.IsEmpty(): - continue - if curEquip.GetItemQuality() < quality: - continue - curQualityEquipCnt += 1 - - return QuestRunnerValue.GetEval(conditionType, curQualityEquipCnt, conditionValue) + return ChEquip.GetEquipOrangeCount(curPlayer) ##强化 X件装备强化到X级 # @param curPlayer 玩家实例 @@ -4348,7 +4334,8 @@ value = int(curActionNode.GetAttribute("value")) curPlayerFreePoint = curPlayer.GetFreePoint() curPlayer.SetFreePoint(curPlayerFreePoint + value) - + # 更新开服活动灵根数据 + OpenServerCampaign.UpdOpenServerCampaignLingGenData(curPlayer) DataRecordPack.DR_Freepoint(curPlayer, "Event", value, {"MissionID":curMission.GetMissionID()}) return @@ -5027,7 +5014,8 @@ QuestCommon.SetPlayerMissionState(curPlayer, curMission, -1) curMission.SetDescriptionIndex(len(curMissionData.QuestDescriptionList) - 1) EventShell.NotifyOneMission(curPlayer, curMission, isNotifyAll=False) - + # 完成任务事件 (配合前端,在通知任务状态后再触发) + GameFuncComm.DoFuncOpenLogic(curPlayer, [missionID]) #删除这个任务 #第一个任务决定是否要触发OnEnter事件, 所以不能删除 if missionID != 1 and diff_event == 0: @@ -5173,12 +5161,12 @@ PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_DailyRunMission, addCnt) PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_TaskCRun, addCnt) PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TaskCRun, addCnt) - PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RunTask, addCnt) PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunTask, addCnt) PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunTask, addCnt) PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_RunTask, addCnt) PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_RunTask, 1) elif missionType == QuestCommon.Def_Mission_Type_RunFamily: + PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RunTask, addCnt) PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyRunMission, addCnt) PlayerFamily.AddFamilyActivity(curPlayer, ShareDefine.FamilyActive_Task, addCnt) else: @@ -5400,18 +5388,18 @@ expPoint = curMission.GetProperty(Def_Run_Around_Reward_ExpPoint) exp = expPoint * ChConfig.Def_PerPointValue + exp money = curMission.GetProperty(Def_Run_Around_Reward_Money) - + moneyDict = {} if exp != 0: playerControl.AddExp(exp) #PlayerControl.NotifyCode(curPlayer, 'GeRen_lhs_0', [exp]) - - addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Run"} - PlayerControl.GiveMoney(curPlayer, runAroundReward.MoneyType, money, ChConfig.Def_GiveMoney_Mission, addDataDict, False) - + if money: + addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Run"} + PlayerControl.GiveMoney(curPlayer, runAroundReward.MoneyType, money, ChConfig.Def_GiveMoney_Mission, addDataDict, False) + moneyDict[runAroundReward.MoneyType] = money familyHornor = curMission.GetProperty(Def_Run_Around_Reward_FamilyHornor) if familyHornor: PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, familyHornor, True, ShareDefine.Def_AddFAVReason_DoFamilyMisson, True) - + moneyDict[ShareDefine.TYPE_Price_Family_Contribution] = familyHornor item_id = curMission.GetProperty(Def_Day_Event_Reward_Item_Id) item_count = curMission.GetProperty(Def_Day_Event_Reward_Item_Count) @@ -5429,7 +5417,7 @@ GameWorld.DebugLog("任务:%d 获得经验:%d,钱=%s,物品ID=%s,物品数量=%s" % (curMission.GetMissionID(), exp, money, item_id, item_count)) - FBLogic.DoFB_OnFinishRunAroundTask(curPlayer, curMissionID, exp, {runAroundReward.MoneyType:money}, itemInfo) + FBLogic.DoFB_OnFinishRunAroundTask(curPlayer, curMissionID, exp, moneyDict, itemInfo) #触发OSS记录 if GameWorld.IsMissonDR(curPlayer): @@ -5979,18 +5967,20 @@ if questID != 0: curMission = curPlayer.FindMission(questID) classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classLV"), 0) - if not classLV: - return + equipMaxClasslv = IpyGameDataPY.GetFuncCfg('EquipMaxClasslv') + classlVList = [classLV] if classLV else range(1, equipMaxClasslv+1) + needPlusLV = GameWorld.ToIntDef(curActionNode.GetAttribute("plusLV"), 0) totalCnt = 0 equipPlaceList = ChConfig.Pack_EquipPart_CanPlusStar[IPY_GameWorld.rptEquip] for equipPlace in equipPlaceList: - ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace) - if not ipyData: - continue - partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, ipyData.GetGridIndex()) - if partStarLV >= needPlusLV: - totalCnt += 1 + for classLV in classlVList: + ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace) + if not ipyData: + continue + partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, ipyData.GetGridIndex()) + if partStarLV >= needPlusLV: + totalCnt += 1 curMission.SetProperty(key, totalCnt) return @@ -7075,6 +7065,61 @@ realmlv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) return curPlayer.GetOfficialRank() >= realmlv +##灵根品级是否达到X级 +# @param None +# @return None <Linggenqualitylv attrid="灵根ID" value="期望等级"/> +def ConditionType_Linggenqualitylv(curPlayer, curMission, curActionNode): + attrID = GameWorld.ToIntDef(curActionNode.GetAttribute("attrid"), 0) + qualityLV = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + funcDict = {ShareDefine.Def_Effect_Metal:lambda curObj:PlayerControl.GetMetalQualityLV(curObj), + ShareDefine.Def_Effect_Wood:lambda curObj:PlayerControl.GetWoodQualityLV(curObj), + ShareDefine.Def_Effect_Water:lambda curObj:PlayerControl.GetWaterQualityLV(curObj), + ShareDefine.Def_Effect_Fire:lambda curObj:PlayerControl.GetFireQualityLV(curObj), + ShareDefine.Def_Effect_Earth:lambda curObj:PlayerControl.GetEarthQualityLV(curObj), + } + curQualityLV = 0 + if attrID in funcDict: + curQualityLV = funcDict[attrID](curPlayer) + return curQualityLV >= qualityLV + + +##X条灵根品级达到X级 +# @param None +# @return None <Linggenqualitylvcnt qualitylv="品级" value="条数"/> +def ConditionType_Linggenqualitylvcnt(curPlayer, curMission, curActionNode): + qualityLV = GameWorld.ToIntDef(curActionNode.GetAttribute("qualitylv"), 0) + cnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + return GetLinggenQualitylvCnt(curPlayer, qualityLV) >= cnt + +##设置达到X品灵根数量 +# @param curPlayer 玩家实例 +# @param curMission 任务实例 +# @param curActionNode节点信息 +# @return 返回值无意义 +# @remarks <Set_Linggenqualitylvcnt key="" qualitylv="品级"/> +def DoType_Set_Linggenqualitylvcnt(curPlayer, curMission, curActionNode): + key = curActionNode.GetAttribute("key") + questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) + qualityLV = GameWorld.ToIntDef(curActionNode.GetAttribute("qualitylv"), 0) + if questID != 0: + curMission = curPlayer.FindMission(questID) + curMission.SetProperty(key, GetLinggenQualitylvCnt(curPlayer, qualityLV)) + return + +def GetLinggenQualitylvCnt(curPlayer, qualityLV): + # 获取达到X品的灵根数量 + funcDict = {ShareDefine.Def_Effect_Metal: lambda curObj: PlayerControl.GetMetalQualityLV(curObj), + ShareDefine.Def_Effect_Wood: lambda curObj: PlayerControl.GetWoodQualityLV(curObj), + ShareDefine.Def_Effect_Water: lambda curObj: PlayerControl.GetWaterQualityLV(curObj), + ShareDefine.Def_Effect_Fire: lambda curObj: PlayerControl.GetFireQualityLV(curObj), + ShareDefine.Def_Effect_Earth: lambda curObj: PlayerControl.GetEarthQualityLV(curObj), + } + curCnt = 0 + for attrID, func in funcDict.items(): + if func(curPlayer) >= qualityLV: + curCnt += 1 + return curCnt + ##X级通关X层娲皇遗迹 # @param None @@ -7092,25 +7137,33 @@ totallv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) return PlayerHorse.GetHorseSumLV(curPlayer) >= totallv -##已选择的专精技能数量是否达到 +##某主技能对应专精技能达到激活X等级的数量是否达到 # @param None -# @return None <Elementskillcnt value="cnt"/> +# @return None <Elementskillcnt value="cnt" mainskill="[]" activelv="" elementtype="专精类型"/> def ConditionType_Elementskillcnt(curPlayer, curMission, curActionNode): cnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) - return SkillShell.GetElementSkillCnt(curPlayer) >= cnt + mainskill = curActionNode.GetAttribute("mainskill") + mainSkillIDList = eval(mainskill) if mainskill else [] + activeLV = GameWorld.ToIntDef(curActionNode.GetAttribute("activelv"), 1) + elementType = GameWorld.ToIntDef(curActionNode.GetAttribute("elementtype"), 0) + return SkillShell.GetElementSkillCnt(curPlayer, mainSkillIDList, activeLV, elementType) >= cnt ##设置已选择的专精技能数量 # @param curPlayer 玩家实例 # @param curMission 任务实例 # @param curActionNode节点信息 # @return 返回值无意义 -# @remarks <Set_Elementskillcnt key="" /> +# @remarks <Set_Elementskillcnt key="" mainskill="[]" activelv="" elementtype="专精类型"/> def DoType_Set_Elementskillcnt(curPlayer, curMission, curActionNode): key = curActionNode.GetAttribute("key") questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) + mainskill = curActionNode.GetAttribute("mainskill") + mainSkillIDList = eval(mainskill) if mainskill else [] + activeLV = GameWorld.ToIntDef(curActionNode.GetAttribute("activelv"), 1) if questID != 0: curMission = curPlayer.FindMission(questID) - curMission.SetProperty(key, SkillShell.GetElementSkillCnt(curPlayer)) + elementType = GameWorld.ToIntDef(curActionNode.GetAttribute("elementtype"), 0) + curMission.SetProperty(key, SkillShell.GetElementSkillCnt(curPlayer, mainSkillIDList, activeLV, elementType)) return ##设置符合条件的已穿基础装备数量 @@ -7133,22 +7186,29 @@ curMission = curPlayer.FindMission(questID) curMission.SetProperty(key, haveCnt) return -def __GetBaseequipcnt(curPlayer, classLV, color, suiteIDList): +def __GetBaseequipcnt(curPlayer, classLV, color, suiteIDList, needCnt=0): + #classLV 为0代表任意阶 haveCnt = 0 + equipMaxClasslv = IpyGameDataPY.GetFuncCfg('EquipMaxClasslv') + classlVList = [classLV] if classLV else range(1, equipMaxClasslv+1) + equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) for place in ChConfig.EquipPlace_Base: - ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, place) - if not ipyData: - break - gridIndex = ipyData.GetGridIndex() - curEquip = equipPack.GetAt(gridIndex) - if not ItemCommon.CheckItemCanUse(curEquip): - continue - if curEquip.GetItemColor() < color: - continue - if suiteIDList and curEquip.GetSuiteID() not in suiteIDList: - continue - haveCnt += 1 + for classlv in classlVList: + ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classlv, place) + if not ipyData: + continue + gridIndex = ipyData.GetGridIndex() + curEquip = equipPack.GetAt(gridIndex) + if not ItemCommon.CheckItemCanUse(curEquip): + continue + if curEquip.GetItemColor() < color: + continue + if suiteIDList and curEquip.GetSuiteID() not in suiteIDList: + continue + haveCnt += 1 + if needCnt and haveCnt >= needCnt: + break return haveCnt ##判断符合条件的已穿基础装备数量 @@ -7160,7 +7220,7 @@ color = GameWorld.ToIntDef(curActionNode.GetAttribute("color"), 0) suite = curActionNode.GetAttribute("suite") suiteIDList = eval(suite) if suite else [] - haveCnt = __GetBaseequipcnt(curPlayer, classLV, color, suiteIDList) + haveCnt = __GetBaseequipcnt(curPlayer, classLV, color, suiteIDList, totalcnt) return haveCnt >= totalcnt ##法宝激活个数 @@ -7170,6 +7230,12 @@ totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) return PlayerMagicWeapon.GetMWActiveCntTotal(curPlayer) >= totalcnt +##总强化进化等级 +# @param None +# @return None <Totalplusevolvelv value="cnt"/> +def ConditionType_Totalplusevolvelv(curPlayer, curMission, curActionNode): + totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + return ChEquip.GetTotalPlusEvolveLV(curPlayer) >= totalcnt ##总强化等级 # @param None # @return None <Totalpluslv value="cnt"/> @@ -7182,18 +7248,18 @@ # @return None <Classlvpluslv classLV="" plusLV="" value="cnt"/> def ConditionType_Classlvpluslv(curPlayer, curMission, curActionNode): classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classLV"), 0) - if not classLV: - return + classLVList = [classLV] if classLV else xrange(1, IpyGameDataPY.GetFuncCfg('EquipMaxClasslv') + 1) needPlusLV = GameWorld.ToIntDef(curActionNode.GetAttribute("plusLV"), 0) totalCnt = 0 equipPlaceList = ChConfig.Pack_EquipPart_CanPlusStar[IPY_GameWorld.rptEquip] for equipPlace in equipPlaceList: - ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace) - if not ipyData: - continue - partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, ipyData.GetGridIndex()) - if partStarLV >= needPlusLV: - totalCnt += 1 + for classLV in classLVList: + ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace) + if not ipyData: + continue + partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, ipyData.GetGridIndex()) + if partStarLV >= needPlusLV: + totalCnt += 1 return totalCnt >= GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) ##装备总星级 @@ -7210,13 +7276,53 @@ totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) return Operate_EquipStone.GetTotalStoneLV(curPlayer) >= totalcnt +##已镶嵌X等级宝石数量 +# @param None +# @return None <Equipstonecnt value="cnt" stoneLV=""/> +def ConditionType_Equipstonecnt(curPlayer, curMission, curActionNode): + totalCnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + stoneLV = GameWorld.ToIntDef(curActionNode.GetAttribute("stoneLV"), 0) + return Operate_EquipStone.GetStoneCntByLV(curPlayer, stoneLV) >= totalCnt + +##设置已镶嵌X等级宝石数量 +# @param curPlayer 玩家实例 +# @param curMission 任务实例 +# @param curActionNode节点信息 +# @return 返回值无意义 +# @remarks <Set_Equipstonecnt key="" stoneLV="宝石等级"/> +def DoType_Set_Equipstonecnt(curPlayer, curMission, curActionNode): + key = curActionNode.GetAttribute("key") + questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) + stoneLV = GameWorld.ToIntDef(curActionNode.GetAttribute("stoneLV"), 1) + if questID != 0: + curMission = curPlayer.FindMission(questID) + curMission.SetProperty(key, Operate_EquipStone.GetStoneCntByLV(curPlayer, stoneLV)) + return + ##技能总等级 # @param None -# @return None <Totalskilllv value="" funcType=""/> +# @return None <Totalskilllv value="" funcType="" skilllv=""/> def ConditionType_Totalskilllv(curPlayer, curMission, curActionNode): totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) funcType = GameWorld.ToIntDef(curActionNode.GetAttribute("funcType"), 0) - return SkillShell.GetAllSkillLV(curPlayer, funcType) >= totalcnt + skilllv = GameWorld.ToIntDef(curActionNode.GetAttribute("skilllv"), 0) + return SkillShell.GetSkillCntByFunc(curPlayer, funcType, skilllv) >= totalcnt + +##设置已达到X等级的技能数量 +# @param curPlayer 玩家实例 +# @param curMission 任务实例 +# @param curActionNode节点信息 +# @return 返回值无意义 +# @remarks <Set_Skillcnt key="" funcType="" skilllv=""/> +def DoType_Set_Skillcnt(curPlayer, curMission, curActionNode): + key = curActionNode.GetAttribute("key") + funcType = GameWorld.ToIntDef(curActionNode.GetAttribute("funcType"), 0) + skilllv = GameWorld.ToIntDef(curActionNode.GetAttribute("skilllv"), 0) + questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) + if questID != 0: + curMission = curPlayer.FindMission(questID) + curMission.SetProperty(key, SkillShell.GetSkillCntByFunc(curPlayer, funcType, skilllv)) + return ##激活法宝,确认与成就逻辑后使用 # @param None @@ -7230,11 +7336,9 @@ def DoType_Visible(curPlayer, curMission, curActionNode): visible = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) if visible: - curPlayer.SetVisible(True) - curPlayer.SetSight(ChConfig.Def_PlayerSight_Default) + PlayerControl.SetPlayerSightLevel(curPlayer, 0) else: - curPlayer.SetVisible(False) - curPlayer.SetSight(0) + PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID()) return @@ -7252,6 +7356,7 @@ def DoType_Setfairydomain(curPlayer, curMission, curActionNode): + GameWorld.DebugLog("DoType_Setfairydomain", curPlayer.GetID()) ## 任务开启缥缈仙域 (做标记可寻访) <Setfairydomain/> if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainState): #若已在寻访中则先结束寻访 @@ -7259,4 +7364,87 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyDomainState, 2) PlayerFairyDomain.NotifyVisitFairyDomainInfo(curPlayer) - return \ No newline at end of file + return + +##神兵等级判断 +# @param None +# @return None <Godweaponlv value="lv" weapontype=""/> +def ConditionType_Godweaponlv(curPlayer, curMission, curActionNode): + lv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + weapontype = GameWorld.ToIntDef(curActionNode.GetAttribute("weapontype"), 0) + return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodWeaponLV % weapontype) >= lv + +##设置今日活跃度 +# @param curPlayer 玩家实例 +# @param curMission 任务实例 +# @param curActionNode节点信息 +# @return 返回值无意义 +# @remarks <Set_Dayactivity key=""/> +def DoType_Set_Dayactivity(curPlayer, curMission, curActionNode): + key = curActionNode.GetAttribute("key") + questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) + if questID != 0: + curMission = curPlayer.FindMission(questID) + curMission.SetProperty(key, curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Activity_TotalPoint, 0)) + return + +##今日活跃度判断 +# @param None +# @return None <Check_Dayactivity value="活跃度"/> +def ConditionType_Check_Dayactivity(curPlayer, curMission, curActionNode): + value = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Activity_TotalPoint, 0) >= value + + +##设置历史活跃度 +# @param curPlayer 玩家实例 +# @param curMission 任务实例 +# @param curActionNode节点信息 +# @return 返回值无意义 +# @remarks <Set_Historyactivity key=""/> +def DoType_Set_Historyactivity(curPlayer, curMission, curActionNode): + key = curActionNode.GetAttribute("key") + questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) + if questID != 0: + curMission = curPlayer.FindMission(questID) + curMission.SetProperty(key, curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityHistoryPoint, 0)) + return + +##历史活跃度判断 +# @param None +# @return None <Check_Historyactivity value="活跃度"/> +def ConditionType_Check_Historyactivity(curPlayer, curMission, curActionNode): + value = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityHistoryPoint, 0) >= value + +##设置仙宝寻主领奖进度 +# @param curPlayer 玩家实例 +# @param curMission 任务实例 +# @param curActionNode节点信息 +# @return 返回值无意义 +# @remarks <Set_Xbxz key="" mwid="法宝ID"/> +def DoType_Set_Xbxz(curPlayer, curMission, curActionNode): + key = curActionNode.GetAttribute("key") + questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) + mwID = GameWorld.ToIntDef(curActionNode.GetAttribute("mwid"), 0) + if questID != 0: + curMission = curPlayer.FindMission(questID) + curMission.SetProperty(key, PlayerMagicWeapon.GetXBXZAwardProgress(curPlayer, mwID)) + return + +##仙宝寻主进度判断 +# @param None +# @return None <Check_Xbxz value="数量" mwid="法宝ID"/> +def ConditionType_Check_Xbxz(curPlayer, curMission, curActionNode): + value = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + mwID = GameWorld.ToIntDef(curActionNode.GetAttribute("mwid"), 0) + return PlayerMagicWeapon.GetXBXZAwardProgress(curPlayer, mwID) >= value + +##商城表商品购买记录判断(只适用购买次数不重置的) +# @param None +# @return None <Check_Buyshopitem value="数量" index="商城表唯一ID"/> +def ConditionType_Check_Buyshopitem(curPlayer, curMission, curActionNode): + value = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + itemIndex = GameWorld.ToIntDef(curActionNode.GetAttribute("index"), 0) + curDayBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ShopItemDayBuyCnt % itemIndex) + return curDayBuyCnt >= value \ No newline at end of file -- Gitblit v1.8.0