From 751709e3494aad919e4313c26066be24e2d4bf8a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 09 五月 2019 14:10:54 +0800 Subject: [PATCH] 6711 【后端】【2.0】洗练从0级开始洗练 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py | 61 +++++++++++++++++++++++++----- 1 files changed, 51 insertions(+), 10 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py index cde63ee..5629cf1 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py +++ b/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) @@ -143,6 +143,21 @@ DoRealmLVUpLogic(curPlayer) return +# 提升1级境界加点 +def __DoRealmLVUpAddPoint(curPlayer): + if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_AddPoint): + # 未开启前不可加点,因为DoAddPointOpen会一次性补齐,避免意外情况多加了点数 + return + + curFreePoint = curPlayer.GetFreePoint() + addPoint = IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 3) + if addPoint != 0: + setFreePoint = curFreePoint + addPoint + DataRecordPack.DR_Freepoint(curPlayer, "RealmLVUp", addPoint) + curPlayer.SetFreePoint(setFreePoint) + + return + def DoRealmLVUpLogic(curPlayer, needSys=True): curRealmLV = curPlayer.GetOfficialRank() @@ -153,21 +168,24 @@ return curPlayer.SetOfficialRank(nextRealmLv) + # 提升1级境界加点 + __DoRealmLVUpAddPoint(curPlayer) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBIsOpen, 0) if needSys: addBuffID = nextRealmIpyData.GetBuffID() if addBuffID: - PlayerControl.WorldNotify(0, 'BigRealmUpSuccess', [curPlayer.GetName(), nextRealmLv, IpyGameDataPY.GetFuncCfg('RadioExpRealm')]) + PlayerControl.WorldNotify(0, 'BigRealmUpSuccess', [curPlayer.GetName(), curPlayer.GetID(), nextRealmLv, IpyGameDataPY.GetFuncCfg('RadioExpRealm')]) msgStr = str(addBuffID) GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'RealmUpAddBuff', msgStr, len(msgStr)) else: - PlayerControl.WorldNotify(0, 'RealmUpSuccess', [curPlayer.GetName(), nextRealmLv]) + PlayerControl.WorldNotify(0, 'RealmUpSuccess', [curPlayer.GetName(), curPlayer.GetID(), nextRealmLv]) RefreshOfficialAttr(curPlayer) GameFuncComm.DoFuncOpenLogic(curPlayer) SyncRealmFBState(curPlayer) #更新修为速率 - UpdateRealmExp(curPlayer, False) + UpdateRealmExp(curPlayer, False, True) NotifyRealmExpInfo(curPlayer) #境界提升成就 PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_RealmlvUp, nextRealmLv) @@ -218,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(): @@ -230,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) @@ -254,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) -- Gitblit v1.8.0