From 912c4dc824d8841aa753aea76d71d980252738b0 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sun, 8 May 2016 23:27:51 +1000 Subject: [PATCH] Handle multiple map files in mods --- tools/arkmanager | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 6b1f2bb..59e645b 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -1407,15 +1407,21 @@ doExtractMod(){ { local $/; $data = ; } my $mapnamelen = unpack("@0 L<", $data); my $mapname = substr($data, 4, $mapnamelen - 1); - my $mapfilelen = unpack("@" . ($mapnamelen + 8) . " L<", $data); - my $mapfile = substr($data, $mapnamelen + 12, $mapfilelen); + my $nummaps = unpack("@" . ($mapnamelen + 4) . " L<", $data); + my $pos = $mapnamelen + 8; my $modname = ($ARGV[1] || $mapname) . "\x00"; my $modnamelen = length($modname); my $modpath = "../../../ShooterGame/Content/Mods/" . $ARGV[0] . "\x00"; my $modpathlen = length($modpath); - print pack("L< L< L< Z$modnamelen L< Z$modpathlen L< L< Z$mapfilelen", + print pack("L< L< L< Z$modnamelen L< Z$modpathlen L<", $ARGV[0], 0, $modnamelen, $modname, $modpathlen, $modpath, - 1, $mapfilelen, $mapfile); + $nummaps); + for (my $mapnum = 0; $mapnum < $nummaps; $mapnum++){ + my $mapfilelen = unpack("@" . ($pos) . " L<", $data); + my $mapfile = substr($data, $mapnamelen + 12, $mapfilelen); + print pack("L< Z$mapfilelen", $mapfilelen, $mapfile); + $pos = $pos + 4 + $mapfilelen; + } print "\x33\xFF\x22\xFF\x02\x00\x00\x00\x01"; ' $modid "$modname" <"$moddestdir/mod.info" >"${moddestdir}.mod"