Wiremod и Advanced Duplicator 2 в Garry’s Mod: гайд для начинающих

Wiremod — это аддон для Sandbox-режима Garry’s Mod, который добавляет «электронику»: кнопки, датчики, логические элементы, экраны и двигатели, соединяемые проводами. Advanced Duplicator 2 (AdvDupe2) — отдельный инструмент для той же связки авторов, который сохраняет готовую постройку в файл и загружает её заново на этом же или другом сервере. Вместе они позволяют собрать что угодно — от двери на кнопке до машины с приборной панелью — и не строить это каждый раз с нуля.

Что такое Wiremod и зачем он нужен

В обычном Sandbox пропы можно скручивать Weld, приваривать осями и управлять только через физику. Wiremod добавляет entity с входами и входами-выходами (input/output): у одних есть кнопка или датчик, который выдаёт число, у других — мотор или экран, который это число принимает. Провод — это просто связь «выход одного устройства → вход другого», через неё передаются числа, векторы, углы, строки или целые entity.

На Wiremod обычно строят: автоматические двери и лифты, светофоры и табло, простую сигнализацию, машины с приборной панелью (спидометр, фары, поворотники), турели с наведением на цель, мини-компьютеры на чипе Expression 2. Ничего из этого не требует программирования на Lua — базовые схемы собираются проводами и готовыми компонентами.

Установка

Есть два способа получить Wiremod, и они не исключают друг друга.

  • Мастерская Steam. Официальная стабильная версия называется «Wiremod», её поддерживает команда разработчиков Wiremod. Отдельно есть «Wiremod Canary» — версия с более свежими правками, синхронизированная с GitHub, её ставят, если нужны последние исправления, а не стабильность. Advanced Duplicator 2 в Мастерской так и называется — «Advanced Duplicator 2»; первая версия (Advanced Duplicator без «2») официально снята с поддержки, вместо неё разработчики рекомендуют именно AdvDupe2.
  • GitHub. Исходники лежат в репозиториях wiremod/wire и wiremod/advdupe2 организации wiremod. Такой вариант нужен, если вы администрируете сервер и хотите держать аддон в git (например, как сабмодуль) или собираете сборку с конкретной версией/патчем, а не тем, что сейчас лежит в Мастерской.

Для одиночной игры или своего сервера, где вы просто играете, достаточно подписаться на «Wiremod» и «Advanced Duplicator 2» в Мастерской. Если вы держите публичный сервер, аддоны обычно добавляют коллекцией Мастерской и синхронизируют игрокам через resource.AddWorkshop в конфиге — этот шаг разобран в гайде про создание своего сервера Garry’s Mod.

После установки инструменты Wiremod появляются в меню построения: откройте его клавишей Q, справа переключитесь на вкладку инструментов и найдите категорию Wire — там будет сам инструмент проводов (Wire Tool), отладчик (Wire Debugger) и остальные вспомогательные тулзы. Advanced Duplicator 2 находится в этом же меню отдельным пунктом, а сохранённые постройки — на вкладке спавн-меню с его же названием.

Базовые понятия

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

Wire Tool — основной инструмент. Наведите на устройство-источник (например, кнопку), левым кликом выберите нужный выход из списка (если их несколько, они перебираются правым кликом), затем наведите на устройство-приёмник и кликните по нужному входу. Между ними протянется провод. Если кликнуть по уже существующему проводу тем же инструментом, его можно удалить.

Wire Debugger — отдельный инструмент из той же категории Wire: наведите им на вход или выход любого устройства, и в углу экрана появится текущее значение, которое оно передаёт или принимает. Это главный способ понять, почему схема не работает — вместо того чтобы гадать, вы сразу видите, доходит ли сигнал и какой он.

Тип данныхЧто этоПример значения
numberЧисло (в том числе логическое — 0 или 1)1, 0, 42.5
vectorПозиция или направление в 3D(0, 0, 100)
angleПоворот (pitch, yaw, roll)(0, 90, 0)
entityСсылка на конкретный объект в мирепроп, игрок, NPC
stringТекст"Открыто"

Большинство устройств Wiremod работают с number — это универсальный тип для «включено/выключено» и для обычных чисел. Векторы и углы нужны там, где важна геометрия (наведение турели, позиция голограммы), entity — когда устройство должно «запомнить» конкретный объект (например, кого обнаружил датчик).

