| | |
| | | import PlayerActivity
|
| | | import ChPyNetSendPack
|
| | | import NetPackCommon
|
| | | import PlayerXiangong
|
| | | import IpyGameDataPY
|
| | | import PlayerGubao
|
| | | import PyGameData
|
| | | import PlayerHero
|
| | | import PlayerMail
|
| | |
|
| | | import math
|
| | | import time
|
| | |
| | | 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)
|
| | |
| | | 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:#没有设置过才设置
|
| | |
| | | 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):
|
| | |
| | | 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:
|
| | |
| | | '''通知玩家获得奖励信息
|
| | | @param giveItemInfo: 可以是列表 [[itemID,count,isBind], ...] 或 [[itemID,count], ...] 或 {itemID:count, ...}
|
| | | @param moneyInfo: 奖励货币信息 {moneyType:moneyValue, ...} moneyType 可以是字符串或数值
|
| | | moneyValue 也可以传入列表 [moneyValue, isBind],其中 isBind 同物品的 isBind 标记逻辑
|
| | | '''
|
| | | notifyItemList = []
|
| | | if isinstance(giveItemInfo, dict):
|
| | |
| | | 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, long)):
|
| | | 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:
|
| | |
| | |
|
| | | 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}])
|
| | |
|