From c114ff78fe7e5f8d86f2d073567a3a46e8e20197 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 02 八月 2021 16:51:09 +0800
Subject: [PATCH] 5151 【BT3】【BT2】【主干】全服红包- 系统定时发放的红包没有看到
---
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