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(); }
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(); }
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; }
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; }
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; }