private static async Task RunExporter( string ggpkFile, string exportFolder, int exportTasks, int enumerationTasks) { var sw = Stopwatch.StartNew(); Console.WriteLine($"Source: {ggpkFile}"); Console.WriteLine($"Destination: {exportFolder}"); Console.WriteLine($"Enum tasks: {enumerationTasks}"); Console.WriteLine($"Export tasks: {exportTasks}\r\n"); Console.WriteLine("Exporting...\r\n"); _startTime = DateTime.Now; _currentTop = Console.CursorTop + 1; var ggpk = new GgpkFileSystem(ggpkFile); var exporter = new GgpkExporter(); exporter.FileExported += Exporter_FileExported; await exporter.Export(ggpk, new ExportConfig( exportFolder, enumerationTasks: enumerationTasks, exportTasks: exportTasks, shallow: false)); // We're done! Console.WriteLine("\r\nDone exporting."); Console.WriteLine($"Exported in {sw.Elapsed.TotalMilliseconds} ms"); Console.CursorVisible = true; exporter.FileExported -= Exporter_FileExported; }
public static void GetThoseDats() { var path = @"C:\Program Files (x86)\Grinding Gear Games\Path of Exile\Content.ggpk"; //var file = @"C:\ggpk2\Metadata\StatDescriptions\stat_descriptions.txt"; var ggpk = new GgpkFileSystem(path); var datIndex = new DatFileIndex(ggpk, DetSpecificationIndex.Default); var stats = new StatsDatLoader().Load(datIndex); var mods = new ModifiersDatLoader(stats).Load(datIndex); var we = mods.SelectMany(c => c.Value.SpawnWeights.Select(e => e.TagId)).Distinct().ToList(); Console.WriteLine("First 10 mods:"); int i = 0; foreach (var row in datIndex["Mods.dat"]) { Console.WriteLine(row["Name"]); if (++i == 10) { break; } } }
public static void ExtractGggpk(string ggpkPath, string destinationPath) { Console.CursorVisible = false; Console.WriteLine("Reading GGPK File..."); var sw = Stopwatch.StartNew(); using (var ggpk = new GgpkFileSystem(ggpkPath)) { Console.WriteLine($"GGPK File parsed... {sw.Elapsed.TotalMilliseconds:N} ms"); Console.WriteLine("Extracting GGPK Contents..."); var destinationFolder = new DiskDirectory(destinationPath, null, true); ggpk.CopyTo(destinationFolder); Console.WriteLine($"Elapsed total time: {sw.Elapsed.TotalMilliseconds:N} ms"); Console.WriteLine($"{Environment.NewLine}{Environment.NewLine}Done..."); Console.CursorVisible = true; } }
private static void Translations() { var ggpk = new GgpkFileSystem(GgpkPath); var file = ggpk.Directories .First(c => c.Name == "Metadata").Directories .First(c => c.Name == "StatDescriptions").Files .First(c => c.Name == "stat_descriptions.txt") .GetStream(); var datIndex = new DatFileIndex(ggpk, DetSpecificationIndex.Default); var stats = new StatsDatLoader().Load(datIndex); var mods = new ModifiersDatLoader(stats).Load(datIndex); var transLoader = new TranslationsLoader(stats); var transIndex = transLoader.Load(file); var passiveSkills = datIndex.Where(c => c.Key.ToLower().Contains("tree")).ToList(); }
public Task Export(GgpkFileSystem ggpk, ExportConfig config) => Export(ggpk.Directories.Values, config);