#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#---------------------------------------------------------------------  
 | 
#  
 | 
#---------------------------------------------------------------------  
 | 
##@package PlayerGMOper  
 | 
# @todo: Íæ¼ÒGMÃüÁî²Ù×÷±í  
 | 
#  
 | 
# @author: panwei  
 | 
# @date 2011-05-23  
 | 
# @version 1.1  
 | 
#  
 | 
# @note:   
 | 
# @change: "2011-05-31 21:30" Alee ÐÂÔö·âºÅº¯Êý²ÎÊý²»Í¬  
 | 
#---------------------------------------------------------------------  
 | 
"""Version = 2011-05-31 21:30"""  
 | 
#---------------------------------------------------------------------  
 | 
import GameWorld  
 | 
import IPY_GameWorld  
 | 
import ChConfig  
 | 
import PlayerControl  
 | 
#---------------------------------------------------------------------  
 | 
#È«¾Ö±äÁ¿  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
#---------------------------------------------------------------------  
 | 
#Â߼ʵÏÖ  
 | 
  
 | 
  
 | 
## ³õʼ»¯GM²Ù×÷  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param tick µ±Ç°Ê±¼ä  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def DoGMOperLogic(curPlayer, tick):  
 | 
    #Íæ¼ÒGM²Ù×÷ÁÐ±í  
 | 
    curPlayer_GMOper = curPlayer.GetGMOperManager()  
 | 
    curPlayer_GMOper_Count = curPlayer_GMOper.GetCount()  
 | 
      
 | 
    if not curPlayer_GMOper_Count:  
 | 
        #ûÓоͷµ»ØÁË  
 | 
        return  
 | 
      
 | 
    curDateTime = GameWorld.GetCurrentTime()  
 | 
    delList = []  
 | 
      
 | 
    for index in range(curPlayer_GMOper_Count):  
 | 
        curOper = curPlayer_GMOper.GetAt(index)  
 | 
        curOperValue = curOper.GetOper()  
 | 
        curOperEndTime = GameWorld.GetDateTimeByStr(curOper.GetEndTime())  
 | 
          
 | 
        #ʱ¼äµ½  
 | 
        if curOperEndTime != None and curDateTime >= curOperEndTime:  
 | 
            DoClearOper(curPlayer, curOperValue)  
 | 
            delList.append(curOperValue)  
 | 
            continue  
 | 
          
 | 
        #Ö´ÐÐGMÃüÁî  
 | 
        DoOper(curPlayer, curOperValue)  
 | 
              
 | 
    for oper in delList:  
 | 
        curPlayer_GMOper.DeleteOper(oper)  
 | 
      
 | 
    #¼´Ê±´æÅÌ  
 | 
    curPlayer_GMOper.Sync_SaveToDB()  
 | 
      
 | 
    #Õʺű»·â  
 | 
    if curPlayer.GetDictByKey(ChConfig.Def_GM_Oper_ForbidAcc):  
 | 
        curPlayer.Kick(IPY_GameWorld.disGMKick)  
 | 
          
 | 
    return  
 | 
#---------------------------------------------------------------------  
 | 
#===============================================================================  
 | 
# enum    TGMOper  
 | 
# {  
 | 
#    gmForbidFight = 0,      //½ûÖ¹Õ½¶·  
 | 
#    gmForbidAcc,            //½ûÖ¹ÕʺŠ 
 | 
#    gmForbidVisible,        //ÒþÉí  
 | 
#    gmForbidTalk,           //½ûÑÔ  
 | 
# };  
 | 
#===============================================================================  
 | 
#---------------------------------------------------------------------  
 | 
## Ö´ÐÐGMOper²Ù×÷  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param curOperValue gmÃüÁî²Ù×÷Öµ  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def DoOper(curPlayer, curOperValue):  
 | 
    if curOperValue == IPY_GameWorld.gmForbidFight:  
 | 
        __Do_ForbidenFight(curPlayer)  
 | 
      
 | 
    elif curOperValue == IPY_GameWorld.gmForbidAcc:  
 | 
        __Do_ForbidAcc(curPlayer)  
 | 
      
 | 
    elif curOperValue == IPY_GameWorld.gmForbidVisible:  
 | 
        __Do_ForbidVisible(curPlayer)  
 | 
      
 | 
    elif curOperValue == IPY_GameWorld.gmForbidTalk:  
 | 
        __Do_ForbidTalk(curPlayer)  
 | 
      
 | 
    else:  
 | 
        GameWorld.Log("ÎÞЧGM²Ù×÷·û = %s"%(curOperValue), curPlayer.GetPlayerID())  
 | 
          
 | 
    return  
 | 
  
 | 
#---------------------------------------------------------------------  
 | 
