From e4a73fcd808bcf5e22099b73f2bc98e8b6ee84c6 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 06 三月 2026 14:56:17 +0800
Subject: [PATCH] 16 卡牌服务端(后台禁言、封号支持;)

---
 /dev/null                                                                                                                        |   65 -----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py                                         |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py                                           |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_KickPlayer.py      |   92 ++------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_ForbidTalk.py      |  178 +++++++---------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py                                      |   31 +-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_GetPlayerForbid.py |  109 ++-------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_ForbidLogin.py     |  168 +++++++--------
 8 files changed, 219 insertions(+), 426 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 3c5320a..9140eb1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -1376,6 +1376,7 @@
     if (curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidByPy)) <= 0:
         return True
     
+    GameWorld.Log("玩家被封号禁止登录" , curPlayer.GetPlayerID())
     curPlayer.Kick(IPY_GameWorld.disGMKick)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GMTExec/Test.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GMTExec/Test.py
deleted file mode 100644
index 4c641b0..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GMTExec/Test.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Script.Player.RemoteQuery.GMTExec.Test
-#
-# @todo:测试命令文件运行
-# @author hxp
-# @date 2021-05-19
-# @version 1.0
-#
-# 详细描述: 测试命令文件运行
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-05-19 11:00"""
-#-------------------------------------------------------------------------------
-
-
-def runMyTest(exec_locals):
-    ''' 运行命令函数
-    @param exec_locals: GY_Query_GMTExecfile 模块中的 DoLogic 函数 locals()
-    
-    import 其他模块需要写在此函数里,不然无法引用到
-    '''
-    import GameWorld
-    
-    orderId = exec_locals["orderId"]
-    cmdInfo = exec_locals["cmdInfo"]
-    curPlayer = exec_locals["curPlayer"]
-    resultDict = exec_locals["resultDict"] # 建议都进行更新结果字典记录详细处理信息,GY_Query_GMTExecfile 模块会统一写入流向
-    
-    # 以下为详细处理逻辑
-    
-    GameWorld.Log("This is MameServer GMT_Execfile run %s. orderId=%s" % (cmdInfo, orderId), curPlayer.GetPlayerID())
-    resultDict.update({"LV":curPlayer.GetLV(), "PlayerID":curPlayer.GetPlayerID()})
-    return
-
-exec_locals = locals()
-if exec_locals.get("cmdInfo"):
-    runMyTest(exec_locals)
-    
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index f473343..0b9de40 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -958,7 +958,7 @@
 
 
 def OnPlayerLogin(curPlayer):
-    DoGMForbidenTalkOnLogin(curPlayer)
+    #DoGMForbidenTalkOnLogin(curPlayer)
     curPlayer.SetDict(ChConfig.Def_PDict_DayOnlineCalcTime, int(time.time()))
     return
 
@@ -4094,20 +4094,21 @@
     GameWorld.DebugLog("SetPlayerAccState %s" % (accState), curPlayer.GetPlayerID())
     return
 
-def DoGMForbidenTalkOnLogin(curPlayer):
-    ## 离线时被禁言,此时DB的账号状态值为禁言状态,但是GMOper暂时没有禁言操作命令,故上线时检查设置下离线禁言状态
-    ## 目前离线时被禁言的,暂时只处理AccState ExAttr17, GMOper命令暂不处理,所以为永久禁言
-    
-    if curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalkDevice):
-        GameWorld.Log("上线时角色为被设备禁言状态!", curPlayer.GetPlayerID())
-        __SetGMForbidenTalkValue(curPlayer, 2)
-        __SetGMForbidenTalkValue(curPlayer, 1)
-    elif curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalk):
-        GameWorld.Log("上线时角色为被禁言状态!", curPlayer.GetPlayerID())
-        __SetGMForbidenTalkValue(curPlayer, 1)
-    else:
-        SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ForbidenTalk, 0)
-    return
+#GM命令支持离线玩家上线后处理,且 PlayerGMOper 也有上线触发逻辑处理,故暂屏蔽
+#def DoGMForbidenTalkOnLogin(curPlayer):
+#    ## 离线时被禁言,此时DB的账号状态值为禁言状态,但是GMOper暂时没有禁言操作命令,故上线时检查设置下离线禁言状态
+#    ## 目前离线时被禁言的,暂时只处理AccState ExAttr17, GMOper命令暂不处理,所以为永久禁言
+#    
+#    if curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalkDevice):
+#        GameWorld.Log("上线时角色为被设备禁言状态!", curPlayer.GetPlayerID())
+#        __SetGMForbidenTalkValue(curPlayer, 2)
+#        __SetGMForbidenTalkValue(curPlayer, 1)
+#    elif curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalk):
+#        GameWorld.Log("上线时角色为被禁言状态!", curPlayer.GetPlayerID())
+#        __SetGMForbidenTalkValue(curPlayer, 1)
+#    else:
+#        SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ForbidenTalk, 0)
+#    return
 
 def IsMainLevelPass(curPlayer, lvID):
     ## 判断玩家是否过关某个主线关卡ID
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
index e48de7e..9f13b06 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
@@ -106,6 +106,7 @@
     if checkGMForbidenTalk and GetGMToolForbidTalk(curPlayer):
         #GeRen_chenxin_921745 对不起,您已被GM禁言,发送信息失败
         #PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_921745")
+        GameWorld.DebugLog("已被禁言!", curPlayer.GetPlayerID())
         return False
     
     #间隔时间
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_ForbidTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_ForbidTalk.py
deleted file mode 100644
index b76c4f3..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_ForbidTalk.py
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_ForbidTalk
-# @todo: 禁言
-#
-# @author: panwei
-# @date 2011-05-23
-# @version 1.1
-#
-# @note: 
-# @change: "2014-01-07 15:30" hxp 系统mark修改
-#---------------------------------------------------------------------
-"""Version = 2014-01-07 15:30"""
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import PlayerControl
-import GameWorld
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [GM账户 , 持续时间]
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        return ''
-    
-    curFindPlayer_GMOper = curFindPlayer.GetGMOperManager()
-    gmOper = curFindPlayer_GMOper.AddGMOper(IPY_GameWorld.gmForbidTalk)
-    lastTime = int(packCMDList[1])
-    gmOper.SetGMAccID(packCMDList[0])
-    gmOper.SetLastTime(lastTime)
-    
-    curFindPlayer_GMOper.Sync_SaveToDB()
-    
-    PlayerControl.SetGMForbidenTalk(curFindPlayer, 1)
-    #PlayerControl.NotifyCode(curFindPlayer, "GeRen_chenxin_80731", [lastTime])
-    return
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
-    if funResult == '':
-        #GeRen_chenxin_112395 对不起,目标玩家不在线,GM指令操作失败
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_112395")
-        return
-    
-    #GeRen_chenxin_673416 GM指令已生效,操作成功
-    PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_673416")
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_ForbidTalkByIP.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_ForbidTalkByIP.py
deleted file mode 100644
index 9e2b892..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_ForbidTalkByIP.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package GY_Query_ForbidTalkByIP
-# 对IP禁言
-#
-# @author mark
-# @date 2010-3-31
-# @version 1.1
-#
-# 修改时间 修改人 修改内容
-# @change: "2014-01-07 15:30" hxp 系统mark修改
-#
-# VER = "2014-01-07 15:30" zhengyang 添加注释
-#
-# 模块详细说明
-#脚本说明
-#packCMDList [GM账户]
-#---------------------------------------------------------------------
-#导入
-import IPY_GameWorld
-import PlayerControl
-import GameWorld
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [GM帐号 , 持续时间 , 封存原因]
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        return ''
-    
-    #直接禁
-    PlayerControl.SetGMForbidenTalk(curFindPlayer, 1)
-    #PlayerControl.NotifyCode(curFindPlayer , "ForbidIP_Talk" )
-    return
-#---------------------------------------------------------------------
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
-    if funResult == '':
-        #GeRen_chenxin_112395 对不起,目标玩家不在线,GM指令操作失败
-        PlayerControl.NotifyCode(curPlayer,"GeRen_chenxin_112395")
-        return
-    
-    #GeRen_chenxin_673416 GM指令已生效,操作成功
-    PlayerControl.NotifyCode(curPlayer,"GeRen_chenxin_673416")
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMCloseFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMCloseFB.py
deleted file mode 100644
index bd677a4..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMCloseFB.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_GMCloseFB.py
-# @todo: 关闭副本
-#
-# @author: wdb
-# @date 2013-07-08
-# @version 1.1
-#
-# @note:
-# @change: "2013-11-11 13:30" hxp 删除mark
-#---------------------------------------------------------------------
-"""Version = 2013-11-11 13:30"""
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import GameWorld
-import GameWorldProcess
-import PlayerControl
-#---------------------------------------------------------------------
-
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDTuple 发包命令
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-def DoLogic(query_Type, query_ID, packCMDTuple, tick):
-                    
-    for index in range(GameWorld.GetGameWorld().GetGameWorldCount()):
-
-        #设置当前的世界
-        GameWorld.GetGameWorld().SetCurGameWorldIndex(index)
-        
-        if GameWorld.GetGameWorld().GetOpenState() != IPY_GameWorld.fbosOpen:
-            continue
-            
-        GameWorldProcess.CloseFB(tick)
-        
-    #设置当前的世界
-    GameWorld.GetGameWorld().SetCurGameWorldIndex(-1)   
-
-    #PlayerControl.WorldNotify(0, "GeRen_chenxin_772321")    
-    return
-
-               
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-def DoResult(curPlayer, callFunName, funResult, tick):
-    return
-    
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMOpenFBEx.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMOpenFBEx.py
deleted file mode 100644
index 26ee2dc..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMOpenFBEx.py
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_GMOpenFBEx.py
-# @todo: 开启副本
-#
-# @author: wdb
-# @date 2013-07-08
-# @version 1.0
-#
-# @note: 
-#---------------------------------------------------------------------
-"""Version = 2013-07-08 14:00"""
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import GameWorld
-#---------------------------------------------------------------------
-
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDTuple 发包命令
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-def DoLogic(query_Type, query_ID, packCMDTuple, tick):
-                    
-    for index in range(GameWorld.GetGameWorld().GetGameWorldCount()):
-
-        #设置当前的世界
-        GameWorld.GetGameWorld().SetCurGameWorldIndex(index)
-        
-        if GameWorld.GetGameWorld().GetOpenState() != IPY_GameWorld.fbosClosed \
-        or GameWorld.GetGameWorld().GetFBFirstOpen():
-            continue
-            
-        GameWorld.GetGameWorld().SetFBFirstOpen(1)
-        
-    #设置当前的世界
-    GameWorld.GetGameWorld().SetCurGameWorldIndex(-1)
-
-    return
-
-               
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-def DoResult(curPlayer, callFunName, funResult, tick):
-    return
-    
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTExecfile.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTExecfile.py
deleted file mode 100644
index b125a42..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTExecfile.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_GMTExecfile
-#
-# @todo:执行命令文件
-# @author hxp
-# @date 2021-05-19
-# @version 1.0
-#
-# 详细描述: 执行命令文件
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-05-19 11:00"""
-#-------------------------------------------------------------------------------
-
-import DataRecordPack
-import GameWorld
-import GMCommon
-
-import traceback
-import os
-
-
-#逻辑实现 
-## 请求逻辑  
-#  @param query_Type 请求类型
-#  @param query_ID 玩家ID
-#  @param packCMDList 发包命令 
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    
-    if not curPlayer or curPlayer.IsEmpty():
-        return
-    
-    pack_type = "GMT_Execfile"
-    result = GMCommon.Def_Success
-    
-    orderId, cmdInfo = packCMDList
-    
-    backDir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
-    
-    execfilepath = os.path.join(backDir, "GMTExec\\%s.py" % cmdInfo)
-    
-    GameWorld.Log("GMT_Execfile: %s" % execfilepath)
-    
-    if not os.path.exists(execfilepath):
-        GMCommon.SendGMTResult(orderId, pack_type, GMCommon.Def_ParamErr, "%s is not exists!" % cmdInfo)
-        return
-    
-    mapID = GameWorld.GetMap().GetMapID()
-    resultDict = {"cmdInfo":cmdInfo, "mapID":mapID}
-    
-    try:
-        execfile(execfilepath, globals(), locals())
-    except:
-        errMsg = traceback.format_exc()
-        GameWorld.ErrLog(errMsg)
-        
-        resultDict["errMsg"] = errMsg
-        GMCommon.SendGMTResult(orderId, pack_type, GMCommon.Def_Unknow, resultDict)
-        return
-    
-    DataRecordPack.DR_ToolGMOperate(query_ID, curPlayer.GetPlayerName(), curPlayer.GetAccID(), pack_type, resultDict)
-    GMCommon.SendGMTResult(orderId, pack_type, GMCommon.Def_Success, resultDict)
-    return
-
-
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
-    return
-
-
-
-
-
-
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTForbidTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTForbidTalk.py
deleted file mode 100644
index 50a59e8..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTForbidTalk.py
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_GMTForbidTalk.py
-# @todo: gm工具封号
-#
-# @author: wdb
-# @date 2012-06-14
-# @version 1.2
-#
-# @note: 
-# @change: "2012-08-10 15:00" zhangxi 修改OSS记录
-# @change: "2014-09-05 16:30" hxp 增加可设置禁言时长
-#---------------------------------------------------------------------
-"""Version = 2014-09-05 16:30"""
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import ChConfig
-import GameWorld
-import DataRecordPack
-import PlayerControl
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [GM帐号 , 持续时间 , 封存原因]
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    GameWorld.DebugLog("GY_Query_GMTForbidTalk packCMDList=%s" % str(packCMDList))
-    
-    # 在线时可设定禁言时长;离线则在UserDBResponse执行状态禁言
-    # 故解禁时需两种情况都解除
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        return ''
-    
-    curFindPlayer_GMOper = curFindPlayer.GetGMOperManager()
-    gmOper = curFindPlayer_GMOper.AddGMOper(IPY_GameWorld.gmForbidTalk)
-    lastTime = int(packCMDList[0])
-    forbidDevice = packCMDList[1] if len(packCMDList) > 1 else ""
-    gmOper.SetGMAccID(curFindPlayer.GetAccID())
-    gmOper.SetLastTime(lastTime)
-    
-    GameWorld.DebugLog("    forbidDevice=%s,解禁时间=%s" % (forbidDevice, str(gmOper.GetEndTime())))
-    
-    curFindPlayer_GMOper.Sync_SaveToDB()
-    
-    if forbidDevice:
-        PlayerControl.SetGMForbidenTalk(curFindPlayer, 2)
-    PlayerControl.SetGMForbidenTalk(curFindPlayer, 1)
-    #PlayerControl.NotifyCode(curFindPlayer, "GeRen_chenxin_80731", [lastTime])
-    
-    curFindName = curFindPlayer.GetPlayerName()
-    #流向
-    DataRecordPack.DR_ToolGMOperate(query_ID, curFindName, curFindPlayer.GetAccID(), 'GMT_FobidTalk')
-    return
-
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTUnForbidTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTUnForbidTalk.py
deleted file mode 100644
index c5b7d7e..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMTUnForbidTalk.py
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_GMTUnForbidTalk.py
-# @todo: gm工具解禁言
-#
-# @author: wdb
-# @date 2012-06-14
-# @version 1.2
-#
-# @note: 
-# @change: "2012-08-10 15:00" zhangxi 修改OSS记录
-# @change: "2014-09-05 16:30" hxp 解禁逻辑修改,同时解禁状态及GMTool操作
-#---------------------------------------------------------------------
-"""Version = 2014-09-05 16:30"""
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import ChConfig
-import GameWorld
-import DataRecordPack
-import PlayerControl
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [GM帐号 , 持续时间 , 封存原因]
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    GameWorld.DebugLog("GY_Query_GMTUnForbidTalk query_ID=%s, packCMDList=%s" % (query_ID, packCMDList))
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        return ''
-    unForbidDevice = packCMDList[0] if len(packCMDList) > 0 else ""
-    curFindName = curFindPlayer.GetPlayerName()
-    #流向
-    DataRecordPack.DR_ToolGMOperate(query_ID, curFindName, curFindPlayer.GetAccID(), 'GMTUnForbidTalk')
-    
-    curFindPlayer_GMOper = curFindPlayer.GetGMOperManager()
-    
-    for index in range(curFindPlayer_GMOper.GetCount()):
-        curOper = curFindPlayer_GMOper.GetAt(index)
-        if curOper.GetOper() == IPY_GameWorld.gmForbidTalk:
-            curFindPlayer_GMOper.DeleteOper(IPY_GameWorld.gmForbidTalk)
-            curFindPlayer_GMOper.Sync_SaveToDB()
-            break
-    
-    if unForbidDevice:
-        PlayerControl.SetGMForbidenTalk(curFindPlayer, 3)
-    PlayerControl.SetGMForbidenTalk(curFindPlayer, 0)
-    #PlayerControl.NotifyCode(curFindPlayer, "GeRen_liubo_97211")
-    return ''
-
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMToolForbidLogin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMToolForbidLogin.py
deleted file mode 100644
index d3f432c..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMToolForbidLogin.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_GMToolForbidLogin
-# @todo: gm工具封号
-#
-# @author: wdb
-# @date 2012-06-04 15:30
-# @version 1.2
-#
-# @note: 
-# @change: "2012-06-06 12:00" wdb gm工具调整
-# @change: "2012-08-10 15:00" zhangxi 修改OSS记录
-#---------------------------------------------------------------------
-"""Version = 2012-08-10 15:00"""
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import ChConfig
-import GameWorld
-import DataRecordPack
-import PlayerControl
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [GM帐号 , 持续时间 , 封存原因]
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        return ''
-    
-    PlayerControl.SetPlayerAccState(curFindPlayer, curFindPlayer.GetAccState()|pow(2, ChConfig.Def_PysForbidByPy))
-    curFindName = curFindPlayer.GetPlayerName()
-
-    DataRecordPack.DR_ToolGMOperate(query_ID, curFindName, curFindPlayer.GetAccID(), 'GMT_FobidLogin')
-    
-    curFindPlayer.Kick(IPY_GameWorld.disGMKick)
-    return
-
-    
-    
-    
-    
-    
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_UnForbidTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_UnForbidTalk.py
deleted file mode 100644
index 22298a9..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_UnForbidTalk.py
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_UnForbidTalk
-# @todo: 解除禁言
-#
-# @author: panwei
-# @date 2011-05-23
-# @version 1.1
-#
-# @note: 
-# @change: "2014-01-07 15:30" hxp 系统mark修改
-#---------------------------------------------------------------------
-"""Version = 2014-01-07 15:30"""
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import PlayerControl
-import GameWorld
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [账号 ]
-#  @param tick 当前时间
-#  @return '' or none
-#  @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        return ''
-    
-    curFindPlayer_GMOper = curFindPlayer.GetGMOperManager()
-    result = False
-    
-    for index in range(curFindPlayer_GMOper.GetCount()):
-        curOper = curFindPlayer_GMOper.GetAt(index)
-        if curOper.GetOper() == IPY_GameWorld.gmForbidTalk:
-            curFindPlayer_GMOper.DeleteOper(IPY_GameWorld.gmForbidTalk)
-            curFindPlayer_GMOper.Sync_SaveToDB()
-            result = True
-            break
-    
-    if result:
-        PlayerControl.SetGMForbidenTalk(curFindPlayer, 0)
-        #PlayerControl.NotifyCode(curFindPlayer, "Player_Operate_RegainTalk")
-    
-    return
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
-    if funResult == '':
-        #GeRen_chenxin_112395 对不起,目标玩家不在线,GM指令操作失败
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_112395")
-        return
-    
-    #GeRen_chenxin_673416 GM指令已生效,操作成功
-    PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_673416")
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_UnForbidTalkByIP.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_UnForbidTalkByIP.py
deleted file mode 100644
index 6e4b10a..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_UnForbidTalkByIP.py
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package GY_Query_Offline_UnBind
-# 解封玩家
-#
-# @author mark
-# @date 2010-3-31
-# @version 1.1
-#
-# 修改时间 修改人 修改内容
-# @change: "2014-01-07 15:30" hxp 系统mark修改
-#
-# VER = "2014-01-07 15:30" zhengyang 添加注释
-#
-# 模块详细说明
-#---------------------------------------------------------------------
-#导入
-import IPY_GameWorld
-import PlayerControl
-import GameWorld
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [ ]
-#  @param tick 当前时间
-#  @return '' or None
-#  @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        return ''
-    
-    #直接禁
-    PlayerControl.SetGMForbidenTalk(curFindPlayer, 0)
-    #PlayerControl.NotifyCode(curFindPlayer , "RestoreIP_Talk" )
-    return
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
-    if funResult == '':
-        #GeRen_chenxin_112395 对不起,目标玩家不在线,GM指令操作失败
-        PlayerControl.NotifyCode(curPlayer,"GeRen_chenxin_112395")
-        return
-    
-    #GeRen_chenxin_673416 GM指令已生效,操作成功
-    PlayerControl.NotifyCode(curPlayer,"GeRen_chenxin_673416")
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_ForbidLogin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_ForbidLogin.py
index abb68bd..e13cb70 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_ForbidLogin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_ForbidLogin.py
@@ -1,110 +1,96 @@
 #!/usr/bin/python
 # -*- coding: GBK -*-
