From b3c6d36f5ae851f09a3c2e73494ff19956b06fb0 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 11 四月 2025 16:56:14 +0800 Subject: [PATCH] 10367 【越南】【英语】【BT】【砍树】仙盟攻城战-服务端(跨服仙盟支持;后台查询区服仙盟支持;活动时间流程支持;攻城战主活动功能完整流程:公示、分组、战备、战斗、榜单、竞猜、领奖等;) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py | 41 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 39 insertions(+), 2 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py index 93bbf87..d3fec6f 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py @@ -19,6 +19,7 @@ import ShareDefine import IpyGameDataPY import CrossRealmMsg +import PlayerViewCache import PyGameDataStruct import ChPyNetSendPack import DataRecordPack @@ -66,6 +67,27 @@ for key in self.__billboardDict.keys(): if key[0] == billboardType: self.__billboardDict.pop(key) + return + + def ClearBillboard(self, billboardType, groupValue1=None, groupValue2=None): + '''清除某个类型的榜单所有数据,可指定过滤groupValue,有流向记录 + @param groupValue1: 不为None时验证 groupValue1 是否相同 + @param groupValue2: 不为None时验证 groupValue2 是否相同 + 如果groupValue1 groupValue2 都传入None,相当于清空 billboardType 类型的所有榜单数据 + ''' + clearList = [] + for bType, gValue1, gValue2 in self.__billboardDict.keys(): + if bType != billboardType: + continue + if groupValue1 != None and groupValue1 != gValue1: + continue + if groupValue2 != None and groupValue2 != gValue2: + continue + key = (bType, gValue1, gValue2) + clearList.append(key) + + for bType, gValue1, gValue2 in clearList: + self.GetCrossBillboard(bType, gValue1, gValue2).ClearData() return # 保存数据 存数据库和realtimebackup @@ -450,8 +472,8 @@ #{ # tagHead Head; # BYTE Type; //榜单类型 -# BYTE GroupValue1; // 分组值1 -# BYTE GroupValue2; // 分组值2,与分组值1组合归为同组榜单数据 +# DWORD GroupValue1; // 分组值1 +# DWORD GroupValue2; // 分组值2,与分组值1组合归为同组榜单数据 # DWORD StartIndex; //查看的起始名次索引, 默认0 # BYTE WatchCnt; //查看条数,默认20,最大不超过100 # DWORD WatchID; //查看指定ID名次前后,如玩家ID、家族ID等 @@ -771,6 +793,21 @@ id2=id2, autoSort=autoSort, value3=value3, value4=value4, value5=value5) return +def UpdCrossBillboardPlayer(bType, playerID, groupValue1, cmpValue, cmpValue2=0, value1=0, value2=0, groupValue2=0, autoSort=True, **kwargs): + ## 通用的更新跨服玩家榜,GameServer直接调用 + playerInfo = PlayerViewCache.GetShotCacheDict(playerID, "AccID", "ServerID", "Face", "FacePic") + name1 = playerInfo.get("Name", "") + name2 = playerInfo.get("AccID", "") + type2 = playerInfo.get("Job", 1) + if not value1: + value1 = playerInfo.get("RealmLV", 1) + value3 = playerInfo.get("Face", 0) + value4 = playerInfo.get("FacePic", 0) + value5 = playerInfo.get("ServerID", 0) + UpdCrossBillboard(bType, groupValue1, playerID, name1, name2, type2, value1, value2, cmpValue, cmpValue2, + autoSort=autoSort, value3=value3, value4=value4, value5=value5) + return + def UpdCrossBillboard(billboardType, groupValue1, dataID, name1, name2, type2, value1, value2, cmpValue, cmpValue2=0, cmpValue3=0, groupValue2=0, id2=0, autoSort=True, noSortAndSync=False, **kwargs): -- Gitblit v1.8.0