hxp
2026-03-06 e4a73fcd808bcf5e22099b73f2bc98e8b6ee84c6
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
96
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package PyMongoDB.GMToolLogicProcess.Commands.GMT_ForbidLogin
#
# @todo:GM¹¤¾ßÃüÁî - ·âºÅ/½â·â
# @author hxp
# @date 2026-03-06
# @version 1.0
#
# ÏêϸÃèÊö: 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
 
def OnExec(gmCmdDict):
    queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
    #playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
    if queryType == "IP":
        return __doForbidLoginByIP(gmCmdDict)
    
    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)
    
    if Result != GMCommon.Def_Success:
        return Result, errorMsg
    
    if forbidType == "1":
        # Íæ¼ÒÔÚÏߣ¬¿É´¦Àí
        playerID = curPlayer.GetPlayerID()
        Result = GMCommon.Def_Unknow
        #GMT_Name = gmCmdDict.get(GMCommon.Def_GMKey_Type, '') 
        
        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, "Íæ¼ÒÕý³£ÔÚÏß"
    
    return GMCommon.Def_Success
 
def __doForbidLoginByDBPlayer(dbPlayer, forbidType):
    ## ÀëÏ߸ù¾ÝdbPlayer´¦Àí
    
    col = PyGameData.g_usrCtrlDB.db[UCN_DBPlayer]
    
    playerID = dbPlayer.PlayerID
    playerName = dbPlayer.PlayerName
    accID = dbPlayer.AccID
    
    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"
        
    # ¼Ç¼Á÷Ïò
    DataRecordPack.DR_ToolGMOperate(playerID, playerName, accID, gmToolCmd)
    return GMCommon.Def_Success
 
def __doForbidLoginByIP(gmCmdDict):
    Result = GMCommon.Def_Unknow
    # Ôݲ»Ö§³Ö£¬ºóÐøÀ©Õ¹£¬ÐèÒª´¦ÀíÈ«¾Ö¹ÜÀí
    return Result, "Ôݲ»Ö§³Ö"