From 8709eea88b2eaf09582f06290167b9a997c8fc3e Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 05 十二月 2018 15:24:21 +0800 Subject: [PATCH] 4879 【后端】【1.3.100】宗门试练新增扫荡 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py index 0edc709..5f44b87 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py @@ -335,7 +335,7 @@ return attrDict def GiveKillNPCDropPrize(curPlayer, mapID, npcCountDict, exp_rate=None, mailTypeKey=None, isMail=False, - extraItemList=[], prizeMultiple=1, dropItemMapInfo=[]): + extraItemList=[], prizeMultiple=1, dropItemMapInfo=[], curGrade=0): '''给玩家击杀NPC掉落奖励 @param mapID: 击杀的NPC所在地图ID,注意次地图并不一定是玩家当前地图 @param npcCountDict: 执行单次时所击杀的npc数量字典 {npcID:count, ...} @@ -375,7 +375,7 @@ # 掉落有概率因素,需多次执行 for dCount in xrange(1, totalCount + 1): isKillCountDropEquipEx = dCount == 1 # 同一只NPC一次处理中多次击杀的情况,只算一次附加装备处理 - dropInfo = GetNPCDropInfo(curPlayer, mapID, npcID, isKillCountDropEquipEx=isKillCountDropEquipEx) + dropInfo = GetNPCDropInfo(curPlayer, mapID, npcID, isKillCountDropEquipEx=isKillCountDropEquipEx, curGrade=curGrade) if not dropInfo: continue dropIDList, dropIDBindDict, dropMoneyCnt, moneyValue = dropInfo @@ -690,7 +690,7 @@ % (npcID, killCount, dropIDCountDict, dropIDBindDict, dropMoney), playerID) return dropIDCountDict, dropIDBindDict, dropMoney -def GetNPCDropInfo(dropPlayer, mapID, npcID, ownerPlayerList=[], ipyDrop=None, isSingle=True, isKillCountDropEquipEx=True): +def GetNPCDropInfo(dropPlayer, mapID, npcID, ownerPlayerList=[], ipyDrop=None, isSingle=True, isKillCountDropEquipEx=True, curGrade=0): '''获取NPC掉落信息, 击杀及扫荡通用,调用该函数获得掉落信息,然后再看掉落地板上还是直接放入背包 @param dropPlayer: 用于判断调用相关用的玩家示例,该玩家并不一定是击杀者,只是按一定规则设定的掉落判断依据的玩家 如队伍,取等级最大的玩家,该玩家并不一定是击杀者 @@ -782,7 +782,7 @@ indepRateDoCnt = ipyDrop.GetIndepRateDoCnt() if indepRateDoCnt: indepRateDoCnt = __GetNPCDropDoCountChange(indepRateDoCnt, doCountRate + equipDropDoCountPlus, doCountAdd) - dropEquipInfoList += __GetNPCIndepRateEquipDrop(ipyDrop, indepRateDoCnt, equipDropRatePlus) + dropEquipInfoList += __GetNPCIndepRateEquipDrop(ipyDrop, indepRateDoCnt, equipDropRatePlus, curGrade) #GameWorld.DebugLog("阶,颜色,部位集合key,dropEquipInfoList=%s" % (dropEquipInfoList)) placeDict = IpyGameDataPY.GetFuncCfg("EquipDropPartSets", 1) @@ -878,7 +878,7 @@ fbGradeColorStarRateDict = IpyGameDataPY.GetFuncEvalCfg("FBGradeEquipDropRate", 2) # 评级影响品质星级概率 {npcID:{(颜色,星级):[D级影响概率, ..., S级影响概率], ...}, ...} if npcID in fbGradeColorStarRateDict: gradeColorStarRateDict = fbGradeColorStarRateDict[npcID] - curGrade = GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Def_FB_Grade) + curGrade = curGrade if curGrade else GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Def_FB_Grade) colorDropCntDict = {} # 装备颜色已经掉落数 {颜色:数量, ...} colorMaxDropCntDict = ipyDrop.GetIndepRateMaxDropCount() # {颜色:上限数量,...} @@ -953,7 +953,7 @@ fbGradePriItemIDDropDict = IpyGameDataPY.GetFuncEvalCfg("FBGradeEquipDropRate", 3) if npcID in fbGradePriItemIDDropDict: gradePriItemIDDropDict = fbGradePriItemIDDropDict[npcID] - curGrade = GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Def_FB_Grade) + curGrade = curGrade if curGrade else GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Def_FB_Grade) priDropInfoList = gradePriItemIDDropDict.get(curGrade, []) priDropIDList = [] for priItemID, priItemCount in priDropInfoList: @@ -1335,7 +1335,7 @@ #GameWorld.DebugLog("饼图装备掉落结果: doCnt=%s, %s" % (doCnt, dropEquipInfoList)) return dropEquipInfoList -def __GetNPCIndepRateEquipDrop(ipyDrop, doCnt, equipDropPlus): +def __GetNPCIndepRateEquipDrop(ipyDrop, doCnt, equipDropPlus, curGrade=0): ## 获取NPC独立掉率装备掉落信息 npcID = ipyDrop.GetNPCID() indepRateDict = ipyDrop.GetIndepRateDrop() # {(阶,颜色,部位集合key):概率,...} @@ -1346,7 +1346,7 @@ fbGradeColorRateDict = IpyGameDataPY.GetFuncEvalCfg("FBGradeEquipDropRate", 1) #{npcID:{颜色:[D级影响概率, ..., S级影响概率], ...}, ...} if npcID in fbGradeColorRateDict: gradeColorRateDict = fbGradeColorRateDict[npcID] - curGrade = GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Def_FB_Grade) + curGrade = curGrade if curGrade else GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Def_FB_Grade) #colorDropCntDict = {} # 装备颜色已经掉落数 {颜色:数量, ...} dropEquipInfoList = [] -- Gitblit v1.8.0