PDA

Просмотр полной версии : plugin: lockMap.pl


4epT
27.11.2009, 13:18
плагин предназначен для смены lockMap по таймауту

В конфиг пишется:

lockMap (map name) {
x
y
randX
randY
timeout (время в секундах пребывания на этой карте, "0" или "пустое значение" - вечно)
config (список параметров и значений конфига для этой карты)
}

Пример1:
lockMap geffen {
timeout 1000
}
lockMap payon {
}
Сначало бот будет в Geffen на 1000 секунд, а потом пойдёт в Payon. Т.к. для Payon не указано значение timeout, то бот там и останется.

Пример2:
lockMap geffen {
timeout 1000
}
lockMap payon {
timeout 1000
}
В этом примере бот будет менять локации каждые 1000 секунд. Таких блоков можно указать сколько угодно.

Пример3:
lockMap geffen {
timeout 1000
config teleportAuto minAggressives 10, sellAuto_npc geffen_in 302 24
}

В этом примере показано как правильно сипользовать параметр "config"

# licensed under gpl by joseph
# http://bibian.ath.cx/openkore/viewtopic.php?t=9784
package lockMap;

use strict;
use Globals;
use Utils qw(timeOut);
use Log qw(message);

Plugins::register('lockMap', 'lockMap_#', \&on_unload);

my $hooks = Plugins::addHooks(
['AI_pre', \&ai_hook, undef]
);

sub on_unload {
Plugins::delHooks($hooks);
}

our $lockMap = {};

sub ai_hook {
if ($config{lockMap_0} && timeOut($lockMap)) {
nextMap();
}
}

sub nextMap {
$lockMap->{pos}++;
$lockMap->{pos} = 0 if (!$config{"lockMap_$lockMap->{pos}"});

my $pos = $lockMap->{pos};

message "Switching lockMap to slot $pos: ".$config{"lockMap_$pos"}."\n";

$lockMap->{time} = time;
$lockMap->{timeout} = $config{"lockMap_$pos"."_timeout"};
$lockMap->{timeout} ||= 99999999999; # forever

$config{lockMap} = $config{"lockMap_$pos"};
$config{lockMap_x} = $config{"lockMap_$pos"."_x"};
$config{lockMap_y} = $config{"lockMap_$pos"."_y"};
$config{lockMap_randX} = $config{"lockMap_$pos"."_randX"};
$config{lockMap_randY} = $config{"lockMap_$pos"."_randY"};

if ($config{"lockMap_$pos"."_config"}) {
my @list = split(/ *,+ */, $config{"lockMap_$pos"."_config"});
my ($opt,$val);
foreach my $item (@list) {
($opt,$val) = $item =~ /(\S+) (.*)/;
$config{$opt} = $val;
message "[lockMap] Changed $opt to $val\n";
}
}
}

1;