Основные компоненты

Ниже — реально существующие устройства Wiremod (сверено с исходниками wiremod/wire), с которых стоит начинать. Полный список гораздо больше — часть найдёте в том же меню Wire в подкатегориях.

КомпонентЧто делаетПример использования
Wire ButtonКнопка: выдаёт 1 при нажатии, 0 в покое (или переключается, в зависимости от настройки)Открыть дверь, включить свет
Wire KeypadКодовая панель: выдаёт сигнал, когда введён правильный кодКодовый замок на двери
Wire NumpadВыдаёт сигнал при нажатии заданной клавиши цифровой клавиатурыУправление механизмом с клавиатуры
Wire Constant ValueПостоянное значение, которое можно менять вручную через менюЗадать порог срабатывания датчика
Wire GateЛогические и арифметические операции (сложение, сравнение, «Timer», «Pulser», «Delay» и другие типы через выпадающий список)Задержка перед закрытием двери, счётчик, сравнение чисел
Wire RangerДальномер: измеряет расстояние по лучуАвтоматическая дверь, датчик приближения
Wire Target FinderИщет ближайшую цель (игрока, NPC) в радиусе и конусе обзораНаведение турели
Wire Screen / Wire Text Screen / Wire Console ScreenЭкраны: обычный (показывает одно-два числа), текстовый и консольный (построчный вывод)Табло, счётчик очков, вывод показаний датчика
Wire HoverballСоздаёт подъёмную силу — «парит» проп на заданной высотеХовербайк, летающая платформа
Wire Thruster / Wire Vector ThrusterРеактивная тяга в одном направлении или по векторуДвигатель лодки, самолёта, ракеты
Wire WheelМотор-колесо с управлением скоростью и направлениемПривод машины
Wire Pod ControllerПривязывается к креслу и выдаёт нажатия клавиш сидящего игрока (W, A, S, D и др.)Управление машиной или турелью с места водителя
Wire Hydraulic ControllerУправляет гидравликой (linear/rope), плавно двигает часть конструкцииПодъёмная рампа, поршень пресса
Wire Lamp / Wire LightИсточник света, включаемый и настраиваемый по входуИндикатор состояния, фары, светофор
Wire Sound EmitterПроигрывает звук по сигналуСирена сигнализации, звук выстрела
Wire Expression 2 (E2-чип)Программируемый чип на языке Expression 2 — заменяет десяток простых устройств одним скриптомСложная логика, которую неудобно собирать гейтами

Если нужного устройства нет в списке инструментов — возможно, вы не подписаны на «Wire Extras», отдельный community-репозиторий с дополнительными, менее проверенными аддонами (не всё оттуда стабильно и поддерживается официально).

Практика: три мини-проекта

Собирайте это на карте без построек других игроков — например, gm_freebuild или gm_construct. Здесь — только последовательность шагов, без точных цифр настроек: их вы подберёте на месте через панель свойств устройства.

1. Дверь на кнопке

  1. Поставьте проп-дверь (можно взять готовую дверную модель или обычный проп-плиту) и приморозьте петлю осью через Axis или подвесьте на Hinge из стандартного меню построения.
  2. Заспавните Wire Button рядом со входом.
  3. Добавьте то, что будет двигать дверь: Wire Hydraulic между рамой и дверью или Wire Motor на петле.
  4. Возьмите Wire Tool, кликните по входу гидравлики или мотора, затем по выходу кнопки (для двери удобнее кнопка в режиме переключателя — Toggle).
  5. Проверьте Wire Debugger’ом, что при нажатии кнопки на входе двери меняется значение с 0 на 1.

2. Счётчик на Text Screen

  1. Заспавните Wire Text Screen и Wire Button рядом.
  2. Добавьте Wire Gate из группы памяти с типом «Increment» или «Up/Down Counter» — он увеличивает число при каждом импульсе.
  3. Проведите провод: кнопка → вход гейта, выход гейта → вход текстового экрана.
  4. Каждое нажатие кнопки должно увеличивать число на экране на единицу — если не работает, Wire Debugger покажет, на каком именно проводе теряется сигнал.

