Problem load (source)

02/04/2014 00:45 SourceShop#1
Hello all,

I have problem with load file.

Code:
BOOL CProject::LoadScriptPremium( LPCTSTR lpszFileName )
{
	CScript scanner;
	if( scanner.Load( lpszFileName, FALSE ) == FALSE )
	{
		Error( "%s not found", lpszFileName );
		return FALSE;
	}
	while( scanner.tok != FINISHED )
	{
		if( scanner.Token == _T( "COLOR_PREMIUM" ) )
		{
			m_Premium.dwColorPremium = scanner.GetNumber();
		}
		else if ( scanner.Token == _T( "GOLD_PREMIUM" ) )
		{
			m_Premium.mGoldPremium = scanner.GetNumber();
		}
		else if (scanner.Token == _T( "EXP_PREMIUM" ) )
		{
			m_Premium.mExpPremium = scanner.GetNumber();
		}
		else if (scanner.Token == _T( "DROP_PREMIUM" ) )
		{
			m_Premium.mDropPremium = scanner.GetNumber();
		}
		scanner.GetToken();
	}
        Error("test 1");
	return TRUE;
	Error("test 2");
}
The wordserver and Neuz , generates the error test 1 but not test 2, there's a reading problem and I do not see my error: s, So as there's a problem reading my Neuz not want to connect.


Thank you for helping me

Krust
02/04/2014 03:44 Avalion#2
After looking at some other functions, try making the scanner GetToken before the while.

Code:
BOOL CProject::LoadScriptPremium( LPCTSTR lpszFileName )
{
	CScript scanner;
	if( scanner.Load( lpszFileName, FALSE ) == FALSE )
	{
		Error( "%s not found", lpszFileName );
		return FALSE;
	}

	scanner.GetToken();
	while( scanner.tok != FINISHED )
	{
		if( scanner.Token == _T( "COLOR_PREMIUM" ) )
		{
			m_Premium.dwColorPremium = scanner.GetNumber();
		}
		else if ( scanner.Token == _T( "GOLD_PREMIUM" ) )
		{
			m_Premium.mGoldPremium = scanner.GetNumber();
		}
		else if (scanner.Token == _T( "EXP_PREMIUM" ) )
		{
			m_Premium.mExpPremium = scanner.GetNumber();
		}
		else if (scanner.Token == _T( "DROP_PREMIUM" ) )
		{
			m_Premium.mDropPremium = scanner.GetNumber();
		}
	}
	return TRUE;
}
02/04/2014 14:45 SourceShop#3
Thanks you but don't work, worldserver not does not start ;s
My .inc:
Code:
COLOR_PREMIUM 0xffffffff
GOLD_PREMIUM 2
EXP_PREMIUM 2
DROP_PREMIUM 2
I have test your test , and othoer solution but doesn't work, I have test :

Code:
BOOL CProject::LoadScriptPremium( LPCTSTR lpszFileName )
{
	CScript scanner;
	if( scanner.Load( lpszFileName, FALSE ) == FALSE )
	{
		Error( "%s not found", lpszFileName );
		return FALSE;
	}
	scanner.GetToken();
	while( scanner.tok != FINISHED )
	{
		if( scanner.Token == _T( "COLOR_PREMIUM" ) )
		{
			m_Premium.dwColorPremium = scanner.GetNumber();
		}
		else if ( scanner.Token == _T( "GOLD_PREMIUM" ) )
		{
			m_Premium.mGoldPremium = scanner.GetNumber();
		}
		else if (scanner.Token == _T( "EXP_PREMIUM" ) )
		{
			m_Premium.mExpPremium = scanner.GetNumber();
		}
		else if (scanner.Token == _T( "DROP_PREMIUM" ) )
		{
			m_Premium.mDropPremium = scanner.GetNumber();
		}
		scanner.GetToken();
	}
        Error("test 1");
	return TRUE;
	Error("test 2");
}
02/04/2014 15:11 Jopsi332#4
error test 2 can't be generate because your return before??

for hex use GetToken();
02/04/2014 15:30 SourceShop#5
Okey thanks , so this is what code is good now? (because Neuz not want to connect, and WorldServer generates the error: OnJoin)


EDIT: Work :)