本文整理汇总了C++中CAr::GetOffset方法的典型用法代码示例。如果您正苦于以下问题:C++ CAr::GetOffset方法的具体用法?C++ CAr::GetOffset怎么用?C++ CAr::GetOffset使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CAr
的用法示例。
在下文中一共展示了CAr::GetOffset方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Serialize
void CPartyMng::Serialize( CAr & ar )
{
#ifndef __WORLDSERVER
m_AddRemoveLock.Enter( theLineFile ); // lock1
#endif // __WORLDSERVER
if( ar.IsStoring() )
{
ar << m_id;
int nCount = 0;
u_long uOffset = ar.GetOffset();
ar << nCount;
for( C2PartyPtr::iterator i = m_2PartyPtr.begin(); i != m_2PartyPtr.end(); ++i )
{
CParty* pParty = (CParty*)i->second;
pParty->Serialize( ar );
nCount++;
}
int nBufSize1;
LPBYTE lpBuf1 = ar.GetBuffer( &nBufSize1 );
*(UNALIGNED int*)( lpBuf1 + uOffset ) = nCount;
}
else
{
int nCount;
ar >> m_id;
ar >> nCount;
for( int i = 0 ; i < nCount ; i++ )
{
CParty* pParty = new CParty;
// pParty->Lock();
pParty->Serialize( ar );
m_2PartyPtr.insert( C2PartyPtr::value_type( pParty->m_uPartyId, pParty ) );
// pParty->Unlock();
}
}
#ifndef __WORLDSERVER
m_AddRemoveLock.Leave( theLineFile ); // unlock1
#endif // __WORLDSERVER
}
示例2: Serialize
void CUserTaskBar::Serialize( CAr &ar )
{
if( ar.IsStoring() )
{
int nCount = 0;
u_long uOffset = ar.GetOffset();
ar << nCount;
for( int i = 0; i < MAX_SLOT_APPLET; i++ )
{
if( m_aSlotApplet[i].m_dwShortcut != SHORTCUT_NONE ) // 값이 들어있는지 검사
{
ar << i;
ar << m_aSlotApplet[i].m_dwShortcut << m_aSlotApplet[i].m_dwId << m_aSlotApplet[i].m_dwType;
ar << m_aSlotApplet[i].m_dwIndex << m_aSlotApplet[i].m_dwUserId << m_aSlotApplet[i].m_dwData;
if( m_aSlotApplet[i].m_dwShortcut == SHORTCUT_CHAT)
ar.WriteString( m_aSlotApplet[i].m_szString );
nCount++;
}
}
int nBufSize;
LPBYTE lpBuf = ar.GetBuffer( &nBufSize );
*(UNALIGNED int*)( lpBuf + uOffset ) = nCount;
nCount = 0;
uOffset = ar.GetOffset();
ar << nCount;
for( i = 0; i < MAX_SLOT_ITEM_COUNT; i++ )
{
for( int j = 0; j < MAX_SLOT_ITEM; j++ )
{
if( m_aSlotItem[i][j].m_dwShortcut != SHORTCUT_NONE ) // 값이 들어있는지 검사
{
ar << i << j;
ar << m_aSlotItem[i][j].m_dwShortcut << m_aSlotItem[i][j].m_dwId << m_aSlotItem[i][j].m_dwType;
ar << m_aSlotItem[i][j].m_dwIndex << m_aSlotItem[i][j].m_dwUserId << m_aSlotItem[i][j].m_dwData;
if( m_aSlotItem[i][j].m_dwShortcut == SHORTCUT_CHAT)
ar.WriteString( m_aSlotItem[i][j].m_szString );
nCount++;
}
// m_aSlotItem[i][j]이 유효한 숏컷이라면
// ar << i << j << m_aSlotItem[i][j]의 필요한 정보 저장
// if( m_aSlotItem[i][j].m_dwType == SHORTCUT_CHAT )
// ar.WriteString(
}
}
lpBuf = ar.GetBuffer( &nBufSize );
*(UNALIGNED int*)( lpBuf + uOffset ) = nCount;
nCount = 0;
uOffset = ar.GetOffset();
ar << nCount;
for( i = 0; i < MAX_SLOT_QUEUE; i++ )
{
if( m_aSlotQueue[i].m_dwShortcut != SHORTCUT_NONE ) // 값이 들어있는지 검사
{
ar << i;
ar << m_aSlotQueue[i].m_dwShortcut << m_aSlotQueue[i].m_dwId << m_aSlotQueue[i].m_dwType;
ar << m_aSlotQueue[i].m_dwIndex << m_aSlotQueue[i].m_dwUserId << m_aSlotQueue[i].m_dwData;
nCount++;
}
// m_aSlotQueue[i]이 유효한 숏컷이라면
// ar << i << m_aSlotQueue[i]의 필요한 정보 저장
}
ar << m_nActionPoint;
lpBuf = ar.GetBuffer( &nBufSize );
*(UNALIGNED int*)( lpBuf + uOffset ) = nCount;
}
else
{
memset( m_aSlotApplet, 0, sizeof(m_aSlotApplet) );
memset( m_aSlotItem, 0, sizeof(m_aSlotItem) );
memset( m_aSlotQueue, 0, sizeof(m_aSlotQueue) );
int nCount, nIndex;
ar >> nCount; // applet count
for( int i = 0; i < nCount; i++ )
{
ar >> nIndex;
ar >> m_aSlotApplet[nIndex].m_dwShortcut >> m_aSlotApplet[nIndex].m_dwId >> m_aSlotApplet[nIndex].m_dwType;
ar >> m_aSlotApplet[nIndex].m_dwIndex >> m_aSlotApplet[nIndex].m_dwUserId >> m_aSlotApplet[nIndex].m_dwData;
if( m_aSlotApplet[nIndex].m_dwShortcut == SHORTCUT_CHAT)
ar.ReadString( m_aSlotApplet[nIndex].m_szString, MAX_SHORTCUT_STRING );
// ar >> m_aSlotApplet[nIndex]에 아까 넣은 필요한 정보를 넣는다.
}
ar >> nCount; // slot item count
int nIndex2;
for( i = 0; i < nCount; i++ )
{
ar >> nIndex >> nIndex2; // index
ar >> m_aSlotItem[nIndex][nIndex2].m_dwShortcut >> m_aSlotItem[nIndex][nIndex2].m_dwId >> m_aSlotItem[nIndex][nIndex2].m_dwType;
ar >> m_aSlotItem[nIndex][nIndex2].m_dwIndex >> m_aSlotItem[nIndex][nIndex2].m_dwUserId >> m_aSlotItem[nIndex][nIndex2].m_dwData;
if( m_aSlotItem[nIndex][nIndex2].m_dwShortcut == SHORTCUT_CHAT)
ar.ReadString( m_aSlotItem[nIndex][nIndex2].m_szString, MAX_SHORTCUT_STRING );
}
ar >> nCount;
for( i = 0; i < nCount; i++ )
//.........这里部分代码省略.........
示例3: Serialize
//.........这里部分代码省略.........
ar << m_vMarkingPos;
ar << m_nQuestSize;
ar.Write( m_aQuest, sizeof(QUEST) * m_nQuestSize );
ar << m_nCompleteQuestSize;
ar.Write( m_aCompleteQuest, sizeof(WORD) * m_nCompleteQuestSize );
#if __VER >= 15 // __IMPROVE_QUEST_INTERFACE
ar << m_nCheckedQuestSize;
ar.Write( m_aCheckedQuest, sizeof(WORD) * m_nCheckedQuestSize );
#endif // __IMPROVE_QUEST_INTERFACE
ar << m_idMurderer;
ar << (short)m_nRemainGP;
ar << (short)0;
{
for( int i = 0; i < MAX_HUMAN_PARTS; i++ )
ar << m_aEquipInfo[i].dwId;
}
ar.Write( (void*)m_aJobSkill, sizeof(SKILL) * ( MAX_SKILL_JOB ) );
ar << (BYTE)m_nCheerPoint << m_dwTickCheer - GetTickCount();
ar << m_nSlot;
for( int k = 0 ; k < 3 ; ++k )
ar << m_dwGoldBank[k];
for( k = 0 ; k < 3 ; ++k )
ar << m_idPlayerBank[k];
ar << m_nPlusMaxHitPoint;
ar << m_nAttackResistLeft;
ar << m_nAttackResistRight;
ar << m_nDefenseResist;
#if __VER >= 8 // __CSC_VER8_5
ar << m_nAngelExp;
ar << m_nAngelLevel;
#endif // __CSC_VER8_5
m_Inventory.Serialize( ar );
for( k = 0 ; k < 3 ; ++k )
m_Bank[k].Serialize( ar );
#if __VER >= 9 // __PET_0410
ar << GetPetId(); // 소환 중인 펫 인벤토리 위치
#endif // __PET_0410
#if __VER >= 11 // __SYS_POCKET
m_Pocket.Serialize( ar );
#endif // __SYS_POCKET
#ifdef __JEFF_9_20
ar << m_dwMute;
#endif // __JEFF_9_20
#if __VER >= 13 // __HONORABLE_TITLE // 달인
for( int i = 0 ; i < MAX_HONOR_TITLE ; ++i )
{
ar << m_aHonorTitle[i];
}
#endif // __HONORABLE_TITLE // 달인
#if __VER >= 15 // __CAMPUS
ar << m_idCampus;
ar << m_nCampusPoint;
#endif // __CAMPUS
}
else if( CObj::GetMethod() == METHOD_EXCLUDE_ITEM )
{
# if defined (__WORLDSERVER) || defined(__CLIENT)
ar.WriteString( m_vtInfo.GetTitle() );
# endif
u_char uSize = 0;
u_long uOffset = ar.GetOffset();
ar << uSize;
for( u_char uParts = 0; uParts < MAX_HUMAN_PARTS; uParts++ )
{
CItemElem* pItemElem = m_Inventory.GetEquip( uParts );
if( pItemElem )
{
uSize++;
ar << uParts;
ar << (u_short)pItemElem->m_dwItemId;
ar << pItemElem->m_byFlag;
}
}
GETBLOCK( ar, pBlock, nBlockSize );
*(UNALIGNED u_char*)( pBlock + uOffset ) = uSize;
#if __VER >= 9 // __PET_0410
DWORD dwPetId = NULL_ID;
#ifdef __PET_1024
char* pszPetName = "";
#endif // __PET_1024
CItemElem* pItemElem = GetPetItem();
if( pItemElem )
{
dwPetId = MAKELONG( (WORD)pItemElem->m_pPet->GetIndex(), (WORD)pItemElem->m_pPet->GetLevel() );
#ifdef __PET_1024
pszPetName = const_cast<char*>( pItemElem->m_pPet->GetName() );
#endif // __PET_1024
}
ar << dwPetId;
#ifdef __PET_1024
ar.WriteString( pszPetName );
#endif // __PET_1024
#endif // __PET_0410
}
}