From 09daae185e5a4005076419f98d896f991e39335e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 11 三月 2019 21:30:51 +0800
Subject: [PATCH] 6332 【后端】【2.0】主要是拍品相关规则调整及背包优化(邮件拍品处理,拍品奖励配置格式优化)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 78 ++++++---------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MakeItemCount.py | 14 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChGameToMapPyPack.py | 7 +
ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/testMail.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py | 33 ++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py | 45 +++++++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py | 8
ServerPython/CoreServerGroup/GameServer/Script/ChGameToMapPyPack.py | 7 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py | 12 +-
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 16 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AuctionItem.py | 19 +--
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py | 21 ++-
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py | 4
16 files changed, 159 insertions(+), 118 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChGameToMapPyPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChGameToMapPyPack.py
index 819991e..2b3a2db 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChGameToMapPyPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChGameToMapPyPack.py
@@ -478,6 +478,7 @@
PlayerID = 0 #(DWORD PlayerID)//玩家ID
CompensationType = 0 #(BYTE CompensationType)//补偿类型 0 全服 1 个人
GUID = "" #(char GUID[40])//对应的补偿ID
+ CreateTime = "" #(char CreateTime[30])//邮件接收时间
TextLen = 0 #(DWORD TextLen)//文字内容长度
Text = "" #(String Text)//文字内容
Count = 0 #(BYTE Count)//当前补偿物品数
@@ -500,6 +501,7 @@
self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.CompensationType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30)
self.TextLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Text,_pos = CommFunc.ReadString(_lpData, _pos,self.TextLen)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -521,6 +523,7 @@
self.PlayerID = 0
self.CompensationType = 0
self.GUID = ""
+ self.CreateTime = ""
self.TextLen = 0
self.Text = ""
self.Count = 0
@@ -537,6 +540,7 @@
length += 4
length += 1
length += 40
+ length += 30
length += 4
length += len(self.Text)
length += 1
@@ -555,6 +559,7 @@
data = CommFunc.WriteDWORD(data, self.PlayerID)
data = CommFunc.WriteBYTE(data, self.CompensationType)
data = CommFunc.WriteString(data, 40, self.GUID)
+ data = CommFunc.WriteString(data, 30, self.CreateTime)
data = CommFunc.WriteDWORD(data, self.TextLen)
data = CommFunc.WriteString(data, self.TextLen, self.Text)
data = CommFunc.WriteBYTE(data, self.Count)
@@ -572,6 +577,7 @@
PlayerID:%d,
CompensationType:%d,
GUID:%s,
+ CreateTime:%s,
TextLen:%d,
Text:%s,
Count:%d,
@@ -586,6 +592,7 @@
self.PlayerID,
self.CompensationType,
self.GUID,
+ self.CreateTime,
self.TextLen,
self.Text,
self.Count,
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/testMail.py b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/testMail.py
index 24c7c81..db5f6ed 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/testMail.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/testMail.py
@@ -41,7 +41,7 @@
moneySource = gmList[5] if paramCnt > 5 else ChConfig.Def_GiveMoney_Mail
paramList = gmList[6:]
- itemCfg = [(29,2000000000,1),(912,5,1),(10161,1,1),(10162,1,1),(10163,1,1)]
+ itemCfg = [(29,2000000000,0),(912,5,1),(10161,1,1),(10162,1,0),(10163,1,0)]
addItemList = itemCfg[0:itemCnt]
content = "<MailTemplate>%s</MailTemplate>%s" % (mailNum, paramList)
mailGUID = PlayerCompensation.SendPersonalItemMailEx("", content, 1, [curPlayer.GetPlayerID()], addItemList,
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py
index 7f3ae4f..4fff4c3 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py
@@ -429,7 +429,7 @@
# 竞拍成功邮件,发放物品
paramList = [bidderPrice]
detail = {"ItemGUID":itemGUID}
- addItemList = [{"ItemID":itemID, "Count":itemCount, "IsBind":True, "UserData":auctionItem.UserData}]
+ addItemList = [{"ItemID":itemID, "Count":itemCount, "IsAuctionItem":False, "UserData":auctionItem.UserData}]
PlayerCompensation.SendMailByKey("PaimaiMail3", [bidderID], addItemList, paramList, detail=detail)
AddAuctionRecord(auctionItem, AuctionRecordResult_BidOK)
@@ -472,7 +472,7 @@
# 流拍返还物品邮件
paramList = []
detail = {"ItemGUID":itemGUID}
- addItemList = [{"ItemID":itemID, "Count":itemCount, "IsBind":True, "UserData":auctionItem.UserData}]
+ addItemList = [{"ItemID":itemID, "Count":itemCount, "IsAuctionItem":False, "UserData":auctionItem.UserData}]
PlayerCompensation.SendMailByKey("PaimaiMail4", [playerID], addItemList, paramList, detail=detail)
AddAuctionRecord(auctionItem, AuctionRecordResult_SellFail)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py
index 280bae4..704baf5 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py
@@ -76,13 +76,14 @@
#curItemData.GUID = curItemDict['GUID']
curItemData.ItemID = curItemDict['ItemID']
curItemData.Count = curItemDict['Count']
- curItemData.IsBind = curItemDict.get('IsBind',0)
+ #curItemData.IsBind = curItemDict.get('IsBind',0)
+ curItemData.IsBind = 1 if not curItemDict.get('IsAuctionItem',0) else 0
curItemData.UserData = curItemDict.get('UserData', '')
return curItemData
# 此处货币playerIDList发放统一,如根据玩家不同而变,则应需修改
## 功能发放物品补偿/奖励邮件
-# @param addItemList [(itemID, itemCnt, isBind), {或物品信息字典}, ...]
+# @param addItemList [(itemID, itemCnt, 是否拍品), {或物品信息字典}, ...]
# @return GUID
def SendPersonalItemMailEx(title, content, getDays, playerIDList, addItemList, gold = 0, goldPaper = 0, silver = 0,
detail="", moneySource=ChConfig.Def_GiveMoney_Mail):
@@ -131,7 +132,7 @@
# 此处货币playerIDList发放统一,如根据玩家不同而变,则应需修改
## 功能发放物品补偿/奖励邮件
-# @param addItemList [(itemID, itemCnt, isBind), {或物品信息字典}, ...]
+# @param addItemList [(itemID, itemCnt, 是否拍品), {或物品信息字典}, ...]
# @return GUID
# @remarks addItemList支持append字典
def SendPersonalItemMail(title, content, limitTime, playerIDList, addItemList, gold = 0, goldPaper = 0, silver = 0,
@@ -156,14 +157,14 @@
if len(itemInfo) == 3:
- itemID, itemCnt, isBind = itemInfo
+ itemID, itemCnt, isAuctionItem = itemInfo
else:
continue
addItemDict = {}
addItemDict['ItemID'] = itemID
addItemDict['Count'] = itemCnt
- addItemDict['IsBind'] = isBind
+ addItemDict['IsAuctionItem'] = isAuctionItem
addItemDictList.append(addItemDict)
perMailItemCnt = IpyGameDataPY.GetFuncCfg("MailMaxItemCnt")
@@ -672,7 +673,6 @@
curPlayer.SetDict(Def_RequestState, 0)#解锁
GameWorld.DebugLog("Compensation### OnMGRequestCompensation no found")
return
- Text, gold, goldPaper, silver, moneySource = curEntireRequire.Text, curEntireRequire.Gold, curEntireRequire.GoldPaper, curEntireRequire.Silver, curEntireRequire.Type
#校验背包剩余空间是否足够
#===========================================================================
# curCUIDItemCount = GameWorld.GetCompensationMgr().FindItemCount(GUID)
@@ -682,7 +682,7 @@
# return
#===========================================================================
#发送到MapServer给予奖励
- SendGMRequestCompensationResult(routeIndex, mapID, curPlayer, GUID, compensationType, Text, gold, goldPaper, silver, moneySource)
+ SendGMRequestCompensationResult(routeIndex, mapID, curPlayer, GUID, compensationType, curEntireRequire)
GameWorld.DebugLog("Compensation### OnMGRequestCompensation out")
##请求领取物品
@@ -758,12 +758,15 @@
##发送封包 03 02 玩家领取补偿结果#tagGMRequestCompensationResult
# @param routeIndex, mapID, curPlayer, curItem
# @return None
-def SendGMRequestCompensationResult(routeIndex, mapID, curPlayer, GUID, compensationType, Text,
- gold, goldPaper, silver, moneySource):
+def SendGMRequestCompensationResult(routeIndex, mapID, curPlayer, GUID, compensationType, curEntireRequire):
+
+ Text, gold, goldPaper, silver, moneySource, createTime = curEntireRequire.Text, curEntireRequire.Gold, \
+ curEntireRequire.GoldPaper, curEntireRequire.Silver, curEntireRequire.Type, curEntireRequire.CreateTime
sendPack = ChGameToMapPyPack.tagGMRequestCompensationResult()
sendPack.PlayerID = curPlayer.GetID()
sendPack.CompensationType = compensationType
sendPack.GUID = GUID
+ sendPack.CreateTime = createTime
sendPack.Text = Text
sendPack.TextLen = len(Text)
sendPack.Gold = gold
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 8c72982..0eea719 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -1295,6 +1295,8 @@
Def_IudetCreateTime = 44 # 时效物品的创建时间
Def_IudetGatherSoulLV = 46 # 聚魂等级
Def_IudetExpireTime = 48 # 时效物品指定有效时间,时间单位由时效类型决定
+Def_IudetAuctionItemCreateTime = 50 # 拍品创建时间
+
# 200~300 宠物数据用
Def_IudetPet_NPCID = 200 # npcID
Def_IudetPet_ClassLV = 202 # 阶级
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChGameToMapPyPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChGameToMapPyPack.py
index 819991e..2b3a2db 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChGameToMapPyPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChGameToMapPyPack.py
@@ -478,6 +478,7 @@
PlayerID = 0 #(DWORD PlayerID)//玩家ID
CompensationType = 0 #(BYTE CompensationType)//补偿类型 0 全服 1 个人
GUID = "" #(char GUID[40])//对应的补偿ID
+ CreateTime = "" #(char CreateTime[30])//邮件接收时间
TextLen = 0 #(DWORD TextLen)//文字内容长度
Text = "" #(String Text)//文字内容
Count = 0 #(BYTE Count)//当前补偿物品数
@@ -500,6 +501,7 @@
self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.CompensationType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30)
self.TextLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Text,_pos = CommFunc.ReadString(_lpData, _pos,self.TextLen)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -521,6 +523,7 @@
self.PlayerID = 0
self.CompensationType = 0
self.GUID = ""
+ self.CreateTime = ""
self.TextLen = 0
self.Text = ""
self.Count = 0
@@ -537,6 +540,7 @@
length += 4
length += 1
length += 40
+ length += 30
length += 4
length += len(self.Text)
length += 1
@@ -555,6 +559,7 @@
data = CommFunc.WriteDWORD(data, self.PlayerID)
data = CommFunc.WriteBYTE(data, self.CompensationType)
data = CommFunc.WriteString(data, 40, self.GUID)
+ data = CommFunc.WriteString(data, 30, self.CreateTime)
data = CommFunc.WriteDWORD(data, self.TextLen)
data = CommFunc.WriteString(data, self.TextLen, self.Text)
data = CommFunc.WriteBYTE(data, self.Count)
@@ -572,6 +577,7 @@
PlayerID:%d,
CompensationType:%d,
GUID:%s,
+ CreateTime:%s,
TextLen:%d,
Text:%s,
Count:%d,
@@ -586,6 +592,7 @@
self.PlayerID,
self.CompensationType,
self.GUID,
+ self.CreateTime,
self.TextLen,
self.Text,
self.Count,
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AuctionItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AuctionItem.py
index 9764610..f6a38cd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AuctionItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AuctionItem.py
@@ -58,14 +58,8 @@
GameWorld.DebugAnswer(curPlayer, "非拍卖物品无法上架")
return
auctionItemList = []
- if itemCount < auctionGroup:
- GameWorld.DebugAnswer(curPlayer, "物品个数不能少于组数")
- return
- groupItemCount = itemCount / auctionGroup
- for i in xrange(auctionGroup):
- if i == auctionGroup - 1:
- groupItemCount += itemCount % auctionGroup
- curItem = ItemControler.GetOutPutItemObj(itemID, groupItemCount, isAuctionItem)
+ for _ in xrange(auctionGroup):
+ curItem = ItemControler.GetOutPutItemObj(itemID, itemCount, isAuctionItem)
auctionItemList.append([curItem])
PlayerAuctionHouse.__DoAddAuctionItem(curPlayer, auctionItemList)
@@ -79,9 +73,6 @@
itemID = msgList[1]
itemCount = max(1, msgList[2] if paramCount > 2 else 1)
auctionGroup = max(1, msgList[3] if paramCount > 3 else 1)
- if itemCount < auctionGroup:
- GameWorld.DebugAnswer(curPlayer, "物品个数不能少于组数")
- return
ipyData = IpyGameDataPY.GetIpyGameData("AuctionItem", itemID)
if not ipyData:
GameWorld.DebugAnswer(curPlayer, "非拍卖物品无法上架")
@@ -91,7 +82,7 @@
if playerID not in familyPlayerIDList:
familyPlayerIDList.append(playerID)
- familyAuctionItemList = [[itemID, itemCount, auctionGroup]]
+ familyAuctionItemList = [[itemID, itemCount]] * auctionGroup
familyAuctionItemDict = {familyID:[familyPlayerIDList, familyAuctionItemList]}
PlayerAuctionHouse.DoAddFamilyAuctionItem(familyAuctionItemDict)
@@ -103,8 +94,8 @@
def __Help(curPlayer):
GameWorld.DebugAnswer(curPlayer, "清空所有拍品: AuctionItem 0")
- GameWorld.DebugAnswer(curPlayer, "添加个人拍品: AuctionItem 1 物品ID 个数 分几组")
- GameWorld.DebugAnswer(curPlayer, "添加仙盟拍品: AuctionItem 2 物品ID 个数 分几组 受益玩家IDA 玩家IDB...")
+ GameWorld.DebugAnswer(curPlayer, "添加个人拍品: AuctionItem 1 物品ID 个数 几组")
+ GameWorld.DebugAnswer(curPlayer, "添加仙盟拍品: AuctionItem 2 物品ID 个数 几组 受益玩家IDA 玩家IDB...")
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MakeItemCount.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MakeItemCount.py
index 85de183..3e30edd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MakeItemCount.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MakeItemCount.py
@@ -39,7 +39,7 @@
#输入命令格式错误
if len(msgList) < 1:
- GameWorld.DebugAnswer(curPlayer, "MakeItemCount ID (个数 拍品分组 全部传奇属性)")
+ GameWorld.DebugAnswer(curPlayer, "MakeItemCount ID (个数 拍品组数 全部传奇属性)")
return
event = [ChConfig.ItemGive_GMMake, False, {"CMD":"MakeItemCount"}]
@@ -63,22 +63,20 @@
# 拍品
if auctionGroup > 0:
- isAuctionItem = True
ipyData = IpyGameDataPY.GetIpyGameData("AuctionItem", itemID)
if not ipyData:
GameWorld.DebugAnswer(curPlayer, "非可拍卖物品itemID=%s" % (itemID))
return
- if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, auctionGroup, [IPY_GameWorld.rptItem], event=event):
- GameWorld.DebugAnswer(curPlayer, "###放入物品失败!")
+ for _ in xrange(auctionGroup):
+ if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, True, [IPY_GameWorld.rptItem], event=event):
+ GameWorld.DebugAnswer(curPlayer, "###放入物品失败!")
else:
- auctionGroup = 0
- isAuctionItem = False
if not ItemCommon.GetIsEquip(itemData):
- if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, auctionGroup, [IPY_GameWorld.rptItem], event=event):
+ if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, False, [IPY_GameWorld.rptItem], event=event):
GameWorld.DebugAnswer(curPlayer, "###放入物品失败!")
else:
for _ in xrange(itemCount):
- __DoGMGivePlayerItem(curPlayer, playerItemControler, itemID, 1, isAuctionItem, isAllAttr, event)
+ __DoGMGivePlayerItem(curPlayer, playerItemControler, itemID, 1, False, isAllAttr, event)
return
def __DoGMGivePlayerItem(curPlayer, playerItemControler, itemID, count, isAuctionItem, isAllAttr, event):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
index 03a013c..d2a1be6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -582,7 +582,7 @@
return
def GetJsonItemList(itemList):
- ## [[itemID,itemCount,isBind], curItem] -> [{"ItemID":101, "Count":10, "IsBind":1, "IsSuite":1, "UserData":"自定义属性字符串"}]
+ ## [[itemID,itemCount,isAuctionItem], curItem] -> [{"ItemID":101, "Count":10, "IsAuctionItem":1, "UserData":"自定义属性字符串"}]
jsonItemList = []
for itemInfo in itemList:
itemDict = {}
@@ -593,7 +593,7 @@
if infolen > 1:
itemDict['Count'] = itemInfo[1]
if infolen > 2:
- itemDict['IsBind'] = int(itemInfo[2])
+ itemDict['IsAuctionItem'] = int(itemInfo[2])
elif isinstance(itemInfo, int):
itemDict['ItemID'] = itemInfo
else: #物品实例
@@ -601,8 +601,8 @@
continue
itemDict['ItemID'] = itemInfo.GetItemTypeID()
itemDict['Count'] = itemInfo.GetCount()
- itemDict['IsBind'] = int(itemInfo.GetIsBind())
- itemDict['IsSuite'] = int(itemInfo.GetIsSuite())
+ itemDict['IsAuctionItem'] = 0 if itemInfo.GetIsBind() else 1
+ #itemDict['IsSuite'] = int(itemInfo.GetIsSuite())
itemDict['UserData'] = itemInfo.GetUserData()
jsonItemList.append(itemDict)
return jsonItemList
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 af044ed..8288db0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -1532,7 +1532,7 @@
# 使用拍品
if not curItem.GetIsBind():
- __DoLogic_PlayerUseAuctionItem(curPlayer, curItem, itemIndex, exData)
+ DoLogic_PlayerUseAuctionItem(curPlayer, curItem)
return
if useCnt <= 0:
@@ -1543,13 +1543,14 @@
return
-def __DoLogic_PlayerUseAuctionItem(curPlayer, curItem, itemIndex, exData):
+def DoLogic_PlayerUseAuctionItem(curPlayer, curItem):
## 玩家使用拍品
playerID = curPlayer.GetPlayerID()
itemID = curItem.GetItemTypeID()
curItem.SetIsBind(1) # 设置为非拍品
- GameWorld.DebugLog("玩家使用拍品: itemIndex=%s,itemID=%s,exData=%s" % (itemID, itemIndex, exData), playerID)
+ curItem.ClearUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime)
+ GameWorld.DebugLog("玩家使用拍品: itemID=%s" % (itemID), playerID)
if ItemCommon.GetIsEquip(curItem):
# 生成传奇属性
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 8fda9bb..cb28e8c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -1117,8 +1117,7 @@
tagItemCount = GetItemCount(tagItem)
isBind = tagItem.GetIsBind()
isAuctionItem = not isBind
- auctionGroup = 1 if isAuctionItem else 0 # 物品实例默认一组
- if not self.CanPutInItem(packIndex, tagItem.GetItemTypeID(), tagItemCount, auctionGroup, defaultPile):
+ if not self.CanPutInItem(packIndex, tagItem.GetItemTypeID(), tagItemCount, isAuctionItem, defaultPile):
GameWorld.DebugLog("背包满,不能放入物品 count = %d"%GetItemCount(tagItem))
tagItem.Clear()
return False
@@ -1137,8 +1136,8 @@
return True
defaultPile = True
maxPackCount = ChConfig.Def_UpperLimit_DWord # 转化物品叠加上限不取物品表的, 暂定堆叠上限20亿
- elif auctionGroup > 0:
- maxPackCount = max(1, tagItemCount / auctionGroup) # 每组至少1个
+ elif isAuctionItem:
+ maxPackCount = tagItemCount
defaultPile = False # 新放入的拍品只能放空位置,所以不判断堆叠
#isBind = False
isNeedRecord = True # 拍品要记录
@@ -1339,25 +1338,25 @@
# @param packIndex 背包索引
# @param curItemID 当前物品ID
# @param curItemCount 当前物品数量
- # @param auctionGroup 拍品组数
+ # @param isAuctionItem 是否拍品
# @param defaultPile 默认先判断是否能进行物品堆叠
# @return True or False
# @remarks 函数详细说明.
- def CanPutInItem(self, packIndex, curItemID, curItemCount, auctionGroup, defaultPile=True):
+ def CanPutInItem(self, packIndex, curItemID, curItemCount, isAuctionItem, defaultPile=True):
if GameWorld.IsCrossServer():
return True
- checkRet, putIndex = self.CanPutInItemEx(packIndex, curItemID, curItemCount, auctionGroup, defaultPile)
+ checkRet, putIndex = self.CanPutInItemEx(packIndex, curItemID, curItemCount, isAuctionItem, defaultPile)
return checkRet
## 是否能放入物品
# @param packIndex 背包索引
# @param curItemID 当前物品ID
# @param curItemCount 当前物品数量
- # @param auctionGroup 拍品组数
+ # @param isAuctionItem 是否拍品
# @param defaultPile 默认先判断是否能进行物品堆叠
# @return True or False, 第一个可放入的位置
# @remarks 函数详细说明.
- def CanPutInItemEx(self, packIndex, curItemID, curItemCount, auctionGroup, defaultPile=True):
+ def CanPutInItemEx(self, packIndex, curItemID, curItemCount, isAuctionItem, defaultPile=True):
gameData = GameWorld.GetGameData()
curItemData = gameData.GetItemByTypeID(curItemID)
@@ -1371,8 +1370,8 @@
if packIndex == IPY_GameWorld.rptItem:
return True, 0
maxPackCount = ChConfig.Def_UpperLimit_DWord # 转化物品叠加上限不取物品表的, 暂定堆叠上限20亿
- elif auctionGroup > 0:
- maxPackCount = max(1, curItemCount / auctionGroup) # 每组至少1个
+ elif isAuctionItem:
+ maxPackCount = curItemCount
defaultPile = False # 新放入的拍品只能放空位置,所以不判断堆叠
isBind = False
else:
@@ -1547,7 +1546,7 @@
#curItemGUID = curItem.GetGUID()
curItemCount = curItem.GetCount()
#curItemIsBind = curItem.GetIsBind()
- auctionGroup = 1 if not curItem.GetIsBind() else 0 # 已经生成的物品实例默认1组
+ isAuctionItem = 0 if curItem.GetIsBind() else 1
#toPackIndex = ChConfig.GetItemPackType(curItem.GetType(), toPackIndex)
# 常规物品转移到虚拟符印背包
@@ -1556,7 +1555,7 @@
return False
return itemControl.PutItemInVPack(toPackIndex, curItem)
- checkRet, putIndex = itemControl.CanPutInItemEx(toPackIndex, curItemTypeID, curItemCount, auctionGroup)
+ checkRet, putIndex = itemControl.CanPutInItemEx(toPackIndex, curItemTypeID, curItemCount, isAuctionItem)
if not checkRet:
return False
return DragItem(curPlayer, fromPackIndex, itemIndex, toPackIndex, putIndex, curItemCount)
@@ -2056,9 +2055,9 @@
return
-def GivePlayerItem(curPlayer, itemID, itemCount, auctionGroup, packIndexList, event=["", False, {}]):
+def GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, packIndexList, event=["", False, {}]):
'''给玩家物品
- @param auctionGroup: 拍品组数,0为非拍品,大于0为总给的物品数拆成的拍品组数;注意这个不一定按叠加拆分,策划自行决定非几组拍
+ @param isAuctionItem: 是否拍品
'''
if itemCount <= 0:
return False
@@ -2067,13 +2066,12 @@
if not curItemData:
return False
- if auctionGroup > 0:
+ if isAuctionItem:
ipyData = IpyGameDataPY.GetIpyGameData("AuctionItem", itemID)
if not ipyData:
- GameWorld.ErrLog("非拍卖物品,不能按拍品分组,默认转为非拍品! itemID=%s,itemCount=%s,auctionGroup=%s"
- % (itemID, itemCount, auctionGroup), curPlayer.GetPlayerID())
- auctionGroup = 0
- isAuctionItem = True if auctionGroup > 0 else False
+ GameWorld.ErrLog("非拍卖物品,默认转为非拍品! itemID=%s,itemCount=%s,isAuctionItem=%s"
+ % (itemID, itemCount, isAuctionItem), curPlayer.GetPlayerID())
+ isAuctionItem = 0
defaultPack = IPY_GameWorld.rptItem if not packIndexList else packIndexList[0]
packIndex = ChConfig.GetItemPackType(curItemData.GetType(), defaultPack)
@@ -2085,7 +2083,7 @@
itemControl = PlayerItemControler(curPlayer)
for packIndex in packIndexList:
#可以放入背包
- if itemControl.CanPutInItem(packIndex, itemID, itemCount, auctionGroup):
+ if itemControl.CanPutInItem(packIndex, itemID, itemCount, isAuctionItem):
canPutIn = True
break
if not canPutIn:
@@ -2108,23 +2106,6 @@
if not outPutEquip:
return isOK
if DoLogic_PutItemInPack(curPlayer, outPutEquip, event, packIndexList):
- isOK = True # 只要有成功的就返回成功,防止异常情况失败可能导致被刷
- return isOK
-
- if auctionGroup > 0:
- isOK = False
- doCount = itemCount
- maxPackCount = max(1, itemCount / auctionGroup) # 每组至少1个
- while itemCount > 0 and doCount > 0:
- doCount -= 1
- giveCount = maxPackCount if itemCount >= maxPackCount else itemCount
- if giveCount <= 0:
- break
- itemCount -= giveCount
- giveItem = GetOutPutItemObj(itemID, giveCount, isAuctionItem, curPlayer=curPlayer)
- if not giveItem:
- return isOK
- if DoLogic_PutItemInPack(curPlayer, giveItem, event, packIndexList):
isOK = True # 只要有成功的就返回成功,防止异常情况失败可能导致被刷
return isOK
@@ -2316,7 +2297,9 @@
return item.GetUserAttr(ShareDefine.Def_IudetItemCount)
return item.GetCount()
-def GetItemNeedPackCount(packType, itemData, itemCount):
+def GetItemNeedPackCount(packType, itemData, itemCount, isAuctionItem=0):
+ if isAuctionItem:
+ return 1
if itemData.GetItemTypeID() in ChConfig.Def_TransformItemIDList:
# 货币直接转换的物品如果是放入背包的则不需要暂用格子,放入其他的背包的则按物品叠加上限算
if packType == IPY_GameWorld.rptItem:
@@ -2548,12 +2531,11 @@
curItem.Clear()
return
-def PutItemInTempSwap(curPlayer, itemID, isBind=1):
+def PutItemInTempSwap(curPlayer, itemID, isAuctionItem=0):
## 临时背包放入物品
# 临时交换背包目前只开放1个格子,每次放入前先清空再放入
ClearPack(curPlayer, ShareDefine.rptTempSwap)
- auctionGroup = 1 if not isBind else 0
- return GivePlayerItem(curPlayer, itemID, 1, auctionGroup, [ShareDefine.rptTempSwap])
+ return GivePlayerItem(curPlayer, itemID, 1, isAuctionItem, [ShareDefine.rptTempSwap])
def OpenPickupItemPutInTemp(curPlayer, isClearItem):
''' 开启拾取的物品放入临时存放背包
@@ -2600,8 +2582,8 @@
itemControl = PlayerItemControler(curPlayer)
for tempItem in tempItemList:
itemControl.PutInItem(IPY_GameWorld.rptItem, tempItem, event=event)
- for itemID, itemCnt, isBind in extraItemList:
- GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem], event=event)
+ for itemID, itemCnt, isAuctionItem in extraItemList:
+ GivePlayerItem(curPlayer, itemID, itemCnt, isAuctionItem, [IPY_GameWorld.rptItem], event=event)
ClearPack(curPlayer, ShareDefine.rptTempItem)
return
@@ -2609,13 +2591,13 @@
def GivePlayerItemOrMail(curPlayer, itemList, mailKey=None, event=["", False, {}]):
##给物品,背包满则发邮件
needPackSpaceDict = {}
- for itemID, itemCnt, isBind in itemList:
+ for itemID, itemCnt, isAuctionItem in itemList:
curItem = GameWorld.GetGameData().GetItemByTypeID(itemID)
if not curItem:
GameWorld.ErrLog('GivePlayerItemOrMail 物品ID不存在 itemID=%s'%itemID, curPlayer.GetID())
return
packType = ChConfig.GetItemPackType(curItem.GetType())
- needSpace = GetItemNeedPackCount(packType, curItem, itemCnt)
+ needSpace = GetItemNeedPackCount(packType, curItem, itemCnt, isAuctionItem)
needPackSpaceDict[packType] = needPackSpaceDict.get(packType, 0) + needSpace
isSendMail = False
for packType, needSpace in needPackSpaceDict.items():
@@ -2627,6 +2609,6 @@
PlayerControl.SendMailByKey(mailKey, [curPlayer.GetPlayerID()], itemList)
GameWorld.DebugLog("GivePlayerItemOrMail背包空间不够,发送邮件: mailItemList=%s" % str(itemList), curPlayer.GetPlayerID())
else:
- for itemID, itemCnt, isBind in itemList:
- GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem], event=event)
+ for itemID, itemCnt, isAuctionItem in itemList:
+ GivePlayerItem(curPlayer, itemID, itemCnt, isAuctionItem, [IPY_GameWorld.rptItem], event=event)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
index 41b244d..d9b15b3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -374,9 +374,10 @@
return
curSingleItem.SetRemainHour(outTimeServerDay)
- isBind = not isAuctionItem
- if isBind:
- curSingleItem.SetIsBind(1)
+ if isAuctionItem:
+ curSingleItem.SetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime, int(time.time()))
+ else:
+ curSingleItem.SetIsBind(1)
ItemControler.SetItemCount(curSingleItem, itemCount)
@@ -2020,7 +2021,8 @@
addItemDict = {}
addItemDict['ItemID'] = curItem.GetItemTypeID()
addItemDict['Count'] = curItem.GetCount()
- addItemDict['IsBind'] = int(curItem.GetIsBind())
+ addItemDict['IsAuctionItem'] = 0 if curItem.GetIsBind() else 1
+ #addItemDict['IsBind'] = int(curItem.GetIsBind())
#addItemDict['EquipGS'] = GetEquipGearScore(curItem)
#addItemDict['ItemStarLV'] = curItem.GetItemStarLV()
#addItemDict['CurDurg'] = GameWorld.GetIntUpper(curItem.GetCurDurg(), ChConfig.Def_EndureRepairParameter)
@@ -2044,7 +2046,7 @@
#addItemDict['EquipMaxAtkValue'] = curItem.GetEquipMaxAtkValue()
#addItemDict['FitLV'] = curItem.GetFitLV()
#addItemDict['Proficiency'] = curItem.GetProficiency()
- addItemDict['IsSuite'] = int(curItem.GetIsSuite())
+ #addItemDict['IsSuite'] = int(curItem.GetIsSuite())
#addItemDict['BaseHP'] = curItem.GetBaseHP()
#addItemDict['BaseMagicDef'] = curItem.GetBaseMagicDef()
#addItemDict['MaxAddSkillCnt'] = curItem.GetMaxAddSkillCnt()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py
index d734301..f0e4de5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py
@@ -22,6 +22,10 @@
import ItemControler
import ItemCommon
import ChConfig
+import ShareDefine
+import ChItem
+
+import time
#// B5 13 拍卖行上架拍品 #tagCMSellAuctionItem
#
@@ -46,6 +50,15 @@
itemID = curItem.GetItemTypeID()
ipyData = IpyGameDataPY.GetIpyGameData("AuctionItem", itemID)
if not ipyData:
+ return
+ auctionItemCreateTime = curItem.GetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime)
+ if not auctionItemCreateTime:
+ GameWorld.DebugLog("没有拍品创建时间,无法上架!", playerID)
+ return
+ curTime = int(time.time())
+ if curTime - auctionItemCreateTime > IpyGameDataPY.GetFuncCfg("AuctionItem", 1) * 3600:
+ GameWorld.DebugLog("拍品已过期,无法上架!auctionItemCreateTime=%s" % (GameWorld.ChangeTimeNumToStr(auctionItemCreateTime)), playerID)
+ ChItem.DoLogic_PlayerUseAuctionItem(curPlayer, curItem)
return
QueryGameServer_AuctionHouse(playerID, "AddAuctionItemQuery", [itemIndex, itemGUID, itemID])
@@ -128,25 +141,25 @@
def DoAddFamilyAuctionItem(familyAuctionItemDict):
''' 上架仙盟拍品,因为仙盟拍品默认上架,所以使用批量上架
- @param familyAuctionItemDict: {仙盟ID:[[享受收益的成员ID, ...], [[拍品ID,总个数,拍品组数], ...]], ...}
+ @param familyAuctionItemDict: {仙盟ID:[[享受收益的成员ID, ...], [[拍品ID,个数], [拍品ID,个数,是否拍品], ...]], ...}
'''
+ GameWorld.Log("上架仙盟拍品: %s" % familyAuctionItemDict)
isAuctionItem = True
auctionItemList = []
for familyID, auctionInfo in familyAuctionItemDict.items():
familyPlayerIDList, familyAuctionItemList = auctionInfo
- for itemID, itemCount, auctionGroup in familyAuctionItemList:
+ for itemInfo in familyAuctionItemList:
+ if len(itemInfo) < 2:
+ continue
+ itemID, itemCount = itemInfo[:2]
ipyData = IpyGameDataPY.GetIpyGameData("AuctionItem", itemID)
if not ipyData:
GameWorld.ErrLog("非拍卖物品,无法上架仙盟拍品! familyID=%s,itemID=%s,itemCount=%s" % (familyID, itemID, itemCount))
continue
- groupItemCount = itemCount / auctionGroup
- for i in xrange(auctionGroup):
- if i == auctionGroup - 1:
- groupItemCount += itemCount % auctionGroup
- curItem = ItemControler.GetOutPutItemObj(itemID, groupItemCount, isAuctionItem)
- if not curItem:
- continue
- auctionItemList.append([curItem, familyID, familyPlayerIDList])
+ curItem = ItemControler.GetOutPutItemObj(itemID, itemCount, isAuctionItem)
+ if not curItem:
+ continue
+ auctionItemList.append([curItem, familyID, familyPlayerIDList])
__DoAddAuctionItem(None, auctionItemList)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py
index 591b86d..5010831 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py
@@ -29,6 +29,9 @@
import EventReport
import ChConfig
import PlayerControl
+import IpyGameDataPY
+
+import time
##A5 3B 请求领取补偿#tagCMRequestCompensation
# @param index, clientPack, tick
@@ -68,6 +71,7 @@
GameWorld.DebugLog(" PlayerID %s no found "%curPackData.PlayerID)
return
+ hasAuctionItem = False
needPackSpaceDict = {}
isPackSpaceEnough = True
# 先汇总物品所属背包
@@ -78,9 +82,12 @@
if not curItemData:
continue
+ isAuctionItem = not curPackItem.IsBind
packType = ChConfig.GetItemPackType(curItemData.GetType())
- needSpace = ItemControler.GetItemNeedPackCount(packType, curItemData, curPackItem.Count)
+ needSpace = ItemControler.GetItemNeedPackCount(packType, curItemData, curPackItem.Count, isAuctionItem)
needPackSpaceDict[packType] = needPackSpaceDict.get(packType, 0) + needSpace
+ if isAuctionItem:
+ hasAuctionItem = True
GameWorld.DebugLog(" needPackSpaceDict=%s" % str(needPackSpaceDict))
for packType, needSpace in needPackSpaceDict.items():
@@ -88,6 +95,28 @@
PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165", [packType])
isPackSpaceEnough = False
break
+
+ auctionItemTimeout = False
+ auctionItemCreateTime = 0
+ if hasAuctionItem:
+ auctionItemValidTimesMax = IpyGameDataPY.GetFuncCfg("AuctionItem", 1) * 3600 # 拍品有效时长
+ auctionItemValidTimesMail = IpyGameDataPY.GetFuncCfg("AuctionItem", 2) * 3600 # 邮件拍品附加有效时长
+ auctionItemValidTimesTotal = auctionItemValidTimesMail + auctionItemValidTimesMax
+ mailCreateTimeStr = curPackData.CreateTime
+ mailCreateTime = GameWorld.ChangeTimeStrToNum(mailCreateTimeStr)
+ curTime = int(time.time())
+ passTime = curTime - mailCreateTime
+ if passTime <= auctionItemValidTimesMail:
+ GameWorld.DebugLog("邮件拍品领取时间在附加保护时长内,拍品创建时间即领取邮件时间开始算!passTime(%s) <= auctionItemValidTimesMail(%s)" % (passTime, auctionItemValidTimesMail))
+ pass
+ elif auctionItemValidTimesMail < passTime < auctionItemValidTimesTotal:
+ auctionItemCreateTime = curTime - (passTime - auctionItemValidTimesMail)
+ GameWorld.DebugLog("邮件拍品领取时间超过邮件保护时间,拍品创建时间需扣除领取时的溢出时间!auctionItemValidTimesMail(%s) < passTime(%s) < auctionItemValidTimesTotal(%s), auctionItemCreateTime=%s"
+ % (auctionItemValidTimesMail, passTime, auctionItemValidTimesTotal, GameWorld.ChangeTimeNumToStr(auctionItemCreateTime)))
+ elif passTime >= auctionItemValidTimesMax:
+ auctionItemTimeout = True
+ GameWorld.DebugLog("邮件中的拍品已过期,将自动转为非拍品!passTime(%s) >= auctionItemValidTimesMax(%s)"
+ % (passTime, auctionItemValidTimesMax))
#背包空间不足
if not isPackSpaceEnough:
@@ -108,13 +137,11 @@
for i in xrange(curPackData.Count):
curPackItem = curPackData.Items[i]
itemID = curPackItem.ItemID
+ isAuctionItem = not curPackItem.IsBind and not auctionItemTimeout
if ItemControler.GetAppointItemRealID(itemID):
- #定制物品
- ItemControler.GivePlayerItem(curPlayer, itemID, curPackItem.Count, 0, [IPY_GameWorld.rptItem],
- event=[ChConfig.ItemGive_Mail, False, {"MailGUID":curPackData.GUID}])
- continue
-
- curCreateItem = ItemCommon.CreateSingleItem(itemID, curPackItem.Count, not curPackItem.IsBind)
+ curCreateItem = ItemControler.GetItemByData(ItemControler.GetAppointItemDictData(itemID, isAuctionItem))
+ else:
+ curCreateItem = ItemCommon.CreateSingleItem(itemID, curPackItem.Count, isAuctionItem)
if not curCreateItem:
GameWorld.ErrLog("OnGMRequestCompensationResult CreateSingleItem %s Err "%itemID)
continue
@@ -125,6 +152,10 @@
#设置UserData
UserData = "%s"%UserDataDict
curCreateItem.SetUserData(UserData, len(UserData))
+
+ if isAuctionItem and auctionItemCreateTime:
+ curCreateItem.SetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime, auctionItemCreateTime)
+
ItemCommon.MakeEquipGS(curCreateItem)
#放入玩家背包
ItemControler.PlayerItemControler(curPlayer).PutInItem(IPY_GameWorld.rptItem, curCreateItem,
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 1a6d2ea..6beeb0e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -355,7 +355,7 @@
return
## 功能发放物品补偿/奖励邮件
-# @param addItemList [(itemID, itemCnt, isBind), {或物品信息字典}, ...]
+# @param addItemList [(itemID, itemCnt, 是否拍品), {或物品信息字典}, ...]
# @return
def SendMail(title, content, getDays, playerIDList, addItemList, gold=0, goldPaper=0, silver=0, detail="", moneySource=ChConfig.Def_GiveMoney_Mail):
if not playerIDList:
@@ -382,23 +382,25 @@
if len(mailItem) != 3:
continue
- itemID, itemCnt, isBind = mailItem
+ itemID, itemCnt, isAuctionItem = mailItem
if ItemControler.GetAppointItemRealID(itemID):
# 定制物品转化为物品信息字典
- appointItemObj = ItemControler.GetItemByData(ItemControler.GetAppointItemDictData(itemID, False))
+ appointItemObj = ItemControler.GetItemByData(ItemControler.GetAppointItemDictData(itemID, isAuctionItem))
if not appointItemObj:
- GameWorld.ErrLog("邮件定制物品转化失败!itemID, itemCnt, isBind" % (itemID, itemCnt, isBind))
+ GameWorld.ErrLog("邮件定制物品转化失败!itemID, itemCnt, isAuctionItem" % (itemID, itemCnt, isAuctionItem))
continue
combineItemList.append(ItemCommon.GetMailItemDict(appointItemObj))
appointItemObj.Clear()
+ elif isAuctionItem:
+ combineItemList.append((itemID, itemCnt, isAuctionItem))
else:
- key = (itemID, isBind)
+ key = (itemID, isAuctionItem)
itemCountDict[key] = itemCountDict.get(key, 0) + itemCnt
for key, itemCnt in itemCountDict.items():
- itemID, isBind = key
- combineItemList.append((itemID, itemCnt, isBind))
+ itemID, isAuctionItem = key
+ combineItemList.append((itemID, itemCnt, isAuctionItem))
cmdList = [title, content, getDays, playerIDList, combineItemList, gold, goldPaper, silver, detail, moneySource]
GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "SendMail", '%s' % (cmdList), len(str(cmdList)))
return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 8c72982..0eea719 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1295,6 +1295,8 @@
Def_IudetCreateTime = 44 # 时效物品的创建时间
Def_IudetGatherSoulLV = 46 # 聚魂等级
Def_IudetExpireTime = 48 # 时效物品指定有效时间,时间单位由时效类型决定
+Def_IudetAuctionItemCreateTime = 50 # 拍品创建时间
+
# 200~300 宠物数据用
Def_IudetPet_NPCID = 200 # npcID
Def_IudetPet_ClassLV = 202 # 阶级
--
Gitblit v1.8.0