-#---------------------------------------------------------------------
+#-------------------------------------------------------------------------------
 #
-#---------------------------------------------------------------------
-##@package GMT_UnForbidLogin.py
-# GM命令解锁玩家账号
+##@package PyMongoDB.GMToolLogicProcess.Commands.GMT_ForbidLogin
 #
-# @author wdb
-# @date 2012-6-14
-# @version 1.2
+# @todo:GM工具命令 - 封号/解封
+# @author hxp
+# @date 2026-03-06
+# @version 1.0
 #
-# @note
-# @change: "2012-06-21 15:30" wdb int修改到GMCommon开接口
-# @change: "2012-07-12 18:00" wdb 增加编码属性
-#---------------------------------------------------------------------
-"""Version = 2012-07-12 18:00"""
-#---------------------------------------------------------------------
-#导入
-from MangoDBCommon import fix_incomingText
-from Collections.CollectionDefine import *
-from Common import (CommFuncEx, mylog)
-from Collections import DataServerPlayerData
+# 详细描述: GM工具命令 - 封号/解封
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2026-03-06 15:00"""
+#-------------------------------------------------------------------------------
+
 import GMCommon
-#---------------------------------------------------------------------
-#全局变量
+from Player import (PlayerControl)
+from Collections.CollectionDefine import *
+import IPY_GameWorld
+import DataRecordPack
+import PyGameData
+import ChConfig
 
-#---------------------------------------------------------------------
-
-## 收到gm命令执行
-# @param gmCmdDict:gm命令字典
-# @return None 
 def OnExec(gmCmdDict):
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')
+    queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
+    #playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
+    if queryType == "IP":
+        return __doForbidLoginByIP(gmCmdDict)
     
-    if playerAccID != '':
-        return GMCommon.Def_DoQueryLogDB, ''
-  
-    elif playerName != '':        
-        return GMCommon.Def_DoQueryUserDB, '%s'%GMCommon.Def_GMKey_PlayerName
-    # 回复
-    return GMCommon.Def_ParamErr, ''
+    forbidType = gmCmdDict.get("forbidType", '')
     
+    errorMsg = ""    
+    from GMToolLogicProcess import ProjSpecialProcess
+    Result, curPlayer = ProjSpecialProcess.GMCmdPlayerValidation(gmCmdDict, False) # 不支持离线处理
+    if Result == GMCommon.Def_PlayerOfLine:
+        dbPlayer = curPlayer
+        return __doForbidLoginByDBPlayer(dbPlayer, forbidType)
     
-## 查询logdb返回
-# @param logdb:logdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def LogDBResponse(logdb, data, gmCmdDict):
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-
-    if playerAccID != '' and GMCommon.GetPlayerOnLineByAccID(logdb, playerAccID):
-        return GMCommon.Def_SendToGameServer, ''
-  
-    # 转换字符串
-    if data != '' and GMCommon.GetPlayerOnLineByAccID(logdb, data):        
-        return GMCommon.Def_SendToGameServer, ''
+    if Result != GMCommon.Def_Success:
+        return Result, errorMsg
     
-    return GMCommon.Def_DoQueryUserDB, ''
-
-
-## 查询userdb返回
-# @param userdb:userdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def UserDBResponse(userdb, data, gmCmdDict):
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')
-    #  取得玩家accid
-    if  playerName != '':
-        playerAccID = GMCommon.GetPlayerAccID(userdb, {'PlayerName':fix_incomingText(playerName), 'IsDeleted':0})
+    if forbidType == "1":
+        # 玩家在线,可处理
+        playerID = curPlayer.GetPlayerID()
+        Result = GMCommon.Def_Unknow
+        #GMT_Name = gmCmdDict.get(GMCommon.Def_GMKey_Type, '') 
         
-        if playerAccID == '':
-            return GMCommon.Def_NoTag, ''
+        PlayerControl.SetPlayerAccState(curPlayer, curPlayer.GetAccState() | pow(2, ChConfig.Def_PysForbidByPy))
+        DataRecordPack.DR_ToolGMOperate(playerID, curPlayer.GetPlayerName(), curPlayer.GetAccID(), "GMTFobidLogin")
+        curPlayer.Kick(IPY_GameWorld.disGMKick)
+        
+    else:
+        return GMCommon.Def_NoNeed, "玩家正常在线"
     
-    # 返回playerid,判断是否在线
-    if data == '%s'%GMCommon.Def_GMKey_PlayerName:        
-        return GMCommon.Def_DoQueryLogDB, playerAccID
+    return GMCommon.Def_Success
+
+def __doForbidLoginByDBPlayer(dbPlayer, forbidType):
+    ## 离线根据dbPlayer处理
     
-    collection = userdb[UCN_DBPlayer]
-    dbPlayer = DataServerPlayerData.tagDBPlayer()
-    dbPlayer.IsDeleted = 0
+    col = PyGameData.g_usrCtrlDB.db[UCN_DBPlayer]
     
-    loadOK = dbPlayer.adoLoadCEx(collection, {'AccID':fix_incomingText(playerAccID),
-                                                  'IsDeleted':dbPlayer.IsDeleted}) 
-    if not loadOK:
-        # 回复gm
-        return GMCommon.Def_NoTag, ''
+    playerID = dbPlayer.PlayerID
+    playerName = dbPlayer.PlayerName
+    accID = dbPlayer.AccID
     
-    # 已是锁定状态
-    if (dbPlayer.AccState & pow(2, GMCommon.Def_PysForbidByPy)) > 0:
-        return GMCommon.Def_NoNeed, ''
-    
-    # 设置玩家账号状态
-    dbPlayer.AccState = dbPlayer.AccState|pow(2, GMCommon.Def_PysForbidByPy)
-    dbPlayer.ExAttr17 = dbPlayer.AccState
-    dbPlayer.adoUpdateC(collection)
-    
+    if forbidType == "1":
+        if (dbPlayer.AccState & pow(2, GMCommon.Def_PysForbidByPy)) > 0:
+            return GMCommon.Def_NoNeed, "已经被封号了"
+        
+        # 设置玩家账号状态
+        dbPlayer.AccState = dbPlayer.AccState | pow(2, GMCommon.Def_PysForbidByPy)
+        dbPlayer.ExAttr17 = dbPlayer.AccState
+        dbPlayer.adoUpdateC(col)
+        
+        gmToolCmd = "GMTFobidLogin"
+    else:
+        if (dbPlayer.AccState & pow(2, GMCommon.Def_PysForbidByPy)) <= 0:
+            return GMCommon.Def_NoNeed, "玩家账号正常"
+        
+        # 设置玩家账号状态
+        dbPlayer.AccState = dbPlayer.AccState ^ pow(2, GMCommon.Def_PysForbidByPy)
+        dbPlayer.ExAttr17 = dbPlayer.AccState
+        dbPlayer.adoUpdateC(col)
+        
+        gmToolCmd = "GMTFobidLogin"
+        
     # 记录流向
-    dataDic = {"PlayerID":dbPlayer.PlayerID, 'AccID':playerAccID}
-    GMCommon.SendEventPack(gmCmdDict.get(GMCommon.Def_GMKey_Type, ''), dataDic)
-    return GMCommon.Def_Success, ''
+    DataRecordPack.DR_ToolGMOperate(playerID, playerName, accID, gmToolCmd)
+    return GMCommon.Def_Success
 
-
-
-
-
+def __doForbidLoginByIP(gmCmdDict):
+    Result = GMCommon.Def_Unknow
+    # 暂不支持,后续扩展,需要处理全局管理
+    return Result, "暂不支持"
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_ForbidTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_ForbidTalk.py
index 4a16f71..8c79a0a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_ForbidTalk.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_ForbidTalk.py
@@ -1,117 +1,95 @@
 #!/usr/bin/python
 # -*- coding: GBK -*-
-#---------------------------------------------------------------------
+#-------------------------------------------------------------------------------
 #
-#---------------------------------------------------------------------
-##@package GMT_ForbidTalk.py
-# GM命令玩家禁言
+##@package PyMongoDB.GMToolLogicProcess.Commands.GMT_ForbidTalk
 #
-# @author wdb
-# @date 2012-6-14
-# @version 1.1
+# @todo:GM工具命令 - 禁言/解禁
+# @author hxp
+# @date 2026-03-06
+# @version 1.0
 #
-# @note
-# @change: "2012-07-12 18:00" wdb 增加编码属性
-#---------------------------------------------------------------------
-"""Version = 2012-07-12 18:00"""
-#---------------------------------------------------------------------
-#导入
-from MangoDBCommon import fix_incomingText
-from Collections.CollectionDefine import *
-from Common import (CommFuncEx, mylog)
-from Collections import DataServerPlayerData
+# 详细描述: GM工具命令 - 禁言/解禁
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2026-03-06 15:00"""
+#-------------------------------------------------------------------------------
+
 import GMCommon
