From b861524d105d9c36b11da974bca768d11642999d Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 08 三月 2019 14:58:22 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini         |    6 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py |   56 ++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py |   46 +++++++++++++++
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py                      |   56 ++++++++++++++++++
 4 files changed, 162 insertions(+), 2 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 0dbc6c9..b360230 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -6751,6 +6751,62 @@
 
 
 #------------------------------------------------------
+# A3 08 物品过期 #tagCMItemTimeout
+
+class  tagCMItemTimeout(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PackType", c_ubyte),    #背包类型
+                  ("ItemIndex", c_ubyte),    #物品在背包中索引
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA3
+        self.SubCmd = 0x08
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA3
+        self.SubCmd = 0x08
+        self.PackType = 0
+        self.ItemIndex = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMItemTimeout)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A3 08 物品过期 //tagCMItemTimeout:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PackType:%d,
+                                ItemIndex:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PackType,
+                                self.ItemIndex
+                                )
+        return DumpString
+
+
+m_NAtagCMItemTimeout=tagCMItemTimeout()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemTimeout.Cmd,m_NAtagCMItemTimeout.SubCmd))] = m_NAtagCMItemTimeout
+
+
+#------------------------------------------------------
 #A3 02 丢弃背包物品 #tagPlayerDropItem
 
 class  tagPlayerDropItem(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index d97b380..c57fbd8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -8,7 +8,7 @@
 Writer = wdb
 Releaser = wdb
 RegType = 0
-RegisterPackCount = 5
+RegisterPackCount = 6
 
 PacketCMD_1=0xA3
 PacketSubCMD_1=0x02
@@ -30,6 +30,10 @@
 PacketSubCMD_5=0x07
 PacketCallFunc_5=OnItemRenew
 
+PacketCMD_6=0xA3
+PacketSubCMD_6=0x08
+PacketCallFunc_6=OnItemTimeout
+
 ;坐骑培养
 [PlayerHorse]
 ScriptName = Player\PlayerHorse.py
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 0dbc6c9..b360230 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -6751,6 +6751,62 @@
 
 
 #------------------------------------------------------
+# A3 08 物品过期 #tagCMItemTimeout
+
+class  tagCMItemTimeout(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PackType", c_ubyte),    #背包类型
+                  ("ItemIndex", c_ubyte),    #物品在背包中索引
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xA3
+        self.SubCmd = 0x08
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xA3
+        self.SubCmd = 0x08
+        self.PackType = 0
+        self.ItemIndex = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagCMItemTimeout)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A3 08 物品过期 //tagCMItemTimeout:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PackType:%d,
+                                ItemIndex:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PackType,
+                                self.ItemIndex
+                                )
+        return DumpString
+
+
+m_NAtagCMItemTimeout=tagCMItemTimeout()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemTimeout.Cmd,m_NAtagCMItemTimeout.SubCmd))] = m_NAtagCMItemTimeout
+
+
+#------------------------------------------------------
 #A3 02 丢弃背包物品 #tagPlayerDropItem
 
 class  tagPlayerDropItem(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
index bfd3aa2..af044ed 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -1530,12 +1530,44 @@
         GameWorld.DebugLog("    物品无法使用!")
         return
     
+    # 使用拍品
+    if not curItem.GetIsBind():
+        __DoLogic_PlayerUseAuctionItem(curPlayer, curItem, itemIndex, exData)
+        return
+    
     if useCnt <= 0:
         useCnt = curItem.GetCount()
         GameWorld.DebugLog("    没指定使用个数,默认使用全部=%s" % useCnt)
         
     __DoLogic_PlayerUseItemSelf(curPlayer, itemIndex, tick, useCnt, exData)
 
+    return
+
+def __DoLogic_PlayerUseAuctionItem(curPlayer, curItem, itemIndex, exData):
+    ## 玩家使用拍品
+    playerID = curPlayer.GetPlayerID()
+    itemID = curItem.GetItemTypeID()
+        
+    curItem.SetIsBind(1) # 设置为非拍品
+    GameWorld.DebugLog("玩家使用拍品: itemIndex=%s,itemID=%s,exData=%s" % (itemID, itemIndex, exData), playerID)
+    
+    if ItemCommon.GetIsEquip(curItem):
+        # 生成传奇属性
+        legendAttrInfo = ItemControler.GetAddEquipLegendAttr(curItem, curPlayer)
+        if not legendAttrInfo:
+            GameWorld.ErrLog("使用装备拍品没有传奇属性!itemID=%s" % (itemID), playerID)
+            return
+        attrIDList, attrValueList = legendAttrInfo
+        # 传奇属性
+        if attrIDList and attrValueList and len(attrIDList) == len(attrValueList):
+            curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrID)
+            curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValue)
+            for i, attrID in enumerate(attrIDList):
+                value = attrValueList[i]
+                curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrID, attrID)
+                curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValue, value)
+        ItemCommon.MakeEquipGS(curItem)
+        
     return
 
 #---------------------------------------------------------------------
@@ -2076,4 +2108,16 @@
     ItemCommon.DelItem(curPlayer, timeOutItem, 1, False, "RenewItem")
     ItemControler.GivePlayerItem(curPlayer, changeItemID, 1, 0, [IPY_GameWorld.rptItem])
     PlayerControl.NotifyCode(curPlayer, 'Guardian_ContinuePay')
-    return
\ No newline at end of file
+    return
+
+#// A3 08 物品过期 #tagCMItemTimeout
+#
+#struct    tagCMItemTimeout
+#
+#{
+#    tagHead        Head;
+#    BYTE        PackType;        //背包类型
+#    BYTE        ItemIndex;        //物品在背包中索引
+#};
+def OnItemTimeout(index, clientData, tick):
+    return

--
Gitblit v1.8.0