Автоматика пушек

Автоматические пушки отстреливают монстров в трех направлениях. Заменить человека не могут, но работают как хорошая защитная сигнализация. Продолжают невозмутимо стрелять, когда сбэшника откинуло через весь корабль от удара харибды или молоха. Пока пушки развлекают монстров, сбэшник успеет добежать до перископа и продолжить геноцид вторженцев.

Принцип работы автоматических пушек. 3 детектора движения настраиваем на те направления, которые проще всего задать в самой игре, не выходя в редактор. В идеальной ситуации это вертикальный отстрел и два горизонтальных. На практике придется немного извращаться.

При срабатывании детектора сигнал передается на компоненты «и», «+». Регулярным выражением определяем какой угол наводки выдавать пушке. Регулярные выражения позволяют избежать проблем в наводке, когда монстров много, и реагируют одновременно несколько детекторов. Всегда выбирается одно направление из нескольких. Осциллятор используется для лучшей работы детекторов движения (спасибо гайду Dwarf в стиме).

Необходимые предметы:

  • 3 детектора движения;
  • 3 «и»;
  • 2 «+»;
  • 3 RegEx;
  • 1 реле;
  • 1 осциллятор;
  • Много проводов (используйте кабельную коробку, иначе будет сложно).

Настройка детекторов движения и использование осциллятора

  • Устанавливаем детекторы движения. Детектор, отвечающий за вертикальный отстрел: разброс Х 70, разброс Y 1000, отступ обнаружения Х 0, отступ обнаружения Y 1000 (стреляем вверх), -1000 (стреляем вниз). Детектор, отвечающий за горизонтальный отстрел: разброс Х 1000, разброс Y 100, отступ обнаружения Х 1000 (стреляем вправо) или -1000 (стреляем влево). Это верно для работы в редакторе подлодок.
  • Если вы работаете в игре, обязательно проверяйте горизонтальный отстрел. У меня смещения работали криво, при одном и том же смещении один детектор засекает цель слева, второй справа. Поставьте на обнаружение человека, поплавайте и посмотрите, куда вращается пушка. Корректируйте смещения. Не забудьте перед этим убрать возможность стрельбы (достаньте снаряды из зарядника пушки или отсоедините провод от клеммы «вызвать в» пушки).
  • «Сигнал из» детектора движения ведем к «сигнал в 1» первого компонента «и».
  • Осциллятор. Тип выхода Pulse, частоту любую (ставлю 240). «Сигнал из» осциллятора соединяем с «сигнал в 2» первого «и».
  • Компонент «и». Верный выход 1, неверный выход 0. «Сигнал из» компонента «и» ведем к «сигнал в 1» первого компонента «+».
  • Повторяем эти манипуляции со вторым детектором движения. Соединяем его со вторым компонентом «и», который также связан с осциллятором. Выход второго компонента «и» ставим 10 (нужно для регулярных выражений). «Сигнал из» второго компонента «и» ведем к «сигнал в 2» первого компонента сложения.
  • Повторяем для третьего детектора движения. Соединяем его с третьим компонентом «и», связанным с осциллятором. Выход третьего компонента «и» ставим 100. «Сигнал из» третьего компонента «и» ведем к «сигнал в 1» второго компонента «+». «Сигнал из» первого компонента сложения ведем к «сигнал в 2» второго компонента сложения.

Как работает. Осциллятор «пульсирует» постоянно, детектор движения реагирует только на монстра. Когда два условия выполняются, соответствующий компонент «и» выдает сигнал 1, 10 или 100. Все сигналы от компонентов «и» складываются. Например, монстры справа и сверху. Получаем 0+10+100=110. Далее уже задача регулярных выражений определить какому направлению отдать приоритет.

