5931 【后端】【1.5.100】诛仙装备开发(套装属性、诛仙背包整理、装备总评分、穿戴绑定)
3个文件已修改
39 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -1483,7 +1483,7 @@
#自动恢复计算间隔
Def_HPRestoreInterval = 5000
#允许重置的背包索引
Def_CanItemResetPack = [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse, ShareDefine.rptTreasure]
Def_CanItemResetPack = [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse, ShareDefine.rptTreasure, ShareDefine.rptZhuXianItem]
#仓库分页个数
Def_ItemReset_WarehousePageCnt = 56
#玩家捡起物品的距离 8
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
@@ -41,7 +41,7 @@
    if str(equipPlace) not in placeUnlockDict:
        return True
    needTowerLV = placeUnlockDict[str(equipPlace)]
    curTowerLV = 20 # 已过关的诛仙塔层数
    curTowerLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ZhuXianTowerPassLV) # 已过关的诛仙塔层数
    return curTowerLV >= needTowerLV
def CheckLearnZhuXianSkill(curPlayer, skillID):
@@ -83,7 +83,7 @@
    reqEquipPlaceIndex = clientData.EquipIndex
    itemIndex = clientData.ItemIndex
    
    GameWorld.DebugLog("诛仙穿戴装备: EquipIndex=%s,ItemIndex=%s" % (reqEquipPlaceIndex, itemIndex), playerID)
    GameWorld.DebugLog("穿戴诛仙装备: EquipIndex=%s,ItemIndex=%s" % (reqEquipPlaceIndex, itemIndex), playerID)
    
    zhuXianItemPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianItem)
    curEquip = zhuXianItemPack.GetAt(itemIndex)
@@ -97,9 +97,10 @@
    equipPlace = curEquip.GetEquipPlace()
    equipPlaceIndex = GetZhuXianEquipIndexByPlace(equipPlace)
    if reqEquipPlaceIndex != equipPlaceIndex:
        reqEquipPlace = GetZhuXianEquipPlaceByIndex(reqEquipPlaceIndex)
        canPlace = False
        for sharePlaceList in ShareDefine.ShareEquipPlace:
            if reqEquipPlaceIndex in sharePlaceList and equipPlaceIndex in sharePlaceList:
            if reqEquipPlace in sharePlaceList and equipPlace in sharePlaceList:
                canPlace = True
                break
        if not canPlace:
@@ -137,6 +138,8 @@
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    playerID = curPlayer.GetPlayerID()
    EquipIndex = clientData.EquipIndex
    GameWorld.DebugLog("卸下诛仙装备: EquipIndex=%s" % (EquipIndex), playerID)
    
    zhuXianEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
    if EquipIndex < 0 or EquipIndex >= zhuXianEquipPack.GetCount():
@@ -213,8 +216,9 @@
                else:
                    PlayerControl.CalcAttrDict_Type(legendAttrID, legendAttrValue, allAttrList)
                    
    GameWorld.DebugLog("诛仙装备属性: allAttrList=%s" % (allAttrList))
    GameWorld.DebugLog("    zxSkillPlusAttrDict=%s" % (zxSkillPlusAttrDict))
#    GameWorld.DebugLog("诛仙装备属性: allAttrList=%s" % (allAttrList))
#    GameWorld.DebugLog("    zxSkillPlusAttrDict=%s" % (zxSkillPlusAttrDict))
#    GameWorld.DebugLog("    equipPlaceClassLVDict=%s" % (equipPlaceClassLVDict))
    
    # 缓存技能增强比例,目前暂写死对指定技能伤害百分比提升
    for attrID, plusValue in zxSkillPlusAttrDict.items():
@@ -241,6 +245,9 @@
            skillReducePerDict[effSkillTypeID] = plusValue
            PyGameData.g_zhuXianSkillReducePerDict[playerID] = skillReducePerDict
            