-#---------------------------------------------------------------------
-#全局变量
+import GameWorld
+from Player import (PlayerControl)
+import IPY_GameWorld
+import DataRecordPack
 
-#---------------------------------------------------------------------
-
-## 收到gm命令执行
-# @param gmCmdDict:gm命令字典
-# @return None 
 def OnExec(gmCmdDict):
-    loginIP = gmCmdDict.get(GMCommon.Def_GMKey_IP, '')
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')
-
-    if playerAccID != '':
-        return GMCommon.Def_DoQueryLogDB, ''
     
-    elif loginIP != '':
-        return GMCommon.Def_SendToGameServer, ''
+    queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
+    #playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
+    if queryType == "IP":
+        return __doForbidTalkByIP(gmCmdDict)
     
-    elif playerName != '':        
-        return GMCommon.Def_DoQueryUserDB, '%s'%GMCommon.Def_GMKey_PlayerName
-    # 回复
-    return GMCommon.Def_ParamErr, ''
+    errorMsg = ""    
+    from GMToolLogicProcess import ProjSpecialProcess
+    Result, curPlayer = ProjSpecialProcess.GMCmdPlayerValidation(gmCmdDict)
+    if Result != GMCommon.Def_Success:
+        return Result, errorMsg
+    if not curPlayer:
+        return Result, "玩家不在线,上线后自动处理"
     
