#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.PrintNPCHurt # # @todo:ÏÔʾNPCÉËѪÁбí # @author hxp # @date 2017-12-07 # @version 1.0 # # ÏêϸÃèÊö: ÏÔʾNPCÉËѪÁбí # #------------------------------------------------------------------------------- #"""Version = 2017-12-07 15:00""" #------------------------------------------------------------------------------- import GameWorld import IPY_GameWorld import FamilyRobBoss import NPCCommon import ChConfig import NPCHurtManager import NPCHurtMgr import PlayerTeam import ShareDefine import GameObj ##²é¿´µãÑ¡µÄNPC³ðºÞÁбí # @param curPlayer Íæ¼ÒʵÀý # @param cmdList GMÃüÁî²ÎÊýÁбí # @return ·µ»ØÖµÎÞÒâÒå # @remarks GMÃüÁî def OnExec(curPlayer, cmdList): if not cmdList: GameWorld.DebugAnswer(curPlayer, "PrintNPCHurt objID ÊÇ·ñÅÅÐò(¿ÉÑ¡)") return objID = cmdList[0] isSort = cmdList[1] if len(cmdList) > 1 else 0 curNPC = GameWorld.GetObj(objID, IPY_GameWorld.gotNPC) if not curNPC: GameWorld.DebugAnswer(curPlayer, "objID(%s) ´íÎó ÕÒ²»µ½¶ÔÓ¦NPC" % objID) return GameWorld.DebugAnswer(curPlayer, "--- %s --- HP: %s / %s" % (GameWorld.GetGameWorld().GetTick() % 1000, GameObj.GetHP(curNPC), GameObj.GetMaxHP(curNPC))) GameWorld.DebugAnswer(curPlayer, "ID=%s,team=%s,family=%s" % (curPlayer.GetPlayerID(), curPlayer.GetTeamID(), curPlayer.GetFamilyID())) # ¹éÊôÏÉÃ˵ģ¬È¡ÏÉÃËÉËѪͳ¼Æ if NPCCommon.GetDropOwnerType(curNPC) == ChConfig.DropOwnerType_Family: FamilyRobBoss.OnGMPrintFamilyOwnerBossHurt(curPlayer, curNPC) return isAssistHurt = 0 npcHurtList = NPCHurtManager.GetPlayerHurtList(curNPC) if npcHurtList: isAssistHurt = 1 if not npcHurtList: npcHurtList = NPCHurtMgr.GetPlayerHurtList(curNPC) if not npcHurtList: npcHurtList = curNPC.GetPlayerHurtList() if isSort: npcHurtList.Sort() #sortÒÔºóÉËѪÁбí´Ó´óµ½Ð¡ÅÅÐò GameWorld.DebugAnswer(curPlayer, "ID=%s,NPCID=%s, ÉËѪÊý=%s,ÅÅÐò=%s,Э=%s" % (curNPC.GetID(), curNPC.GetNPCID(), npcHurtList.GetHurtCount(), isSort, isAssistHurt)) if isAssistHurt: for playerID, assistPlayerIDList in npcHurtList.GetNoAssitPlayerIDDict().items(): GameWorld.DebugAnswer(curPlayer, "Íæ¼Ò:%s, ЭÖúÍæ¼Ò:%s" % (playerID, assistPlayerIDList)) for assistPlayerID, tagPlayerID in npcHurtList.GetAssistPlayerIDDict().items(): GameWorld.DebugAnswer(curPlayer, "ЭÖúÍæ¼Ò:%s, Ä¿±ê:%s" % (assistPlayerID, tagPlayerID)) for index in xrange(npcHurtList.GetHurtCount()): #»ñµÃÉËѪ¶ÔÏó hurtObj = npcHurtList.GetHurtAt(index) hurtType = hurtObj.GetValueType() hurtID = hurtObj.GetValueID() hurtValue = hurtObj.GetHurtValue() if hasattr(hurtObj, "GetHurtValueEx"): hurtValue += hurtObj.GetHurtValueEx() * ShareDefine.Def_PerPointValue if not hurtID: GameWorld.DebugAnswer(curPlayer, "%s ²»´æÔÚ£¡HurtType=%s,ID=%s, V=%s" % (index, hurtType, hurtID, hurtValue)) continue if hurtType == ChConfig.Def_NPCHurtTypePlayer: hurtPlayer = GameWorld.GetObj(hurtID, IPY_GameWorld.gotPlayer) if hurtPlayer == None: GameWorld.DebugAnswer(curPlayer, "%s Íæ¼ÒID=%s,²»´æÔÚ, V=%s" % (index, hurtID, hurtValue)) elif GameObj.GetHP(hurtPlayer) <= 0 : GameWorld.DebugAnswer(curPlayer, "%s Íæ¼ÒID=%s,ѪÁ¿Îª0, V=%s" % (index, hurtID, hurtValue)) else: d = GameWorld.GetDist(curNPC.GetPosX(), curNPC.GetPosY(), hurtPlayer.GetPosX(), hurtPlayer.GetPosY()) GameWorld.DebugAnswer(curPlayer, "%s Íæ¼ÒID=%s,¾àÀë=%s, V=%s" % (index, hurtID, d, hurtValue)) if isAssistHurt: playerHurtValue, assistPlayerHurtDict = npcHurtList.GetPlayerHurtDetail(hurtID) GameWorld.DebugAnswer(curPlayer, " ·ÇЭid=%s,v=%s" % (hurtID, playerHurtValue)) for assistPlayerID, assistHurtValue in assistPlayerHurtDict.items(): GameWorld.DebugAnswer(curPlayer, " ЭÖúid=%s,v=%s" % (assistPlayerID, assistHurtValue)) elif hurtType == ChConfig.Def_NPCHurtTypeTeam: #»ñµÃµ±Ç°¶ÓÎé curTeam = GameWorld.GetTeamManager().FindTeam(hurtID) if curTeam == None: GameWorld.DebugAnswer(curPlayer, "%s ¶ÓÎéID=%s,²»´æÔÚ, V=%s" % (index, hurtID, hurtValue)) else: GameWorld.DebugAnswer(curPlayer, "%s ¶ÓÎéID=%s,ÈËÊý=%s, V=%s" % (index, hurtID, curTeam.GetMemberCount(), hurtValue)) if isAssistHurt: mapTeamPlayerIDList = PlayerTeam.GetMapTeamPlayerIDList(hurtID) for teamPlayerID in mapTeamPlayerIDList: if not npcHurtList.IsNoAssistPlayer(teamPlayerID): continue playerHurtValue, assistPlayerHurtDict = npcHurtList.GetPlayerHurtDetail(teamPlayerID) GameWorld.DebugAnswer(curPlayer, " ·ÇЭid=%s,v=%s" % (teamPlayerID, playerHurtValue)) for assistPlayerID, assistHurtValue in assistPlayerHurtDict.items(): GameWorld.DebugAnswer(curPlayer, " ЭÖúid=%s,v=%s" % (assistPlayerID, assistHurtValue)) elif hurtType == ChConfig.Def_NPCHurtTypeNPC: GameWorld.DebugAnswer(curPlayer, "%s NPC=%s, V=%s" % (index, hurtID, hurtValue)) #Òì³£ÐÅÏ¢,Ìí¼ÓÉËѪÀàÐÍ´íÎó else: GameWorld.DebugAnswer(curPlayer, "%s Òì³£!Type=%s,ID=%s, V=%s" % (index, hurtType, hurtID, hurtValue)) return