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

Материал из Infinity Project
Перейти к навигации Перейти к поиску
м
Строка 8: Строка 8:
  
  
=== Variables ===
+
=== Переменные ===
  
Variables are used to temporarily store any form of data that can be accessed somewhere else in the code. For simplicity, we'll ignore the fact that you can only use variables in children scope. Here is how you create a variable:
+
Переменные используются для временного хранения любых форм данных, к которым можно получить доступ где-либо еще в коде. Для простоты мы будем игнорировать тот факт, что вы можете использовать переменные только в дочерней области. Вот как вы создаете переменную:
  
 
  myVariable = 5;
 
  myVariable = 5;
  
You can alternatively assign the same variable a text value, or a string.
+
Также вы можете присвоить переменной текстовое значение или строку.
  
 
  myVariable = "Hello world!";
 
  myVariable = "Hello world!";
  
  
=== Functions ===
+
=== Функции ===
  
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, однако основные из них остаются прежними. Функция используется так:
  
  
 
  myVariable = getNumber();
 
  myVariable = getNumber();
  
In this example, ''myVariable'' is assigned whatever value getNumber() returns. Each function returns a value, even if a value return is explicitly not defined. Here are some more examples of how to use functions:
+
В этом примере, ''myVariable'' присваивается любое значение, возвращаемое getNumber(). Каждая функция возвращает значение, даже если возвращаемое значение явно не определено. Вот еще несколько примеров использования функций:
  
 
  print(myVariable);
 
  print(myVariable);
Строка 33: Строка 33:
  
  
You can also define your own functions, using the ''def'' keyword.
+
Также можно определять свои функции, используя ключевое слово ''def''.
  
 
  def getNumber() {
 
  def getNumber() {
Строка 40: Строка 40:
  
  
=== 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();
Строка 52: Строка 52:
 
  }
 
  }
 
   
 
   
  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 ===
+
=== Ветвления ===
  
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".
+
Цикл while () в предыдущем примере считается условным, поскольку он продолжает выполняться только тогда, когда условие между скобками выполняется. '! =' 'Известен как реляционный оператор, который возвращает истину интерпретатору, если myGlobalVariable не равен 0. Его можно прочитать как "пока myGlobalVariable не равен 0, выполнить следующий блок кода".
  
Here is a list of all relational operators:
 
  
<br>'''==''' : Equals
+
Вот список всех реляционных операторов:
<br>'''!=''' : Does not equal
 
<br>'''<''' : Less than
 
<br>'''>''' : Greater than
 
<br>'''<=''' : Less than or equal to
 
<br>'''>=''' : Greater than or equal to
 
  
 +
<br>'''==''' : Равно
 +
<br>'''!=''' : Не равно
 +
<br>'''<''' : Меньше чем
 +
<br>'''>''' : Больше чем
 +
<br>'''<=''' : Меньше или равно
 +
<br>'''>=''' : Больше или равно
  
Relational operators can be used in if() statements, which are used the following way:
+
 
 +
Реляционные операторы могут использоваться в операторах if(), которые используются следующим образом:
  
 
  if(myVariableNumber == 50) {
 
  if(myVariableNumber == 50) {
     // code block
+
     // блок кода
 
  }
 
  }
  else {  // the relational operator was not met
+
  else {  // условие не было выполнено
     // code block
+
     // блок кода
 
  }
 
  }
  

Версия 18:47, 28 декабря 2018

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 Namespaces

Nanotrasen will constantly add new universal functions and features to NTSL, here are a few of them:


Vector Namespace

Vectors are resizeable data containers for storing any form of entities inside. They are very useful for serving as lists; their members can be instantly accessed provided you have an appropriate position.

vector()

vector(entry1, entry2, ...)

Returns a vector with a given number of entities. You can add an infinite number of entries, or no entries at all.

at()

at(vector, position, value)

The NTSL-equivalent of array[index]. A NTSL vector starts at index 1. As the language develops, this will most likely be offloaded to the [] operator.

copy()

copy(vector, start, end)

Returns a new vector with only the contents of the specified vector at the start position and end position.

push_back()

push_back(vector, entry1, entry2, ...)

Adds specified entries to the specified vector. Note: the +=operator overloads this function, and can be used as so:

vector += myName;

remove()

remove(vector, entry1, entry2, ...)

Removes specified entries from the specified vector.

cut()

cut(vector, start, end)

Cuts out entries from start to end in the specified vector.

swap()

swap(vector, index1, index2)

Swaps the entities at index1 and index2 in the specified vector.

insert()

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!"

explode()

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.

Miscellaneous Definitions

pick()

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(container, element)

Searches a vector or string for this element or substring. Returns nonzero if found.

prob()

prob(chance)

Returns nonzero is the probability succeeded. Returns zero if the probability failed.

length()

length(container)

Finds the length of a string or vector.

substr()

substr(string, start, end)

Returns a string/text copied from the specified string, from start to end.


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/SOUTH/EAST/WEST = direction; // can be any cardinal direction



(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.
frequency: The frequency to broadcast to
source: The name of the broadcaster. Feel free to use HTML here to format it. job
job: The job of the orator.

Examples:

broadcast("Hello world!");

defaults:
frequency: 1459
source: the server name
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
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");