556 【付费功能】时装商店-服务端(优化时装转化碎片时A801通知,封包修改货币增加IsBind,同物品标记逻辑,时装转化标记=40;)
| | |
| | | ItemSrcSign_GubaoEff, # 古宝效果额外产出 1
|
| | | ItemSrcSign_BeautyEff, # 红颜效果额外产出 2
|
| | | ItemSrcSign_TitleEff, # 称号效果额外产出 3
|
| | | ) = range(1 + 3)
|
| | | ItemSrcSign_HeroSkinChange, # 武将时装转化 4
|
| | | ) = range(1 + 4)
|
| | |
| | | _fields_ = [
|
| | | ("MoneyType", c_ubyte),
|
| | | ("MoneyValue", c_int),
|
| | | ("IsBind", c_ubyte), # 同物品IsBind标记逻辑
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def Clear(self):
|
| | | self.MoneyType = 0
|
| | | self.MoneyValue = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | def OutputString(self):
|
| | | DumpString = '''// A8 01 获得奖励信息 //tagMCGiveAwardInfo:
|
| | | MoneyType:%d,
|
| | | MoneyValue:%d
|
| | | MoneyValue:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.MoneyType,
|
| | | self.MoneyValue
|
| | | self.MoneyValue,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | tagItem.Clear()
|
| | | return True
|
| | |
|
| | | if PlayerHero.AutoChangeToSkinPoint(curPlayer, tagItem):
|
| | | 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:#没有设置过才设置
|
| | |
| | | '''通知玩家获得奖励信息
|
| | | @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):
|
| | | 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:
|
| | |
| | | RefreshLordAttr(curPlayer) # 时装升星 - 全体属性
|
| | | return
|
| | |
|
| | | def AutoChangeToSkinPoint(curPlayer, curItem, notifyAward=True):
|
| | | def AutoChangeToSkinPoint(curPlayer, curItem, eventName):
|
| | | ## 获得皮肤时自动转化为皮肤碎片
|
| | | # @return: 是否成功转化
|
| | | itemID = curItem.GetItemTypeID()
|
| | |
| | | moneyValue = changePoint * itemCount
|
| | | GameWorld.DebugLog("武将皮肤不需要再升星了自动转化为皮肤碎片! itemID=%s,skinID=%s,skinQuality=%s,moneyValue=%s,itemCount=%s"
|
| | | % (itemID, skinID, skinQuality, moneyValue, itemCount))
|
| | | if not PlayerControl.GiveMoney(curPlayer, moneyType, moneyValue, "HeroSkinChange", addDataDict, notifyAward=False):
|
| | | if not PlayerControl.GiveMoney(curPlayer, moneyType, moneyValue, eventName, addDataDict, notifyAward=False):
|
| | | return
|
| | | curItem.Clear()
|
| | | ItemControler.NotifyGiveAwardInfo(curPlayer, [], "HeroSkinChange", moneyInfo={moneyType:moneyValue}, dataEx=itemID)
|
| | | |
| | | if eventName:
|
| | | isBind = ItemControler.GetIsBindValue(srcSign=ChConfig.ItemSrcSign_HeroSkinChange)
|
| | | ItemControler.NotifyGiveAwardInfo(curPlayer, [], eventName, moneyInfo={moneyType:[moneyValue, isBind]}, dataEx=itemID)
|
| | | |
| | | return True
|
| | |
|
| | | def GetItemHeroSkinIDDict():
|