A powerful tool for viewing and editing GXT (game text) files from Grand Theft Auto games
Features โข Supported Games โข Installation โข Usage โข Library โข Contributing โข License
- Modern Dark UI - Beautiful flat design with custom window chrome
- Multi-Game Support - Works with GTA III, Vice City, San Andreas, and GTA IV
- Full CRUD Operations - Add, edit, rename, duplicate, and delete tables and entries
- Advanced Search & Filter - Search entries and filter tables with case-sensitive option
- Multi-line Value Editor - Dedicated editor for editing long text values with word wrap
- Real-time Modification Tracking - Visual indicators show unsaved changes on tables and entries
- Export Functionality - Export to CSV or JSON formats
- Keyboard Shortcuts - Efficient workflow with Ctrl+O, Ctrl+S, Ctrl+F, and more
- Drag & Drop Support - Simply drag GXT files onto the window to open them
- Formatting Code Preservation - Correctly handles and preserves game formatting codes like
~r~,~g~,~b~, etc. - Multi-lingual Support - Proper encoding handling for UTF-16LE (III/VC) and Windows-1252 (SA/IV)
- Cross-Platform - Supports .NET Framework 4.5.2+, .NET Standard 2.0, .NET Core 3.1+, and .NET 5.0, 7.0-9.0
- Type-Safe API - Clean, intuitive API for reading and manipulating GXT files
- Read & Write Support - Full support for reading and writing GXT files in all supported formats
- Memory Efficient - Stream-based reading and writing for large files
- Key Name Preservation - Maintains original key names for VC/III formats
- Comprehensive Error Handling - Detailed exceptions for debugging
| Game | Format | Encoding | Status |
|---|---|---|---|
| GTA III | Single-table (TKEY) | UTF-16LE | โ Fully Supported |
| GTA: Vice City | Multi-table (TABL) | UTF-16LE | โ Fully Supported |
| GTA: San Andreas | Multi-table (TABL) | Windows-1252 | โ Fully Supported |
| GTA IV | Multi-table (TABL) | Windows-1252 | โ Fully Supported |
- Download the latest release from the Releases page
- Extract the ZIP file
- Run
Gexter.Desktop.exe
Requirements:
- Windows 7 or later
- No additional dependencies (self-contained)
dotnet add package GexterOr via Package Manager:
Install-Package Gexter
-
Open a GXT file:
- Click
File > Openor pressCtrl+O - Or drag and drop a
.gxtfile onto the window
- Click
-
Navigate:
- Select a table from the left panel
- View entries in the middle panel
- Edit values in the bottom panel
-
Search:
- Use the search box in the entries section
- Toggle case-sensitive search as needed
-
Edit:
- Click on an entry to edit its value
- Use the action buttons or context menu to add/rename/delete entries
- Modified entries are marked with an orange dot
-
Save:
- Click
File > Saveor pressCtrl+S - Use
File > Save As...to save to a new location
- Click
-
Export:
- Use
Export > Export to CSV...orExport > Export to JSON...
- Use
using Gexter;
// Load a GXT file
var gxtFile = GxtLoader.Load("american.gxt");
// Access tables
var mainTable = gxtFile["MAIN"];
if (mainTable != null)
{
// Get value by hash
var value = mainTable.GetValue(0x89BD20D0);
// Get value by key name (VC/III)
var value2 = mainTable.GetValue("MAIN");
// Set a value
mainTable.SetValue("MY_KEY", "My custom text");
// Iterate entries
foreach (var entry in mainTable)
{
Console.WriteLine($"Hash: {entry.Key:X8}, Value: {entry.Value}");
}
}
// Search across all tables
var foundValue = gxtFile.FindValue("SOME_KEY");
// Save the modified file
gxtFile.Save("modified.gxt");GxtLoader- Main class for loading GXT files from streams or filesGxtFile- Container for all tables in a GXT file with save functionalityGxtWriter- Class for writing GXT files to streams or filesGxtTable- Represents a single table with key-value pairsGxtVersion- Enum for GXT format versionsCrc32- Utility for computing CRC32 hashes
using var loader = GxtLoader.FromFile("american.gxt");
var gxtFile = loader.Load();
Console.WriteLine($"Version: {gxtFile.Version}");
Console.WriteLine($"Tables: {gxtFile.TableCount}");
foreach (var table in gxtFile)
{
Console.WriteLine($"Table: {table.Name} ({table.Count} entries)");
}var tables = new List<GxtTable>
{
new GxtTable("MAIN", Encoding.Unicode, keepKeyNames: true)
};
tables[0].SetValue("HELLO", "Hello, World!");
tables[0].SetValue("GOODBYE", "Goodbye!");
var gxtFile = new GxtFile(GxtVersion.ViceCityIII, tables);
// Save to file
gxtFile.Save("output.gxt");
// Or save to stream
using var stream = File.Create("output.gxt");
gxtFile.Save(stream);// Load a GXT file
var gxtFile = GxtLoader.Load("american.gxt");
// Modify entries
var mainTable = gxtFile["MAIN"];
if (mainTable != null)
{
mainTable.SetValue("NEW_KEY", "New value");
mainTable.SetValue(0x89BD20D0, "Updated value");
}
// Save the modified file
gxtFile.Save("modified.gxt");# Clone the repository
git clone https://github.com/vaibhavpandeyvpz/gexter.git
cd gexter
# Restore dependencies
dotnet restore
# Build the library
dotnet build Gexter
# Build the desktop app
dotnet build Gexter.Desktop
# Run tests
dotnet test Gexter.Testsgexter/
โโโ Gexter/ # Core library
โโโ Gexter.Desktop/ # WPF desktop application
โโโ Gexter.Tests/ # NUnit test suite
โโโ examples/ # Sample GXT files for testing
The project includes comprehensive unit tests covering:
- CRC32 hash computation
- GXT file loading for all supported formats
- GXT file writing for all supported formats
- Round-trip testing (load, save, reload) to verify data integrity
- Encoding handling (UTF-16LE and Windows-1252)
- Formatting code preservation
- Error handling
Run tests with:
dotnet testContributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Vaibhav Pandey (VPZ)
- Website: vaibhavpandey.com
- Email: contact@vaibhavpandey.com
- GitHub: @vaibhavpandeyvpz
- YouTube: Channel
- libgtaformats - This project is a C# port (or based on) of the C++ library libgtaformats by David "Alemarius Nexus" Lerch
- Grand Theft Auto series by Rockstar Games
- FontAwesome for icons
- Community contributors and testers
If you encounter any issues or have questions:
- Open an issue on GitHub
- Contact: contact@vaibhavpandey.com
Made with โค๏ธ for the GTA modding community
โญ Star this repo if you find it useful!
