Пример #1
0
//--------------------------------------------------------------------------------
// read from socket input stream
//--------------------------------------------------------------------------------
void Resource::read (SocketInputStream & iStream ) 
	throw(IOException , Error )
{
	__BEGIN_TRY

	//--------------------------------------------------------------------------------
	// read version
	//--------------------------------------------------------------------------------
	iStream.read(m_Version);

	//--------------------------------------------------------------------------------
	// read filename
	//--------------------------------------------------------------------------------
	BYTE szFilename;
	iStream.read(szFilename);

	if (szFilename == 0 )
		throw InvalidProtocolException("szFilename == 0");

	if (szFilename > maxFilename )
		throw InvalidProtocolException("too large filename length");

	iStream.read(m_Filename , szFilename);

	//--------------------------------------------------------------------------------
	// read filesize
	//--------------------------------------------------------------------------------
	iStream.read(m_FileSize);

	__END_CATCH
}
//////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////
void GCAddMonsterFromTransformation::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY

	BYTE name_length = 0;
		
	iStream.read(m_ObjectID);
	iStream.read(m_MonsterType);

	iStream.read(name_length);
	if (name_length != 0) iStream.read(m_MonsterName, name_length);

	iStream.read(m_MainColor);
	iStream.read(m_SubColor);
	iStream.read(m_X);
	iStream.read(m_Y);
	iStream.read(m_Dir);

	m_pEffectInfo = new EffectInfo();
	m_pEffectInfo->read(iStream);

	iStream.read(m_CurrentHP);
	iStream.read(m_MaxHP);

	__END_CATCH
}
Пример #3
0
void GCTimeLimitItemInfo::read(SocketInputStream& iStream)
	throw(ProtocolException, Error)
{
	__BEGIN_TRY

	BYTE	szInfo;

	iStream.read(szInfo);
	Assert(szInfo <= MAX_TIME_LIMIT_ITEM_INFO);

	m_TimeLimitItemInfos.clear();

	for (int count = 0; count < szInfo; ++count )
	{
		ObjectID_t objectID;
		DWORD time;
		iStream.read(objectID);
		iStream.read(time);

		if (m_TimeLimitItemInfos.find(objectID) == m_TimeLimitItemInfos.end() )
		{
			m_TimeLimitItemInfos[objectID] = time;
		}
	}

	__END_CATCH
}
Пример #4
0
//--------------------------------------------------------------------------------
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//--------------------------------------------------------------------------------
void CUBeginUpdate::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY

	static WORD GuildVersion = atoi(g_pConfig->getProperty("GuildVersion").c_str());
	static WORD KeyVersion = atoi(g_pConfig->getProperty("KeyVersion").c_str());
	static WORD InfoVersion = atoi(g_pConfig->getProperty("InfoVersion").c_str());

	iStream.read(m_Version);

	if (m_Version >= GuildVersion )
	{
		iStream.read(m_GuildVersion);
		m_Type = TWO_VERSION_KEY_FRONT;
	}
	else if (m_Version >= KeyVersion )
	{
		m_Type = ONE_VERSION_KEY_BACK;
	}
	else m_Type = OLD_UPDATE;

	if (m_Version >= InfoVersion )
	{
		iStream.read(m_InfoVersion);
	}

	__END_CATCH
}
Пример #5
0
void StoreInfo::read(SocketInputStream& iStream, bool toOther) throw(ProtocolException, Error)
{
	__BEGIN_TRY

	iStream.read(m_Open);
	if (toOther && m_Open == 0 ) return;

	BYTE szSign;
	iStream.read(szSign);

	if (szSign != 0 ) iStream.read(m_Sign, szSign);

	BYTE ItemNum;
	iStream.read(ItemNum);

	for (int i=0; i<ItemNum; ++i )
	{
		m_Items[i].read(iStream);
//		StoreItemInfo info;
//		info.read(iStream);
//		m_Items.push_back(info);
	}

	__END_CATCH
}
Пример #6
0
void CGSkillToInventory::read (SocketInputStream & iStream) 
	 throw(ProtocolException , Error)
{
	__BEGIN_TRY
		
#ifdef __USE_ENCRYPTER__
	SocketEncryptInputStream* pEIStream = dynamic_cast<SocketEncryptInputStream*>(&iStream);
    Assert(pEIStream!=NULL);

	if (pEIStream->getEncryptCode()!=0)
	{
		SHUFFLE_STATEMENT_5(pEIStream->getEncryptCode(),
							pEIStream->readEncrypt(m_SkillType),
							pEIStream->readEncrypt(m_ObjectID),
							pEIStream->readEncrypt(m_X),
							pEIStream->readEncrypt(m_Y),
							pEIStream->readEncrypt(m_TargetX));
		pEIStream->readEncrypt(m_TargetY);
		pEIStream->readEncrypt(m_InventoryItemObjectID);
	}
	else
#endif
	{
		iStream.read(m_SkillType);
		iStream.read(m_ObjectID);
		iStream.read(m_X);
		iStream.read(m_Y);
		iStream.read(m_TargetX);
		iStream.read(m_TargetY);
		iStream.read(m_InventoryItemObjectID);
	}

	__END_CATCH
}
Пример #7
0
void NicknameInfo::read(SocketInputStream& iStream)
	throw(ProtocolException, Error)
{
	__BEGIN_TRY

	iStream.read(m_NicknameID);
	iStream.read(m_NicknameType);

	switch (m_NicknameType )
	{
		case NICK_NONE:
			{
				break;
			}
		case NICK_BUILT_IN:
		case NICK_QUEST:
		case NICK_FORCED:
			{
				iStream.read(m_NicknameIndex);
				break;
			}
		case NICK_CUSTOM_FORCED:
		case NICK_CUSTOM:
			{
				BYTE szSTR;
				iStream.read(szSTR);
				iStream.read(m_Nickname, szSTR);
				break;
			}
		default:
			Assert(false);
	}

	__END_CATCH
}
Пример #8
0
void CGDissectionCorpse::read (SocketInputStream & iStream) 
	 throw(ProtocolException , Error)
{
	__BEGIN_TRY
		
#ifdef __USE_ENCRYPTER__
	SocketEncryptInputStream* pEIStream = dynamic_cast<SocketEncryptInputStream*>(&iStream);
    Assert(pEIStream!=NULL);

	if (pEIStream->getEncryptCode()!=0)
	{
		SHUFFLE_STATEMENT_4(pEIStream->getEncryptCode(),
							pEIStream->readEncrypt(m_ObjectID),
							pEIStream->readEncrypt(m_X),
							pEIStream->readEncrypt(m_Y),
							pEIStream->readEncrypt(m_IsPet));
	}
	else
#endif
	{
		iStream.read(m_ObjectID);
		iStream.read(m_X);
		iStream.read(m_Y);
		iStream.read(m_IsPet);
	}

	__END_CATCH
}
Пример #9
0
//////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////
void GCLearnSkillOK::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY
	iStream.read(m_SkillType);
	iStream.read(m_DomainType);
	__END_CATCH
}
Пример #10
0
//////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////
void GCDownSkillFailed::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY

	iStream.read(m_SkillType);
	iStream.read(m_Desc);

	__END_CATCH
}
Пример #11
0
//////////////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////////////
void GCRemoveStoreItem::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY

	iStream.read(m_OwnerObjectID);
	iStream.read(m_Index);

	__END_CATCH
}
Пример #12
0
void CGMakeItem::read (SocketInputStream & iStream) 
	 throw(ProtocolException , Error)
{
	__BEGIN_TRY
		
	iStream.read(m_ItemClass);
	iStream.read(m_ItemType);

	__END_CATCH
}
Пример #13
0
void CGRequestInfo::read (SocketInputStream & iStream) 
	 throw(ProtocolException , Error)
{
	__BEGIN_TRY
		
	iStream.read(m_Code);
	iStream.read(m_Value);

	__END_CATCH
}
Пример #14
0
void CGReloadFromQuickSlot::read (SocketInputStream & iStream) 
	 throw(ProtocolException , Error)
{
	__BEGIN_TRY
		
	iStream.read(m_ObjectID);
	iStream.read(m_SlotID);

	__END_CATCH
}
Пример #15
0
void CGTryJoinGuild::read (SocketInputStream & iStream) 
	 throw(ProtocolException , Error)
{
	__BEGIN_TRY
		
	iStream.read(m_GuildID);
	iStream.read(m_GuildMemberRank);

	__END_CATCH
}
Пример #16
0
//////////////////////////////////////////////////////////////////////
// Datagram 객체로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////
void SGModifyGuildOK::read (SocketInputStream& iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY

	iStream.read(m_GuildID);
	iStream.read(m_GuildState);

	__END_CATCH
}
Пример #17
0
//////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////
void GCStatusCurrentHP::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY
		
	iStream.read(m_ObjectID);
	iStream.read(m_CurrentHP);

	__END_CATCH
}
Пример #18
0
////////////////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
////////////////////////////////////////////////////////////////////////////////
void GCTradeRemoveItem::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY

	iStream.read(m_TargetObjectID);
	iStream.read(m_ItemObjectID);
		
	__END_CATCH
}
Пример #19
0
//////////////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////////////
void GCShopListMysterious::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY

	BYTE i      = 0;
	BYTE nTotal = 0;
	BYTE index  = 0;
	
	// read NPC id & version & rack type & number of item
	iStream.read(m_ObjectID);
	iStream.read(m_Version);
	iStream.read(m_RackType);
	iStream.read(nTotal);

	// read each item info
	for (i=0; i<nTotal; i++)
	{
		iStream.read(index);
		iStream.read(m_pBuffer[index].itemClass);
		iStream.read(m_pBuffer[index].itemType);

		m_pBuffer[index].bExist = true;
	}

	// read market condition
	iStream.read(m_MarketCondBuy);
	iStream.read(m_MarketCondSell);

	__END_CATCH
}
Пример #20
0
//////////////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////////////
void GCOtherStoreInfo::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY

	iStream.read(m_ObjectID);
	iStream.read(m_IsRequested);
	m_pInfo->read(iStream, true);

	__END_CATCH
}
Пример #21
0
//////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////
void GCUnburrowOK::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY

	iStream.read(m_X);
	iStream.read(m_Y);
	iStream.read(m_Dir);

	__END_CATCH
}
Пример #22
0
//////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////
void GCBloodDrainOK3::read (SocketInputStream & iStream )
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY
		
	// 최적화 작업시 실제 크기를 명시하도록 한다.
	iStream.read(m_ObjectID);
	iStream.read(m_TargetObjectID);

	__END_CATCH
}
Пример #23
0
void CGAddItemToCodeSheet::read (SocketInputStream & iStream) 
	 throw(ProtocolException , Error)
{
	__BEGIN_TRY
		
	iStream.read(m_ObjectID);
	iStream.read(m_X);
	iStream.read(m_Y);

	__END_CATCH
}
Пример #24
0
void GCSkillFailed1::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY

	iStream.read(m_SkillType);
	iStream.read(m_Grade);
	ModifyInfo::read(iStream);
	
	__END_CATCH
}
Пример #25
0
void CGShopRequestSell::read (SocketInputStream & iStream)
throw(ProtocolException , Error)
{
    __BEGIN_TRY

    iStream.read(m_ObjectID);
    iStream.read(m_ItemObjectID);
    iStream.read(m_OpCode);

    __END_CATCH
}
Пример #26
0
////////////////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
////////////////////////////////////////////////////////////////////////////////
void GCTradeMoney::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY

	iStream.read(m_TargetObjectID);
	iStream.read(m_Gold);
	iStream.read(m_Code);
		
	__END_CATCH
}
Пример #27
0
void GCShopBuyFail::read (SocketInputStream & iStream) 
	 throw(ProtocolException , Error)
{
	__BEGIN_TRY
		
	iStream.read(m_ObjectID);
	iStream.read(m_Code);
	iStream.read(m_Amount);

	__END_CATCH
}
Пример #28
0
//////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////
void GCMPRecoveryStart::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY
		
	// 최적화 작업시 실제 크기를 명시하도록 한다.
	iStream.read(m_Delay);
	iStream.read(m_Period);
	iStream.read(m_Quantity);

	__END_CATCH
}
Пример #29
0
//////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////
void GCFlagWarStatus::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY
		
	iStream.read(m_TimeRemain);
	iStream.read(m_FlagCount[0]);
	iStream.read(m_FlagCount[1]);
	iStream.read(m_FlagCount[2]);

	__END_CATCH
}
Пример #30
0
//////////////////////////////////////////////////////////////////////
// 입력스트림(버퍼)으로부터 데이타를 읽어서 패킷을 초기화한다.
//////////////////////////////////////////////////////////////////////
void GCAttack::read (SocketInputStream & iStream ) 
	 throw(ProtocolException , Error )
{
	__BEGIN_TRY

	iStream.read((char*)&m_ObjectID , szObjectID);
	iStream.read((char*)&m_X , szCoord);
	iStream.read((char*)&m_Y , szCoord);
	iStream.read((char*)&m_Dir , szDir);

	__END_CATCH
}