05-22-2020, 02:06 PM
(This post was last modified: 05-22-2020, 02:06 PM by Azathoth Noir.)
(05-22-2020, 11:49 AM)Sei Bellissima Wrote: Have you tried UndertaleModTool? I've had success ripping both the GameMaker games I have (Hyper Light Drifter and Wandersong) with it. https://github.com/krzys-h/UndertaleModTool/releasesThanks a lot! Since I have notepad++ that should be as easy as pie.
The latest release includes a script to extract all the sprites at once, but I wouldn't recommend using it because it has an issue with extracting the sprites: it'll crop them instead of exporting the sprites in an animation with equal dimensions. The previous release, 0.2.0, does not have this issue though and here's the modified script that will work with it:
Code:using System.Text;
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using UndertaleModLib.Util;
int progress = 0;
string texFolder = GetFolder(FilePath) + "Export_Textures" + Path.DirectorySeparatorChar;
TextureWorker worker = new TextureWorker();
Directory.CreateDirectory(texFolder);
UpdateProgress();
await DumpSprites();
HideProgressBar();
ScriptMessage("Export Complete.\n\nLocation: " + texFolder);
void UpdateProgress() {
UpdateProgressBar(null, "Sprites", progress++, Data.Sprites.Count);
}
string GetFolder(string path) {
return Path.GetDirectoryName(path) + Path.DirectorySeparatorChar;
}
async Task DumpSprites() {
await Task.Run(() => Parallel.ForEach(Data.Sprites, DumpSprite));
}
void DumpSprite(UndertaleSprite sprite) {
for (int i = 0; i < sprite.Textures.Count; i++)
if (sprite.Textures[i]?.Texture != null)
worker.ExportAsPNG(sprite.Textures[i].Texture, texFolder + sprite.Name.Content + "_" + i + ".png");
UpdateProgress();
}
Paste this code into notepad and make sure you save it as a csx file; otherwise it won't work. Open your data.win in UndertaleModTool; then click "Scripts", "Run other script", and select the csx file you just made. The tool will make a new folder and dump all the sprites in it (This might take a while depending on how many sprites the game has)