+    # 玩家在线,可处理
+    playerID = curPlayer.GetPlayerID()
+    Result = GMCommon.Def_Unknow
+    #GMT_Name = gmCmdDict.get(GMCommon.Def_GMKey_Type, '') 
     
-## 查询logdb返回
-# @param logdb:logdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def LogDBResponse(logdb, data, gmCmdDict):
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
+    forbidType = gmCmdDict.get("forbidType", '')
+    isDevice = gmCmdDict.get("isDevice", '')
+    forbitDay = GameWorld.ToIntDef(gmCmdDict.get("forbitDay", '0'))
+    forbitHour = GameWorld.ToIntDef(gmCmdDict.get("forbitHour", '0'))
+    forbitMinute = GameWorld.ToIntDef(gmCmdDict.get("forbitMinute", '0'))
     
-    # 玩家在线
-    if playerAccID != '' and GMCommon.GetPlayerOnLineByAccID(logdb, playerAccID):
-        return GMCommon.Def_SendToGameServer, ''
-    # accid查询
-    if data != '' and GMCommon.GetPlayerOnLineByAccID(logdb, data):        
-        return GMCommon.Def_SendToGameServer, ''
-    
-    return GMCommon.Def_DoQueryUserDB, ''
-
-
-## 查询userdb返回
-# @param userdb:userdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def UserDBResponse(userdb, data, gmCmdDict):
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')
-    #  取得玩家accid
-    if  playerName != '':
-        playerAccID = GMCommon.GetPlayerAccID(userdb, {'PlayerName':fix_incomingText(playerName), 'IsDeleted':0})
+    # 禁言
+    if forbidType == "1":
+        if forbitDay <= 0 and forbitHour <= 0 and forbitMinute <= 0:
+            return GMCommon.Def_ParamErr, "需设置禁言时长"
+        forbitTotalMinute = forbitDay * 24 * 60 + forbitHour * 60 + forbitMinute # 禁言时长
         
