All pastes #288889 Raw Edit

Unnamed

public text v1 · immutable
#288889 ·published 2006-12-22 18:01 UTC
rendered paste body
void CWorldServer::LoadNPCData( )
{
	FILE* fh;
	char tmpfield[512];
	unsigned entrycount;

	if ( fopen_s( &fh, "data\\NPCPOS.DAT", "rb" ) != 0 ) {
		Log( MSG_ERROR, "Could not load DAT 'data\\NPCPOS.DAT'" );
		return;
	}else{
		fseek( fh, 4, SEEK_SET );
		fread( &entrycount, 4, 1, fh );
		for( unsigned i = 0; i < entrycount; i++ ) {
			fread( &tmpfield, 18, 1, fh );

			CNPC* thisnpc = new CNPC( );
			thisnpc->clientid = GetNewClientID( );
			thisnpc->type = *((unsigned short*)&tmpfield[0]);
			thisnpc->chatid = *((unsigned short*)&tmpfield[2]);
			thisnpc->posMap = *((unsigned short*)&tmpfield[4]);
			thisnpc->pos.x = *((float*)&tmpfield[6]);
			thisnpc->pos.y = *((float*)&tmpfield[10]);
			thisnpc->dir = *((float*)&tmpfield[14]);

			rwmNPCList.acquireWriteLock( );
			NPCList.push_back( thisnpc );
			rwmNPCList.releaseWriteLock( );
		}
		fclose( fh );
	}
}

void CWorldServer::LoadSpawnData( )
{
	FILE* fh;
	char tmpfield[512];
	unsigned entrycount;

	if ( fopen_s( &fh, "data\\SPWNZNS.DAT", "rb" ) != 0 ) {
		Log( MSG_ERROR, "Could not load DAT 'data\\SPWNZNS.DAT'" );
		return;
	}else{
		fseek( fh, 4, SEEK_SET );
		fread( &entrycount, 4, 1, fh );
		for( unsigned i = 0; i < entrycount; i++ ) {
			fread( &tmpfield, 10, 1, fh );

			CSpawnArea* thisspawn = new CSpawnArea();
			thisspawn->type = *((unsigned short*)&tmpfield[0]);
			thisspawn->respawntime = *((unsigned short*)&tmpfield[2]);
			thisspawn->maxcount = *((unsigned short*)&tmpfield[4]);
			thisspawn->map = *((unsigned short*)&tmpfield[6]);
			thisspawn->pcount = *((unsigned short*)&tmpfield[8]);

			thisspawn->points = new fPoint[ thisspawn->pcount ];
			for( unsigned j = 0; j < thisspawn->pcount; j++ ) {
				fread( &tmpfield, 8, 1, fh );
				thisspawn->points[j].x = *((float*)&tmpfield[0]);
				thisspawn->points[j].y = *((float*)&tmpfield[4]);
			}

			rwmNPCList.acquireWriteLock( );
			SpawnList.push_back( thisspawn );
			rwmNPCList.releaseWriteLock( );
		}
		fclose( fh );
	}
}