Используем регулярное выражение для определения направления

  • «Сигнал из» второго компонента сложения ведем к «сигнал в» трех компонентов поиска регулярных выражений.
  • Первый RegEx. Будет искать число, заканчивающееся на 1. В выход пишем угол наводки пушки (180 — влево, 270 — вверх, 0 или 360 вправо, 90 — вниз. Неверный выход делаем пустым, иначе будет выдавать 0, что является направлением вправо. Убираем галочку длительный сигнал. Пишем регулярное выражение: \d*1\b
  • Второй RegEx. Будет искать число, заканчивающееся на 10. В выход пишем угол наводки пушки. Неверный выход делаем пустым. Убираем галочку длительный сигнал. Пишем регулярное выражение: \d*10$
  • Третий RegEx. Будет искать число, заканчивающееся на 100. В выход пишем угол наводки пушки. Неверный выход делаем пустым. Убираем галочку длительный сигнал. Пишем регулярное выражение: \d*100$
  • «Сигнал из» каждого компонента RegEx ведем к «сигнал в 1» компонента реле. «Сигнал из 1» компонента реле соединяем с «позиция в» пушки. После тщательной проверки работы смещений детекторов, «сигнал из 1» реле соединяем с «вызвать в» пушки.

Как работает. Мы получили число 110 в предыдущем примере. Сработает только второй компонент, так как число заканчивается на 10, и угол наводки данного RegEx будет приоритетным. Пушка будет отстреливать верхнего монстра, игнорируя правого.

Ручное отключение автоматики

Необходимые предметы:

  • 1 выключатель;
  • 1 провод.

Монтаж:

  • Выключатель вешаем рядом с перископом той пушки, чью автоматику будет контролировать.
  • «Сигнал из» выключателя проводим к «назначить состояние» реле. Выключатель горит красным — реле выключено, зеленым — автоматика готова тратить патроны и нервы сбэшника.

Определяем углы наводки пушки

Не всегда пушка стоит ровно и углы наводки красивые. Прикручиваем возле нужного перископа текстовый экран. Соединяем проводом «позиция из» перископа с «назначить текст» текстового экрана. Вращаем пушку, смотрим точные углы, которые не особо важны. Если пушка может развернуться влево на угол 168 градусов максимум, а вы указали 200, то пушка при срабатывании детектора движения вывернется ровно на 168 градусов.

Отстреливаем выбранный сектор

  • Легкий случай. Нужно отстрелять плюс минус определенную зону. Например, правой верхней пушкой контролируем пространство над верхним шлюзом на Косатке 2. Устанавливаем детектор движения в обшивке потолка стыковочного порта, задаем разброс Х 200, разброс Y 200, смещение Х 0, смещение Y 200. На выход компонента поиска регулярных выражений пишем 200.
  • Сложный случай. Вам захотелось, чтобы пушка отстрелила морду монстру, который на 315 градусов (направление между вверх и вправо). Ставим два детектора движения с минимальным смещением по отношению друг к другу. Смещения и разбросы по Х ставим одинаковые, по Y у первого, допустим, разброс 400, смещение 400. У второго разброс 300, смещение 300. Соответственно мы получаем небольшую область, где действует первый детектор, но не дотягивается второй. Докручиваем логику. Если первый детектор (с большей зоной действия) активен, но второй детектор (с меньшей зоной действия) неактивен, пушка должна пальнуть под углом 315. Оба детектора связываем с осцилятором через компонент «и». Выход первого компонента «и» будет, например, 10, значит выход второго — любое число, кратное 10, от 20 до 80. Например, возьмем 40. Все это проводим через компоненты сложения, конечный результат отправляем в поиск регулярных выражений. Который будет посылать угол 315 и команду на отстрел только в случае, если число будет заканчиваться на 10. Если срабатывают оба детектора, то число после сложения будет 50, и компонент передаст пустой сигнал.
  • Клинический случай. Вы хотите выстроить полноценную сетку отстрела монстров по секторам. Идете в редактор подлодки, выбираете пушку, ставите нужную галочку «автоуправление», пушка живет своей жизнью. Отдыхаете. При необходимости идете на улицу и трогаете траву.

Примечания:

  • На практике такой автоматики пушек достаточно. Монстры чаще всего постоянно находятся в движении. Кого-нибудь пушка да подстрелит. С шипостаями автоматика показывают себя вообще неплохо, не нервничает, рука не дрожит, стреляет по движению. Но если ваш девиз «один выстрел — один труп», то автоматические пушки не для вас.
  • Если вы заметили, что ваша автоматика стремительно уменьшает количество дармоедов на корабле, проверьте настройки детекторов движения. Реагировать детектор должен только на монстров, а трупы и дармоедов игнорировать.
  • Смещения и разбросы детекторов движения корректируем в зависимости от места установки, толщины обшивки корабля и поставленных целей. Разброса 100 и смещения 100 зачастую недостаточно для эффективной работы пушек, корректируем по ситуации.

Оставьте комментарий