Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ################################################################
- # Автоматическое влючение зачистки/дайвинга v0.2
- #(c)Che 02.03.2012 и особая благодарность JlblCу
- # При обнаружении юнита со спец дейтсвием зачистить/зломать над планетой врага, начинает операцию.
- # Если же она уже проводится, то радостно об этом сообщает.
- # Так же сообщает об флотах в полете и не трогает их поку не прибудут на место.
- #
- # NB! Обязательно включить BB-code!!!
- #
- my $fleet_name = "Месть%"; # задаем маску для флотов
- # дальше ничего менять не нужно
- #===============================================================================
- # Скрипт
- #===============================================================================
- # Высчитывает количество флотов и сообщает об этом
- my @Fleets=$Empire->fleets->getFleetsByName($fleet_name);
- if (@Fleets == 0) {
- push(@Log, [0,"[style=color: red]Не найдено ни одного флота с именем '$fleet_name'[/style]\n"] ); }
- else {
- push(@Log, [0, 'Найдено флотов: '.@Fleets], [0,"\n"] );
- }
- # рисует подробный лог
- push(@Log, [0,"[spoiler=Подробный лог]\n"], [0,"[ul]\n"] );
- # Готовим сообщения
- my %messages=(
- 101 => ['Найдена пехота','Начинаем прочесывать планету','Планета уже прочесывается нашей пехотой'], # ищем пехоту и занимаемся ей,
- 105 => ['Найдена тяжелая пехота','Начинаем прочесывать планету','Планета уже прочесывается нашей тяжелой пехотой'], # ищем тяж.пеха и занимаемся им
- 106 => ['Найден дайвер','Начинаем взламывать сеть','Планета уже взламывается нашими хакерами'], # ищем дайвера и занимаемся им
- );
- $Empire->fake(0);
- for $fleet (@Fleets) {
- my $FlAr=$fleet->getProp('turns_till_arrival');
- my $fleet_correct_name=$fleet->getProp('name');
- my ($fleet_id, $FlX, $FlY)=map $fleet->getProp($_), qw/id x y/; # ну не шмагла :)
- my $pl = $Empire->planets()->get($FlX,$FlY);
- my $owner_id = $pl->getProp('owner_id');
- next unless $Empire->dipRelation($owner_id) eq 0; # До сообщений о полёте к врагу
- if ($FlAr>0)
- { # проверяем не в полете ли, если да, то дальше этот флот не обрабатываем
- push(@Log, [3, "[style=color: red]Флот '$fleet_correct_name' id:$fleet_id находится в полете к [planet=$FlX:$FlY], проведение операций не возможно. Ходов до прибытия: $FlAr[/style]\n"] );
- next
- }
- push(@Log, [3,"[style=color: gold]Флот '$fleet_correct_name' id:$fleet_id находится над планетой врага [planet=$FlX:$FlY][/style]"] );
- foreach my $un ($fleet->getAllUnits()) {
- foreach my $actions (@{$un->getActions()}) {
- my $act=$actions->{action};
- next unless exists $messages{$act};
- my $msg=$messages{$act};
- my $req=$actions->{request_id};
- push(@Log, [3,"[style=color: gold] -> $msg->[0][/style]"] );
- if (defined $req) {push(@Log, [0,"[style=color: gold] -> $msg->[2][/style]"] );next}
- $un->performAction($act);
- push(@Log, [0,"[style=color: green] -> $msg->[1][/style]"] );
- }
- }
- push(@Log, [0,"\n"] );
- }
- push(@Log, [0,"[/ul]\n"], [0,'[/spoiler]'] );
- # Выводит все на экран
- $Empire->clearLog();
- $Empire->log(@$_) foreach @Log;
Add Comment
Please, Sign In to add comment