From 9a5d8288ba607bdcd67cb93e03c7f09ece8b1569 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 13 三月 2026 14:29:24 +0800
Subject: [PATCH] 556 【付费功能】时装商店-服务端(优化时装转化碎片时A801通知,封包修改货币增加IsBind,同物品标记逻辑,时装转化标记=40;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py |   40 ++++++++++++++++++++++++++++++----------
 1 files changed, 30 insertions(+), 10 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
index 42129e6..15d3233 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -960,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:#没有设置过才设置
@@ -2005,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):
@@ -2265,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:
@@ -2280,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):
@@ -2293,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:

--
Gitblit v1.8.0