hxp
2025-12-31 46dbf29a22bd25d8e9c6ea4c34fea35a4828d712
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -133,6 +133,7 @@
import PlayerTravel
import TurnAttack
import PlayerHJG
import ChEquip
import datetime
import time
@@ -731,6 +732,7 @@
        PlayerTravel.OnPlayerLogin(curPlayer)
        OpenServerActivity.OnPlayerLogin(curPlayer)
        
        __OnFixVersion(curPlayer) # 修正线上玩家数据用,暂时放最后
        # 上线查询一次充值订单
        # curPlayer.SendDBQueryRecharge() 不查了,由在线轮询触发即可
        
@@ -740,6 +742,41 @@
    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
## 玩家扩展信息同步
#  @param curPlayer
#  @return None