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 }
void CPartyQuestProcessor::SendQuestLimitTime( int nState, DWORD dwTime, u_long idParty ) { CParty* pParty = g_PartyMng.GetParty( idParty ); if( pParty ) { int i; for( i = 0 ; i < pParty->GetSizeofMember() ; ++i ) { CUser* pUsertmp = (CUser *)prj.GetUserByID( pParty->GetPlayerId( i ) ); if( IsValidObj( pUsertmp ) ) { pUsertmp->AddQuestTextTime( 1, nState, dwTime ); } } } }
void CPartyQuestProcessor::Process() { DWORD dwTickCount = GetTickCount(); int i; for( i = 0; i < MAX_GUILD_QUEST; i++ ) { PPARTYQUESTELEM pElem = &m_pElem[i]; if( pElem->nId == i ) { CParty* pParty = g_PartyMng.GetParty( pElem->idParty ); // if( !pGuild ) // continue; PARTYQUESTPROP* pProp = prj.GetPartyQuestProp( pElem->nId ); if( !pProp ) continue; // 제한 시간 지났다... if( pElem->dwEndTime < dwTickCount ) { switch( pElem->nProcess ) { case PQP_WORMON: { TRACE( "PQP_WORMON - r\n" ); CRect rect; rect.SetRect( pProp->x1, pProp->y2, pProp->x2, pProp->y1 ); // if( pParty ) // { // pParty->ReplaceLodestar( rect ); // } /* CMover* pWormon = prj.GetMover( pElem->objidWormon ); if( pWormon ) pWormon->Delete(); */ CPoint point; D3DXVECTOR3 vPos; point = rect.CenterPoint(); vPos.x = (float)( point.x ); vPos.z = (float)( point.y ); vPos.y = 100.0f; RemoveAllDynamicObj( pProp->dwWorldId, vPos, 500 ); RemovePartyQuest( pElem->nId ); } break; case PQP_GETITEM: { TRACE( "PQP_GETITEM - r\n" ); CRect rect; rect.SetRect( pProp->x1, pProp->y2, pProp->x2, pProp->y1 ); // if( pParty ) // { // pParty->ReplaceLodestar( rect ); // } CPoint point; D3DXVECTOR3 vPos; point = rect.CenterPoint(); vPos.x = (float)( point.x ); vPos.z = (float)( point.y ); vPos.y = 100.0f; RemoveAllDynamicObj( pProp->dwWorldId, vPos, 500 ); RemovePartyQuest( pElem->nId ); } break; default: break; } } else // 아직 열시미 잡고있는중이다~ { switch( pElem->nProcess ) { case PQP_WORMON: { TRACE( "PQP_WORMON - p\n" ); if( ++pElem->nCount < 10 ) continue; CRect rect; rect.SetRect( pProp->x1, pProp->y2, pProp->x2, pProp->y1 ); BOOL bsurvivor = FALSE; // is survivor exists? if( pParty ) { CUser* pUser; for( int k = 0 ; k < pParty->GetSizeofMember() ; k++ ) { u_long idPlayer = pParty->GetPlayerId( k ); pUser = (CUser*)prj.GetUserByID( idPlayer ); if( IsValidObj( pUser ) ) { POINT point = { (int)pUser->GetPos().x, (int)pUser->GetPos().z }; if( rect.PtInRect( point ) && pUser->IsLive() ) { bsurvivor = TRUE; break; } else { pUser->AddQuestTextTime( 0, 0, 0xffffffff ); } } } for( int k = 0 ; k < pParty->GetSizeofMember() ; k++ ) { u_long idPlayer = pParty->GetPlayerId( k ); pUser = (CUser*)prj.GetUserByID( idPlayer ); if( IsValidObj( pUser ) ) { POINT point = { (int)pUser->GetPos().x, (int)pUser->GetPos().z }; if( !rect.PtInRect( point ) ) { pUser->AddQuestTextTime( 0, 0, 0xffffffff ); } } } } if( !bsurvivor ) { // if( pParty ) // { // pParty->ReplaceLodestar( rect ); // } /* CMover* pWormon = prj.GetMover( pElem->objidWormon ); if( pWormon ) pWormon->Delete(); */ CPoint point; D3DXVECTOR3 vPos; point = rect.CenterPoint(); vPos.x = (float)( point.x ); vPos.z = (float)( point.y ); vPos.y = 100.0f; RemoveAllDynamicObj( pProp->dwWorldId, vPos, 500 ); RemovePartyQuest( pElem->nId ); } } break; case PQP_GETITEM: { TRACE( "PQP_GETITEM - p\n" ); CRect rect; rect.SetRect( pProp->x1, pProp->y2, pProp->x2, pProp->y1 ); BOOL bexist = FALSE; // is member here? if( pParty ) { CUser* pUser; for( int k = 0 ; k < pParty->GetSizeofMember() ; k++ ) { u_long idPlayer = pParty->GetPlayerId( k ); pUser = (CUser*)prj.GetUserByID( idPlayer ); if( IsValidObj( pUser ) ) { POINT point = { (int)pUser->GetPos().x, (int)pUser->GetPos().z }; if( rect.PtInRect( point ) ) { bexist = TRUE; break; } } } for( int k = 0 ; k < pParty->GetSizeofMember() ; k++ ) { u_long idPlayer = pParty->GetPlayerId( k ); pUser = (CUser*)prj.GetUserByID( idPlayer ); if( IsValidObj( pUser ) ) { POINT point = { (int)pUser->GetPos().x, (int)pUser->GetPos().z }; if( !rect.PtInRect( point ) ) { pUser->AddQuestTextTime( 0, 0, 0xffffffff ); } } } } if( !bexist ) { // if( pParty ) // { // pParty->ReplaceLodestar( rect ); // } CPoint point; D3DXVECTOR3 vPos; point = rect.CenterPoint(); vPos.x = (float)( point.x ); vPos.z = (float)( point.y ); vPos.y = 100.0f; RemoveAllDynamicObj( pProp->dwWorldId, vPos, 500 ); RemovePartyQuest( pElem->nId ); } } break; default: break; } } } } }