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