Страница 1 из 1

rwto.pl - идти в рандомную клеточку из области вокруг клетки

Добавлено: Сб май 17, 2008 11:37 pm
Murko
Сори за тупое название темы.. Плагин, по комманде

Код: Выделить всё

 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);
}
!Возможно у меня кривой regexp в получении аргументов(но работает)

Добавлено: Вс май 18, 2008 12:29 am
Jerry
нормальные пацаны делают rwto x y r где r опционально

Добавлено: Вс май 18, 2008 12:43 am
Murko
готово

Добавлено: Вс май 18, 2008 1:47 am
Jerry
опционально - это значит можно указывать, а можно и не указывать. Если не указать - берется по умолчанию / из конфига :)

Добавлено: Вс май 18, 2008 6:28 am
Murko
Сделано

Re: Плагин пойти в рандомную клеточку из области вокруг клетки

Добавлено: Ср дек 10, 2008 3:41 am
nur
спасибо. пригадился