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

Участник:Aigamuxa/Черновик

Материал из SS220 Sierra (Space Station 13)
Перейти к навигации Перейти к поиску

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)

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


Данные сигнала

$content - Содержимое сигнала. Для записи русскоязычного текста используйте кодировку ASCII;
$freq - Частота сигнала;
$pass - Пропуск сигнала. 1 = пропуск, 0 = блокировка;

Обратите внимание, что изменение этих переменных в большинстве случаев не приведет к изменению сигнала:

$source - Имя отправителя;
$job - Профессия отправителя;

Константы

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


Руководства
Основное
Базовые механики БойНавыкиАгент Внутренних ДелЯзыкиРадиоБюрократияТаблица возрастов и должностейПрофессии рас
Основы ролевой игры Руководства для новичковРуководство военного Руководство по ролевому отыгрышуТерминология
Руководства для сотрудников Начинающим администраторамРуководство для начинающих редакторов
Регламенты и законы
ИКН "Сьерра" Коды угрозы ИКН СьерраСтандартные процедуры ИКН СьерраДекларация Основных Прав Разумных СуществКорпоративные законы
Остальное Классификация мировРуководство по полётам на ХаронеOFDРуководство по экспедиции
Руководства по игровым механикам
Инженерное дело Руководство инженераКонструированиеСуперматерияR-USTСолнечные панелиПодстанцииТелекоммуникацииАтмосфераВзломВКДИКСДвигатели
Медицинский МедицинаСостояния и симптомыХирургияХимияПсионика
Исследования Основа работы в РнДКсеноботаникаКсенобиологияРоботехникаКсеноархеологияАномалииИнтегральные цепиГранаты и взрывоопасные предметы‎
Снабжение Шахтерское делоСнабжение
Сервис Руководство по гидропоникеПриготовление напитков Приготовление еды