mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 17:51:28 +00:00
78 lines
1.9 KiB
Perl
78 lines
1.9 KiB
Perl
# plugin::check_handin($item1 => #required_amount,...);
|
|
# autoreturns extra unused items on success
|
|
sub check_handin {
|
|
my $hashref = shift;
|
|
my %required = @_;
|
|
foreach my $req (keys %required) {
|
|
if ((!defined $hashref->{$req}) || ($hashref->{$req} != $required{$req})) {
|
|
return(0);
|
|
}
|
|
}
|
|
foreach my $req (keys %required) {
|
|
if ($required{$req} < $hashref->{$req}) {
|
|
$hashref->{$req} -= $required{$req};
|
|
} else {
|
|
delete $hashref->{$req};
|
|
}
|
|
}
|
|
quest::clearhandin();
|
|
return 1;
|
|
}
|
|
|
|
sub check_mq_handin {
|
|
my $hashref = shift;
|
|
my %required = @_;
|
|
quest::resethandin();
|
|
foreach my $req (keys %required) {
|
|
$charges = $required{$req};
|
|
if ( !quest::handleturnin($req,$charges) )
|
|
{
|
|
return(0);
|
|
}
|
|
}
|
|
quest::completehandin();
|
|
return 1;
|
|
}
|
|
|
|
sub return_items {
|
|
my $hashref = plugin::var('$itemcount');
|
|
my $client = plugin::val('$client');
|
|
my $items_returned = 0;
|
|
|
|
my %ItemHash = (
|
|
0 => [ plugin::val('$item1'), plugin::val('$item1_charges'), plugin::val('$item1_attuned') ],
|
|
1 => [ plugin::val('$item2'), plugin::val('$item2_charges'), plugin::val('$item2_attuned') ],
|
|
2 => [ plugin::val('$item3'), plugin::val('$item3_charges'), plugin::val('$item3_attuned') ],
|
|
3 => [ plugin::val('$item4'), plugin::val('$item4_charges'), plugin::val('$item4_attuned') ],
|
|
);
|
|
|
|
foreach my $k (keys(%{$hashref}))
|
|
{
|
|
next if($k == 0);
|
|
my $rcount = $hashref->{$k};
|
|
my $r;
|
|
for ($r = 0; $r < 4; $r++)
|
|
{
|
|
if ($rcount > 0 && $ItemHash{$r}[0] && $ItemHash{$r}[0] == $k)
|
|
{
|
|
if ($client)
|
|
{
|
|
$client->SummonItem($k, $ItemHash{$r}[1], $ItemHash{$r}[2]);
|
|
$items_returned = 1;
|
|
}
|
|
else
|
|
{
|
|
# This shouldn't be needed, but just in case
|
|
quest::summonitem($k, 0);
|
|
$items_returned = 1;
|
|
}
|
|
$rcount--;
|
|
}
|
|
}
|
|
delete $hashref->{$k};
|
|
}
|
|
quest::clearhandin();
|
|
# Return true if items were returned
|
|
return $items_returned;
|
|
|
|
} |