From 2502456291ed4a568b17b9bf781db6997475b39e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 25 十一月 2021 15:23:44 +0800
Subject: [PATCH] 5287 【BT5】【主干】后台查询玩家背包道具报错(物品过多时长度超65535,简化返回物品数据信息)
---
ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py | 80 +++++++++++++++++++++++++++++-----------
1 files changed, 58 insertions(+), 22 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
index 34b1463..1a784f9 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
@@ -44,7 +44,7 @@
#import PlayerFamilyStore
import PlayerSocial
import PlayerFamilyParty
-import PlayerSealDemon
+#import PlayerSealDemon
import PlayerBillboard
import PlayerLVAward
import PlayerDuJie
@@ -56,13 +56,18 @@
import GameWorldActionControl
import GameWorldFamilyWar
import PlayerFBHelpBattle
+import GameWorldSkyTower
import GMT_CTG
import PyGameData
import GMShell
import IPY_PlayerDefine
+import GameWorldArena
import CrossRealmPK
import AuctionHouse
+import PlayerAssist
import PlayerFB
+import PlayerLove
+import PlayerCharm
#---------------------------------------------------------------------
#---------------------------------------------------------------------
@@ -87,9 +92,7 @@
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())
+ GameWorld.RaiseException("玩家上线逻辑错误\r\n%s" % traceback.format_exc())
return
#---------------------------------------------------------------------
@@ -159,7 +162,7 @@
#仙盟宴会
PlayerFamilyParty.OnPlayerLogin(curPlayer)
#封魔坛
- PlayerSealDemon.OnPlayerLogin(curPlayer)
+ #PlayerSealDemon.OnPlayerLogin(curPlayer)
#仙魔之争
PlayerXMZZ.OnXMZZOnLogin(curPlayer)
#等级奖励
@@ -168,28 +171,53 @@
PlayerStore.OnPlayerLogin(curPlayer)
#通知世界boss信息
GameWorldBoss.OnPlayerLogin(curPlayer)
- #家族副本boss状态通知
- PlayerFamilyBoss.OnLogin(curPlayer)
#渡劫
PlayerDuJie.OnPlayerLogin(curPlayer)
#守卫人皇
PlayerFamilySWRH.OnLogin(curPlayer)
PlayerTalk.LoginChatMi(curPlayer)
PlayerTalk.NotifyTalkCache(curPlayer)
- PlayerGeTui.CleanNewGuyCallBackGeTui(curPlayer.GetID())
+ #PlayerGeTui.CleanNewGuyCallBackGeTui(curPlayer.GetID())
#活动
GameWorldActionControl.OnPlayerLogin(curPlayer)
#玩家等级记录
PyGameData.g_todayPlayerLVDict[curPlayer.GetID()] = curPlayer.GetLV()
- #副本助战
- PlayerFBHelpBattle.OnHelpPlayerLogin(curPlayer)
+ #竞技场
+ GameWorldArena.OnPlayerLogin(curPlayer)
#跨服PK
CrossRealmPK.OnPlayerLogin(curPlayer)
#诛仙BOSS
PlayerZhuXianBoss.OnPlayerLogin(curPlayer)
#骑宠boss状态通知
PlayerHorsePetBoss.OnLogin(curPlayer)
+ #协助
+ PlayerAssist.OnPlayerLogin(curPlayer, False)
+ #天星塔
+ GameWorldSkyTower.OnPlayerLogin(curPlayer)
GMT_CTG.OnPlayerLogin(curPlayer)
+
+ else:
+ #协助
+ PlayerAssist.OnPlayerLogin(curPlayer, True)
+
+ return
+
+def DoPlayerRealLoginOK(curPlayer, tick):
+ ''' 玩家最终登录成功处理, 由 MapServer DoPlayerRealLoginOK 通知
+ 该函数为地图最终登录成功才会执行到,以后一些功能类的登录处理建议均写到这里
+ 旧的功能先不动( __DoPlayerLoginServer 函数中的功能),如果有登录相关的bug再考虑是否移动到此函数
+ '''
+
+ GameWorld.Log("GameServer->DoPlayerRealLoginOK", curPlayer.GetPlayerID())
+
+ if not PlayerControl.GetIsTJG(curPlayer):
+ #家族副本boss状态通知
+ PlayerFamilyBoss.OnLogin(curPlayer)
+ #魅力
+ PlayerCharm.OnPlayerLogin(curPlayer)
+ #情缘
+ PlayerLove.OnPlayerLogin(curPlayer)
+
return
def __UpdOnedayJobPlayerLoginoffTime(curPlayer):
@@ -510,9 +538,7 @@
__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())
+ GameWorld.RaiseException("玩家下线逻辑错误\r\n%s" % traceback.format_exc())
#调用底层下线
curPlayer.DoDisconnect()
return
@@ -537,11 +563,15 @@
PlayerFriend.OnPlayerDisconnect(curPlayer, tick)
__UpdOnedayJobPlayerLoginoffTime(curPlayer)
- PlayerGeTui.NewGuyCallBackGeTui(curPlayer, tick)
+ #PlayerGeTui.NewGuyCallBackGeTui(curPlayer, tick)
# 设置家族成员离线时间
SetPlayerOfflineTime(curPlayer)
#拍卖行
AuctionHouse.OnPlayerLeaveServer(curPlayer)
+ #协助
+ PlayerAssist.OnLeaveServer(curPlayer)
+ #红包
+ PlayerFamilyRedPacket.OnLeaveServer(curPlayer)
#------------镖车逻辑
#TruckPlayerDisconnectProcess(curPlayer, tick)
@@ -556,8 +586,8 @@
# @return None
# @remarks 函数详细说明.
def SetPlayerOfflineTime(curPlayer):
- if PlayerControl.GetIsTJG(curPlayer):
- return
+ #if PlayerControl.GetIsTJG(curPlayer):
+ # return
curPlayerID = curPlayer.GetPlayerID()
curFamily = curPlayer.GetFamily()
@@ -611,6 +641,7 @@
playerStatePack = IPY_GameServer.IPY_GRefreshPlayerProperty()
packValue = playerStatePack.GetValue()
+ packValueEx = playerStatePack.GetValueEx()
packType = playerStatePack.GetType()
#---特殊逻辑处理---
@@ -637,7 +668,7 @@
return
if packType == IPY_GameServer.CDBPlayerRefresh_FightPower:
- curPlayer.SetFightPower(packValue)
+ curPlayer.SetFightPower(packValue, packValueEx)
return
if packType == IPY_GameServer.CDBPlayerRefresh_ExAttr2:
@@ -645,11 +676,19 @@
PlayerTeam.SetTeamCheckState(curPlayer, packValue)
return
+ #if packType == IPY_GameServer.CDBPlayerRefresh_ExAttr1:
+ # PlayerControl.SetAssistTagPlayerID(curPlayer, packValue)
+ # return
+
+ if packType == IPY_GameServer.CDBPlayerRefresh_ExAttr3:
+ PlayerControl.SetFBFuncLineID(curPlayer, packValue)
+ return
+
#---常规逻辑处理---
elif packType == IPY_GameServer.CDBPlayerRefresh_LV:
curPlayer.SetLV(packValue)
- PlayerSocial.UpdateSocialInfo(curPlayer, packType, packValue)
+ PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue)
#玩家等级记录
playerID = curPlayer.GetID()
if playerID in PyGameData.g_todayPlayerLVDict:
@@ -688,9 +727,6 @@
elif packType == IPY_GameServer.CDBPlayerRefresh_ExAttr10:
PlayerControl.SetChatBubbleBox(curPlayer, packValue)
- elif packType == IPY_GameServer.CDBPlayerRefresh_ExAttr11:
- PlayerControl.SetTodayXianyuanCoin(curPlayer, packValue)
-
elif packType == IPY_GameServer.CDBPlayerRefresh_ExAttr13:
PlayerControl.SetPlayerServerGroupID(curPlayer, packValue)
@@ -699,7 +735,7 @@
elif packType == IPY_GameServer.CDBPlayerRefresh_OfficialRank:
curPlayer.SetOfficialRank(packValue)
- PlayerSocial.UpdateSocialInfo(curPlayer, packType, packValue)
+ PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue)
#更新排行榜的境界
PlayerBillboard.UpdateBillboardRealm(curPlayer)
--
Gitblit v1.8.0