#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
  
 | 
##@package GMT_ChangeEvent.py  
 | 
# ¿ªÆôϵͳ»î¶¯  
 | 
#  
 | 
# @author wdb  
 | 
# @date 2012-06-21  
 | 
# @version 1.5  
 | 
#  
 | 
# @note:   
 | 
# ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ  
 | 
#  
 | 
# Ä£¿éÏêϸ˵  
 | 
#¿ªÆôϵͳ»î¶¯  
 | 
# @change: "2012-06-29 17:00" wdb ÐÞ¸ÄÈ¥³ýʱ¼äÉèÖôíÎó  
 | 
# @change: "2012-07-30 11:30" wdb GM»Ø¸´Ï¸»¯£¬´úÂëÓÅ»¯  
 | 
# @change: "2012-08-10 15:00" zhangxi ÐÞ¸ÄOSS¼Ç¼  
 | 
# @change: "2014-09-25 20:00" hxp Ð޸ĿɿØÖƻ¿ª¹ØÊ±¼ä  
 | 
# @change: "2014-09-26 12:00" hxp Ôö¼Ó¿ÉÉèÖû²ÎÊý£»¹Ø±Õ»î¶¯Ê±Ö´ÐйرÕÂß¼  
 | 
#---------------------------------------------------------------------  
 | 
"""Version = 2014-09-26 12:00"""  
 | 
#---------------------------------------------------------------------  
 | 
#µ¼Èë  
 | 
import GameWorld  
 | 
import PlayerControl  
 | 
import datetime  
 | 
import DataRecordPack  
 | 
import GMCommon  
 | 
import ChConfig  
 | 
#---------------------------------------------------------------------  
 | 
#È«¾Ö±äÁ¿  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
#---------------------------------------------------------------------  
 | 
#Â߼ʵÏÖ  
 | 
## Ö´ÐÐÂß¼  
 | 
#  @param orderId gmÃüÁîid  
 | 
#  @param gmCmdDict   
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def OnExec(orderId, gmCmdDict):  
 | 
    eventID = GameWorld.ToIntDef(gmCmdDict.get('eventID', ''))  
 | 
    doType = gmCmdDict.get('doType', '')  
 | 
          
 | 
    if eventID not in GMCommon.GetGameServer_GM_GameID():  
 | 
        GameWorld.DebugLog("GmStarAction.txt ÎÞ¸ÃʼþID=%s" % eventID)  
 | 
        GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_InvalidEvent)  
 | 
        return  
 | 
  
 | 
    eventManager = GameWorld.GetGameWorldEventManager()  
 | 
    #¿ªÆô»î¶¯  
 | 
    if doType == '':  
 | 
#        #»î¶¯¿ªÆôʱ¼ä   
 | 
#        eventStartTime = GameWorld.GetServerTime()  
 | 
#        #»î¶¯¹Ø±Õʱ¼ä ,¹Ì¶¨Îª3Ììºó£¬½Ó¿ÚÒÔµ±Ç°Ê±¼äΪ±»¼õÊý£¬¹ÊÒª¼Ó¸ººÅ  
 | 
#        eventCloseTime = GameWorld.GetDatetimeBySubDays(-3)  
 | 
#          
 | 
#        if not eventStartTime or not eventCloseTime \  
 | 
#            or eventStartTime < datetime.datetime.today() \  
 | 
#            or eventStartTime > eventCloseTime:  
 | 
#            #²ÎÊý´íÎó  
 | 
#            GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_InvalidTime)  
 | 
#            return  
 | 
          
 | 
        eventStartTime = gmCmdDict.get("StartTime", "")  
 | 
        eventCloseTime = gmCmdDict.get("EndTime", "")  
 | 
        eventPar = gmCmdDict.get("eventPar", "")  
 | 
          
 | 
        if not eventStartTime or not eventCloseTime or eventStartTime >= eventCloseTime:  
 | 
            GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_InvalidTime)  
 | 
            return  
 | 
          
 | 
        #Èç¹û»î¶¯ÒѾ¿ªÆô,Ö´Ðи²¸Ç»î¶¯Âß¼  
 | 
        GMCommon.CloseProcessingEvent(eventID)  
 | 
          
 | 
        #ÉèÖûÄÚÈݽø»î¶¯¹ÜÀíÆ÷  
 | 
        addEvent = eventManager.AddActiveEvent(eventID)  
 | 
        addEvent.SetEventID(eventID)  
 | 
        addEvent.SetStartTime('%s'%eventStartTime)  
 | 
        addEvent.SetEndTime('%s'%eventCloseTime)  
 | 
        if eventPar:  
 | 
            addEvent.SetPar('%s'%eventPar)  
 | 
  
 | 
        #ÉèÖÃΪδ¼¤»î״̬  
 | 
        addEvent.SetIsProcessing(False)  
 | 
        gmCmdDict['endTime'] = '%s'%eventCloseTime  
 | 
          
 | 
    #¹Ø±Õ»î¶¯  
 | 
    else:  
 | 
        activeEvent = eventManager.FindActiveEvent(eventID)  
 | 
        if not activeEvent:  
 | 
            #ûÓиĻ  
 | 
            GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_NoTag)   
 | 
            return  
 | 
          
 | 
        GMCommon.CloseProcessingEvent(eventID)  
 | 
        eventManager.DelActiveEvent(eventID)  
 | 
  
 | 
    #Ö´Ðгɹ¦  
 | 
    GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Success)      
 | 
    # Á÷Ïò  
 | 
    DataRecordPack.DR_ToolGMOperate(0, '', '', gmCmdDict.get(GMCommon.Def_GMKey_Type, ''), str(gmCmdDict))  
 | 
    return  
 | 
  
 | 
  
 |