#!/usr/bin/python
|
# -*- coding: GBK -*-
|
|
##@package GMTool_ForbidTalk
|
# Êý¾Ý¿âGMÃüÁîÖ´ÐÐ->ÕʺŽûÑÔ
|
#
|
# @author wdb
|
# @date 2012-06-14
|
# @version 1.3
|
#
|
# ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ
|
# @change: "2012-07-12 18:00" wdb ×Ö·ûת»»ÔÚÈë¿Ú´¦Àí
|
# @change: "2012-08-10 15:00" zhangxi ÐÞ¸ÄOSS¼Ç¼
|
# @change: "2014-09-05 16:30" hxp Ôö¼Ó¿ÉÉèÖýûÑÔʱ³¤
|
# @note
|
# Ä£¿éÏêϸ˵
|
#½Å±¾ËµÃ÷
|
#---------------------------------------------------------------------
|
#µ¼Èë
|
import IPY_GameServer
|
import GMCommon
|
import ChConfig
|
import GameWorld
|
import DataRecordPack
|
#---------------------------------------------------------------------
|
#È«¾Ö±äÁ¿
|
#---------------------------------------------------------------------
|
VER = "2014-09-05 16:30"
|
#---------------------------------------------------------------------
|
#Â߼ʵÏÖ(ÕâÀïcurPlayer = None)
|
## Ö´ÐÐÂß¼
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param gmList [cmdIndex,gmAccID,forbidAcc,lastTime]
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def OnExec(orderId, gmCmdDict):
|
GameWorld.DebugLog("GMTool_ForbidTalk OnExec gmCmdDict=%s" % str(gmCmdDict))
|
# »ñµÃ²¢×ª»»×Ö·û´®
|
playerName = gmCmdDict.get(GMCommon.Def_GMKey_PlayerName, '')
|
playerAccID = gmCmdDict.get(GMCommon.Def_GMKey_PlayerAccID, '')
|
|
forbitHour = gmCmdDict.get("forbitHour", '')
|
forbitMinute = gmCmdDict.get("forbitMinute", '')
|
forbidDevice = gmCmdDict.get("forbidDevice", '')
|
|
if not forbitHour or not forbitHour.isdigit() or not forbitMinute or not forbitMinute.isdigit():
|
GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr)
|
return
|
|
forbitHour = GameWorld.ToIntDef(forbitHour, 0)
|
forbitMinute = GameWorld.ToIntDef(forbitMinute, 0)
|
|
if forbitHour <= 0 and forbitMinute <= 0:
|
GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr)
|
return
|
|
forbitTotalMinute = forbitHour * 60 + forbitMinute # ½ûÑÔʱ³¤
|
|
playerFind = ''
|
# Õ˺ŽûÑÔ
|
if playerAccID != '':
|
queryType = ChConfig.queryType_sqtPlayerByAccID
|
playerFind = playerAccID
|
# Ãû×Ö½ûÑÔ
|
elif playerName != '':
|
playerFind = playerName
|
queryType = ChConfig.queryType_sqtPlayerByName
|
# ֪ͨmap
|
if playerFind != "":
|
GMCommon.GMTool_MapServer_Query(queryType, orderId, playerFind,
|
gmCmdDict, 'GMTForbidTalk', [forbitTotalMinute, forbidDevice])
|
|
return
|
|
forbidAccIP = gmCmdDict.get(GMCommon.Def_GMKey_IP, '')
|
if forbidAccIP == "":
|
GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr)
|
return
|
|
#²Ù×÷·û
|
gmOper = IPY_GameServer.gmForbidTalk
|
ipManager = GameWorld.GetGameWorld().GetAllDBIPManage()
|
#ÒѾ´æÔÚ´ËIP,²»Öظ´Ìí¼Ó
|
if ipManager.FindIPManage(forbidAccIP, gmOper):
|
GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_NoNeed)
|
return
|
|
addIP = ipManager.AddIP()
|
addIP.SetIP(forbidAccIP)
|
addIP.SetOper(gmOper)
|
|
#¹ã²¥ËùÓеØÍ¼ , Èç¹ûÍæ¼ÒÔÚÏßÖ´Ðд˲Ù×÷
|
playerManager = GameWorld.GetPlayerManager()
|
|
for index in range(playerManager.GetPlayerCount()):
|
curPlayer = playerManager.GetPlayerByIndex(index)
|
if not curPlayer.GetID():
|
continue
|
|
if curPlayer.GetIP() != forbidAccIP:
|
continue
|
|
GMCommon.GMTool_MapServer_Query(ChConfig.queryType_sqtPlayerByAccID, orderId, curPlayer.GetAccID(),
|
gmCmdDict, 'GMTForbidTalk', [forbitTotalMinute], False)
|
|
GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Success)
|
#¼Ç¼Á÷Ïò
|
DataRecordPack.DR_ToolGMOperate(0, '', '', gmCmdDict.get(GMCommon.Def_GMKey_Type, forbidAccIP))
|
return
|
|
|
|