From 750ff5ee6204bb088713b0ce10d53d05f22679e0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 16 一月 2026 19:32:27 +0800
Subject: [PATCH] 438 【方案】方案预设-服务端
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMingge.py | 62 +++++++++++++++++++++++++++----
1 files changed, 54 insertions(+), 8 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMingge.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMingge.py
index ffbfad7..d07c99b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMingge.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMingge.py
@@ -16,6 +16,7 @@
#-------------------------------------------------------------------------------
import GameWorld
+import PlayerPreset
import PlayerControl
import ItemControler
import IpyGameDataPY
@@ -246,9 +247,8 @@
isAutoDec = clientData.AutoDec
GameWorld.DebugLog("命格装备替换: mgNum=%s,itemIndex=%s,isAutoDec=%s" % (mgNum, itemIndex, isAutoDec), playerID)
- openNum = IpyGameDataPY.GetFuncCfg("MinggeCfg", 1)
- if mgNum < 1 or mgNum > openNum:
- GameWorld.DebugLog("命格套编号不支持! mgNum=%s" % mgNum, playerID)
+ if not PlayerPreset.GetFuncPresetIDState(curPlayer, mgNum, ShareDefine.FuncPreset_Mingge):
+ GameWorld.DebugLog("命格套方案未解锁! mgNum=%s" % mgNum, playerID)
return
mgTuiyanPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptMGTuiyan)
@@ -291,7 +291,7 @@
__doDecomposeMingge(curPlayer, [itemIndex])
# 刷属性
- RefreshMinggeAttr(curPlayer)
+ RefreshMinggeAttr(curPlayer, mgNum)
return
#// B2 53 命格祈灵#tagCSMinggeQiling
@@ -338,12 +338,58 @@
Sync_MinggeInfo(curPlayer)
return
-def RefreshMinggeAttr(curPlayer):
- #CalcMinggeAttr(curPlayer)
- PlayerOnline.GetOnlinePlayer(curPlayer).RefreshRoleAttr()
+def RefreshMinggeAttr(curPlayer, mgNum=0):
+ CalcMinggeAttr(curPlayer, mgNum)
+ PlayerOnline.GetOnlinePlayer(curPlayer).RefreshByFuncPreset(ShareDefine.FuncPreset_Mingge, mgNum)
return
-def CalcMinggeAttr(curPlayer):
+def GetMGNumPackIndexList(mgNum):
+ mgCnt = len(ChConfig.Def_MGGuayuType)
+ startIndex = (mgNum - 1) * mgCnt
+ endIndex = startIndex + mgCnt
+ return range(startIndex, endIndex)
+
+def CalcMinggeAttr(curPlayer, mgNum=0):
+
+ playerID = curPlayer.GetPlayerID()
+ funcPresetType = ShareDefine.FuncPreset_Mingge
+ if not mgNum:
+ ipyDataList = IpyGameDataPY.GetIpyGameDataList("PresetUnlock", funcPresetType)
+ mgPresetIDList = range(1, 1 + len(ipyDataList)) if ipyDataList else []
+ else:
+ mgPresetIDList = [mgNum]
+
+ olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
+ equipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptMGGuayu)
+ for mgPresetID in mgPresetIDList:
+
+ attrDict, skillLVDict = {}, {}
+ if not PlayerPreset.GetFuncPresetIDState(curPlayer, mgPresetID, funcPresetType):
+ olPlayer.SetCalcAttr(ChConfig.Def_CalcAttr_Mingge, attrDict, skillLVDict, presetID=mgPresetID)
+ continue
+
+ for index in GetMGNumPackIndexList(mgPresetID):
+ if index < 0 or index >= equipPack.GetCount():
+ continue
+ curEquip = equipPack.GetAt(index)
+ if not curEquip or curEquip.IsEmpty():
+ continue
+
+ legendAttrIDCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
+ legendAttrValueCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
+ for i in xrange(min(legendAttrIDCnt, legendAttrValueCnt)):
+ attrID = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, i)
+ attrValue = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i)
+ attrDict[attrID] = attrDict.get(attrID, 0) + attrValue
+
+ for i in xrange(curEquip.GetUserAttrCount(ShareDefine.Def_IudetAddSkillID)):
+ skillID = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetAddSkillID, i)
+ if skillID:
+ skillLVDict[skillID] = skillLVDict.get(skillID, 0) + 1
+
+ GameWorld.DebugLog("命格属性: %s,skillLVDict=%s,mgPresetID=%s" % (attrDict, skillLVDict, mgPresetID), playerID)
+ olPlayer.SetCalcAttr(ChConfig.Def_CalcAttr_Mingge, attrDict, skillLVDict, presetID=mgPresetID)
+
return
def Sync_MinggeInfo(curPlayer):
--
Gitblit v1.8.0