Checklarge.png Внимание: Эта страница актуальна и ее содержимое может быть использовано в игре.

NTSL

Материал из Infinity Project
Перейти к навигации Перейти к поиску

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 = направления; // может быть любым кардинальным направлением