From 0f297a5b66b91751d8342624db871efeca7ed94e Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期六, 02 三月 2019 10:20:48 +0800 Subject: [PATCH] 6307 【后端】【2.0】多套装备开发单(穿脱、升星) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py | 85 ++++++++++++++++++++++-------------------- 1 files changed, 45 insertions(+), 40 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 b9bd568..45952d1 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 @@ -32,7 +32,7 @@ import ShareDefine import EquipZhuXian - +g_stoneCanPlaceList = [] #可镶嵌的位置 def OnLogin(curPlayer): ###登录发包同步客户端宝石信息 @@ -41,23 +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): #循环宝石类型对应的装备位 placeList = IpyGameDataPY.GetFuncEvalCfg("GemType%s" % stoneTypeIndex, 1) for place in placeList: - if place not in stoneCanPlaceList: - stoneCanPlaceList.append(place) - return stoneCanPlaceList + 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开放孔数 @@ -94,14 +101,14 @@ 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 +# 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 @@ -157,8 +164,8 @@ % (stoneItemID, stoneEffType, stoneCanPlaceList, equipPlace), playerID) return - equipClassLV = ItemCommon.GetItemClassLV(curEquip) - if not __CheckStoneHoleCanUse(curPlayer, equipClassLV, holeIndex, equipPackType): + equipStar = ChEquip.GetEquipPartStar(curEquip) + if not __CheckStoneHoleCanUse(curPlayer, equipStar, holeIndex, equipPackType): return # 扣除宝石 @@ -382,7 +389,7 @@ DoStoneSuccess(curPlayer) return -def __CheckStoneHoleCanUse(curPlayer, equipClassLV, holeIndex, equipPackType): +def __CheckStoneHoleCanUse(curPlayer, equipStar, holeIndex, equipPackType): ##验证孔合法性 holeIndexList = GetAllEquipPlaceHoleIndex() @@ -391,19 +398,17 @@ return False openCommHoleCnt = 0 # 已经开放装备常规孔数 - if equipPackType == ShareDefine.rptZhuXianEquip: - gemOpenClassLVList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 2) - else: - 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) @@ -425,8 +430,8 @@ # 常规孔 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 @@ -471,22 +476,22 @@ return -def DoMoveEquipStone(curPlayer, equipPlace): +def DoMoveEquipStone(curPlayer, equipPackIndex): ###替换装备时宝石转移 - equipPackType, stonePackType, placeIndex = GetPackTypeByEquipPlace(equipPlace) + 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 #需要拆卸宝石的孔列表 @@ -496,10 +501,10 @@ for holeIndex in xrange(maxEquipHoleCnt): if holeIndex < openEquipHoleCnt: continue - curGemID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPlace, holeIndex)[0] + curGemID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPackIndex, holeIndex)[0] if curGemID == 0: continue - pickoffHoleList.append([equipPlace, holeIndex]) + pickoffHoleList.append([equipPackIndex, holeIndex]) #没有开启普通装备孔,需摘除VIP孔 if not openEquipHoleCnt: @@ -508,10 +513,10 @@ maxVipHoleCnt = len(gemOpenVipList)# 最大VIP开放孔数 #判断VIP等级孔信息 for holeIndex in xrange(ChConfig.Def_Stone_VipHole, ChConfig.Def_Stone_VipHole + maxVipHoleCnt): - curGemID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPlace, holeIndex)[0] + curGemID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPackIndex, holeIndex)[0] if curGemID == 0: continue - pickoffHoleList.append([equipPlace, holeIndex]) + pickoffHoleList.append([equipPackIndex, holeIndex]) # 脱装备的外层刷属性, 这里不刷 __DoSysPickoffEquipStone(curPlayer, equipPackType, stonePackType, pickoffHoleList, "EquipChange", False) -- Gitblit v1.8.0