From e893a6cab624a161ae6c09dd48dfd1f1e97d929b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 26 十月 2018 15:01:08 +0800
Subject: [PATCH] 3964 【后端】防范登录下线流程错误

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py |   25 +++++++++++++++++--------
 1 files changed, 17 insertions(+), 8 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 d80d601..9533992 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -925,14 +925,23 @@
     #这里只做初始化逻辑
     #在玩家切换场景的时候, 不会调用到这里
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    InitLoginPlayer(curPlayer, tick)
-    DoPlayerLogin(curPlayer, tick)
+    try:
+        InitLoginPlayer(curPlayer, tick)
+        DoPlayerLogin(curPlayer, tick)
+        
+        #锁住玩家, 等到读取地图成功, 再解锁
+        curPlayer.SetCanMove(False)
+        
+        #登陆发图形验证码
+        PlayerAutoCheckOnline.PlayerLoginCaptcha(curPlayer, tick)
+    except:
+        curPlayer.Kick(IPY_GameWorld.disWaitForPlayerLoinError)
+        import traceback
+        GameWorld.ErrLog("玩家上线逻辑错误~~~~~\r\n%s" % traceback.format_exc())
+        if GameWorld.GetGameWorld().GetDebugLevel():
+            raise Exception("玩家上线逻辑错误~~~~\r\n%s" % traceback.format_exc())
+    return
     
-    #锁住玩家, 等到读取地图成功, 再解锁
-    curPlayer.SetCanMove(False)
-    
-    #登陆发图形验证码
-    PlayerAutoCheckOnline.PlayerLoginCaptcha(curPlayer, tick)
     
 #---------------------------------------------------------------------
 ##C++封包触发, 玩家切换地图的时候, 在本地图登录
@@ -2420,7 +2429,7 @@
         import traceback
         GameWorld.ErrLog("玩家下线逻辑错误~~~~~\r\n%s" % traceback.format_exc())
         if GameWorld.GetGameWorld().GetDebugLevel():
-            raise Exception("玩家下线~~~~~\r\n%s" % traceback.format_exc())
+            raise Exception("玩家下线逻辑错误~~~~~\r\n%s" % traceback.format_exc())
         
     #调用底层使玩家下线
     curPlayer.DoDisconnect(tick)

--
Gitblit v1.8.0