#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
  
 | 
##@package PrintBuff  
 | 
# Êä³öÍæ¼ÒÉíÉϵÄbuff  
 | 
#  
 | 
# @author mark  
 | 
# @date 2010-4-23  
 | 
# @version 1.4  
 | 
#  
 | 
# ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ  
 | 
# @change: "2010-05-12 18:30" zhengyang Ìí¼Ó×¢ÊÍ  
 | 
# @change: "2010-06-07 17:33" adaws GMÃüÁîPrintBuffÔö¼Ó±»¶¯¼¼ÄÜbuff  
 | 
# @change: "2010-12-07 12:00" Alee ´òÓ¡ÐÐΪBUFF  
 | 
# @change: "2010-12-31 17:00" Alee Ìí¼Ó¹ÜÀíÆ÷¸ü¸Ä  
 | 
#  
 | 
# Ä£¿éÏêϸ˵Ã÷  
 | 
# ½Ó¿ÚС֪ʶ£ºFindNPCByID »ñµÃ»¹ÊǸ¸ÀàµÄNPCʵÀý£¬Òª¾ßÌåת»»Îª¾ßÌåµÄNPCʵÀý£¬²Å¿ÉÒÔÓ¦ÓÃÏàÓ¦½Ó¿Ú  
 | 
  
 | 
"""Version = 2010-12-31 17:00"""  
 | 
  
 | 
  
 | 
import IPY_GameWorld  
 | 
import GMCommon   
 | 
import GameWorld  
 | 
import SkillCommon  
 | 
  
 | 
## ´òÓ¡buffState  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param buffState ÊÇbuffµÄ¼¯ºÏ£¬¶øÒ»¸öObjÓÖ¾ßÓÐn¸öBuffState  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def PrintBuffState(curPlayer, tagObj, buffType):  
 | 
    GameWorld.DebugAnswer(curPlayer, "---------" + GMCommon.BuffNameList[buffType])  
 | 
    buffTuple = SkillCommon.GetBuffManagerByBuffType(tagObj, buffType)  
 | 
      
 | 
    if buffTuple == ():  
 | 
        return  
 | 
    buffState = buffTuple[0]  
 | 
      
 | 
    for i in range(0, buffState.GetBuffCount()):  
 | 
        curBuff = buffState.GetBuff(i)  
 | 
        curSkill = curBuff.GetSkill()  
 | 
        if curSkill.GetSkillID() == 0:  
 | 
            continue  
 | 
          
 | 
        name = curSkill.GetSkillName()  
 | 
        remainTime = curBuff.GetRemainTime() / 1000  
 | 
        remainTimeStr = __GetRemainTimeStr(remainTime)  
 | 
        GameWorld.DebugAnswer(curPlayer, "%s,ID=%s,TypeID=%s,%s,Layer=%s"   
 | 
                              % (name, curSkill.GetSkillID(), curSkill.GetSkillTypeID(), remainTimeStr, curBuff.GetLayer()))  
 | 
        effectStr = ""  
 | 
        for j in range(0, curSkill.GetEffectCount()):  
 | 
            curEffect = curSkill.GetEffect(j)  
 | 
            effectID = curEffect.GetEffectID()  
 | 
            if effectID == 0:  
 | 
                continue  
 | 
              
 | 
            effectStr += "¼¼ÄÜЧ¹û%s ID = %s" % (j, effectID)  
 | 
              
 | 
        GameWorld.DebugAnswer(curPlayer, effectStr)  
 | 
    return  
 | 
      
 | 
def __GetRemainTimeStr(remainTime):  
 | 
    day = 3600 * 24  
 | 
    days = remainTime / day  
 | 
    remainTime -= (days * day)  
 | 
    hours = remainTime / 3600  
 | 
    remainTime -= (hours * 3600)  
 | 
    minutes = remainTime / 60  
 | 
    seconds = remainTime % 60  
 | 
    remainTimeStr = ""  
 | 
    if days:  
 | 
        remainTimeStr = "%sÌì" % (days)  
 | 
    if hours:  
 | 
        remainTimeStr = "%s%sʱ" % (remainTimeStr, hours)  
 | 
    if minutes:  
 | 
        remainTimeStr = "%s%s·Ö" % (remainTimeStr, minutes)  
 | 
    if seconds:  
 | 
        remainTimeStr = "%s%sÃë" % (remainTimeStr, seconds)  
 | 
    return remainTimeStr  
 | 
  
 | 
## GMÃüÁîÖ´ÐÐÈë¿Ú  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param list ²ÎÊýÁбí [npcID]  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def OnExec(curPlayer, cmdList):  
 | 
    GameWorld.DebugAnswer(curPlayer, "¿ªÊ¼´òÓ¡buffÁбí,ÈçÎÞ´òÓ¡,¼ÈÎÞBuff")  
 | 
    curTagPlayer = None  
 | 
      
 | 
    if len(cmdList) == 0 or cmdList[0] == 0:  
 | 
        curTagPlayer = curPlayer  
 | 
    else:  
 | 
        curTagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(cmdList[0])  
 | 
      
 | 
    if curTagPlayer != None:  
 | 
        GameWorld.DebugAnswer(curPlayer, "Íæ¼ÒÐÅÏ¢£º%s" % (curTagPlayer.GetID()))  
 | 
        if len(cmdList) > 1:  
 | 
            buffTypeStr = ""  
 | 
            for i, buffName in enumerate(GMCommon.BuffNameList):  
 | 
                buffTypeStr += "%s:%s," % (i, buffName)  
 | 
            GameWorld.DebugAnswer(curPlayer, "%s" % buffTypeStr)  
 | 
            buffType = cmdList[1]  
 | 
            PrintBuffState(curPlayer, curTagPlayer, buffType)  
 | 
            return  
 | 
        for buffType in range(IPY_GameWorld.bfBuff, IPY_GameWorld.btBufMax):  
 | 
            PrintBuffState(curPlayer, curTagPlayer, buffType)  
 | 
        return  
 | 
  
 | 
    #Êä³öNPCBuff  
 | 
    curNPC = GameWorld.GetNPCManager().FindNPCByID(cmdList[0])  
 | 
  
 | 
    if curNPC == None:  
 | 
        GameWorld.DebugAnswer(curPlayer, "error²ÎÊý£º²»ÊÇNPCID Ò²²»ÊÇÍæ¼ÒID")  
 | 
        return  
 | 
      
 | 
    curNPC = GameWorld.GetObjDetail(curNPC)  
 | 
    GameWorld.DebugAnswer(curPlayer, "NPCÐÅÏ¢ %s %s" % (curNPC.GetName(), curNPC.GetID()))  
 | 
      
 | 
    for buffType in GMCommon.GetNPCBuffTypeList(curNPC):  
 | 
        PrintBuffState(curPlayer, curNPC, buffType)  
 |