From c19d3b869bfb294223a38880e15935fc0d73bc9e Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期四, 15 十一月 2018 14:35:18 +0800
Subject: [PATCH] 2378 【1.3】【1.2】集市购买偶发出现扣仙玉没有给物品bug
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBourseTube.py | 32 +++++++++++++++++---------------
ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py | 3 ++-
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py | 16 +++++++++++++++-
3 files changed, 34 insertions(+), 17 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py
index ef8aa1b..515da95 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py
@@ -31,6 +31,7 @@
import PyGameDataStruct
import PyDataManager
import ChPyNetSendPack
+import PyGameData
import time
import json
@@ -437,6 +438,15 @@
PlayerControl.NotifyCode(curPlayer, "BoursePasswordError")
GameWorld.DebugLog("Bourse### MGCheckBuyBourseItem ItemGUID %s pwd is error! %s != %s" % (curPackData.ItemGUID, curBourseItem.GetPwd(), curPackData.Pwd))
return
+ #物品交易锁定状态判断
+ curTime = int(time.time())
+ if curPackData.ItemGUID in PyGameData.g_bourseItemTradingTimeDict:
+ if curTime - PyGameData.g_bourseItemTradingTimeDict.get(curPackData.ItemGUID, 0) < 10:
+ curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(curPackData.PlayerID)
+ if curPlayer:
+ PlayerControl.NotifyCode(curPlayer, "MarketNoPutaway5")
+ return
+ PyGameData.g_bourseItemTradingTimeDict[curPackData.ItemGUID] = curTime
#//02 02 玩家购买交易所物品查询结果#tagGMCheckBuyBourseItemResult
sendPack = ChGameToMapPyPack.tagGMCheckBuyBourseItemResult()
@@ -469,6 +479,10 @@
if CheckBourseItemDataSaleState(curBourseItem):
GameWorld.Log("玩家确认购买交易所物品 Bourse### MGBuyBourseItemSure ItemGUID %s SoldOut" % (curPackData.ItemGUID), curPlayerID)
return
+ if not curPackData.PlayerName: #为空时代表地图判断购买失败
+ PyGameData.g_bourseItemTradingTimeDict.pop(curPackData.ItemGUID, 0)
+ return
+
#给物品//02 03 玩家获取交易所物品结果#tagGMGiveBourseItem
sendPack = GetGMGiveBourseItemPack(curPlayerID, curBourseItem)
NetPackCommon.SendPyPackToMapServer(routeIndex, mapID, sendPack)
@@ -478,7 +492,7 @@
curBourseItem.SetCustomerPlayerName(curPackData.PlayerName)
soldOutTime = int(time.time())
curBourseItem.SetSoldOutTime(str(soldOutTime))
-
+ PyGameData.g_bourseItemTradingTimeDict.pop(curPackData.ItemGUID, 0)
#通知顾客购买物品状态变更
curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(curPlayerID)
if curPlayer:
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
index 8873ab7..94c1825 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
@@ -77,4 +77,5 @@
g_familyPartyTopInfo = [] #仙盟宴会答题王 [playerID,名字]
g_partyheroAnswerDict = {} #仙盟宴会玩家答题数量 {playerid:答题数量,..}
-g_dogzNPCRefreshTimeDict = {} # 神兽副本NPC刷新时间{npcid:剩余刷新时间}
\ No newline at end of file
+g_dogzNPCRefreshTimeDict = {} # 神兽副本NPC刷新时间{npcid:剩余刷新时间}
+g_bourseItemTradingTimeDict = {} # 物品开始交易的时间记录 {guid:tick}
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBourseTube.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBourseTube.py
index df3e785..bc41323 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBourseTube.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBourseTube.py
@@ -323,35 +323,37 @@
# @return None
def OnGMCheckBuyBourseItemResult(curPackData, tick):
GameWorld.DebugLog("Bourse### GMCheckBuyBourseItemResult in, PlayerID %s"%curPackData.PlayerID)
+
+ playerName = __CheckBuyBourseItemResult(curPackData)
+ #//02 04 玩家确认购买交易所物品#tagMGBuyBourseItemSure
+ sendPack = ChMapToGamePyPack.tagMGBuyBourseItemSure()
+ sendPack.PlayerID = curPackData.PlayerID
+ sendPack.PlayerName = playerName #发空代表购买失败
+ sendPack.ItemGUID = curPackData.ItemGUID
+ NetPackCommon.SendPyPackToGameServer(sendPack)
+ GameWorld.DebugLog("Bourse### GMCheckBuyBourseItemResult out, PriceCount %s"%curPackData.PriceCount)
+ return
+
+def __CheckBuyBourseItemResult(curPackData):
curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(curPackData.PlayerID)
if not curPlayer:
GameWorld.DebugLog("Bourse### GMCheckBuyBourseItemResult , PlayerID %s no found "%curPackData.PlayerID)
- return
+ return ''
if curPackData.PriceCount != 0:
if not PlayerControl.HaveMoney(curPlayer, curPackData.PriceType, curPackData.PriceCount):
GameWorld.DebugLog("Bourse### GMCheckBuyBourseItemResult , ItemGUID %s no enough money %s"%(curPackData.ItemGUID, curPackData.PriceCount))
- return
+ return ''
if curPackData.PriceType == IPY_GameWorld.TYPE_Price_Gold_Money:
if not PlayerControl.HaveMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney, curPackData.PriceCount):
curBourseMoney = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)
GameWorld.Log("Bourse### GMCheckBuyBourseItemResult , ItemGUID %s no enough bourse money! priceCount=%s,curBourseMoney=%s"
% (curPackData.ItemGUID, curPackData.PriceCount, curBourseMoney), curPlayer.GetPlayerID())
- return
+ return ''
#先付钱再给卖家收益
infoDict = {"ItemGUID":curPackData.ItemGUID}
PlayerControl.PayMoney(curPlayer, curPackData.PriceType, curPackData.PriceCount, ChConfig.Def_Cost_BourseBuy, infoDict)
-
- #//02 04 玩家确认购买交易所物品#tagMGBuyBourseItemSure
- sendPack = ChMapToGamePyPack.tagMGBuyBourseItemSure()
- sendPack.PlayerID = curPackData.PlayerID
- sendPack.PlayerName = curPlayer.GetPlayerName()
- sendPack.ItemGUID = curPackData.ItemGUID
- NetPackCommon.SendPyPackToGameServer(sendPack)
-
- GameWorld.DebugLog("Bourse### GMCheckBuyBourseItemResult out, PriceCount %s"%curPackData.PriceCount)
- return
-
-
+ return curPlayer.GetPlayerName()
+ return ''
--
Gitblit v1.8.0