rendered paste body#!usr\bin\perl
use warnings;
use Encode qw/encode decode/;
# Revision 2: 12/14/2006
## Modify this for the Multiplayer path
#$main_dir = 'C:/Documents and Settings/David/My Documents/My Games/Freelancer/Accts/MultiPlayer';
$main_dir = 'C:/Documents and Settings/Administrator/My Documents/My Games/Freelancer/Accts/MultiPlayer';
## Nothing should be modified below this line.
# Packed with: UTF-16BE
$u = '[O]';
$v = '005b004f005d';
print decode("UTF-16BE",(pack "H*", $v));
print unpack "H*", (encode("UTF-16BE", $u));
opendir(MAINDIR, "$main_dir") || die "Can't open $main_dir: $!\n";
@folders = readdir(MAINDIR);
foreach $folder (@folders) {
if ((-d "$main_dir/$folder") and ($folder ne ".") and ($folder ne "..")){
opendir(PFOLDER, "$main_dir/$folder");
@player_file = readdir(PFOLDER);
foreach $player_file (@player_file) {
if ($player_file =~ ".fl"){
decode2();
editor();
}
}
}
}
####################Decoder#####################################################
sub decode2 {
my @gene = qw/G e n e/;
open(PFILE,"$main_dir/$folder/$player_file");
open(TEMPDATA, ">$main_dir/pfile.tmp");
seek(PFILE,4,0);
my ($i,$r,$c,$k);
$i = 0;
while(read(PFILE,$c,1)) {
$k = (ord($gene[$i % 4]) + $i) % 256;
$r = ord($c) ^ ($k | 0x80);
print (TEMPDATA chr($r));
$i++;
}
}
#############Start of Editing###################################################
sub editor {
my $out;
my %ini;
my @houses;
open(TEMPDATA, "<$main_dir/pfile.tmp");
open(EDITED, ">$main_dir/pfile1.tmp");
foreach $line (<TEMPDATA>) {
chomp $line;
if ($line =~ /\[([^\]]+)\]/) {
$section = $1;
} elsif ($line =~ /^\s*(.+?)\s*=\s*(.+?)\s*$/) {
($var,$value) = ($1,$2);
push(@{$ini{$section}{$var}},$value);
}
}
if (@{$ini{Player}{system}}[0] eq "SO01"){
foreach $house (@{$ini{Player}{house}}) {
($num,$fact) = split(/,/,$house);
next if ($fact eq " so_grp");
if (($fact eq " O_grp" && $num >= 0.5)) {
@{$ini{Player}{system}} = 'O01';
@{$ini{Player}{base}} = 'O01_01_Base';
push(@houses, '0.99, O_grp');
push(@houses, '-0.99, X_grp');
@{$ini{Player}{money}} = '100000';
$ini{Player}{name}->[0] = "005b004f005d$ini{Player}{name}->[0]";
next;
} elsif ($fact eq " X_grp" && $num >= 0.5) {
@{$ini{Player}{system}} = 'X01';
@{$ini{Player}{base}} = 'X01_01_Base';
push(@houses, '0.99, X_grp');
push(@houses, '-0.99, O_grp');
@{$ini{Player}{money}} = '100000';
$ini{Player}{name}->[0] = "005b0058005d$ini{Player}{name}->[0]";
next;
} elsif ($fact eq " pvp_grp" && $num >= 0.5) {
@{$ini{Player}{system}} = 'PVP01';
@{$ini{Player}{base}} = 'PVP01_01_Base';
@{$ini{Player}{money}} = '999999999';
$ini{Player}{name}->[0] = "005b005000560050005d$ini{Player}{name}->[0]";
next;
}
push(@houses,$house);
}
@{$ini{Player}{house}} = @houses;
foreach $section (keys %ini) {
$out .= "[$section]\n";
foreach $var (keys %{$ini{$section}}) {
foreach $value (@{$ini{$section}{$var}}) {
$out .= "$var = $value\n";
}
}
}
print EDITED $out;
close EDITED;
close TEMPDATA;
encode2();
}else {
close TEMPDATA;
unlink "$main_dir/pfile.tmp";
}
}
#############End of Editing###################################################
sub encode2 {
my @gene = qw/G e n e/;
open(PFILE,">$main_dir/$folder/$player_file");
open(EDITED, "<$main_dir/pfile1.tmp");
print PFILE "FLS1";
my ($i,$r,$c,$k);
$i = 0;
while(read(EDITED,$c,1)) {
$k = (ord($gene[$i % 4]) + $i) % 256;
$r = ord($c) ^ ($k | 0x80);
print PFILE (chr($r));
$i++;
}
#############Clean Up###################################################
close TEMPDATA;
close EDITED;
close PFILE;
unlink "$main_dir/pfile.tmp";
unlink "$main_dir/pfile1.tmp";
}