Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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;
                }
            }
        }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
 public Task Export(GgpkFileSystem ggpk, ExportConfig config) =>
 Export(ggpk.Directories.Values, config);