#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#---------------------------------------------------------------------
|
#
|
#---------------------------------------------------------------------
|
##@package GMT_BroadCast.py
|
# @todo: gm¹ã²¥
|
#
|
# @author: wdb
|
# @date 2012-06-14
|
# @version 1.5
|
#
|
# @note:
|
# @change: "2012-06-15 16:00" wdb ɾ³ýlog
|
# @change: "2012-07-12 18:00" wdb ×Ö·ûת»»ÔÚÈë¿Ú´¦Àí
|
# @change: "2012-07-30 11:30" wdb GM»Ø¸´Ï¸»¯£¬´úÂëÓÅ»¯
|
# @change: "2012-08-10 15:00" zhangxi ÐÞ¸ÄOSS¼Ç¼
|
# @change: "2015-01-14 11:30" hxp ûÓÐÉèÖÃʱ¼äĬÈÏÁ¢¼´¹ã²¥Ò»´Î
|
#---------------------------------------------------------------------
|
"""Version = 2015-01-14 11:30"""
|
#---------------------------------------------------------------------
|
import GameWorld
|
import GMCommon
|
import DataRecordPack
|
import ChConfig
|
|
import datetime
|
#---------------------------------------------------------------------
|
#Â߼ʵÏÖ(ÕâÀïcurPlayer = None)
|
## Ö´ÐÐÂß¼
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param gmList [cmdIndex gmAccID forbidAcc]
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def OnExec(orderId, gmCmdDict):
|
|
broadCastMsg = gmCmdDict.get(GMCommon.Def_GMKey_BroadCastMsg, '')
|
startTime = gmCmdDict.get(GMCommon.Def_GMKey_StartTime, '')
|
endTime = gmCmdDict.get(GMCommon.Def_GMKey_EndTime, '')
|
|
startDate = gmCmdDict.get(GMCommon.Def_GMKey_StartDate, '')
|
endDate = gmCmdDict.get(GMCommon.Def_GMKey_EndDate, '')
|
interval = GameWorld.ToIntDef(gmCmdDict.get(GMCommon.Def_GMKey_Interval, '1'), 1)
|
interval = max(1, interval)
|
isDelOthers = gmCmdDict.get(GMCommon.Def_GMKey_IsDelOthers, 0) == "on"
|
|
if startDate == '' or startTime == '' or endDate == '' or endTime == '':
|
# ûÓÐÉèÖÃʱ¼ä£¬Ä¬ÈÏÁ¢¼´¹ã²¥Ò»´Î
|
startTime = GameWorld.GetCurrentDataTimeStr()
|
endTime = str(GameWorld.GetServerTime() + datetime.timedelta(seconds=59))
|
endTime = endTime.strip().split(".")[0]
|
else:
|
startTime = startDate + " " + startTime
|
endTime = endDate + ' ' + endTime
|
|
# ɾ³ý֮ǰµÄ´æ´¢µÄ¹ã²¥
|
if isDelOthers:
|
GMCommon.DelAllBroadCast()
|
|
elif broadCastMsg == '' or endTime == '' or startTime == '':
|
GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr)
|
return
|
|
startDate = GameWorld.GetDateTimeByFormatStr(startTime, ChConfig.TYPE_Time_Format)
|
endDate = GameWorld.GetDateTimeByFormatStr(endTime, ChConfig.TYPE_Time_Format)
|
dateTime = GameWorld.GetServerTime()
|
|
# ÅжÏʱ¼äÊÇ·ñÕýÈ·
|
if CheckDate(startDate, endDate) or CheckDate(dateTime, endDate):
|
GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_InvalidTime)
|
return
|
|
startTime = GameWorld.ChangeTimeStrToNum(startTime)
|
endTime = GameWorld.ChangeTimeStrToNum(endTime)
|
|
# ·¢ËÍÏûÏ¢
|
GMCommon.SetBroadCastInfo(startTime, endTime, interval,
|
broadCastMsg, isDelOthers)
|
#Ö´Ðгɹ¦
|
GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Success)
|
# Á÷Ïò
|
DataRecordPack.DR_ToolGMOperate(0, '', '', 'GMT_BroadCast', str(gmCmdDict))
|
return
|
|
|
## ÅжÏʱ¼äÊÇ·ñ´íÎó
|
# @param startDate£ºÏà¶ÔСÈÕÆÚ
|
# @param endDate£ºÏà¶Ô´óÈÕÆÚ
|
# @return None
|
def CheckDate(startDate, endDate):
|
|
if (endDate - startDate).days < 0:
|
return True
|
|
return False
|
|
|
|
|