From e41e926bbbd0255acde8b4b62d5558a025b83a02 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 11 六月 2025 17:18:27 +0800 Subject: [PATCH] 10263 【越南】【BT】增加后台执行命令清除本服榜单某个玩家ID数据: ClearBillboardData --- ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py | 59 +++++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 45 insertions(+), 14 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py index ec8d8a6..7690f01 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py @@ -57,7 +57,6 @@ import GameWorldFamilyWar import PlayerFBHelpBattle import GameWorldSkyTower -import GMT_CTG import PyGameData import GMShell import IPY_PlayerDefine @@ -79,8 +78,11 @@ import PlayerFuncTeam import PyDataManager import GameWorldMineArea +import PlayerPackData import PlayerRecData import GameWorship +import GameXiangong +import CrossFamilyGCZ #--------------------------------------------------------------------- #--------------------------------------------------------------------- @@ -95,6 +97,8 @@ return def IsOnline(self, playerID): return playerID in self.onlinePlayerDict + + def GetOLPlayerServerGroupID(self, playerID): return self.onlinePlayerDict.get(playerID, 0) def __SetOnline(self, playerID, serverGroupID): self.onlinePlayerDict[playerID] = serverGroupID @@ -178,8 +182,6 @@ ''' 玩家登录需要处理的内容,本服及跨服服务器分开 ''' if GameWorld.IsCrossServer(): - #跨服PK - CrossRealmPK.OnPlayerLoginCrossServer(curPlayer) #协助 PlayerAssist.OnPlayerLoginCrossServer(curPlayer) return @@ -258,7 +260,6 @@ GameWorldSkyTower.OnPlayerLogin(curPlayer) #福地 GameWorldMineArea.OnPlayerLogin(curPlayer) - GMT_CTG.OnPlayerLogin(curPlayer) else: pass @@ -291,13 +292,15 @@ CrossBattlefield.OnPlayerLogin(curPlayer) #跨服排位 CrossChampionship.OnPlayerLogin(curPlayer, tick) + #仙盟攻城战 + CrossFamilyGCZ.OnPlayerLogin(curPlayer) #跨服全民充值 CrossActAllRecharge.OnPlayerLogin(curPlayer) #跨服妖魔boss CrossYaomoBoss.OnPlayerLogin(curPlayer) #玩家记录 PlayerRecData.OnPlayerLogin(curPlayer) - + PlayerPackData.OnPlayerLogin(curPlayer) #在线状态变更,放最后 __OnPlayerOnlineStateChange(curPlayer, True) @@ -641,9 +644,6 @@ PlayerFB.OnPlayerDisconnectCrossServer(curPlayer) return - #跨服匹配PK - CrossRealmPK.OnLeaveServer(curPlayer) - #组队玩家离线 PlayerTeam.DoPlayerLogOffTeamLogic(curPlayer, tick) #家族玩家离线 @@ -666,6 +666,7 @@ if not PlayerControl.GetIsTJG(curPlayer): playerID = curPlayer.GetPlayerID() PyGameData.g_unTJLogoffTime[playerID] = int(time.time()) + PyGameData.g_xiangongCanLikeTimeDict.pop(playerID, None) #在线状态变更,放最后 __OnPlayerOnlineStateChange(curPlayer, False) @@ -684,9 +685,9 @@ #offlineValue = olMgr.GetOfflineValue(playerID, PlayerViewCache.FindViewCache(playerID)) #SyncRelatedPlayerOnlineState(playerID, offlineValue, relatedPlayerIDList) - if not PlayerControl.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_CrossRealmPK) \ - and not PlayerControl.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_CrossBattlefield): - GameWorld.DebugLog("跨服相关功能未开启,不同步在线状态到跨服服务器! LV=%s" % curPlayer.GetLV(), curPlayer.GetPlayerID()) + syncLV = IpyGameDataPY.GetFuncCfg("CrossSyncSet", 1) + if curPlayer.GetLV() < syncLV: + #GameWorld.DebugLog("跨服相关功能未开启,不同步在线状态到跨服服务器! LV=%s < %s" % (curPlayer.GetLV(), syncLV), curPlayer.GetPlayerID()) return cacheBase = PlayerViewCache.GetSyncCrossCacheBase(curPlayer) @@ -702,7 +703,25 @@ cacheBase = msgData["cacheBase"] isLogout = not isOnline + olMgr = GetOnlinePlayerMgr() + olMgr.SetOnlineState(playerID, isOnline, cacheBase.get("ServerGroupID", 0)) + PlayerViewCache.UpdCrossCacheBase(playerID, cacheBase, isLogout) + serverID = GameWorld.GetAccIDServerID(cacheBase["AccID"]) + + # 上线 + if isOnline: + # 需要管理跨服在线状态时,默认需要同步缓存信息、打包数据信息 + syncStateInfo = {"playerID":playerID, "ViewCacheCross":1, "PackDataCross":1} + CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_PlayerPackDataState, syncStateInfo, [serverGroupID]) + + GameXiangong.OnPlayerLogin_CrossLogic(serverGroupID, serverID, playerID) + #仙盟攻城战 + CrossFamilyGCZ.OnPlayerLogin_CrossLogic(serverGroupID, serverID, playerID) + + # 下线 + else: + pass SyncCrossPlayerOnlineStateToRelatedPlayer(playerID) return @@ -824,6 +843,7 @@ packValue = playerStatePack.GetValue() packValueEx = playerStatePack.GetValueEx() packType = playerStatePack.GetType() + #packValueTotal = packValue + packValueEx * ChConfig.Def_PerPointValue #---特殊逻辑处理--- if packType == ShareDefine.CDBPlayerRefresh_ForbidenTalk: @@ -833,7 +853,11 @@ if packType == ShareDefine.CDBPlayerRefresh_ExAttr17: PlayerControl.SetPlayerAccState(curPlayer, packValue) return - + + if packType == ShareDefine.CDBPlayerRefresh_ExAttr19: + PlayerControl.SetLeaveFamilyTimeEx(curPlayer, packValue) + return + if packType == IPY_GameServer.CDBPlayerRefresh_State: # 脱机在线 PlayerControl.SetIsTJG(curPlayer, packValue) @@ -869,7 +893,6 @@ elif packType == IPY_GameServer.CDBPlayerRefresh_LV: curPlayer.SetLV(packValue) - PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue) #玩家等级记录 playerID = curPlayer.GetID() if playerID in PyGameData.g_todayPlayerLVDict: @@ -919,10 +942,18 @@ elif packType == IPY_GameServer.CDBPlayerRefresh_OfficialRank: curPlayer.SetOfficialRank(packValue) - PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue) #更新排行榜的境界 PlayerBillboard.UpdateBillboardRealm(curPlayer) + elif packType == IPY_GameServer.CDBPlayerRefresh_Face: + curPlayer.SetFace(packValue) + PlayerBillboard.UpdateBillboardFace(curPlayer) + elif packType == IPY_GameServer.CDBPlayerRefresh_HairColor: + #c++头像外框 用头发颜色通知 - 遗漏问题 + curPlayer.SetFacePic(packValue) + PlayerBillboard.UpdateBillboardFacePic(curPlayer) + #社交信息 + PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue) #组队成员刷新 PlayerTeam.PlayerTeamMemberRefresh(curPlayer, packType, packValue, tick) #家族刷新 -- Gitblit v1.8.0