All pastes #278655 Raw Edit

Unnamed

public text v1 · immutable
·published 2006-12-14 08:07 UTC
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";
}