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
@@ -179,24 +179,6 @@
            return item
        
    return None
## 检查是否可以换马匹
#  @param curPlayer 当前玩家
#  @return None or True
#  @remarks 函数详细说明.
def CheckCanEquipHorse(curPlayer):
    if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvHorse :
        #DJ_Res_Horses_AlreadyEquip  对不起,您处于骑马状态中,操作无效
        PlayerControl.NotifyCode(curPlayer, "DJ_Res_Horses_AlreadyEquip")
        return
    horsePack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptHorse)
    if not GetPackIsEmpty(horsePack):
        #Horses_Bag_NoRoom 对不起,您的马匹背包中有物品,操作无效!
        PlayerControl.NotifyCode(curPlayer, "Horses_Bag_NoRoom")
        return
    return True
#===============================================================================
# #将物品放入增值栏的一个空位置中,如果失败,替换第一个位置
@@ -501,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]
@@ -514,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))
@@ -905,8 +888,6 @@
            PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_GongdePoint, itemCount)
        elif itemID == ChConfig.Def_ItemID_FamilyFlagWarPoint:
            PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_FamilyFlagWarPoint, itemCount)
        elif itemID == ChConfig.Def_ItemID_SuccessScore:
            PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_SuccessSocre, itemCount, moneyEventName, addDict)
        return True
    
    def __CrossServerPutInItem(self, packIndex, tagItem, event=["", False, {}]):
@@ -919,6 +900,18 @@
        itemData = [tagItem.GetItemTypeID(), tagItem.GetCount(), tagItem.GetIsBind(), tagItem.GetUserData()]
        itemMsg = {"PlayerID":curPlayer.GetPlayerID(), "ItemData":itemData, "PackIndex":packIndex, "Event":event}
        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
    
    ## 放入物品 
@@ -959,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)
@@ -1271,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
@@ -1280,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)
@@ -2012,11 +2005,11 @@
        return False
    
    if isAuctionItem:
        ipyData = 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)
@@ -2199,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