From f98a3ff88d6ac63e1971e77051324c39422e84b5 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 05 七月 2021 18:32:36 +0800 Subject: [PATCH] 9043 【主干】【BT2】【BT3】增加玩家地图登录成功后的逻辑处理;优化仙盟boss活动状态通知时机; --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 75 ++++++++++++++++++++++++++++++++++--- 1 files changed, 69 insertions(+), 6 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py index 3aa90f2..2eee068 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py @@ -388,6 +388,55 @@ return #--------------------------------------------------------------------- +''' +登录流程 +MapServer + ChPlayer:def PlayerLogin(index, tick) + DoPlayerLogin + curPlayer.Sync_ClientPlayerLogin() + curPlayer.Sync_GameServer_MapID() #同步GameServer自己的地图ID + curPlayer.BalanceServer_PlayerLoginInitOK() + +GameServer + ChPlayer:def PlayerLoadMapState(index, tick) pack.GetLoadState()=0 此时的 LoadState 为0 + curPlayer.SetIsLoadMap(True) 设置在加载地图 + + ChPlayer:def PlayerLogin(index, tick) + curPlayer.MapServer_InitOK() 通知地图自己OK了 + +MapServer + PlayerEventCounter:def GameServer_InitOK(index, tick) + curPlayer.SendToBServerServerInitOK() #通知BServer自己OK了 + ChPlayer:def OnAllServerInitOK(curPlayer, tick) + + ChPlayer:def LoadMapOK(curPlayer, tick) + curPlayer.GameServer_SetLoadMapState(1) #通知GameServer切换地图停止 + curPlayer.SetMapLoadOK(True) + curPlayer.SetInitOK(True) + curPlayer.EndLoadMap() + +GameServer + ChPlayer:def PlayerLoadMapState(index, tick) pack.GetLoadState()=1 此时的 LoadState 为1 + PlayerLoginLoadMapOK + curPlayer.SetInitOK(True) + curPlayer.MapServer_GameServerRefreshOK() #通知地图服务器玩家初始化成功 + curPlayer.SetIsLoadMap(False) + +MapServer + GameServerRefresh:GameSever_PlayerInitOK curPlayer.GetGameServerInitOK()=0 + curPlayer.SetGameServerInitOK(True) + +后续补充流程 +MapServer + ChPlayer:def DoPlayerRealLoginOK(curPlayer, tick) + 玩家真正登录成功处理,用于替换 __DoPlayerLoginServer 中的功能登录逻辑 + 通知GameServer地图最终登录成功了 + +GameServer + ChPlayer:def DoPlayerRealLoginOK(curPlayer, tick) + 玩家真正登录成功处理,用于替换 __DoPlayerLoginServer 中的功能登录逻辑 +''' + ##玩家登陆游戏逻辑处理 #@param curPlayer 玩家实例 #@param tick 时间戳 @@ -396,6 +445,8 @@ def DoPlayerLogin(curPlayer, tick): #这里只做初始化逻辑 curPlayer.SetDict(ChConfig.Def_PlayerKey_LoadMapIsLogin, 1) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RealLoginOK, 0) # 每次登录重置 + #通知时间 Sync_PyServerDataTimeToClient(curPlayer) Sync_OpenServerDay(curPlayer) @@ -418,6 +469,8 @@ curPlayer.SetForbiddenSyncClientState(False) PlayerControl.SetCrossMapID(curPlayer, curPlayer.GetMapID()) # 因为主服上传数据之前该值为0,所以登录跨服后在跨服服务器要设置为对应地图 + #通知运行成功 + curPlayer.BalanceServer_PlayerLoginInitOK() return def __DoPlayerLoginServer(curPlayer, tick): @@ -445,9 +498,6 @@ PlayerFamily.FamilyPlayerOnLoginCross(curPlayer) PlayerTeam.OnPlayerLoginCrossServer(curPlayer) - - #通知运行成功 - curPlayer.BalanceServer_PlayerLoginInitOK() return leaveServerSecond = PlayerControl.GetPlayerLeaveServerSecond(curPlayer) @@ -588,9 +638,6 @@ #角色改名次数 UpdatePlayerName.Sync_UpdatePlayerNameCount(curPlayer) - - #通知运行成功 - curPlayer.BalanceServer_PlayerLoginInitOK() # 坐骑相关通知 PlayerHorse.PlayerHorseLogin(curPlayer) @@ -791,6 +838,22 @@ return +def DoPlayerRealLoginOK(curPlayer, tick): + ''' 玩家最终登录成功处理, 由 GameServerRefresh GameSever_PlayerInitOK 调用 + 该函数为地图最终登录成功才会执行到,以后一些功能类的登录处理建议均写到这里 + 旧的功能先不动( __DoPlayerLoginServer 函数中的功能),如果有登录相关的bug再考虑是否移动到此函数 + ''' + + if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RealLoginOK): + #切地图的不处理,切地图的也会触发该函数 + return + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RealLoginOK, 1) + GameWorld.Log("MapServer->DoPlayerRealLoginOK", curPlayer.GetPlayerID()) + + # 通知GameServer地图最终登录成功了 + msg = "" + GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "PlayerRealLoginOK", msg, len(msg)) + return ## 玩家扩展信息同步 # @param curPlayer -- Gitblit v1.8.0