Pet Parameter

03/23/2016 22:14 Offspringfan1234#1
Hello everybody!

I would like to know where in the source the pet parameters are added to the characters state, so that the server knows that a tiger give a bonus of one str to the char state. Does anyone know where this code is written in the source? I didnt find it...

Many thanks in advance,

Offi
03/24/2016 10:15 alfredico#2
pet.inc
03/24/2016 10:49 Blouflash#3
Code:
BOOL CPetProperty::LoadScript( LPCTSTR szFile )
{
	CScript s;
	if( s.Load( szFile ) == FALSE )
		return FALSE;

	s.GetToken();	// subject or FINISHED
	while( s.tok != FINISHED )
	{
		if( s.Token == _T( "AvailDestParam" ) )
		{
			// 	DST_STR
			int	nKind	= 0;
			s.GetToken();	// {
			DWORD dwDstParam	= s.GetNumber();
			while( *s.token != '}' )
			{
				ASSERT( nKind < PK_MAX );
				m_aPetAvailParam[nKind].dwDstParam	= dwDstParam;
				for( int i = 0; i < MAX_PET_AVAIL_LEVEL; i++ )
					m_aPetAvailParam[nKind].m_anParam[i]	= s.GetNumber();
				m_aPetAvailParam[nKind].m_dwItemId	= s.GetNumber();
				m_aPetAvailParam[nKind].m_adwIndex[0]	= s.GetNumber();
				m_aPetAvailParam[nKind].m_adwIndex[1]	= s.GetNumber();
				m_aPetAvailParam[nKind].m_adwIndex[2]	= s.GetNumber();
				m_aPetAvailParam[nKind++].m_dwProbability	= s.GetNumber();
				dwDstParam	= s.GetNumber();
			}
		}
		else if( s.Token == _T( "LevelupAvail" ) )
		{
			// 	10000	0	0	0	0	0	0	0	0
			int	nLevel	= (int)PL_D;
			s.GetToken();	// {{
			DWORD	dwProbability	= s.GetNumber();
			while( *s.token != '}' )
			{
				m_adwLevelupAvailLevelProbability[nLevel][0]	= dwProbability;
				for( int i = 1; i < MAX_PET_AVAIL_LEVEL; i++ )
				{
					m_adwLevelupAvailLevelProbability[nLevel][i]	= s.GetNumber();
					if( m_adwLevelupAvailLevelProbability[nLevel][i] > 0 )
						m_anLevelupAvailLevelMax[nLevel]	= i;
				}
				nLevel++;
				dwProbability	= s.GetNumber();
			}
		}
		else if( s.Token == _T( "FeedEnergy" ) )
		{
			int nIndex	= s.GetNumber();
			ASSERT( nIndex >= 0 && nIndex <= 1 );

			vector<FEEDENERGY>* pArr	= &m_aFeedEnergy[nIndex];
			// 	1	575	7	14
			FEEDENERGY	fe;
			s.GetToken();	// {
			fe.dwCostMin	= s.GetNumber();
			while( *s.token != '}' )
			{
				fe.dwCostMax	= s.GetNumber();
				fe.wEnergyMin	= s.GetNumber();
				fe.wEnergyMax	= s.GetNumber();
				pArr->push_back( fe );	// add
				fe.dwCostMin	= s.GetNumber();
			}
		}
		else if( s.Token == _T( "IncrementExp" ) )
		{
			//	100	// 0.1%	// 100000ºÐÀÇ 1 ±âÁØ
			int	nLevel	= 0;
			s.GetToken();	// {
			DWORD	dwIncrementExp	= s.GetNumber();
			while( *s.token != '}' )
			{
				ASSERT( nLevel < PL_S );
				m_adwIncrementExp[nLevel++]	= dwIncrementExp;
				dwIncrementExp	= s.GetNumber();
			}
		}
		else if( s.Token == _T( "MaxEnergy" ) )
		{
			//	250	// D	// ÃÖ´ë ±â·Â
			int	nLevel	= 0;
			s.GetToken();	// {
			DWORD	dwMaxEnergy	= s.GetNumber();
			while( *s.token != '}' )
			{
				ASSERT( nLevel <= PL_S );
				m_awMaxEnergy[nLevel++]	= (WORD)( dwMaxEnergy );
				dwMaxEnergy		= s.GetNumber();
			}
		}
		else if( s.Token == _T( "AddLifeProbability" ) )
		{
			// ¼ö¸í ȸº¹¾× È®·ü	// Ãß°¡ µÉ °æ¿ì ÇÕÀÌ 100ÀÌ µÇµµ·Ï È®Àå
			// 	50	// +1
			s.GetToken();	// {
			WORD wProbability	= s.GetNumber();
			while( *s.token != '}' )
			{
				m_awAddLifeProbability.push_back( wProbability );
				wProbability	= s.GetNumber();
			}
		}
		else if( s.Token == _T( "Penalty" ) )
		{
			// Pet ¼Òȯ ÈÄ ÇØÁ¦ ½Ã D~A·¹º§¿¡¼± °æÇèÄ¡¸¦ ÀÒ°Ô µÇ¸ç,
			// ÃÖ¼Ò 0%¿¡¼*´Â ´õ ÀÌ»ó °¨¼ÒÇÏÁö ¾Ê´Â´Ù. 
			// S·¹º§¿¡¼± HP°¡ °¨¼ÒÇϸç, ÃÖ¼Ò 5P ÀÌÇϷδ ´õ ÀÌ»ó °¨¼ÒÇÏÁö ¾Ê´Â´Ù. 
			s.GetToken();	// {
			FLOAT fExp	= s.GetFloat();
			int nLevel	= PL_D;
			while( *s.token != '}' )
			{
				m_aPenalty[nLevel].fExp		= fExp;
				m_aPenalty[nLevel].wEnergy	= (WORD)s.GetNumber();
				nLevel++;
				fExp	= s.GetFloat();
			}
		}
		s.GetToken();
	}

/*
#ifdef _DEBUG
	TRACE( "GetAvailParam\n" );
	for( int i = 0; i < PK_MAX; i++ )
	{
		PPETAVAILPARAM pPetAvailParam	= GetAvailParam( i );
		TRACE( "dwDstParam=%d, nBase=%d, nParam=%d\n", pPetAvailParam->dwDstParam, pPetAvailParam->nBase, pPetAvailParam->nParam );
	}
	TRACE( "GetLevelupAvailLevel\n" );
	// 0Àº ¸ðµÎ 0À̾î¾ß ÇÑ´Ù.
	for( i = PL_EGG; i < PL_MAX; i++ )
	{
		for( int j = 0; j < 100; j++ )
		{
			BYTE nAvailLevel	= GetLevelupAvailLevel( i );
			TRACE( "PetLevel=%d, AvailLevel=%d\n", i, nAvailLevel );
		}
	}

	TRACE( "\nGetFeedEnergy\n" );
	for( i = 1; i <= 100; i++ )
	{
		DWORD dwCost	= i * 120;
		WORD wEnergy	= GetFeedEnergy( dwCost );
		TRACE( "dwCost=%d, wEnergy=%d\n", dwCost, wEnergy );
	}
	TRACE( "\nGetIncrementExp\n" );
	for( i = PL_D; i < PL_MAX; i++ )
		TRACE( "nLevel=%d, IncrementExp=%d\n", i, GetIncrementExp( (PETLEVEL)i ) );

	TRACE( "\nGetMaxEnergy\n" );
	for( i = PL_D; i < PL_MAX; i++ )
		TRACE( "nLevel=%d, MaxEnergy=%d\n", i, GetMaxEnergy( (PETLEVEL)i ) );

	TRACE( "\nGetAddLife\n" );
	for( i = 0; i < 100; i++ )
	{
		TRACE( "AddLife=%d\n", GetAddLife() );
	}
#endif	// _DEBUG
*/
	return TRUE;
}
03/31/2016 00:33 Offspringfan1234#4
Well that didnt answer my question right? I also found that one but I would like to know the position where the stats are added to the character (means u can see increasing value in the 'h-menu' exactly that function i would like to know, I cant find it...

Thanks