From 4087d18ce7cbd1578a6e287962bd902386984048 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 14 七月 2025 10:55:57 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_ServerCode --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py | 41 +++++++++++++++++++++++++++++++---------- 1 files changed, 31 insertions(+), 10 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py index d688586..fee72a3 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py @@ -20,6 +20,8 @@ import GameWorld import ShareDefine import PlayerControl +import PlayerViewCache +import PyMongoMain import DBDataMgr import ChConfig import DBComm @@ -81,12 +83,15 @@ self.__actionDataList.append(actionData) return actionData - def AddAction(self, fullClear=True): + def AddAction(self, maxCount=None): ## 添加仙盟Action数据 - # @param fullClear: 数据条数超过最大数时是否清除最早一条,并创建一条新记录 + # @param maxCount: 可传入由配置决定的最大条数,如果为None则进一步取程序默认设定的最大条数,都没配置的话默认不限条数 + fullClear = True + if maxCount == None: + maxCount = ShareDefine.ActionTypeSaveCnt.get(self.actionType, 0) actionData = None - if self.Count() >= ChConfig.ActionTypeSaveCnt.get(self.actionType, 0): + if maxCount and self.Count() >= maxCount: if not fullClear: #超过记录记录不了了 return actionData @@ -206,7 +211,7 @@ ## 根据玩家ID更新成员数据,一般用于离线功能,如添加离线成员,直接使用查看缓存更新 if playerID != self.GetPlayerID(): return - viewCache = DBDataMgr.GetPlayerViewCacheMgr().FindViewCache(playerID) + viewCache = PlayerViewCache.FindViewCache(playerID) if not viewCache: return self.SetPlayerName(viewCache.GetPlayerName()) @@ -297,6 +302,8 @@ self.__memberList.append(member) return member + def GetMemberIDList(self): return self.__memberDict.keys() + def AddMember(self, playerID): member = None if playerID in self.__memberDict: @@ -352,7 +359,7 @@ def RefrshFightPowerTotal(self, checkChange=False): ## 刷新总战力 if checkChange and self.__memFightPowerChange == False: # 默认None,首次必刷新 - GameWorld.DebugLog("没有成员战力变化可不刷新仙盟总战力! familyID=%s" % self.GetID()) + #GameWorld.DebugLog("没有成员战力变化可不刷新仙盟总战力! familyID=%s" % self.GetID()) return familyFightPowerTotal = 0 for index in range(self.GetCount()): @@ -361,7 +368,7 @@ continue familyFightPowerTotal += member.GetFightPowerTotal() self.SetFightPowerTotal(familyFightPowerTotal) - GameWorld.DebugLog("刷新仙盟总战力! familyID=%s" % self.GetID()) + #GameWorld.DebugLog("刷新仙盟总战力! familyID=%s" % self.GetID()) self.__memFightPowerChange = False return familyFightPowerTotal @@ -430,9 +437,14 @@ self.__familyList.sort(key=lambda f: (f.GetFightPowerTotal(), f.GetLV()), reverse=True) return - def AddFamily(self, familyID, familyName, serverID): + def AddFamily(self, familyName, serverID, familyID=None): ## 创建新仙盟 newFamily = None + if familyID == None: + familyID = PyMongoMain.GetUserCtrlDB().GetNewFamilyID() + if familyID <= 0: + GameWorld.ErrLog("创建仙盟时生成新ID异常!") + return newFamily if familyID in self.__familyIDDict: GameWorld.ErrLog("创建仙盟时ID已存在! familyID=%s" % familyID) return newFamily @@ -478,7 +490,16 @@ self.__familyList.remove(family) family.OnDelete() self.__familyIDDict.pop(familyID, None) + if familyID > ShareDefine.FackFamilyIDMax: + PyMongoMain.GetUserCtrlDB().FreeFamilyID(familyID) # 归还仙盟ID,重复使用 return family + + def DelAllFamily(self): + for index in range(self.GetCount())[::-1]: + family = self.GetAt(index) + familyID = family.GetID() + self.DelFamily(familyID) + return def GetCount(self): return len(self.__familyList) def GetAt(self, index): @@ -604,8 +625,7 @@ family = self.FindFamily(familyID) if not family: continue - member = family.InitMemberInstance(dbData) - GameWorld.Log(" member:%s,familyID=%s" % (member.GetPlayerID(), familyID)) + family.InitMemberInstance(dbData) # 行为 cnt, pos = CommFunc.ReadDWORD(datas, pos) @@ -622,9 +642,10 @@ action = self.__actionMgr.GetFamilyAction(familyID, actionType) action.InitActionInstance(dbData) + PyMongoMain.GetUserCtrlDB().OnFamilyIDInit(self.__familyIDDict.keys()) return pos -def OnMinute(curMinute): +def OnMinute(): familyMgr = DBDataMgr.GetFamilyMgr() # 每分钟刷新下仙盟战力排序 -- Gitblit v1.8.0