From d3141684a2efd63ec4d70a6d26cd771fe2b257b8 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 20 十一月 2019 16:39:56 +0800 Subject: [PATCH] 8341 【恺英】【后端】强化进化系统优化(强化等级上限修改为关联进化等级,去除星级关联,进化修改) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py | 145 ++++++++++++++++++++---------------------------- 1 files changed, 60 insertions(+), 85 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py index 1392c23..4897a13 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py @@ -58,15 +58,16 @@ # 判断 1.装备 2.最高强化等级, 3.铜钱数 if packType not in ChConfig.Pack_EquipPart_CanPlusStar: - GameWorld.DebugLog("packType not in ChConfig.Pack_EquipPart_CanPlusStar", playerID) + #GameWorld.DebugLog("packType not in ChConfig.Pack_EquipPart_CanPlusStar", playerID) return + ipyData = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'GridIndex':index}) if not ipyData: return equipPlace = ipyData.GetEquipPlace() - indexList = ChConfig.Pack_EquipPart_CanPlusStar[packType] - if equipPlace not in indexList: - GameWorld.Log(" index not in ChConfig.Pack_EquipPart_CanPlusStar", playerID) + equipPlaceList = ChConfig.Pack_EquipPart_CanPlusStar[packType] + if equipPlace not in equipPlaceList: + #GameWorld.Log("index=%s, equipPlace=%s not in ChConfig.Pack_EquipPart_CanPlusStar" % (index, equipPlace), playerID) return # 暂不判断开启等级由客户端处理 @@ -74,94 +75,58 @@ curPack = curPlayer.GetItemManager().GetPack(packType) curEquip = curPack.GetAt(index) if not curEquip or curEquip.IsEmpty(): - GameWorld.DebugLog("OnEquipMayaPlus() equip is empty") + GameWorld.DebugLog("equip is empty") return - maxPlusLV = ItemCommon.GetItemMaxPlusLV(curPlayer, index, curEquip) - curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index) - if curPartPlusLV >= maxPlusLV: - GameWorld.Log("OnEquipMayaPlus:curPartPlusLV(%s) >= maxPlusLV(%s)" % (curPartPlusLV, maxPlusLV), playerID) - return - - # 强化处理 - result = DoLogic_EquipMayaPlus(curPlayer, curEquip, packType, index) - - updPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index) - #GameWorld.Log(" result=%s,curStarLV=%s,updStarLV=%s" % (result, curPartPlusLV, updPartStarLV), playerID) - if result == ChConfig.Def_ComposeState_None: - return - - #=========================================================================== - # curPlayer.Sync_MakeItemAnswer(ShareDefine.Def_mitEquipMayaPlus, result) - - # 每日活动 - PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_EquipPlus) - PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_EquipPlus, 1) - #=========================================================================== - - - # 强化变更时处理 - if curPartPlusLV != updPartPlusLV: - DoLogic_OnEquipPartStarLVChange(curPlayer, packType, ItemCommon.GetItemClassLV(curEquip)) - # 增加强化成就 - PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlus, 1) - EventShell.EventRespons_EquipPlus(curPlayer, ipyData.GetClassLV(), updPartPlusLV) - return - - - -## 开始装备强化 -# @param index 为装备位 -# @return -def DoLogic_EquipMayaPlus(curPlayer, curEquip, packType, index): - result = ChConfig.Def_ComposeState_None - findType = ChEquip.GetEquipPlusType(curEquip) - if findType == -1: - return result + if not findType: + return curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index) - ipyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartPlusLV) - if not ipyData: + plusIpyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartPlusLV) + if not plusIpyData: return - costSilver = ipyData.GetCostCount() - - if not PlayerControl.HaveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver): - # 金币不足,返回 - return result - - totalExp = ipyData.GetTotalExp() - curExp = ChEquip.GetEquipPartProficiency(curPlayer, packType, index) + ipyData.GetAddExp() - + costSilver = plusIpyData.GetCostCount() + if not costSilver: + #GameWorld.DebugLog("已到强化最大等级! curPartPlusLV=%s" % curPartPlusLV, playerID) + return + + curEvolveLV = ChEquip.GetEquipPartPlusEvolveLV(curPlayer, packType, index) # 进化等级 + nextEvolveLV = curEvolveLV + 1 + evolveIpyData = IpyGameDataPY.GetIpyGameDataNotLog('EquipPlusEvolve', equipPlace, nextEvolveLV) + if not evolveIpyData: + return + maxPlusLV = evolveIpyData.GetNeedPlusLV() + if curPartPlusLV >= maxPlusLV: + GameWorld.Log("已到当前强化最大等级,进化后增加强化等级上限! curPartPlusLV(%s) >= maxPlusLV(%s), curEvolveLV=%s" + % (curPartPlusLV, maxPlusLV, curEvolveLV), playerID) + return + + if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver, isNotify=False): + return + + totalExp = plusIpyData.GetTotalExp() + curExp = ChEquip.GetEquipPartProficiency(curPlayer, packType, index) + plusIpyData.GetAddExp() + if curExp >= totalExp: #升级 - curPartPlusLV = __EquipMayaPlusChange(curPlayer, packType, curEquip, index) + curPartPlusLV += 1 curExp = curExp - totalExp + __EquipMayaPlusChange(curPlayer, packType, curEquip, index, curPartPlusLV) + DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartPlusLV) ChEquip.SetEquipPartProficiency(curPlayer, packType, index, curExp) ChEquip.NotifyEquipPartPlusLV(curPlayer, packType, index) - # 支付金币 - PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver, isNotify=False) + PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_EquipPlus) + PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_EquipPlus, 1) + return - DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartPlusLV) - return ChConfig.Def_ComposeState_Sucess - - - -## 玛雅加强等级改变 -# @param curPlayer: 玩家 -# @param packType: 背包类型 -# @param curEquip: 当前装备 -# @param succeedRate: 成功率 -# @param failStarLV: 失败时的强化数 -# @return -def __EquipMayaPlusChange(curPlayer, packType, curEquip, index): - curPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index) - updPlusLV = curPlusLV + 1 +def __EquipMayaPlusChange(curPlayer, packType, curEquip, index, updPlusLV): + ## 玛雅加强等级改变 + ChEquip.SetEquipPartPlusLV(curPlayer, packType, index, curEquip, updPlusLV) broadCastLVList = IpyGameDataPY.GetFuncEvalCfg("StrengthenLevelBroadCast", 1) - #GameWorld.DebugLog("PlusLVChange index=%s,updPlusLV=%s,broadCastLVList=%s" % (index, updPlusLV, broadCastLVList)) if updPlusLV in broadCastLVList: itemID = curEquip.GetItemTypeID() userData = curEquip.GetUserData() @@ -169,12 +134,18 @@ msgParamList = [curPlayer.GetPlayerName(), itemID, userData, guid, updPlusLV] PlayerControl.WorldNotify(0, "StrengthenCongratulation", msgParamList) + classLV = ItemCommon.GetItemClassLV(curEquip) # 成就 #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlusLV, 1, [updPlusLV]) - + + DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV) + # 增加强化成就 + PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlus, 1) + EventShell.EventRespons_EquipPlus(curPlayer, classLV, updPlusLV) + # 开服活动数据 - #OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_PlusLV, ChEquip.GetTotalPlusLV(curPlayer)) - return updPlusLV + OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_PlusLV, ChEquip.GetTotalPlusLV(curPlayer)) + return def DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV): @@ -204,29 +175,33 @@ if not ItemCommon.CheckItemCanUse(curEquip): return curEvolveLV = ChEquip.GetEquipPartPlusEvolveLV(curPlayer, packType, equipPackindex) - maxEvolveLV = ItemCommon.GetItemMaxPlusEvolveLV(curPlayer, equipPackindex, curEquip) - if curEvolveLV >= maxEvolveLV: - GameWorld.DebugLog('装备强化进化, 已达最大进化等级equipPackindex=%s, maxEvolveLV=%s'%(equipPackindex, maxEvolveLV)) - return nextEvolveLV = curEvolveLV + 1 equipPlace = curEquip.GetEquipPlace() ipyData = IpyGameDataPY.GetIpyGameData('EquipPlusEvolve', equipPlace, nextEvolveLV) if not ipyData: return + needPlusLV = ipyData.GetNeedPlusLV() + curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, equipPackindex) + if curPartPlusLV < needPlusLV: + GameWorld.DebugLog("强化等级不足,无法进化! curPartPlusLV=%s < needPlusLV=%s, nextEvolveLV=%s" + % (curPartPlusLV, needPlusLV, nextEvolveLV)) + return + costItemDict = ipyData.GetCostItem() delItemDict = {} itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem) for itemID, itemCnt in costItemDict.items(): hasEnough, indexList, findItemIsBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(itemID, itemPack, itemCnt) if not hasEnough: - GameWorld.DebugLog('装备强化进化 材料不足itemID= %s,itemCnt=%s'%(itemID, itemCnt)) + GameWorld.DebugLog('装备强化进化 材料不足itemID= %s,itemCnt=%s' % (itemID, itemCnt)) return delItemDict[tuple(indexList)] = itemCnt for itemIndexList, delCnt in delItemDict.items(): ItemCommon.ReduceItem(curPlayer, itemPack, itemIndexList, delCnt, True, ChConfig.ItemDel_EquipPlusEvolve) - + ChEquip.SetEquipPartPlusEvolveLV(curPlayer, packType, equipPackindex, nextEvolveLV) DoLogic_OnEquipPartStarLVChange(curPlayer, packType, ItemCommon.GetItemClassLV(curEquip)) ChEquip.NotifyEquipPartPlusLV(curPlayer, packType, equipPackindex) EventShell.EventRespons_EquipPlusEvolve(curPlayer, nextEvolveLV) return + -- Gitblit v1.8.0