-        if playerAccID == '':
-            return GMCommon.Def_NoTag, ''
-    
-    # 返回playerid,判断是否在线
-    if data == '%s'%GMCommon.Def_GMKey_PlayerName:        
-        return GMCommon.Def_DoQueryLogDB, playerAccID
-
-    collection = userdb[UCN_DBPlayer]   
-    dbPlayer = DataServerPlayerData.tagDBPlayer()
-    dbPlayer.IsDeleted = 0
-
-    loadOK = dbPlayer.adoLoadCEx(collection, {'AccID':fix_incomingText(playerAccID),
-                                                  'IsDeleted':dbPlayer.IsDeleted})     
-    if not loadOK:
-        return GMCommon.Def_NoTag, ''
-    
-    forbidDevice = gmCmdDict.get("forbidDevice", '')
-    forbidType = GMCommon.Def_PysForbidTalkDevice if forbidDevice else GMCommon.Def_PysForbidTalk
-    # 玩家账号已禁
-    if (dbPlayer.AccState & pow(2, forbidType)) > 0:
-        return GMCommon.Def_NoNeed, ''
+        curFindPlayer_GMOper = curPlayer.GetGMOperManager()
+        gmOper = curFindPlayer_GMOper.AddGMOper(IPY_GameWorld.gmForbidTalk)
+        gmOper.SetGMAccID(curPlayer.GetAccID())
+        gmOper.SetLastTime(forbitTotalMinute)
+        curFindPlayer_GMOper.Sync_SaveToDB()
+                
+        GameWorld.Log("禁言分钟=%s,isDevice=%s,endTime=%s" % (forbitTotalMinute, isDevice, str(gmOper.GetEndTime())), playerID)
+        if isDevice:
+            PlayerControl.SetGMForbidenTalk(curPlayer, 2)
+        PlayerControl.SetGMForbidenTalk(curPlayer, 1)
+        #PlayerControl.NotifyCode(curFindPlayer, "GeRen_chenxin_80731", [lastTime])
+        DataRecordPack.DR_ToolGMOperate(playerID, curPlayer.GetPlayerName(), curPlayer.GetAccID(), "GMTFobidTalk")
         
-    # 设置玩家账号状态
-    dbPlayer.AccState = dbPlayer.AccState|pow(2, forbidType)
-    if forbidType == GMCommon.Def_PysForbidTalkDevice:
-        dbPlayer.AccState = dbPlayer.AccState|pow(2, GMCommon.Def_PysForbidTalk)
-    dbPlayer.ExAttr17 = dbPlayer.AccState
-    dbPlayer.adoUpdateC(collection)
+    # 解禁
+    else:
+        curFindPlayer_GMOper = curPlayer.GetGMOperManager()
+        for index in range(curFindPlayer_GMOper.GetCount()):
+            curOper = curFindPlayer_GMOper.GetAt(index)
+            if curOper.GetOper() == IPY_GameWorld.gmForbidTalk:
+                curFindPlayer_GMOper.DeleteOper(IPY_GameWorld.gmForbidTalk)
+                curFindPlayer_GMOper.Sync_SaveToDB()
+                break
             
-    # 记录流向
-    dataDic = {"PlayerID":dbPlayer.PlayerID, 'AccID':playerAccID}
-    GMCommon.SendEventPack(gmCmdDict.get(GMCommon.Def_GMKey_Type, ''), dataDic)
-    mylog.info("GMT_ForbidTalk: playerAccID=%s,forbidType=%s,AccState=%s" % (playerAccID, forbidType, dbPlayer.AccState))
-    return GMCommon.Def_Success, ''
+        if isDevice:
+            PlayerControl.SetGMForbidenTalk(curPlayer, 3)
+        PlayerControl.SetGMForbidenTalk(curPlayer, 0)
+        #PlayerControl.NotifyCode(curFindPlayer, "GeRen_liubo_97211")
+        #流向
+        DataRecordPack.DR_ToolGMOperate(playerID, curPlayer.GetPlayerName(), curPlayer.GetAccID(), "GMTUnForbidTalk")
+        
+    return GMCommon.Def_Success
 
