Ejemplo n.º 1
0
void IL2Client::game_TargetByName( const wchar_t *name )
{
	//L2Client *cl = (L2Client *)m_pcl;
	UserInfo *usr = get_UserInfo();
	CharArray *ca = get_WorldChars();
	NpcArray *na = get_WorldNpcs();
	unsigned int nPassed = 0, i = 0, count = ca->GetCount();
	unsigned int objectID = 0;
	if( _wcsicmp( name, usr->charName ) == 0 )
	{
		objectID = usr->objectID;
	}
	if( objectID == 0 )
	{
		// try chars
		count = ca->GetCount();
		nPassed = 0;
		if( count > 0 )
		{
			ca->Lock();
			for( i=0; i<CharArray::CHARARRAY_MAX_CHARS; i++ )
			{
				if( ca->chars_array[i]->isUnused() ) continue;
				nPassed++;
				if( _wcsicmp( name, ca->chars_array[i]->charName ) == 0 )
				{
					objectID = ca->chars_array[i]->objectID;
					break;
				}
				if( nPassed >= count ) break;
			}
			ca->Unlock();
		}
	}
	if( objectID == 0 )
	{
		// try NPCs
		count = na->getCount();
		nPassed = 0;
		if( count > 0 )
		{
			na->Lock();
			for( i=0; i<NpcArray::NPCA_MAX_NPCS; i++ )
			{
				if( na->npcs_array[i]->isUnused() ) continue;
				nPassed++;
				if( _wcsicmp( name, na->npcs_array[i]->charName ) == 0 )
				{
					objectID = na->npcs_array[i]->objectID;
					break;
				}
				if( nPassed >= count ) break;
			}
			na->Unlock();
		}
	}
	if( objectID == 0 ) return;
	game_Action( objectID );
}