xdh
2019-03-11 aecf8422a914350ccbf779178a1fdc1acc8971c7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
@@ -25,7 +25,6 @@
import ShareDefine
import GameWorld
import ChConfig
import PlayerMagicWeapon
import PlayerSuccess
import OpenServerCampaign
import PlayerBillboard
@@ -61,66 +60,14 @@
#};
def OpenRealmFB(index, clientData, tick):
    return
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Official):
        GameWorld.DebugLog("爵位境界功能未开启, 无法开启渡劫!curLV=%s" % curPlayer.GetLV())
        return
    
    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmFBIsOpen):
        GameWorld.DebugLog("渡劫已开启,无法再次开启!")
        return
    curRealmLV = curPlayer.GetOfficialRank()
    realmIpyData = GetRealmIpyData(curRealmLV)
    if not realmIpyData:
        GameWorld.ErrLog("没有该境界等级数据! Lv=%s" % curRealmLV)
        return
    needRealmPoint = realmIpyData.GetNeedPoint()
    if not needRealmPoint:
        GameWorld.DebugLog("境界已是最大等级,不能升级! Lv=%s" % curRealmLV, curPlayer.GetPlayerID())
        return
    if not PlayerControl.HaveMoney(curPlayer, ShareDefine.TYPE_Price_RealmPoint, needRealmPoint, False):
        GameWorld.DebugLog("境界修炼点不足,无法开启渡劫!needRealmPoint=%s" % (needRealmPoint), curPlayer.GetPlayerID())
        return
    needActiveTreasureDict = realmIpyData.GetNeedActiveTreasure()
    for mwType, needActiveCnt in needActiveTreasureDict.items():
        activeCnt = PlayerMagicWeapon.GetMWActiveCntByType(curPlayer, mwType)
        if activeCnt < needActiveCnt:
            GameWorld.DebugLog("开启渡劫 需要法宝的激活条件不满足! needActiveTreasureDict=%s,法宝类型=%s, 已激活数量=%s" % (needActiveTreasureDict, mwType, activeCnt))
            return
    needItemID = realmIpyData.GetNeedItemID()
    needItemCount = realmIpyData.GetNeedItemCnt()
    # 支持不消耗物品升级
    if needItemID > 0 and needItemCount > 0:
        curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
        hasEnough, itemIndexList = ItemCommon.GetItem_FromPack_ByID(needItemID, curPack, needItemCount)
        if not hasEnough:
            GameWorld.DebugLog("渡劫开启, 材料不足! Lv=%s, needItemID=%s,needItemCount=%s"
                               % (curRealmLV, needItemID, needItemCount))
            return
        #扣除物品
        ItemCommon.ReduceItem(curPlayer, curPack, itemIndexList, needItemCount, True, "Realm")
    PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_RealmPoint, needRealmPoint)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBIsOpen, 1)
    SyncRealmFBState(curPlayer)
    GameWorld.Log("开启渡劫副本成功: curRealmLV=%s" % curRealmLV, curPlayer.GetPlayerID())
    return
def SyncRealmFBState(curPlayer):
    #通知客户端渡劫副本是否开启
    return
    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Official):
        return
    sendPack = ChPyNetSendPack.tagMCSyncRealmFBIsOpen()
    sendPack.IsOpen = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmFBIsOpen)
    sendPack.SitAllTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmSitAllTime)
    sendPack.SitRemainTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmSitRemainTime)
    sendPack.SitStartTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmSitStartTime)
    #sendPack.LastEnterTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmFBLastEnterTime)
    sendPack = ChPyNetSendPack.tagMCSyncRealmInfo()
    sendPack.IsPass = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmFBIsOpen)
    NetPackCommon.SendFakePack(curPlayer, sendPack)
    return
@@ -166,10 +113,30 @@
def DoRealmLVUp(index, clientData, tick):
    #升级境界
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    canLvUp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmFBIsOpen) == 2
    if not canLvUp:
        GameWorld.DebugLog('    不能升级境界')
    curRealmLV = curPlayer.GetOfficialRank()
    realmIpyData = GetRealmIpyData(curRealmLV)
    if not realmIpyData:
        GameWorld.ErrLog("没有该境界等级数据! Lv=%s" % curRealmLV)
        return
    if realmIpyData.GetBossID():
        canLvUp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmFBIsOpen) == 1
        if not canLvUp:
            GameWorld.DebugLog('    副本未过关,不能升级境界')
            return
    needItemID = realmIpyData.GetNeedItemID()
    needItemCount = realmIpyData.GetNeedItemCnt()
    # 支持不消耗物品升级
    if needItemID > 0 and needItemCount > 0:
        curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
        hasEnough, itemIndexList = ItemCommon.GetItem_FromPack_ByID(needItemID, curPack, needItemCount)
        if not hasEnough:
            GameWorld.DebugLog("渡劫开启, 材料不足! Lv=%s, needItemID=%s,needItemCount=%s"
                               % (curRealmLV, needItemID, needItemCount))
            return
        #扣除物品
        ItemCommon.ReduceItem(curPlayer, curPack, itemIndexList, needItemCount, True, "Realm")
    
    DoRealmLVUpLogic(curPlayer)
    return
@@ -197,10 +164,7 @@
    OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_RealmLV, nextRealmLv)
    EventShell.EventRespons_RealmUp(curPlayer, nextRealmLv)
    #流向
    realmPoint = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_RealmPoint)
    realmIpyData = GetRealmIpyData(curRealmLV)
    needRealmPoint = realmIpyData.GetNeedPoint() if realmIpyData else 0
    DataRecordPack.DR_RealmLVUp(curPlayer, nextRealmLv, realmPoint, needRealmPoint)
    DataRecordPack.DR_RealmLVUp(curPlayer, nextRealmLv)
    return True
def DologicDujieFBPass(curPlayer, realmLV, star):
@@ -208,21 +172,10 @@
    realmIpyData = GetRealmIpyData(realmLV)
    if not realmIpyData:
        return
    needRealmPoint = realmIpyData.GetNeedPoint()
    PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_RealmPoint, needRealmPoint)
    DoRealmLVUpLogic(curPlayer)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBIsOpen, 0)
#    sitTimeDict = realmIpyData.GetSitTime()
#    sitSecond = sitTimeDict.get(str(star), 0)
#    if sitSecond == 0:
#        #没有打坐时间,直接升境界
#        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBIsOpen, 2)
#    else:
#        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmSitAllTime, sitSecond)
#        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmSitRemainTime, sitSecond)
#    SyncRealmFBState(curPlayer)
    #DoRealmLVUpLogic(curPlayer)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBIsOpen, 1)
    SyncRealmFBState(curPlayer)
    
    return