hxp
2019-08-15 4abc96d3bba5ec89a1b80520d25e42db94203d57
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoat.py
@@ -60,12 +60,12 @@
    needCntList = ipyData.GetCostItemCnt()
    if curSkinLV >= len(needCntList):
        return
    plusCost = needCntList[curSkinLV + 1]
    plusCost = needCntList[curSkinLV]
    costItemID = ipyData.GetUnlockItemID()
    curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
    hasEnough, itemIndexList = ItemCommon.GetItem_FromPack_ByID(costItemID, curPack, plusCost)
    if not hasEnough:
        GameWorld.DebugLog("OnPlayerCoatUp() 时装升级材料不足, needCnt=%s" % (plusCost))
        GameWorld.DebugLog("OnPlayerCoatUp() 时装升级材料不足, coatIndex=%s, costItemID=%s, needCnt=%s" % (coatIndex, costItemID, plusCost))
        return
    reduceCnt = plusCost
@@ -101,6 +101,7 @@
    playerID = curPlayer.GetPlayerID()
    indexList = clientData.IndexList
    ItemIDList = clientData.ItemIDList
    itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
    addExp = 0
    for i, index in enumerate(indexList):
@@ -109,6 +110,7 @@
            continue
        eatItemID = eatItem.GetItemTypeID()
        if eatItemID != ItemIDList[i]:
            GameWorld.Log('时装分解 发的物品ID不对应index=%s eatItemID=%s,ItemIDList[i]=%s'%(index, eatItemID, ItemIDList[i]), playerID)
            continue
        itemData = GameWorld.GetGameData().GetItemByTypeID(eatItemID)
        if not itemData:
@@ -119,12 +121,13 @@
        if not ipyData:
            continue
        curSkinLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesSkinLV % coatID)
        if curSkinLV >= ipyData.GetMaxLV():
        if curSkinLV < ipyData.GetMaxLV():
            continue
        itemCnt = eatItem.GetCount()
        addExp += itemCnt * curEff.GetEffectValue(1)
        ItemCommon.DelItem(curPlayer, eatItem, itemCnt, True, ChConfig.ItemDel_CoatDecompose)
    if not addExp:
        GameWorld.Log(' 时装分解, 没有可分解的ItemIDList=%s'%ItemIDList, playerID)
        return
    totalExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesChestEXP) + addExp
    curChestLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesChestLV)
@@ -167,6 +170,13 @@
            continue
        for attrID, attrValue in starAttrDict[str(skinLV)].items():
            PlayerControl.CalcAttrDict_Type(int(attrID), attrValue, allAttrList)
    #时装柜属性
    curChestLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesChestLV)
    ipyData = IpyGameDataPY.GetIpyGameDataNotLog('CoatChestUp', curChestLV)
    if ipyData:
        for attrID, attrValue in ipyData.GetAddAttr().items():
            PlayerControl.CalcAttrDict_Type(int(attrID), attrValue, allAttrList)
    # 保存计算值
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Coat, allAttrList)
    return
@@ -180,7 +190,7 @@
# @param destIndex 目标索引
# @return 
def SwitchCoat(curPlayer, srcBackpack, desBackPack, srcIndex, destIndex):
    clothesPlaceList = [ShareDefine.retWeaponSkin, ShareDefine.retClothesSkin, ShareDefine.retWeapon2Skin]
    clothesPlaceList = [6,7,8]#[ShareDefine.retWeaponSkin, ShareDefine.retClothesSkin, ShareDefine.retWeapon2Skin]
    if not ((desBackPack == IPY_GameWorld.rptEquip and srcBackpack == ShareDefine.rptTempSwap and destIndex in clothesPlaceList) \
    or (srcBackpack == IPY_GameWorld.rptEquip and desBackPack == ShareDefine.rptTempSwap and srcIndex in clothesPlaceList)):
        return False
@@ -204,7 +214,7 @@
        ipyData = IpyGameDataPY.GetIpyGameData('Coat', srcIndex)
        if not ipyData:
            return True
        EquipItemIDList = ipyData.GetEquipItemID
        EquipItemIDList = ipyData.GetEquipItemID()
        job = curPlayer.GetJob()
        if job > len(EquipItemIDList):
            GameWorld.Log("找不到该职业时装配置,不能穿!srcIndex=%s,job=%s" % (srcIndex, job), playerID)
@@ -224,12 +234,11 @@
        destIndex = 0
    
    isOK = ItemCommon.DoLogicSwitchItemEx(curPlayer, srcBackpack, desBackPack, srcIndex, destIndex)
    ItemControler.ClearPack(curPlayer, ShareDefine.rptTempSwap)
    # 下发周围玩家时装穿戴状态
    if isOK:
        if desBackPack == IPY_GameWorld.rptEquip:
            packIndex = IPY_GameWorld.rptEquip
            itemPlace = IPY_GameWorld.retClothesCoat
            itemPlace = destIndex
            itemPack = curPlayer.GetItemManager().GetPack(packIndex)
            curItem = itemPack.GetAt(itemPlace)
            itemId = curItem.GetItemTypeID()
@@ -243,7 +252,7 @@
            itemPack = curPlayer.GetItemManager().GetPack(packIndex)
            curItem = itemPack.GetAt(0)
            if curItem:
                curPlayer.Sync_UnEquipItem(curItem.GetItemTypeID(), IPY_GameWorld.retClothesCoat)
                curPlayer.Sync_UnEquipItem(curItem.GetItemTypeID(), srcIndex)
    GameWorld.DebugLog("SwitchCoat isOK=%s" % isOK)
    return True