From 7082741f5912f9e583031d0c2f2bd7f6a75915b2 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 29 六月 2023 17:01:47 +0800
Subject: [PATCH] 9802 9762 【BT9】【后端】藏宝阁修改(古宝碎片支持配置物品效果ID270,获得时自动转化为对应古宝ID碎片个数值; 古宝激活、升星、升级支持配置所需物品存在碎片效果ID时扣除对应碎片)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py | 145 +++++++++++++++++---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 8 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 108 +++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Gubao.py | 8 +
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 108 +++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GubaoPiece.py | 32 ++++
6 files changed, 386 insertions(+), 23 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index b8a04cc..0427aa5 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -20969,6 +20969,114 @@
#------------------------------------------------------
+# A3 CB 古宝碎片信息 #tagMCGubaoPieceInfo
+
+class tagMCGubaoPiece(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GubaoID", c_ushort),
+ ("PieceCount", c_int), # 当前碎片个数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ 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.GubaoID = 0
+ self.PieceCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCGubaoPiece)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 CB 古宝碎片信息 //tagMCGubaoPieceInfo:
+ GubaoID:%d,
+ PieceCount:%d
+ '''\
+ %(
+ self.GubaoID,
+ self.PieceCount
+ )
+ return DumpString
+
+
+class tagMCGubaoPieceInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ PieceInfoList = list() #(vector<tagMCGubaoPiece> PieceInfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCB
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temPieceInfoList = tagMCGubaoPiece()
+ _pos = temPieceInfoList.ReadData(_lpData, _pos)
+ self.PieceInfoList.append(temPieceInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCB
+ self.Count = 0
+ self.PieceInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.PieceInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.PieceInfoList[i].GetLength(), self.PieceInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ PieceInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCGubaoPieceInfo=tagMCGubaoPieceInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoPieceInfo.Head.Cmd,m_NAtagMCGubaoPieceInfo.Head.SubCmd))] = m_NAtagMCGubaoPieceInfo
+
+
+#------------------------------------------------------
# A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
class tagMCHistoryReChargeAwardRecord(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index b8a04cc..0427aa5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -20969,6 +20969,114 @@
#------------------------------------------------------
+# A3 CB 古宝碎片信息 #tagMCGubaoPieceInfo
+
+class tagMCGubaoPiece(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GubaoID", c_ushort),
+ ("PieceCount", c_int), # 当前碎片个数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ 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.GubaoID = 0
+ self.PieceCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCGubaoPiece)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 CB 古宝碎片信息 //tagMCGubaoPieceInfo:
+ GubaoID:%d,
+ PieceCount:%d
+ '''\
+ %(
+ self.GubaoID,
+ self.PieceCount
+ )
+ return DumpString
+
+
+class tagMCGubaoPieceInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ PieceInfoList = list() #(vector<tagMCGubaoPiece> PieceInfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCB
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temPieceInfoList = tagMCGubaoPiece()
+ _pos = temPieceInfoList.ReadData(_lpData, _pos)
+ self.PieceInfoList.append(temPieceInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xCB
+ self.Count = 0
+ self.PieceInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.PieceInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.PieceInfoList[i].GetLength(), self.PieceInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ PieceInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCGubaoPieceInfo=tagMCGubaoPieceInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoPieceInfo.Head.Cmd,m_NAtagMCGubaoPieceInfo.Head.SubCmd))] = m_NAtagMCGubaoPieceInfo
+
+
+#------------------------------------------------------
# A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
class tagMCHistoryReChargeAwardRecord(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Gubao.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Gubao.py
index 5bf2b42..afa6fae 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Gubao.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Gubao.py
@@ -45,10 +45,15 @@
for index in range(ipyDataMgr.GetGubaoCount()):
ipyData = ipyDataMgr.GetGubaoByIndex(index)
gubaoID = ipyData.GetGubaoID()
+ if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoPiece % gubaoID):
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoPiece % gubaoID, 0)
+ if gubaoID not in gubaoIDList:
+ gubaoIDList.append(gubaoID)
_, star = PlayerGubao.GetGubaoLVInfo(curPlayer, gubaoID)
if not star:
continue
- gubaoIDList.append(gubaoID)
+ if gubaoID not in gubaoIDList:
+ gubaoIDList.append(gubaoID)
PlayerGubao.SetGubaoLVInfo(curPlayer, gubaoID, 0, 0)
for effType in PlayerGubao.GubaoEffTtemIypeList:
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), 0)
@@ -94,6 +99,7 @@
PlayerGubao.RefreshGubaoAttr(curPlayer)
PlayerGubao.Sync_GubaoInfo(curPlayer, gubaoIDList)
+ PlayerGubao.Sync_GubaoPieceInfo(curPlayer, gubaoIDList)
return
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 fb1ab89..2484666 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -35,6 +35,7 @@
import PlayerMagicWeapon
import IpyGameDataPY
import DataRecordPack
+import PlayerGubao
import EventShell
import PlayerVip
import ChEquip
@@ -1119,6 +1120,13 @@
tagItem.Clear()
return True
itemEff = tagItem.GetEffectByIndex(0)
+ #古宝碎片
+ if itemEff.GetEffectID() == ChConfig.Def_Effect_GubaoPiece:
+ gubaoID = itemEff.GetEffectValue(0)
+ if gubaoID:
+ PlayerGubao.AddGubaoPiece(curPlayer, gubaoID, tagItem.GetCount(), itemID)
+ tagItem.Clear()
+ return True
#直升VIP
if itemEff.GetEffectID() == ChConfig.Def_Effect_VIPLVCard:
isAutoUse = itemEff.GetEffectValue(1)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GubaoPiece.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GubaoPiece.py
new file mode 100644
index 0000000..1c93023
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GubaoPiece.py
@@ -0,0 +1,32 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package UseItem.Item_GubaoPiece
+#
+# @todo:古宝碎片效果ID
+# @author hxp
+# @date 2023-03-31
+# @version 1.0
+#
+# 详细描述: 古宝碎片效果ID, A值-古宝ID
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2023-03-31 15:30"""
+#-------------------------------------------------------------------------------
+
+import ItemCommon
+import PlayerGubao
+import ChConfig
+
+def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData):
+ ##批量使用物品
+ curEff = curRoleItem.GetEffectByIndex(0)
+ gubaoID = curEff.GetEffectValue(0)
+ curCount, updCount = PlayerGubao.AddGubaoPiece(curPlayer, gubaoID, useCnt, curRoleItem.GetItemTypeID())
+ succCnt = useCnt
+ saveDataDict = {"gubaoID":gubaoID, "curCount":curCount, "updCount":updCount}
+ ItemCommon.DelItem(curPlayer, curRoleItem, succCnt, True, ChConfig.ItemDel_Unknown, saveDataDict, True)
+ return True, succCnt
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py
index 8e84b90..1cc9d8b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py
@@ -41,7 +41,7 @@
# 古宝领取物品特殊效果列表
GubaoEffTtemIypeList = [GubaoEffType_ActivityPlace, GubaoEffType_Arena, GubaoEffType_KillWorldBoss, GubaoEffType_KillBossHome,
- GubaoEffType_KillCrossPenglaiBoss, GubaoEffType_KillCrossDemonLandBoss, GubaoEffType_KillSealDemonBoss,
+ GubaoEffType_KillCrossPenglaiBoss, GubaoEffType_KillCrossDemonLandBoss, GubaoEffType_KillSealDemonBoss,
GubaoEffType_CrossRealmPK,
]
@@ -57,7 +57,46 @@
def OnPlayerLogin(curPlayer):
Sync_GubaoInfo(curPlayer)
Sync_GubaoItemEffInfo(curPlayer)
+ Sync_GubaoPieceInfo(curPlayer)
return
+
+def AddGubaoPiece(curPlayer, gubaoID, addCount, useItemID):
+ curCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoPiece % gubaoID)
+ updCount = min(curCount + addCount, ChConfig.Def_UpperLimit_DWord)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoPiece % gubaoID, updCount)
+ Sync_GubaoPieceInfo(curPlayer, [gubaoID])
+ GameWorld.Log("增加古宝碎片: gubaoID=%s,curCount=%s,addCount=%s,updCount=%s,useItemID=%s"
+ % (gubaoID, curCount, addCount, updCount, useItemID), curPlayer.GetPlayerID())
+ return curCount, updCount
+
+def DelGubaoPiece(curPlayer, gubaoID, delCount, delName):
+ curCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoPiece % gubaoID)
+ if curCount < delCount:
+ return False
+ updCount = curCount - delCount
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoPiece % gubaoID, updCount)
+ Sync_GubaoPieceInfo(curPlayer, [gubaoID])
+ GameWorld.Log("扣除古宝碎片: gubaoID=%s,curCount=%s,delCount=%s,updCount=%s,delName=%s"
+ % (gubaoID, curCount, delCount, updCount, delName), curPlayer.GetPlayerID())
+ return True
+
+def ParseGubaoNeedItem(curPlayer, needItemList):
+ ## 解析古宝功能所需物品,转化为古宝碎片+物品
+ needPieceInfo, realNeedItemList = {}, []
+ for itemID, itemCount in needItemList:
+ itemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
+ if not itemData:
+ continue
+ curEff = itemData.GetEffectByIndex(0)
+ effID = curEff.GetEffectID()
+ if effID != ChConfig.Def_Effect_GubaoPiece:
+ realNeedItemList.append([itemID, itemCount])
+ continue
+ gubaoID = curEff.GetEffectValue(0)
+ needPieceInfo[gubaoID] = needPieceInfo.get(gubaoID, 0) + itemCount
+ GameWorld.DebugLog("转化古宝功能所需物品: needItemList=%s,realNeedItemList=%s,needPieceInfo=%s"
+ % (needItemList, realNeedItemList, needPieceInfo), curPlayer.GetPlayerID())
+ return needPieceInfo, realNeedItemList
#// B2 16 古宝激活 #tagCMGubaoActivate
#
@@ -83,13 +122,24 @@
GameWorld.DebugLog("古宝已经激活过! gubaoID=%s" % gubaoID, playerID)
return
- itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- hasEnough, itemList = ItemCommon.GetItem_FromPack_ByID(needItemID, itemPack, needItemCnt)
- if not hasEnough:
- GameWorld.DebugLog("激活古宝道具不足! needItemID=%s,needItemCnt=%s" % (needItemID, needItemCnt), playerID)
- return
- ItemCommon.ReduceItem(curPlayer, itemPack, itemList, needItemCnt, False, "Gubao")
-
+ needPieceInfo, realNeedItemList = ParseGubaoNeedItem(curPlayer, [[needItemID, needItemCnt]])
+ if realNeedItemList:
+ itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
+ hasEnough, itemList = ItemCommon.GetItem_FromPack_ByID(needItemID, itemPack, needItemCnt)
+ if not hasEnough:
+ GameWorld.DebugLog("激活古宝道具不足! needItemID=%s,needItemCnt=%s" % (needItemID, needItemCnt), playerID)
+ return
+ for gID, needPieceCount in needPieceInfo.items():
+ curCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoPiece % gID)
+ if curCount < needPieceCount:
+ GameWorld.DebugLog("激活古宝碎片不足! gubaoID=%s,curCount=%s < needPieceCount=%s" % (gubaoID, curCount, needPieceCount), playerID)
+ return
+
+ for gID, needPieceCount in needPieceInfo.items():
+ DelGubaoPiece(curPlayer, gID, needPieceCount, "Activate")
+ if realNeedItemList:
+ ItemCommon.ReduceItem(curPlayer, itemPack, itemList, needItemCnt, False, "Gubao")
+
lv, star = 1, 1
SetGubaoLVInfo(curPlayer, gubaoID, lv, star)
GameWorld.Log("古宝激活成功! gubaoID=%s" % gubaoID, playerID)
@@ -126,14 +176,25 @@
if not needItemList:
return
- itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack)
- if lackItemDict:
- GameWorld.DebugLog("古宝升星所需物品不足! star=%s,needItemList=%s,lackItemDict=%s" % (star, needItemList, lackItemDict), playerID)
- return
+ needPieceInfo, realNeedItemList = ParseGubaoNeedItem(curPlayer, needItemList)
+ if realNeedItemList:
+ itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
+ lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(realNeedItemList, itemPack)
+ if lackItemDict:
+ GameWorld.DebugLog("古宝升星所需物品不足! star=%s,realNeedItemList=%s,lackItemDict=%s" % (star, realNeedItemList, lackItemDict), playerID)
+ return
+ for gID, needPieceCount in needPieceInfo.items():
+ curCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoPiece % gID)
+ if curCount < needPieceCount:
+ GameWorld.DebugLog("古宝升星所需古宝碎片不足! gubaoID=%s,curCount=%s < needPieceCount=%s" % (gubaoID, curCount, needPieceCount), playerID)
+ return
+
#扣消耗
- ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "Gubao")
-
+ for gID, needPieceCount in needPieceInfo.items():
+ DelGubaoPiece(curPlayer, gID, needPieceCount, "StarUp")
+ if realNeedItemList:
+ ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "Gubao")
+
updStar = star + 1
SetGubaoLVInfo(curPlayer, gubaoID, lv, updStar)
GameWorld.Log("古宝升星: gubaoID=%s,updStar=%s" % (gubaoID, updStar), playerID)
@@ -175,14 +236,25 @@
if not needItemList:
return
- itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack)
- if lackItemDict:
- GameWorld.DebugLog("古宝升级所需物品不足! quality=%s,lv=%s,needItemList=%s,lackItemDict=%s"
- % (quality, lv, needItemList, lackItemDict), playerID)
- return
+ needPieceInfo, realNeedItemList = ParseGubaoNeedItem(curPlayer, needItemList)
+ if realNeedItemList:
+ itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
+ lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(realNeedItemList, itemPack)
+ if lackItemDict:
+ GameWorld.DebugLog("古宝升级所需物品不足! quality=%s,lv=%s,realNeedItemList=%s,lackItemDict=%s"
+ % (quality, lv, realNeedItemList, lackItemDict), playerID)
+ return
+ for gID, needPieceCount in needPieceInfo.items():
+ curCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoPiece % gID)
+ if curCount < needPieceCount:
+ GameWorld.DebugLog("古宝升级所需古宝碎片不足! gubaoID=%s,curCount=%s < needPieceCount=%s" % (gubaoID, curCount, needPieceCount), playerID)
+ return
+
#扣消耗
- ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "Gubao")
+ for gID, needPieceCount in needPieceInfo.items():
+ DelGubaoPiece(curPlayer, gID, needPieceCount, "LVUp")
+ if realNeedItemList:
+ ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "Gubao")
updLV = lv + 1
SetGubaoLVInfo(curPlayer, gubaoID, updLV, star)
@@ -640,3 +712,32 @@
NetPackCommon.SendFakePack(curPlayer, clientPack)
return
+def Sync_GubaoPieceInfo(curPlayer, gubaoIDList=None):
+ if gubaoIDList == None:
+ syncIDList = []
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for index in range(ipyDataMgr.GetGubaoCount()):
+ ipyData = ipyDataMgr.GetGubaoByIndex(index)
+ syncIDList.append(ipyData.GetGubaoID())
+ else:
+ syncIDList = gubaoIDList
+
+ pieceInfoList = []
+ for gubaoID in syncIDList:
+ curCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoPiece % gubaoID)
+ if not curCount and gubaoIDList == None:
+ # 没有指定时只同步有数量的
+ continue
+ gubao = ChPyNetSendPack.tagMCGubaoPiece()
+ gubao.GubaoID = gubaoID
+ gubao.PieceCount = curCount
+ pieceInfoList.append(gubao)
+
+ if not pieceInfoList:
+ return
+
+ clientPack = ChPyNetSendPack.tagMCGubaoPieceInfo()
+ clientPack.PieceInfoList = pieceInfoList
+ clientPack.Count = len(clientPack.PieceInfoList)
+ NetPackCommon.SendFakePack(curPlayer, clientPack)
+ return
--
Gitblit v1.8.0