From 8425301e40c12eb29f934960723e8e1e675bb41e Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 19 九月 2023 17:39:50 +0800 Subject: [PATCH] 9939 【BT0.1】【主干】装备升星修改(装备分解支持按品质及是否套装给固定物品) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEquipDecompose.py | 41 +++++++++++++++++++++++++++-------------- 1 files changed, 27 insertions(+), 14 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEquipDecompose.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEquipDecompose.py index f2bfcf5..d07852a 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEquipDecompose.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEquipDecompose.py @@ -75,7 +75,7 @@ def EatItems(curPlayer, eatIndexList, eatItemIDList, isAuto=False): if len(eatIndexList) != len(eatItemIDList): return 0, 0 - drDelItemList, totalAddExp, delAllCnt = __GetCanEatItemInfo(curPlayer, eatIndexList, eatItemIDList) + drDelItemList, totalAddExp, delAllCnt, giveItemIDDict = __GetCanEatItemInfo(curPlayer, eatIndexList, eatItemIDList) if not totalAddExp: GameWorld.DebugLog(" 装备吸收 没有可吞噬物品!") return 0, 0 @@ -109,7 +109,7 @@ minCnt = cnt minItemID = itemid - giveItemIDDict = {} + #giveItemIDDict = {} for _ in xrange(giveCnt): itmeID = GameWorld.GetResultByRandomList(awardRateList) if not itmeID: @@ -118,17 +118,18 @@ itmeID = minItemID giveItemIDDict[itmeID] = giveItemIDDict.get(itmeID, 0) + 1 - if giveItemIDDict: - for giveItemID, itemCnt in giveItemIDDict.items(): - jsonItemList.append(ItemCommon.GetJsonItem([giveItemID,itemCnt,1])) - needSpace = len(giveItemIDDict) - packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace) - if packSpace < needSpace: - prizeItemList = [[giveItemID, itemCnt, 1] for giveItemID, itemCnt in giveItemIDDict.items()] - PlayerControl.SendMailByKey("DefaultLackSpace", [curPlayer.GetPlayerID()], prizeItemList) - else: - for giveItemID, itemCnt in giveItemIDDict.items(): - ItemControler.GivePlayerItem(curPlayer, giveItemID, itemCnt, 0, [IPY_GameWorld.rptItem]) + + if giveItemIDDict: + for giveItemID, itemCnt in giveItemIDDict.items(): + jsonItemList.append(ItemCommon.GetJsonItem([giveItemID,itemCnt,1])) + needSpace = len(giveItemIDDict) + packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace) + if packSpace < needSpace: + prizeItemList = [[giveItemID, itemCnt, 1] for giveItemID, itemCnt in giveItemIDDict.items()] + PlayerControl.SendMailByKey("DefaultLackSpace", [curPlayer.GetPlayerID()], prizeItemList) + else: + for giveItemID, itemCnt in giveItemIDDict.items(): + ItemControler.GivePlayerItem(curPlayer, giveItemID, itemCnt, 0, [IPY_GameWorld.rptItem]) #同步客户端 Sync_EDLVInfo(curPlayer, jsonItemList) @@ -150,6 +151,9 @@ eatItemList = [] totalAddExp = 0 allitemCnt = 0 + awardItemDict = {} + eatEquipAwardDict = IpyGameDataPY.GetFuncEvalCfg('EquipDecomposeAward', 4, {}) + eatEquipAwardDictSuite = IpyGameDataPY.GetFuncEvalCfg('EquipDecomposeAward', 5, {}) petEatItemAddExpPer = PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_EatItem) itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem) for i, index in enumerate(expIndexList): @@ -173,6 +177,15 @@ GameWorld.DebugLog(" tagPetEatEquip.txt,未配置该物品! eatItemID=%s, EquipColor=%s,EquipClass=%s" % (eatItemID, itemColor, itemClass)) continue baseExp = ipyData.GetExp() + + equipAwardDict = eatEquipAwardDictSuite if eatItem.GetSuiteID() else eatEquipAwardDict + if str(itemColor) in equipAwardDict: + awardItemList = equipAwardDict[str(itemColor)] + for awardID, awardCount in awardItemList: + awardItemDict[awardID] = awardItemDict.get(awardID, 0) + awardCount + GameWorld.DebugLog("分解装备额外奖励: eatEquip=%s,itemColor=%s,suiteID=%s,awardItemList=%s total:%s" + % (eatItem.GetItemTypeID(), itemColor, eatItem.GetSuiteID(), awardItemList, awardItemDict)) + else: GameWorld.ErrLog(' 不可分解的道具index=%s eatItemID=%s'%(index, eatItemID)) continue @@ -192,7 +205,7 @@ totalAddExp += totalAddExp * petEatItemAddExpPer / ChConfig.Def_MaxRateValue PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_DecomposeEquip, allitemCnt) - return eatItemList, totalAddExp, allitemCnt + return eatItemList, totalAddExp, allitemCnt, awardItemDict ##获取吞噬结果 -- Gitblit v1.8.0