556 【付费功能】时装商店-服务端(优化时装转化碎片时A801通知,封包修改货币增加IsBind,同物品标记逻辑,时装转化标记=40;)
4个文件已修改
43 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4931,4 +4931,5 @@
ItemSrcSign_GubaoEff, # 古宝效果额外产出 1
ItemSrcSign_BeautyEff, # 红颜效果额外产出 2
ItemSrcSign_TitleEff, # 称号效果额外产出 3
) = range(1 + 3)
ItemSrcSign_HeroSkinChange, # 武将时装转化 4
) = range(1 + 4)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -13068,6 +13068,7 @@
    _fields_ = [
                  ("MoneyType", c_ubyte),    
                  ("MoneyValue", c_int),    
                  ("IsBind", c_ubyte),    # 同物品IsBind标记逻辑
                  ]
    def __init__(self):
@@ -13082,6 +13083,7 @@
    def Clear(self):
        self.MoneyType = 0
        self.MoneyValue = 0
        self.IsBind = 0
        return
    def GetLength(self):
@@ -13093,11 +13095,13 @@
    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
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -924,10 +924,6 @@
            tagItem.Clear()
            return True
        
        if PlayerHero.AutoChangeToSkinPoint(curPlayer, tagItem):
            tagItem.Clear()
            return True
        #增加副本次数
        if itemEff.GetEffectID() == ChConfig.Def_Effect_AddFBCnt:
            isAutoUse = itemEff.GetEffectValue(1)
@@ -964,6 +960,10 @@
            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'):
@@ -2290,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):
@@ -2303,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:
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
@@ -1189,7 +1189,7 @@
    RefreshLordAttr(curPlayer) # 时装升星 - 全体属性
    return
def AutoChangeToSkinPoint(curPlayer, curItem, notifyAward=True):
def AutoChangeToSkinPoint(curPlayer, curItem, eventName):
    ## 获得皮肤时自动转化为皮肤碎片
    # @return: 是否成功转化
    itemID = curItem.GetItemTypeID()
@@ -1220,10 +1220,14 @@
    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():