Изменения

Материал из Chaotic Onyx
Перейти к навигацииПерейти к поиску
13 315 байт добавлено ,  09:48, 24 июля 2020
м
Архивация
Строка 1: Строка 1: −
{{Заготовка|url="http://www.ss13.eu/wiki/index.php/NTSL"}}
+
{{ Template: Архивировано}}
 
== Расшифровка ==
 
== Расшифровка ==
NanoTrasen Scripting Language
+
NanoTrasen Scripting Language (Язык Скрипта НаноТрейзен)
    
==Как начать пользоваться NTSL==
 
==Как начать пользоваться NTSL==
Строка 19: Строка 19:  
== Гайд по синтаксису ==
 
== Гайд по синтаксису ==
   −
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.  
+
NTSL несложен, так как был создан для пользователей всех уровней умения программирования. Пробелы игнорируются, точки с запятой требуются и квадратные скобки также требуются.
      Строка 34: Строка 34:  
=== Функции ===
 
=== Функции ===
   −
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:
+
Функции могут быть заданы динамично. Есть разные предопределённые функции для реализации цели на NTSL, но базовые функции остаются такими же. Вот пример, как Вы можете использовать функцию:
      Строка 53: Строка 53:  
=== Code Blocks ===
 
=== 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();
 
  $myGlobalVariable = getNumber();
Строка 63: Строка 63:  
  }
 
  }
 
   
 
   
  $myLocalVariable = 50; // this is invalid; myLocalVariable does not exist in this scope
+
  $myLocalVariable = 50; // Это неверно; myLocalVariable не существует в этом блоке
   −
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 ===
+
Процедура while() будет обрабатываться снова и снова до тех пор, пока указанное в ней равенство / неравенство не будет верно.
 
+
Оператор ''!='' обозначает "неверно".
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".
      
Список операторов сравнения:
 
Список операторов сравнения:
Строка 81: Строка 81:  
*'''>=''' : Больше чем или равно
 
*'''>=''' : Больше чем или равно
    +
Также могут быть использованы операторы ''if()'' (если), ''elseif()'' (также если) и ''else()'' (иначе). Пример:
   −
Relational operators can be used in if(), and elseif(), statements, which are used the following way:
+
  if($myVariableNumber == 50) // Если число равно пятидесяти.
 
  −
  if($myVariableNumber == 50) // if my number is 50
   
  {
 
  {
     // code block
+
     // Блок кода
 
  }
 
  }
  elseif($myVariableNumber <= 30) // if not, is my number 30 or less?
+
  elseif($myVariableNumber <= 30) // Если число не равно пятидесяти, но меньше или равно тридцати.
 
  {   
 
  {   
     // code block
+
     // Блок кода
 
  }
 
  }
  else // if not either 50 OR 30 or more, do this instead
