#!/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, "Ôݲ»Ö§³Ö"
|