#!/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 PlayerTeam
|
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
|
|
isPyHurtList = 1
|
npcHurtList = NPCHurtManager.GetPlayerHurtList(curNPC)
|
if not npcHurtList:
|
npcHurtList = curNPC.GetPlayerHurtList()
|
isPyHurtList = 0
|
if isSort:
|
npcHurtList.Sort() #sortÒÔºóÉËѪÁбí´Ó´óµ½Ð¡ÅÅÐò
|
|
GameWorld.DebugAnswer(curPlayer, "ID=%s,NPCID=%s, ÉËѪÊý=%s,ÅÅÐò=%s,PY=%s"
|
% (curNPC.GetID(), curNPC.GetNPCID(), npcHurtList.GetHurtCount(), isSort, isPyHurtList))
|
if isPyHurtList:
|
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 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 hurtPlayer.GetHP() <= 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 isPyHurtList:
|
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 isPyHurtList:
|
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
|
|