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