-
-
-
-
+def __doForbidTalkByIP(gmCmdDict):
+    Result = GMCommon.Def_Unknow
+    # 暂不支持,后续扩展,需要处理全局管理
+    #gmOper = IPY_GameServer.gmForbidTalk
+    #ipManager = GameWorld.GetGameWorld().GetAllDBIPManage()
+    #根据IP筛选,直接禁言
+    #PlayerControl.SetGMForbidenTalk(curFindPlayer, 1)
+    return Result, "暂不支持"
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_GetPlayerForbid.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_GetPlayerForbid.py
index dbcceb1..1e2118e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_GetPlayerForbid.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_GetPlayerForbid.py
@@ -1,100 +1,39 @@
 #!/usr/bin/python
 # -*- coding: GBK -*-
-#---------------------------------------------------------------------
+#-------------------------------------------------------------------------------
 #
-#---------------------------------------------------------------------
-##@package GMT_GetPlayerForbid.py
-# GM命令获得玩家处罚
+##@package PyMongoDB.GMToolLogicProcess.Commands.GMT_GetPlayerForbid
 #
-# @author wdb
-# @date 2012-6-14
-# @version 1.2
+# @todo:GM工具命令 - 查看玩家禁言封禁状态
+# @author hxp
+# @date 2026-03-06
+# @version 1.0
 #
-# @note
-# @change: "2012-06-21 15:30" wdb int修改到GMCommon开接口
-# @change: "2012-07-12 18:00" wdb 增加编码属性
-#---------------------------------------------------------------------
-"""Version = 2012-07-12 18:00"""
-#---------------------------------------------------------------------
-#导入
-from MangoDBCommon import fix_incomingText
-from Collections.CollectionDefine import *
-from Common import (CommFuncEx, mylog)
-from Collections import DataServerPlayerData
+# 详细描述: GM工具命令 - 查看玩家禁言封禁状态
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2026-03-06 15:00"""
+#-------------------------------------------------------------------------------
+
 import GMCommon
-#---------------------------------------------------------------------
-#全局变量
 
-#---------------------------------------------------------------------
-
-## 收到gm命令执行
-# @param gmCmdDict:gm命令字典
-# @return None 
 def OnExec(gmCmdDict):
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')
-    
-    if playerAccID != '':
-        return GMCommon.Def_DoQueryLogDB, ''
-  
-    elif playerName != '':        
-        return GMCommon.Def_DoQueryUserDB, '%s'%GMCommon.Def_GMKey_PlayerName
-    # 回复
-    return GMCommon.Def_ParamErr, ''
-    
-    
-## 查询logdb返回
-# @param logdb:logdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def LogDBResponse(logdb, data, gmCmdDict):
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    
-    # 玩家在线
-    if playerAccID != '' and GMCommon.GetPlayerOnLineByAccID(logdb, playerAccID):
-        return GMCommon.Def_SendToGameServer, ''
-
-    # 转换字符串
-    if data != '' and GMCommon.GetPlayerOnLineByAccID(logdb, data):        
-        return GMCommon.Def_SendToGameServer, ''
-    
-    return GMCommon.Def_DoQueryUserDB, ''
-
-
-## 查询userdb返回
-# @param userdb:userdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def UserDBResponse(userdb, data, gmCmdDict):
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')
-    #  取得玩家accid
-    if  playerName != '':
-        playerAccID = GMCommon.GetPlayerAccID(userdb, {'PlayerName':fix_incomingText(playerName), 'IsDeleted':0})
+    errorMsg = ""    
+    from GMToolLogicProcess import ProjSpecialProcess
+    Result, curPlayer = ProjSpecialProcess.GMCmdPlayerValidation(gmCmdDict, False)
+    if Result == GMCommon.Def_PlayerOfLine:
+        dbPlayer = curPlayer
+        accState = dbPlayer.AccState
         
-        if playerAccID == '':
-            return GMCommon.Def_NoTag, ''
-    
-    # 返回playerid,判断是否在线
-    if data == '%s'%GMCommon.Def_GMKey_PlayerName:        
-        return GMCommon.Def_DoQueryLogDB, playerAccID
-
-    collection = userdb[UCN_DBPlayer]       
-    findPlayer = collection.find({'AccID':fix_incomingText(playerAccID)}) 
+    elif Result == GMCommon.Def_Success:
+        accState = curPlayer.GetAccState()
         
-    if findPlayer.count() <= 0:
-        return GMCommon.Def_NoTag, ''
+    else:
+        return Result, errorMsg
     
-    accState = findPlayer[0].get('AccState', 0)
     forbidInfo = {
                   'forbidLogin':(accState & pow(2, GMCommon.Def_PysForbidByPy)) > 0,  #是否锁定
-                  'forbidTalk': (accState & pow(2, GMCommon.Def_PysForbidTalk)) > 0 or (accState & pow(2, GMCommon.Def_PysForbidTalkDevice)) > 0,  #是否禁言
+                  'forbidTalk': (accState & pow(2, GMCommon.Def_PysForbidTalk)) > 0,  #是否禁言
+                  #'forbidTalk': (accState & pow(2, GMCommon.Def_PysForbidTalk)) > 0 or (accState & pow(2, GMCommon.Def_PysForbidTalkDevice)) > 0,  #是否禁言
                   }
     return GMCommon.Def_Success, forbidInfo
-
-
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_GetPlayerFuncInfo.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_GetPlayerFuncInfo.py
deleted file mode 100644
index 7cec836..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_GetPlayerFuncInfo.py
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GMT_GetPlayerFuncInfo
-# GM命令提供查询玩家功能信息
-#
-# @author xdh
-# @date 2017-07-13 10:00
-# @version 1.0
-#
-# @note
-#---------------------------------------------------------------------
-"""Version = 2017-07-13 10:00"""
-#---------------------------------------------------------------------
-#导入
-import GMCommon
-from MangoDBCommon import fix_incomingText
-#---------------------------------------------------------------------
-#全局变量
-
-#---------------------------------------------------------------------
-
-## 收到gm命令执行
-# @param gmCmdDict:gm命令字典
-# @return None 
-def OnExec(gmCmdDict):
-    playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
-    queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
-    queryFuncKey = gmCmdDict.get(GMCommon.Def_GMKey_FuncKey, '')
-    if queryFuncKey in ['HHZL','ManorWar','FamilysWar']:
-        return GMCommon.Def_SendToGameServer, ''
-    
-    elif playerFind == '':
-        return GMCommon.Def_ParamErr, ''
-    
-    elif queryType == 'accID':
-        return GMCommon.Def_DoQueryLogDB, ''
-   
-    return GMCommon.Def_DoQueryUserDB, '%s'%GMCommon.Def_GMKey_PlayerName
-    
-    
-## 查询logdb返回
-# @param logdb:logdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def LogDBResponse(logdb, data, gmCmdDict):
-    playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
-    queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
-    
-    if queryType == 'accID' and GMCommon.GetPlayerOnLineByAccID(logdb, playerFind):
-        return GMCommon.Def_SendToGameServer, ''
-  
-    # 转换字符串
-    if data != '' and GMCommon.GetPlayerOnLineByAccID(logdb, data):        
-        return GMCommon.Def_SendToGameServer, ''
-        
-    return GMCommon.Def_PlayerOfLine, ''
-
-
-## 查询userdb返回
-# @param userdb:userdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def UserDBResponse(userdb, data, gmCmdDict):
-    queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
-    playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
-    
-    playerAccID = ""
-    # 玩家姓名
-    if queryType == GMCommon.Def_GMKey_PlayerName:
-        playerAccID = GMCommon.GetPlayerAccID(userdb, {'PlayerName':fix_incomingText(playerFind), 'IsDeleted':0})
-    
-    elif queryType == GMCommon.Def_GMKey_PlayerAccID:
-        playerAccID = GMCommon.GetPlayerAccID(userdb, {'AccID':fix_incomingText(playerFind), 'IsDeleted':0})
-    
-    if playerAccID == '':
-        return GMCommon.Def_NoTag, ''
-
-    return GMCommon.Def_DoQueryLogDB, playerAccID
-
-
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_KickPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_KickPlayer.py
index 9b082d8..1511a64 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_KickPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_KickPlayer.py
@@ -1,80 +1,32 @@
 #!/usr/bin/python
 # -*- coding: GBK -*-
-#---------------------------------------------------------------------
+#-------------------------------------------------------------------------------
 #
-#---------------------------------------------------------------------
-##@package GMT_KickPlayer.py
-# GM命令踢玩家下线
+##@package PyMongoDB.GMToolLogicProcess.Commands.GMT_KickPlayer
 #
-# @author wdb
-# @date 2012-6-14
-# @version 1.2
+# @todo:GM工具命令 - 踢下线
+# @author hxp
+# @date 2026-03-06
+# @version 1.0
 #
-# @note
-# @change: "2012-06-21 15:30" wdb int修改到GMCommon开接口
-# @change: "2012-07-12 18:00" wdb 增加编码属性
-#---------------------------------------------------------------------
-"""Version = 2012-07-12 18:00"""
-#---------------------------------------------------------------------
-#导入
+# 详细描述: GM工具命令 - 踢下线
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2026-03-06 15:00"""
+#-------------------------------------------------------------------------------
+
 import GMCommon
