xdh
2019-01-03 9aca3cae32d7bbe5f8c2f1b77a6faaafa7ed2c4a
5665 【开发】【1.4.100】老服点数重置
3个文件已修改
55 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4499,7 +4499,8 @@
Def_VerFix_SuperGift, # 超值礼包开启变更,原领取首充开启,改成等级到开启;
Def_VerFix_Horse, # 坐骑等级上限修改,对应技能触发修改;
Def_VerFix_Pet, # 灵宠等级上限修改,对应技能触发修改;
) = range(7)
Def_VerFix_AddPoint, # 老号属性点修复;
) = range(8)
##==================================================================================================
#游戏消费点类型定义
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -251,7 +251,8 @@
    
    #上线检查一次装备属性
    ItemControler.PlayerItemControler(curPlayer).CheckRolePackEquipAttr()
    #上线检查加点属性点
    PlayerControl.FixOldAddPoint(curPlayer)
    #通知玩家物品信息
    __Sync_PackDetel(curPlayer)
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3313,22 +3313,57 @@
    
    return int(addPoint)
def GetAllPointByLV(curPlayer):
    ##获取当前等级可得到属性点数
    openLV = GameFuncComm.GetFuncLimitLV(ShareDefine.GameFuncID_AddPoint)
    curLV = curPlayer.GetLV()
    if curLV < openLV:
        return 0
    addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {})
    initFreePoint = IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 2)
    setFreePoint = initFreePoint
    for lv in xrange(openLV, curLV+1):
        setFreePoint += GameWorld.GetDictValueByRangeKey(addPointDict, lv, 0)
    return setFreePoint
def DoAddPointOpen(curPlayer):
    '''加点功能开启 处理给自由属性点及老号处理  
                    清除老服玩家未加点的点数(清零),以前加的加点属性不清除,属性不变,战力不减, 根据最新的加点开启等级和老服玩家的当前等级,相差的差值给予玩家对应的加点点数'''
    beforeFreePoint = curPlayer.GetFreePoint()
    addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {})
    initFreePoint = IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 2)
    openLV = GameFuncComm.GetFuncLimitLV(ShareDefine.GameFuncID_AddPoint)
    setFreePoint = initFreePoint
    setFreePoint = GetAllPointByLV(curPlayer)
    curLV = curPlayer.GetLV()
    for lv in xrange(openLV, curLV+1):
        setFreePoint += GameWorld.GetDictValueByRangeKey(addPointDict, lv, 0)
    addDataDict = {'beforeFreePoint':beforeFreePoint}
    DataRecordPack.DR_Freepoint(curPlayer, "AddPointOpen", setFreePoint, addDataDict)
    curPlayer.SetFreePoint(setFreePoint)
    DataRecordPack.DR_Freepoint(curPlayer, "AddPointOpen", setFreePoint, addDataDict)
    GameWorld.DebugLog('    加点功能开启处理  beforeFreePoint=%s,curLV=%s, setFreePoint=%s'%(beforeFreePoint, curLV, setFreePoint), curPlayer.GetID())
    return
def FixOldAddPoint(curPlayer):
    ##老号加点处理 重置已加点数,
    if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_AddPoint):
        return
    GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_AddPoint, 1)
    baseSTR, basePNE, basePHY, baseCON = GetPlayerBasePoint(curPlayer.GetJob())
    addPoint = curPlayer.GetFreePoint()
    attrInfoDict = {'BaseSTR':baseSTR,'BasePNE':basePNE,'BasePHY':basePHY,'BaseCON':baseCON}
    for attrKey, basePoint in attrInfoDict.items():
        addPoint += (getattr(curPlayer, 'Get%s'%attrKey)() - basePoint)
    fixFreePoint = GetAllPointByLV(curPlayer)
    if addPoint != fixFreePoint:
        for attrKey, basePoint in attrInfoDict.items():
            getattr(curPlayer, 'Set%s'%attrKey)(basePoint)
        curPlayer.SetFreePoint(fixFreePoint)
        #重置天赋
        PlayerGreatMaster.DoResetMasterSkillPoint(curPlayer)
        #邮件补偿
        SendMailByKey('PointCompensation', [curPlayer.GetID()], [], goldPaper=200)
        addDataDict = {'beforeTotalPoint':addPoint}
        DataRecordPack.DR_Freepoint(curPlayer, "FixOldAddPoint", fixFreePoint, addDataDict)
        GameWorld.Log('老号加点处理 重置已加点数 addPoint=%s, fixFreePoint=%s' % (addPoint, fixFreePoint))
    return
#---------------------------------------------------------------------
## 功能模块战斗力类