From ef7af852562f860104278853805cceb2cfa412eb Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 30 十月 2018 19:53:58 +0800
Subject: [PATCH] 4456 【1.2】【后端】古神禁地挂机经验配置优化 4449 【1.2】【后端】仙盟宴会传功经验

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py |   35 +++++++++++++++++++++++++----------
 1 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
index 4452fb6..ec1801a 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
@@ -63,10 +63,12 @@
 import IpyGameDataPY
 import PlayerTalk
 import PlayerGeTui
+import PlayerStore
 import GameWorldActionControl
 import GMT_CTG
 import PyGameData
 import GMShell
+import IPY_PlayerDefine
 #---------------------------------------------------------------------
 
 #---------------------------------------------------------------------
@@ -76,7 +78,15 @@
 #  @return None
 #  @remarks 登陆顺序, PlayerLogin->PlayerLoadMapState(PlayerLoginLoadMapOK), 此处未设置初始化状态
 def PlayerLogin(index, tick):
-    GameWorld.GetPsycoFunc(__Func_PlayerLogin)(index, tick)
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    try:
+        __Func_PlayerLogin(curPlayer, tick)
+    except:
+        curPlayer.Kick(IPY_PlayerDefine.disWaitForPlayerLoinError)
+        import traceback
+        GameWorld.ErrLog("玩家上线逻辑错误~~~~~\r\n%s" % traceback.format_exc())
+        if GameWorld.GetGameWorld().GetDebugLevel():
+            raise Exception("玩家上线逻辑错误~~~~\r\n%s" % traceback.format_exc())
     return
 
 #---------------------------------------------------------------------
@@ -85,10 +95,8 @@
 #  @param tick 当前时间
 #  @return None
 #  @remarks 登陆顺序, PlayerLogin->PlayerLoadMapState(PlayerLoginLoadMapOK), 此处未设置初始化状态
-def __Func_PlayerLogin(index, tick):
+def __Func_PlayerLogin(curPlayer, tick):
     
-    #玩家登录初始化
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     #玩家在线时间初始化
     InitPlayerOnLineTime(curPlayer, tick)
     #玩家响应信息初始化
@@ -143,7 +151,8 @@
         PlayerXMZZ.OnXMZZOnLogin(curPlayer)
         #等级奖励
         PlayerLVAward.OnPlayerLogin(curPlayer)
-    
+        #商店购买次数
+        PlayerStore.OnPlayerLogin(curPlayer)
         #通知世界boss信息
         GameWorldBoss.OnPlayerLogin(curPlayer)
         #家族副本boss状态通知
@@ -481,7 +490,16 @@
 #  @return None
 #  @remarks 函数详细说明.
 def PlayerDisconnect(index, tick):
-    GameWorld.GetPsycoFunc(__Func_PlayerDisconnect)(index, tick)
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    try:
+        __Func_PlayerDisconnect(curPlayer, tick)
+    except:
+        import traceback
+        GameWorld.ErrLog("玩家下线逻辑错误~~~~~\r\n%s" % traceback.format_exc())
+        if GameWorld.GetGameWorld().GetDebugLevel():
+            raise Exception("玩家下线逻辑错误~~~~\r\n%s" % traceback.format_exc())
+    #调用底层下线
+    curPlayer.DoDisconnect()
     return
 
 ## 玩家下线(封包参数)
@@ -489,8 +507,7 @@
 #  @param tick 当前时间
 #  @return None
 #  @remarks 函数详细说明.
-def __Func_PlayerDisconnect(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+def __Func_PlayerDisconnect(curPlayer, tick):
     
     #跨服匹配PK
     #GameWorldMergePK.OnLeaveServer(curPlayer)
@@ -508,8 +525,6 @@
     #MergePlayer.OnPlayerLeaveGotoMergeServer(curPlayer, tick)
     #------------镖车逻辑
     #TruckPlayerDisconnectProcess(curPlayer, tick)
-    #调用底层下线
-    curPlayer.DoDisconnect()
     return
 
 ## 设置玩家离线时间

--
Gitblit v1.8.0