1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package PyMongoDB.GMToolLogicProcess.Commands.GMT_ForbidTalk
#
# @todo:GM¹¤¾ßÃüÁî - ½ûÑÔ/½â½û
# @author hxp
# @date 2026-03-06
# @version 1.0
#
# ÏêϸÃèÊö: GM¹¤¾ßÃüÁî - ½ûÑÔ/½â½û
#
#-------------------------------------------------------------------------------
#"""Version = 2026-03-06 15:00"""
#-------------------------------------------------------------------------------
 
import GMCommon
import GameWorld
from Player import (PlayerControl)
import IPY_GameWorld
import DataRecordPack
 
def OnExec(gmCmdDict):
    
    queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
    #playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
    if queryType == "IP":
        return __doForbidTalkByIP(gmCmdDict)
    
    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, '') 
    
    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 forbidType == "1":
        if forbitDay <= 0 and forbitHour <= 0 and forbitMinute <= 0:
            return GMCommon.Def_ParamErr, "ÐèÉèÖýûÑÔʱ³¤"
        forbitTotalMinute = forbitDay * 24 * 60 + forbitHour * 60 + forbitMinute # ½ûÑÔʱ³¤
        
        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")
        
    # ½â½û
    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
            
        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, "Ôݲ»Ö§³Ö"