From e5353bd8a09e4a134ad18f0a8855770669cf43bb Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 03 九月 2025 15:22:55 +0800
Subject: [PATCH] 198 【内政】淘金系统-服务端
---
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