Участник:First Tea: различия между версиями

Материал из Infinity Project
Перейти к навигации Перейти к поиску
м
Строка 133: Строка 133:
 
  swap(vector, index1, index2)
 
  swap(vector, index1, index2)
  
Swaps the entities at index1 and index2 in the specified vector.
+
Меняет местами объекты в index1 и index2 в указанном векторе.
  
 
==== insert() ====
 
==== insert() ====
Строка 139: Строка 139:
 
  insert(vector, index, entry)
 
  insert(vector, index, entry)
  
Inserts an entry into the specified position.
+
Вставляет запись в указанную позицию.
  
=== Strings ===
+
=== Строки ===
  
Strings are one of the variables you'll use the most when manipulating messages, them being the content of what you desire to alter. They take the form of series of characters, like "Hello there!"
+
Строки - это одна из переменных, которую вы будете использовать чаще всего при манипулировании сообщениями, поскольку они представляют собой содержимое того, что вы хотите изменить. Они принимают форму серии символов, таких как «Hello there!»
  
 
==== explode() ====
 
==== explode() ====
Строка 149: Строка 149:
 
  explode(string, separator)
 
  explode(string, separator)
  
Returns the string broken down into a vector of strings, split at each "separator" character. If "separator" is null, instead breaks the string down into characters.
+
Возвращает строку, разбитую на вектор строк, разделенных между символами «seperator». Если «seperator» равен нулю, вместо этого разбивает строку на символы.
  
=== Miscellaneous Definitions ===
+
=== Другие определения ===
  
 
==== pick() ====
 
==== pick() ====
Строка 157: Строка 157:
 
  pick(entry1, entry2, entry3, ...)
 
  pick(entry1, entry2, entry3, ...)
  
Returns a randomly-selected entry from the parameters. Note: vector parameters will add their entries into the "raffle". The function will never return a vector.
+
Возвращает случайно выбранную запись из параметров. Примечание: векторные параметры добавят свои записи в «лотерею». Функция никогда не вернет вектор.
  
 
==== find() ====
 
==== find() ====
Строка 163: Строка 163:
 
  find(container, element)
 
  find(container, element)
  
Searches a vector or string for this element or substring. Returns nonzero if found.
+
Ищет элемент или подстроку в векторе или строке. Возвращает ненулевое значение, если найдено.
  
 
==== prob() ====
 
==== prob() ====
Строка 169: Строка 169:
 
  prob(chance)
 
  prob(chance)
  
Returns nonzero is the probability succeeded. Returns zero if the probability failed.
+
Возвращает ненулевое значение если вероятность успешна. Возвращает ноль, если вероятность не удалась.
  
 
==== length() ====
 
==== length() ====
Строка 175: Строка 175:
 
  length(container)
 
  length(container)
  
Finds the length of a string or vector.
+
Находит длину строки или вектора.
  
 
==== substr() ====
 
==== substr() ====
Строка 181: Строка 181:
 
  substr(string, start, end)
 
  substr(string, start, end)
  
Returns a string/text copied from the specified string, from start to end.
+
Возвращает строку/текст, скопированный из указанной строки, от начала до конца.
  
  
  
==== Prefab Variables ====
+
==== Константы ====
  
 
  '''PI''' = 3.141592653;
 
  '''PI''' = 3.141592653;
 
  '''E''' = 2.718281828;
 
  '''E''' = 2.718281828;
 
  '''SQURT2''' = 1.414213562;
 
  '''SQURT2''' = 1.414213562;
  '''FALSE''' = 0; // true/false are just Boolean shortcuts to 0 and 1
+
  '''FALSE''' = 0; // true/false - это просто логические сокращения для 0 и 1
 
  '''TRUE''' = 1;
 
  '''TRUE''' = 1;
  '''NORTH/SOUTH/EAST/WEST''' = direction; // can be any cardinal direction
+
  '''NORTH/SOUTH/EAST/WEST''' = направления; // может быть любым кардинальным направлением
 
 
 
 
 
 
 
 