#    GameWorld.DebugLog("    PyGameData.g_zhuXianSkillAddPerDict=%s" % PyGameData.g_zhuXianSkillAddPerDict)
#    GameWorld.DebugLog("    PyGameData.g_zhuXianSkillReducePerDict=%s" % PyGameData.g_zhuXianSkillReducePerDict)
    # 计算套装,目前暂写死对诛仙装备部位基础属性提升
    suitAttrIDPlusPlaceDict = {
                               ShareDefine.Def_Effect_ZXCloakAttrPer:ShareDefine.zxetCloak,
@@ -258,7 +265,7 @@
        for place in placeGroupList:
            if place not in equipPlaceClassLVDict:
                isSuit = False
                GameWorld.DebugLog("    未穿戴装备,无法激活诛仙套装! suitType=%s,placeGroupList=%s,place=%s" % (suitType, placeGroupList, place))
                #GameWorld.DebugLog("    未穿戴装备,无法激活诛仙套装! suitType=%s,placeGroupList=%s,place=%s" % (suitType, placeGroupList, place))
                break
            if not suitLV:
                suitLV = equipPlaceClassLVDict[place]
@@ -268,6 +275,7 @@
        if not isSuit or not suitLV:
            continue
        
        GameWorld.DebugLog("    激活诛仙套装: suitType=%s, suitLV=%s" % (suitType, suitLV))
        suitAttrIpyData = IpyGameDataPY.GetIpyGameData("ZhuXianSuitAttr", suitType, suitLV)
        if not suitAttrIpyData:
            continue
@@ -277,13 +285,16 @@
            continue
        for i, suitEffID in enumerate(suitAttrIDList):
            suitEffValue = suitAttrValueList[i]
            #GameWorld.DebugLog("        suitEffID=%s,suitEffValue=%s" % (suitEffID, suitEffValue))
            if suitEffID in suitAttrIDPlusPlaceDict:
                plusPlace = suitAttrIDPlusPlaceDict[suitEffID]
                if plusPlace not in equipPlaceBaseAttrDict:
                    continue
                plusEffDict = equipPlaceBaseAttrDict[plusPlace]
                #GameWorld.DebugLog("            plusPlace=%s,plusEffDict=%s" % (plusPlace, plusEffDict))
                for plusEffID, plusEffValue in plusEffDict.items():
                    addValue = int(plusEffValue * (10000 + suitEffValue) / 10000.0)
                    #GameWorld.DebugLog("                plusEffID=%s,plusEffValue=%s,addValue=%s" % (plusEffID, plusEffValue, addValue))
                    PlayerControl.CalcAttrDict_Type(plusEffID, addValue, allAttrListZXSuit)
            else:
                PlayerControl.CalcAttrDict_Type(suitEffID, suitEffValue, allAttrListZXSuit)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -500,7 +500,15 @@
def GetZhuXianEquipTotalGS(curPlayer):
    ##诛仙装备总评分
    return 10000000
    equipScoreTotal = 0
    zhuXianEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
    for equipIndex in xrange(zhuXianEquipPack.GetCount()):
        curEquip = zhuXianEquipPack.GetAt(equipIndex)
        if curEquip.IsEmpty():
            continue
        equipScoreTotal += GetEquipGearScore(curEquip)
    return equipScoreTotal
#---------------------------------------------------------------------
## 通过效果ID,检查是否为指定物品 
#  @param curPlayer 当前玩家
@@ -1710,7 +1718,7 @@
        DoLogic_ItemBindType(curPlayer, switchItem, ChConfig.Def_BindType_DoEquipBind)
        
    # 装备技能书、坐骑装备绑定
    if putInPackIndex in [IPY_GameWorld.rptHorseEquip]:
    if putInPackIndex in [IPY_GameWorld.rptHorseEquip, ShareDefine.rptZhuXianEquip]:
        DoLogic_ItemBindType(curPlayer, curItem, ChConfig.Def_BindType_DoEquipBind)
    
    #交换装备
@@ -1735,7 +1743,7 @@
        DoLogic_ItemBindType(curPlayer, switchItem, ChConfig.Def_BindType_DoEquipBind)
    
    # 装备技能书、坐骑装备绑定
    if putInPackIndex in [IPY_GameWorld.rptHorseEquip]:
    if putInPackIndex in [IPY_GameWorld.rptHorseEquip, ShareDefine.rptZhuXianEquip]:
        DoLogic_ItemBindType(curPlayer, emptyItem, ChConfig.Def_BindType_DoEquipBind)
    if switchItem.GetGameWorldItemType() == IPY_GameWorld.gwitRoleItem: