mirror of
https://gitlab.com/xonotic/xonotic
synced 2024-12-17 20:34:47 +00:00
40 lines
659 B
Perl
Executable File
40 lines
659 B
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Fcntl qw/:seek/;
|
|
|
|
sub get($$)
|
|
{
|
|
my ($fh, $n) = @_;
|
|
read $fh, my $v, $n
|
|
or die "read: $!";
|
|
return $v;
|
|
}
|
|
|
|
use constant LUMP_ENTITIES => 0;
|
|
|
|
if(!@ARGV)
|
|
{
|
|
die "Usage: bsp2ent BSPFILE > ENTFILE\n";
|
|
}
|
|
|
|
my $bspfile = $ARGV[0];
|
|
open my $fh, '<', $bspfile
|
|
or die "open $bspfile: $!";
|
|
get($fh, 4) eq 'IBSP'
|
|
or die "$bspfile is no IBSP";
|
|
unpack('V', get($fh, 4)) == 0x2e
|
|
or die "$bspfile is no Q3 BSP";
|
|
my @directory = map
|
|
{
|
|
[unpack('VV', get($fh, 8))] # offset, length
|
|
}
|
|
0..16;
|
|
|
|
seek($fh, $directory[LUMP_ENTITIES][0], SEEK_SET);
|
|
my $ent = get($fh, $directory[LUMP_ENTITIES][1]);
|
|
$ent =~ s/\000//g;
|
|
|
|
print $ent;
|