| | |
| | | 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
|
| | |
|
| | | # 从数据库载入好友数据
|