Esempio n. 1
0
BOOL CNWNXConnect::OnRelease( ){

	CNWNXMemory mem;

	if( TLK ){

		if( TLK->text )
			mem.nwnx_free( TLK->text );

		mem.nwnx_free( TLK );
	}

	if( HAK ){

		for( int n=0;n<HAKLen;n++ ){

			if( HAK[n].text ){
				mem.nwnx_free( HAK[n].text );
			}	
		}

		mem.nwnx_free( HAK );
	}
	return CNWNXBase::OnRelease();
}
Esempio n. 2
0
BOOL CNWNXMessages::OnRelease( ){

	CNWNXMemory mem;

	if( TLK ){

		if( TLK->text )
			mem.nwnx_free( TLK->text );

		mem.nwnx_free( TLK );
	}

	if( HAK ){

		for( int n=0;n<HAKLen;n++ ){

			if( HAK[n].text ){
				mem.nwnx_free( HAK[n].text );
			}	
		}

		mem.nwnx_free( HAK );
	}

	if( LASTSTR->text )mem.nwnx_free( LASTSTR->text );
	mem.nwnx_free( LASTSTR );

	delete []SS;

	return CNWNXBase::OnRelease();
}
Esempio n. 3
0
int CExoLocString_s::AddString(uint32_t nLocale, char *sString) {
	CExoLocStringElement *pCurrentData;
	CExoLocStringElement *pNewEntry;
	CExoLinkedListElement *pCurrentElement;
	CNWNXMemory mem;
	pCurrentElement = this->List->GetHeadPos();
	pCurrentData = (CExoLocStringElement *) this->List->GetHead();
	while ( pCurrentData )
	{
	  if ( pCurrentData->LangID == nLocale )
	  {
	  	if(pCurrentData->Text.text)
			mem.nwnx_free( pCurrentData->Text.text );
		pCurrentData->Text.text = sString;
		pCurrentData->Text.len = strlen(sString)+1;
		//delete[] sString;
		return 1;
	  }
	  pCurrentData = (CExoLocStringElement *)this->List->GetNext(pCurrentElement);
	}


	pNewEntry = (CExoLocStringElement*)mem.nwnx_malloc( sizeof( CExoLocStringElement ) );
	if ( !pNewEntry  )
	{
	  delete[] sString;
	  return 0;
	}
	pNewEntry->LangID = nLocale;
	pNewEntry->Text.text = sString;
	pNewEntry->Text.len = strlen(sString)+1;
	this->List->AddTail(pNewEntry);
	//++this->List->Count;
	//++this->List->ListHeader->Count;
	//delete[] sString;
	return 1;
}
Esempio n. 4
0
BOOL CNWNXConnect::OnCreate(const char* LogDir){

	char log[MAX_PATH];
	char logrotate[MAX_PATH];

	sprintf( log, "%s\\nwnx_connect.txt", LogDir);
	sprintf( logrotate, "%s\\1\\nwnx_connect.txt", LogDir);

	MoveFile( log, logrotate );

	// call the base class function
	if( !CNWNXBase::OnCreate( log ) )
		return false;

	WriteLogHeader( );

	char buffer[128];
	char number[12];

	CNWNXMemory mem;
	TLK = (CExoString *)mem.nwnx_malloc(sizeof(CExoString));
	CIniFile ini( "NWNX.ini" );

	ini.ReadString( "CONNECT", "TLK", buffer, 128, "" );
	int n=0;

	if( buffer[0]=='\0' ){

		Log( "No TLK file was registered in nwnx.ini!\n" );
		return true;
	}
	else{

		TLK->CExoStringCpy( buffer );
		Log( "TLK: %s\n", TLK->CStr() );
	}

	ini.ReadString( "CONNECT", _itoa( ++n, number, 10 ), buffer, 128, "" ); 
	HAKLen=0;
	void * temp;
	HAK=NULL;

	while( buffer[0]!='\0' ){

		temp = mem.nwnx_malloc( sizeof(CExoString)*(HAKLen+1) );
		if( HAK ){
			memcpy( temp, HAK, sizeof(CExoString)*HAKLen );
			mem.nwnx_free( HAK );
		}
		
		HAK = (CExoString*)temp;
		HAK[HAKLen].CExoStringCpy( buffer );
		Log( "HAK %i: %s\n", HAKLen+1, HAK[HAKLen].CStr() );
		HAKLen++;

		ini.ReadString( "CONNECT", _itoa( ++n, number, 10 ), buffer, 128, "" ); 
	}
	Log( "\n" );
	if( HookCode( (PVOID)0x0043a810, CNWSMessage__SendServerToPlayerCharList, (PVOID*)&CNWSMessage__SendServerToPlayerCharListNext ) )
		Log( "o Hooked SendServerToPlayerCharList!\n" );
	else
		Log( "! Failed to hook SendServerToPlayerCharList!\n" );
	Log( "\n" );
	return true;
}
Esempio n. 5
0
BOOL CNWNXMessages::OnCreate(const char* LogDir){

	char log[MAX_PATH];
	char logrotate[MAX_PATH];

	sprintf( log, "%s\\nwnx_messages.txt", LogDir);
	sprintf( logrotate, "%s\\1\\nwnx_messages.txt", LogDir);

	MoveFile( log, logrotate );

	// call the base class function
	if( !CNWNXBase::OnCreate( log ) )
		return false;

	WriteLogHeader( );
	CIniFile ini( "NWNX.ini" );

	SS=NULL;
	SSLen=0;

	char lpath[MAX_PATH];

	ini.ReadString( "MESSAGES", "Languages", lpath, MAX_PATH-25, "%" );

	if( lpath[0] != '%' ){
		int loaded = LoadLanguages( lpath );	
		if( loaded <= 0 ){
			SS = new ScrambleSet[1];
			SSLen=1;
		}
		else
			Log( "Loaded: %i languages\n\n", loaded-1 );
	}
	else{

		SS = new ScrambleSet[1];
		SSLen=1;
		Log( "No languages where loaded!\n\n" );
	}

	char buffer[128];
	char number[12];

	CNWNXMemory mem;
	TLK = (CExoString *)mem.nwnx_malloc(sizeof(CExoString));
	LASTSTR=(CExoString *)mem.nwnx_malloc(sizeof(CExoString));
	
	TLK->text=NULL;
	LASTSTR->text=NULL;

	LOGLEVEL=ini.ReadInteger( "MESSAGES", "log", 0 );
	ini.ReadString( "MESSAGES", "TLK", buffer, 128, "" );
	int n=0;

	if( buffer[0]=='\0' ){

		Log( "No TLK file was registered in nwnx.ini! Sending Haklist disabled!\n" );
	}
	else{

		TLK->CExoStringCpy( buffer );
		Log( "TLK: %s\n", TLK->CStr() );

		ini.ReadString( "MESSAGES", _itoa( ++n, number, 10 ), buffer, 128, "" ); 
		HAKLen=0;
		void * temp;
		HAK=NULL;

		while( buffer[0]!='\0' ){

			temp = mem.nwnx_malloc( sizeof(CExoString)*(HAKLen+1) );
			if( HAK ){
				memcpy( temp, HAK, sizeof(CExoString)*HAKLen );
				mem.nwnx_free( HAK );
			}
		
			HAK = (CExoString*)temp;
			HAK[HAKLen].text=NULL;
			HAK[HAKLen].CExoStringCpy( buffer );
			Log( "HAK %i: %s\n", HAKLen+1, HAK[HAKLen].CStr() );
			HAKLen++;

			ini.ReadString( "MESSAGES", _itoa( ++n, number, 10 ), buffer, 128, "" ); 
		}
		Log( "\n" );
		if( HookCode( (PVOID)0x0043a810, CNWSMessage__SendServerToPlayerCharList, (PVOID*)&CNWSMessage__SendServerToPlayerCharListNext ) )
			Log( "o Hooked SendServerToPlayerCharList!\n" );
		else
			Log( "! Failed to hook SendServerToPlayerCharList!\n" );
		Log( "\n" );
	}
	
	return true;
}