Guest User

Untitled

a guest
Jun 30th, 2018
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 6 3.91 KB | None | 0 0
  1. ################################################################
  2. # Автоматическое влючение зачистки/дайвинга v0.2
  3. #(c)Che 02.03.2012 и особая благодарность JlblCу
  4. # При обнаружении юнита со спец дейтсвием зачистить/зломать над планетой врага, начинает операцию.
  5. # Если же она уже проводится, то радостно об этом сообщает.
  6. # Так же сообщает об флотах в полете и не трогает их поку не прибудут на место.
  7. #
  8. # NB! Обязательно включить BB-code!!!
  9. #
  10.  
  11. my $fleet_name = "Месть%"; # задаем маску для флотов
  12.  
  13. # дальше ничего менять не нужно
  14. #===============================================================================
  15. # Скрипт
  16. #===============================================================================
  17. # Высчитывает количество флотов и сообщает об этом
  18. my @Fleets=$Empire->fleets->getFleetsByName($fleet_name);
  19. if (@Fleets == 0) {
  20.     push(@Log, [0,"[style=color: red]Не найдено ни одного флота с именем '$fleet_name'[/style]\n"] );  }
  21. else {
  22.     push(@Log, [0, 'Найдено флотов: '.@Fleets], [0,"\n"] );
  23. }
  24.  
  25. # рисует подробный лог
  26. push(@Log, [0,"[spoiler=Подробный лог]\n"], [0,"[ul]\n"] );
  27.  
  28. # Готовим сообщения
  29. my %messages=(
  30. 101 => ['Найдена пехота','Начинаем прочесывать планету','Планета уже прочесывается нашей пехотой'], # ищем пехоту и занимаемся ей,
  31. 105 => ['Найдена тяжелая пехота','Начинаем прочесывать планету','Планета уже прочесывается нашей тяжелой пехотой'], # ищем тяж.пеха и занимаемся им
  32. 106 => ['Найден дайвер','Начинаем взламывать сеть','Планета уже взламывается нашими хакерами'], # ищем дайвера и занимаемся им
  33. );
  34.  
  35. $Empire->fake(0);
  36. for $fleet (@Fleets) {
  37.     my $FlAr=$fleet->getProp('turns_till_arrival');
  38.     my $fleet_correct_name=$fleet->getProp('name');
  39.  
  40.     my ($fleet_id, $FlX, $FlY)=map $fleet->getProp($_), qw/id x y/; # ну не шмагла :)
  41.  
  42.     my $pl = $Empire->planets()->get($FlX,$FlY);
  43.     my $owner_id = $pl->getProp('owner_id');
  44.     next unless $Empire->dipRelation($owner_id) eq 0; # До сообщений о полёте к врагу
  45.  
  46.     if ($FlAr>0)
  47.     { # проверяем не в полете ли, если да, то дальше этот флот не обрабатываем
  48.         push(@Log, [3, "[style=color: red]Флот '$fleet_correct_name' id:$fleet_id находится в полете к [planet=$FlX:$FlY], проведение операций не возможно. Ходов до прибытия: $FlAr[/style]\n"] );
  49.         next
  50.     }
  51.     push(@Log, [3,"[style=color: gold]Флот '$fleet_correct_name' id:$fleet_id находится над планетой врага [planet=$FlX:$FlY][/style]"] );
  52.     foreach my $un ($fleet->getAllUnits()) {
  53.         foreach my $actions (@{$un->getActions()}) {
  54.             my $act=$actions->{action};
  55.             next unless exists $messages{$act};
  56.             my $msg=$messages{$act};
  57.             my $req=$actions->{request_id};
  58.             push(@Log, [3,"[style=color: gold] -> $msg->[0][/style]"] );
  59.             if (defined $req) {push(@Log, [0,"[style=color: gold] -> $msg->[2][/style]"] );next}
  60.             $un->performAction($act);
  61.             push(@Log, [0,"[style=color: green] -> $msg->[1][/style]"] );
  62.         }
  63.     }
  64.     push(@Log, [0,"\n"] );
  65. }
  66.  
  67. push(@Log, [0,"[/ul]\n"], [0,'[/spoiler]'] );
  68.  
  69. # Выводит все на экран
  70. $Empire->clearLog();
  71. $Empire->log(@$_) foreach @Log;
Add Comment
Please, Sign In to add comment