User Files

From GTAMods Wiki
Revision as of 05:39, 30 June 2015 by Spaceeinstein (talk | contribs)
Jump to navigation Jump to search

User files is a directory created by each GTA PC game. It usually it the location of setting files, replays and savegames.

GTA III, Vice City and San Andreas

The user files directory usually is located inside the My Documents directory of the Microsoft Windows operating system:

  • GTA III %USERPROFILE%\My Documents\GTA3 User Files or %USERPROFILE%\Documents\GTA3 User Files
  • Vice City %USERPROFILE%\My Documents\GTA Vice City User Files or %USERPROFILE%\Documents\GTA Vice City User Files
  • San Andreas %USERPROFILE%\My Documents\GTA San Andreas User Files or %USERPROFILE%\Documents\GTA San Andreas User Files

San Andreas specific

Beside savegames, settings and replays San Andreas does also store user track information and ingame screenshots there. Also the stats.html file gets exported to this location. The user tracks themselves can be stored as shortcuts, files or subdirectories inside the directory My Documents/GTA San Andreas User Files/User Tracks.

After the directory got scanned by the game the file sa-ufiles.dat gets created. It holds an list of unterminated strings where each represents a absolute file path of an audio file. The following C++ code snippet demonstrates an easy way to parse this file:

// parse sa-ufiles.dat
void parseFile(std::string &fileName)
{
	// open the file with reading rights and search the end of the file
	std::fstream stream(fileName.c_str(), std::ios::in | std::ios::ate);
	
	// allocate an array of characters to read the whole file content
	int size = static_cast<int>(stream->tellg());
	char* buffer = new char[size];
	
	// search the start of the file and read it's content
	stream->seekg(0);
	stream->read(buffer, size);
	
	// parse the content, return value is an vector of strings containing the file names
	std::string str(buffer);
	parseContent(str);
	
	// delete the memory for buffering and close the stream
	delete[] buffer;
	stream->close();
}

// parse the content of a sa-ufiles.dat file
std::vector<std::string> parseContent(std::string& buffer)
{
	// vector for the file names
	std::vector<std::string> fileNames;
	
	// search for the partition letter until there is no one left
	std::size_t found;
	while ((found = (buffer.find_last_of(":") - 1)) != npos)
	{
		// push file name to the vector
		fileNames.pus_back(buffer.substr(found));
		
		// erase this file name from the file.
		buffer.erase(found);
	}
	
	return fileNames;
}

Also there is an file called sa-utrax.dat, but it appears to be unused.

The player is able to create screenshots from the game using an camera. Those screenshots get stored as jpeg compressed images inside the directory My Documents/GTA San Andreas User Files/Gallery.