From d57475ffe460133d146d377e66ed19ccb77b11a7 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 20 十月 2025 17:22:00 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(寻宝支持定制第x次x抽必出)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py | 46 +++++++++++++++++++++++++++++++++++++++-------
1 files changed, 39 insertions(+), 7 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 63fdd02..d140f9c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
@@ -23,7 +23,11 @@
import PlayerControl
import IpyGameDataPY
import FormulaControl
+import PlayerPrestigeSys
+import PlayerFamily
+import PlayerGubao
import PlayerHero
+import PlayerHJG
import GameWorld
import ChConfig
import ChEquip
@@ -156,6 +160,8 @@
# 主线战斗
self.mainFight = TurnAttack.MainFight(playerID)
+
+ self._lastBatBufferInfo = [] # 最后一场战斗临时回放 ["guid", "buffer"]
return
def OnClear(self):
@@ -246,6 +252,11 @@
GameWorld.DebugLog("武将物品养成更新索引: %s, 影响阵容:%s" % (itemIndexList, effLineupIDList), self.playerID)
return effLineupIDList
+
+ def GetLastBatBuffer(self): return self._lastBatBufferInfo
+ def SetLastBatBuffer(self, guid, batBuffer):
+ self._lastBatBufferInfo = [guid, batBuffer]
+ return
class OnlineMgr():
## 准在线玩家管理
@@ -403,6 +414,9 @@
CalcRoleBase(curPlayer)
ChEquip.CalcRoleEquipAttr(curPlayer)
PlayerHero.CalcHeroAddAttr(curPlayer)
+ PlayerPrestigeSys.CalcOfficialRankAttr(curPlayer)
+ PlayerGubao.CalcGubaoAttr(curPlayer)
+ PlayerHJG.CalcHJGAttr(curPlayer)
return
def doRefreshLineupAttr(curPlayer, olPlayer, lineup):
@@ -468,10 +482,11 @@
elif skinIDList:
skinID = skinIDList[0]
+ starMax = PlayerHero.GetHeroStarMax(heroItem)
InitAddPer += qualityIpyData.GetInitAddPer()
LVAddPer += qualityIpyData.GetLVAddPer() * max(0, heroLV - 1)
BreakLVAddPer += qualityIpyData.GetBreakLVAddPer() * breakLV
- StarAddPer += qualityIpyData.GetStarAddPer() * star
+ StarAddPer += qualityIpyData.GetStarAddPer() * min(star, starMax)
lineupHero = lineup.GetLineupHero(posNum)
#if False:
@@ -623,7 +638,10 @@
lvAttrDict = olPlayer.GetCalcAttr(ChConfig.Def_CalcAttr_LV)
equipAttrDict = olPlayer.GetCalcAttr(ChConfig.Def_CalcAttr_MainEquip)
bookAttrDict = olPlayer.GetCalcAttr(ChConfig.Def_CalcAttr_HeroBook)
-
+ realmAttrDict = olPlayer.GetCalcAttr(ChConfig.Def_CalcAttr_Realm)
+ gubaoAttrDict = olPlayer.GetCalcAttr(ChConfig.Def_CalcAttr_Gubao)
+ hjgAttrDict = olPlayer.GetCalcAttr(ChConfig.Def_CalcAttr_HJG)
+
GameWorld.DebugLog(" 国家武将统计=%s" % countryHeroInfo, playerID)
GameWorld.DebugLog(" 羁绊武将统计=%s" % fetterHeroInfo, playerID)
GameWorld.DebugLog(" 武将自身属性=%s" % heroSelfAttrInfo, playerID)
@@ -637,6 +655,9 @@
GameWorld.DebugLog(" 主公等级属性=%s" % lvAttrDict, playerID)
GameWorld.DebugLog(" 主公装备属性=%s" % equipAttrDict, playerID)
GameWorld.DebugLog(" 主公图鉴属性=%s" % bookAttrDict, playerID)
+ GameWorld.DebugLog(" 主公官职属性=%s" % realmAttrDict, playerID)
+ GameWorld.DebugLog(" 主公古宝属性=%s" % gubaoAttrDict, playerID)
+ GameWorld.DebugLog(" 主幻境阁属性=%s" % hjgAttrDict, playerID)
PlayerLV = curPlayer.GetLV()
OfficialLV = curPlayer.GetOfficialRank()
@@ -668,6 +689,15 @@
bookValue = bookAttrDict.get(attrID, 0)
bookPer = bookAttrDict.get(attrPerID, 0) / 10000.0 if attrPerID else 0
+ realmValue = realmAttrDict.get(attrID, 0)
+ realmPer = realmAttrDict.get(attrPerID, 0) / 10000.0 if attrPerID else 0
+
+ gubaoValue = gubaoAttrDict.get(attrID, 0)
+ gubaoPer = gubaoAttrDict.get(attrPerID, 0) / 10000.0 if attrPerID else 0
+
+ hjgValue = hjgAttrDict.get(attrID, 0)
+ hjgPer = hjgAttrDict.get(attrPerID, 0) / 10000.0 if attrPerID else 0
+
lineupInitAddPer, lineupLVAddPer, lineupBreakLVAddPer, lineupStarAddPer = 0, 0, 0, 0
if attrID in ChConfig.BaseAttrIDList:
lineupInitAddPer, lineupLVAddPer, lineupBreakLVAddPer, lineupStarAddPer = InitAddPer, LVAddPer, BreakLVAddPer, StarAddPer
@@ -693,7 +723,8 @@
awakeTalentPer = awakeTalentAttrDict.get(attrPerID, 0) / 10000.0
# 计算
- attrParamDict = {"lvValue":lvValue, "equipValue":equipValue, "bookValue":bookValue, "bookPer":bookPer,
+ attrParamDict = {"lvValue":lvValue, "equipValue":equipValue, "bookValue":bookValue, "bookPer":bookPer, "realmValue":realmValue, "realmPer":realmPer,
+ "gubaoValue":gubaoValue, "gubaoPer":gubaoPer, "hjgValue":hjgValue, "hjgPer":hjgPer,
"lineupInitAddPer":lineupInitAddPer, "lineupLVAddPer":lineupLVAddPer, "lineupBreakLVAddPer":lineupBreakLVAddPer, "lineupStarAddPer":lineupStarAddPer,
"heroSelfValue":heroSelfValue, "heroSelfPer":heroSelfPer, "inheritPer":inheritPer,
"lineupHaloValue":lineupHaloValue, "lineupHaloPer":lineupHaloPer, "fetterValue":fetterValue, "fetterPer":fetterPer,
@@ -702,9 +733,9 @@
}
if attrID in ChConfig.BaseAttrIDList:
- attrValue = FormulaControl.Eval("baseAttrFormula", baseAttrFormula, attrParamDict)
+ attrValue = FormulaControl.Eval("baseAttrFormula", baseAttrFormula, attrParamDict, toInt=False, ndigits=3)
else:
- attrValue = FormulaControl.Eval("otherAttrFormula", otherAttrFormula, attrParamDict)
+ attrValue = FormulaControl.Eval("otherAttrFormula", otherAttrFormula, attrParamDict, toInt=False, ndigits=3)
#GameWorld.DebugLog(" attrID=%s,attrValue=%s,attrParamDict=%s" % (attrID, attrValue, attrParamDict))
attrIpyData = IpyGameDataPY.GetIpyGameData("PlayerAttr", attrID)
@@ -720,7 +751,7 @@
logAttrDict["%s-%s" % (attrID, attrName)] = attrValue
# 计算战力
- fightPower = FormulaControl.Eval("fightPowerFormula", fightPowerFormula, fightPowerParamDict)
+ fightPower = FormulaControl.Eval("fightPowerFormula", fightPowerFormula, fightPowerParamDict, toInt=True)
GameWorld.DebugLog(" heroID=%s,fightPower=%s,heroSkillIDList=%s" % (heroID, fightPower, lineupHero.heroSkillIDList), playerID)
skillTypeIDDict = {}
@@ -744,7 +775,7 @@
skillID = skillData.GetSkillID()
lineupHero.heroSkillIDList.append(skillID)
paramDict = {"SkillPower":skillData.GetFightPower(), "PlayerLV":PlayerLV, "OfficialLV":OfficialLV}
- sFightPower = FormulaControl.Eval("skillFPFormula", skillFPFormula, paramDict)
+ sFightPower = FormulaControl.Eval("skillFPFormula", skillFPFormula, paramDict, toInt=True)
skillFightPower += sFightPower
GameWorld.DebugLog(" skillFightPower=%s,heroSkillIDList=%s" % (skillFightPower, lineupHero.heroSkillIDList), playerID)
@@ -794,6 +825,7 @@
else:
GameWorld.DebugLog("主阵容没有在战斗中,不需要处理", playerID)
+ PlayerFamily.RefreshFamilyMember(curPlayer) # 更新公会
# 更新排行榜
return
--
Gitblit v1.8.0