xdh
2019-04-28 efb45afae0f9f1f8471ef89505fd6a68d03d1ed9
6607 【2.0】【后端】技能升级功能改版(点数变更刷新修改)
5个文件已修改
37 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_ResetAttrPoint.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_ResetAttrPoint.py
@@ -85,9 +85,6 @@
    #刷新人物所有状态
    playerControl = PlayerControl.PlayerControl(curPlayer)
    playerControl.RefreshPlayerAttrState()
    #更新技能专精
    SkillShell.RefreshElementSkillByAttr(curPlayer, resetIDList)
    return True
## 逻辑实现 //返回值为是否使用成功(外层通知特效)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -1773,8 +1773,6 @@
    NotifyPlayerBasePoint(curPlayer, pointAttrIDList)
    playerControl = PlayerControl.PlayerControl(curPlayer)
    playerControl.RefreshPlayerAttrState()
    #更新技能专精
    SkillShell.RefreshElementSkillByAttr(curPlayer, pointAttrIDList)
    return
def NotifyPlayerBasePoint(curPlayer, syncAttrIDList=[]):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py
@@ -200,15 +200,6 @@
    
    # 刷新属性
    __RefreshAttr(curPlayer, funcIndex)
    # 若是加灵根属性则更新技能专精
    pointAttrIDList = []
    for attrID in attrIDList:
        if attrID in [ShareDefine.Def_Effect_Metal, ShareDefine.Def_Effect_Wood, ShareDefine.Def_Effect_Water,
                      ShareDefine.Def_Effect_Fire, ShareDefine.Def_Effect_Earth]:
            pointAttrIDList.append(attrID)
    if pointAttrIDList:
        SkillShell.RefreshElementSkillByAttr(curPlayer, pointAttrIDList)
    return True, hasUseCnt
## 玩家使用属性果实
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4345,6 +4345,8 @@
        beforeMaxHP = curPlayer.GetMaxHP()
        beforeMoveSpeedValue = GetSpeedValue(curPlayer)
        beforeMaxProDef = GetMaxProDef(curPlayer)
        #[金木水火土]
        beforePointList = [GetMetal(curPlayer), GetWood(curPlayer), GetWater(curPlayer), GetFire(curPlayer), GetEarth(curPlayer)]
        #构建玩家刷新通知客户端字典, 缓存[索引, 数值]
        playerStateDict = {}
        for index in xrange(1, ChConfig.Def_Calc_AllAttrType_MAX):
@@ -4551,7 +4553,17 @@
        
        #通知基础属性
        self.__SyncBaseAttr(curPlayer, baseAttrList)
        #五行灵根变更需要处理的逻辑
        afterPointList = [GetMetal(curPlayer), GetWood(curPlayer), GetWater(curPlayer), GetFire(curPlayer), GetEarth(curPlayer)]
        if beforePointList !=afterPointList:
            diffPointAttrList = []
            for i, attrID in enumerate([ShareDefine.Def_Effect_Metal, ShareDefine.Def_Effect_Wood, ShareDefine.Def_Effect_Water,
                           ShareDefine.Def_Effect_Fire, ShareDefine.Def_Effect_Earth]):
                if beforePointList[i] != afterPointList[i]:
                    diffPointAttrList.append(attrID)
            SkillShell.RefreshElementSkillByAttr(curPlayer, diffPointAttrList)
        # 同步前端战力,因为有 SetFightPower 所以累加战力放在这里所有刷新及计算处理完后才处理,才能正常触发set同步前端
        self.SendModuleFightPowerPack(curPlayer, mfpDict)
        billFuncCnt = len(PyGameData.g_refreshAttrBillboardFunc) # 只处理固定次数,防止死循环
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -2104,7 +2104,7 @@
    skillManager = curPlayer.GetSkillManager()
    curSkill = skillManager.FindSkillBySkillTypeID(skillTypeID)
    curSkillLV = curSkill.GetSkillLV() if curSkill else 0
    if updSkillLV == curSkillLV:
        return
    elif updSkillLV < curSkillLV:
@@ -2119,11 +2119,12 @@
def RefreshElementSkillByAttr(curPlayer, attrIDList):
    #加点、丹药、境界、洗点 会影响灵根点
    __InitElementSkillInfo()
    isRefresh = False
    skillManager = curPlayer.GetSkillManager()
    for i in xrange(skillManager.GetSkillCount()):
        hasSkill = skillManager.GetSkillByIndex(i)
        hasSkillID = hasSkill.GetSkillID()
        hasSkillID = hasSkill.GetSkillTypeID()
        ipyData = IpyGameDataPY.GetIpyGameDataByCondition('SkillElement', {'MainSkillID':hasSkillID}, False, False)
        if not ipyData:
            continue
@@ -2150,7 +2151,7 @@
    skillManager = curPlayer.GetSkillManager()
    for i in xrange(skillManager.GetSkillCount()):
        hasSkill = skillManager.GetSkillByIndex(i)
        hasSkillID = hasSkill.GetSkillID()
        hasSkillID = hasSkill.GetSkillTypeID()
        ipyData = IpyGameDataPY.GetIpyGameDataByCondition('SkillElement', {'MainSkillID':hasSkillID}, False, False)
        if not ipyData:
            continue
@@ -2187,7 +2188,7 @@
        skillManager = curPlayer.GetSkillManager()
        for i in xrange(skillManager.GetSkillCount()):
            hasSkill = skillManager.GetSkillByIndex(i)
            hasSkillID = hasSkill.GetSkillID()
            hasSkillID = hasSkill.GetSkillTypeID()
            ipyData = IpyGameDataPY.GetIpyGameDataByCondition('SkillElement', {'MainSkillID':hasSkillID}, False, False)
            if not ipyData:
                continue