From 278fa30bb771deab0cc22c3390c2581c004de178 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 21 五月 2025 14:38:45 +0800
Subject: [PATCH] 15 卡牌服务端搭建 1. 增加地图关闭接口 CloseMap,必须调用处理保存后,地图才能关闭 2. 玩家登录流程在PlayerLogin统一处理,不再需要等待客户端回报

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py |   72 +++++++++++++-----------------------
 1 files changed, 26 insertions(+), 46 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 09f53f7..f41b51b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -487,52 +487,29 @@
 
 #---------------------------------------------------------------------
 '''
-旧登录流程 -- 留着对比
+登录流程
+UserCrtlDB
+    onAuthentication  玩家登录 :验证账号-若没有角色则创角-返回角色信息-通知Map C++
+    Map C++调用 PlayerLogin
 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)
+        DoPlayerLogin
+            curPlayer.Sync_ClientPlayerLogin()  #01 02 玩家初始化#tagCDBPlayer
+            curPlayer.BalanceServer_PlayerLoginInitOK() #向route设置玩家在map中的索引
+            
+            curPlayer.SendToBServerServerInitOK()   #通知route登录成功 ,route向客户端发送//01 09 服务器准备就绪#tagServerPrepareOK
+            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
+            ChPlayer:def __Func_LoadMapOK(curPlayer, tick)  #!!!直接调用不等待客户端封包 //01 07 地图读取OK#tagCInitMapOK
+            curPlayer.SetMapLoadOK(True)
             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  中的功能登录逻辑
+            curPlayer.EndLoadMap()  #通知客户端 04 03 玩家登录数据发送完毕OK#tagPlayerLoginLoadOK
+
+            GameServerRefresh:GameSever_PlayerInitOK
+            curPlayer.SetGameServerInitOK(True)
+
+            ChPlayer:def DoPlayerRealLoginOK(curPlayer, tick) 玩家真正登录成功处理,用于替换  __DoPlayerLoginServer  中的功能登录逻辑
+
 '''
 
 ##玩家登陆游戏逻辑处理
@@ -1477,7 +1454,9 @@
         curPlayer.SendToBServerServerInitOK()   #通知route登录成功 ,route向客户端发送0109包
         OnAllServerInitOK(curPlayer, tick)
         #到此处已经可以保存数据,即使客户端不回包断线
-        #后续登录流程等客户端回复 //01 07 地图读取OK#tagCInitMapOK 调用 LoadMapOK
+        #原 //01 07 地图读取OK#tagCInitMapOK 逻辑 直接调用
+        __Func_LoadMapOK(index, tick)
+        GameServerRefresh.GameSever_PlayerInitOK(index, tick)
     except:
         curPlayer.Kick(IPY_GameWorld.disWaitForPlayerLoinError)
         import traceback
@@ -1565,7 +1544,7 @@
     PetControl.Sync_PetInfo_ChangeMap(curPlayer, tick)
 
     #通知GameServer自己现在的地图
-    curPlayer.Sync_GameServer_MapID()
+    #curPlayer.Sync_GameServer_MapID()
     
     #如果本地图是副本的话, 则通知GameServer玩家进入副本
     if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtTeam:
@@ -1680,8 +1659,9 @@
 #@return 返回值无意义
 #@remarks C++封包触发, 切换地图成功( 目标地图 )
 def LoadMapOK(index, tick):
-    GameWorld.GetPsycoFunc(__Func_LoadMapOK)(index, tick)
-    GameServerRefresh.GameSever_PlayerInitOK(index, tick)
+    #不需要等待客户端,以前有视野客户端未加载成功会被偷袭的问题,可以通过加x秒无敌BUFF解决,不应该增加流程
+    # GameWorld.GetPsycoFunc(__Func_LoadMapOK)(index, tick)
+    # GameServerRefresh.GameSever_PlayerInitOK(index, tick)
     return
 
 #---------------------------------------------------------------------

--
Gitblit v1.8.0