Изменения

Материал из Chaotic Onyx
Перейти к навигацииПерейти к поиску
Перевод кусочка оригинального гайда по DM "Дружеские аргументы". Не претендую на полную точность перевода.
Строка 191: Строка 191:  
Разница в синтаксисе определения и переопределения служит (помимо прочего) для предотвращения ошибок, которые могут возникнуть в больших проектах. Например, вы можете определить новый ''verb'', который по ошибке имеет то же имя, что и существующий, или попытаться переопределить существующий ''verb'', но неправильно написать его в переопределении. В обоих случаях компилятор выдаст ошибку, предотвращая проблему, которая в противном случае могла бы оставаться незамеченной довольно долгое время.
 
Разница в синтаксисе определения и переопределения служит (помимо прочего) для предотвращения ошибок, которые могут возникнуть в больших проектах. Например, вы можете определить новый ''verb'', который по ошибке имеет то же имя, что и существующий, или попытаться переопределить существующий ''verb'', но неправильно написать его в переопределении. В обоих случаях компилятор выдаст ошибку, предотвращая проблему, которая в противном случае могла бы оставаться незамеченной довольно долгое время.
   −
== Friendly Arguments ==
+
== Дружеские аргументы ==
   −
Verbs become much more powerful when you add the ability to take additional input from the user. A programmer would call this a verb parameter or argument. You can define as many arguments to a verb as you wish. However, most verbs only take one or two parameters.
+
Действия(verb) становятся гораздо мощнее, если добавить к ним возможность принимать дополнительные данные от пользователя. Программист называет это параметром или аргументом ''verb''. Вы можете определить столько аргументов для ''verb'', сколько пожелаете. Однако большинство ''verb'' принимают только один или два параметра.
   −
Arguments are each assigned a different variable name inside the parentheses of a verb definition. In addition to this, an input type must be specified. This indicates what sort of information is required from the player. A generic verb definition would therefore look like this:
+
Аргументам присваивается отдельное имя переменной внутри круглых скобок определения ''verb''. Кроме того, необходимо указать тип ввода. Он указывает, какого рода информация требуется от игрока. Таким образом, общее определение глагола будет выглядеть следующим образом:
   −
VerbName(Var1 as Type1,Var2 as Type2,...)
+
VerbName(Var1 as Type1,Var2 as Type2,...)
The variable names follow the same rules as everything else in the language. Case matters, and it may consist of letters, numbers, and the underscore.
      +
Имена переменных подчиняются тем же правилам, что и все остальные в языке. Регистр имеет значение, и они могут состоять из букв, цифр и подчеркивания.
   −
=== Parameter Input Types ===
+
=== Типы входных параметров ===
   −
The possible input types are listed in figure 4.8.
+
Возможные типы входных параметров перечислены на рисунке 4.8.
   −
Figure 4.8: Parameter Input Types
+
Рисунок 4.8: Типы входных параметров
   −
text
+
text
message
+
message
num
+
num
icon
+
icon
sound
+
sound
file
+
file
key
+
key
null
+
null
mob
+
mob
obj
+
obj
turf
+
turf
area
+
area
anything
+
anything
The first group are the constant input types. They all represent different types of data that the user can insert. They may be used individually or in combination. To combine several types, put | between them like this: icon|sound.
     −
The text input type accepts a short (one-line) string from the player. For a longer composition, the message input type is used.
+
Первая группа - это постоянные типы ввода. Все они представляют собой различные типы данных, которые может вставить пользователь. Они могут использоваться по отдельности или в комбинации. Чтобы объединить несколько типов, поставьте между ними знак "|", например: icon|sound.
   −
Numbers are handled by the num input type. These, just like numbers in the language, may be positive or negative, integer or floating point, and may even be specified in scientific notation.
+
Тип ввода ''text'' принимает от игрока короткую (однострочную) строку. Для более длинной композиции используется тип ввода ''message''.
   −
There are three input types for resource files: icon, sound, and file. The last one, file, will take any type of file as an argument, whereas the other two take only icons and sounds, respectively. The related input type key takes a key entry from the player and is only used in obscure situations.
+
Для работы с числами используется тип ввода ''num''. Они, как и числа в языке, могут быть положительными или отрицательными, целыми или с плавающей точкой, и даже могут быть заданы в научной системе счисления.
   −
The null input type is used in conjunction with other types. It indicates that the argument is optional. Otherwise, the user is required to enter a value before executing the command.
+
Существует три типа входных данных для файлов ресурсов: ''icon'', sound и ''file''. Последний, ''file'', принимает в качестве аргумента файл любого типа, в то время как два других принимают только иконки и звуки соответственно. Связанный с ним тип ввода key принимает от игрока ввод клавиши и используется только в неясных ситуациях.
   −
