9790 9762 【BT9】【后端】藏宝阁修改(增加领取物品奖励特殊效果)
# Conflicts:
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py
| | |
| | | list EffFuncAttrIDList; //提升指定功能属性ID列表
|
| | | DWORD EffAttrID; //直接增加属性类型
|
| | | DWORD EffAttrValue; //提升属性值
|
| | | list EffItemAwardList; //领取物品列表
|
| | | };
|
| | |
|
| | | //古宝品质升级表
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 CA 古宝物品特殊效果信息 #tagMCGubaoItemEffInfo
|
| | |
|
| | | class tagMCGubaoItemEff(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("GubaoID", c_ushort), |
| | | ("EffType", c_ubyte), # 不同古宝ID允许拥有相同效果类型,进度值每个古宝ID单独统计
|
| | | ("EffValue", 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.EffType = 0
|
| | | self.EffValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCGubaoItemEff)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 CA 古宝物品特殊效果信息 //tagMCGubaoItemEffInfo:
|
| | | GubaoID:%d,
|
| | | EffType:%d,
|
| | | EffValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.GubaoID,
|
| | | self.EffType,
|
| | | self.EffValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCGubaoItemEffInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(WORD Count)
|
| | | ItemEffInfoList = list() #(vector<tagMCGubaoItemEff> ItemEffInfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCA
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temItemEffInfoList = tagMCGubaoItemEff()
|
| | | _pos = temItemEffInfoList.ReadData(_lpData, _pos)
|
| | | self.ItemEffInfoList.append(temItemEffInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCA
|
| | | self.Count = 0
|
| | | self.ItemEffInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.ItemEffInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ItemEffInfoList[i].GetLength(), self.ItemEffInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | ItemEffInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCGubaoItemEffInfo=tagMCGubaoItemEffInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoItemEffInfo.Head.Cmd,m_NAtagMCGubaoItemEffInfo.Head.SubCmd))] = m_NAtagMCGubaoItemEffInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
|
| | |
|
| | | class tagMCHistoryReChargeAwardRecord(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 CA 古宝物品特殊效果信息 #tagMCGubaoItemEffInfo
|
| | |
|
| | | class tagMCGubaoItemEff(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("GubaoID", c_ushort), |
| | | ("EffType", c_ubyte), # 不同古宝ID允许拥有相同效果类型,进度值每个古宝ID单独统计
|
| | | ("EffValue", 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.EffType = 0
|
| | | self.EffValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCGubaoItemEff)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 CA 古宝物品特殊效果信息 //tagMCGubaoItemEffInfo:
|
| | | GubaoID:%d,
|
| | | EffType:%d,
|
| | | EffValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.GubaoID,
|
| | | self.EffType,
|
| | | self.EffValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCGubaoItemEffInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(WORD Count)
|
| | | ItemEffInfoList = list() #(vector<tagMCGubaoItemEff> ItemEffInfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCA
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temItemEffInfoList = tagMCGubaoItemEff()
|
| | | _pos = temItemEffInfoList.ReadData(_lpData, _pos)
|
| | | self.ItemEffInfoList.append(temItemEffInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCA
|
| | | self.Count = 0
|
| | | self.ItemEffInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.ItemEffInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ItemEffInfoList[i].GetLength(), self.ItemEffInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | ItemEffInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCGubaoItemEffInfo=tagMCGubaoItemEffInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoItemEffInfo.Head.Cmd,m_NAtagMCGubaoItemEffInfo.Head.SubCmd))] = m_NAtagMCGubaoItemEffInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
|
| | |
|
| | | class tagMCHistoryReChargeAwardRecord(Structure):
|
| | |
| | | import GameWorld |
| | | import IpyGameDataPY |
| | | import PlayerGubao |
| | | import PlayerControl |
| | | import ChConfig |
| | | |
| | | #--------------------------------------------------------------------- |
| | | #逻辑实现 |
| | |
| | | if not msgList: |
| | | GameWorld.DebugAnswer(curPlayer, "重置古宝: Gubao 0") |
| | | GameWorld.DebugAnswer(curPlayer, "设置古宝: Gubao 古宝ID 等级 星级") |
| | | GameWorld.DebugAnswer(curPlayer, "设置效果: Gubao e 古宝ID 效果类型 进度值") |
| | | return |
| | | |
| | | gubaoIDList = [] |
| | | |
| | | value1 = msgList[0] |
| | | if len(msgList) == 1: |
| | | if msgList[0] == 0: |
| | | ipyDataMgr = IpyGameDataPY.IPY_Data() |
| | |
| | | continue |
| | | gubaoIDList.append(gubaoID) |
| | | PlayerGubao.SetGubaoLVInfo(curPlayer, gubaoID, 0, 0) |
| | | for effType in PlayerGubao.GubaoEffTtemIypeList: |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), 0) |
| | | |
| | | PlayerGubao.Sync_GubaoItemEffInfo(curPlayer, force=True) |
| | | GameWorld.DebugAnswer(curPlayer, "重置古宝OK") |
| | | |
| | | elif len(msgList) == 3: |
| | |
| | | GameWorld.DebugAnswer(curPlayer, "设置古宝:%s,等级(%s),星(%s)" % (gubaoID, lv, star)) |
| | | PlayerGubao.SetGubaoLVInfo(curPlayer, gubaoID, lv, star) |
| | | gubaoIDList.append(gubaoID) |
| | | elif value1 == "e": |
| | | if len(msgList) != 4: |
| | | return |
| | | _, gubaoID, effType, effValue = msgList |
| | | if effType not in PlayerGubao.GubaoEffTtemIypeList: |
| | | GameWorld.DebugAnswer(curPlayer, "古宝物品效果类型仅包含:%s" % str(PlayerGubao.GubaoEffTtemIypeList)) |
| | | return |
| | | ipyData = IpyGameDataPY.GetIpyGameData("Gubao", gubaoID) |
| | | if not ipyData: |
| | | GameWorld.DebugAnswer(curPlayer, "不存在该古宝!gubaoID=%s" % gubaoID) |
| | | return |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), effValue) |
| | | PlayerGubao.Sync_GubaoItemEffInfo(curPlayer, gubaoID, effType, True) |
| | | GameWorld.DebugAnswer(curPlayer, "设置古宝:%s,效果类型(%s),值(%s)" % (gubaoID, effType, effValue)) |
| | | else: |
| | | return |
| | | |
| | |
| | | import GameWorldProcess
|
| | | import PetControl
|
| | | import AttackCommon
|
| | | import PlayerGubao
|
| | |
|
| | | #当前副本地图的状态
|
| | | (
|
| | |
| | | if rank == 1:
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FMTFirst, addCnt)
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_SealDemon, addCnt)
|
| | |
|
| | | PlayerGubao.AddGubaoItemEffValue(curPlayer, PlayerGubao.GubaoEffType_KillSealDemonBoss, addCnt)
|
| | | |
| | | #击杀特定NPC成就
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillSpecificNPC, addCnt, [bossID])
|
| | |
|
| | |
| | | ("list", "EffFuncAttrIDList", 0),
|
| | | ("DWORD", "EffAttrID", 0),
|
| | | ("DWORD", "EffAttrValue", 0),
|
| | | ("list", "EffItemAwardList", 0),
|
| | | ),
|
| | |
|
| | | "GubaoLV":(
|
| | |
| | | self.IsPer = 0
|
| | | self.EffFuncAttrIDList = []
|
| | | self.EffAttrID = 0
|
| | | self.EffAttrValue = 0 |
| | | self.EffAttrValue = 0
|
| | | self.EffItemAwardList = [] |
| | | return |
| | | |
| | | def GetGubaoEffID(self): return self.GubaoEffID # 古宝特殊效果ID
|
| | |
| | | def GetIsPer(self): return self.IsPer # 是否百分比提升
|
| | | def GetEffFuncAttrIDList(self): return self.EffFuncAttrIDList # 提升指定功能属性ID列表
|
| | | def GetEffAttrID(self): return self.EffAttrID # 直接增加属性类型
|
| | | def GetEffAttrValue(self): return self.EffAttrValue # 提升属性值 |
| | | def GetEffAttrValue(self): return self.EffAttrValue # 提升属性值
|
| | | def GetEffItemAwardList(self): return self.EffItemAwardList # 领取物品列表 |
| | | |
| | | # 古宝品质升级表 |
| | | class IPY_GubaoLV(): |
| | |
| | | import GameWorld
|
| | | import ChConfig
|
| | | import GameObj
|
| | | import PlayerGubao
|
| | |
|
| | | ## 是否匹配中
|
| | | def SetIsCrossPKMatching(curPlayer, isMatching):
|
| | |
| | | PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_CrossReamPK)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_CrossPK, 1)
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_CrossPK, 1)
|
| | | PlayerGubao.AddGubaoItemEffValue(curPlayer, PlayerGubao.GubaoEffType_CrossRealmPK, 1)
|
| | | PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_CrossPK)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_CrossPK, 1)
|
| | | else:
|
| | |
| | | import PlayerDogz
|
| | | import PlayerPet
|
| | | import ChConfig
|
| | | import ItemControler
|
| | |
|
| | | GubaoEffType_ActivityPlace = 33 # 活跃修炼x次可领取物品 x次
|
| | | GubaoEffType_Arena = 34 # 竞技场挑战x次可领取物品 x次
|
| | | GubaoEffType_KillWorldBoss = 35 # 击杀世界bossx次可领取物品 x次
|
| | | GubaoEffType_KillBossHome = 36 # 击杀boss之家bossx次可领取物品 x次
|
| | | GubaoEffType_KillCrossPenglaiBoss = 37 # 击杀蓬莱仙境bossx次可领取物品 x次
|
| | | GubaoEffType_KillCrossDemonLandBoss = 38 # 击杀魔化之地bossx次可领取物品 x次
|
| | | GubaoEffType_KillSealDemonBoss = 39 # 击杀封魔坛bossx次可领取物品 x次
|
| | | GubaoEffType_CrossRealmPK = 40 # 参与跨服天梯赛x次可领取物品 x次
|
| | |
|
| | | # 古宝领取物品特殊效果列表
|
| | | GubaoEffTtemIypeList = [GubaoEffType_ActivityPlace, GubaoEffType_Arena, GubaoEffType_KillWorldBoss, GubaoEffType_KillBossHome,
|
| | | GubaoEffType_KillCrossPenglaiBoss, GubaoEffType_KillCrossDemonLandBoss, GubaoEffType_KillSealDemonBoss, |
| | | GubaoEffType_CrossRealmPK,
|
| | | ]
|
| | |
|
| | | def GetGubaoLVInfo(curPlayer, gubaoID):
|
| | | lvInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoLVInfo % gubaoID)
|
| | |
| | |
|
| | | def OnPlayerLogin(curPlayer):
|
| | | Sync_GubaoInfo(curPlayer)
|
| | | Sync_GubaoItemEffInfo(curPlayer)
|
| | | return
|
| | |
|
| | | #// B2 16 古宝激活 #tagCMGubaoActivate
|
| | |
| | | effAttrInfo[attrID] = effAttrInfo.get(attrID, 0) + addAttrValue
|
| | | return
|
| | |
|
| | | def AddGubaoItemEffValue(curPlayer, effType, addCnt):
|
| | | if effType not in GubaoEffTtemIypeList:
|
| | | return
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in xrange(ipyDataMgr.GetGubaoCount()):
|
| | | ipyData = ipyDataMgr.GetGubaoByIndex(index)
|
| | | gubaoID = ipyData.GetGubaoID()
|
| | | _, star = GetGubaoLVInfo(curPlayer, gubaoID)
|
| | | if not star:
|
| | | continue
|
| | | starIpyData = IpyGameDataPY.GetIpyGameData("GubaoStar", gubaoID, star)
|
| | | if not starIpyData:
|
| | | continue
|
| | | starEffIDList = starIpyData.GetStarEffIDList()
|
| | | for effID in starEffIDList:
|
| | | effIpyData = IpyGameDataPY.GetIpyGameData("GubaoEffAttr", effID)
|
| | | if not effIpyData:
|
| | | continue
|
| | | if effType != effIpyData.GetGubaoEffType():
|
| | | continue
|
| | | effValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType))
|
| | | updValue = min(effValue + addCnt, ChConfig.Def_UpperLimit_DWord)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), updValue)
|
| | | GameWorld.DebugLog("更新古宝物品效果类型进度值: gubaoID=%s,effID=%s,effType=%s,effValue=%s,addCnt=%s,updValue=%s" |
| | | % (gubaoID, effID, effType, effValue, addCnt, updValue), curPlayer.GetPlayerID())
|
| | | Sync_GubaoItemEffInfo(curPlayer, gubaoID, effType, True)
|
| | | return
|
| | |
|
| | | def GetGubaoItemEffAward(curPlayer, gubaoID, effIDStr):
|
| | | _, star = GetGubaoLVInfo(curPlayer, gubaoID)
|
| | | if not star:
|
| | | #GameWorld.DebugLog("古宝物品效果领奖! 没有星级! gubaoID=%s" % (gubaoID), curPlayer.GetPlayerID())
|
| | | return
|
| | | starIpyData = IpyGameDataPY.GetIpyGameData("GubaoStar", gubaoID, star)
|
| | | if not starIpyData:
|
| | | return
|
| | | starEffIDList = starIpyData.GetStarEffIDList()
|
| | | effID = GameWorld.ToIntDef(effIDStr)
|
| | | if not effID or effID not in starEffIDList:
|
| | | GameWorld.DebugLog("古宝物品效果领奖! 该星级不存在该效果ID! gubaoID=%s,star=%s,effID=%s" |
| | | % (gubaoID, star, effID), curPlayer.GetPlayerID())
|
| | | return
|
| | | effIpyData = IpyGameDataPY.GetIpyGameData("GubaoEffAttr", effID)
|
| | | if not effIpyData:
|
| | | return
|
| | | effType = effIpyData.GetGubaoEffType()
|
| | | if effType not in GubaoEffTtemIypeList:
|
| | | GameWorld.DebugLog("古宝物品效果领奖! 非物品效果类型! gubaoID=%s,star=%s,effID=%s,effType=%s" |
| | | % (gubaoID, star, effID, effType), curPlayer.GetPlayerID())
|
| | | return
|
| | | condValue = effIpyData.GetEffCond()
|
| | | awardItemList = effIpyData.GetEffItemAwardList()
|
| | | if not condValue or not awardItemList:
|
| | | return
|
| | | effValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType))
|
| | | getTimes = effValue / condValue
|
| | | if getTimes <= 0:
|
| | | GameWorld.DebugLog("古宝物品效果领奖! 未达到领奖条件! gubaoID=%s,star=%s,effID=%s,effType=%s,effValue=%s,condValue=%s" |
| | | % (gubaoID, star, effID, effType, effValue, condValue), curPlayer.GetPlayerID())
|
| | | return
|
| | | awardItemTotalList = []
|
| | | if getTimes > 1:
|
| | | for itemID, itemCount, isAuctionItem in awardItemList:
|
| | | awardItemTotalList.append([itemID, int(itemCount * getTimes), isAuctionItem])
|
| | | else:
|
| | | awardItemTotalList = awardItemList
|
| | | updValue = effValue % condValue
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), updValue)
|
| | | Sync_GubaoItemEffInfo(curPlayer, gubaoID, effType, True)
|
| | | GameWorld.DebugLog("古宝物品效果领奖: gubaoID=%s,star=%s,effID=%s,effType=%s,effValue=%s,condValue=%s,getTimes=%s,updValue=%s,awardItemTotalList=%s" |
| | | % (gubaoID, star, effID, effType, effValue, condValue, getTimes, updValue, awardItemTotalList), curPlayer.GetPlayerID())
|
| | | ItemControler.GivePlayerItemOrMail(curPlayer, awardItemTotalList, event=["Gubao", False, {}])
|
| | | return
|
| | |
|
| | | def Sync_GubaoInfo(curPlayer, gubaoIDList=None):
|
| | | if gubaoIDList == None:
|
| | | syncIDList = []
|
| | |
| | | clientPack.Count = len(clientPack.GubaoInfoList)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|
| | | def Sync_GubaoItemEffInfo(curPlayer, gubaoID=0, effType=0, force=False):
|
| | | syncIDList = []
|
| | | if not gubaoID:
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in range(ipyDataMgr.GetGubaoCount()):
|
| | | ipyData = ipyDataMgr.GetGubaoByIndex(index)
|
| | | syncIDList.append(ipyData.GetGubaoID())
|
| | | else:
|
| | | syncIDList = [gubaoID]
|
| | | |
| | | syncEffTypeList = [effType] if effType else GubaoEffTtemIypeList
|
| | | |
| | | itemEffInfoList = []
|
| | | for gubaoID in syncIDList:
|
| | | for effType in syncEffTypeList:
|
| | | effValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType))
|
| | | if not effValue and not force:
|
| | | # 非强制同步情况下只同步有值的
|
| | | continue
|
| | | eff = ChPyNetSendPack.tagMCGubaoItemEff()
|
| | | eff.GubaoID = gubaoID
|
| | | eff.EffType = effType
|
| | | eff.EffValue = effValue
|
| | | itemEffInfoList.append(eff)
|
| | | |
| | | if not itemEffInfoList:
|
| | | return
|
| | | |
| | | clientPack = ChPyNetSendPack.tagMCGubaoItemEffInfo()
|
| | | clientPack.ItemEffInfoList = itemEffInfoList
|
| | | clientPack.Count = len(clientPack.ItemEffInfoList)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|