xdh
2018-11-15 c19d3b869bfb294223a38880e15935fc0d73bc9e
2378 【1.3】【1.2】集市购买偶发出现扣仙玉没有给物品bug
3个文件已修改
51 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBourseTube.py 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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:
ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
@@ -77,4 +77,5 @@
g_familyPartyTopInfo = [] #仙盟宴会答题王 [playerID,名字]
g_partyheroAnswerDict = {} #仙盟宴会玩家答题数量 {playerid:答题数量,..}
g_dogzNPCRefreshTimeDict = {} # 神兽副本NPC刷新时间{npcid:剩余刷新时间}
g_dogzNPCRefreshTimeDict = {} # 神兽副本NPC刷新时间{npcid:剩余刷新时间}
g_bourseItemTradingTimeDict = {} # 物品开始交易的时间记录 {guid:tick}
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 ''