NTSL Script: различия между версиями
EkuDza (обсуждение | вклад) |
EkuDza (обсуждение | вклад) (Добавил данных для перевода) |
||
Строка 1: | Строка 1: | ||
+ | {{Заготовка|url="http://www.ss13.eu/wiki/index.php/NTSL"}} | ||
== Расшифровка == | == Расшифровка == | ||
NanoTrasen Scripting Language | NanoTrasen Scripting Language | ||
Строка 50: | Строка 51: | ||
} | } | ||
+ | === Code Blocks === | ||
+ | |||
+ | Blocks of code are called when a specific piece of code signals that it is a representation of a block of code. Variables defined in one code block cannot be applied or changed in other nonrelated code blocks; this is known as scope. For example: | ||
+ | |||
+ | $myGlobalVariable = getNumber(); | ||
+ | |||
+ | while($myGlobalVariable != 0) { | ||
+ | |||
+ | $myLocalVariable = 0; | ||
+ | $myGlobalVariable = $myLocalVariable; | ||
+ | } | ||
+ | |||
+ | $myLocalVariable = 50; // this is invalid; myLocalVariable does not exist in this scope | ||
+ | |||
+ | Once the interpreter reads the closing bracket, it destroys all variable definitions within the scope, therefore you cannot use any of the variables that existed in that particular block of code. | ||
+ | |||
+ | |||
+ | === Conditionals === | ||
+ | |||
+ | The while() loop in the previous example is considered a conditional because it only continues executing when the condition between the parentheses is true. The ''!='' is known as a relational operator which returns true to the interpreter if myGlobalVariable does not equal 0. It can be read as "while myGlobalVariable does not equal 0, execute the following block of code". | ||
+ | |||
+ | Список операторов сравнения: | ||
+ | |||
+ | *'''==''' : Равно | ||
+ | *'''!=''' : Не равно | ||
+ | *'''<''' : Меньше чем | ||
+ | *'''>''' : Больше чем | ||
+ | *'''<=''' : Меньше чем или равно | ||
+ | *'''>=''' : Больше чем или равно | ||
+ | |||
+ | |||
+ | Relational operators can be used in if(), and elseif(), statements, which are used the following way: | ||
+ | |||
+ | if($myVariableNumber == 50) // if my number is 50 | ||
+ | { | ||
+ | // code block | ||
+ | } | ||
+ | elseif($myVariableNumber <= 30) // if not, is my number 30 or less? | ||
+ | { | ||
+ | // code block | ||
+ | } | ||
+ | else // if not either 50 OR 30 or more, do this instead | ||
+ | { | ||
+ | // code block | ||
+ | } | ||
== Синтаксические особенности == | == Синтаксические особенности == |
Версия от 18:59, 9 апреля 2015
В разработке… |
Данная статья помечена как неоконченная. Это означает, что статья находится на доработке, поэтому является неверной или неактуальной. Вы можете помочь проекту 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 для каждого канала, если желаете.
Гайд по синтаксису
NT Script follows a simple-to-use syntax designed for users of all levels of programming expertise. Whitespace is ignored, semicolon break points are required, and curly brackets are required.
Переменные
Переменные нужны для временного хранения данных для дальнейшего использования в коде. Для создания переменной используйте следующий синтаксис:
$myVariable = 5; // "$" позволяет компилятору идентифицировать переменную.
Вы можете назначить переменной текстовое значение (строку).
$myVariable = "Hello world!";
Функции
Functions can be used and defined dynamically. There are different pre-defined functions for each NTSL implementation, however the basic ones will remain the same. Here is how you use a function:
$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
Blocks of code are called when a specific piece of code signals that it is a representation of a block of code. Variables defined in one code block cannot be applied or changed in other nonrelated code blocks; this is known as scope. For example:
$myGlobalVariable = getNumber(); while($myGlobalVariable != 0) { $myLocalVariable = 0; $myGlobalVariable = $myLocalVariable; } $myLocalVariable = 50; // this is invalid; myLocalVariable does not exist in this scope
Once the interpreter reads the closing bracket, it destroys all variable definitions within the scope, therefore you cannot use any of the variables that existed in that particular block of code.
Conditionals
The while() loop in the previous example is considered a conditional because it only continues executing when the condition between the parentheses is true. The != is known as a relational operator which returns true to the interpreter if myGlobalVariable does not equal 0. It can be read as "while myGlobalVariable does not equal 0, execute the following block of code".
Список операторов сравнения:
- == : Равно
- != : Не равно
- < : Меньше чем
- > : Больше чем
- <= : Меньше чем или равно
- >= : Больше чем или равно
Relational operators can be used in if(), and elseif(), statements, which are used the following way:
if($myVariableNumber == 50) // if my number is 50 { // code block } elseif($myVariableNumber <= 30) // if not, is my number 30 or less? { // code block } else // if not either 50 OR 30 or more, do this instead { // code block }
Синтаксические особенности
Операторные скобки - "{" и "}"
Знак присваивания - "="
Отступы игнорируются, на конце каждой строки требуется ";"
Для объявления переменной не требуется никаких ключевых слов, ей может быть любое не зарезервированное ранее слово, поддерживается принцип области применения (т.е. принцип локальных переменных)
Пример кода:
myVariable = 12345; if ( myVariable == 12345 ) { qwerty = 1; qwerty = qwerty + 1; } else { myVariable = 1; }
Типы данных
Используются три типа: число, вектор и строка, приблизительно соответствующие типам double, vector и string в C++. А именно:
- Число хранится в виде a*b^n, но может быть использовано и как целое.
- Вектор - массив с переменной длиной, в его ячейках могут храниться любые типы.
- Строка - набор символов. Пустая строка используется в качестве null.
Тип переменной объявлять не нужно. По умолчанию любая переменная, которой не было присвоено значение, содержит пустую строку. Тип переменной не фиксирован, одной и той же переменной можно присваивать значения разных типов.
Операторы
Бинарные
Использование | Использование |
---|---|
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 |