本文整理汇总了C++中CMonster::Distance方法的典型用法代码示例。如果您正苦于以下问题:C++ CMonster::Distance方法的具体用法?C++ CMonster::Distance怎么用?C++ CMonster::Distance使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CMonster
的用法示例。
在下文中一共展示了CMonster::Distance方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: IsValidOper
static int IsValidOper( CShopManager *pShopMgr, CMessage *pMsg, const CGUID &npcID, long lShopID )
{
CPlayer *pPlayer = pMsg->GetPlayer();
CServerRegion *pRegion = pMsg->GetRegion();
if( pPlayer == NULL || pRegion == NULL )
{
return -2;
}
if( pPlayer->IsDied() )
{
return -1;
}
if( pPlayer->GetCurrentProgress() != CPlayer::PROGRESS_FBUSINESS )
{
PutoutLog( LOG_FILE, LT_WARNING, "The Player [%s] is not in PROGRESS_FBUSINESS state.",
pPlayer->GetName() );
return -1;
}
SetPlayerState( pPlayer, true );
CMonster *pNPC = (CMonster*) pRegion->FindAroundObject( pPlayer, TYPE_MONSTER, npcID );
if( pNPC == NULL )
{
return -1;
}
CShop *pShop = pShopMgr->GetShop( lShopID );
if( pShop == NULL )
{
return -1;
}
// NPC是否与商店对应
if( strcmp( pNPC->GetOriginName(), pShop->GetNpcOrigName() ) != 0 )
{
return -1;
}
if( pNPC->Distance( pPlayer ) > 10 )
{
return -1;
}
return 0;
}
示例2: RandomRun
bool MonsterAI::RandomRun()
{
CMonster *monster = static_cast<CMonster*>(GetOwner());
if (monster == NULL)
{
LogError(AI_MODULE, "MosterAI has no owner object...");
}
assert(monster);
if(random(10000) < monster->GetMoveRandomValue())
{
long dir = 0;
long curX = monster->GetTileX();
long curY = monster->GetTileY();
long dis = monster->Distance(curX, curY, m_BornPos.x, m_BornPos.y);
if(dis > monster->GetPeaceMoveRange())
{
dir = GetLineDir(curX, curY, m_BornPos.x, m_BornPos.y);
long gdir = (8 - dir) % 8;
if(gdir >= 2 || gdir <= 6)
{
dir = (dir + random(3) - 1 + 8) % 8;
}
}
else
{
dir = random(8);
}
long maxRunTimes = monster->GetMaxRunTimes();
long minRunTimes = monster->GetMinRunTimes();
AI_EVENT_SENDER(this).MoveByStep(dir, random(maxRunTimes - minRunTimes) + minRunTimes);
// drive the ai
Resume(0);
}
else
{
Stand(monster->GetStopFrame());
}
return true;
}