## Çå³ýGMOper²Ù×÷  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param curOperValue gmÃüÁî²Ù×÷Öµ  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def DoClearOper(curPlayer, curOperValue):  
 | 
    if curOperValue == IPY_GameWorld.gmForbidFight:  
 | 
        __Cancel_ForbidenFight(curPlayer)  
 | 
          
 | 
    elif curOperValue == IPY_GameWorld.gmForbidAcc:  
 | 
        pass  
 | 
      
 | 
    elif curOperValue == IPY_GameWorld.gmForbidVisible:  
 | 
        __Cancel_ForbidVisible(curPlayer)  
 | 
          
 | 
    elif curOperValue == IPY_GameWorld.gmForbidTalk:  
 | 
        __Cancel_ForbidTalk(curPlayer)  
 | 
          
 | 
    else:  
 | 
        GameWorld.Log("ÎÞЧGM²Ù×÷·û = %s"%(curOperValue), curPlayer.GetPlayerID())  
 | 
          
 | 
    return  
 | 
  
 | 
#---------------------------------------------------------------------  
 | 
## ½ûÖ¹Õ½¶·  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __Do_ForbidenFight(curPlayer):  
 | 
    if not curPlayer.GetGMForbidenFight():  
 | 
        curPlayer.SetGMForbidenFight(True)  
 | 
          
 | 
    return  
 | 
  
 | 
## È¡Ïû½ûÖ¹Õ½¶·  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __Cancel_ForbidenFight(curPlayer):  
 | 
    if curPlayer.GetGMForbidenFight():  
 | 
        curPlayer.SetGMForbidenFight(False)  
 | 
      
 | 
    return  
 | 
#---------------------------------------------------------------------  
 | 
## ÒþÉí  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __Do_ForbidVisible(curPlayer):  
 | 
    if curPlayer.GetVisible():  
 | 
        curPlayer.SetVisible(False)  
 | 
      
 | 
    return  
 | 
  
 | 
## È¡ÏûÒþÉí  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __Cancel_ForbidVisible(curPlayer):  
 | 
    if not curPlayer.GetVisible():  
 | 
        curPlayer.SetVisible(True)  
 | 
      
 | 
    return  
 | 
#---------------------------------------------------------------------  
 | 
## ½ûÖ¹ÁÄÌì  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __Do_ForbidTalk(curPlayer):  
 | 
    if not curPlayer.GetGMForbidenTalk():  
 | 
        PlayerControl.SetGMForbidenTalk(curPlayer, True)  
 | 
      
 | 
    return  
 | 
  
 | 
## È¡Ïû½ûÖ¹ÁÄÌì  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __Cancel_ForbidTalk(curPlayer):  
 | 
    if curPlayer.GetGMForbidenTalk():  
 | 
        PlayerControl.SetGMForbidenTalk(curPlayer, False)  
 | 
      
 | 
    return  
 | 
#---------------------------------------------------------------------  
 | 
## ½ûÖ¹Õ˺ŵǽ  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __Do_ForbidAcc(curPlayer):  
 | 
    curPlayer.SetDict(ChConfig.Def_GM_Oper_ForbidAcc, 1)  
 | 
    return  
 | 
  
 | 
#---------------------------------------------------------------------  
 | 
## GMOper·âºÅ lastTime(·ÖÖÓ)  
 | 
#  @param curTagPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param lastTime ½áÊøÊ±¼ä  
 | 
#  @param msg gmÏûÏ¢  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def ClosePlayerByAccID(curTagPlayer, lastTime, msg):  
 | 
    curFindPlayer_GMOper = curTagPlayer.GetGMOperManager()  
 | 
      
 | 
    gmOper = curFindPlayer_GMOper.AddGMOper(IPY_GameWorld.gmForbidAcc)  
 | 
      
 | 
    gmOper.SetGMAccID('sys')  
 | 
    gmOper.SetLastTime(lastTime)  
 | 
    gmOper.SetMsg(msg)  
 | 
      
 | 
    curFindPlayer_GMOper.Sync_SaveToDB()  
 | 
      
 | 
    curTagPlayer.SetAccState(IPY_GameWorld.pysForbidden)  
 | 
      
 | 
    curTagPlayer.Kick(IPY_GameWorld.disGMKick)  
 | 
    return  
 | 
  
 | 
## GMOper·âºÅ £¨²ÎÊý²»Í¬£©  
 | 
#  @param curTagPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param lastTime ½áÊøÊ±¼ä  
 | 
#  @param msg gmÏûÏ¢  
 | 
#  @param oper ¼Ç¼Á÷ÏòºÅ  
 | 
#  @return None  
 | 
def ClosePlayerByAccIDEx(curTagPlayer, lastTime, msg, oper):  
 | 
    curFindPlayer_GMOper = curTagPlayer.GetGMOperManager()  
 | 
      
 | 
    gmOper = curFindPlayer_GMOper.AddGMOper(IPY_GameWorld.gmForbidAcc)  
 | 
      
 | 
    gmOper.SetGMAccID('sys')  
 | 
    gmOper.SetLastTime(lastTime)  
 | 
    gmOper.SetMsg(msg)  
 | 
      
 | 
    curFindPlayer_GMOper.Sync_SaveToDB()  
 | 
      
 | 
    curTagPlayer.SetAccState(IPY_GameWorld.pysForbidden)  
 | 
  
 | 
    curTagPlayer.Kick(IPY_GameWorld.disGMKick)  
 | 
    return  
 | 
  
 | 
  
 |