From ea99ae4d08b7475560dceb9b8fd9a370daab0cbb Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 09 九月 2019 18:54:22 +0800 Subject: [PATCH] 8255 【后端】【主干】拍品可使用及上下架优化(拍品可下架) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini | 6 + ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 57 ++++++++++++++ ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 57 ++++++++++++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py | 21 +++++ ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py | 46 ++++++++++- 5 files changed, 181 insertions(+), 6 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index 07975d4..5b4630e 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py @@ -15908,6 +15908,63 @@ #------------------------------------------------------ +# B5 15 拍卖行下架拍品 #tagCMUnsellAuctionItem + +class tagCMUnsellAuctionItem(Structure): + Head = tagHead() + ItemGUID = "" #(char ItemGUID[40]) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x15 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x15 + self.ItemGUID = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 40 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 40, self.ItemGUID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemGUID:%s + '''\ + %( + self.Head.OutputString(), + self.ItemGUID + ) + return DumpString + + +m_NAtagCMUnsellAuctionItem=tagCMUnsellAuctionItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnsellAuctionItem.Head.Cmd,m_NAtagCMUnsellAuctionItem.Head.SubCmd))] = m_NAtagCMUnsellAuctionItem + + +#------------------------------------------------------ # B9 04 修改队伍相关审核状态 #tagCMChangeTeamCheckState class tagCMChangeTeamCheckState(Structure): diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py index 6ca7fd6..efb3b97 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py @@ -52,7 +52,8 @@ AuctionRecordResult_BidOK, # 竞价成功 AuctionRecordResult_BidFail, # 竞价失败 AuctionRecordResult_MoveToWorld, # 仙盟拍品转移到全服拍品 -) = range(6) +AuctionRecordResult_Unsell, # 下架 +) = range(7) # 当前拍品归类 0-全服拍品 1-仙盟私有拍品 AuctionType_World = 0 @@ -847,13 +848,17 @@ elif playerID: endType = "Return" - # 流拍返还物品邮件 + # 返还物品邮件 paramList = [] detail = {"ItemGUID":itemGUID} addItemList = [{"ItemID":itemID, "Count":itemCount, "IsAuctionItem":True, "UserData":auctionItem.UserData}] - PlayerCompensation.SendMailByKey("PaimaiMail4", [playerID], addItemList, paramList, detail=detail) - - AddAuctionRecord(auctionItem, AuctionRecordResult_SellFail) + # 下架 + if endEvent == "Unsell": + PlayerCompensation.SendMailByKey("PaimaiMail9", [playerID], addItemList, paramList, detail=detail) + AddAuctionRecord(auctionItem, AuctionRecordResult_Unsell) + else: + PlayerCompensation.SendMailByKey("PaimaiMail4", [playerID], addItemList, paramList, detail=detail) + AddAuctionRecord(auctionItem, AuctionRecordResult_SellFail) else: endType = "SystemDelete" GameWorld.Log("系统拍品流拍: itemGUID=%s,itemID=%s" % (itemGUID, itemID)) @@ -972,6 +977,12 @@ return + # 下架拍品 + elif queryType == "UnsellAuctionItem": + itemGUID = queryData[0] + __DoUnsellAuctionItem(curPlayer, itemGUID) + return + elif queryType == "ClearAuctionItem": __DoGMClearAuctionItem(curPlayer) return @@ -1134,6 +1145,31 @@ NetPackCommon.SendFakePack(player, infoPack) return +def __DoUnsellAuctionItem(curPlayer, itemGUID): + ## 下架拍品 + auctionItem = GetAuctionItem(itemGUID) + if not auctionItem: + # 拍品不存在 + PlayerControl.NotifyCode(curPlayer, "Paimai3") + return + playerID = curPlayer.GetPlayerID() + itemID = auctionItem.ItemID + if auctionItem.FamilyID: + GameWorld.ErrLog("仙盟拍品无法下架!itemGUID=%s,itemID=%s,itemFamilyID=%s" + % (itemGUID, itemID, auctionItem.FamilyID), playerID) + return + if auctionItem.PlayerID != playerID: + GameWorld.ErrLog("不是玩家自己的拍品无法下架!itemGUID=%s,itemID=%s,itemPlayerID=%s" + % (itemGUID, itemID, auctionItem.PlayerID), playerID) + return + if auctionItem.BidderPrice: + # 竞价中的拍品不能下架 + PlayerControl.NotifyCode(curPlayer, "Paimai9") + return + + __EndAuctionItem([auctionItem], "Unsell") + return + def __DoPlayerBidAuctionItem(curPlayer, itemGUID, biddingPrice, tick, isOnlyCheck): ''' 玩家竞价物品 @param curPlayer: 竞价的玩家 diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini index 39a9b11..1ef2ae9 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini @@ -1036,7 +1036,7 @@ Writer = hxp Releaser = hxp RegType = 0 -RegisterPackCount = 2 +RegisterPackCount = 3 PacketCMD_1=0xB5 PacketSubCMD_1=0x13 @@ -1046,6 +1046,10 @@ PacketSubCMD_2=0x14 PacketCallFunc_2=OnBiddingAuctionItem +PacketCMD_3=0xB5 +PacketSubCMD_3=0x15 +PacketCallFunc_3=OnUnsellAuctionItem + ;法宝 [PlayerMagicWeapon] ScriptName = Player\PlayerMagicWeapon.py diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py index 07975d4..5b4630e 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py @@ -15908,6 +15908,63 @@ #------------------------------------------------------ +# B5 15 拍卖行下架拍品 #tagCMUnsellAuctionItem + +class tagCMUnsellAuctionItem(Structure): + Head = tagHead() + ItemGUID = "" #(char ItemGUID[40]) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x15 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB5 + self.Head.SubCmd = 0x15 + self.ItemGUID = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 40 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 40, self.ItemGUID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemGUID:%s + '''\ + %( + self.Head.OutputString(), + self.ItemGUID + ) + return DumpString + + +m_NAtagCMUnsellAuctionItem=tagCMUnsellAuctionItem() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnsellAuctionItem.Head.Cmd,m_NAtagCMUnsellAuctionItem.Head.SubCmd))] = m_NAtagCMUnsellAuctionItem + + +#------------------------------------------------------ # B9 04 修改队伍相关审核状态 #tagCMChangeTeamCheckState class tagCMChangeTeamCheckState(Structure): 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 666237d..28d9b81 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py @@ -246,6 +246,27 @@ __DoAddAuctionItem(None, auctionItemList) return +#// B5 15 拍卖行下架拍品 #tagCMUnsellAuctionItem +# +#struct tagCMUnsellAuctionItem +#{ +# tagHead Head; +# char ItemGUID[40]; +#}; +def OnUnsellAuctionItem(index, clientData, tick): + curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) + playerID = curPlayer.GetPlayerID() + itemGUID = clientData.ItemGUID + + # 直接发邮件,这里就不验证背包了 +# #验证背包空间 +# if not ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem): +# PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371") +# return + + QueryGameServer_AuctionHouse(playerID, "UnsellAuctionItem", [itemGUID]) + return + def DR_AuctionHouse(curPlayer, eventName, drDict): accID = "" if not curPlayer else curPlayer.GetAccID() playerID = 0 if not curPlayer else curPlayer.GetPlayerID() -- Gitblit v1.8.0