From 572c67c78f4c34dbda4b44b365c14cb4b2d9c68d Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 20 十二月 2018 16:41:43 +0800 Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(封包) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py | 137 ++++++++++++++++++++++++++++++++++++++------- 1 files changed, 115 insertions(+), 22 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 0c3ecdd..19a85bd 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 @@ -92,7 +92,7 @@ Def_Run_Around_Reward_Exp = "run_around_exp" #跑环任务的奖励 Def_Run_Around_Reward_ExpPoint = "run_around_exp_point" #跑环任务的奖励 Def_Run_Around_Reward_Money = "run_around_money" #跑环任务的给钱 - +Def_Run_Around_Reward_FamilyHornor = "run_around_familyhornor" #跑环任务的仙盟贡献奖励 Def_Run_Around_Reward_Multiple = "run_around_multiple" #跑环任务的奖励翻倍数 Def_Task_Reward_Per = "reward_per" #领取任务奖励倍数百分比; 150代表1.5倍 @@ -1362,6 +1362,22 @@ value = 1 return QuestRunnerValue.GetEval(conditionType, value, conditionValue) +##判断是否穿戴某部位(非时效) +# @param curPlayer 玩家实例 +# @param curMission 任务实例 +# @param curConditionNode 节点信息 +# @return 返回值, 是否判断成功 +# @remarks <have_equip value="装备位"/> +def ConditionType_Have_Equip(curPlayer, curMission, curConditionNode): + equipPlace = int(curConditionNode.GetAttribute("value")) + roleEquipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) + curEquip = roleEquipPack.GetAt(equipPlace) + if curEquip.IsEmpty(): + return False + if curEquip.GetEndureReduceType(): + return False + return True + #--------------------------------------------------------------------- ##增加家族相关值 # @param curPlayer 玩家实例 @@ -2848,9 +2864,9 @@ packList=[IPY_GameWorld.rptItem], isSuite=False, addAttrLV=0, isLucky=False, skillBoostEff=[], holeCount=0, equipIndex= -1, isGreat=0, baseAttrRate=ShareDefine.Def_MaxRateValue, greatAttrList=[]): - if PlayerFamily.DoAddFamilyBossFoodEx(curPlayer, itemID, itemCount, ShareDefine.Def_AddFAVReason_DoFamilyMisson): - #仙盟兽粮自动使用 - return +# if PlayerFamily.DoAddFamilyBossFoodEx(curPlayer, itemID, itemCount, ShareDefine.Def_AddFAVReason_DoFamilyMisson): +# #仙盟兽粮自动使用 +# return #任务给予物品应该只能放入万能背包和背包 itemControl = ItemControler.PlayerItemControler(curPlayer) @@ -4809,7 +4825,7 @@ mission_1.SetProperty(Def_Around_AllCount, allCount) EventShell.EventRespons_RunTaskAllCnt(curPlayer, curMissionData.Type, allCount) - GameWorld.DebugLog("删除任务allCount %s, RUNCOUNT=%s" % (allCount, RUNCOUNT)) + GameWorld.Log("删除任务allCount %s, RUNCOUNT=%s" % (allCount, RUNCOUNT)) if allCount < RUNCOUNT: @@ -4874,6 +4890,7 @@ # @return 无 # @remarks 跑环任务结束处理,删除或者随机下一个 def __RunAroundMission(curPlayer, missionID, curMissionData, curActionNode): + GameWorld.Log("__RunAroundMission----%s"%missionID) #任务完成,触发随机跑环 run_event = GameWorld.ToIntDef(curActionNode.GetAttribute("run_around"), 0) firstMissionID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) @@ -4910,8 +4927,9 @@ #总跑环次数已满,不可再做 - if run_event == Def_Run_Around_Over_1 and allCount >= RUNCOUNT: - return + if run_event == Def_Run_Around_Over_1: + if allCount >= RUNCOUNT or aroundCount >= AROUNDCOUNT: + return nextMissionID = 0 nextMission = None @@ -4959,9 +4977,9 @@ if curMissionData.Type == QuestCommon.Def_Mission_Type_RunFamily: PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TaskFRun, 1) - if allCount < RUNCOUNT: - nextMissionID = __OverRandRunAround(curPlayer, curMissionData) - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskNextMissionID % curMissionData.Type, nextMissionID) +# if allCount < RUNCOUNT: +# nextMissionID = __OverRandRunAround(curPlayer, curMissionData) +# PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskNextMissionID % curMissionData.Type, nextMissionID) @@ -5417,6 +5435,8 @@ # @return 返回值无意义 # @remarks 设置跑环任务奖励 <set_run_around_reward multiple="指定倍数" id_name="任务ID存储key" /> def DoType_Set_Run_Around_Reward(curPlayer, curMission, curActionNode): + curMissionID = curMission.GetMissionID() + GameWorld.Log("DoType_Set_Run_Around_Reward---%s"%curMissionID) idNameStr = curActionNode.GetAttribute("id_name") if curMission and idNameStr != "": questID = GameWorld.ToIntDef(curMission.GetProperty(idNameStr), 0) @@ -5425,16 +5445,15 @@ if curMission == None: curMission = QuestCommon.AddNewMission(curPlayer, questID) - curMissionID = curMission.GetMissionID() curMissionData = FindQuestFunc(curMissionID) if not curMissionData: return rewardList = __GetRunAroundReward(curPlayer, curMission) if rewardList: - curExp, curMoney, itemID, itemCount = rewardList + curExp, curMoney, curFamilyHornor, itemID, itemCount = rewardList else: - curExp, curMoney, itemID, itemCount = 0, 0, 0, 0 + curExp, curMoney, curFamilyHornor, itemID, itemCount = 0, 0, 0, 0 curMission.SetProperty(Def_Run_Around_Reward_Exp, curExp % ChConfig.Def_PerPointValue) curMission.SetProperty(Def_Run_Around_Reward_ExpPoint, curExp / ChConfig.Def_PerPointValue) @@ -5442,6 +5461,8 @@ curMission.SetProperty(Def_Day_Event_Reward_Item_Id, itemID) curMission.SetProperty(Def_Day_Event_Reward_Item_Count, itemCount) + curMission.SetProperty(Def_Run_Around_Reward_FamilyHornor, curFamilyHornor) + return @@ -5470,14 +5491,14 @@ curExp = eval(IpyGameDataPY.GetFuncCfg('RunTaskExp')) curExp += curLVRunAroundReward.AddExp curMoney = baseMoney - + curFamilyHornor = curLVRunAroundReward.PlayerFamilyHornor itemInfo = curLVRunAroundReward.Item if itemInfo: itemID, itemCount = eval(itemInfo) else: itemID, itemCount = 0, 0 - return (curExp, curMoney, itemID, itemCount) + return (curExp, curMoney, curFamilyHornor, itemID, itemCount) #--------------------------------------------------------------------- ##给予跑环奖励 @@ -5505,6 +5526,10 @@ addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Run"} PlayerControl.GiveMoney(curPlayer, runAroundReward.MoneyType, money, ChConfig.Def_GiveMoney_Mission, addDataDict, False) + familyHornor = curMission.GetProperty(Def_Run_Around_Reward_FamilyHornor) + if familyHornor: + PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, familyHornor, True, ShareDefine.Def_AddFAVReason_DoFamilyMisson, True) + item_id = curMission.GetProperty(Def_Day_Event_Reward_Item_Id) item_count = curMission.GetProperty(Def_Day_Event_Reward_Item_Count) @@ -5850,6 +5875,11 @@ #记录副本对应的任务ID if FBCommon.GetRecordMapID(mapID) in [ChConfig.Def_FBMapID_ClearDevil, ChConfig.Def_FBMapID_MagicWeapon]: PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqFBMissionID, curMission.GetMissionID()) + missionID = curMission.GetMissionID() + curMissionData = FindQuestFunc(missionID) + if curMissionData: + missionType = curMissionData.Type + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqFBMissionType, missionType) return #--------------------------------------------------------------------- @@ -6043,10 +6073,38 @@ # @remarks <Set_Horsetotallv key="" /> def DoType_Set_Horsetotallv(curPlayer, curMission, curActionNode): key = curActionNode.GetAttribute("key") - questID = GameWorld.ToIntDef(curMission.GetProperty("id"), 0) + questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) if questID != 0: curMission = curPlayer.FindMission(questID) curMission.SetProperty(key, PlayerHorse.GetHorseSumLV(curPlayer)) + return + +##设置强化总等级 +# @param curPlayer 玩家实例 +# @param curMission 任务实例 +# @param curActionNode节点信息 +# @return 返回值无意义 +# @remarks <Set_Totalpluslv key="" /> +def DoType_Set_Totalpluslv(curPlayer, curMission, curActionNode): + key = curActionNode.GetAttribute("key") + questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) + if questID != 0: + curMission = curPlayer.FindMission(questID) + curMission.SetProperty(key, ChEquip.GetTotalPlusLV(curPlayer, False)) + return + +##设置装备总星级 +# @param curPlayer 玩家实例 +# @param curMission 任务实例 +# @param curActionNode节点信息 +# @return 返回值无意义 +# @remarks <Set_Equiptotalstar key="" /> +def DoType_Set_Equiptotalstar(curPlayer, curMission, curActionNode): + key = curActionNode.GetAttribute("key") + questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) + if questID != 0: + curMission = curPlayer.FindMission(questID) + curMission.SetProperty(key, ChEquip.GetTotalEquipStars(curPlayer)) return #--------------------------------------------------------------------- ##DoType_调度器 @@ -7142,14 +7200,14 @@ soulID = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) return bool(PlayerMagicWeapon.GetIsActiveMWSoul(curPlayer, soulID)) -##S级通关X层娲皇遗迹 +##X级通关X层娲皇遗迹 # @param None -# @return None <Passqueenrelecs value="lineID"/> +# @return None <Passqueenrelecs value="lineID" grade="grade"/> def ConditionType_Passqueenrelecs(curPlayer, curMission, curActionNode): lineID = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) grade = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [ChConfig.Def_FBMapID_QueenRelics]) - maxGrade = len(FBCommon.GetFBLineGrade(ChConfig.Def_FBMapID_QueenRelics, lineID)) - return grade >=maxGrade + needGrade = GameWorld.ToIntDef(curActionNode.GetAttribute("grade"), 0) + return grade >=needGrade ##坐骑总等级 # @param None @@ -7170,10 +7228,30 @@ for i in equipIndexList: suiteInfo = ChEquip.GetSuiteInfoByPlace(curPlayer, i) for suiteType, lv in suiteInfo.items(): - if lv >= 2 and groupType == 1 and suiteType == 2: + if lv >= 2 and int(groupType) == 1 and suiteType == 2: groupCnt +=1 return groupCnt >= needCnt +##法宝激活个数 +# @param None +# @return None <Mwcnt value="cnt"/> +def ConditionType_Mwcnt(curPlayer, curMission, curActionNode): + totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + return PlayerMagicWeapon.GetMWActiveCntTotal(curPlayer) >= totalcnt + +##总强化等级 +# @param None +# @return None <Totalpluslv value="cnt"/> +def ConditionType_Totalpluslv(curPlayer, curMission, curActionNode): + totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + return ChEquip.GetTotalPlusLV(curPlayer, False) >= totalcnt + +##装备总星级 +# @param None +# @return None <Equiptotalstar value="cnt"/> +def ConditionType_Equiptotalstar(curPlayer, curMission, curActionNode): + totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + return ChEquip.GetTotalEquipStars(curPlayer) >= totalcnt ##激活法宝,确认与成就逻辑后使用 # @param None @@ -7194,4 +7272,19 @@ else: curPlayer.SetVisible(False) curPlayer.SetSight(0) - return \ No newline at end of file + return + + +# 被动技能孔 +def DoType_Open_Skill_Slots(curPlayer, curMission, curActionNode): + # 开孔 + slotIndex = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + mission_1 = QuestCommon.GetCommonMission(curPlayer) + if not mission_1: + return + + mission_1.SetProperty("OpenSkillSlots", pow(2, slotIndex)|mission_1.GetProperty("OpenSkillSlots")) + + return + + -- Gitblit v1.8.0