xdh
2019-05-05 3811d20e99c0e2ce28a3e9edea805598e59f68af
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
@@ -43,7 +43,7 @@
    return True
def OnLogin(curPlayer):
def OnLogin(curPlayer):
    SyncRealmFBState(curPlayer)
    UpdateRealmExp(curPlayer, False)
    NotifyRealmExpInfo(curPlayer)
@@ -185,7 +185,7 @@
    GameFuncComm.DoFuncOpenLogic(curPlayer)
    SyncRealmFBState(curPlayer)
    #更新修为速率
    UpdateRealmExp(curPlayer, False)
    UpdateRealmExp(curPlayer, False, True)
    NotifyRealmExpInfo(curPlayer)
    #境界提升成就
    PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_RealmlvUp, nextRealmLv)
@@ -236,9 +236,10 @@
    return
def UpdateRealmExp(curPlayer, isNotify=True):
def UpdateRealmExp(curPlayer, isNotify=True, isRealmLVUP=False):
    ##更新境界修为池
    ipyData = GetRealmIpyData(curPlayer.GetOfficialRank())
    curRealmLV = curPlayer.GetOfficialRank()
    ipyData = GetRealmIpyData(curRealmLV)
    if not ipyData:
        return 0
    if not ipyData.GetExpRate():
@@ -248,21 +249,32 @@
    if not beginTime:
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpBeginTime, curTime)
        return 0
    if isRealmLVUP:
        ipyData = GetRealmIpyData(curRealmLV-1)
    curRealmExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExp)
    curRealmExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpPoint)
    curTotalExp = curRealmExpPoint * ChConfig.Def_PerPointValue + curRealmExp
    if curTotalExp >= ipyData.GetExpLimit():
        return curTotalExp
    passSeconds = curTime - beginTime
    if passSeconds <= 0:
        return curTotalExp
    ipyData = GetRealmIpyData(curPlayer.GetOfficialRank())
    if not ipyData:
        return curTotalExp
    addExp = passSeconds / IpyGameDataPY.GetFuncCfg('RealmExpTime') * ipyData.GetExpRate()
    perRealmExpTime = IpyGameDataPY.GetFuncCfg('RealmExpTime')
    curExpRate = ipyData.GetExpRate()
    #buff增加的额外经验
    buffRemainTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBuffRemainTime)
    buffAddRate = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBuffAddRate)
    buffTime = min(buffRemainTime, passSeconds)
    addExp = buffTime /perRealmExpTime*(curExpRate*(ShareDefine.Def_MaxRateValue + buffAddRate)/ShareDefine.Def_MaxRateValue) + (passSeconds-buffTime)/perRealmExpTime*curExpRate
    #addExp = passSeconds / perRealmExpTime * curExpRate
    if addExp <= 0:
        return curTotalExp
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpBeginTime, curTime)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpBuffRemainTime, buffRemainTime - buffTime)
    
    updTotalExp = min(curTotalExp + addExp, ipyData.GetExpLimit())
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExp, updTotalExp % ChConfig.Def_PerPointValue)
@@ -272,11 +284,22 @@
        NotifyRealmExpInfo(curPlayer)
    return updTotalExp
def AddRealmExpBuffTime(curPlayer, addTime, addRate):
    ##增加会灵丹BUFF时间
    UpdateRealmExp(curPlayer, False)
    remainTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBuffRemainTime)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpBuffRemainTime, remainTime + addTime)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmExpBuffAddRate, addRate)
    NotifyRealmExpInfo(curPlayer)
    return
def NotifyRealmExpInfo(curPlayer):
    ##通知修为池信息
    sendPack = ChPyNetSendPack.tagMCRealmExpInfo()
    sendPack.BeginTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBeginTime)
    sendPack.BuffTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBuffRemainTime)
    sendPack.BuffAddRate = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpBuffAddRate)
    sendPack.CurExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExp)
    sendPack.CurExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmExpPoint)
    NetPackCommon.SendFakePack(curPlayer, sendPack)