3. Простая машина на Wire Wheel

  1. Соберите шасси из пропов и приварите к нему две-четыре модели колёс через Weld.
  2. На каждое колесо поставьте Wire Wheel (в его меню настраивается, к какому пропу он «привязан» как колесо).
  3. Поставьте кресло и Wire Pod Controller, привяжите контроллер к креслу и заведите его выходы W/S на входы Wire Wheel — так машина будет ехать по нажатию клавиш водителя.
  4. Протестируйте на ровной площадке вроде gm_carconstruct — карты специально сделаны для обкатки самодельных машин.

Если постройка на любом из этапов начинает разваливаться или дёргаться — скорее всего, часть пропов не сварена (Weld) или не выставлен No Collide между соприкасающимися деталями. Пример гораздо более сложной механики, собранной этими двумя аддонами вместе, — в карточке Five Nights At Garry’s [Wire/AdvDupe2].

Expression 2 (E2)

Expression 2 — язык программирования внутри Wiremod. По сути, это чип (Wire Expression 2), который вы спавните как обычное устройство, а затем открываете его редактор и пишете код вместо того, чтобы городить схему из десятка гейтов. Официальная документация по синтаксису и функциям ведётся на вики репозитория wiremod/wire на GitHub.

Чтобы начать: выберите инструмент Expression 2 в категории Wire и откройте им редактор (правым кликом) — появится отдельное окно с текстовым полем и подсветкой синтаксиса. Напишите и сохраните скрипт, затем левым кликом поставьте чип в мир. Каждый скрипт начинается со строки @name с названием и объявлений входов/выходов через @inputs и @outputs.

Пример — лампа, которая мигает раз в секунду (без входов, только один выход):

@name Мигающий маяк
@outputs State

interval(1000)

State = !State

interval(1000) задаёт, что чип «думает» раз в 1000 миллисекунд, а State = !State каждый раз инвертирует значение — на выходе получится сигнал, который переключается между 0 и 1. Останется соединить выход State с входом Wire Lamp или Wire Light.

На многих серверах для E2 действует лимит операций (ops) за такт — если чип считает слишком много за раз, сервер может его остановить или замедлить, чтобы не просаживать тикрейт. Точные цифры настраивает администратор, а на части серверов Expression 2 вовсе выключен или урезан по функциям — если чип не спавнится или падает с ошибкой, дело скорее в правилах сервера, чем в вашем коде.

Advanced Duplicator 2

AdvDupe2 — инструмент для копирования, сохранения и повторной вставки построек целиком, вместе со сваркой, верёвками и Wire-соединениями между пропами. Это удобнее, чем пересобирать сложную конструкцию заново каждый раз, когда карта перезагружается.

  • Копирование одной постройки. Возьмите инструмент Advanced Duplicator 2 и кликните правой кнопкой по любому пропу нужной конструкции — в дубликат попадёт он сам и всё, что физически с ним связано (сварка, верёвки, ограничители). У курсора появится полупрозрачный «призрак» скопированного.
  • Area Copy (копирование области). Если детали не связаны между собой физически, используйте копирование области: инструмент захватывает всё внутри рамки заданного размера. Как включается режим и меняется размер рамки, показано в панели настроек инструмента и на вики AdvDupe2; там же можно ограничить захват только своими пропами.
  • Сохранение. Откройте вкладку Advanced Duplicator 2 в спавн-меню, кликните правой кнопкой по папке (или создайте свою) и выберите сохранение. Файлы постройки хранятся как .txt в папке garrysmod/data/advdupe2/ внутри директории игры.
  • Загрузка и вставка. Дважды кликните по сохранённому файлу в том же меню — появится призрак-превью; левый клик ставит постройку в мир. Если сервер поддерживает, вместо мгновенной вставки можно создать «Contraption Spawner» — отдельную entity, которая заспавнит вашу постройку по нажатию, с настраиваемой задержкой между спавнами.

На чужих серверах вставка дублей обычно ограничена: лимит пропов за раз, запрет некоторых типов entity или права определённой группы игроков — если постройка не вставляется целиком, дело чаще всего в этом, а не в повреждённом файле.

Частая проблема после загрузки — розовые или чёрные «error»-модели вместо частей постройки. Это значит, что дубликату не хватает контента: он был собран из моделей аддона, которого у вас нет. Решение — определить, какой аддон использовался, и подписаться на него в Мастерской легально, а не подменять модели сторонними паками.

