From adbac922fdce017605381c4040d4bedbc24dcd1a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 31 十二月 2025 19:50:37 +0800
Subject: [PATCH] 358 【内政】红颜系统-服务端(红颜效果支持多个相同效果叠加;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py | 26 +++++++++++++++++++-------
1 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py
index f915c20..5b8add7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py
@@ -45,6 +45,7 @@
import PyGameData
import GameWorld
import DBDataMgr
+import time
##################################################################
####### python逻辑入口 #######
@@ -238,7 +239,8 @@
@param offlineSupport: 离线玩家是否支持该命令,默认支持,当玩家离线时,会在上线后执行该命令
@return: GMCommon.Def_xxx, curPlayer
非 Def_Success 的错误类型 - 代表错误,可直接返回给后台
- Def_Success, curPlayer - curPlayer为空时代表玩家离线状态
+ Def_Success, curPlayer - curPlayer为空时代表玩家离线状态,注:离线状态且需要支持离线处理的才返回 (Def_Success, None)
+ GMCommon.Def_PlayerOfLine, dbPlayer - 不需要支持离线处理时,返回离线跟 dbPlayer
'''
queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
@@ -249,24 +251,24 @@
# 玩家姓名
if queryType == GMCommon.Def_GMKey_PlayerName:
- rec = PyGameData.g_usrCtrlDB.findDBPlayerByName(playerFind)
+ dbPlayer = PyGameData.g_usrCtrlDB.findDBPlayerByName(playerFind, True)
elif queryType == GMCommon.Def_GMKey_PlayerAccID:
- rec = PyGameData.g_usrCtrlDB.findDBPlayerByAccID(playerFind)
+ dbPlayer = PyGameData.g_usrCtrlDB.findDBPlayerByAccID(playerFind, True)
else:
return GMCommon.Def_ParamErr, None
- if not rec:
+ if not dbPlayer:
# db找不到就是不存在该玩家
return GMCommon.Def_NoTag, None
- playerID = rec.get(u'PlayerID', 0)
+ playerID = dbPlayer.PlayerID
curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
if not curPlayer or curPlayer.IsEmpty():
# 离线处理
if offlineSupport:
PlayerOfflineSupport.AddOfflineUnprocessed(playerID, "GMToolCMD", gmCmdDict)
return GMCommon.Def_Success, None
- return GMCommon.Def_PlayerOfLine, None
+ return GMCommon.Def_PlayerOfLine, dbPlayer
return GMCommon.Def_Success, curPlayer
@@ -319,6 +321,13 @@
execType = GMCommon.Def_Unknow
execInfo = ''
if callFunc != None:
+ if GameWorld.IsBattleServer():
+ lastTime = PyGameData.g_batServerGMTTimeDict.get(self.funcName, 0)
+ curTime = int(time.time())
+ if lastTime and curTime - lastTime <= 60:
+ GameWorld.Log("战斗服务器1分钟内不重复处理GMT命令! %s, lastTime=%s" % (self.funcName, GameWorld.ChangeTimeNumToStr(lastTime)))
+ return
+ PyGameData.g_batServerGMTTimeDict[self.funcName] = curTime
ret = callFunc(self.gmCmdDict)
if isinstance(ret, int):
execType = ret
@@ -438,7 +447,10 @@
resultMsg = json.dumps(resultDcit, ensure_ascii=False)
mylog.info("gm result:%s"%resultMsg)
- SendToGMToolCommandResult(orderId, resultMsg)
+ if GameWorld.IsBattleServer():
+ mylog.info("战斗服务器暂时不回复GM命令处理结果")
+ else:
+ SendToGMToolCommandResult(orderId, resultMsg)
return
--
Gitblit v1.8.0