From 1ea73e1885835466265ce788d93556b7030ee0e8 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期日, 30 十二月 2018 18:42:00 +0800 Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(GM工具增加子服服务器维护,文字翻译版) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py | 19 +++++++++++++++++-- 1 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py index e1ac5fc..515da95 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py @@ -31,11 +31,12 @@ 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 = {} #储存对应查询类型的排序列表的字典 @@ -215,6 +216,7 @@ 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 @@ -436,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() @@ -468,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) @@ -477,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: -- Gitblit v1.8.0