Частые проблемы

ПроблемаВероятная причина и что проверить
Инструментов Wire нет в меню (Q)Аддон не подписан или не скачался — проверьте подписку на «Wiremod» в Мастерской и список аддонов в главном меню игры.
Провода не соединяютсяКликаете не по тому входу/выходу или устройства несовместимы по типу данных (например, пробуете подать vector туда, где ждут number) — проверьте Wire Debugger’ом.
Expression 2 не спавнится или выдаёт ошибку по функцииСервер ограничивает E2 — часть функций может быть отключена администратором; проверьте на другом сервере или в одиночной игре.
Чип E2 «тормозит» или перестаёт работатьПревышен лимит операций (ops) за такт — упростите код, уберите тяжёлые циклы, разбейте логику на несколько чипов.
Постройка разваливается или трясётсяНе все детали сварены (Weld) или не выставлен No Collide между соприкасающимися пропами; проверьте физику до подключения Wire.
Сервер запрещает Wire целикомНекоторые серверы отключают Wiremod или ограничивают набор устройств по правилам — уточните у администрации, какие аддоны разрешены.

Итог / чек-лист

  • Подпишитесь на «Wiremod» и «Advanced Duplicator 2» в Мастерской Steam (или клонируйте wiremod/wire и wiremod/advdupe2 с GitHub для сервера).
  • Инструменты — в меню Q, вкладка Wire; проверяйте сигналы Wire Debugger’ом, а не на глаз.
  • Начните с простого: кнопка → дверь, счётчик на Text Screen, машина на Wire Wheel.
  • Для сложной логики используйте Expression 2 — но помните про лимит операций на серверах.
  • Сохраняйте готовые постройки через Advanced Duplicator 2, чтобы не пересобирать их заново.
  • Если постройка тормозит или крупная — посмотрите гайд про FPS в Garry’s Mod и не забывайте про легальные способы получения контента при загрузке чужих дублей.

Частые вопросы

Wiremod бесплатный?

Да, это бесплатный аддон в Мастерской Steam — платите только за саму игру Garry’s Mod, если она у вас ещё не куплена.

Нужен ли Expression 2, чтобы пользоваться Wiremod?

Нет. Большинство схем — двери, табло, машины, турели — собираются обычными устройствами и проводами без единой строчки кода. E2 нужен только для сложной или компактной логики, которую неудобно собирать гейтами.

Чем Advanced Duplicator 2 отличается от обычного Duplicator?

Встроенный Duplicator тоже умеет копировать и сохранять постройки, но Advanced Duplicator 2 гибче: копирование по области (Area Copy), надёжная работа с большими постройками и Wire-соединениями, файлы, которые удобно переносить между картами, компьютерами и серверами.

Почему после загрузки дубликата часть пропов выглядит как розово-чёрные текстуры?

Это значит, что в постройке использованы модели аддона, которого у вас нет. Нужно определить недостающий аддон и подписаться на него легально — вставлять чужие ресурсы через пиратские паки не стоит: часть таких паков ещё и небезопасна.

Где хранятся сохранённые дубликаты Advanced Duplicator 2?

В папке garrysmod/data/advdupe2/ внутри каталога игры — файлы там в текстовом формате .txt, их можно скопировать на другой компьютер или сервер вручную.

Можно ли ставить Wiremod на выделенный сервер?

Да, аддон полностью серверный по своей логике: он ставится и на сервер, и клиентам через коллекцию Мастерской (или git-клон в папке аддонов), после чего игроки видят и используют устройства так же, как в одиночной игре.

Почему администратор сервера ограничивает Expression 2?

Чип E2 выполняется на сервере и может нагружать его при неаккуратном коде (тяжёлые циклы, лишние вычисления каждый такт). Поэтому многие сервера включают лимит операций или отключают часть функций — это защита от лагов и потенциальных вредоносных скриптов, а не блажь администрации.

Стабильная версия Wiremod или Canary — что ставить?

Для обычной игры и своего небольшого сервера подходит стабильная «Wiremod» из Мастерской. «Canary» синхронизирована с последними изменениями на GitHub и годится, если вам нужны свежие исправления раньше, чем они попадут в стабильный релиз, — ценой чуть большей вероятности временных багов.