Repository navigation
Logic Props Guide RU
Логические пропсы позволяют связать события на карте: например, открыть проход только после двух кнопок, мигать светом или запомнить в каком порядке игрок нажал кнопки. Зная то как работают базовые элементы можно сделать все - от простого кодового замка до компьютера
У обычных объектов карты и у логических пропов есть числа - Activation ID. Одинаковое число связывает отправителя с получателями
Кнопка (ID 10) -> AND: Input A = 10
Кнопка (ID 11) -> AND: Input B = 11
AND: Output = 20 -> объект с ID 20
Никаких настоящих проводов размещать не надо. Когда объект посылает ID 10, все логические входы, у которых указан 10, получают сигнал
- Вход (Input A, Input B) - ID, который проп слушает
- Выход (Output, Q, /Q) - ID, который проп посылает дальше
-
-1означает «не подключено» - Один выход можно подключать к нескольким входам: просто укажи его ID во всех нужных полях
- Два разных источника можно завести в один вход: задай у обоих одинаковый ID
Логика видит лишь два состояния:
- 0 (LOW) - сигнала сейчас нет
- 1 (HIGH) - этот Activation ID пришёл в текущем логическом тике
Логический тик - очень короткий шаг игры. Пока источник удерживает HIGH, его выход отправляется каждый тик. Обычная кнопка обычно посылает короткий сигнал - на следующий тик её вход снова будет LOW
Это важно для ламп и других объектов, которые переключаются от каждого сигнала: не подключай к ним постоянный выход напрямую, иначе они будут быстро переключаться. Поставь между ними EDGE, чтобы превратить изменение состояния в один импульс
Для всех вентилей ниже поля одинаковы: Input A, Input B, Output. В таблице A и B - входы, а последняя колонка - состояние выхода
| A | B | AND | OR | XOR | XNOR | NAND | NOR |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
- AND (И): выход только когда активны оба входа
- OR (ИЛИ): выход, когда активен хотя бы один вход
- XOR (исключающее ИЛИ): выход, когда активен ровно один вход
-
NOT: (НЕ) имеет один
Inputи одинOutput; меняет сигнал наоборот: 0 становится 1, 1 становится 0 - XNOR: выход, когда входы одинаковы: оба 0 или оба 1
- NAND: всё, кроме случая, когда оба входа 1. Это инвертированный AND. Кстати из этого вентиля можно собрать все остальные вентили
- NOR: выход только когда оба входа 0. Это инвертированный OR
Постоянное значение (Константа)
-
Value = 1постоянно посылает свойOutput -
Value = 0ничего не посылает
Используй CONST = 1, когда нужно постоянно разрешить вход. Например, CONST -> T у T-триггера превращает каждый импульс CLOCK в переключение состояния
Автоматически чередует 0 и 1
-
Output- ID выходного сигнала -
Period- длительность полного цикла «выключено + включено» в секундах -
Initial HIGH- начать с 1 или с 0
При Period = 2 сигнал примерно секунду LOW и секунду HIGH. CLOCK сам по себе - постоянный мигающий уровень; для одного события на каждое включение поставь после него EDGE с Mode = 0
Преобразует смену состояния в один короткий импульс. Это особенно полезно перед лампой, дверью или любым объектом, который реагирует на единичную активацию
-
Input- наблюдаемый ID -
Output- ID одного импульса -
Mode:0- только переход 0 -> 1,1- только 1 -> 0,2- оба перехода
Пример мигающей лампы: CLOCK Output = 30 -> EDGE Input = 30, Output = 31, Mode = 0 -> лампа с ID 31. Лампа переключится один раз при каждом включении CLOCK
Не логический вентиль, но полезный проп для случайности. Когда получает свой Activation ID, он выбирает один ID из поля Random IDs и посылает его. В списке можно писать числа через запятую, пробел или ;, например: 40, 41, 42
Пример: кнопка ID 5 -> RND Activation ID = 5, Random IDs = 40,41,42 -> срабатывает один из трёх объектов
Обычный вентиль забывает вход на следующем тике. Эти пропсы умеют хранить 0 или 1, пока не придёт команда изменить его
У всех них:
- Q - обычный выход сохранённого состояния
- /Q - инвертированный выход: всегда противоположен Q
-
Initial Q - с чего начать после загрузки карты (
0или1)
Если Q = 1, активен Q; если Q = 0, активен /Q
-
S(Set) устанавливает Q в 1; -
R(Reset) устанавливает Q в 0; - если S и R пришли одновременно, состояние не меняется
Это лучший вариант для первой схемы «сделать что-то после двух кнопок по очереди». Например, каждая из кнопок может включать свою SR-защёлку; затем их Q подаются на AND. После нажатия обеих кнопок AND будет постоянно HIGH. Если цели нужен только один импульс, после AND добавь EDGE
На переходе CLK с 0 на 1 копирует состояние D в Q. Между тактами Q не меняется
Полезен, когда нужно «прочитать переключатель только по сигналу часов». Для простых дверей обычно не нужен
На каждом переходе CLK с 0 на 1:
- если
T = 1, меняет Q на противоположное - если
T = 0, ничего не меняет
Простейшее применение: CONST = 1 -> T, кнопка или EDGE -> CLK. Каждое нажатие будет чередовать Q: 0, 1, 0, 1…
На переходе CLK с 0 на 1 он смотрит на J и K:
| J | K | Что происходит с Q |
|---|---|---|
| 0 | 0 | оставить как было |
| 0 | 1 | установить 0 |
| 1 | 0 | установить 1 |
| 1 | 1 | переключить на противоположное |
Для первых схем удобнее SR или T; JK нужен, когда одновременно нужны режимы «установить», «сбросить» и «переключить»