hxp
2019-01-07 73b55c6865b24648ed53ed3b6092eda82342f368
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -1944,16 +1944,18 @@
    sendPack.FuncLineID = funcLineID
    
    NetPackCommon.SendFakePack(curPlayer, sendPack)
    GameWorld.Log("准备切换地图", curPlayer.GetID())
    return
# 通知开始切换地图
def NotifyStartChangeMap(curPlayer):
    GameWorld.DebugLog("通知开始切换地图, NotifyStartChangeMap")
    sendPack = ChPyNetSendPack.tagMCStartChangeMap()
    sendPack.Clear()
    sendPack.MapID = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ChangeMapID)
    sendPack.FuncLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBFuncLine)
    NetPackCommon.SendFakePack(curPlayer, sendPack)
    GameWorld.Log("通知开始切换地图", curPlayer.GetID())
    return
#---------------------------------------------------------------------
@@ -3313,22 +3315,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
#---------------------------------------------------------------------
## 功能模块战斗力类
@@ -6459,7 +6496,12 @@
    
#---当前防护值,需存DB----
def GetProDef(curPlayer): return curPlayer.GetExAttr4()
def SetProDef(curPlayer, value): curPlayer.SetExAttr4(value)
def SetProDef(curPlayer, value):
    if GameWorld.IsCrossServer():
        curPlayer.SetExAttr4(value, True) # 跨服服务器需要广播周围玩家
    else:
        curPlayer.SetExAttr4(value)
#---最大防护值----
def GetMaxProDef(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrMaxProDef)
def SetMaxProDef(curPlayer, value):