User Files

From GTAMods Wiki
Jump to navigation Jump to search

User Files is a directory created by each GTA PC game. It usually is the location of setting files, replays and savegames. 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

Vice City

Vice City stores two additional files, the stats.html and stats.txt, that contains a dump of all statistics that can be seen in the menu. The file can be generated from the stats menu by pressing the S key. For the following formats, "\n" denotes a newline and "\t" denotes a tab character. Internally, all newline characters (0x0A) are prefixed by a carriage return character (0x0D) in order for them to be viewable on some text editing programs like Notepad. "%s" denotes a string placeholder that can change depending on the text and "%d" denotes an integer placeholder. Some text can change depending on the GXT entry. They are denoted by dotted underlines that you can hover your mouse over and see the GXT key.

stats.txt

This is a plain text file and can be viewed in any text editing program.

Header

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n
\t\t\tGTA VICE CITY STATS\n
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n
\n
\n
LAST MISSION PASSED: %s\n
DATE: %s\n
\n
\n
Criminal rating:  %s (%d)\n
\n
\n

Body

This format is outputted for each stat that is displayed in the menu. The first string placeholder is the stat name and the second one is the stat value or content.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n
\n
%s\n
%s\n
\n

Footer

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n
\n

stats.html

This is an HTML document and can be viewed on any web browser and edited by any text editing program.

Header

<title>Grand Theft Auto Vice City Stats</title>\n
<body bgcolor="#FF00CC" leftmargin="10" topmargin="10" marginwidth="10" marginheight="10">\n
<table width="560" align="center" border="0" cellpadding="5" cellspacing="0">\n
<tr align="center" valign="top"> \n
<td height="59" colspan="2" bgcolor="#FFCCFF"><div align="center"><font color="#FF00CC" size="3" face="Arial, \n
Helvetica, sans-serif">-------------------------------------------------------------------------</font><font \n
size="3" face="Arial, Helvetica, sans-serif"><br>\n
<strong><font color="#000000">GRAND THEFT AUTO VICE CITY STATS</font></strong><br><font\n
color="#FF00CC">-------------------------------------------------------------------------</font></font></div></td> </tr>\n
<tr align="left" valign="top" bgcolor="#FFFFFF">     <td height="22" colspan="2">&nbsp;</td>  </tr>\n
<tr align="left" valign="top" bgcolor="#FFFFFF"> \n
<td height="40" colspan="2"> <p><font color="#00CC00" size="2" face="Arial, Helvetica, sans-serif"><strong><font color="#009900" size="1">DATE: \n
%s</font><br>        LAST MISSION PASSED: </strong>%s<strong><br></strong> </font></p></td></tr>\n
<tr align="left" valign="top" bgcolor="#CCCCCC"> <td height="5" colspan="2"></td> </tr> <tr align="left" valign="top" bgcolor="#FFFFFF"> \n
<td height="10" colspan="2"></td> </tr> <tr align="left" valign="top" bgcolor="#FFFFFF"> \n
<td height="20" colspan="2"><font color="#FF00CC" size="2" face="Arial, Helvetica, sans-serif"><strong>Criminal rating:</strong>\n
%s (%d)</font></td>  </tr>  <tr align="left" valign="top" bgcolor="#FFFFFF"><td height="10" colspan="2"></td>  </tr>\n

Body

This format is outputted for each stat that is displayed in the menu. The first string placeholder is the stat name and the second one is the stat value or content.

</font></strong></div></td> </tr> <tr align="left" valign="top" bgcolor="#FFFFFF">  <td height="10" colspan="2"></td> </tr>\n
<tr align="left" valign="top"><td width="500" height="22" bgcolor="#FFCCFF"><font color="#FF00CC" size="2" face="Arial, Helvetica, sans-serif"><strong>\n
%s</strong></font></td> <td width="500" align="right" valign="middle" bgcolor="#FFCCFF"> <div align="right"><strong><font color="#FF00CC">\n
%s

Footer

</font></strong></div></td> </tr> <tr align="left" valign="top" bgcolor="#FFFFFF">  <td height="10" colspan="2"></td> </tr>\n
</table><br><table width="560" border="0"  align="center" cellspacing="0" cellpadding="5"><tr align="center" valign="middle" bgcolor="#FFCCFF"><td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><a href="http://www.rockstargames.com/vicecity">rockstargames.com/vicecity</a></font></td>\n
<td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><a href="http://www.rockstargames.com">rockstargames.com</a></font></td>\n
<td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif">&nbsp;<a href="http://www.rockstarnorth.com">rockstarnorth.com</a></font></td></tr>\n
</table>\n
</body>\n

San Andreas

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.