(UNDER CONSTRUCTION)
 
 
 
== Traffic Control Systems Implementation ==
 
 
 
The [[Telecommunications]] system is directly tied to the TCS scripting implementation. It comes with the following functions and features.
 
 
 
 
 
=== Realtime signal modification ===
 
 
 
If the code is set to execute automatically, signals will first execute stored server code. Signal information is stored in the following variables:
 
 
 
$source  // the source of the signal. Feel free to use HTML here to format it.
 
$content // the content of the signal. Feel free to use HTML here to format it.
 
$freq    // the frequency of the signal
 
$pass    // determines if the signal will be broadcasted
 
$job    // the job (only for radio messages) of the orator
 
 
 
=== Constants ===
 
 
 
The following constants refer to the frequencies of various channels: $common, $science, $command, $medical, $engineering, $security, $supply, $service
 
 
 
 
 
=== Functions ===
 
 
 
TCS also comes with the following functions (parameters may be ignored for automatic assignment):
 
 
 
 
==== broadcast() ====
 
 
 
broadcast(message, frequency, source, job)
 
 
 
Sends a radio signal to neighboring subspace broadcasters to broadcast with the following parameters.
 
 
 
'''message''': The radio message. Feel free to use HTML here to format it.
 
<br>'''frequency''': The frequency to broadcast to
 
<br>'''source''': The name of the broadcaster. Feel free to use HTML here to format it.
 
job
 
<br>'''job''': The job of the orator.
 
 
 
Examples:
 
 
 
broadcast("Hello world!");
 
 
 
'''defaults''':
 
<br>frequency: 1459
 
<br>source: the server name
 
<br>job: None
 
 
 
 
 
broadcast("HELP GRIEFF", 1459, "Burer", "Security Officer");
 
 
 
==== mem() ====
 
 
 
mem(address, value)
 
 
 
Either returns a value if value is not specified, or sets the value of the memory address
 
 
 
'''address''': The memory address to search or apply to
 
<br>'''value''': The value to apply to the address. Can be any form of data
 
 
 
Examples:
 
 
 
mem($source + "'s Mom");
 
 
 
 
 
mem($source + "'s Mom", "Lindsay Donk");
 

Версия 18:58, 8 января 2019

NT Scripting Language (NT Script, или NTSL) - это новая технология, разработанная техническим отделом NT для стандартизации программирования и связи всех электронных устройств Nanotrasen. Его синтаксис представляет собой смесь PHP, C ++ и JavaScript. Большинство реализаций NT Script не являются объектно-ориентированными и не позволяют определять классы, а вместо этого полагаются на систему управления памятью ROBUST(tm) для хранения объектов в динамическом дереве данных, однако NT Script допускает встроенное определение функций.

Важно отметить, что NT Скрипты не следует рассматривать как код BYOND. NTSL обрабатывает некоторые вещи иначе, чем BYOND.

Руководство по синтаксису

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


Переменные

Переменные используются для временного хранения любых форм данных, к которым можно получить доступ где-либо еще в коде. Для простоты мы будем игнорировать тот факт, что вы можете использовать переменные только в дочерней области. Вот как вы создаете переменную:

myVariable = 5;

Также вы можете присвоить переменной текстовое значение или строку.

myVariable = "Hello world!";


Функции

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


myVariable = getNumber();

В этом примере, myVariable присваивается любое значение, возвращаемое getNumber(). Каждая функция возвращает значение, даже если возвращаемое значение явно не определено. Вот еще несколько примеров использования функций:

print(myVariable);
print("Hello world!");
print("Griffing assistants in T-minus " + myVariable + " seconds.");


Также можно определять свои функции, используя ключевое слово def.

def getNumber() {
    return 5;
}


Блоки кода

Блоки кода вызываются, когда конкретный фрагмент кода сигнализирует о том, что он является представлением блока кода. Переменные, определенные в одном кодовом блоке, не могут быть применены или изменены в других несвязанных кодовых блоках; это известно как область. Например:

