本文整理汇总了C++中CChar::OnAttackedBy方法的典型用法代码示例。如果您正苦于以下问题:C++ CChar::OnAttackedBy方法的具体用法?C++ CChar::OnAttackedBy怎么用?C++ CChar::OnAttackedBy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CChar
的用法示例。
在下文中一共展示了CChar::OnAttackedBy方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: NPC_OnHearPetCmdTarg
bool CChar::NPC_OnHearPetCmdTarg(int iCmd, CChar *pSrc, CObjBase *pObj, const CPointMap &pt, LPCTSTR pszArgs)
{
ADDTOCALLSTACK("CChar::NPC_OnHearPetCmdTarg");
// Pet commands that required a target.
if ( m_fIgnoreNextPetCmd )
{
m_fIgnoreNextPetCmd = false;
return false;
}
if ( !NPC_PetCheckAccess(iCmd, pSrc) )
return true;
bool bSuccess = false;
CItem *pItemTarg = dynamic_cast<CItem *>(pObj);
CChar *pCharTarg = dynamic_cast<CChar *>(pObj);
switch ( iCmd )
{
case PC_ATTACK:
case PC_KILL:
{
if ( !pCharTarg || (pCharTarg == this) || (pCharTarg == pSrc) )
break;
bSuccess = pCharTarg->OnAttackedBy(pSrc, true);
if ( bSuccess )
bSuccess = Fight_Attack(pCharTarg, true);
break;
}
case PC_FOLLOW:
if ( !pCharTarg || (pCharTarg == this) )
break;
m_Act_Targ = pCharTarg->GetUID();
bSuccess = Skill_Start(NPCACT_FOLLOW_TARG);
break;
case PC_FRIEND:
{
if ( !pCharTarg || !pCharTarg->m_pPlayer || (pCharTarg == pSrc) )
{
Speak(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_CONFUSED));
break;
}
CItemMemory *pMemory = Memory_FindObjTypes(pCharTarg, MEMORY_FRIEND);
if ( pMemory )
{
pSrc->SysMessage(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_FRIEND_ALREADY));
break;
}
pSrc->SysMessagef(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_FRIEND_SUCCESS1), GetName(), pCharTarg->GetName());
pCharTarg->SysMessagef(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_FRIEND_SUCCESS2), pSrc->GetName(), GetName());
Memory_AddObjTypes(pCharTarg, MEMORY_FRIEND);
m_Act_Targ = pCharTarg->GetUID();
bSuccess = Skill_Start(NPCACT_FOLLOW_TARG);
break;
}
case PC_UNFRIEND:
{
if ( !pCharTarg || !pCharTarg->m_pPlayer )
{
Speak(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_CONFUSED));
break;
}
CItemMemory *pMemory = Memory_FindObjTypes(pCharTarg, MEMORY_FRIEND);
if ( !pMemory )
{
pSrc->SysMessage(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_UNFRIEND_NOTFRIEND));
break;
}
pSrc->SysMessagef(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_UNFRIEND_SUCCESS1), GetName(), pCharTarg->GetName());
pCharTarg->SysMessagef(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_UNFRIEND_SUCCESS2), pSrc->GetName(), GetName());
pMemory->Delete();
m_Act_Targ = pSrc->GetUID();
bSuccess = Skill_Start(NPCACT_FOLLOW_TARG);
break;
}
case PC_GO:
if ( !pt.IsValidPoint() )
break;
m_Act_p = pt;
bSuccess = Skill_Start(NPCACT_GOTO);
break;
case PC_GUARD:
if ( !pCharTarg || (pCharTarg == this) )
break;
pCharTarg->SysMessagef(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_GUARD_SUCCESS), GetName());
m_Act_Targ = pCharTarg->GetUID();
bSuccess = Skill_Start(NPCACT_GUARD_TARG);
break;
case PC_TRANSFER:
if ( !pCharTarg || !pCharTarg->m_pClient )
//.........这里部分代码省略.........
示例2: NPC_OnHearPetCmdTarg
bool CChar::NPC_OnHearPetCmdTarg( int iCmd, CChar *pSrc, CObjBase *pObj, const CPointMap &pt, LPCTSTR pszArgs )
{
ADDTOCALLSTACK("CChar::NPC_OnHearPetCmdTarg");
// Pet commands that required a target.
if ( m_fIgnoreNextPetCmd )
{
m_fIgnoreNextPetCmd = false;
return false;
}
switch ( iCmd )
{
case PC_FOLLOW:
case PC_STAY:
case PC_STOP:
{
// Pet friends can use only these commands
if ( Memory_FindObjTypes(pSrc, MEMORY_FRIEND) )
break;
}
default:
{
// All others commands are avaible only to pet owner
if ( !NPC_IsOwnedBy(pSrc, true) )
return false;
}
}
if ( IsStatFlag(STATF_DEAD) )
{
// Bonded NPCs still placed on world even when dead.
// They can listen to commands, but not to these commands below
if ( iCmd == PC_GUARD || iCmd == PC_GUARD_ME || iCmd == PC_ATTACK || iCmd == PC_KILL || iCmd == PC_TRANSFER || iCmd == PC_DROP || iCmd == PC_DROP_ALL )
return true;
}
bool bSuccess = false;
CItem *pItemTarg = dynamic_cast<CItem *>(pObj);
CChar *pCharTarg = dynamic_cast<CChar *>(pObj);
switch ( iCmd )
{
case PC_ATTACK:
case PC_KILL:
{
if ( !pCharTarg || pCharTarg == pSrc )
break;
bSuccess = pCharTarg->OnAttackedBy(pSrc, 1, true); // we know who told them to do this.
if ( bSuccess )
bSuccess = Fight_Attack(pCharTarg, true);
break;
}
case PC_FOLLOW:
if ( !pCharTarg )
break;
m_Act_Targ = pCharTarg->GetUID();
bSuccess = Skill_Start(NPCACT_FOLLOW_TARG);
break;
case PC_FRIEND:
{
if ( !pCharTarg || !pCharTarg->m_pPlayer || pCharTarg == pSrc )
{
Speak(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_CONFUSED));
break;
}
CItemMemory *pMemory = Memory_FindObjTypes(pCharTarg, MEMORY_FRIEND);
if ( pMemory )
{
pSrc->SysMessage(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_FRIEND_ALREADY));
break;
}
pSrc->SysMessagef(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_FRIEND_SUCCESS1), GetName(), pCharTarg->GetName());
pCharTarg->SysMessagef(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_FRIEND_SUCCESS2), pSrc->GetName(), GetName());
Memory_AddObjTypes(pCharTarg, MEMORY_FRIEND);
m_Act_Targ = pCharTarg->GetUID();
bSuccess = Skill_Start(NPCACT_FOLLOW_TARG);
break;
}
case PC_UNFRIEND:
{
if ( !pCharTarg || !pCharTarg->m_pPlayer )
{
Speak(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_CONFUSED));
break;
}
CItemMemory *pMemory = Memory_FindObjTypes(pCharTarg, MEMORY_FRIEND);
if ( !pMemory )
{
pSrc->SysMessage(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_UNFRIEND_NOTFRIEND));
break;
}
pSrc->SysMessagef(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_UNFRIEND_SUCCESS1), GetName(), pCharTarg->GetName());
pCharTarg->SysMessagef(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_UNFRIEND_SUCCESS2), pSrc->GetName(), GetName());
pMemory->Delete();
//.........这里部分代码省略.........
示例3: NPC_OnHearPetCmdTarg
bool CChar::NPC_OnHearPetCmdTarg( int iCmd, CChar * pSrc, CObjBase * pObj, const CPointMap & pt, LPCTSTR pszArgs )
{
ADDTOCALLSTACK("CChar::NPC_OnHearPetCmdTarg");
// Pet commands that required a target.
if ( iCmd == PC_FOLLOW || iCmd == PC_STAY || iCmd == PC_STOP )
{
// Pet friends can use only these commands
if ( ! NPC_IsOwnedBy( pSrc ) && Memory_FindObjTypes( pSrc, MEMORY_FRIEND ) == NULL )
return false;
}
else
{
// All others commands are avaible only to pet owner
if ( ! NPC_IsOwnedBy( pSrc, true ) )
return false;
}
if ( m_fIgnoreNextPetCmd == true )
{
m_fIgnoreNextPetCmd = false;
return(false);
}
bool fSuccess = false; // No they won't do it.
// Could be NULL
CItem * pItemTarg = dynamic_cast<CItem*>(pObj);
CChar * pCharTarg = dynamic_cast<CChar*>(pObj);
switch ( iCmd )
{
case PC_GO:
// Go to the location x,y
if ( ! pt.IsValidPoint())
break;
m_Act_p = pt;
fSuccess = Skill_Start( NPCACT_GOTO );
break;
case PC_GUARD:
if ( pObj == NULL )
break;
m_Act_Targ = pObj->GetUID();
fSuccess = Skill_Start( NPCACT_GUARD_TARG );
break;
case PC_TRANSFER:
// transfer ownership via the transfer command.
if ( pCharTarg == NULL )
break;
if ( pCharTarg->IsClient() )
{
if ( IsSetOF(OF_PetSlots) )
{
if ( !pCharTarg->FollowersUpdate(this, static_cast<short>(maximum(1, GetDefNum("FOLLOWERSLOTS", true, true))), true) )
{
pSrc->SysMessageDefault( DEFMSG_PETSLOTS_TRY_TRANSFER );
break;
}
}
fSuccess = NPC_PetSetOwner( pCharTarg );
}
break;
case PC_KILL:
case PC_ATTACK:
// Attack the target.
if ( pCharTarg == NULL )
break;
// refuse to attack friends.
if ( NPC_IsOwnedBy( pCharTarg, true ))
{
fSuccess = false; // take no commands
break;
}
fSuccess = pCharTarg->OnAttackedBy( pSrc, 1, true ); // we know who told them to do this.
if ( fSuccess )
{
fSuccess = Fight_Attack( pCharTarg, true );
}
break;
case PC_FOLLOW:
if ( pCharTarg == NULL )
break;
m_Act_Targ = pCharTarg->GetUID();
fSuccess = Skill_Start( NPCACT_FOLLOW_TARG );
break;
case PC_FRIEND:
// Not the same as owner,
if ( pCharTarg == NULL )
break;
Memory_AddObjTypes( pCharTarg, MEMORY_FRIEND );
break;
case PC_PRICE: // "PRICE" the vendor item.
if ( pItemTarg == NULL )
break;
if ( ! NPC_IsVendor())
//.........这里部分代码省略.........