From 0cb288fc2cad76d7cd8150a3e0b15bbe0eff2c1e Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期二, 05 三月 2019 10:57:47 +0800 Subject: [PATCH] 6307 【后端】【2.0】多套装备开发单(强化) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py | 92 +++++++++++++++++++++++++++++++--------------- 1 files changed, 62 insertions(+), 30 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 11a1732..d2dfe21 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 @@ -60,9 +60,12 @@ if packType not in ChConfig.Pack_EquipPart_CanPlusStar: 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 index not in indexList: + if equipPlace not in indexList: GameWorld.Log(" index not in ChConfig.Pack_EquipPart_CanPlusStar", playerID) return @@ -74,17 +77,17 @@ GameWorld.DebugLog("OnEquipMayaPlus() equip is empty") return - maxStarLV = ItemCommon.GetItemMaxPlusLV(curEquip) - curPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index) - if curPartStarLV >= maxStarLV: - GameWorld.Log("OnEquipMayaPlus:curPartStarLV(%s) >= maxStarLV(%s)" % (curPartStarLV, maxStarLV), playerID) + 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) - updPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index) - #GameWorld.Log(" result=%s,curStarLV=%s,updStarLV=%s" % (result, curPartStarLV, updPartStarLV), playerID) + 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 @@ -98,8 +101,8 @@ # 强化变更时处理 - if curPartStarLV != updPartStarLV: - DoLogic_OnEquipPartStarLVChange(curPlayer, packType) + if curPartPlusLV != updPartPlusLV: + DoLogic_OnEquipPartStarLVChange(curPlayer, packType, ItemCommon.GetItemClassLV(curEquip)) # 增加强化成就 PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlus, 1) EventShell.EventRespons_EquipPlus(curPlayer) @@ -117,8 +120,8 @@ if findType == -1: return result - curPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index) - ipyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartStarLV) + curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index) + ipyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartPlusLV) if not ipyData: return costSilver = ipyData.GetCostCount() @@ -132,7 +135,7 @@ if curExp >= totalExp: #升级 - curPartStarLV = __EquipMayaPlusChange(curPlayer, packType, curEquip, index) + curPartPlusLV = __EquipMayaPlusChange(curPlayer, packType, curEquip, index) curExp = curExp - totalExp ChEquip.SetEquipPartProficiency(curPlayer, packType, index, curExp) @@ -140,7 +143,7 @@ # 支付金币 PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver, isNotify=False) - DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartStarLV) + DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartPlusLV) return ChConfig.Def_ComposeState_Sucess @@ -165,9 +168,7 @@ # 成就 #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlusLV, 1, [updPlusLV]) - - - + #任务触发 #EventShell.EventRespons_OnEquipPartStarUp(curPlayer, setLV) # 开服活动数据 @@ -175,24 +176,55 @@ return updPlusLV -def DoLogic_OnEquipPartStarLVChange(curPlayer, packType): +def DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV): #先刷装备BUFF 再计算属性 curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrActivatyNotify, ChConfig.Def_AttrActivatyNotify_Plus) - ChEquip.RefreshPlayerEquipAttribute(curPlayer) + ChEquip.RefreshPlayerEquipAttribute(curPlayer, classLV) #刷新所有属性 playControl = PlayerControl.PlayerControl(curPlayer) playControl.RefreshPlayerAttrState() return - -## 全身12部位强化等级最低的一件强化等级 -#def GetMinPlusLV(curPlayer): -# packType = IPY_GameWorld.rptEquip -# minPlusLV = GetMaxEquipPartStarLV() -# equipPartIndexList = ChConfig.Pack_EquipPart_CanPlusStar.get(packType, []) -# for i in equipPartIndexList: -# partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, i) -# if partStarLV < minPlusLV: -# minPlusLV = partStarLV -# return minPlusLV +#// A3 16 装备强化进化 #tagCMEquipPlusEvolve +#struct tagCMEquipPlusEvolve +#{ +# tagHead Head; +# WORD ItemIndex; //装备在背包中索引 +#}; +def OnEquipPlusEvolve(playerIndex, clientData, tick): + curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex) + + equipPackindex = clientData.ItemIndex + + packType = IPY_GameWorld.rptEquip + curPack = curPlayer.GetItemManager().GetPack(packType) + curEquip = curPack.GetAt(equipPackindex) + 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 + 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)) + 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) + return -- Gitblit v1.8.0