Gexter 1.0.0
dotnet add package Gexter --version 1.0.0
NuGet\Install-Package Gexter -Version 1.0.0
<PackageReference Include="Gexter" Version="1.0.0" />
<PackageVersion Include="Gexter" Version="1.0.0" />
<PackageReference Include="Gexter" />
paket add Gexter --version 1.0.0
#r "nuget: Gexter, 1.0.0"
#:package Gexter@1.0.0
#addin nuget:?package=Gexter&version=1.0.0
#tool nuget:?package=Gexter&version=1.0.0
<div align="center">
Gexter
A powerful tool for viewing and editing GXT (game text) files from Grand Theft Auto games
Features • Supported Games • Installation • Usage • Library • Contributing • License
</div>
✨ Features
Desktop Application
- 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)
Library
- 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
🎮 Supported Games
| 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 |
📦 Installation
Desktop Application
- 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)
Library (NuGet)
dotnet add package Gexter
Or via Package Manager:
Install-Package Gexter
🚀 Usage
Desktop Application
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
Library
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");
📚 Library
Key Classes
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
Example: Reading a GXT File
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)");
}
Example: Creating and Saving a New GXT File
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);
Example: Modifying and Saving an Existing GXT File
// 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");
🛠️ Development
Building from Source
# 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.Tests
Project Structure
gexter/
├── Gexter/ # Core library
├── Gexter.Desktop/ # WPF desktop application
├── Gexter.Tests/ # NUnit test suite
└── examples/ # Sample GXT files for testing
🧪 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 test
🤝 Contributing
Contributions 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
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
👤 Author
Vaibhav Pandey (VPZ)
- Website: vaibhavpandey.com
- Email: contact@vaibhavpandey.com
- GitHub: @vaibhavpandeyvpz
- YouTube: Channel
🙏 Acknowledgments
- 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
📞 Support
If you encounter any issues or have questions:
- Open an issue on GitHub
- Contact: contact@vaibhavpandey.com
<div align="center">
Made with ❤️ for the GTA modding community
⭐ Star this repo if you find it useful!
</div>
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 is compatible. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net452 is compatible. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 was computed. net481 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETCoreApp 3.1
- System.Text.Encoding.CodePages (>= 8.0.0)
-
.NETFramework 4.5.2
- No dependencies.
-
.NETFramework 4.7.2
- No dependencies.
-
.NETFramework 4.8.1
- No dependencies.
-
.NETStandard 2.0
- System.Text.Encoding.CodePages (>= 8.0.0)
-
net5.0
- System.Text.Encoding.CodePages (>= 8.0.0)
-
net7.0
- System.Text.Encoding.CodePages (>= 8.0.0)
-
net8.0
- System.Text.Encoding.CodePages (>= 8.0.0)
-
net9.0
- System.Text.Encoding.CodePages (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 165 | 11/28/2025 |