From ae1453ccda3cf3facbf667283093dc02102ee002 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 21 一月 2026 14:53:47 +0800
Subject: [PATCH] 423 【内政】命格系统-服务端(命格卦玉额外属性条数由调整为由该卦玉最终的物品等级决定;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Dingjunge.py | 50 ++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 44 insertions(+), 6 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Dingjunge.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Dingjunge.py
index 069562e..ef0c07a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Dingjunge.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Dingjunge.py
@@ -24,6 +24,7 @@
import ItemControler
import IpyGameDataPY
import NetPackCommon
+import PlayerOnline
import ChConfig
# 自动选择排序优先级索引
@@ -49,6 +50,7 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGSelectEffect % sIndex, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGUnSelectCnt, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGEffAuto, 0) # 每日重置自动开关
+ RefreshDingjungeAttr(curPlayer)
SyncDingjungeInfo(curPlayer)
return
@@ -295,6 +297,7 @@
else:
if __doSelectEff(curPlayer, selectIndex, replaceHole):
__randSelectEff(curPlayer, isReset=True)
+ RefreshDingjungeAttr(curPlayer)
SyncDingjungeInfo(curPlayer)
return
@@ -326,6 +329,8 @@
# 自动选择后重置
for sIndex in range(randEffCnt):
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGSelectEffect % sIndex, 0)
+
+ RefreshDingjungeAttr(curPlayer)
return True
def __getUnlockEffHoleCnt(curPlayer):
@@ -340,17 +345,20 @@
def __randSelectEff(curPlayer, randEffCnt=0, isReset=False):
## 随机生成待选择加成效果
- unSelectCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DJGUnSelectCnt)
- if unSelectCnt <= 0:
- GameWorld.DebugLog("没有未处理的加成效果次数了")
- return
if not randEffCnt:
randEffCnt = IpyGameDataPY.GetFuncCfg("DingjungeEff", 3)
- effIDList = []
if isReset:
# 重置
for sIndex in range(randEffCnt):
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGSelectEffect % sIndex, 0)
+
+ unSelectCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DJGUnSelectCnt)
+ if unSelectCnt <= 0:
+ GameWorld.DebugLog("没有未处理的加成效果次数了")
+ return
+ effIDList = []
+ if isReset:
+ pass
else:
for sIndex in range(randEffCnt):
effID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DJGSelectEffect % sIndex)
@@ -358,7 +366,7 @@
break
effIDList.append(effID)
if effIDList:
- GameWorld.DebugLog("已存在未选择的加成效果等选择后再生成: effIDList=%s,unSelectCnt=%s" % (effIDList, unSelectCnt))
+ #GameWorld.DebugLog("已存在未选择的加成效果等选择后再生成: effIDList=%s,unSelectCnt=%s" % (effIDList, unSelectCnt))
return effIDList
fullLVEffIDList = [] # 已满级的效果ID列表
@@ -546,6 +554,36 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGEffect % replaceIndex, effInfo)
return True
+def RefreshDingjungeAttr(curPlayer):
+ CalcDingjungeAttr(curPlayer)
+ PlayerOnline.GetOnlinePlayer(curPlayer).RefreshRoleAttr(exclusiveMapID=ChConfig.Def_FBMapID_Dingjunge)
+ return
+
+def CalcDingjungeAttr(curPlayer):
+
+ playerID = curPlayer.GetPlayerID()
+ attrDict = {}
+
+ effHoleCnt = __getUnlockEffHoleCnt(curPlayer)
+ for eIndex in range(effHoleCnt):
+ effInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DJGEffect % eIndex)
+ if not effInfo:
+ continue
+ effID, effLV = effInfo / 100, effInfo % 100
+ effIpyData = IpyGameDataPY.GetIpyGameData("FBDJGEffect", effID)
+ if not effIpyData:
+ continue
+ attrID = effIpyData.GetAttrID()
+ attrValue = effIpyData.GetAttrValue()
+ attrValueTotal = attrValue * effLV
+ attrDict[attrID] = attrDict.get(attrID, 0) + attrValueTotal
+ #GameWorld.DebugLog("eIndex=%s,effID=%s,attrID=%s,attrValue=%s,effLV=%s,%s" % (eIndex, effID, attrID, attrValue, effLV, attrDict), playerID)
+
+ # 保存计算值
+ GameWorld.DebugLog("定军属性: %s" % attrDict, playerID)
+ PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcAttr(ChConfig.Def_CalcAttr_Dingjunge, attrDict)
+ return
+
def SyncDingjungeInfo(curPlayer):
clientPack = ChPyNetSendPack.tagSCDingjungeInfo()
clientPack.TodayPass = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DJGLineID)
--
Gitblit v1.8.0