-from MangoDBCommon import fix_incomingText
-#---------------------------------------------------------------------
-#全局变量
+import IPY_GameWorld
 
-#---------------------------------------------------------------------
-
-## 收到gm命令执行
-# @param gmCmdDict:gm命令字典
-# @return None 
 def OnExec(gmCmdDict):
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')
+    errorMsg = ""    
+    from GMToolLogicProcess import ProjSpecialProcess
+    Result, curPlayer = ProjSpecialProcess.GMCmdPlayerValidation(gmCmdDict, False)
+    if Result == GMCommon.Def_PlayerOfLine:
+        return GMCommon.Def_NoNeed, "已离线"
     
-    if playerAccID != '':
-        return GMCommon.Def_DoQueryLogDB, ''
-  
-    elif playerName != '':        
-        return GMCommon.Def_DoQueryUserDB, ''
-
-    # 回复gm玩家不在线
-    return GMCommon.Def_ParamErr, ''
+    elif Result == GMCommon.Def_Success:
+        curPlayer.Kick(IPY_GameWorld.disGMKick)
+        return Result
     
-    
-## 查询logdb返回
-# @param logdb:logdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def LogDBResponse(logdb, data, gmCmdDict):
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-
-    if playerAccID != '' and GMCommon.GetPlayerOnLineByAccID(logdb, playerAccID):
-        return GMCommon.Def_SendToGameServer, ''
-  
-    # 转换字符串
-    if data != '' and GMCommon.GetPlayerOnLineByAccID(logdb, data):        
-        return GMCommon.Def_SendToGameServer, ''
-        
-    return GMCommon.Def_PlayerOfLine, ''
-
-
-## 查询userdb返回
-# @param userdb:userdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def UserDBResponse(userdb, data, gmCmdDict):
-    
-    playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')    
-    playerAccID = GMCommon.GetPlayerAccID(userdb, {'PlayerName':fix_incomingText(playerName), 'IsDeleted':0})
-    
-    if playerAccID == '':
-        return GMCommon.Def_NoTag, ''
-
-    return GMCommon.Def_DoQueryLogDB, playerAccID
-
-
-
-
-
+    return Result, errorMsg
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_LockIP.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_LockIP.py
deleted file mode 100644
index 05373ff..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_LockIP.py
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GMT_LockIP.py
-# GM命令锁定IP
-#
-# @author whx
-# @date 2012-08-10 17:00
-# @version 1.0
-#
-# @note
-#---------------------------------------------------------------------
-"""Version = 2012-08-10 17:00"""
-#---------------------------------------------------------------------
-#导入
-import GMCommon
-#---------------------------------------------------------------------
-#全局变量
-
-#---------------------------------------------------------------------
-
-## 收到gm命令执行
-# @param gmCmdDict:gm命令字典
-# @return None 
-def OnExec(gmCmdDict):
-    loginIP = gmCmdDict.get(GMCommon.Def_GMKey_IP, '')
-
-    if loginIP != '':
-        return GMCommon.Def_SendToGameServer, ''
-    
-    # 回复
-    return GMCommon.Def_ParamErr, ''
-    
-    
-## 查询logdb返回
-# @param logdb:logdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def LogDBResponse(logdb, data, gmCmdDict):
-    loginIP = gmCmdDict.get(GMCommon.Def_GMKey_IP, '')
-
-    if loginIP != '':
-        return GMCommon.Def_SendToGameServer, ''
-    
-    # 回复
-    return GMCommon.Def_ParamErr, ''
-
-
-## 查询userdb返回
-# @param userdb:userdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def UserDBResponse(userdb, data, gmCmdDict):
-    loginIP = gmCmdDict.get(GMCommon.Def_GMKey_IP, '')
-
-    if loginIP != '':
-        return GMCommon.Def_SendToGameServer, ''
-    
-    # 回复
-    return GMCommon.Def_ParamErr, ''
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_UnForbidLogin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_UnForbidLogin.py
deleted file mode 100644
index 3fe993d..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_UnForbidLogin.py
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GMT_UnForbidLogin.py
-# GM命令解锁玩家账号
-#
-# @author wdb
-# @date 2012-6-14
-# @version 1.1
-#
-# @note
-# @change: "2012-07-12 18:00" wdb 增加编码属性
-#---------------------------------------------------------------------
-"""Version = 2012-07-12 18:00"""
-#---------------------------------------------------------------------
-#导入
-from MangoDBCommon import fix_incomingText
-from Collections.CollectionDefine import *
-from Collections import DataServerPlayerData
-from Common import mylog
-import GMCommon
-#---------------------------------------------------------------------
-#全局变量
-
-#---------------------------------------------------------------------
-
-## 收到gm命令执行
-# @param gmCmdDict:gm命令字典
-# @return None 
-def OnExec(gmCmdDict):
-    # 转换字符串,获得账号
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')
-    
-    if playerAccID == '' and playerName == '':
-        return GMCommon.Def_ParamErr, ''
-
-    # 查询userdb
-    return GMCommon.Def_DoQueryUserDB, ''
-    
-    
-## 查询logdb返回
-# @param logdb:logdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def LogDBResponse(logdb, data, gmCmdDict):
-    return
-
-
-## 查询userdb返回
-# @param userdb:userdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def UserDBResponse(userdb, data, gmCmdDict):
-
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')
-    
-    #  取得玩家accid
-    if  playerName != '':
-        playerAccID = GMCommon.GetPlayerAccID(userdb, {'PlayerName':fix_incomingText(playerName), 'IsDeleted':0})
-        
-        if playerAccID == '':
-            return GMCommon.Def_NoTag, ''
-        
-    collection = userdb[UCN_DBPlayer]
-    dbPlayer = DataServerPlayerData.tagDBPlayer()
-    dbPlayer.IsDeleted = 0
-    
-    loadOK = dbPlayer.adoLoadCEx(collection, {'AccID':fix_incomingText(playerAccID),
-                                                  'IsDeleted':dbPlayer.IsDeleted}) 
-    if not loadOK:
-        return GMCommon.Def_NoTag, ''
-    
-    # 玩家账号正常
-    if (dbPlayer.AccState & pow(2, GMCommon.Def_PysForbidByPy)) <= 0:
-        return GMCommon.Def_NoNeed, ''
-        
-    # 设置玩家账号状态
-    dbPlayer.AccState = dbPlayer.AccState ^ pow(2, GMCommon.Def_PysForbidByPy)
-    dbPlayer.ExAttr17 = dbPlayer.AccState
-    dbPlayer.adoUpdateC(collection)
-
-    # 记录流向
-    dataDic = {"PlayerID":dbPlayer.PlayerID, 'AccID':playerAccID}
-    GMCommon.SendEventPack(gmCmdDict.get(GMCommon.Def_GMKey_Type, ''), dataDic)
-    return GMCommon.Def_Success, ''
-
-
-
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_UnForbidTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_UnForbidTalk.py
deleted file mode 100644
index 1e545a8..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_UnForbidTalk.py
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GMT_UnForbidTalk.py
-# GM命令玩家解禁言
-#
-# @author wdb
-# @date 2012-6-14
-# @version 1.2
-#
-# @note
-# @change: "2012-06-21 15:30" wdb int修改到GMCommon开接口
-# @change: "2012-07-12 18:00" wdb 增加编码属性
-#---------------------------------------------------------------------
-"""Version = 2012-07-12 18:00"""
-#---------------------------------------------------------------------
-#导入
-from MangoDBCommon import fix_incomingText
-from Collections.CollectionDefine import *
-from Common import (CommFuncEx, mylog)
-from Collections import DataServerPlayerData
-import GMCommon
-#---------------------------------------------------------------------
-#全局变量
-
-#---------------------------------------------------------------------
-
-## 收到gm命令执行
-# @param gmCmdDict:gm命令字典
-# @return None 
-def OnExec(gmCmdDict):
-    loginIP = gmCmdDict.get(GMCommon.Def_GMKey_IP, '')
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')
-
-    if playerAccID != '':
-        return GMCommon.Def_DoQueryLogDB, ''
-    
-    elif loginIP != '':
-        return GMCommon.Def_SendToGameServer, ''
-    
-    elif playerName != '':        
-        return GMCommon.Def_DoQueryUserDB, '%s'%GMCommon.Def_GMKey_PlayerName
-    # 回复
-    return GMCommon.Def_ParamErr, ''
-    
-    
-## 查询logdb返回
-# @param logdb:logdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def LogDBResponse(logdb, data, gmCmdDict):
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    
-    # 玩家在线
-    if playerAccID != '' and GMCommon.GetPlayerOnLineByAccID(logdb, playerAccID):
-        return GMCommon.Def_SendToGameServer, ''
-
-    # accid查询
-    if data != '' and GMCommon.GetPlayerOnLineByAccID(logdb, data):        
-        return GMCommon.Def_SendToGameServer, ''
-    
-    return GMCommon.Def_DoQueryUserDB, ''
-
-
-## 查询userdb返回
-# @param userdb:userdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def UserDBResponse(userdb, data, gmCmdDict):
-    playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
-    playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')
-    #  取得玩家accid
-    if  playerName != '':
-        playerAccID = GMCommon.GetPlayerAccID(userdb, {'PlayerName':fix_incomingText(playerName), 'IsDeleted':0})
-        
-        if playerAccID == '':
-            return GMCommon.Def_NoTag, ''
-    
-    # 返回playerid,判断是否在线
-    if data == '%s'%GMCommon.Def_GMKey_PlayerName:        
-        return GMCommon.Def_DoQueryLogDB, playerAccID
-    
-    collection = userdb[UCN_DBPlayer]   
-    dbPlayer = DataServerPlayerData.tagDBPlayer()
-    dbPlayer.IsDeleted = 0
-
-    loadOK = dbPlayer.adoLoadCEx(collection, {'AccID':fix_incomingText(playerAccID),
-                                                  'IsDeleted':dbPlayer.IsDeleted})    
-    if not loadOK:
-        return GMCommon.Def_NoTag, ''
-    
-    unForbidDevice = gmCmdDict.get("unForbidDevice", '')
-    unForbidType = GMCommon.Def_PysForbidTalkDevice if unForbidDevice else GMCommon.Def_PysForbidTalk
-    # 玩家账号正常
-    if (dbPlayer.AccState & pow(2, unForbidType)) <= 0:
-        return GMCommon.Def_NoNeed, ''
-        
-    # 设置玩家账号状态
-    dbPlayer.AccState = dbPlayer.AccState ^ pow(2, unForbidType)
-    if unForbidType == GMCommon.Def_PysForbidTalkDevice and (dbPlayer.AccState & pow(2, GMCommon.Def_PysForbidTalk)):
-        dbPlayer.AccState = dbPlayer.AccState ^ pow(2, GMCommon.Def_PysForbidTalk)
-    dbPlayer.ExAttr17 = dbPlayer.AccState
-    dbPlayer.adoUpdateC(collection)
-    
-    # 记录流向
-    dataDic = {"PlayerID":dbPlayer.PlayerID, 'AccID':playerAccID}
-    GMCommon.SendEventPack(gmCmdDict.get(GMCommon.Def_GMKey_Type, ''), dataDic)
-    mylog.info("GMT_UnForbidTalk: playerAccID=%s,unForbidType=%s,AccState=%s" % (playerAccID, unForbidType, dbPlayer.AccState))
-    return GMCommon.Def_Success, ''
-
-
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_UnLockIP.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_UnLockIP.py
deleted file mode 100644
index c6786ed..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_UnLockIP.py
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GMT_UnLockIP.py
-# GM命令解锁IP
-#
-# @author whx
-# @date 2012-08-10 17:00
-# @version 1.0
-#
-# @note
-#---------------------------------------------------------------------
-"""Version = 2012-08-10 17:00"""
-#---------------------------------------------------------------------
-#导入
-import GMCommon
-#---------------------------------------------------------------------
-#全局变量
-
-#---------------------------------------------------------------------
-
-## 收到gm命令执行
-# @param gmCmdDict:gm命令字典
-# @return None 
-def OnExec(gmCmdDict):
-    loginIP = gmCmdDict.get(GMCommon.Def_GMKey_IP, '')
-
-    if loginIP != '':
-        return GMCommon.Def_SendToGameServer, ''
-    
-    # 回复
-    return GMCommon.Def_ParamErr, ''
-    
-    
-## 查询logdb返回
-# @param logdb:logdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def LogDBResponse(logdb, data, gmCmdDict):
-    loginIP = gmCmdDict.get(GMCommon.Def_GMKey_IP, '')
-
-    if loginIP != '':
-        return GMCommon.Def_SendToGameServer, ''
-    
-    # 回复
-    return GMCommon.Def_ParamErr, ''
-
-
-## 查询userdb返回
-# @param userdb:userdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def UserDBResponse(userdb, data, gmCmdDict):
-    loginIP = gmCmdDict.get(GMCommon.Def_GMKey_IP, '')
-
-    if loginIP != '':
-        return GMCommon.Def_SendToGameServer, ''
-    
-    # 回复
-    return GMCommon.Def_ParamErr, ''
-

--
Gitblit v1.8.0