| #!/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  | 
|   | 
|   |