From 0b314dd1d9f0c39e8d86de7e996c62836aa19aca Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 03 十一月 2025 15:01:04 +0800
Subject: [PATCH] 16 卡牌服务端(删除翅膀;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py | 43 ++++++++++++++++++++++++-------------------
1 files changed, 24 insertions(+), 19 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 fb9f7fa..9ccdedd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py
@@ -24,6 +24,7 @@
import IpyGameDataPY
import FormulaControl
import PlayerPrestigeSys
+import PlayerFamily
import PlayerGubao
import PlayerHero
import PlayerHJG
@@ -64,7 +65,7 @@
self.__refreshState = 0 # 刷属性标记, 0-不需要刷新了,1-需要刷新
self.__freeLineupHeroObjs = [] # 释放的空闲对象[LineupHero, ...]
- self.lineupHeroDict = {} # 阵容武将 {posNum:LineupHero, ...}
+ self.__lineupHeroDict = {} # 刷新阵容后的武将信息 {posNum:LineupHero, ...}
self.fightPower = 0 # 阵容总战力
return
@@ -84,42 +85,41 @@
PlayerHero.Sync_Lineup(self.olPlayer.curPlayer, self.lineupID)
return
+ def IsEmpty(self): return (not self.__lineupHeroDict or not self.heroItemDict)
+
+ def GetPosNumList(self): return self.__lineupHeroDict.keys()
+
def FreeLineupHero(self):
## 释放阵容武将对象,重新计算
- for freeObj in self.lineupHeroDict.values():
+ for freeObj in self.__lineupHeroDict.values():
if freeObj not in self.__freeLineupHeroObjs:
self.__freeLineupHeroObjs.append(freeObj)
- self.lineupHeroDict = {}
+ self.__lineupHeroDict = {}
self.fightPower = 0
return
def GetLineupHero(self, posNum):
lineupHero = None
- if posNum in self.lineupHeroDict:
- lineupHero = self.lineupHeroDict[posNum]
+ if posNum in self.__lineupHeroDict:
+ lineupHero = self.__lineupHeroDict[posNum]
elif self.__freeLineupHeroObjs:
lineupHero = self.__freeLineupHeroObjs.pop(0)
lineupHero.Clear()
- self.lineupHeroDict[posNum] = lineupHero
+ self.__lineupHeroDict[posNum] = lineupHero
else:
lineupHero = LineupHero()
- self.lineupHeroDict[posNum] = lineupHero
+ self.__lineupHeroDict[posNum] = lineupHero
return lineupHero
def GetLineupHeroByID(self, heroID):
lineupHero = None
- for posNum in self.lineupHeroDict.keys():
+ for posNum in self.__lineupHeroDict.keys():
lineupHero = self.GetLineupHero(posNum)
if lineupHero.heroID == heroID:
return lineupHero
if False:
lineupHero = LineupHero()
return lineupHero
-
- def GetLineupInfo(self):
- ## 获取阵容信息,即要用到该阵容了,如战斗或者保存缓存信息等
- self.DoRefreshLineupAttr() # 取阵容时先检查
- return
def SetNeedRefreshState(self):
## 设置需要刷属性
@@ -129,15 +129,16 @@
def RefreshLineupAttr(self, refreshForce=False):
self.__refreshState = 1 # 标记要刷新
if refreshForce:
- self.DoRefreshLineupAttr()
+ self.CheckRefreshLineupAttr()
return
- def DoRefreshLineupAttr(self):
+ def CheckRefreshLineupAttr(self):
+ ## 检查刷新阵容属性
if not self.__refreshState:
return False
+ self.__refreshState = 0
doRefreshLineupAttr(self.olPlayer.curPlayer, self.olPlayer, self)
self.lineupChange = False
- self.__refreshState = 0
return True
def CheckHeroItemUpdate(self, itemIndex):
@@ -176,7 +177,8 @@
## 是否真的在线
return self.curPlayer != None
- def GetLineup(self, lineupID):
+ def GetLineup(self, lineupID, checkAttr=True):
+ # @param checkAttr: 检查刷新到最新阵容属性
lineup = None
if lineupID in self.lineupDict:
lineup = self.lineupDict[lineupID]
@@ -184,6 +186,8 @@
lineup = Lineup(self.playerID, lineupID)
self.lineupDict[lineupID] = lineup
lineup.olPlayer = self
+ if checkAttr:
+ lineup.CheckRefreshLineupAttr()
return lineup
def GetCalcAttr(self, calcIndex): return self.calcAttrDict.get(calcIndex, {})
@@ -231,7 +235,7 @@
for lineupID, lineup in self.lineupDict.items():
if not isAllLineup and lineupID != ShareDefine.Lineup_Main:
continue
- if lineup.DoRefreshLineupAttr():
+ if lineup.CheckRefreshLineupAttr():
isRefresh = True
return isRefresh
@@ -397,7 +401,7 @@
GameWorld.DebugLog("重载阵容: %s" % lineupDict, curPlayer.GetPlayerID())
for lineupID, heroItemDict in lineupDict.items():
- lineup = olPlayer.GetLineup(lineupID)
+ lineup = olPlayer.GetLineup(lineupID, False)
# 获取其他绑定该阵容的功能,如红颜、灵兽等
@@ -824,6 +828,7 @@
else:
GameWorld.DebugLog("主阵容没有在战斗中,不需要处理", playerID)
+ PlayerFamily.RefreshFamilyMember(curPlayer) # 更新公会
# 更新排行榜
return
--
Gitblit v1.8.0