Всем привет! С вами Jesulin, и для вас, дорогие GMod-ддеры, я пишу эту статью. Сегодня мы напишем лёгкий код в Expression 2 и создадим чип для турели.
Требуемые инструменты:
-WireMod
-EasyPrecision (для точной расстановки деталей)
-PHX (пакет моделей)
-Прямые руки
-Базовое знание WireMod (умение подключать входы-выходы)
Требуемые инструменты:
-WireMod
-EasyPrecision (для точной расстановки деталей)
-PHX (пакет моделей)
-Прямые руки
-Базовое знание WireMod (умение подключать входы-выходы)
Цель урока
-Понять, что есть Expression 2 (далее - E2)
-Научится оформлять базовый код
-Научится создавать базовую турель через E2
-Понять, что есть Expression 2 (далее - E2)
-Научится оформлять базовый код
-Научится создавать базовую турель через E2
1. E2 - как и зачем?
Expression 2 - самый сильный инструмент Wire Mod. Это язык программирования, благодаря которому вы сможете заменить тучу гейтов (Gate) одним несчастным чипом. На E2 можно написать что угодно - от базового Hello World вплоть до создания рабочей ОС прямо в игре. На данный момент мы не будем создавать ни Hello World, ни ОС. К ОС вы ещё не готовы, а Hello World не будет иметь практического применения как такового. Нам нужно что-то интересное и, если можно, полезное.
2. Код, оформление и написание
Я так полагаю, что меню вы открывать научились, равно как и провода класть.
Заходим в меню Wire>Wire - Control>Chip - Expression 2
Просто выбираем и возвращаемся в меню. Жмём правую кнопку мыши, и - та-да! Получаем вот это вот:
Заходим в меню Wire>Wire - Control>Chip - Expression 2
Просто выбираем и возвращаемся в меню. Жмём правую кнопку мыши, и - та-да! Получаем вот это вот:
Нажмите выделенную кнопочку. Сотрите всё, что выделено серым. Это - комментарий, он нужен для того, чтобы не потеряться в коде. В нашем случае их можно не применять, так как код у нас будет простой. Но тем не менее, перед комментарием ставят символ #, и он значит что данный отрывок кода использоваться не будет.
Приступим непосредственно к коду:
У нас пять строчек - самые важные данные кода.
name - Имя чипа, которое будет использоваться (например - name Turret Chip)
input - Входы для проводов, пишутся через пробел (например - input A S)
output - Выходы для проводов, также пишутся через пробел (например - output Run)
persist - Внутренние переменные, через пробел. Мы их пока что использовать не будем (например - persist SomeValue)
trigger - пока что это вам совсем не нужно.
Приступим непосредственно к коду:
У нас пять строчек - самые важные данные кода.
name - Имя чипа, которое будет использоваться (например - name Turret Chip)
input - Входы для проводов, пишутся через пробел (например - input A S)
output - Выходы для проводов, также пишутся через пробел (например - output Run)
persist - Внутренние переменные, через пробел. Мы их пока что использовать не будем (например - persist SomeValue)
trigger - пока что это вам совсем не нужно.
3. Приступаем к написанию кода
База оформления готова. Теперь непосредственно к самому коду.
В нашем чипе мы будем использовать функцию if then else
Выглядеть готовый код будет так:
В нашем чипе мы будем использовать функцию if then else
Выглядеть готовый код будет так:
Ну что же, создаём чип для контроля поворота турели!
@name Turret
@inputs A D
@outputs Run Break
if (A==1) {Run=1} else {if (D==1) {Run=-1} else {Run=0}}
Итак, что же значит наш код?
Начнём с того, что функция if then else оформляется именно так:
Начнём с того, что функция if then else оформляется именно так:
if (условие) {тогда} {или}
Условие пишется в скобках:
(A==1)
A - Указанный в Inputs вход. Также можно использовать выражения типа A>B; A<B и тому подобное (b - переменная или число). Учтите, в условии пишем два знака "=". Без пробелов.
В нашем случае, условие будет выполнено, если во вход A подается сигнал 1. Надеюсь, что более детально обьяснять не потребуется.
(A==1)
A - Указанный в Inputs вход. Также можно использовать выражения типа A>B; A<B и тому подобное (b - переменная или число). Учтите, в условии пишем два знака "=". Без пробелов.
В нашем случае, условие будет выполнено, если во вход A подается сигнал 1. Надеюсь, что более детально обьяснять не потребуется.
Тогда - функция, которая будет выполнятся при выполненном условии:
{Run=1}
Run - Указанный в Outputs выход. Значит, при выполнении условия в выход Run подаётся сигнал.
{Run=1}
Run - Указанный в Outputs выход. Значит, при выполнении условия в выход Run подаётся сигнал.
Или - функция, которая будет выполнятся если условие НЕ выполнено:
else {Run=0}
Учтите то, что в Тогда и Или можно впихнуть ещё одну функцию - вот именно благодаря этому и будет работать наша турель. Не забудьте про пробел перед else.
else {Run=0}
Учтите то, что в Тогда и Или можно впихнуть ещё одну функцию - вот именно благодаря этому и будет работать наша турель. Не забудьте про пробел перед else.
Попробуйте разобрать уже данный выше код:
if (A==1) {Run=1} else {if (D==1) {Run=-1} else {Run=0}}
Старайтесь понять принцип. Можете даже рисовать на бумаге алгоритмы. Если вы не поняли принципа - я объясню.
Если в A поступает сигнал 1, то переменная Run подаёт на выход сигнал 1. Если же сигнала в А нет (равен нулю), то проверяем наличие сигнала 1 в D. Если он есть, то Run выдаёт -1. Если же сигнала в D нет, то Run не выдаёт сигнала (ноль).
Если в A поступает сигнал 1, то переменная Run подаёт на выход сигнал 1. Если же сигнала в А нет (равен нулю), то проверяем наличие сигнала 1 в D. Если он есть, то Run выдаёт -1. Если же сигнала в D нет, то Run не выдаёт сигнала (ноль).
Перепроверьте код. Каждый пробел и каждая скобка должны быть на месте. Попробуйте поставить чип - выйдите из редактора кода и щёлкните левой кнопкой мыши. Если выдаёт ошибку и чип не создаётся - перепроверьте. Войдите в редактор правой кнопкой мыши.
4. Конструкция турели.
Нам нужен пакет моделей PHX и инструмент EasyPrecision.
Из чего мы будем конструировать наш девайс:
Из чего мы будем конструировать наш девайс:
Начнём!
Создайте Wire Wheel. Вы, надеюсь, знаете, где его искать?
Характеристики - за модель возьмите что-нибудь плоское. Я взял часики. Не волнуйтесь, видно их не будет.
Torque - 123, Friction - 1. Можете удвоить скорость, но сильно не увлекайтесь. Мои характеристики обеспечивают ей довольно медленный поворот, но вполне нормальное торможение, а значит и точность.
Характеристики - за модель возьмите что-нибудь плоское. Я взял часики. Не волнуйтесь, видно их не будет.
Torque - 123, Friction - 1. Можете удвоить скорость, но сильно не увлекайтесь. Мои характеристики обеспечивают ей довольно медленный поворот, но вполне нормальное торможение, а значит и точность.
Создаём из пакета PHX следующие модели:
General Construction Props - Metal_Plate1 и Metal_Plate2x2
Specialized Construction Props - tri1x1x1
В Vehicles создаём Jeep Seat, или другое сидение по вашему желанию.
General Construction Props - Metal_Plate1 и Metal_Plate2x2
Specialized Construction Props - tri1x1x1
В Vehicles создаём Jeep Seat, или другое сидение по вашему желанию.
Теперь соединяем!
Берём платформу 2х2 и с помощью EasyPrecision Weld-им её к центру колеса.
Получаем вот это вот:
Берём платформу 2х2 и с помощью EasyPrecision Weld-им её к центру колеса.
Получаем вот это вот:
Далее - Присоединяем треугольный каркас к платформе. Ровненько, с помощью EasyPrecision Weld-им её как вам удобно. Мне нравится вот так:
Теперь возьмём единичную платформу, и прикрепим её так:
Осталось немного - прикрепляем Wire Turret, характеристики ваши и только ваши, и крепим куда захотим на единичную платформу. Я сделал так:
Теперь создаём Наш чип, ставим его где-нибудь на той же платформе.
После него создаём Advanced Pod Controller, правой кнопкой мыши соединяем его с выбранным вами креслом (само кресло крепить пока что не будем):
После него создаём Advanced Pod Controller, правой кнопкой мыши соединяем его с выбранным вами креслом (само кресло крепить пока что не будем):
5. Провода
Пришло время соединить всю турель. Выбирайте инструмент Wire Advanced (и не забудьте в настройках выставить Width на 0 чтобы провода не было видно) и соединяйте. Но для начала поднимите платформу в воздух, чтобы вы могли подключить провода к колесу, типа этого:
Теперь, соединяем. Берём вайр и соединяем:
E2 Chip "A" - Advanced Pod Controller "A"
E2 Chip "D" - Advanced Pod Controller "D"
Wheel "A:Go" - E2 Chip "Run"
Wheel "B:Break" - Advanced Pod Controller "Space"
Turret "Fire" - Advanced Pod Controller "Space"
E2 Chip "A" - Advanced Pod Controller "A"
E2 Chip "D" - Advanced Pod Controller "D"
Wheel "A:Go" - E2 Chip "Run"
Wheel "B:Break" - Advanced Pod Controller "Space"
Turret "Fire" - Advanced Pod Controller "Space"
Прикрепляйте кресло Weld-ом туда, куда вам удобно.
Итак, теперь если вы всё сделали правильно, то садясь на кресло вы получаете полный контроль над турелью.
Итак, теперь если вы всё сделали правильно, то садясь на кресло вы получаете полный контроль над турелью.
6. Последние штрихи.
-За передней панелью вам вряд ли будет хорошо видно. Сделаем её невидимой с помощью инструмента "Colour". Для этого выставьте всё на значения "0" и кликните на платформу.
-Управление можно изменить подключив тормоз (break) и огонь турелей (fire) на другой выход в Advanced Pod Controller.
-Скорость колеса советую увеличить.
-Советую применить Physical properties. Выставьте материал колеса "ice", и уберите галочку с "gravity Toggle"
Турель будет выглядеть вот так:
-Управление можно изменить подключив тормоз (break) и огонь турелей (fire) на другой выход в Advanced Pod Controller.
-Скорость колеса советую увеличить.
-Советую применить Physical properties. Выставьте материал колеса "ice", и уберите галочку с "gravity Toggle"
Турель будет выглядеть вот так:
Если есть какие вопросы - прошу в комментарии.
Надеюсь, что тутор вам понравился. Удачи!
Надеюсь, что тутор вам понравился. Удачи!
Teranozaur, требуется WireMod. Поищи его, он довольно часто попадается.
И не надо строить из себя крутых программистов -_-
Ред. WebSter
Зачем брейк, если не юзается? Экшн результы тоже в константы.
боюсь представить что в сложных алгоритмах у вас, если вы даже с примитивными конструкциями пользоваться не умеете.
Ред. God_of_light
Run - вращает в одну сторону
Break - вращает в другую
Начет:
К тому же зачем вся ругань и крики. Jesulin же сказал что учится, совсем недавно работает с кодом. Кинули бы ему ссылки на статьи по кодингу, или еще чего.
Также должен сказать спасибо за правильное оформление конструкции. Выглядит куда проще и приятнее глазу.
God_of_light: