From bb652eeae4e39ee66f342975a2804ae305f0f969 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 11 十二月 2020 10:26:41 +0800
Subject: [PATCH] 4869 【主干】【长尾】【BT】七日巡礼重置逻辑优化;运营活动所处天索引逻辑优化;
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py | 21 ++++++++++++++++++---
1 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBourse.py
index e1ac5fc..162afff 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
@@ -268,7 +270,7 @@
#指定使用职业
JobList = curDefineDict.get("Job", [])
if JobList:
- JobLimit = curBourseItemData.GetJobLimit()/100
+ JobLimit = curBourseItemData.GetJobLimit()
if JobLimit not in JobList:
return False
@@ -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