Код: Выделить всё
rwto x y r
r - радиус области
Хз насколько он нужен.. Но если что)
ЗЫ: код частично(почти полностью) украден из плагина rw
Код: Выделить всё
package rwto;
use strict;
use Globals;
use Field;
use AI;
use Log qw(message warning error debug);
use Translation;
Plugins::register('rwto', 'walks to a random point in radius 10', \&Unload);
my $chooks = Commands::register(
['rwto', "RW plugin", \&commandHandler]
);
sub commandHandler {
my (undef, $args) = @_;
my ($arg1, $arg2, $arg3) = $args =~ /^(\d+) (\d+).?(\d+)?$/;
if ($arg1 eq "" || $arg2 eq "") {
error T("Wrong syntax\n");
}else{
my ($randX, $randY);
$arg3=($arg3 eq ""?$config{rwto_rad}:$arg3);
AI::clear(qw/move route mapRoute/);
my $i = 500;
do {
$randX = $arg1+int(rand($arg3)-$arg3/2);
$randY = $arg2+int(rand($arg3)-$arg3/2);
} while (--$i && !$field->isWalkable($randX, $randY));
if ($i) {
message TF("Walking to %i %i\n", $randX, $randY);
ai_route($field{name}, $randX, $randY,
maxRouteTime => $config{route_randomWalk_maxRouteTime},
attackOnRoute => 2,
noMapRoute => ($config{route_randomWalk} == 2 ? 1 : 0) );
}
}
}
sub Unload {
Commands::unregister($chooks);
}