From 469a1fd9bb55f55195fe3f7f30553e61145cc4e4 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 22 四月 2019 14:27:34 +0800 Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(采集物可配置攻击是否打断采集) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py | 235 ++++++++++++++++++++++++++++++++-------------------------- 1 files changed, 129 insertions(+), 106 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py index cc6f62a..521fbce 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py @@ -30,8 +30,9 @@ import PlayerSuccess import PlayerWeekParty import ShareDefine +#import EquipZhuXian - +g_stoneCanPlaceList = [] #可镶嵌的位置 def OnLogin(curPlayer): ###登录发包同步客户端宝石信息 @@ -40,21 +41,30 @@ def GetAllStoneEquipIndexList(): ###得到所有可镶嵌宝石装备位列表 - + global g_stoneCanPlaceList + if g_stoneCanPlaceList: + return g_stoneCanPlaceList #获得宝石类型数量 GemTypeCount = IpyGameDataPY.GetFuncCfg("GemTypeCount") #获得所有可镶嵌宝石装备位 - stoneCanPlaceList = [] + g_stoneCanPlaceList = [] for stoneTypeIndex in xrange(1, GemTypeCount + 1): #循环宝石类型对应的装备位 - stoneCanPlaceList += IpyGameDataPY.GetFuncEvalCfg("GemType%s" % stoneTypeIndex, 1) - - return stoneCanPlaceList + placeList = IpyGameDataPY.GetFuncEvalCfg("GemType%s" % stoneTypeIndex, 1) + for place in placeList: + ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'EquipPlace':place}, True) + if not ipyDataList: + continue + for ipyData in ipyDataList: + gridIndex = ipyData.GetGridIndex() + if gridIndex not in g_stoneCanPlaceList: + g_stoneCanPlaceList.append(gridIndex) + return g_stoneCanPlaceList def GetAllEquipPlaceHoleIndex(): ### 得到装备位所有孔位 - gemOpenClassLVList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 1) - maxEquipHoleCnt = len(gemOpenClassLVList) # 最大装备阶级开放孔数 + gemOpenNeedStarList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 1) + maxEquipHoleCnt = len(gemOpenNeedStarList) # 最大装备阶级开放孔数 gemOpenVipList = IpyGameDataPY.GetFuncEvalCfg("GemOpenVip", 1) maxHoleVipCnt = len(gemOpenVipList)# 最大Vip开放孔数 @@ -85,10 +95,22 @@ def SetEquipIndexStoneIDAndIsBand(curPlayer, equipIndex, holeIndex, changeStoneID, isBind): ### 保存装备位孔位宝石ID和绑定信息 + isBind = 0 #现绑定无用,默认存0 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartStoneID % (equipIndex, holeIndex), changeStoneID * ChConfig.Def_Stone_SaveStoneInfoXNumber + isBind) return +def GetPackTypeByEquipPlace(equipPlace): + ##目前支持镶嵌普通装备、诛仙装备 +# if equipPlace in ShareDefine.ZhuXianEquipPlace: +# equipPackType = ShareDefine.rptZhuXianEquip +# stonePackType = ShareDefine.rptZhuXianItem +# placeIndex = EquipZhuXian.GetZhuXianEquipIndexByPlace(equipPlace) +# else: + equipPackType = IPY_GameWorld.rptEquip + stonePackType = IPY_GameWorld.rptItem + placeIndex = equipPlace + return equipPackType, stonePackType, placeIndex #//A3 04 宝石镶嵌或替换 #tagCMEquipEnchase #struct tagCMEquipEnchase @@ -103,25 +125,26 @@ playerID = curPlayer.GetPlayerID() # 验证背包类型合法性 - equipIndex = clientData.EquipIndex + equipPackIndex = clientData.EquipIndex stoneIndex = clientData.StoneIndex holeIndex = clientData.HoleIndex - GameWorld.DebugLog("宝石镶嵌: equipIndex=%s,stoneIndex=%s,holeIndex=%s" % (equipIndex, stoneIndex, holeIndex), playerID) + GameWorld.DebugLog("宝石镶嵌: equipPackIndex=%s,stoneIndex=%s,holeIndex=%s" % (equipPackIndex, stoneIndex, holeIndex), playerID) + equipPackType, stonePackType, placeIndex = GetPackTypeByEquipPlace(equipPackIndex) #获得装备位装备实例 - equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) - curEquip = equipPack.GetAt(equipIndex) + equipPack = curPlayer.GetItemManager().GetPack(equipPackType) + curEquip = equipPack.GetAt(placeIndex) if not ItemCommon.CheckItemCanUse(curEquip): GameWorld.Log("目标装备为空或不可用,无法镶嵌!", playerID) return #获得宝石实例 - itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem) + itemPack = curPlayer.GetItemManager().GetPack(stonePackType) curStone = itemPack.GetAt(stoneIndex) - if not ItemCommon.CheckItemCanUse(curStone): + if not ItemCommon.CheckItemCanUse(curStone) or ItemControler.GetIsAuctionItem(curStone): GameWorld.Log("目标宝石为空或不可用,无法镶嵌!", playerID) return @@ -136,33 +159,36 @@ stoneEffType = curStoneEff.GetEffectValue(0) stoneCanPlaceList = IpyGameDataPY.GetFuncEvalCfg("GemType%s" % stoneEffType, 1) - - if equipIndex not in stoneCanPlaceList: - GameWorld.Log("该宝石不可镶嵌在该装备位!stoneItemID=%s,stoneEffType=%s,stoneCanPlaceList=%s,equipPlace=%s" - % (stoneItemID, stoneEffType, stoneCanPlaceList, equipIndex), playerID) + ipyData = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'GridIndex':equipPackIndex}) + if not ipyData: + return + classLV = ipyData.GetClassLV() + if ipyData.GetEquipPlace() not in stoneCanPlaceList: + GameWorld.Log("该宝石不可镶嵌在该装备位!stoneItemID=%s,stoneEffType=%s,stoneCanPlaceList=%s,equipPackIndex=%s" + % (stoneItemID, stoneEffType, stoneCanPlaceList, equipPackIndex), playerID) return - equipClassLV = ItemCommon.GetItemClassLV(curEquip) - if not __CheckStoneHoleCanUse(curPlayer, equipClassLV, holeIndex): + equipStar = ChEquip.GetEquipPartStarByRank(curPlayer, placeIndex, curEquip) + if not __CheckStoneHoleCanUse(curPlayer, equipStar, holeIndex, equipPackType): return # 扣除宝石 - ItemCommon.DelItem(curPlayer, curStone, 1, True, ChConfig.ItemDel_EquipEnchase, {"EquipPlace":equipIndex, "HoleIndex":holeIndex}) + ItemCommon.DelItem(curPlayer, curStone, 1, True, ChConfig.ItemDel_EquipEnchase, {"equipPackIndex":equipPackIndex, "HoleIndex":holeIndex}) isBind = 1 if isBind else 0 # 变更宝石孔宝石信息 - __DoChangeEquipHoleStone(curPlayer, equipIndex, holeIndex, stoneItemID, isBind, "EquipStone", True) + __DoChangeEquipHoleStone(curPlayer, equipPackIndex, holeIndex, stoneItemID, isBind, "EquipStone", True) # #镶嵌成功 # if not curEquip.GetIsBind(): # ItemControler.SetItemIsBind(curEquip, True) # 刷新属性 - RefreshAttrByStoneAction(curPlayer, IPY_GameWorld.rptEquip, True) + RefreshAttrByStoneAction(curPlayer, equipPackType, True, classLV) #同步客户端 - Sycn_StoneHoleInfo(curPlayer, [equipIndex]) + Sycn_StoneHoleInfo(curPlayer, [equipPackIndex]) #成就 DoStoneSuccess(curPlayer) return @@ -199,6 +225,7 @@ # 记录开服活动宝石总等级 OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_StoneLV, totalStoneLV) PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_StoneTotalLV, totalStoneLV) + PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Stone, totalStoneLV, False, True) return #//A3 05 宝石摘取 #tagCMEquipStonePick @@ -212,36 +239,42 @@ curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex) playerID = curPlayer.GetPlayerID() # 验证背包类型合法性 - equipIndex = clientData.EquipIndex + equipPackIndex = clientData.EquipIndex holeIndex = clientData.HoleIndex - GameWorld.DebugLog("宝石摘除: equipIndex=%s,holeIndex=%s" % (equipIndex, holeIndex), playerID) + GameWorld.DebugLog("宝石摘除: equipPackIndex=%s,holeIndex=%s" % (equipPackIndex, holeIndex), playerID) + equipPackType, stonePackType, placeIndex = GetPackTypeByEquipPlace(equipPackIndex) #获得装备位装备实例 - equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) - curEquip = equipPack.GetAt(equipIndex) + equipPack = curPlayer.GetItemManager().GetPack(equipPackType) + curEquip = equipPack.GetAt(placeIndex) if not ItemCommon.CheckItemCanUse(curEquip): GameWorld.Log("目标装备为空或不可用,无法镶嵌!", playerID) return #验证背包空间 - if not ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem, True): + if not ItemCommon.CheckPackHasSpace(curPlayer, stonePackType, True): return # 验证宝石 - stoneID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipIndex, holeIndex)[0] + stoneID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPackIndex, holeIndex)[0] if not stoneID: GameWorld.DebugLog("孔为空或不存在宝石!") return - __DoChangeEquipHoleStone(curPlayer, equipIndex, holeIndex, 0, 0, "StonePick", True) + ipyData = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'GridIndex':equipPackIndex}) + if not ipyData: + return + classLV = ipyData.GetClassLV() + + __DoChangeEquipHoleStone(curPlayer, equipPackIndex, holeIndex, 0, 0, "StonePick", True) # 刷新属性 - RefreshAttrByStoneAction(curPlayer, IPY_GameWorld.rptEquip, False) + RefreshAttrByStoneAction(curPlayer, equipPackType, False, classLV) #同步客户端 - Sycn_StoneHoleInfo(curPlayer, [equipIndex]) + Sycn_StoneHoleInfo(curPlayer, [equipPackIndex]) totalStoneLV = GetTotalStoneLV(curPlayer) # 记录开服活动宝石总等级 @@ -282,21 +315,21 @@ playerID = curPlayer.GetPlayerID() # 验证背包类型合法性 - equipIndex = clientData.EquipIndex + equipPackIndex = clientData.EquipIndex holeIndex = clientData.HoleIndex upWay = clientData.UpWay - GameWorld.DebugLog("宝石升级: equipPlace=%s,holeIndex=%s" % (equipIndex, holeIndex), playerID) - + GameWorld.DebugLog("宝石升级: equipPackIndex=%s,holeIndex=%s" % (equipPackIndex, holeIndex), playerID) + equipPackType, stonePackType, placeIndex = GetPackTypeByEquipPlace(equipPackIndex) #获得装备位装备实例 - equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) - curEquip = equipPack.GetAt(equipIndex) + equipPack = curPlayer.GetItemManager().GetPack(equipPackType) + curEquip = equipPack.GetAt(placeIndex) if not ItemCommon.CheckItemCanUse(curEquip): GameWorld.Log("目标装备为空或不可用,无法镶嵌!", playerID) return #升级宝石ID - stoneID, stoneIsBind = GetEquipIndexStoneIDAndIsBand(curPlayer, equipIndex, holeIndex) + stoneID, stoneIsBind = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPackIndex, holeIndex) if stoneID == 0: GameWorld.DebugLog("孔为空或不存在宝石!") return @@ -312,12 +345,7 @@ level = curStoneEff.GetEffectValue(1) upgradeStoneID = curStoneEff.GetEffectValue(2) - stoneTypeItemIDDict = IpyGameDataPY.GetFuncEvalCfg("GemUpCostFormula", 1) - GameWorld.DebugLog("stoneEffType=%s,stoneTypeItemIDDict=%s,level=%s,upgradeStoneID=%s" - % (stoneEffType, stoneTypeItemIDDict, level, upgradeStoneID)) - if stoneEffType not in stoneTypeItemIDDict: - return - stoneTypeItemID = stoneTypeItemIDDict[stoneEffType] + GameWorld.DebugLog("stoneEffType=%s,level=%s,upgradeStoneID=%s" % (stoneEffType, level, upgradeStoneID)) if not upgradeStoneID: GameWorld.Log("该宝石已是最大级,不能升级!stoneIndex=%s,stoneItemID=%s,curEffID=%s,upgradeStoneID=%s" @@ -326,7 +354,15 @@ needCount = IpyGameDataPY.GetFuncCfg("GemUpCostFormula", 2) # 合成下一级所需宝石个数 if not needCount: return + ipyData = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'GridIndex':equipPackIndex}) + if not ipyData: + return + classLV = ipyData.GetClassLV() if upWay == 0: #仙玉 + stoneTypeItemIDDict = IpyGameDataPY.GetFuncEvalCfg("GemUpCostFormula", 1) + if stoneEffType not in stoneTypeItemIDDict: + return + stoneTypeItemID = stoneTypeItemIDDict[stoneEffType] unitPrice = ItemCommon.GetShopItemPrice(stoneTypeItemID, IPY_GameWorld.TYPE_Price_Gold_Money) if not unitPrice: return @@ -340,7 +376,7 @@ return else: #同级宝石 - costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, stoneItemID) + costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, stoneItemID, packType=stonePackType) if bindCnt + unBindCnt < needCount-1: GameWorld.DebugLog("同级宝石不足 %s!" % (needCount-1)) return @@ -348,25 +384,25 @@ costIndexList = (costItemIndexList[0]+costItemIndexList[1])[:2] else: costIndexList = (costItemIndexList[1]+costItemIndexList[0])[:2] - itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem) + itemPack = curPlayer.GetItemManager().GetPack(stonePackType) hasBind = ItemCommon.ReduceItem(curPlayer, itemPack, costIndexList, needCount-1, False, ChConfig.ItemDel_StoneUpgrade, - {"EquipPlace":equipIndex, "HoleIndex":holeIndex}) + {"equipPackIndex":equipPackIndex, "HoleIndex":holeIndex}) if hasBind: stoneIsBind = True - __DoChangeEquipHoleStone(curPlayer, equipIndex, holeIndex, upgradeStoneID, stoneIsBind, "StoneUpgrade", False) + __DoChangeEquipHoleStone(curPlayer, equipPackIndex, holeIndex, upgradeStoneID, stoneIsBind, "StoneUpgrade", False) # 刷新属性 - RefreshAttrByStoneAction(curPlayer, IPY_GameWorld.rptEquip, False) + RefreshAttrByStoneAction(curPlayer, equipPackType, False, classLV) #同步客户端 - Sycn_StoneHoleInfo(curPlayer, [equipIndex]) + Sycn_StoneHoleInfo(curPlayer, [equipPackIndex]) DoStoneSuccess(curPlayer) return -def __CheckStoneHoleCanUse(curPlayer, equipClassLV, holeIndex): +def __CheckStoneHoleCanUse(curPlayer, equipStar, holeIndex, equipPackType): ##验证孔合法性 holeIndexList = GetAllEquipPlaceHoleIndex() @@ -375,16 +411,17 @@ return False openCommHoleCnt = 0 # 已经开放装备常规孔数 - gemOpenClassLVList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 1) - for holeCnt, openClassLV in enumerate(gemOpenClassLVList, 1): - if equipClassLV >= openClassLV: + + gemOpenNeedStarList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 1) + for holeCnt, openStar in enumerate(gemOpenNeedStarList, 1): + if equipStar >= openStar: openCommHoleCnt = holeCnt # VIP孔 if holeIndex >= ChConfig.Def_Stone_VipHole: if openCommHoleCnt <= 0: - GameWorld.Log("装备未开启任何普通宝石孔,无法开启VIP孔位! equipClassLV=%s,openCommHoleCnt=%s" % (equipClassLV, openCommHoleCnt)) + GameWorld.Log("装备未开启任何普通宝石孔,无法开启VIP孔位! equipStar=%s,openCommHoleCnt=%s" % (equipStar, openCommHoleCnt)) return False gemOpenVipList = IpyGameDataPY.GetFuncEvalCfg("GemOpenVip", 1) @@ -406,65 +443,68 @@ # 常规孔 elif holeIndex >= openCommHoleCnt: - GameWorld.Log("该装备宝石孔为开放!equipClassLV=%s,holeIndex=%s,openCommHoleCnt=%s" - % (equipClassLV, holeIndex, openCommHoleCnt), curPlayer.GetPlayerID()) + GameWorld.Log("该装备宝石孔为开放!equipStar=%s,holeIndex=%s,openCommHoleCnt=%s" + % (equipStar, holeIndex, openCommHoleCnt), curPlayer.GetPlayerID()) return False return True -def __DoChangeEquipHoleStone(curPlayer, equipIndex, holeIndex, changeStoneID, isBind, eventName, isPickoff): +def __DoChangeEquipHoleStone(curPlayer, equipPackIndex, holeIndex, changeStoneID, isBind, eventName, isPickoff): ## 变更玩家装备孔宝石 #获得装备位孔索引宝石存储信息 - stoneID, stoneIsBind = GetEquipIndexStoneIDAndIsBand(curPlayer, equipIndex, holeIndex) + stoneID, stoneIsBind = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPackIndex, holeIndex) #保存装备位孔位上宝石ID和绑定状态 - SetEquipIndexStoneIDAndIsBand(curPlayer, equipIndex, holeIndex, changeStoneID, isBind) + SetEquipIndexStoneIDAndIsBand(curPlayer, equipPackIndex, holeIndex, changeStoneID, isBind) if isPickoff and stoneID: + equipPackType, stonePackType, placeIndex = GetPackTypeByEquipPlace(equipPackIndex) itemCount = 1 # 摘除的宝石都绑定 - if ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem): - ItemControler.GivePlayerItem(curPlayer, stoneID, itemCount, True if stoneIsBind else False, - [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere], - event=[ChConfig.ItemGive_StonePickoff, False, {"EquipPlace":equipIndex, "HoleIndex":holeIndex}]) + if ItemCommon.CheckPackHasSpace(curPlayer, stonePackType): + ItemControler.GivePlayerItem(curPlayer, stoneID, itemCount, 0, + [stonePackType], + event=[ChConfig.ItemGive_StonePickoff, False, {"equipPackIndex":equipPackIndex, "HoleIndex":holeIndex}]) else: PlayerControl.SendMailByKey("GemToPlayer", [curPlayer.GetPlayerID()], [[stoneID, 1, stoneIsBind]]) - DataRecordPack.DR_StoneItemChange(curPlayer, eventName, {'equipIndex':equipIndex,"holeIndex":holeIndex, "stoneID":stoneID, 'changeStoneID':changeStoneID}) + DataRecordPack.DR_StoneItemChange(curPlayer, eventName, {'equipPackIndex':equipPackIndex,"holeIndex":holeIndex, "stoneID":stoneID, 'changeStoneID':changeStoneID}) return -def RefreshAttrByStoneAction(curPlayer, packType, isNeedNotify): +def RefreshAttrByStoneAction(curPlayer, packType, isNeedNotify, classLV): ## 宝石刷新属性 # 装备等级改变,判断是否为玩家身上的装备,如果是的话刷新玩家属性 - if packType in [IPY_GameWorld.rptEquip, IPY_GameWorld.rptHorseEquip]: + if packType in [IPY_GameWorld.rptEquip]: #先刷装备BUFF 再计算属性 if isNeedNotify: curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrActivatyNotify, ChConfig.Def_AttrActivatyNotify_Stone) - ChEquip.RefreshPlayerEquipAttribute(curPlayer) + ChEquip.RefreshPlayerEquipAttribute(curPlayer, classLV) #刷新所有属性 playControl = PlayerControl.PlayerControl(curPlayer) playControl.RefreshPlayerAttrState() - + #elif packType == ShareDefine.rptZhuXianEquip: + # EquipZhuXian.RefreshZhuXianAttr(curPlayer) return -def DoMoveEquipStone(curPlayer, equipIndex): +def DoMoveEquipStone(curPlayer, equipPackIndex): ###替换装备时宝石转移 - equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) - curEquip = equipPack.GetAt(equipIndex) + equipPackType, stonePackType, placeIndex = GetPackTypeByEquipPlace(equipPackIndex) + equipPack = curPlayer.GetItemManager().GetPack(equipPackType) + curEquip = equipPack.GetAt(placeIndex) if not ItemCommon.CheckItemCanUse(curEquip): return - #获得装备阶级孔信息 - gemOpenClassLVList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 1) - maxEquipHoleCnt = len(gemOpenClassLVList) # 最大装备阶级开放孔数 + #获得装备星级孔信息 + gemOpenNeedStarList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 1) + maxEquipHoleCnt = len(gemOpenNeedStarList) # 最大装备星级开放孔数 openEquipHoleCnt = 0 # 已经开放孔数 - equipClassLV = ItemCommon.GetItemClassLV(curEquip) - for holeCnt, openClassLV in enumerate(gemOpenClassLVList, 1): - if equipClassLV >= openClassLV: + partStar = ChEquip.GetEquipPartStarByRank(curPlayer, equipPackIndex, curEquip) + for holeCnt, openStar in enumerate(gemOpenNeedStarList, 1): + if partStar >= openStar: openEquipHoleCnt = holeCnt #需要拆卸宝石的孔列表 @@ -474,10 +514,10 @@ for holeIndex in xrange(maxEquipHoleCnt): if holeIndex < openEquipHoleCnt: continue - curGemID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipIndex, holeIndex)[0] + curGemID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPackIndex, holeIndex)[0] if curGemID == 0: continue - pickoffHoleList.append([equipIndex, holeIndex]) + pickoffHoleList.append([equipPackIndex, holeIndex]) #没有开启普通装备孔,需摘除VIP孔 if not openEquipHoleCnt: @@ -486,39 +526,21 @@ maxVipHoleCnt = len(gemOpenVipList)# 最大VIP开放孔数 #判断VIP等级孔信息 for holeIndex in xrange(ChConfig.Def_Stone_VipHole, ChConfig.Def_Stone_VipHole + maxVipHoleCnt): - curGemID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipIndex, holeIndex)[0] + curGemID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPackIndex, holeIndex)[0] if curGemID == 0: continue - pickoffHoleList.append([equipIndex, holeIndex]) + pickoffHoleList.append([equipPackIndex, holeIndex]) # 脱装备的外层刷属性, 这里不刷 - __DoSysPickoffEquipStone(curPlayer, pickoffHoleList, "EquipChange", False) + __DoSysPickoffEquipStone(curPlayer, equipPackType, stonePackType, pickoffHoleList, "EquipChange", False) return def OnVIPTimeOut(curPlayer): ## VIP到期处理 #过期一样有效,屏蔽该逻辑 - #=============================================================================================== - # #获得vip等级孔信息 - # gemOpenVipList = IpyGameDataPY.GetFuncEvalCfg("GemOpenVip", 1) - # maxVipHoleCnt = len(gemOpenVipList)# 最大Vip开放孔数 - # - # #获得所有可镶嵌宝石装备位 - # stoneCanPlaceList = GetAllStoneEquipIndexList() - # #需要拆卸宝石的孔列表 - # pickoffHoleList = [] - # for equipIndex in stoneCanPlaceList: - # for holeIndex in xrange(ChConfig.Def_Stone_VipHole, ChConfig.Def_Stone_VipHole + maxVipHoleCnt): - # stoneInfo = GetEquipIndexStoneIDAndIsBand(curPlayer, equipIndex, holeIndex) - # if not stoneInfo[0]: - # continue - # pickoffHoleList.append([equipIndex, holeIndex]) - # - # __DoSysPickoffEquipStone(curPlayer, pickoffHoleList, "VIPChange", True) - #=============================================================================================== return -def __DoSysPickoffEquipStone(curPlayer, pickoffHoleList, eventName, isRefreshAttr): +def __DoSysPickoffEquipStone(curPlayer, equipPackType, stonePackType, pickoffHoleList, eventName, isRefreshAttr): ## 系统摘除宝石 if not pickoffHoleList: @@ -528,7 +550,7 @@ equipIndexList = [] stoneCount = len(pickoffHoleList) - packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, stoneCount) + packSpace = ItemCommon.GetItemPackSpace(curPlayer, stonePackType, stoneCount) if packSpace >= stoneCount: for equipIndex, holeIndex in pickoffHoleList: __DoChangeEquipHoleStone(curPlayer, equipIndex, holeIndex, 0, 0, eventName, True) @@ -546,8 +568,9 @@ equipIndexList.append(equipIndex) PlayerControl.SendMailByKey("GemToPlayer", [curPlayer.GetPlayerID()], mailItemInfoList) - if isRefreshAttr: - RefreshAttrByStoneAction(curPlayer, IPY_GameWorld.rptEquip, False) + #目前只有脱装备会触发,暂时屏蔽,由脱装备触发刷属性 + #if isRefreshAttr: + # RefreshAttrByStoneAction(curPlayer, equipPackType, False) if equipIndexList: Sycn_StoneHoleInfo(curPlayer, equipIndexList) -- Gitblit v1.8.0