From c48c06a3e9465bd2a4dda0cf8d8e3a5a6bc6eedd Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 08 十一月 2018 14:06:42 +0800 Subject: [PATCH] 4623 【1.2】【后端】全局击杀掉落支持数量配置 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 26 +++++++++++++------------- 1 files changed, 13 insertions(+), 13 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 374823e..d38537a 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py @@ -1227,17 +1227,17 @@ GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "GlobalDropRate", msgInfo, len(msgInfo)) # 4. 指定全服击杀次数必掉,算额外掉落 - globalKillDropDict = IpyGameDataPY.GetFuncEvalCfg("GlobalDropCD", 2) # {NPCID:{击杀次数:[是否本职业, [物品ID, ...], [随机物品ID, ...]]}, ...} + globalKillDropDict = IpyGameDataPY.GetFuncEvalCfg("GlobalDropCD", 2) # {NPCID:{击杀次数:[是否本职业, {物品ID:个数, ...}, [[随机物品ID,个数], ...]]}, ...} if npcID in globalKillDropDict: killCountDropDict = globalKillDropDict[npcID] updNPCKilledCount = min(gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_NPCKilledCount % npcID) + 1, ShareDefine.Def_UpperLimit_DWord) - GameWorld.DebugLog("更新全服击杀次数: %s" % updNPCKilledCount) + GameWorld.Log("更新全服击杀次数:npcID=%s, %s" % (npcID, updNPCKilledCount)) # 通知GameServer记录 msgInfo = str([npcID, updNPCKilledCount]) GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "GlobalKillCount", msgInfo, len(msgInfo)) if updNPCKilledCount in killCountDropDict: - isJobLimit, itemIDList, randItemIDList = killCountDropDict[updNPCKilledCount] - for itemID in itemIDList: + isJobLimit, itemIDCountDict, randItemIDCountList = killCountDropDict[updNPCKilledCount] + for itemID, itemCount in itemIDCountDict.items(): if isJobLimit: itemData = GameWorld.GetGameData().GetItemByTypeID(itemID) if not itemData: @@ -1247,12 +1247,12 @@ # 非本职业可用,不掉落 GameWorld.DebugLog("全服击杀次数必掉,非本职业可用,不掉落! itemID=%s" % itemID) continue - dropItemIDList.append(itemID) - GameWorld.DebugLog("全服击杀次数必掉物品: itemID=%s" % itemID) - if randItemIDList: + dropItemIDList += [itemID] * itemCount + GameWorld.Log("全服击杀次数必掉物品: itemID=%s,itemCount=%s" % (itemID, itemCount)) + if randItemIDCountList: if isJobLimit: randJobItemList = [] - for rItemID in randItemIDList: + for rItemID, rItemCount in randItemIDCountList: itemData = GameWorld.GetGameData().GetItemByTypeID(rItemID) if not itemData: continue @@ -1261,12 +1261,12 @@ # 非本职业可用,不掉落 GameWorld.DebugLog("全服击杀次数必掉随机,非本职业可用,不掉落! rItemID=%s" % rItemID) continue - randJobItemList.append(rItemID) - randItemID = random.choice(randJobItemList) + randJobItemList.append([rItemID, rItemCount]) + randItemID, randItemCount = random.choice(randJobItemList) else: - randItemID = random.choice(randItemIDList) - dropItemIDList.append(randItemID) - GameWorld.DebugLog("全服击杀次数必掉随机物品: randItemID=%s" % randItemID) + randItemID, randItemCount = random.choice(randItemIDCountList) + dropItemIDList += [randItemID] * randItemCount + GameWorld.Log("全服击杀次数必掉随机物品: randItemID=%s,randItemCount=%s" % (randItemID, randItemCount)) return dropItemIDList -- Gitblit v1.8.0