From 367fd9c77f82b2c7960dc9281c270e550d3ecbb0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 30 一月 2026 15:23:37 +0800
Subject: [PATCH] 438 【方案】方案预设-服务端(修复当前流派子方案切换时如切武将方案,定军阁进攻武将不会刷新的bug;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py |   49 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 48 insertions(+), 1 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 46f6a15..9f92601 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -125,14 +125,18 @@
 import IPY_ServerDefine
 import CommFunc
 from PyMongoDB import RecvPackToMapDB
+import GMT_BroadCast
 import PyMongoMain
 import PlayerTalk
 import PlayerHero
+import PlayerPreset
 import PlayerOnline
 import PlayerBeauty
 import PlayerTravel
+import PlayerMingge
 import TurnAttack
 import PlayerHJG
+import ChEquip
 
 import datetime
 import time
@@ -696,7 +700,7 @@
     curPlayer.SetState(0)   # 脱机挂恢复为正常上线
     curPlayer.SetCountryLastWeekHornor(0) # 通知数据库是否保存还是下线,做一次恢复,1为保存 0为正常下线
     
-    PlayerControl.DoGMForbidenTalkOnLogin(curPlayer)
+    PlayerControl.OnPlayerLogin(curPlayer)
     DataRecordPack.DR_PlayerLogin(curPlayer) # 放最后,记录等级、经验等信息
     return
 
@@ -712,6 +716,7 @@
     
     else:
         PyMongoMain.GetUserCtrlDB().OnPlayerLogin(curPlayer)
+        GMT_BroadCast.OnPlayerLogin(curPlayer)
         PlayerHero.OnPlayerLogin(curPlayer)
         PlayerMail.OnPlayerLogin(curPlayer)
         PlayerHJG.OnPlayerLogin(curPlayer)
@@ -729,8 +734,11 @@
         PlayerLLMJ.OnPlayerLogin(curPlayer)
         PlayerBeauty.OnPlayerLogin(curPlayer)
         PlayerTravel.OnPlayerLogin(curPlayer)
+        PlayerMingge.OnPlayerLogin(curPlayer)
         OpenServerActivity.OnPlayerLogin(curPlayer)
+        PlayerPreset.OnPlayerLogin(curPlayer)
         
+        __OnFixVersion(curPlayer) # 修正线上玩家数据用,暂时放最后
         # 上线查询一次充值订单
         # curPlayer.SendDBQueryRecharge() 不查了,由在线轮询触发即可
         
@@ -738,6 +746,41 @@
     isMixServerFirstLogin = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MixServerFirstLogin)
     msg = str([isMixServerFirstLogin])
     GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "PlayerRealLoginOK", msg, len(msg))
+    return
+
+def __OnFixVersion(curPlayer):
+    ''' 修正线上玩家数据内容
+    每次有需要修正时,只要定义一个新的系统内容版本号  sysFixVersion , 然后玩家根据自身版本号进行逐步修正即可
+    这样只用到一个key即可,不需要每次都定义新的key
+    '''
+    
+    playerID = curPlayer.GetPlayerID()
+    sysFixVersion = 2025123012 # 系统定义的最后一次修正版本号,一般以 yyyyMMddhh 定义为版本号
+    playerVersion = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FixVersion)
+    if not playerVersion:
+        createRoleTime = curPlayer.GetCreateRoleTime() # 按创角
+        ymd = createRoleTime.split(" ")[0]
+        playerVersion = GameWorld.ToIntDef("%s00" % ymd.replace("-", ""))
+        GameWorld.DebugLog("默认数据版本为创角日期: %s, %s" % (createRoleTime, playerVersion), playerID)
+        
+    if playerVersion == sysFixVersion:
+        GameWorld.DebugLog("玩家当前数据版本号已是最新版本! playerVersion=%s" % (playerVersion), playerID)
+        return
+    GameWorld.Log("玩家当前数据版本号不等于系统版本号,开始修正! playerVersion=%s != %s" % (playerVersion, sysFixVersion), playerID)
+    
+    # 修正玩家装备生命数值: 策划调整了生命占比,同步修改了生命战力,故需修正线上玩家装备生命,防止战力下降
+    fixVersion = 2025123012
+    if playerVersion < fixVersion:
+        ChEquip.FixRoleEquipHP(curPlayer, fixVersion)
+        # 每个版本修正完需要立即更新到对应的版本号值,防止中间某个版本修正失败,导致重登后重复修正已经处理的版本
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FixVersion, fixVersion)
+        
+    # 其他
+    # 需要按修正版本时间顺序依次处理!!!需要按修正版本时间顺序依次处理!!!需要按修正版本时间顺序依次处理!!!
+    
+    
+    # 最终强制设置为最新版本号
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FixVersion, sysFixVersion)
     return
 
 ## 玩家扩展信息同步
@@ -1199,6 +1242,10 @@
     #初始化英雄背包
     PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptHero)
     
+    #初始化卦玉背包
+    PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptMGGuayu, defaultMax=True, isSync=False)
+    PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptMGTuiyan, defaultMax=True, isSync=False)
+    
     #初始化临时交换背包,默认最大个数
     PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTempSwap, defaultMax=True, isSync=False)
     

--
Gitblit v1.8.0