#!/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 if curOperValue == IPY_GameWorld.gmForbidTalk: if not curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalk): GameWorld.DebugLog("Íæ¼ÒÕ˺Å״̬Òѱ»½â³ý½ûÑÔ£¬É¾³ý¸ÃGMOperÃüÁî!") 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, 1) return ## È¡Ïû½ûÖ¹ÁÄÌì # @param curPlayer µ±Ç°Íæ¼Ò # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def __Cancel_ForbidTalk(curPlayer): if curPlayer.GetGMForbidenTalk(): PlayerControl.SetGMForbidenTalk(curPlayer, 0) 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() PlayerControl.SetPlayerAccState(curTagPlayer, 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() PlayerControl.SetPlayerAccState(curTagPlayer, IPY_GameWorld.pysForbidden) curTagPlayer.Kick(IPY_GameWorld.disGMKick) return