|  |  | 
 |  |  | import PyGameDataStruct
 | 
 |  |  | import PyDataManager
 | 
 |  |  | import ChPyNetSendPack
 | 
 |  |  | import PyGameData
 | 
 |  |  | 
 | 
 |  |  | import time
 | 
 |  |  | import json
 | 
 |  |  | 
 | 
 |  |  | Def_Sort_IndexList_Interval = IpyGameDataPY.GetFuncCfg('BourseUpdataCD')  #五分钟更新一次子索引列表
 | 
 |  |  | 
 | 
 |  |  | g_lastSortTimeForQueryTypeDict = {}     #记录对应查询类型上次更新子索引列表时间
 | 
 |  |  | g_dict_Of_QueryTypeIndexList = {}       #储存对应查询类型的排序列表的字典
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |     lastSortTick = g_lastSortTimeForQueryTypeDict.get(queryType, 0)
 | 
 |  |  |     
 | 
 |  |  |     queryTypeList = g_dict_Of_QueryTypeIndexList.get(queryType, None)
 | 
 |  |  |     Def_Sort_IndexList_Interval = IpyGameDataPY.GetFuncCfg('BourseUpdataCD')  #五分钟更新一次子索引列表
 | 
 |  |  |     if queryTypeList == None or tick - lastSortTick > Def_Sort_IndexList_Interval:
 | 
 |  |  |         SortIndexList(queryType)#重新排序指定类型
 | 
 |  |  |         lastSortTick = tick
 | 
 |  |  | 
 |  |  |     #指定使用职业
 | 
 |  |  |     JobList = curDefineDict.get("Job", [])
 | 
 |  |  |     if JobList:
 | 
 |  |  |         JobLimit = curBourseItemData.GetJobLimit()/100
 | 
 |  |  |         JobLimit = curBourseItemData.GetJobLimit()
 | 
 |  |  |         if JobLimit not in JobList:
 | 
 |  |  |             return False
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |             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()
 | 
 |  |  | 
 |  |  |     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)
 | 
 |  |  | 
 |  |  |     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:
 | 
 |  |  | 
 |  |  |                 cnt += 1
 | 
 |  |  |                 savaData += record.getBuffer()
 | 
 |  |  |                 
 | 
 |  |  |         GameWorld.Log("SaveBourseRecord cnt :%s" % cnt)
 | 
 |  |  |         GameWorld.Log("SaveBourseRecord cnt :%s len=%s" % (cnt, len(savaData)))
 | 
 |  |  |         return CommFunc.WriteDWORD(cntData, cnt) + savaData
 | 
 |  |  |     
 | 
 |  |  |     # 从数据库载入好友数据
 | 
 |  |  | 
 |  |  |             cnt += 1
 | 
 |  |  |             savaData += itemLastPrice.getBuffer()
 | 
 |  |  |                 
 | 
 |  |  |         GameWorld.Log("SaveBourseItemLastPrice cnt :%s" % cnt)
 | 
 |  |  |         GameWorld.Log("SaveBourseItemLastPrice cnt :%s len=%s" % (cnt, len(savaData)))
 | 
 |  |  |         return CommFunc.WriteDWORD(cntData, cnt) + savaData
 | 
 |  |  |     
 | 
 |  |  |     # 从数据库载入好友数据
 |