hch
2 天以前 35d98e9c630fd4408561c8c54b4c09193bb9ce9e
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -28,11 +28,11 @@
import PlayerActivity
import ChPyNetSendPack
import NetPackCommon
import PlayerXiangong
import IpyGameDataPY
import PlayerGubao
import PyGameData
import PlayerHero
import PlayerMail
import math
import time
@@ -924,14 +924,6 @@
            tagItem.Clear()
            return True
        
        #气运
        if itemEff.GetEffectID() == ChConfig.Def_Effect_TiandaoQiyun:
            isAutoUse = itemEff.GetEffectValue(1)
            if isAutoUse:
                addQiyun = itemEff.GetEffectValue(0) * tagItemCount
                PlayerXiangong.AddTiandaoQiyun(curPlayer, addQiyun, {"ItemID":itemID, "ItemCount":tagItemCount, "isAutoUse":1})
                tagItem.Clear()
                return True
        #增加副本次数
        if itemEff.GetEffectID() == ChConfig.Def_Effect_AddFBCnt:
            isAutoUse = itemEff.GetEffectValue(1)
@@ -968,7 +960,11 @@
            return self.PutItemInVPack(packIndex, tagItem, event)
        
        eventName, isForceEvent, addDict = event
        if PlayerHero.AutoChangeToSkinPoint(curPlayer, tagItem, eventName):
            tagItem.Clear()
            return True
        #记录创建物品时的登录天
        if tagItem.GetItemTypeID() in ReadChConfig.GetEvalChConfig('OpenBoxByLoginDayCfg'):
            if tagItem.GetUserAttr(ShareDefine.Def_IudetCreateItemLoginDay) == 0:#没有设置过才设置
@@ -2013,14 +2009,20 @@
    GameWorld.ErrLog('DoLogic_PutItemInPack Error 物品无法放入背包')
    return False
def GetIsBindValue(isBind=0, srcSign=0):
    ## 获取IsBind值,适用于配置或者通知前端特殊标记用,兼容是否绑定/拍品设定
    # @param isBind: 可支持原绑定/拍品逻辑,如果该项目没有该逻辑暂时默认都为0
    # @param srcSign: 标记物品特殊来源,如xx特权额外产出等
    return srcSign * 10 + isBind
## 是否拍品
def GetIsAuctionItem(curItem): return curItem.GetIsBind()
def GetIsAuctionItem(curItem): return 0#curItem.GetIsBind()
def SetIsAuctionItem(curItem, isAuctionItem, curPlayer=None):
    curItem.SetIsBind(isAuctionItem)
    if isAuctionItem:
        curItem.SetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime, int(time.time()))
        return
    #curItem.SetIsBind(isAuctionItem)
    #
    #if isAuctionItem:
    #    curItem.SetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime, int(time.time()))
    #    return
    return
def GetItemCountByID(curPlayer, itemID):
@@ -2273,7 +2275,7 @@
            break
           
    if isSendMail:
        PlayerControl.SendMailByKey(mailKey, [curPlayer.GetPlayerID()], giveItemList)
        PlayerMail.SendMailByKey(mailKey, curPlayer.GetPlayerID(), giveItemList)
        GameWorld.DebugLog("GivePlayerItemOrMail背包空间不够,发送邮件: mailItemList=%s" % str(giveItemList), curPlayer.GetPlayerID())
    else:
        for itemID, itemCnt, isAuctionItem in giveItemList:
@@ -2288,6 +2290,7 @@
    '''通知玩家获得奖励信息
    @param giveItemInfo: 可以是列表 [[itemID,count,isBind], ...] 或  [[itemID,count], ...] 或  {itemID:count, ...}
    @param moneyInfo: 奖励货币信息 {moneyType:moneyValue, ...} moneyType 可以是字符串或数值
                    moneyValue 也可以传入列表 [moneyValue, isBind],其中 isBind 同物品的 isBind 标记逻辑
    '''
    notifyItemList = []
    if isinstance(giveItemInfo, dict):
@@ -2301,14 +2304,23 @@
    clientPack.ExpPoint = exp / ChConfig.Def_PerPointValue
    clientPack.Exp = exp % ChConfig.Def_PerPointValue
    if moneyInfo and isinstance(moneyInfo, dict):
        for moneyType, moneyValue in moneyInfo.items():
        for moneyType, moneyValueInfo in moneyInfo.items():
            if isinstance(moneyType, str):
                moneyType = int(moneyType)
            if not moneyType or not moneyValue:
            if not moneyType or not moneyValueInfo:
                continue
            isBind = 0
            if isinstance(moneyValueInfo, int):
                moneyValue = moneyValueInfo
            elif isinstance(moneyValueInfo, list):
                moneyValue = moneyValueInfo[0]
                isBind = moneyValueInfo[1] if len(moneyValueInfo) > 1 else 0
            else:
                continue
            money = ChPyNetSendPack.tagMCGiveAwardMoney()
            money.MoneyType = moneyType
            money.MoneyValue = moneyValue
            money.IsBind = isBind
            clientPack.MoneyList.append(money)
        clientPack.MoneyLen = len(clientPack.MoneyList)
    for itemInfo in notifyItemList:
@@ -2380,7 +2392,7 @@
            
    if notifyMailKey:
        paramList = [itemID, itemID, recycleCount]
        PlayerControl.SendMailByKey(notifyMailKey, [playerID], addItemList, paramList)
        PlayerMail.SendMailByKey(notifyMailKey, playerID, addItemList, paramList)
    elif addItemList:
        GivePlayerItemOrMail(curPlayer, addItemList, event=["RecycleItem", False, {"RecycleItemID":itemID}])