From 038ec15bf9d4d442fddf3d26dab1254e4b86d125 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 19 三月 2019 19:46:55 +0800 Subject: [PATCH] 6357 【后端】【2.0】任务给物品优化,支持拍品处理 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py | 128 ++++++++++++++---------------------------- 1 files changed, 43 insertions(+), 85 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 fb59904..fb88005 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py @@ -25,18 +25,13 @@ import ShareDefine import GameWorld import ChConfig -import PlayerMagicWeapon import PlayerSuccess import OpenServerCampaign import PlayerBillboard import EventShell +import DataRecordPack #------------------------------------------------------------------------------ -( -StopSitType1, #离线中断 -StopSitType2, #主动中断 -StopSitType3, #被采集打断 -)=range(1,4) def DoOfficialOpen(curPlayer): @@ -46,8 +41,7 @@ # DoRealmLVUpLogic(curPlayer) return True -def OnLogin(curPlayer): - +def OnLogin(curPlayer): SyncRealmFBState(curPlayer) return @@ -61,66 +55,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,15 +108,35 @@ 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 -def DoRealmLVUpLogic(curPlayer): +def DoRealmLVUpLogic(curPlayer, needSys=True): curRealmLV = curPlayer.GetOfficialRank() nextRealmLv = curRealmLV + 1 GameWorld.DebugLog(' 升级境界nextRealmLv=%s'%nextRealmLv) @@ -184,10 +146,15 @@ curPlayer.SetOfficialRank(nextRealmLv) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBIsOpen, 0) - - #realmIpyData = GetRealmIpyData(curRealmLV) - #if realmIpyData and realmIpyData.GetIsBigRealm(): - PlayerControl.WorldNotify(0, 'RealmUpSuccess', [curPlayer.GetName(), nextRealmLv]) + if needSys: + addBuffID = nextRealmIpyData.GetBuffID() + if addBuffID: + PlayerControl.WorldNotify(0, 'BigRealmUpSuccess', [curPlayer.GetName(), 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]) + RefreshOfficialAttr(curPlayer) GameFuncComm.DoFuncOpenLogic(curPlayer) SyncRealmFBState(curPlayer) @@ -198,6 +165,8 @@ # 记录开服活动 OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_RealmLV, nextRealmLv) EventShell.EventRespons_RealmUp(curPlayer, nextRealmLv) + #流向 + DataRecordPack.DR_RealmLVUp(curPlayer, nextRealmLv) return True def DologicDujieFBPass(curPlayer, realmLV, star): @@ -205,21 +174,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 -- Gitblit v1.8.0