The last group are the object input types. They are used to allow the player to select an item from a list of objects. More will be said on lists of objects in section 4.8. By default, the list is composed of all objects in view of the player.
+
Тип ввода ''null'' используется в сочетании с другими типами. Он указывает на то, что аргумент является необязательным. В противном случае пользователь должен ввести значение перед выполнением команды.
   −
Using the various input types, it is possible to compose verbs that give the player control over his own appearance. For example, using the text input type, the name can be specified.
+
Последняя группа - это типы ввода объектов. Они используются для того, чтобы игрок мог выбрать предмет из списка объектов. Подробнее о списках объектов будет рассказано в разделе 4.8. По умолчанию список состоит из всех объектов, находящихся в поле зрения игрока.
 +
 
 +
Используя различные типы ввода, можно составлять verb, которые дают игроку контроль над собственной внешностью. Например, с помощью текстового типа ввода можно указать имя.
      Строка 239: Строка 240:  
     name = N
 
     name = N
   −
In the client, one could therefore enter a command like the following:
+
Поэтому в клиенте можно ввести команду, подобную следующей:
 +
 
 +
set-name "Dan The Man"
 +
 
 +
Обратите внимание, что в этом примере определен "текст справки"(desc) для verb. Сначала в круглых скобках описывается синтаксис, а затем указывается назначение команды. (Обратные косые черты перед двойными кавычками внутри текста ставятся для того, чтобы их нельзя было принять за конец описания. Это называется экранированием и более подробно рассматривается в разделе 11.3.2.) Если вы наведете курсор мыши на verb, появится текст справки. Он будет выглядеть примерно так:
 +
 
 +
*click*: set-name "new name" (Change your name.)
   −
set-name "Dan The Man
+
Если бы мы не указали справку по синтаксису (в круглых скобках), она дала бы общее описание синтаксиса, например, такое:
Notice in this example that the help text for the verb has been defined. First the syntax is described in parentheses and then the purpose of the command is stated. (The reason there are backslashes in front of the double quotes inside the text is to prevent them from being mistaken for the end of the description. This is called escaping and will be discussed in more detail in section 11.3.2.) If you position the mouse over the verb, the help text will be displayed. It will look something like this:
     −
usage: set-name "new name" (Change your name.)
+
*click*: set-name "text" (Change your name.)
If we had not specified the syntax help (in parentheses), it would have given a generic description of the syntax like this:
     −
usage: set-name "text" (Change your name.)
+
Каждый тип аргумента имеет свой вид по умолчанию. Как правило, он включает в себя название типа ввода. Если вы считаете, что это запутает игроков, замените его своим собственным текстом.
Each type of argument has a different default appearance. Generally speaking, it involves the name of the input type. If you think that will confuse the players, override it with your own text.
     −
As a slight variation on the previous example, we could make a scroll object on which one can write a message.
+
В качестве небольшой вариации предыдущего примера мы можем сделать объект-свиток, на котором можно написать сообщение.
    
  obj/scroll/verb
 
  obj/scroll/verb
Строка 260: Строка 264:  
       usr << desc
 
       usr << desc
   −
Notice that players must be within arm's reach to inscribe a message. We assume that everyone has good eyesight so the complementary read command works as long as the scroll is within view.
+
Обратите внимание, что игроки должны находиться на расстоянии вытянутой руки, чтобы написать сообщение. Мы предполагаем, что у всех хорошее зрение, поэтому дополнительная команда чтения работает до тех пор, пока свиток находится в поле зрения.
   −
It is amazingly simple to do for the player's icon what we just did for the description. Here is a verb that does the trick.
+
Очень просто сделать для иконки игрока то же самое, что мы только что сделали для описания. Вот verb, который делает это.
    
  mob/verb/set_icon(i as icon)
 
  mob/verb/set_icon(i as icon)
Строка 268: Строка 272:  
     icon = i
 
     icon = i
   −
The command on the client could be issued something like this:
+
Команда на клиенте может быть выдана примерно так:
   −
set-icon 'me.dmi
+
set-icon 'me.dmi'
Here, single quotes surround the file name. As with text arguments, the final quote is optional when there are no additional parameters.
      +
Здесь одинарные кавычки окружают имя файла. Как и в случае с текстовыми аргументами, последняя кавычка необязательна, если нет дополнительных параметров.
    
== Generating Output ==
 
== Generating Output ==
33

правки

Навигация