DM Guide 17: различия между версиями

Материал из Chaotic Onyx
Перейти к навигацииПерейти к поиску
(Продолжаю переводить)
 
 
(не показано 7 промежуточных версий 5 участников)
Строка 1: Строка 1:
 +
{{Устарело}}
 
''Это 17-ая глава перевода оригинального руководства по Dream Maker от разработчиков.''
 
''Это 17-ая глава перевода оригинального руководства по Dream Maker от разработчиков.''
  
[http://wiki.ss13.ru/index.php?title=All_about_the_code Остальные главы руководства и статьи о программировании на коде BYOND от любителей на русском.]
+
[[All_about_the_code|Остальные главы руководства и статьи о программировании на коде BYOND от любителей на русском.]]
  
[http://http://www.byond.com/docs/guide/chap17.html Оригинальная 17-ая глава руководства на английском языке]
+
[http://www.byond.com/docs/guide/chap17.html Оригинальная 17-ая глава руководства на английском языке]
{{Заготовка|url="[http://www.byond.com/docs/guide/chap17.html ]"}}
 
  
 
==Глава 17: Контроль сервера и системы==
 
==Глава 17: Контроль сервера и системы==
Строка 37: Строка 37:
 
|-
 
|-
 
|  
 
|  
| Возвращает статус завершения команды Returns the exit status of the command.
+
| Возвращает статус завершения команды.
 
|}
 
|}
  
Строка 68: Строка 68:
 
====text2file====
 
====text2file====
  
''text2file'' instruction is the complement of file2text. It appends a text string to a file. If the file does not exist, it will be created.
+
''text2file'' дополняет ''file2text''. Она добавляет текстовую строку в файл. Если файл не существует, он будет создан.
  
 
{| border="0"
 
{| border="0"
Строка 76: Строка 76:
 
|-
 
|-
 
|  
 
|  
| Txt is the text string.
+
| Txt – текстовая переменная.
 
|-
 
|-
 
|  
 
|  
| File is the file to append to.
+
| File – файл, в который ее нужно добавить.
 
|}
 
|}
  
 
====file====
 
====file====
''file'' instruction returns a reference to a file object. The primary use for such an object is with the input/output operators. Outputting a file to a player was discussed in section 11.2.7. It is also possible to send output to a file or get input from a file.
+
''file'' возвращает ссылку на файл. В основном эта инструкция применяется с операторами ввода/вывода. Вывод файла игроку был обсужден [[DM_Guide_11|в главе 11]]. Кроме того, можно отправлять вывод в файл или получать ввод из файла.  
  
 
{| border="0"
 
{| border="0"
Строка 91: Строка 91:
 
|-
 
|-
 
|  
 
|  
| Path is the name of the file.
+
| Path – полный путь или имя файла.
 
|-
 
|-
 
|  
 
|  
| Returns a reference to the file.
+
| Возвращает ссылку на файл.
 
|}
 
|}
  
Using a file as the target for output of the << operator has the same effect as calling ''text2file()''. The output value is appended to the file. Similarly, reading input from a file with the >> operator is the same as ''file2text()''. The file is loaded into a text string and stored in the specified variable.
+
Использование файла в качестве цели для оператора вывода << имеет тот же эффект, как вызов ''text2file ()''.Выходное значение добавляется в файл. Аналогично, чтение данных из файла при помощи оператора >> то же самое, что и ''file2 TXT ()''. Файл загружается в текстовую строку и хранится как указанная переменная.
  
 
{| border="0"
 
{| border="0"
Строка 103: Строка 103:
 
| File << Output
 
| File << Output
 
|-
 
|-
| File >> Variable
+
| File >> Переменная
 
|}
 
|}
  
 
====fcopy====
 
====fcopy====
  
''fcopy'' instruction copies one file to another. The source file may be a real external file or a file in the cache. If the destination file already exists, it will be replaced.
+
''fcopy'' копирует один файл в другой. Источник может быть действительным внешним файлом или взят из кэша. Если файл уже существует, то он будет заменен.
  
 
{| border="0"
 
{| border="0"
Строка 116: Строка 116:
 
|-
 
|-
 
|  
 
|  
| Source is the source file.
+
| Source – копируемый файл.
 
|-
 
|-
 
|  
 
|  
| Dest is the destination file.
+
| Dest – файл, в который он будет скопирован.
 
|-
 
|-
 
|  
 
|  
| Returns 1 on success and 0 on failure.
+
| Возвращает 1 в случае успеха и 0 в случае ошибки.
 
|}
 
|}
  
 
====fdel====
 
====fdel====
  
''fdel'' instruction deletes a file from the file system.
+
''fdel'' удалает файл из файловой системы.
  
 
{| border="0"
 
{| border="0"
Строка 135: Строка 135:
 
|-
 
|-
 
|  
 
|  
| File is the name of the file.
+
| File – имя файла.
 
|-
 
|-
 
|  
 
|  
| Returns 1 on success and 0 on failure.
+
| Возвращает 1 в случае успеха и 0 в случае ошибки.
 
|}
 
|}
  
It works with entire directories too (so be careful for heaven's sake). As a precaution, it only accepts directory names when you end them with a slash "/".
+
Он работает со всеми директориями (так что будьте осторожны, ради бога). В качестве меры предосторожности, он принимает только имена директорий, заканчивающиеся косой чертой "/".
  
 
====flist====
 
====flist====
  
''flist'' instruction generates a list of files at the specified path in the file system and whose names begin in the specified way.
+
''flist'' создает список файлов, расположенных в заданной директории, имена которых начинаются с указанных знаков.
  
 
{| border="0"
 
{| border="0"
Строка 153: Строка 153:
 
|-
 
|-
 
|  
 
|  
| Path is the path to get the listing of.
+
| Path – путь до директории, список файлов в которой вы хотите получить.
 
|-
 
|-
 
|  
 
|  
| Returns a list of files and sub-directories.
+
| Возвращает список файлов и папок.
 
|}
 
|}
  
Only files and sub-directories directly contained in the specified path are listed (i.e. not the contents of the sub-directories too). The file names in the list do not contain the path information but just the bare file name. Sub-directories in the list are identified by a trailing "/" appended to the name.
+
Будет приведен только список файлов и папок, находящихся по указанному адресу (т.е. содержимого этих папок в списке не будет). Имена файлов в списке не включают в себя информацию о пути, только имя файла. Папки в списке определяются по символу "/" добавленному к имени.
 
+
Путь задается в формате "dir1/dir2/.../file". В списке будут приведены только файлы с именами, совпадающими с "file", так что не забудьте добавить "/" в конце пути, если вы хотите увидеть его содержимое. В противном случае, все, что вы получите, это имя каталога со знаком "/".
The format of the path is "dir1/dir2/.../file". Only files matching "file" are listed, so be sure to append a "/" to the end of a directory name if you wish to see its contents. Otherwise, all you will get is the directory name back with a "/" appended.
 
  
===Running other Worlds===
+
===Запуская другие Миры===
  
It is sometimes desirable for one master world to launch child worlds. For example, you might have a main world with side-adventures (dungeons etc.) taking place in separate sub-worlds. This might be more efficient since areas that are rarely used could be activated only when needed.
+
Иногда желательно одному главному миру запускать дочерние миры. Например, у вас может быть основной мир с сайдквестами (подземелья и т.д.), располагающимися в отдельных подмирах. Это может оказаться лучшей оптимизацией, так как редко используемые участки можно активировать только при необходимости.
  
The ultimate use of this technique is a world hosting service which allows users to upload their own world files. These are then launched and shut down as they are accessed by players. If you do not have your own dedicated network connection, you may wish to make use of such a service to host your worlds.
+
Предельной формой использования этого метода является сервис хостинга миров, который позволяет пользователям загружать свои собственные файлы мира. Которые затем запускаются и выключаются по мере доступа к ним игроков. Если у вас нет собственного выделенного сетевого соединения, вы можете воспользоваться таким сервисом для хостинга ваших миров.
  
 
====startup====
 
====startup====
  
''startup'' instruction runs another world. It sleeps until the network address of the new world has been determined.
+
''startup'' запускает другой мир. Эта инструкция спит пока не будет определен сетевой адрес нового мира.
  
 
{| border="0"
 
{| border="0"
Строка 179: Строка 178:
 
|-
 
|-
 
|  
 
|  
| File is the dmb file to run.
+
| File – .dmb файл, который необходимо запустить.
 
|-
 
|-
 
|  
 
|  
| Port is the network port to use.
+
| Port – используемый сетевой порт.
 
|-
 
|-
 
|  
 
|  
| Options includes any additional parameters.
+
| Options включает в себя дополнительные параметры запуска.
 
|-
 
|-
 
|  
 
|  
| Returns network address of the new world.
+
| Возвращает сетевой адрес нового мира.
 
|}
 
|}
  
The network address of a world includes two parts. The first is the IP address of the machine it is running on. The second is the port number. These are combined in a text string of the form "ip:port". The port specified must not be in use by any other programs. The default value of zero indicates that any available port should be used.
+
Сетевой адрес мира состоит из двух частей. Первая, IP адрес машины, на которой он запущен. Вторая, номер порта. Он записывается в текстовую строку вида "ip:port". Указанный порт не должен использоваться любыми другими программами. Стандартное значение – 0 – означает, что может быть использован любой доступный порт.
 +
 
 +
Дополнительные параметры, которые могут быть указаны, описаны в нижеследующем списке.
 +
 
 +
*'''-once''' Эта опция автоматически выключает сервер, когда все игроки отключатся.
  
The additional options that may be specified are described in the following list.
+
*'''-log''' Эта опция требует наличие дополнительного аргумента, который используется для файла вывода сервера. Все отладочные заметки (от крашей действий proc) и весь вывод, записываемый в world.log, будет добавляться в этот файл. Путь до этого файла соответствует рабочей директории сервера, которая расположена в папке с .dmb файлом.
  
*'''-once''' This option automatically shuts down the server when all players have logged off.
+
*'''-safe''' Эта опция запускает мир в специальном защищенном режиме. Код мира сможет иметь доступ только к файлам в той же директории (и поддиректориях), в которой находится .dmb, а доступ к инструкции ''shell'' запрещен. Это стандартный режим, если мир запускается из его собственной безопасной директории. Такая директория распознается, когда она имеет то же имя, что и .dmb файл мира.
  
*'''-log''' This option takes an additional argument which is used as the server's output file. All debugging notices (from proc crashes) and any output sent to world.log is appended to this file. The path to the file is relative to the new server's working directory, which is the location of the .dmb file.
+
*'''-ultrasafe''' Эта опция аналогична ''-safe'', за исключением того что разрешает доступ только к временным файлам. Это стандартный режим, если мир не запускается из его собственной безопасной директории.
  
*'''-safe''' This option runs the world in a special protective security mode. The world code may only access files in the same directory (or below) as the .dmb file and access to the ''shell'' instruction is disabled. This is the default mode if the world is run from its own safe directory. Such a directory is recognized when it has the same name as the world .dmb file (напр. inferno/inferno.dmb).
+
*'''-trusted''' В этом моде все операции разрешены. Мир может получать доступ к файлам в любых каталогах и командам ''shell''. Конечно, операционная система может налагать ограничения, но BYOND будет разрешать миру всё.
  
*'''-ultrasafe''' This is the same as ''-safe'' except only access to temporary files is allowed. This is the default if the world is not run from its own safe directory.
+
*'''-params''' Данный аргумент интерпретируется как строка параметра, что уже было описано в [[DM_Guide_10|10-ой главе]]. Переменная ''world.params'' инициализируется из этих данных. Вы можете использовать ''params'' несколько раз; отдельные строки параметров, просто объединяются для формирования окончательного результата.
  
*'''-trusted''' In this mode, all operations are permitted. The world may access files in any directory and may run ''shell'' commands. Of course the operating system may apply restrictions, but BYOND will allow the world to try anything.
+
*'''-quiet''' Это просто отключает информационный вывод, который сервер обычно отображает при загрузке.
  
*'''-params''' The following argument is interpreted as a parameter string as described in [DM_Guide_10|section]. The variable ''world.params'' is initialized from this data. You may use ''params'' multiple times; the individual parameter strings are simply concatenated to form the final result.
+
====Контроль Дочерних Миров====
*'''-quiet''' This simply disables informational output that the server normally displays when it boots up.
 
  
====Control over Child Worlds====
+
Связь с дочерним миром может быть осуществлена с помощью ''world.Export ()''. В этом случае, процедура ''world.Topic()'' вызывается со специальным флагом, чтобы указать, что сообщение пришло из мира, который его запустил. (см. [[DM_Guide_8 | 8-ую главу]]) По умолчанию, дочерний мир будет реагировать на спецальные команды "Del" и "Reboot" вызовом ''world.Del ()'' и ''world.Reboot ()'' соответственно. Это происходит только если приходит сообщение от главного мира, так как в противном случае кто угодно может отправить сообщение и прекратить работу вашего мира.
  
Communication with a child world may be done through ''world.Export()''. In this case, the child world's ''world.Topic()'' procedure is called with a special master flag to indicate that the message came from the world which started it. (See [DM_Guide_8|section] for a review of these procs.)
+
Есть еще одна полезная команда "ping", которая может быть использована для определения, работает ли еще дочерний мир.
By default, a child world will respond to the special topics "Del" and "Reboot" by calling ''world.Del()'' and ''world.Reboot()'' respectively. This is only done if the message comes from the master world, since otherwise anyone could send the message and shut your world down.
 
Another useful topic is "ping", which can be used to determine if a child world is still alive and running.
 
  
 
====shutdown====
 
====shutdown====
  
''shutdown'' instruction may be used to close a child world or to wait for it to exit normally.
+
''shutdown'' Инструкция может быть использована, чтобы закрыть дочерний мир или подождать, пока он закроется нормально.
  
 
{| border="0"
 
{| border="0"
Строка 224: Строка 224:
 
|-
 
|-
 
|  
 
|  
| Address is the network address of the world.
+
| Address – сетевой адрес мира.
 
|-
 
|-
 
|  
 
|  
| Natural is 1 to suppress sending of "Del" message.
+
| Natural - для предотвращения отправки сообщения "Del" должно быть равно 1.
 
|-
 
|-
 
|  
 
|  
| Returns exit status of the child world.
+
| Возращает статус закрытия мира.
 
|}
 
|}
  
The address should be the same text string returned by ''startup()''. If the second argument is omitted or zero, this is equivalent to calling ''world.Export()'' with the given address and "Del" as the topic. Otherwise, this instruction simply waits for the child world to die naturally of its own accord.
+
Address должен быть строкой, возвращаемой инструкцией ''startup()''. Если второй аргумент опущен или равен нулю, то это эквивалентно вызову ''world.Export ()'' с данным адресом и "Del" в качестве команды. В противном случае, эта инструкция просто ждет, когда дочерний мир закроется самостоятельно.
  
With no arguments at all, this instruction causes the current world to shut down. The same thing can be achieved by calling ''world.Del()''.
+
Вовсе без аргументов эта инструкция вызывает закрытие текущего мира. То же самое может быть достигнуто вызовом ''world.Del ()''.

Текущая версия от 10:06, 1 апреля 2024


A long time ago in a galaxy far, far away...


Данная статья помечена как устаревшая, её содержание может быть неверным или неактуальным.

Если она не будет актуализирована или не появится веского повода для снятия этой плашки, то вскоре она будет перемещена в Священный архив.

При желании вы можете помочь проекту Onyx и сообществу Animus-logo.png SS13 в целом — загляните на наш Bus Mainframes.gif Портал сообщества.
Morgue.png


Это 17-ая глава перевода оригинального руководства по Dream Maker от разработчиков.

Остальные главы руководства и статьи о программировании на коде BYOND от любителей на русском.

Оригинальная 17-ая глава руководства на английском языке

Глава 17: Контроль сервера и системы

All creatures pass into My nature at the end of a cycle and are reborn at the beginning of creation.

--Bhagavat Gita

Все ранее рассмотренные аспекты DM представляли собой операции, выполняемые в изолированной области игрового мира. В этой главе рассматриваются команды, позволяющие взаимодействовать с остальной частью компьютера, включая доступ к файлам, программам и другим мирам BYOND’а.

Замечание о платформо-независимости

Программисты называют платформой операционную систему, запущенную на компьютере. На данный момент, BYOND может быть запущен на операционных системах Microsoft Windows и UNIX. Версии для других ОС находятся в разработке.

Когда возможно, лучше писать т.н. платформо-независимые программы, это означает, что программа будет работать одинаково на разных системах. Язык DM практически гарантирует это, предоставляя синтаксис, как можно меньше опирающийся на особенности внешней вычислительной среды. Фактически, BYOND во многих случая ведет себя как виртуальная операционная система, изолируя ваш код от реальной операционной системы, и тем самым обеспечивает одинаковую среду независимо от машины, на которой он запущен.

Однако когда возникает задача получения доступа к файлам или другим программам компьютера, зависимость от платформы становится необходимой. Например, названия файлов в UNIX регистрозависимы, в то время как в Windows наоборот. Это означает, что при указании имени файла в Windows вы можете обойтись любой комбинацией строчных и прописных букв, в то время как тот же код, запущенный под UNIX сработает только при полном совпадении регистра в имени файла. Поэтому хорошей привычкой будет, по крайней мере, быть последовательным и использовать одинаковый регистр во всем вашем коде, когда ссылаешься на один файл.

Пути к фалам соответствуют текущей директории (если не задан полный путь). Текущей всегда является директория, в которой расположен .dmb файл мира. В UNIX системах в пути после каждой поддиректории ставится знак / . Обычно в Windows для этой цели используется знак \ , однако, DM позволяет использовать вместо него / . Это удобнее, потому, что так он не рассматривается как спецсимвол в текстовой строке.

shell

shell передает команду операционной системе. Интерпретатор команд часто называют shell - отсюда и название для этой инструкции. Это спящая операция, которая возвращает значение после ее окончания.

shell (Cmd)
Cmd – текст команды.
Возвращает статус завершения команды.

Синтаксис команды, очевидно, полностью зависит от операционной системы. Как правило, она состоит из имени программы и следующего за ним ряда аргументов. Если команда создает вывод (output) или ожидает ввода (input), вам нужно перенаправить ввод и вывод в файлы, что в UNIX и Windows делается при помощи операторов < и > .

В нижеследующем примере запускается команда "dir" и выводится результат.

mob/verb/list_files()
   shell("dir > dir.txt")
   usr << browse("dir.txt")

Операции с файлами

file2text

file2text считывает файл в текстовую строку. Может быть использована в разных целях, включая доступ к выводу команды shell().

file2text (File)
File – имя файла.
Возвращает содержимое файла в виде текстовой строки.

text2file

text2file дополняет file2text. Она добавляет текстовую строку в файл. Если файл не существует, он будет создан.

text2file (Txt,File)
Txt – текстовая переменная.
File – файл, в который ее нужно добавить.

file

file возвращает ссылку на файл. В основном эта инструкция применяется с операторами ввода/вывода. Вывод файла игроку был обсужден в главе 11. Кроме того, можно отправлять вывод в файл или получать ввод из файла.

file (Path)
Path – полный путь или имя файла.
Возвращает ссылку на файл.

Использование файла в качестве цели для оператора вывода << имеет тот же эффект, как вызов text2file ().Выходное значение добавляется в файл. Аналогично, чтение данных из файла при помощи оператора >> то же самое, что и file2 TXT (). Файл загружается в текстовую строку и хранится как указанная переменная.

File << Output
File >> Переменная

fcopy

fcopy копирует один файл в другой. Источник может быть действительным внешним файлом или взят из кэша. Если файл уже существует, то он будет заменен.

fcopy (Source,Dest)
Source – копируемый файл.
Dest – файл, в который он будет скопирован.
Возвращает 1 в случае успеха и 0 в случае ошибки.

fdel

fdel удалает файл из файловой системы.

fdel (File)
File – имя файла.
Возвращает 1 в случае успеха и 0 в случае ошибки.

Он работает со всеми директориями (так что будьте осторожны, ради бога). В качестве меры предосторожности, он принимает только имена директорий, заканчивающиеся косой чертой "/".

flist

flist создает список файлов, расположенных в заданной директории, имена которых начинаются с указанных знаков.

flist (Path)
Path – путь до директории, список файлов в которой вы хотите получить.
Возвращает список файлов и папок.

Будет приведен только список файлов и папок, находящихся по указанному адресу (т.е. содержимого этих папок в списке не будет). Имена файлов в списке не включают в себя информацию о пути, только имя файла. Папки в списке определяются по символу "/" добавленному к имени. Путь задается в формате "dir1/dir2/.../file". В списке будут приведены только файлы с именами, совпадающими с "file", так что не забудьте добавить "/" в конце пути, если вы хотите увидеть его содержимое. В противном случае, все, что вы получите, это имя каталога со знаком "/".

Запуская другие Миры

Иногда желательно одному главному миру запускать дочерние миры. Например, у вас может быть основной мир с сайдквестами (подземелья и т.д.), располагающимися в отдельных подмирах. Это может оказаться лучшей оптимизацией, так как редко используемые участки можно активировать только при необходимости.

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

startup

startup запускает другой мир. Эта инструкция спит пока не будет определен сетевой адрес нового мира.

startup (File,Port=0,Options,...)
File – .dmb файл, который необходимо запустить.
Port – используемый сетевой порт.
Options включает в себя дополнительные параметры запуска.
Возвращает сетевой адрес нового мира.

Сетевой адрес мира состоит из двух частей. Первая, IP адрес машины, на которой он запущен. Вторая, номер порта. Он записывается в текстовую строку вида "ip:port". Указанный порт не должен использоваться любыми другими программами. Стандартное значение – 0 – означает, что может быть использован любой доступный порт.

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

  • -once Эта опция автоматически выключает сервер, когда все игроки отключатся.
  • -log Эта опция требует наличие дополнительного аргумента, который используется для файла вывода сервера. Все отладочные заметки (от крашей действий proc) и весь вывод, записываемый в world.log, будет добавляться в этот файл. Путь до этого файла соответствует рабочей директории сервера, которая расположена в папке с .dmb файлом.
  • -safe Эта опция запускает мир в специальном защищенном режиме. Код мира сможет иметь доступ только к файлам в той же директории (и поддиректориях), в которой находится .dmb, а доступ к инструкции shell запрещен. Это стандартный режим, если мир запускается из его собственной безопасной директории. Такая директория распознается, когда она имеет то же имя, что и .dmb файл мира.
  • -ultrasafe Эта опция аналогична -safe, за исключением того что разрешает доступ только к временным файлам. Это стандартный режим, если мир не запускается из его собственной безопасной директории.
  • -trusted В этом моде все операции разрешены. Мир может получать доступ к файлам в любых каталогах и командам shell. Конечно, операционная система может налагать ограничения, но BYOND будет разрешать миру всё.
  • -params Данный аргумент интерпретируется как строка параметра, что уже было описано в 10-ой главе. Переменная world.params инициализируется из этих данных. Вы можете использовать params несколько раз; отдельные строки параметров, просто объединяются для формирования окончательного результата.
  • -quiet Это просто отключает информационный вывод, который сервер обычно отображает при загрузке.

Контроль Дочерних Миров

Связь с дочерним миром может быть осуществлена с помощью world.Export (). В этом случае, процедура world.Topic() вызывается со специальным флагом, чтобы указать, что сообщение пришло из мира, который его запустил. (см. 8-ую главу) По умолчанию, дочерний мир будет реагировать на спецальные команды "Del" и "Reboot" вызовом world.Del () и world.Reboot () соответственно. Это происходит только если приходит сообщение от главного мира, так как в противном случае кто угодно может отправить сообщение и прекратить работу вашего мира.

Есть еще одна полезная команда "ping", которая может быть использована для определения, работает ли еще дочерний мир.

shutdown

shutdown Инструкция может быть использована, чтобы закрыть дочерний мир или подождать, пока он закроется нормально.

shutdown (Address,Natural=0)
Address – сетевой адрес мира.
Natural - для предотвращения отправки сообщения "Del" должно быть равно 1.
Возращает статус закрытия мира.

Address должен быть строкой, возвращаемой инструкцией startup(). Если второй аргумент опущен или равен нулю, то это эквивалентно вызову world.Export () с данным адресом и "Del" в качестве команды. В противном случае, эта инструкция просто ждет, когда дочерний мир закроется самостоятельно.

Вовсе без аргументов эта инструкция вызывает закрытие текущего мира. То же самое может быть достигнуто вызовом world.Del ().