Викия

GoRap Wiki

Wire Expression2

Обсуждение2
68статей
на этой вики
Stub.png Эта статья не переведена до конца. Пожалуйста помогите нам доперевести ее.
Спасибо!

ОсобенностиПравить

Wire Expression 2Править

Уникальный чип, функцию которого может задать сам игрок с помощью собственного языка программирования.

СинтаксисПравить

Синтаксис Expression 2 сильно изменился со времен прошлого Expression Chip, придется изучить немного больше команд, но это сделает ваши постройки намного более функциональными. Помните что как правило существует несколько способов написания кода, и задача может быть решена несколькими путями.

Синтаксис Пример Упрощенный Описание
##this is comment Все, что находится за знаком # считается комментарием и не учитывается при обработке кода
if () {} else {} if (A) {D=B} else {D=C} if (A) {D=B} если A истина то выполняем первую операцию, иначе вторую. else {} не обязателен, например: "if (A) {C=B}"
elseif () {} elseif (A) {B = C} Впереди обязательно должен быть if или elseif. Дополнительная проверка в случае ложности исходного утверждения
~ if(~Time & Time == 0) {DO stuff} Изменялось ли значение на входе между выполнениями?
$ Opitch = Pitch + ($Pitch *3) Возвращает разницу между выполнениями в виде числа. (Работает только с объявленными переменными типа number, vector, and angle)
++ if(Count == 2 {Count++} Count = Count + 1 Прибавляет 1 к заданной переменной.
-- if(Count == 3){Count--} Count = Count - 1 Вычитает 1 из заданной переменной.
+= if(Count == 4){Count += 2} Count = Count + 2 Прибавляет число после += к заданной переменной.
-= if(Count == 5) {Count -= 2} Count = Count - 2 Вычитает число после -= из заданной переменной.
( ? : ) D = (A ? B : C) Если A истина то возвращает B иначе C.
I if (A I B) {C = 1} Если A или B истина C=1.
& if (A & B) {C = 1} Если A и B истина C=1.
 ! if (!A) {B = 1} Должно предшествовать число. Возвращает 1 если A ложно (эквивалентно "A == 0").
Должно предшествовать число.
-> ->Input or ->Output Если вы используете его на входе, он возвращает 1, когда вход подсоединяется к чему либо. Если вы используете его на выходе, он возвращает количество входов присоединённых на выход.
#ifdef #ifdef entity():setAlpha(number) Проверяет может ли данная функция выполняться на сервере.
#else #else entity():setModel(string) Должно предшествовать #ifdef. Если данная функция не может использоваться на сервере запустится код после #else...
#endif #endif Должно предшествовать #ifdef или #else .Закрывает выражение #ifdef.

ПеременныеПравить

В E2, все входы, выходы и переменные должны быть объявлены с заглавной буквы:

Синтаксис Описание
@persist variable Это не будет работать, так как переменная "variable" объявлена со строчной буквы.
@persist Variable Это будет работать, так как переменная "Variable" начинается с заглавной буквы.

Выражение @triggerПравить

Выражение @trigger может выборочно разрешать и запрещать входам вызывать выполнение кода. Возможные значения: all/none, или список разрешенных входов

Синтаксис Описание
@trigger all всё по старому, изменение значения на входах всегда вызывает выполнение кода
@trigger none изменение значения на входах никогда не вызывает выполнение кода, его вызывает только таймер, и.т.п. функции
@trigger Time Button выполнение кода вызывается только при изменении значений на входах Time и Button

ЦиклыПравить

Синтаксис Пример Описание
while () {}while (A) {B++}Любые инструкции в фигурных скобках будет повторяться, пока условие в круглых скобках истинно. Если условие ложно, инструкции будут пропущены и E2 будет продолжаться с конца цикла. Заметим, что условие проверяется только в самом начале каждого цикла.
for () {} for (I = A, B[, C]) {} Добавляет значение C переменной для каждой итерации, пока она равна значению B. Если шаг C не указан, то он будет установлен на единицу. Обратите внимание, что А и В вычисляются только один раз - если они рассчитываются из переменных, что цикл устанавливает новые значения, это не изменит число итераций.
foreach () {}foreach(K,V:type=Table) {}Проверяет  каждый элемент указанного типа в таблице. Назначает ключ к К и значение V. Элементы, которые не имеют определенного типа будут пропущены. Элементы могут быть добавлены, удалены или изменены, однако добавляемые элементы не будут обрабатываться в текущем цикле. Только цикл по строке индексов при использовании таблицы.
continueif (A) {continue}Может быть использовано только в while/for/foreach цикле. Эта команда позволяет немедленно вернуться к началу цикла, пропуская следующие инструкции.
breakif (A) {break}Может быть использовано только в while/for/foreach цикле. Эта команда позволяет немедленно вернуться к выходу из цикла, пропуская следующие инструкции.

ПроизводительностьПравить

Были проведены некоторые тесты в игре:

~3.000.000/сек арифметических операций (+-*/) на числах, 2000 операций, 200 выполнений за 0.13сек

~850.000/сек арифметических операций (+-*/) на векторах, 2000 операций, 100 выполнений за 0.23сек

Горячие Клавиши РедактораПравить

Ctrl-Пробел Проверить (и переместить курсор на ошибку)
Ctrl-S Сохранить
Ctrl-Z Отменить
Ctrl-Y Вернуть
Ctrl-X Вырезать
Ctrl-C Копировать
Ctrl-V Вставить
Ctrl-A Выделить Всё
Ctrl-Up Прокрутить Вверх
Ctrl-Down Прокрутить Вниз
Ctrl-Left Прокрутить Влево
Ctrl-Right Прокрутить Вправо

Консольные командыПравить

Команда Описание
wire_expression2_model <model>Вручную меняет модель чипа
wire_expression2_reloadПерезагружает все расширения для E2, полезно для отладки своих расширений. Помните, что клиентские файлы в мультиплеере берутся из кэша g-mod.
wire_expression2_debug 0/1Включает режим отладки, который может быть полезен для разработчиков. Необходимо ввести "wire_expression2_reload" после изменения, чтобы сработало.
wire_expression2_extension_enable <extension>Включить определенное расширение
wire_expression2_extension_disable <extension>Выключить определенное расширение
wire_expression2_unlimited 0/1Включить/выключить ограничения по производительности

ТипыПравить

Expression2 использует несколько типов данных. По понятным причинам, тут только верхушка всего айсберга.

Сокращение Типы
N.png Number(Числа)
V2 / V / V4 2D / 3D / 4D Vector(Векторы)
A Angle(Углы)
S String(Строки)
E Entity(Объекты)
R Array(Массивы)
T Table(Таблицы)
RD Ranger Data(Рейнджеры)
B Bone(Кости)
M2 / M / M4 2x2 / 3x3 / 4x4 Matrix(Матрицы)
XWL Wirelink
C Комплексные числа
Q Кватернионы

ЧислаПравить

ОписаниеПравить

Производит операции над числами

КомандыПравить

Функция Возвращает Описание
N.png + N.png N.png Сложение
N.png - N.png N.png Вычитание
N.png * N.png N.png Умножение
N.png / N.png N.png Деление
N.png ^ N.png N.png Возведение в степень (2 ^ 3 = 8)
N.png % N.png N.png Остаток от деления арумента 1 на аргумент 2. Примечание "-1 % 3 = 2"
mod(N.png, N.png) N.png Остаток от деления арумента 1 на аргумент 2. Примечание "mod(-1, 3) = -1"
sqrt(N.png) N.png Возвращает квадратный корень числа
cbrt(N.png) N.png Возвращает кубический корень числа
root(N.png, N.png) N.png Возвращает корень первого числа
e() N.png

Возвращает константу Эйлера

Викия-сеть

Случайная вики