hxp
2018-10-27 13f198c654224716bf5d171af9bd0fbb82b8dc5b
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -1316,15 +1316,17 @@
def GetPlayerLeaveServerTick(playerID):
    # 获取玩家从本地图中离线时的tick, 最大支持1小时, 如果有需要大于1小时的请调整超时限制
    # 注: 返回值为None时,只能代表玩家不是在本地图离线1小时内,并不能代表玩家当前是否在线状态,可能在其他地图
    # 注: 返回值为0时,只能代表玩家不是在本地图离线1小时内,并不能代表玩家当前是否在线状态,可能在其他地图
    if playerID not in PyGameData.g_disconnectPlayer:
        return
        return 0
    return PyGameData.g_disconnectPlayer[playerID][0]
def GetPlayerLeaveServerPos(playerID):
    # 获取玩家从本地图中离线时的坐标
    # 注:使用本函数时,一定要先使用函数 GetPlayerLeaveServerTick 确保是从本地图中离线的才可使用
    # @return: posX, posY
    if playerID not in PyGameData.g_disconnectPlayer:
        return
        return 0, 0
    return PyGameData.g_disconnectPlayer[playerID][1:3]
def RemoveTimeoutLeaveServerPlayerInfo(tick):
@@ -3318,18 +3320,33 @@
# @remarks 获得玩家升级, 获得的属性点
def GetLvUp_AddPoint(curPlayer):
    curPlayerID = curPlayer.GetID()
    curReinCnt = curPlayer.GetReincarnationLv() # 当前转生次数
    curLV = curPlayer.GetLV() # 当前等级
    
    addPointList = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1)
    addPoint = addPointList[-1] if curReinCnt >= len(addPointList) else addPointList[curReinCnt]
    addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {})
    addPoint = GameWorld.GetDictValueByRangeKey(addPointDict, curLV, 0)
    
    if addPoint == None:
        raise Exception('玩家获得升级属性点异常, reincarnationLv = %s PlayerID = %s' % (curReinCnt, curPlayerID))
        raise Exception('玩家获得升级属性点异常, curLV = %s PlayerID = %s' % (curLV, curPlayerID))
        return
    
    return int(addPoint)
def DoAddPointOpen(curPlayer):
    '''加点功能开启 处理给自由属性点及老号处理
                    清除老服玩家未加点的点数(清零),以前加的加点属性不清除,属性不变,战力不减, 根据最新的加点开启等级和老服玩家的当前等级,相差的差值给予玩家对应的加点点数'''
    beforeFreePoint = curPlayer.GetFreePoint()
    addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {})
    initFreePoint = IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 2)
    openLV = GameFuncComm.GetFuncLimitLV(ShareDefine.GameFuncID_AddPoint)
    setFreePoint = initFreePoint
    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)
    GameWorld.DebugLog('    加点功能开启处理  beforeFreePoint=%s,curLV=%s, setFreePoint=%s'%(beforeFreePoint, curLV, setFreePoint), curPlayer.GetID())
    return
#---------------------------------------------------------------------
## 功能模块战斗力类