NTSL Script
В разработке… |
Данная статья помечена как неоконченная. Это означает, что статья находится на доработке, поэтому является неверной или неактуальной. Вы можете помочь проекту Onyx и сообществу SS13 в целом — зайдите на наш Портал сообщества.
|
Расшифровка
NanoTrasen Scripting Language (Язык Скрипта НаноТрейзен)
Как начать пользоваться NTSL
- Придите в отсек контроля за телекомуникациями станции(Telecommunications Control Room).
- Откройте консоль контроля за трафиком телекомуникаций (Telecommunications Traffic Control Console).
- Авторизируйтесь для получения доступа нажав Insert ID с картой в руках.
- [Scan] для получения списка серверов.
- Нажмите на сервер с интересующим вас радиоканалом.
- [Edit Code] чтобы увидеть код сервера.
- Наберите свой код в появившееся окно.
- Save, Compile и Execute
- Закройте окно с кодом
- Смените режим выполнения сигнала (Signal Execution) на ALWAYS
- Поздравляю, вы прекрасны!
- Повторите шаги с 5 по 10 для каждого канала, если желаете.
Гайд по синтаксису
NTSL несложен, так как был создан для пользователей всех уровней умения программирования. Пробелы игнорируются, точки с запятой требуются и квадратные скобки также требуются.
Переменные
Переменные нужны для временного хранения данных для дальнейшего использования в коде. Для создания переменной используйте следующий синтаксис:
$myVariable = 5; // "$" позволяет компилятору идентифицировать переменную.
Вы можете назначить переменной текстовое значение (строку).
$myVariable = "Hello world!";
Функции
Функции могут быть заданы динамично. Есть разные предопределённые функции для реализации цели на NTSL, но базовые функции остаются такими же. Вот пример, как Вы можете использовать функцию:
$myVariable = getNumber();
В этом примере переменной "$myVariable" назначаем значение, которое вернула функция "getNumber()". Каждая функция возвращает значение, даже если возвращаемое значение не определено. Вот еще несколько примеров вызова функции:
broadcast($myVariable); broadcast("Hello world!"); broadcast("Griffing assistants in T-minus " + $myVariable + " seconds.");
Также вы можете определить свою функцию используя def:
def getNumber() { return 5; // Функция getNumber() всегда будет возвращать число 5. }
Code Blocks
Блоки кода вызываются, когда часть кода запрашивает вызов кода ещё раз. Переменные, указанные в одном и том же блоке кода не могут быть использованы в других блоках кода, не имеющих отношений к исходному. Например:
$myGlobalVariable = getNumber(); while($myGlobalVariable != 0) { $myLocalVariable = 0; $myGlobalVariable = $myLocalVariable; } $myLocalVariable = 50; // Это неверно; myLocalVariable не существует в этом блоке
Как только будет обработана закрывающая квадратная скобка, все переменные будут уничтожены. Следовательно, вы не сможете использовать какие - либо переменные вне того блока кода, где они указаны.
Операторы условия
Процедура while() будет обрабатываться снова и снова до тех пор, пока указанное в ней равенство / неравенство не будет верно. Оператор != обозначает "неверно".
Список операторов сравнения:
- == : Равно
- != : Не равно
- < : Меньше чем
- > : Больше чем
- <= : Меньше чем или равно
- >= : Больше чем или равно
Также могут быть использованы операторы if() (если), elseif() (также если) и else() (иначе). Пример:
if($myVariableNumber == 50) // Если число равно пятидесяти. { // Блок кода } elseif($myVariableNumber <= 30) // Если число не равно пятидесяти, но меньше или равно тридцати. { // Блок кода } else // Если ни одно из условий не верно. { // code block }
Синтаксические особенности
Операторные скобки - "{" и "}"
Знак присваивания - "="
Отступы игнорируются, на конце каждой строки требуется ";"
Для объявления переменной не требуется никаких ключевых слов, ей может быть любое не зарезервированное ранее слово, поддерживается принцип области применения (т.е. принцип локальных переменных)
Пример кода:
myVariable = 12345; if ( myVariable == 12345 ) { qwerty = 1; qwerty = qwerty + 1; } else { myVariable = 1; }
Типы данных
Используются три типа: число, вектор и строка, приблизительно соответствующие типам double, vector и string в C++. А именно:
- Число хранится в виде a*b^n, но может быть использовано и как целое.
- Вектор - массив с переменной длиной, в его ячейках могут храниться любые типы.
- Строка - набор символов. Пустая строка используется в качестве null.
Тип переменной объявлять не нужно. По умолчанию любая переменная, которой не было присвоено значение, содержит пустую строку. Тип переменной не фиксирован, одной и той же переменной можно присваивать значения разных типов.
Traffic Control Systems Implementation
Система телекоммуникаций напрямую связана с TCS scripting implementation. В ней присутствуют следующие функции и возможности.
Модификация сигнала в реальном времени
Если код настроен на автоматическое исполнение, сигналы сначала будут выполнять сохраненный на сервере код. Информация о сигналах хранится в следующих переменных:
$source // источник сигнала $content // содержание сигнала $freq // частота на которой передается сигнал $pass // определяет будет ли транслирован сигнал $job // профессия (только для радиосообщений) оратора
Функции
TCS также содержит следующие функции (параметрами можно пренебречь; тогда они будут назначены автоматически):
broadcast()
broadcast(message, frequency, source, job)
Отправляет радиосигнал соседним подпространственным ретрансляторам для вещания со следующими параметрами.
message: радиосообщение
frequency: частота на которой будет передаваться сообщение
source: Имя отправителя. Если имени нет в серверной базе данных голосов (анализ голоса производится каждый раз когда человек говорит в радиоканал) имя будет записано прописными буквами и курсивом для обозначения синтезированного голоса.
job: Профессия оратора.
Examples:
broadcast("Hello world!");
defaults:
frequency: 1459
source: имя сервера
job: нет
broadcast("HELP GRIEFF", 1459, "Burer", "Security Officer");
signal()
signal(frequency, code)
Отправить сигнал с кодом на какой-либо частоте. Работает так же, как и remote signaller device.
frequency: Частота на которой отправится сигнал.
code: Код, который будет отправлен.
Examples:
signal(1359, 25);
defaults:
frequency: 1459
code: 30
mem()
mem(key, value)
Переменные объявленные в скрипте обнуляются после выполнения скрипта. Функция mem позволяет сохранить информацию в память сервера, чтобы она могла быть использована в последующих исполнениях скрипта. Каждый телекоммуникационный сервер содержит свою отдельную базу данных, в виде hash таблицы --- структуры данных, состоящей из пар key-value(ключ-значение). Вызванная с ключjм в качестве аргумента, mem вернет ассоциированное значение. Вызванная с двумя аргументами, mem установит связь между значением и ключом.
key: Строка, используемая для обозначения сохраняемой переменной.
value: Информация, которую вы хотите сохранить. Может быть любого типа.
Examples:
$source = "Jarsh Mellow"; mem($source + "'s Mom"); // возвращает значение(value) связанное с ключом(key) "Jarsh Mellow's Mom". Возвращает null/0, если не найдено. mem($source + "'s Mom", "Lindsay Donk"); //задает связь ключа(key) "Jarsh Mellow's Mom" со значением(value) "Lindsay Donk".
Операторы
Бинарные
Использование | Использование |
---|---|
X == Y | Вернёт TRUE если X = Y |
X != Y | Вернёт TRUE если X =/= Y |
X > Y | Вернёт TRUE если X больше Y |
X < Y | Вернёт TRUE если Х меньше Y |
X >= Y | Вернёт TRUE если X больше или равен Y |
X <= Y | Вернёт TRUE если X меньше или равен Y |
X && Y | Вернёт TRUE если X и Y равны TRUE |
X || Y | Вернёт TRUE если X, Y, или они оба равны TRUE |
X + Y | Вернёт сумму X и Y |
X - Y | Вернёт разность X и Y |
X * Y | Вернёт произведение X и Y |
X / Y | Вернёт частное X и Y |
X^Y | Вернёт X в степени Y |
X%Y | Вернёт остаток X / Y |
Название | Использование | Возвращаемый результат |
---|---|---|
Битное И | X & Y | 101 |
Битное ИЛИ | X | Y | 111 |