本文整理汇总了C++中CCharacter::IsEnemy方法的典型用法代码示例。如果您正苦于以下问题:C++ CCharacter::IsEnemy方法的具体用法?C++ CCharacter::IsEnemy怎么用?C++ CCharacter::IsEnemy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CCharacter
的用法示例。
在下文中一共展示了CCharacter::IsEnemy方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: do_Attack
//.........这里部分代码省略.........
{
CNetMsg::SP rmsg(new CNetMsg);
SysMsg(rmsg, MSG_SYS_DO_NOT_ATTACK_IMMOTAL);
SEND_Q(rmsg, pc->m_desc);
return;
}
// 대상이 NPC일때만 멀티 공격
if (!IS_NPC(tch))
packet->multicount = 0;
// 최소한 공격 1회 이상
bool bAttacked = false;
bool bAttackedPet = false; // 애완동물은 NPC상대시 레벨 검사
// 멀티 공격 검사용
std::set<int> listMultiTarget;
while (tch)
{
bool bBlocked = false;
// NPC를 공격할 때에만 속성맵 검사 (프리PK 지역이 아닐때만)
if ( IS_NPC(tch) && !(tch->GetMapAttr() & MATT_FREEPKZONE) )
{
char tempy = GET_YLAYER(ch);
bBlocked = (!area->IsNotBlocked(ch, tch, true, tempy));
}
int ret = 0;
if (!bBlocked)
{
if (IS_PC(ch) && ch->IsEnemy(tch))
{
bAttacked = true;
#ifdef MONSTER_AI
if (tch != NULL && IS_NPC(tch))
{
CNPC * pTemp = TO_NPC(tch);
if (pTemp != NULL)
{
if (ch->m_level - tch->m_level <= 5 && pTemp->m_proto->m_index != 303 /*악마의 묘지*/)
{
bAttackedPet = true;
}
if (pTemp->m_bMoveLock || pTemp->m_bMoveToRegen)
{
pTemp->m_bMoveToRegen = false;
pTemp->m_bMoveLock = false;
pTemp->m_pulseMoveLock = 0;
pTemp->m_postregendelay = 0;
}
}
}
#else
if (tch != NULL && IS_NPC(tch) && ch->m_level - tch->m_level <= 5)
{
CNPC * pTemp = TO_NPC(tch);
if (pTemp != NULL && pTemp->m_proto->m_index != 303 /*악마의 묘지*/)
{
bAttackedPet = true;
}
}
#endif