From 46f1b3554ca7c3eeea118aaf80fe756bebdfde93 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 09 二月 2026 13:46:54 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(修复武将修改皮肤战斗时不生效bug;Hero命令增加切换皮肤;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py | 41 ++++++++++++++++++++++++++++-------------
1 files changed, 28 insertions(+), 13 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
index f1f1396..fc590a6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
@@ -29,16 +29,18 @@
import GameLogic_Dingjunge
import PlayerMingge
import PlayerBeauty
-import PlayerFamily
import PlayerHorse
import PlayerGubao
import PlayerHero
import PlayerHJG
import GameWorld
+import ChPlayer
import ChConfig
import ChEquip
import time
+
+g_calcDetail = 0
class LineupHero():
## 阵容武将,注意:同一个武将在不同阵容中可能属性不一样
@@ -78,6 +80,10 @@
if not isReload: # 非重读阵容的视为变更
self.isHeroChange = True
reloadEffHeroCard(curPlayer, self) # 更新武将阵容强制重刷生效卡牌
+ return
+
+ def OnSwitch(self):
+ self.isHeroChange = True
return
def IsHeroItemIn(self, itemIndex): return itemIndex in self.heroItemDict
@@ -359,8 +365,6 @@
effCardAddPerAft = heroPreset.GetEffCardAddPer()
- if effCardAddPerBef == effCardAddPerAft:
- continue
heroPresetID = heroPreset.heroPresetID
GameWorld.DebugLog("武将物品变化影响: itemIndex=%s,heroPresetID=%s,effCardAddPerBef=%s,effCardAddPerAft=%s"
% (itemIndex, heroPresetID, effCardAddPerBef, effCardAddPerAft), self.playerID)
@@ -776,9 +780,9 @@
skinID = 0
skinIDList = heroIpyData.GetSkinIDList()
if skinIndex < 0 or skinIndex >= len(skinIDList):
- skinID = skinIDList[skinIndex]
- elif skinIDList:
skinID = skinIDList[0]
+ elif skinIDList:
+ skinID = skinIDList[skinIndex]
lineupHero = presetLineup.GetLineupHero(posNum)
#if False:
@@ -1081,13 +1085,27 @@
"starTalentValue":starTalentValue, "starTalentPer":starTalentPer, "breakLVValue":breakLVValue, "breakLVPer":breakLVPer,
"awakeTalentValue":awakeTalentValue, "awakeTalentPer":awakeTalentPer,
}
-
+ #testDict = {'lineupHaloPer': 0.1, 'minggeValue': 43685, 'heroLVValue': 836851, 'cardPer': 72.276, 'realmValue': 9878456, 'fetterPer': 0.15, 'horseValue': 5040, 'equipValue': 18381400, 'inheritPer': 1.4, 'lvValue': 53600}
+ #testDict = {'inheritPer': 1, 'minggeValue': 905, 'equipValue': 796}
+ #for k in attrParamDict.keys():
+ # v = testDict.get(k, 0)
+ # exec("%s = %s" % (k, v))
+ # attrParamDict[k] = v
if attrID in ChConfig.BaseAttrIDList:
- attrValue = FormulaControl.Eval("baseAttrFormula", baseAttrFormula, attrParamDict, toInt=False, ndigits=3)
+ attrValue = FormulaControl.Eval("baseAttrFormula", baseAttrFormula, attrParamDict, toInt=False, ndigits=2)
+ #GameWorld.DebugLog(" evalValue=%s,attrValue=%s" % (eval(baseAttrFormula), attrValue))
else:
- attrValue = FormulaControl.Eval("otherAttrFormula", otherAttrFormula, attrParamDict, toInt=False, ndigits=3)
- #GameWorld.DebugLog(" attrID=%s,attrValue=%s,attrParamDict=%s" % (attrID, attrValue, attrParamDict))
-
+ attrValue = FormulaControl.Eval("otherAttrFormula", otherAttrFormula, attrParamDict, toInt=False, ndigits=2)
+ #GameWorld.DebugLog(" evalValue=%s,attrValue=%s" % (eval(otherAttrFormula), attrValue))
+ # 前端对比刷属性明细时需要
+ if g_calcDetail and attrValue > 0:
+ calcParamDict = {}
+ for k, v in attrParamDict.items():
+ if not v or (k == "inheritPer" and v == 1):
+ continue
+ calcParamDict[k] = v
+ GameWorld.DebugLogEx(" heroID=%s,attrID=%s,attrValue=%s,%s", heroID, attrID, attrValue, calcParamDict)
+
attrIpyData = IpyGameDataPY.GetIpyGameData("PlayerAttr", attrID)
attrName = attrIpyData.GetParameter() if attrIpyData else "%s" % attrID
attrRatioName = "%sRatio" % attrName
@@ -1178,7 +1196,4 @@
else:
GameWorld.DebugLog("主线阵容没有在战斗中,不需要处理", playerID)
- PlayerFamily.RefreshFamilyMember(curPlayer) # 更新公会
- # 更新排行榜
-
return
--
Gitblit v1.8.0