+
  else // Если ни одно из условий не верно.
 
  {
 
  {
 
     // code block
 
     // code block
Строка 122: Строка 121:     
Тип переменной объявлять не нужно. По умолчанию любая переменная, которой не было присвоено значение, содержит пустую строку. Тип переменной не фиксирован, одной и той же переменной можно присваивать значения разных типов.
 
Тип переменной объявлять не нужно. По умолчанию любая переменная, которой не было присвоено значение, содержит пустую строку. Тип переменной не фиксирован, одной и той же переменной можно присваивать значения разных типов.
 +
== NT Deluxe Namespaces ==
 +
 +
Nanotrasen will constantly add new universal functions and features to NTSL, here are a few of them:
 +
 +
 +
=== Number ===
 +
 +
:{|style="background:#999999"
 +
!align="left" width="200"| Syntax
 +
!align="left" width="100"| Returns
 +
!align="left" width="800"| Description
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| prob(number) || number || Returns nonzero is the probability succeeded. Returns zero if the probability failed.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| sqrt(number) || number || Квадратный корень
 +
|-
 +
| abs(number) || number || Модуль
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| floor(number) || number ||Округляет в меньшую сторону.
 +
|-
 +
| ceil(number) || number || Округляет в большую сторону.
 +
|-
 +
| round(number) || number || Округляет по стандартным правилам. 1.5->2, 1.49->1.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| clamp(number, number, number) || number || Вычисляет значение Arg.1 между min(Arg.2) и max(Arg.3). clamp(30, -30, 25) = 25
 +
|-
 +
| inrange(number, number, number) || number || Возвращает 1, если Arg.1 между min(Arg.2) и max(Arg.3).
 +
|-
 +
|-
 +
| tostring(number) || string || Возвращает значение переменной типа number в виде string.
 +
|-
 +
|-
 +
| rand(number, number) || number || Возвращает случайное число между min(Arg.1) и max(Arg.2).
 +
|-
 +
|}
 +
 +
=== String ===
 +
 +
Строка(String) — это последовательность символов. Строка обозначается кавычками с обоих сторон.<br>
 +
"Hello world!" — строка. <br>
 +
Длина строки это количество содержащихся в ней символов и пробелов.<br>
 +
 +
:{|style="background:#999999"
 +
!align="left" width="200"| Syntax
 +
!align="left" width="100"| Returns
 +
!align="left" width="800"| Description
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| find(string, string) || string || Ищет в строке Arg.1 строку Arg.2, возвращает 0 если не найдено
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| length(string) || number || Возвращает длину строки.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| substr(string, number, number) || string || Возвращает подстроку из Arg.1 начиная с символа №(Arg.2) до символа №(Arg.3).
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| replace(string, string, string) || string || Возвращает вариант строки(Arg.1) где все вхождения строки Arg.2 заменены на Arg.3.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| lower(string) || string || Переводит все символы в строчные.
 +
|-
 +
| upper(string) || string || Переводит все символы в прописные.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| explode(string, string) || vector || Разделит строку(Arg.1) в каждом месте совпадающем с разделителем(Arg.2) в вектор. explode("Hello there young friend", " "), создаст вектор с 4 указателями, "Hello", "there", "young", "friend". это очень полезно для чат-команд: if(at(explode($content, " "),1)=="/bot"){dostuff} сделает так, чтобы dostuff выполнялось только если первое слово было /bot.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| repeat(string, number) || string || Повторяет строку(Arg.1) n(Arg.2) раз.
 +
|-
 +
| reverse(string) || string || Записывает строку в обратном порядке.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| tonum(string) || number || Переводит строку в тип number.
 +
|-
 +
|}
 +
 +
=== Vector ===
 +
 +
Вектор — массив с переменной длиной, в его ячейках могут храниться любые типы.  They are very useful for serving as lists; their members can be instantly accessed provided you have an appropriate position.
 +
Индексы вектора в NTSL начинаются с 1, в отличие от других языков.
 +
 +
:{|style="background:#999999"
 +
!align="left" width="200"| Syntax
 +
!align="left" width="100"| Returns
 +
!align="left" width="800"| Description
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| vector(...) || vector || Returns a vector with a given number of entities. You can add an infinite number of entries, or no entries at all.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| at(vector, number, var) || var || Sets the cell at Arg.2 index in the Arg.1 vector to Arg.3 if Arg.3 is supplied, otherwise, returns the value located at Arg.2.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| copy(vector, number, number) || vector || Returns a new vector based on Arg.1, ranging from minimum index Arg.2 to Arg.3.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| push_back(vector, ...) || || Adds Arg.2 (and every item after) to the end of the vector. Deprecated by the += operator.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| remove(vector, ...) || || Loops through the vector and deletes the items matching the Args.
 +
|-
 +
| cut(vector, number, number) || || Cuts out entries from Arg.2 to Arg.3 in the Arg.1 vector.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| swap(vector, number, number) || || Swaps the entries's position at Arg.2 and Arg.3 in the Arg.1 vector.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| insert(vector, number, var) || || Inserts Arg.3 into Arg.1 at index Arg.2.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| find(vector, var) || var || Searches the Arg.1 vector for Arg.2, returns 0 if not found.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| length(vector) || number || Returns the length of the vector. (amount of indices)
 +
|-
 +
|}
 +
 +
=== Miscellaneous Definitions ===
 +
 +
:{|style="background:#999999"
 +
!align="left" width="200"| Syntax
 +
!align="left" width="100"| Returns
 +
!align="left" width="800"| Description
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| pick(...) || var || Возвращает случайно выбранную запись из параметров. Note: vector parameters will add their entries into the "raffle". Функция никогда не вернет вектор.
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| time() || number || Возвращает реальное время сервера в виде number. Вы можете использовать ее чтобы узнать как давно код исполнялся последний раз via mem().
 +
|-
 +
| bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" | || bgcolor="#AAAAAA" |
 +
|-
 +
| timestamp(format) || string || Возвращает время в виде строки, отформатированной по параметру. E.g: "DDD MMM DD hh:mm:ss YYYY" or "hh:mm:ss" or "DD MM YY".
 +
|}
 +
 +
=== Prefab Variables ===
 +
 +
'''PI''' = 3.141592653;
 +
'''E''' = 2.718281828;
 +
'''SQURT2''' = 1.414213562;
 +
'''FALSE''' = 0; // true/false are just Boolean shortcuts to 0 and 1
 +
'''TRUE''' = 1;
 +
'''NORTH''' = 1;
 +
'''SOUTH''' = 2;
 +
'''EAST''' = 4;
 +
'''WEST''' = 8;
 +
 +
'''$common''' = 1459
 +
'''$science''' = 1351
 +
'''$command''' = 1353
 +
'''$medical''' = 1355
 +
'''$engineering''' = 1357
 +
'''$security''' = 1359
 +
'''$supply''' = 1347
 +
 +
== Traffic Control Systems Implementation ==
 +
 +
Система телекоммуникаций напрямую связана с TCS scripting implementation. В ней присутствуют следующие функции и возможности.
 +
 +
 +
=== Модификация сигнала в реальном времени ===
 +
 +
Если код настроен на автоматическое исполнение, сигналы сначала будут выполнять сохраненный на сервере код. Информация о сигналах хранится в следующих переменных:
 +
 +
$source  // источник сигнала
 +
$content // содержание сигнала
 +
$freq    // частота на которой передается сигнал
 +
$pass    // определяет будет ли транслирован сигнал
 +
$job    // профессия (только для радиосообщений) оратора
 +
 +
=== Функции ===
 +
 +
TCS также содержит следующие функции (параметрами можно пренебречь; тогда они будут назначены автоматически):
 +
 +
 +
==== broadcast() ====
 +
 +
broadcast(message, frequency, source, job)
 +
 +
Отправляет радиосигнал соседним подпространственным ретрансляторам для вещания со следующими параметрами.
 +
 +
'''message''': радиосообщение
 +
<br>'''frequency''': частота на которой будет передаваться сообщение
 +
<br>'''source''': Имя отправителя. Если имени нет в серверной базе данных голосов (анализ голоса производится каждый раз когда человек говорит в радиоканал) имя будет записано прописными буквами и курсивом для обозначения синтезированного голоса.
 +
<br>'''job''': Профессия оратора.
 +
 +
Examples:
 +
 +
broadcast("Hello world!");
 +
 +
'''defaults''':
 +
<br>frequency: 1459
 +
<br>source: имя сервера
 +
<br>job: нет
 +
 +
broadcast("HELP GRIEFF", 1459, "Burer", "Security Officer");
 +
 +
==== signal() ====
 +
 +
signal(frequency, code)
 +
 +
Отправить сигнал с кодом на какой-либо частоте. Работает так же, как и remote signaller device.
 +
 +
'''frequency''': Частота на которой отправится сигнал.
 +
<br>'''code''': Код, который будет отправлен.
 +
 +
Examples:
 +
 +
signal(1359, 25);
 +
 +
'''defaults''':
 +
<br>frequency: 1459
 +
<br>code: 30
 +
 +
==== mem() ====
 +
 +
mem(key, value)
 +
 +
Переменные объявленные в скрипте обнуляются после выполнения скрипта. Функция mem позволяет сохранить информацию в память сервера, чтобы она могла быть использована в последующих исполнениях скрипта.
 +
Каждый телекоммуникационный сервер содержит свою отдельную базу данных, в виде hash таблицы  — структуры данных, состоящей из пар key-value(ключ-значение).
 +
Вызванная с ключом в качестве аргумента, mem вернет ассоциированное значение. Вызванная с двумя аргументами, mem установит связь между значением и ключом.
 +
 +
'''key''': Строка, используемая для обозначения сохраняемой переменной.
 +
<br>'''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".
    
== Операторы ==
 
== Операторы ==
458

правок

Навигация