hxp
5 天以前 ec68dabc97521a7706344e7d038e9f08462f4fe8
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -25,6 +25,7 @@
import traceback
import random
import ReadChConfig
import PlayerActivity
import ChPyNetSendPack
import NetPackCommon
import PlayerXiangong
@@ -32,7 +33,6 @@
import PlayerGubao
import PyGameData
import PlayerHero
import ObjPool
import math
import time
@@ -483,6 +483,12 @@
    
    itemType = curItem.GetType()
    itemID = curItem.GetItemTypeID()
    if itemType in IpyGameDataPY.GetFuncEvalCfg("ItemRecordRule", 4) \
        or itemID in IpyGameDataPY.GetFuncEvalCfg("ItemRecordRule", 5):
        GameWorld.DebugLog("不需要记录的物品类型或ID! itemType=%s,itemID=%s" % (itemType, itemID))
        return False
    itemTypeMinColorDict = IpyGameDataPY.GetFuncEvalCfg("ItemRecordRule", 1)
    if itemType in itemTypeMinColorDict:
        minColor = itemTypeMinColorDict[itemType]
@@ -496,11 +502,6 @@
        or itemID in IpyGameDataPY.GetFuncEvalCfg("ItemRecordRule", 3):
        #GameWorld.DebugLog("需要记录的物品类型或ID! itemType=%s,itemID=%s" % (itemType, itemID))
        return True
    if itemType in IpyGameDataPY.GetFuncEvalCfg("ItemRecordRule", 4) \
        or itemID in IpyGameDataPY.GetFuncEvalCfg("ItemRecordRule", 5):
        #GameWorld.DebugLog("不需要记录的物品类型或ID! itemType=%s,itemID=%s" % (itemType, itemID))
        return False
    
    #if itemType == ChConfig.Def_ItemType_Rune:
    #    return IsRuneItemNeedRecord(curItem, curItem.GetUserAttr(ShareDefine.Def_IudetRuneLV))
@@ -901,6 +902,18 @@
        GameWorld.SendMsgToClientServer(ShareDefine.CrossServerMsg_PutInItem, itemMsg, [serverGroupID])
        return
    
    def __autoUseByEffectID(self, curPlayer, tagItem, itemEff, itemID, itemCount):
        effectID = itemEff.GetEffectID()
        # 物品碎片
        if effectID == ChConfig.Def_Effect_ItemCount:
            SetItemCountByID(curPlayer, itemID, GetItemCountByID(curPlayer, itemID) + itemCount)
        # 活跃度
        elif effectID == ChConfig.Def_Effect_AddActivity:
            PlayerActivity.DoAddActivity(curPlayer, itemCount)
        return
    ## 放入物品 
    #  @param packIndex 背包索引
    #  @param tagItem 物品
@@ -939,11 +952,11 @@
        #    tagItem.Clear()
        #    return True
        itemEff = tagItem.GetEffectByIndex(0)
        #物品碎片
        if itemEff.GetEffectID() == ChConfig.Def_Effect_ItemCount:
            SetItemCountByID(curPlayer, itemID, GetItemCountByID(curPlayer, itemID) + tagItemCount)
        if itemEff.GetEffectID() in ChConfig.AutoUseItemEffectIDList:
            self.__autoUseByEffectID(curPlayer, tagItem, itemEff, itemID, tagItemCount)
            tagItem.Clear()
            return True
        #气运
        if itemEff.GetEffectID() == ChConfig.Def_Effect_TiandaoQiyun:
            isAutoUse = itemEff.GetEffectValue(1)
@@ -1251,7 +1264,7 @@
        itemCount = GetItemCountByID(curPlayer, itemID)
        if not itemCount and not force:
            continue
        countInfo = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCAutoItemCount)
        countInfo = ChPyNetSendPack.tagMCAutoItemCount()
        countInfo.Clear()
        countInfo.ItemID = itemID
        countInfo.ItemCount = itemCount
@@ -1260,7 +1273,7 @@
    if not itemCountList:
        return
    
    clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCAutoItemCountRefresh)
    clientPack = ChPyNetSendPack.tagMCAutoItemCountRefresh()
    clientPack.Clear()
    clientPack.ItemCountList = itemCountList
    clientPack.Count = len(clientPack.ItemCountList)
@@ -1992,11 +2005,11 @@
        return False
    
    if isAuctionItem:
        ipyData = None #IpyGameDataPY.GetIpyGameData("AuctionItem", itemID)
        if not ipyData:
            GameWorld.ErrLog("非拍卖物品,默认转为非拍品! itemID=%s,itemCount=%s,isAuctionItem=%s"
                             % (itemID, itemCount, isAuctionItem), curPlayer.GetPlayerID())
            isAuctionItem = 0
        #ipyData = None #IpyGameDataPY.GetIpyGameData("AuctionItem", itemID)
        #if not ipyData:
        #    GameWorld.ErrLog("非拍卖物品,默认转为非拍品! itemID=%s,itemCount=%s,isAuctionItem=%s"
        #                     % (itemID, itemCount, isAuctionItem), curPlayer.GetPlayerID())
        isAuctionItem = 0
    
    defaultPack = IPY_GameWorld.rptItem if not packIndexList else packIndexList[0]
    packIndex = ChConfig.GetItemPackType(curItemData, defaultPack)
@@ -2179,7 +2192,7 @@
    if itemData.GetItemTypeID() in ChConfig.Def_TransformItemIDList or itemData.GetType() == ChConfig.Def_ItemType_AutoUseMoney:
        return True
    itemEff = itemData.GetEffectByIndex(0)
    if itemEff.GetEffectID() == ChConfig.Def_Effect_ItemCount:
    if itemEff.GetEffectID() in ChConfig.AutoUseItemEffectIDList:
        return True
    return False