From 37e044190ad9c4cd98e3ecc42762379676bd6c23 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期一, 15 四月 2019 11:44:18 +0800 Subject: [PATCH] 6515 【测试】【主干】新增游戏警报邮件 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py | 509 +++++++++++++++++++++++++------------------------------ 1 files changed, 232 insertions(+), 277 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 b5ad849..13bf2af 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 @@ -37,7 +37,6 @@ import QuestCommon import SkillShell import GameLogInfo -import PlayerReincarnation import PlayerMissionCollect import PlayerFamily import ShareDefine @@ -49,19 +48,18 @@ import ChEquip import PlayerActivity import PlayerSuccess -import EventReport -#import PlayerCostVIP -import GameFuncComm import IpyGameDataPY -import ShopItemManage import PlayerPet import PlayerArrestTask import PlayerMagicWeapon import PlayerBossReborn import PlayerFairyCeremony +import PlayerNewFairyCeremony +import PlayerWeekParty +import PlayerFairyDomain +import PlayerActLogin import PlayerHorse import FBCommon -import PyGameData import math import time @@ -92,7 +90,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倍 @@ -1221,7 +1219,7 @@ def __RunAnswerAction(curPlayer, curMission, answersNode): actionsNode = __FindAnswerActionNode(curPlayer, curMission, answersNode) if actionsNode == None or actionsNode.IsEmpty(): - GameWorld.Log('__RunAnswerAction找不到回答节点') + GameWorld.DebugLog('__RunAnswerAction找不到回答节点--%s'%curMission.GetMissionID()) return __DoAnswerActionNode(curPlayer, curMission, actionsNode) @@ -1276,7 +1274,7 @@ #特殊清空处理, 如果没有任务, state为0 curValue = 0 elif tagMission == None: - GameWorld.Log("没有目标任务 %s" % conditionID , curPlayer.GetPlayerID()) + GameWorld.DebugLog("没有目标任务 %s" % conditionID , curPlayer.GetPlayerID()) return else: curValue = QuestRunnerValue.GetValue(curPlayer, tagMission, conditionName) @@ -1362,6 +1360,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 玩家实例 @@ -2490,7 +2504,7 @@ equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) for equipIndex in range(0, equipPack.GetCount()): #备用装备栏不处理 - if equipIndex not in ChConfig.Type_Equip_CanTake : + if equipIndex not in ShareDefine.RoleEquipType: continue curEquip = equipPack.GetAt(equipIndex) if curEquip.IsEmpty(): @@ -2515,7 +2529,7 @@ totalPlusLV = 0 for packType, equipPartIndexList in ChConfig.Pack_EquipPart_CanPlusStar.items(): for i in equipPartIndexList: - partStarLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, i) + partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, i) totalPlusLV += partStarLV @@ -2526,7 +2540,7 @@ # equipPartIndexList = ChConfig.Pack_EquipPart_CanPlusStar.get(IPY_GameWorld.rptEquip, []) # for i in equipPartIndexList: # #统计全身强化等级 -# partStarLV = ChEquip.GetEquipPartStarLV(curPlayer, IPY_GameWorld.rptEquip, i) +# partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, i) # if partStarLV >= star: # partCnt +=1 #GameWorld.Log('star=%s,conditionValue=%s,partCnt=%s,%s'%(star,conditionValue,partCnt,QuestRunnerValue.GetEval(conditionType, partCnt, conditionValue))) @@ -2573,42 +2587,6 @@ return False return petPack.GetCount() > 0 return PlayerPet.GetPetDataItemByNPCID(curPlayer, checkPetID) != None - -def ConditionType_Is_Buy_Tehuiitem(curPlayer, curMission, curConditionNode): - # 判断是否购买过特惠商店物品 - # <Is_Buy_Tehuiitem shopID="1007" itemShopIndex="0,1,2"/> shopID暂定需指定商店ID, itemShopIndex可指定多个索引, 中间英文逗号隔开 - shopID = GameWorld.ToIntDef(curConditionNode.GetAttribute("shopID"), 0) - if not shopID: - return False - indexList = [] - indexInfo = curConditionNode.GetAttribute("itemShopIndex") - if indexInfo != '': - indexList = eval('[' + indexInfo + ']') - if not indexList: - shopItemList = ShopItemManage.GetShopItemList(shopID) - indexList = range(len(shopItemList)) - if not indexList: - GameWorld.DebugLog("需指定判断的特惠商店物品索引编号!indexInfo=%s" % indexInfo) - return False - for i in indexList: - buyCnt = ShopItemManage.__GetPlayerShopItemBuyCnt(curPlayer, shopID, i) - if buyCnt > 0: - return True - return False - -##竞技场是否达到多少名 -# @param curPlayer 玩家实例 -# @param curMission 任务实例 -# @param curConditionNode 节点信息 -# @return 返回值, 是否判断成功 -# @remarks <Check_Jjcorder type="类型" value="值"/> -def ConditionType_Check_Jjcorder(curPlayer, curMission, curConditionNode): - conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0) - conditionType = curConditionNode.GetAttribute("type") - maxOrder = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_HistoryMaxOrder, 0, - ChConfig.Def_PDictType_Default) - - return QuestRunnerValue.GetEval(conditionType, maxOrder, conditionValue) #--------------------------------------------------------------------- ##执行 扣除玩家镖车押金 @@ -2820,10 +2798,10 @@ # @param bind 绑定 # @param packList 背包索引 # @return 背包索引,-1表示没有可放的背包 -def GetCanPutInPackIndex(curPlayer, itemID, itemCount, bind, packList): +def GetCanPutInPackIndex(curPlayer, itemID, itemCount, bind, packList, isAuctionItem=False): itemControl = ItemControler.PlayerItemControler(curPlayer) for index in packList: - if not itemControl.CanPutInItem(index, itemID, itemCount, bind): + if not itemControl.CanPutInItem(index, itemID, itemCount, isAuctionItem): continue return index @@ -2847,22 +2825,22 @@ itemStarLV=0, bind=False, property=None, 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 + equipIndex= -1, isGreat=0, baseAttrRate=ShareDefine.Def_MaxRateValue, greatAttrList=[], isAuctionItem=False): +# if PlayerFamily.DoAddFamilyBossFoodEx(curPlayer, itemID, itemCount, ShareDefine.Def_AddFAVReason_DoFamilyMisson): +# #仙盟兽粮自动使用 +# return #任务给予物品应该只能放入万能背包和背包 itemControl = ItemControler.PlayerItemControler(curPlayer) #获得可放入的背包索引 - packIndex = GetCanPutInPackIndex(curPlayer, itemID, itemCount, bind, packList) + packIndex = GetCanPutInPackIndex(curPlayer, itemID, itemCount, bind, packList, isAuctionItem) if packIndex == -1: return #设置物品属性 - curSingleItem = CreatMissionItem(itemID, itemStarLV, addAttrLV, isSuite, bind, - isLucky, skillBoostEff, itemCount, holeCount, isGreat, baseAttrRate, greatAttrList) + curSingleItem = CreatMissionItem(curPlayer, itemID, itemStarLV, addAttrLV, isSuite, bind, + isLucky, skillBoostEff, itemCount, holeCount, isGreat, baseAttrRate, greatAttrList, isAuctionItem=isAuctionItem) if not curSingleItem: return @@ -2881,15 +2859,15 @@ if equipIndex == 0: GameWorld.ErrLog("任务赠送装备位置错误 equipIndex=-1") return - - if ItemCommon.CheckHasEquip(curPlayer, IPY_GameWorld.rptEquip, equipIndex): + equipPackIndex = ItemCommon.GetEquipPackIndex(curSingleItem) + if ItemCommon.CheckHasEquip(curPlayer, IPY_GameWorld.rptEquip, equipPackIndex): #物品已存在直接给背包 if not itemControl.PutInItem(IPY_GameWorld.rptItem, curSingleItem, event=["AddEventItem", False, {'MissionID':missionID}]): GameWorld.Log('###任务 = %s给予物品异常, %s, %s' % (missionID, itemID, itemCount), curPlayer.GetPlayerID()) curSingleItem.Clear() return else: - ChEquip.DoPlayerEquipItem(curPlayer, curSingleItem, equipIndex, 0) + ChEquip.DoPlayerEquipItem(curPlayer, curSingleItem,equipPackIndex, 0) #ObtainRes01 <n>获得</n><Info Type="Item" Name="Name" ID="{%S1%}"/><n>×</n><n>{%S2%}!</n> elif not itemControl.PutInItem(packIndex, curSingleItem, event=["AddEventItem", False, {'MissionID':missionID}]): @@ -2911,26 +2889,23 @@ # @param itemCount: 物品数量 # @param baseAttrRate: 任务创建的物品默认的基础属性随机值为10000 # @return None -def CreatMissionItem(itemID, starLV=0, addAttrLV=0, isSuite=False, bind=False, +def CreatMissionItem(curPlayer, itemID, starLV=0, addAttrLV=0, isSuite=False, bind=False, isLucky=0, skillBoostEff=[], itemCount=1, holeCount=0, - isGreat=0, baseAttrRate=ShareDefine.Def_MaxRateValue, greatAttrList=[]): + isGreat=0, baseAttrRate=ShareDefine.Def_MaxRateValue, greatAttrList=[], isAuctionItem=False): - curSingleItem = ItemControler.GetOutPutItemObj(itemID) + curSingleItem = ItemControler.GetOutPutItemObj(itemID, itemCount, isAuctionItem, curPlayer=curPlayer) if not curSingleItem: GameWorld.Log('###创造任务物品失败, itemID = %s' % (itemID)) return - tmpEquipData = ItemControler.SingleEquipTmpData() - tmpEquipData.starLV = starLV - tmpEquipData.holeCnt = holeCount - tmpEquipData.isSuite = isSuite - tmpEquipData.isBind = bind + #tmpEquipData = ItemControler.SingleEquipTmpData() + #tmpEquipData.starLV = starLV + #tmpEquipData.holeCnt = holeCount + #tmpEquipData.isSuite = isSuite + #tmpEquipData.isBind = bind - ChItem.EquipAddAdditionEx(curSingleItem, tmpEquipData) - - #设置数量 - ItemControler.SetItemCount(curSingleItem, itemCount) + #ChItem.EquipAddAdditionEx(curSingleItem, tmpEquipData) return curSingleItem @@ -3715,7 +3690,7 @@ # @param curMission 任务实例 # @param curActionNode节点信息 # @return 返回值无意义 -# @remarks <Add_Item id="物品ID" count="物品数量" starLV="星级" bind="是否绑定" +# @remarks <Add_Item id="物品ID" count="物品数量" starLV="星级" bind="是否绑定" isAuctionItem="是否拍品" # packtype="1,2背包索引" equipIndex="装备位置" suite="是否套装化" addAttrLV="追加等级",isLucky="是否有幸运" # skillBoostEff="[技能效果增强索引, 值]", holeCount="孔数" isGreat="1" baseAttrRate="可强化的装备基础属性随机加强比例默认10000" # greatAttr="[卓越属性列表]" /> @@ -3736,10 +3711,13 @@ itemStarLV = GameWorld.ToIntDef(curActionNode.GetAttribute("starLV"), 0) #物品是否绑定 - bind = True if curActionNode.GetAttribute("bind") else False - + bind = True if GameWorld.ToIntDef(curActionNode.GetAttribute("bind")) else False + #物品是否套装化 isSuite = True if curActionNode.GetAttribute("suite") else False + + #是否拍品 + isAuctionItem = GameWorld.ToIntDef(curActionNode.GetAttribute("isAuctionItem"), 0) #追加 addAttrLV = GameWorld.ToIntDef(curActionNode.GetAttribute("addAttrLV"), 0) @@ -3767,7 +3745,7 @@ baseAttrRate = GameWorld.ToIntDef(curActionNode.GetAttribute("baseAttrRate"), ShareDefine.Def_MaxRateValue) AddEventItem(curPlayer, curMission, curItemID, curItemCount, None, itemStarLV, bind, False, packTypeList, isSuite, addAttrLV, isLucky, - skillBoostEff, holeCount, equipIndex, isGreat, baseAttrRate, greatAttrList) + skillBoostEff, holeCount, equipIndex, isGreat, baseAttrRate, greatAttrList, isAuctionItem=isAuctionItem) #--------------------------------------------------------------------- @@ -3806,7 +3784,7 @@ # @param curMission 任务实例 # @param curActionNode节点信息 # @return 返回值无意义 -# @remarks <Drop_Item id="物品ID" count="物品数量" starLV="星级" bind="是否绑定" +# @remarks <Drop_Item id="物品ID" count="物品数量" starLV="星级" bind="是否绑定" isAuctionItem="是否拍品" # suite="是否套装化" addAttrLV="追加等级",isLucky="是否有幸运" # skillBoostEff="[技能效果增强索引, 值]", holeCount="孔数", isGreat="1", effIndex="1" , dropDist="掉落范围默认3" # aroundPlayer="1" baseAttrRate="可强化的装备基础属性随机加强比例默认10000" greatAttr="[卓越属性列表]" /> @@ -3826,6 +3804,8 @@ isSuite = GameWorld.ToIntDef((curActionNode.GetAttribute("suite")), 0) bind = GameWorld.ToIntDef((curActionNode.GetAttribute("bind")), 1) + + isAuctionItem = GameWorld.ToIntDef((curActionNode.GetAttribute("isAuctionItem")), 0) #追加 addAttrLV = GameWorld.ToIntDef(curActionNode.GetAttribute("addAttrLV"), 0) @@ -3851,14 +3831,14 @@ baseAttrRate = GameWorld.ToIntDef(curActionNode.GetAttribute("baseAttrRate"), ShareDefine.Def_MaxRateValue) #设置物品属性 - curItem = CreatMissionItem(curItemID, starLV, addAttrLV, isSuite, bind, - isLucky, skillBoostEff, count, holeCount, isGreat, baseAttrRate, greatAttrList) + curItem = CreatMissionItem(curPlayer, curItemID, starLV, addAttrLV, isSuite, bind, + isLucky, skillBoostEff, count, holeCount, isGreat, baseAttrRate, greatAttrList, isAuctionItem=isAuctionItem) if not curItem: GameWorld.Log('###创建地上物品异常,无此ID物品 = %s' % (curItemID)) return - if curActionNode.GetAttribute("aroundPlayer") == "1": + if curActionNode.GetAttribute("aroundPlayer") == "1" or not curNPC: posX, posY = curPlayer.GetPosX(), curPlayer.GetPosY() else: posX, posY = curNPC.GetPosX(), curNPC.GetPosY() @@ -4347,61 +4327,8 @@ curPlayer.SetFreePoint(curPlayerFreePoint + value) DataRecordPack.DR_Freepoint(curPlayer, "Event", value, {"MissionID":curMission.GetMissionID()}) - + return -#--------------------------------------------------------------------- -#=============================================================================== -# PlayerJob_Warrior, # 剑士, -# PlayerJob_Wizard, # 魔法师, -# PlayerJob_Assassin, # 弓箭手, -# PlayerJob_Chaplain, # 魔剑士, -# PlayerJob_Knight, # 骑士 -# PlayerJob_ForceUser,# 魔导师 -# PlayerJob_BowMaster,# 圣射手 -#=============================================================================== -##玩家转职业 -# @param curPlayer 玩家实例 -# @param curMission 任务实例 -# @param curActionNode节点信息 -# @return 返回值无意义 <Change_Job checkLV="150" changeJob="4"> -def DoType_Change_Job(curPlayer, curMission, curActionNode): - playerID = curPlayer.GetID() - - checkLV = GameWorld.ToIntDef(curActionNode.GetAttribute("checkLV"), 0) - if not checkLV: - GameWorld.Log("change job error! checkLV=%s" % checkLV, playerID) - return - - curLV = curPlayer.GetLV() - if curLV < checkLV: - GameWorld.Log("change job error! checkLV=%s curlv=%s" % (checkLV, curLV), playerID) - return - - changeJob = GameWorld.ToIntDef(curActionNode.GetAttribute("changeJob"), 0) - #验证职业 - if not changeJob: - GameWorld.Log("change job error! changeJob=%s" % changeJob, playerID) - return - - #curJob = curPlayer.GetJob() - - #计算点数, 恢复等级差的点数 - #addPointDict = ReadChConfig.GetEvalChConfig('lvUp_Point') - - #addPoint = (curLV - checkLV)*(addPointDict.get(changeJob) - addPointDict.get(curJob)) - - #设置玩家可加属性点 - #curPlayer.SetFreePoint(curPlayer.GetFreePoint() + addPoint) - #DataRecordPack.DR_Freepoint(curPlayer, "ChangeJob", addPoint, {"job":changeJob}) - - #设置职业 - curPlayer.SetJob(changeJob) - - playerControl = PlayerControl.PlayerControl(curPlayer) - playerControl.RefreshAllState() - - PlayerReincarnation.DoPlayerReincarnation(curPlayer) - return True #--------------------------------------------------------------------- ##删除物品 @@ -4809,7 +4736,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 +4801,7 @@ # @return 无 # @remarks 跑环任务结束处理,删除或者随机下一个 def __RunAroundMission(curPlayer, missionID, curMissionData, curActionNode): + GameWorld.Log("__RunAroundMission----%s"%missionID, curPlayer.GetID()) #任务完成,触发随机跑环 run_event = GameWorld.ToIntDef(curActionNode.GetAttribute("run_around"), 0) firstMissionID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) @@ -4910,8 +4838,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 +4888,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) @@ -5216,14 +5145,21 @@ def OnAroundMissionFinish(curPlayer, missionType, addCnt=1): #跑环任务id列表 # 活跃度 + GameWorld.Log(' 跑环完成触发活跃度 missionType=%s'%missionType, curPlayer.GetPlayerID()) if missionType == QuestCommon.Def_Mission_Type_RunDaily: 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: PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyRunMission, addCnt) PlayerFamily.AddFamilyActivity(curPlayer, ShareDefine.FamilyActive_Task, addCnt) + else: + GameWorld.Log(' 跑环完成触发活跃度异常 missionType=%s'%missionType, curPlayer.GetPlayerID()) return @@ -5266,66 +5202,6 @@ for lvInfo in runAroundReward.Rewards: if curRewardLV >= lvInfo[0] and curRewardLV <= lvInfo[1]: return runAroundReward.Rewards[lvInfo] - - return - - -##转生后跑环奖励处理 -# @param curPlayer 玩家实例 -# @param curMission 任务实例 -# @return 返回值无意义 -# @remarks 转生后跑环奖励处理 -def __ReinAddRunAroundReward(curPlayer, curMission): - runAroundReward = FindQuestFunc(curMission.GetMissionID()).RunAroundReward - - lvReward = GetRunAroundReward(curPlayer, runAroundReward, rewardLV=0, isMaxLV=True) - if not lvReward: - GameWorld.Log("转生跑环奖励错误 id = %d" % curMission.GetMissionID() , curPlayer.GetPlayerID()) - return - - #金钱奖励最大等级 - if lvReward.Money != 0: - curMission.SetProperty(Def_Run_Around_Reward_Money, lvReward.Money) - -#--------------------------------------------------------------------- -##转生后每日任务新增奖励 -# @param curPlayer 玩家实例 -# @param curMission 任务实例 -# @param curActionNode节点信息 -# @return 返回值无意义 -# @remarks <Reincarnation_Add_Reward /> -def DoType_Reincarnation_Add_Reward(curPlayer, curMission, curActionNode): - #没转生不处理 - curReinLV = curPlayer.GetReincarnationLv() - if curReinLV < 1: - return - - dayEventReward = FindQuestFunc(curMission.GetMissionID()).DayEventReward - - if dayEventReward == None: - GameWorld.Log("转生奖励错误 id = %d" % curMission.GetMissionID() , curPlayer.GetPlayerID()) - return - - curRewardLV = dayEventReward.MaxLV - familyLV = curPlayer.GetFamilyLV() - - #当前等级任务奖励结构体 - curLVDayEventReward = dayEventReward.Rewards[curRewardLV] - - #金钱奖励最大等级 - if curLVDayEventReward.Money != 0: - curMission.SetProperty(Def_Day_Event_Reward_Money, curLVDayEventReward.Money) - - #家族活跃最大等级 - if curLVDayEventReward.PlayerFamilyActiveValue != 0: - curMission.SetProperty(Def_Day_Event_Reward_Player_Family_ActiveValue, (curLVDayEventReward.PlayerFamilyActiveValue) * familyLV) - - #镖车压金最大等级 - if curLVDayEventReward.TruckMoney != 0: - curMission.SetProperty(Def_Day_Event_Reward_Truck_Money, curLVDayEventReward.TruckMoney) - - #转生后跑环奖励处理 - __ReinAddRunAroundReward(curPlayer, curMission) return @@ -5383,7 +5259,6 @@ randStarList = eval(ReadChConfig.GetChConfig('RunAround_Star')) aroundStar = GameWorld.GetResultByRandomList(randStarList, 1) - #vipStar = PlayerCostVIP.GetRoundStar(curPlayer) vipStar = 0 if vipStar > 0: aroundStar = vipStar @@ -5417,6 +5292,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, curPlayer.GetID()) idNameStr = curActionNode.GetAttribute("id_name") if curMission and idNameStr != "": questID = GameWorld.ToIntDef(curMission.GetProperty(idNameStr), 0) @@ -5425,16 +5302,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 +5318,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 +5348,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,14 +5383,24 @@ 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) #给物品奖励 itemInfo = [] if item_id and item_count: - AddEventItem(curPlayer, curMission, item_id, item_count, bind=True) itemInfo = [[item_id, item_count, True]] + packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, 1) + if 1 > packSpace: + PlayerControl.NotifyCode(curPlayer, "UnionTask_Reward") + PlayerControl.SendMailByKey("UnionTaskReward", [curPlayer.GetID()], itemInfo) + else: + AddEventItem(curPlayer, curMission, item_id, item_count, bind=True) + GameWorld.DebugLog("任务:%d 获得经验:%d,钱=%s,物品ID=%s,物品数量=%s" % (curMission.GetMissionID(), exp, money, item_id, item_count)) @@ -5850,6 +5738,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 +5936,66 @@ # @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_Pluslvpartcnt key="" id="" classLV="" plusLV=""/> +def DoType_Set_Pluslvpartcnt(curPlayer, curMission, curActionNode): + key = curActionNode.GetAttribute("key") + questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) + if questID != 0: + curMission = curPlayer.FindMission(questID) + classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classLV"), 0) + if not classLV: + return + 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 + + curMission.SetProperty(key, totalCnt) + 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_调度器 @@ -6421,6 +6370,18 @@ conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0) return PlayerMagicWeapon.GetIsActiveMagicWeapon(curPlayer, mwid, conditionValue) +##判断魔族法宝通关关卡 +# @param curPlayer 玩家实例 +# @param curMission 任务实例 +# @param curConditionNode节点信息 +# @return 返回值, 是否通过检查 +# @remarks <Check_Magicweapon_Passfblv" mwid="法宝ID" value="期望值" /> +def ConditionType_Check_Magicweapon_Passfblv(curPlayer, curMission, curConditionNode): + mwid = GameWorld.ToIntDef(curConditionNode.GetAttribute("mwid"), 0) + conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0) + fbpasslv = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MWFBPassLevel % mwid) + return fbpasslv >= conditionValue + #--------------------------------------------------------------------- ##是否拥有足够的竞技点 # @param curPlayer 玩家实例 @@ -6553,52 +6514,6 @@ __NPCAllowResetWorldPos(curPlayer, mapID, bornX, bornY, False) return - - - -#--------------------------------------------------------------------- -##执行玩家转生 -# @param curPlayer 玩家实例 -# @param curMission 任务实例 -# @param curActionNode节点信息 -# @return 返回值无意义 -# @remarks <Player_Reincarnation /> -def DoType_Player_Reincarnation(curPlayer, curMission, curActionNode): - PlayerReincarnation.DoPlayerReincarnation(curPlayer) - return - -#--------------------------------------------------------------------- -##判断玩家是否转生 -# @param curPlayer 玩家实例 -# @param curMission 任务实例 -# @param curConditionNode节点信息 -# @return 返回值, 是否通过检查 -# @remarks <Player_Is_Reincarnation result="期望的结果" /> -def ConditionType_Player_Is_Reincarnation(curPlayer, curMission, curConditionNode): - #<Player_Is_Reincarnation result=""> 0:没转,1:有转 - result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0) - #转生等级 - curReinLV = curPlayer.GetReincarnationLv() - if curReinLV > 0: - return True == result - else: - return False == result - - return - -##判断玩家转生数 -# @param curPlayer 玩家实例 -# @param curMission 任务实例 -# @param curConditionNode节点信息 -# @return 返回值, 是否通过检查 -# @remarks <Player_Reincarnation result="期望的结果" /> -def ConditionType_Player_Reincarnation(curPlayer, curMission, curConditionNode): - #<Player_Reincarnation result="1"> # 玩家是否1转 - result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0) - #转生等级 - curReinLV = curPlayer.GetReincarnationLv() - return curReinLV == result - #--------------------------------------------------------------------- ##给予玩家技能 @@ -7135,12 +7050,6 @@ realmlv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) return curPlayer.GetOfficialRank() >= realmlv -##法宝之魂是否激活 -# @param None -# @return None <Mwsoul value="id"/> -def ConditionType_Mwsoul(curPlayer, curMission, curActionNode): - soulID = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) - return bool(PlayerMagicWeapon.GetIsActiveMWSoul(curPlayer, soulID)) ##X级通关X层娲皇遗迹 # @param None @@ -7158,22 +7067,47 @@ totallv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) return PlayerHorse.GetHorseSumLV(curPlayer) >= totallv -##2阶强化防具套装件数 -# @param None -# @return None <Suitplus value="cnt"/> -def ConditionType_Suitplus(curPlayer, curMission, curActionNode): - needCnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) - - equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType') - groupCnt = 0 #2阶强化防具套装件数 - for groupType, equipIndexList in equipSuitTypeDict.items(): - for i in equipIndexList: - suiteInfo = ChEquip.GetSuiteInfoByPlace(curPlayer, i) - for suiteType, lv in suiteInfo.items(): - 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 + +##判断某阶强化等级达到X的件数是否达到 +# @param None +# @return None <Classlvpluslv classLV="" plusLV="" value="cnt"/> +def ConditionType_Classlvpluslv(curPlayer, curMission, curActionNode): + classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classLV"), 0) + if not classLV: + return + 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 + return totalCnt >= GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0) + +##装备总星级 +# @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 @@ -7181,8 +7115,6 @@ def DoType_Active_Magicweapon(curPlayer, curMission, curActionNode): mwID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0) PlayerMagicWeapon.DoActiveMW(curPlayer, mwID) - PlayerMagicWeapon.NotifyMagicWeapon(curPlayer) - return ## 人物隐身 <Visible id="0隐身1现身"/> @@ -7194,4 +7126,27 @@ else: curPlayer.SetVisible(False) curPlayer.SetSight(0) + 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 + + +def DoType_Setfairydomain(curPlayer, curMission, curActionNode): + ## 任务开启缥缈仙域 (做标记可寻访) <Setfairydomain/> + if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainState): + #若已在寻访中则不可设置 + return + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyDomainState, 2) + PlayerFairyDomain.NotifyVisitFairyDomainInfo(curPlayer) return \ No newline at end of file -- Gitblit v1.8.0