myGlobalVariable = getNumber();

while(myGlobalVariable != 0) {
    
   myLocalVariable = 0;
   myGlobalVariable = myLocalVariable;
}

myLocalVariable = 50; // myLocalVariable не существует в этой области

Когда интерпретатор читает закрывающую скобку, он уничтожает все определения переменных в области видимости, поэтому вы не можете использовать ни одну из переменных, которые существовали в этом конкретном блоке кода.


Ветвления

Цикл while () в предыдущем примере считается условным, поскольку он продолжает выполняться только тогда, когда условие между скобками выполняется. '! =' 'Известен как реляционный оператор, который возвращает истину интерпретатору, если myGlobalVariable не равен 0. Его можно прочитать как "пока myGlobalVariable не равен 0, выполнить следующий блок кода".


Вот список всех реляционных операторов:


== : Равно
!= : Не равно
< : Меньше чем
> : Больше чем
<= : Меньше или равно
>= : Больше или равно


Реляционные операторы могут использоваться в операторах if(), которые используются следующим образом:

if(myVariableNumber == 50) {
   // блок кода
}
else {   // условие не было выполнено
   // блок кода
}


Пространства имен NT Deluxe

Nanotrasen будет постоянно добавлять новые универсальные функции и возможности в NTSL, вот некоторые из них:


Векторное пространство имен

Векторы - это контейнеры данных изменяемого размера для хранения любых объектов внутри. Они очень полезны для использования в качестве списков; к их членам можно получить немедленный доступ, если у вас есть подходящая должность.

vector()

vector(запись1, запись2, ...)

Возвращает вектор с заданным количеством объектов. Вы можете добавить бесконечное количество записей или вообще никаких записей.

at()

at(вектор, позиция, значение)

NTSL-эквивалент массива[index]. Вектор NTSL начинается с индекса 1. По мере развития языка он, скорее всего, будет выгружен в оператор [].

copy()

copy(вектор, начало, конец)

Возвращает новый вектор только с содержимым указанного вектора в начальной позиции и конечной позиции.

push_back()

push_back(вектор, запись1, запись2, ...)

Добавляет указанные записи в указанный вектор. Примечание: оператор += перегружает эту функцию и может использоваться следующим образом:

vector += myName;

remove()

remove(вектор, запись1, запись2, ...)

Удалить определенные записи из указанного вектора.

cut()

cut(вектор, начало, конец)

Вырезает записи от начала до конца в указанном векторе.

swap()

swap(vector, index1, index2)

Меняет местами объекты в index1 и index2 в указанном векторе.

insert()

insert(vector, index, entry)

Вставляет запись в указанную позицию.

Строки

Строки - это одна из переменных, которую вы будете использовать чаще всего при манипулировании сообщениями, поскольку они представляют собой содержимое того, что вы хотите изменить. Они принимают форму серии символов, таких как «Hello there!»

explode()

explode(string, separator)

Возвращает строку, разбитую на вектор строк, разделенных между символами «seperator». Если «seperator» равен нулю, вместо этого разбивает строку на символы.

Другие определения

pick()

pick(entry1, entry2, entry3, ...)

Возвращает случайно выбранную запись из параметров. Примечание: векторные параметры добавят свои записи в «лотерею». Функция никогда не вернет вектор.

find()

find(container, element)

Ищет элемент или подстроку в векторе или строке. Возвращает ненулевое значение, если найдено.

prob()

prob(chance)

Возвращает ненулевое значение если вероятность успешна. Возвращает ноль, если вероятность не удалась.

length()

length(container)

Находит длину строки или вектора.

substr()

substr(string, start, end)

Возвращает строку/текст, скопированный из указанной строки, от начала до конца.


Константы

PI = 3.141592653;
E = 2.718281828;
SQURT2 = 1.414213562;
FALSE = 0; // true/false - это просто логические сокращения для 0 и 1
TRUE = 1;
NORTH/SOUTH/EAST/WEST = направления; // может быть любым кардинальным направлением