From f5dde47094e426c534c219d784efdb93cc8ac1fb Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期三, 03 四月 2019 17:34:17 +0800 Subject: [PATCH] 6446 【后端】增加所有已激活坐骑的攻击和生命百分比的效果值 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGatherSoul.py | 52 +++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 43 insertions(+), 9 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGatherSoul.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGatherSoul.py index bb09766..45152c8 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGatherSoul.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGatherSoul.py @@ -27,6 +27,7 @@ import IpyGameDataPY import FormulaControl import DataRecordPack +import PlayerSuccess g_GatherSoulLVExpDict = {} #经验缓存 g_gatherSoulLVAttrDict = {} #属性缓存 @@ -67,9 +68,9 @@ exp = eval(IpyGameDataPY.GetFuncCompileCfg('GatherSoulLevelUp')) g_GatherSoulLVExpDict[lv] = exp - qualityPerDict = IpyGameDataPY.GetFuncEvalCfg('GatherSoulLevelUp', 2, {}) - if itemColor in qualityPerDict: - exp *= float(qualityPerDict[itemColor]) + qualityPerDict = IpyGameDataPY.GetFuncEvalCfg('GatherSoulLevelUp', 2, {}).get(str(itemData.GetType()), {}) + if str(itemColor) in qualityPerDict: + exp *= float(qualityPerDict[str(itemColor)]) attrTypeCnt = len(ipyData.GetAttrType()) specialPer = IpyGameDataPY.GetFuncEvalCfg('GatherSoulLevelUp', 3, {}).get(attrTypeCnt, 1) @@ -77,7 +78,7 @@ soulGrade = ipyData.GetSoulGrade() exp *= float(IpyGameDataPY.GetFuncEvalCfg('GatherSoulLevelUp', 5, {}).get(soulGrade, 1)) - return exp + return int(exp) ## 获取聚魂属性数值 @@ -221,6 +222,7 @@ RefreshGatherSoulAttr(curPlayer) PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState() Sync_GatherSoulHoleInfo(curPlayer) + DoGatherSoulSuccessLogic(curPlayer) return True @@ -280,7 +282,7 @@ RefreshGatherSoulAttr(curPlayer) PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState() Sync_GatherSoulHoleInfo(curPlayer) - + DoGatherSoulSuccessLogic(curPlayer) GameWorld.DebugLog("聚魂升级!placeType=%s,placeIndex=%s,GatherSoulData=%s,updGatherSoulData=%s" % (placeType, placeIndex, GatherSoulData, updGatherSoulData), playerID) return @@ -343,6 +345,8 @@ totalSoulDust += soulDust delPlaceDict[place] = [GatherSoulData, soulidList, int(soulDust), soulSplinters, soulCore] + if not delPlaceDict: + return if delPlaceDict: ItemCommon.DelVPackItem(curPlayer, packIndex, delPlaceDict.keys(), ChConfig.ItemDel_GatherSoul) addDataDict = {"delPlaceDict":delPlaceDict, "isAuto":isAuto} @@ -369,11 +373,14 @@ for itemID, itemCnt in giveMaterialDict.items(): ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [ShareDefine.rptGatherSoul]) GameWorld.DebugLog("聚魂分解: isAuto=%s,PlaceIndexList=%s, delPlaceDict=%s, giveMaterialDict=%s" % (isAuto, placeList, delPlaceDict, giveMaterialDict)) + if not isAuto: + curPlayer.Sync_MakeItemAnswer(ShareDefine.Def_mitGatherSoulDecompose, 1) return -def __GetGatherSoulSplitMaterial(gathersoulID, soulidList=[], soulSplinters=0, soulCore=0): +def __GetGatherSoulSplitMaterial(gathersoulID): ##拆解多属性聚魂 返回单属性聚魂ID,材料 + soulidList, soulSplinters, soulCore= [], 0, 0 compoundIpyData = IpyGameDataPY.GetIpyGameDataNotLog('GatherSoulCompound', gathersoulID) if compoundIpyData: materialList = compoundIpyData.GetNeedItem() @@ -413,16 +420,18 @@ materialsIDList = [] materialsLVDict = {} - indexList1 = [] #背包的聚魂索引 - indexList2 = [] #孔索引 + indexList1, dataList1 = [], [] #背包的聚魂索引 + indexList2, dataList2 = [], [] #孔索引 for i, placeType in enumerate(packList): index = indexList[i] if placeType == 0: GatherSoulData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_VPackItem % (ShareDefine.rptGatherSoul, index)) # 聚魂背包中的值 indexList1.append(index) + dataList1.append(GatherSoulData) else: GatherSoulData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GatherSoulHoleData % (index), 0) indexList2.append(index) + dataList2.append(GatherSoulData) if not GatherSoulData: continue GatherSoulItemID = ItemControler.GetGatherSoulItemID(GatherSoulData) @@ -486,18 +495,43 @@ RefreshGatherSoulAttr(curPlayer) PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState() #返还多余魂尘 + totalPoint = int(totalPoint) if totalPoint > 0: PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_SoulDust, totalPoint) #给新物品 curItem = ItemControler.GetOutPutItemObj(tagItemID) curItem.SetUserAttr(ShareDefine.Def_IudetGatherSoulLV, tagItemLV) PlayerItemControler = ItemControler.PlayerItemControler(curPlayer) - PlayerItemControler.PutInItem(ShareDefine.rptGatherSoul, curItem, event=[ChConfig.ItemGive_ItemCompound, False, {'indexList1':indexList1, 'indexList2':indexList2, 'soulDust':totalPoint}]) + PlayerItemControler.PutInItem(ShareDefine.rptGatherSoul, curItem, event=[ChConfig.ItemGive_ItemCompound, False, {'indexList1':dataList1, 'indexList2':dataList2, 'soulDust':totalPoint}]) GameWorld.DebugLog(' 聚魂合成 成功') curPlayer.Sync_MakeItemAnswer(ShareDefine.Def_mitGatherSoulCompound, 1) return +def DoGatherSoulSuccessLogic(curPlayer): + #聚魂成就处理 + #清掉#镶嵌X枚X品质聚魂的成就信息 + PlayerSuccess.ResetSuccessByType(curPlayer, ShareDefine.SuccType_InlayGatherSoul) + totalLV = 0 + GatherSoulUnlockDict = IpyGameDataPY.GetFuncEvalCfg("GatherSoulHole", 1, {}) + maxGatherSoulHole = len(GatherSoulUnlockDict) + for holeNum in xrange(maxGatherSoulHole): + GatherSoulData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GatherSoulHoleData % holeNum, 0) + if not GatherSoulData: + continue + GatherSoulItemID = ItemControler.GetGatherSoulItemID(GatherSoulData) + itemData = GameWorld.GetGameData().GetItemByTypeID(GatherSoulItemID) + if not itemData: + continue +# if itemData.GetType() == ChConfig.Def_ItemType_GatherSoulCore: +# continue + itemColor = itemData.GetItemColor() + GatherSoulItemPlusLV = ItemControler.GetGatherSoulItemPlusLV(GatherSoulData) + 1 #客户端1开始 + totalLV += GatherSoulItemPlusLV + PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_InlayGatherSoul, 1, [itemColor]) + PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_GatherSoulLvUp, totalLV) + return + def RefreshGatherSoulAttr(curPlayer): allAttrList = [{} for _ in range(4)] GatherSoulUnlockDict = IpyGameDataPY.GetFuncEvalCfg("GatherSoulHole", 1, {}) -- Gitblit v1.8.0