| | |
| | | itemRankList.append(key)
|
| | | itemDict[key] = itemDict[key] + itemCount
|
| | |
|
| | | mailItemCount = 0
|
| | | giveItemList = []
|
| | | for itemInfo in itemRankList:
|
| | | if len(itemInfo) == 4:
|
| | | itemID, itemCount, isBind, userData = itemInfo
|
| | |
| | | userData = ""
|
| | | itemID, isBind = itemInfo
|
| | | itemCount = itemDict.get(itemInfo, 0)
|
| | | |
| | | giveItemList.append([itemID, itemCount, isBind, userData])
|
| | | |
| | | Max_MailItem = 20
|
| | | if len(giveItemList) > Max_MailItem:
|
| | | GameWorld.SendGameErrorEx("MailItemMultiError", "%s|%s|%s|%s" % (guid, len(giveItemList), itemList, giveItemList))
|
| | | #giveItemList = giveItemList[:Max_MailItem] 暂时还是让发,先做下后台邮件警告即可
|
| | | |
| | | for itemID, itemCount, isBind, userData in giveItemList: |
| | | dbData = DBStruct.tagDBMailItem()
|
| | | dbData.GUID = guid
|
| | | dbData.ItemID = itemID
|
| | |
| | | dbData.UserData = userData
|
| | | dbData.UserDataLen = len(dbData.UserData)
|
| | | self.__InitMailItemInstance(dbData)
|
| | | |
| | | mailItemCount += 1
|
| | | if mailItemCount >= 20:
|
| | | #防范某些异常情况,内置单封邮件物品上限,做下限制,并做后台邮件警告
|
| | | GameWorld.SendGameErrorEx("MailItemMultiError", "%s|%s" % (guid, itemList))
|
| | | break
|
| | |
|
| | | return
|
| | |
|
| | |
| | | for _ in xrange(cnt):
|
| | | dbData.clear()
|
| | | pos += dbData.readData(datas, pos, dataslen)
|
| | | self.SetServerMailPlayerState(dbData.GUID, dbData.PlayerID, dbData.MailState)
|
| | | self.SetPlayerMailState(dbData.GUID, dbData.PlayerID, dbData.MailState)
|
| | |
|
| | | # 个人邮件
|
| | | cnt, pos = CommFunc.ReadDWORD(datas, pos)
|