本文整理汇总了C++中CObj::GetType方法的典型用法代码示例。如果您正苦于以下问题:C++ CObj::GetType方法的具体用法?C++ CObj::GetType怎么用?C++ CObj::GetType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CObj
的用法示例。
在下文中一共展示了CObj::GetType方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnChildNotify
BOOL CWndIndirectTalk::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
CWorld* pWorld = g_WorldMng();
CObj* pObj = pWorld->GetObjFocus();
if( pObj && pObj->GetType() == OT_MOVER )
{
switch( nID )
{
case WIDC_EDIT2: // 본문
if( message != EN_RETURN )
break;
case WIDC_BUTTON1:
{
CWndEdit* pWndEdit1 = (CWndEdit*)GetDlgItem( WIDC_EDIT1 );
CWndEdit* pWndEdit2 = (CWndEdit*)GetDlgItem( WIDC_EDIT2 );
LPCTSTR lpId = pWndEdit1->m_string;
LPCTSTR lpText = pWndEdit2->m_string;
CString string;
string.Format( "/id %s %s", lpId, lpText );
ParsingCommand( string.LockBuffer(), g_pPlayer );
string.UnlockBuffer();
pWndEdit2->Empty();
}
break;
}
}
if( nID == WTBID_CLOSE )
{
Destroy( TRUE );
return TRUE;
}
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
示例2: RemoveAllDynamicObj
void CPartyQuestProcessor::RemoveAllDynamicObj( DWORD dwWorldID, D3DXVECTOR3 vPos, int nRange )
{
CWorld* pWorld = g_WorldMng.GetWorld( dwWorldID );
if( !pWorld )
return;
CObj* pObj;
D3DXVECTOR3 vDist;
FOR_LINKMAP( pWorld, vPos, pObj, nRange, CObj::linkDynamic, nTempLayer )
{
if( pObj )
{
if( pObj->GetType() == OT_MOVER && ((CMover *)pObj)->IsPeaceful() == FALSE )
{
pObj->Delete();
}
}
}
END_LINKMAP
D3DXVECTOR3 vPos2 = D3DXVECTOR3( 6968.0f, 0, 3328.8f );
FOR_LINKMAP( pWorld, vPos, pObj, nRange, CObj::linkPlayer, nTempLayer )
{
if( pObj )
{
CUser* pUser = (CUser*)pObj;
pUser->AddQuestTextTime( 0, 0, 0xffffffff );
( (CUser*)pObj )->REPLACE( g_uIdofMulti, WI_WORLD_MADRIGAL, vPos2, REPLACE_NORMAL, nDefaultLayer );
}
}
END_LINKMAP
}
示例3: if
int CWndWorld::ControlFlying( DWORD dwMessage, CPoint point )
{
static float fTurnAngle = 0.0f;
static BOOL s_bTraceKeyed = 0, s_bSelectKeyed = 0, s_bTurbo2 = 0;
// static BOOL s_bFastTurn;
int nMsg = 0;
// BOOL bFlyKey;
BOOL bUp, bDown, bLeft, bRight;
BOOL bAcc = FALSE;
BOOL bTurbo;
// BOOL bFastTurn = FALSE;
BYTE nFrame = MAX_CORR_SIZE_150;
CMover* pMover = CMover::GetActiveMover();
bUp = g_bKeyTable[g_Neuz.Key.chUp];
bDown = g_bKeyTable['S'];
// 좌/우 회전
bLeft = g_bKeyTable[g_Neuz.Key.chLeft];
bRight = g_bKeyTable['D'];
// 급선회.
// bFastTurn = g_bKeyTable[ VK_SHIFT ];
// CMover* pMoverTarget = (CMover*)g_WorldMng.Get()->GetObjFocus() ;
// 가속 상태면 전진 명령 계속 보냄
bool fMoved = false;
bool fBehavior = false;
if( pMover->m_pActMover->IsStateFlag( OBJSTAF_ACC ) ) {
if( pMover->SendActMsg( OBJMSG_FORWARD ) == 1 ) {
fMoved = true;
}
}
else {
if( pMover->SendActMsg( OBJMSG_STAND ) == 1 ) {
fMoved = true;
}
}
//
bAcc = g_bKeyTable[VK_SPACE];
if( bAcc && !s_bAccKeyed ) // 키 누른순간에만 토글시킴.
{
if( pMover->m_pActMover->IsStateFlag( OBJSTAF_ACC ) ) // 가속중이었다면
{
pMover->SendActMsg( OBJMSG_ACC_STOP ); // 가속 멈춤
if( pMover->m_pActMover->IsActTurn() )
{
fMoved = true;
}
}
else
{
// 가속중이 아니었다면 가속 시킴.
if( pMover->SendActMsg( OBJMSG_ACC_START ) == 0 )
g_WndMng.PutString( prj.GetText( TID_GAME_AIRFUELEMPTY ) );
else
{
if( pMover->SendActMsg( OBJMSG_FORWARD ) == 1 )
fMoved = true;
}
}
}
s_bAccKeyed = bAcc;
bTurbo = g_bKeyTable[g_Neuz.Key.chWalk];
if( bTurbo && !s_bTurbo2 ) // 토글 방식.
{
if( pMover->m_pActMover->IsStateFlag( OBJSTAF_TURBO ) )
{
if( pMover->SendActMsg( OBJMSG_MODE_TURBO_OFF ) == 1 )
fMoved = true;
} else
{
if( pMover->SendActMsg( OBJMSG_MODE_TURBO_ON ) == 1 )
fMoved = true;
}
}
s_bTurbo2 = bTurbo;
if( pMover->m_pActMover->IsFly() )
{
if( g_bKeyTable[g_Neuz.Key.chTrace] && !s_bTraceKeyed )
{
CCtrl* pFocusObj = (CCtrl*)(pMover->GetWorld()->GetObjFocus());
if( pFocusObj && pFocusObj->GetType() == OT_MOVER )
{
CMover* pFocusMover = (CMover*)pFocusObj;
if( pMover->m_dwFlag & MVRF_TRACKING ) // 이미 실행중이면 해제.
{
pMover->m_dwFlag &= (~MVRF_TRACKING); // 추적모드해제.
pMover->m_idTracking = NULL_ID;
} else
{
// 비행중 추적모드.
pMover->m_dwFlag |= MVRF_TRACKING; // 추적모드.
pMover->m_idTracking = pFocusMover->GetId();
}
} else
//.........这里部分代码省略.........
示例4: _ProcessWall
// 싸이킥 월
void CCommonCtrl::_ProcessWall( void )
{
if( m_nCount == 0 )
{
#ifdef __CLIENT
m_pSfxModel = new CSfxModel;
m_pSfxModel2 = new CSfxModel;
m_pSfxModel->SetSfx( "sfx_sklpsypsychicwall02" );
m_pSfxModel2->SetSfx( "sfx_sklpsypsychicwall04" );
#endif
}
D3DXVECTOR3 vPos = GetPos();
#ifndef __CLIENT
CObj* pObj;
BOOL bApply;
#endif //__CLIENT
int nRange = 4;
// 일반적으로 fDepth가 가장 길기때문에 검사 영역은 fDepth로 했다.
float fDepth = 3;
if( fDepth <= 4.0f ) nRange = 4;
else if( fDepth <= 8.0f ) nRange = 8;
else if( fDepth <= 16.0f ) nRange = 16;
else nRange = 32;
#ifdef __WORLDSERVER
CMover *pAttacker = prj.GetMover( m_idAttacker );
if( IsInvalidObj( pAttacker ) ) // 일단 어태커가 사라지면 컨트롤도 사라지게 하자.
{
DestroyWall();
return;
}
int nMin = m_pAddSkillProp->dwAbilityMin + (pAttacker->GetLevel() + (pAttacker->GetInt() / 10) * (int)m_pAddSkillProp->dwSkillLvl);
int nMax = m_pAddSkillProp->dwAbilityMax + (pAttacker->GetLevel() + (pAttacker->GetInt() / 10) * (int)m_pAddSkillProp->dwSkillLvl);
int nDamage = xRandom( nMin, nMax );
#if __VER >= 9 // __SKILL_0706
int nMinPVP = m_pAddSkillProp->dwAbilityMinPVP + ( pAttacker->GetLevel() + ( pAttacker->GetInt() / 10 ) * (int)m_pAddSkillProp->dwSkillLvl );
int nMaxPVP = m_pAddSkillProp->dwAbilityMaxPVP + ( pAttacker->GetLevel() + ( pAttacker->GetInt() / 10 ) * (int)m_pAddSkillProp->dwSkillLvl );
int nDamagePVP = xRandom( nMinPVP, nMaxPVP );
#endif // __SKILL_0706
int nHitPoint = 0;
int nTargetHP = 0;
FOR_LINKMAP( GetWorld(), vPos, pObj, nRange, CObj::linkDynamic, GetLayer() )
{
bApply = FALSE;
if( pObj->GetType() == OT_MOVER ) // 대상이 무버일때만.
{
CMover *pTarget = (CMover *)pObj;
if( pTarget->IsPeaceful() == FALSE ) // NPC가 아닌경우만 적용
bApply = TRUE;
#if __VER >= 8 // #ifdef __JHMA_VER_8_5_1 // 8.5차 경비병 범위스킬 공격효과 불가로 수정 World
if( pAttacker->IsPlayer() && pAttacker->IsChaotic() == FALSE && pTarget->GetProp()->dwClass == RANK_GUARD )
bApply = FALSE;
#endif // #endif // __JHMA_VER_8_5_1 // 8.5차 경비병 범위스킬 공격효과 불가로 수정 World
if( bApply )
{
if( IsValidObj( pTarget ) && pTarget->IsLive() )
{
if( pObj->IsRangeObj( vPos, 1.0f ) )
{
if( IsValidObj(pAttacker) )
{
nTargetHP = pTarget->GetHitPoint();
nHitPoint = nTargetHP - nDamage;
if( nHitPoint > 0 )
{
pTarget->m_nHitPoint = nHitPoint;
g_UserMng.AddDamage( pTarget, pAttacker->GetId(), nDamage, AF_GENERIC );
}
else
{
pAttacker->SubExperience( pTarget ); // pTarget를 죽이고 난후의 m_pAttacker 경험치 처리.
pTarget->DropItemByDied( pAttacker ); // 몬스터였다면 아이템 드랍.
pAttacker->m_nAtkCnt = 0; // 타겟을 죽였으면 공격자의 어택카운트 클리어
pTarget->DoDie( pAttacker ); // pTarget 죽어라.
pTarget->m_nHitPoint = 0;
}
}
m_nLife ++; // 부딪힐때마다 카운트 올라감
if( m_nLife >= (int)(m_pAddSkillProp->dwSkillLvl / 2) )
DestroyWall();
// 뒤로 밀리기 처리.
#if __VER >= 10 // __AI_0711
if( pTarget->IsRank( RANK_MIDBOSS ) == FALSE )
#endif // __AI_0711
{
FLOAT fPushAngle = pTarget->GetAngle() + 180.0f;
FLOAT fPower = 0.825f;
AngleToVectorXZ( &pTarget->m_pActMover->m_vDeltaE, fPushAngle, fPower );
g_UserMng.AddPushPower( pTarget, pTarget->GetPos(), pTarget->GetAngle(), fPushAngle, fPower );
}
}
//.........这里部分代码省略.........
示例5: GetSkill
//
// 외부에서 UseSkill을 명령할땐 이것으로 호출하자.
// sutType : 스킬을 사용할때 스킬큐에서 연타로 사용한건가 일반적인 사용을 한건가.c
//
int CMover::CMD_SetUseSkill( OBJID idTarget, int nSkillIdx, SKILLUSETYPE sutType )
{
m_oaCmd = OBJACT_NONE;
TRACE( "CMD_SetUseSkill( " );
if( m_pActMover->IsFly() ) return 0; // 비행중엔 스킬사용 금지.
if( m_pActMover->IsActAttack() ) return 0;
if( m_pActMover->IsActJump() ) return 0; // 점프중엔 사용금지.
if( m_pActMover->GetState() & OBJSTA_DMG_FLY_ALL ) return 0; // 데미지 플라이중엔 스킬사용금지.
if( IsDie() ) return 0; // 죽었을때 사용금지.
LPSKILL pSkill = GetSkill( 0, nSkillIdx ); // this가 가진 스킬중 nIdx에 해당하는 스킬을 꺼낸다.
if( pSkill == NULL )
{
Error( "CMD_SetUseSkill : %s skill(%d) not found", m_szName, nSkillIdx );
return 0; //
}
ItemProp* pSkillProp = pSkill->GetProp();
if( pSkillProp == NULL ) // JobSkill 리스트에서 꺼낸 스킬의 프로퍼티를 꺼냄.
{
Error( "CMD_SetUseSkill : %s. skill(%d) property not found", m_szName, pSkill->dwSkill );
return 0; //
}
if( IsPlayer() && IsStateMode( STATE_BASEMOTION_MODE ) ) // 시전중(준비시간)일땐 사용금지.
{
#ifdef __CLIENT
g_DPlay.SendStateModeCancel( STATE_BASEMOTION_MODE, STATEMODE_BASEMOTION_CANCEL );
#endif
return 0;
}
// 도달범위 - 얼마나 가까이 근접해야하는가. 미터단위
float fArrivalRange = 0.0f;
fArrivalRange = GetAttackRange( pSkillProp->dwAttackRange );
switch( pSkillProp->dwUseChance )
{
case WUI_NOW: // 타겟팅과 상관없이 자기자신에게 쓰는 방식.
idTarget = GetId();
break;
case WUI_TARGETINGOBJ: // 셀렉트 되어 있는 타겟에게 사용.
{
#ifdef __CLIENT
CObj *pFocusObj = GetWorld()->GetObjFocus();
if( pFocusObj && pFocusObj->GetType() == OT_MOVER )
idTarget = ((CMover*)pFocusObj)->GetId();
#else
if( IsPlayer() )
idTarget = ((CUser *)this)->m_idSetTarget;
#endif // __CLIENT
}
break;
#ifdef __CLIENT
case WUI_TARGETCURSORPTZ:
{
idTarget = GetId();
CRect rect;
D3DXVECTOR3 vPos;
CWndWorld* pWndWorld;
pWndWorld = (CWndWorld*)g_WndMng.GetWndBase( APP_WORLD );
rect = pWndWorld->GetClientRect();
if( GetWorld()->ClientPointToVector( NULL, rect, pWndWorld->GetMousePoint(), &GetWorld()->m_matProj, &GetWorld()->GetCamera()->m_matView, &vPos, TRUE ) )
{
#ifdef __SKILL0517
AddSkillProp* pAddSkillProp = prj.GetAddSkillProp( pSkillProp->dwSubDefine, GetSkillLevel( pSkill ) ); // UseSkill에서 사용한 스킬의 프로퍼티 꺼냄
#else // __SKILL0517
AddSkillProp* pAddSkillProp = prj.GetAddSkillProp( pSkillProp->dwSubDefine, pSkill->dwLevel ); // UseSkill에서 사용한 스킬의 프로퍼티 꺼냄
#endif // __SKILL0517
if( pAddSkillProp == NULL )
{
Error( "CMover::OnMagicSkill : %s. add스킬(%d)의 프로퍼티가 없다.", m_szName, nSkillIdx );
return 0; // property not found
}
FLOAT fDist;
FLOAT fMaxDistSq;
D3DXVECTOR3 vDist;
fMaxDistSq = (float)pAddSkillProp->dwSkillRange;
fMaxDistSq *= fMaxDistSq;
vDist = vPos - GetPos();
fDist = D3DXVec3LengthSq( &vDist );
SetAngle( GetDegree(vPos, GetPos()) ); // 목표쪽으로 몸을 돌림.
// 텔레포트 할 위치가 멀경우 현제 스킬에 해당하는 거리로 바꿔준다
if( fDist > fMaxDistSq )
{
FLOAT fLength;
D3DXVECTOR3 vDirNor;
D3DXVec3Normalize( &vDirNor, &vDist );
//.........这里部分代码省略.........