Skip to content
This repository was archived by the owner on Jun 11, 2024. It is now read-only.

Look data

Grigorij Eleskin edited this page Sep 1, 2017 · 1 revision

From server

void CCharacter::WriteLookData(WPACKET &WtPk, Char chLookType, Char chSynType)
{
	WRITE_CHAR(WtPk, chSynType);
	WRITE_SHORT(WtPk, m_SChaPart.sTypeID);
	if( m_CChaAttr.GetAttr(ATTR_CHATYPE) == enumCHACTRL_PLAYER && IsBoat() )
	{
		WRITE_CHAR( WtPk, 1); // �������
		WRITE_SHORT( WtPk, m_SChaPart.sPosID );
		WRITE_SHORT( WtPk, m_SChaPart.sBoatID );
		WRITE_SHORT( WtPk, m_SChaPart.sHeader );
		WRITE_SHORT( WtPk, m_SChaPart.sBody );
		WRITE_SHORT( WtPk, m_SChaPart.sEngine );
		WRITE_SHORT( WtPk, m_SChaPart.sCannon );
		WRITE_SHORT( WtPk, m_SChaPart.sEquipment );
		//WRITE_LONG( WtPk, m_SChaPart.dwBody );
		//WRITE_LONG( WtPk, m_SChaPart.dwHeader );
		//WRITE_LONG( WtPk, m_SChaPart.dwEngine );
		//WRITE_LONG( WtPk, m_SChaPart.dwFlag );
		//for( BYTE i = 0; i < BOAT_MAXNUM_MOTOR; i++ )
		//{
		//	WRITE_LONG( WtPk, m_SChaPart.dwMotor[i] );
		//}
	}
	else
	{		
		WRITE_CHAR( WtPk, 0); // �˽�ɫ�����
		WRITE_SHORT(WtPk, m_SChaPart.sHairID);
		SItemGrid *pItem;

		int nItemCnt = enumEQUIP_NUM;

		if(chLookType==LOOK_TEAM) nItemCnt = 3; // ������͵����֪ͨ, ֻ��Ҫ�ϰ�����Ϣ

		for (int i = 0; i < nItemCnt; i++)
		{
			pItem = m_SChaPart.SLink + i;
			if (chSynType == enumSYN_LOOK_CHANGE)
			{
				if (!pItem->IsChange())
				{
					WRITE_SHORT(WtPk, 0);
					continue;
				}
			}
			WRITE_SHORT(WtPk, pItem->sID);
			//	2008-8-7	yangyinyu	add	begin!
			WRITE_LONG(WtPk, pItem->dwDBID);
			//	2008-8-7	yangyinyu	add	end!
			if (pItem->sID == 0)
				continue;
			if (chSynType == enumSYN_LOOK_CHANGE)
			{
				WRITE_SHORT(WtPk, pItem->sEndure[0]);
				WRITE_SHORT(WtPk, pItem->sEnergy[0]);
				WRITE_CHAR(WtPk, pItem->IsValid() ? 1 : 0);
				continue;
			}
			else
			{
				WRITE_SHORT(WtPk, pItem->sNum);
				WRITE_SHORT(WtPk, pItem->sEndure[0]);
				WRITE_SHORT(WtPk, pItem->sEndure[1]);
				WRITE_SHORT(WtPk, pItem->sEnergy[0]);
				WRITE_SHORT(WtPk, pItem->sEnergy[1]);
				WRITE_CHAR(WtPk, pItem->chForgeLv);
				WRITE_CHAR(WtPk, pItem->IsValid() ? 1 : 0);
			}

			if(chLookType!=LOOK_SELF) // ����������֪ͨ, ������Ҫ�������Ϣ
			{
				WRITE_CHAR(WtPk, 0);
				continue;
			}
			WRITE_CHAR(WtPk, 1);

			WRITE_LONG(WtPk, pItem->GetDBParam(enumITEMDBP_FORGE));
			WRITE_LONG(WtPk, pItem->GetDBParam(enumITEMDBP_INST_ID));
			if (pItem->IsInstAttrValid())
			{
				WRITE_CHAR(WtPk, 1);
				for (int j = 0; j < defITEM_INSTANCE_ATTR_NUM; j++)
				{
					WRITE_SHORT(WtPk, pItem->sInstAttr[j][0]);
					WRITE_SHORT(WtPk, pItem->sInstAttr[j][1]);
				}
			}
			else
				WRITE_CHAR(WtPk, 0);
		}
	}
}

Clone this wiki locally