View Single Post
  #3  
Old 08-05-2010, 10:22 AM
Tabasco's Avatar
Tabasco
Discordant
 
Join Date: Sep 2009
Posts: 269
Default

References in perl get kind of tricky, and when you ask for a nested list object, you're getting a reference.

Try something like this:
(My examples are just command line demos so I can test outside of emu)
Code:
#!/usr/bin/perl

my @CategoryNames = (Armor, Augments, Weapons, Offslots, Misc);

%Weapons = (
        "alpha" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "beta" =>    [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "gamma" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "delta" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
);

my %LevelList = (
        65 => "delta",
        50 => "gamma",
        30 => "beta",
         0 => "alpha",
    );
#my $ItemType = $CategoryNames [rand @CategoryNames];
my $ItemType = $CategoryNames [2];
my $LevelCategory = "delta";

my $ItemHash = \%$ItemType;
my $Item = ${$ItemHash}{$LevelCategory} [rand @{ ${$ItemHash}{$LevelCategory} }];

print "$Item\n";
Or you could do this:

Code:
#!/usr/bin/perl

my @CategoryNames = (Armor, Augments, Weapons, Offslots, Misc);

my %Categories = (
    "Armor" => {
        "alpha" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "beta" =>    [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "gamma" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "delta" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
    },
    "Augments" => {
        "alpha" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "beta" =>    [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "gamma" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "delta" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
    },
    "Weapons" => {
        "alpha" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "beta" =>    [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "gamma" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "delta" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
    },
    "Offslots" => {
        "alpha" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "beta" =>    [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "gamma" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "delta" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
    },
    "Misc" => {
        "alpha" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "beta" =>    [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "gamma" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
        "delta" =>   [50524,50525,50526,50527,50527,50529,50530,50531,50532,50533,50534,50535],
    }
);

my %LevelList = (
        65 => "delta",
        50 => "gamma",
        30 => "beta",
         0 => "alpha",
    );

my $LevelCategory = "delta";

my $ItemPool = $Categories{$CategoryNames[rand @CategoryNames]}{$LevelCategory};
my $Item = ${$ItemPool} [rand @{$ItemPool}];
print "$Item\n";
Note ${$reference} or @{$reference} syntax.
Reply With Quote