Изменения

Оформление
Строка 51: Строка 51:  
===2.1 Действия направления===
 
===2.1 Действия направления===
   −
Когда игрок нажимает одну из кнопок со стрелками, это вызывает соответствующее действие клиента. Вот процедуры, для каждой кнопки: North(), South(), East(), West(), Northeast(), Northwest(), Southeast(), Southwest(), и Center().
+
Когда игрок нажимает одну из кнопок со стрелками, это вызывает соответствующее действие клиента. Вот процедуры, для каждой кнопки: ''North()'', ''South()'', ''East()'', ''West()'', ''Northeast()'', ''Northwest()'', ''Southeast()'', ''Southwest()'', и ''Center()''.
Нужно более точно описать эти действия. Их названия начинаются с точки, что значит, что они не будут показываться ни в каких списках, пока вы не введете точку. Если вы введете “.north”, это будет то же самое, что нажать на кнопку со стрелкой вверх. То есть кнопки стрелок просто вводят нужную команду вместо вас.
+
 
По умолчанию, действия направления вызывают действие Move, которое в свою очередь вызывает собственное действие Move нужного существа. Оно легко переопределяется.
+
Нужно более точно описать эти действия. Их названия начинаются с точки, что значит, что они не будут показываться ни в каких списках, пока вы не введете точку. Если вы введете “''.north''”, это будет то же самое, что нажать на кнопку со стрелкой вверх. То есть кнопки стрелок просто вводят нужную команду вместо вас.
Move (Loc,Dir)
+
 
Loc новая локация, куда существо должно передвинуться.
+
По умолчанию, действия направления вызывают действие ''Move'', которое в свою очередь вызывает собственное действие ''Move'' нужного существа. Оно легко переопределяется.
Dir направление, куда должно повернуться существо.
+
 
Возвращает 1 при успешном передвижении, 0 при ошибке.
+
Move(Loc,Dir)
 +
Loc - новая локация, куда существо должно передвинуться.
 +
Dir - направление, куда должно повернуться существо.
 +
Возвращает 1 при успешном передвижении, 0 при ошибке.
 +
 
 +
Действие ''Center'' также можно переопределить. Только по умолчанию оно должно вызывать остановку передвижения любых движений существа. Эта тема будет рассматриваться в главе 14.2.
   −
Действие Center также можно переопределить. Только по умолчанию оно должно вызывать остановку передвижения любых движений существа. Эта тема будет рассматриваться в главе 14.2.
   
Во многих играх может быть отключено движение по диагонали. Вы можете этого легко достигнуть, переопределив требуемые действия на выполнение ничего.
 
Во многих играх может быть отключено движение по диагонали. Вы можете этого легко достигнуть, переопределив требуемые действия на выполнение ничего.
client
+
 
  //disable diagonals
+
client
  Northeast()
+
    //disable diagonals
  Northwest()
+
    Northeast()
  Southeast()
+
    Northwest()
  Southwest()
+
    Southeast()
2.2 Действие Click
+
    Southwest()
Действие Click вызывается, когда игрок щелкает левой кнопкой мыши по карте или по панели статуса. Аналогичное действие DblClick работает также, только вызывается двойным щелчком. Эти процедуры описываются в главе 7.4.
+
 
Click (O,Panel)
+
===2.2 Действие Click===
DblClick (O,Panel)
+
 
O объект, по которому кликнули.
+
Действие ''Click'' вызывается, когда игрок щелкает левой кнопкой мыши по карте или по панели статуса. Аналогичное действие ''DblClick'' работает также, только вызывается двойным щелчком. Эти процедуры описываются в главе 7.4.
Panel панель статуса, по которой кликнули (или ноль).
+
 
 +
Click   (O,Panel)
 +
DblClick (O,Panel)
 +
        O - объект, по которому кликнули.
 +
        Panel - панель статуса, по которой кликнули (или ноль).
 
 
 +
Разберем пример, в котором мы сделаем так, чтобы вам выдавалось сообщение, куда вы кликнули.
 +
 +
client/Click(O)
 +
    usr << "You clicked [O]."
 +
 +
Заметим, что родительское действие тут не вызывается. Это значит, что объект, задействованный процедурой ''Click'', не вызывается. Не забывайте вызывать ''..()'', если вы хотите, чтобы это имело место.
    +
Клиентская процедура ''Click'' удобна для использования, когда вы хотите выполнить действие, одинаковое для всех типов объектов. Когда действие зависит от типа объекта, собственная процедура ''Click'' этого объекта – лучшее решение.
   −
Разберем пример, в котором мы сделаем так, чтобы вам выдавалось сообщение, куда вы кликнули.
+
===2.3 Действие Stat===
client/Click(O)
+
 
  usr << "You clicked [O]."
+
Действие ''Stat'' периодически вызывается клиентом, чтобы обновить панель статуса. По умолчанию это действие вызывает ''statobj.Stat()''. Вы можете настраивать панель статуса через это действие, но если вы хотите чтобы панель отображала состояние другого объекта (например, существа игрока), то лучше всего это делать через собственное действие ''Stat'', этого существа. Создание своей панели статуса уже рассматривалось в главе 7.3.
Заметим, что родительское действие тут не вызывается. Это значит, что объект, задействованный процедурой Click, не вызывается. Не забывайте вызывать ..(), если вы хотите, чтобы это имело место.
+
 
Клиентская процедура Click удобна для использования, когда вы хотите выполнить действие, одинаковое для всех типов объектов. Когда действие зависит от типа объекта, собственная процедура Click этого объекта – лучшее решение.
+
===2.4 Действие Topic===
2.3 Действие Stat
+
 
Действие Stat периодически вызывается клиентом, чтобы обновить панель статуса. По умолчанию это действие вызывает statobj.Stat(). Вы можете настраивать панель статуса через это действие, но если вы хотите чтобы панель отображала состояние другого объекта (например, существа игрока), то лучше всего это делать через собственное действие Stat, этого существа. Создание своей панели статуса уже рассматривалось в главе 7.3.
+
Действие ''Topic'' вызывается, когда игрок кликает по ссылке, выведенной вместе с каким-то текстом в игре. Вы можете использовать это, чтобы, например, дать игроку больше информации о помеченном объекте (поэтому действие называется ''Topic''). Однако возможности этого действия не ограничены. Многие другие варианты использования этого действия будет описываться в главе 11.
2.4 Действие Topic
+
 
Действие Topic вызывается, когда игрок кликает по ссылке, выведенной вместе с каким-то текстом в игре. Вы можете использовать это, чтобы, например, дать игроку больше информации о помеченном объекте (поэтому действие называется Topic). Однако возможности этого действия не ограничены. Многие другие варианты использования этого действия будет описываться в главе 11.
+
Topic(Topic,Obj,SubTopic)
Topic (Topic,Obj,SubTopic)
+
    Topic - ссылка, выбранная игроком.
Topic ссылка, выбранная игроком.
+
    Obj - указанный объект, если имеется.
Obj указанный объект, если имеется.
+
    SubTopic - описание объекта.
SubTopic описание объекта.
      +
Параметры ''Obj'' и ''SubTopic'' появляются только, если действие ''Topic'' вызывается ссылкой на объект (встроенной в текст с помощью ''\ref''). По умолчанию объект вызывает действие ''Topic'' уже с аргументом ''SubTopic''. Вы уже видели это в главе 7.6, когда мы создавали ссылку на игровой объект.
   −
Параметры Obj и SubTopic появляются только, если действие Topic вызывается ссылкой на объект (встроенной в текст с помощью \ref). По умолчанию объект вызывает действие Topic уже с аргументом SubTopic. Вы уже видели это в главе 7.6, когда мы создавали ссылку на игровой объект.
   
Так как все ссылки проходят через клиент, вы можете контролировать доступ игрока к каждому объекту. Также вы можете создавать темы, не приписанные к каким-либо объектам. В этом случае, вы просто привязываете их к объекту клиента.
 
Так как все ссылки проходят через клиент, вы можете контролировать доступ игрока к каждому объекту. Также вы можете создавать темы, не приписанные к каким-либо объектам. В этом случае, вы просто привязываете их к объекту клиента.
Гиперссылки темы создаются с помощью HTML. Мы уже рассказывали вам про этот синтаксис, когда рассказывали про ссылки, но для темы клиента  вам не обязательно вставлять в объект ссылку. Также возможно это использовать для других типов ссылок. Это будет описываться в главе 11.2.8.
  −
"... <A HREF=#topic> click here </A> ..."
      +
Гиперссылки темы создаются с помощью HTML. Мы уже рассказывали вам про этот синтаксис, когда рассказывали про ссылки, но для темы клиента вам не обязательно вставлять в объект ссылку. Также возможно это использовать для других типов ссылок. Это будет описываться в главе 11.2.8.
 +
 +
"... <A HREF=#topic> click here </A> ..."
    
Как пример использования ссылки на тему клиента, вы можете дать совет новым игрокам.
 
Как пример использования ссылки на тему клиента, вы можете дать совет новым игрокам.
client/Topic(T)
  −
  if(T == "help")
  −
      usr << "The motto here is: you are what you eat."
  −
  else ..()
     −
mob/Login()
+
client/Topic(T)
  ..()
+
    if(T == "help")
  usr << "When in doubt, click here."
+
      usr << "The motto here is: you are what you eat."
2.5 Действия Import и Export
+
    else ..()
Действия Import и Export используются, чтобы считывать и записывать файлы сохранения в файле игрока. Это очень полезно, если некая информация об игроке используется во многих мирах. То есть эти действия сохраняют информацию не о мире, а о каждом игроке и переносит ее между мирами.
+
 +
mob/Login()
 +
    ..()
 +
    usr << "When in doubt, click here."
 +
 
 +
===2.5 Действия Import и Export===
 +
 
 +
Действия ''Import'' и Export'' используются, чтобы считывать и записывать файлы сохранения в файле игрока. Это очень полезно, если некая информация об игроке используется во многих мирах. То есть эти действия сохраняют информацию не о мире, а о каждом игроке и переносит ее между мирами.
 +
 
 
Мы пока не рассказывали вам о файлах сохранения, но мы еще расскажем об этом в главе 12.
 
Мы пока не рассказывали вам о файлах сохранения, но мы еще расскажем об этом в главе 12.
2.6 Действия New и Del
  −
Действия New и Del вызывают создание и уничтожение объекта клиента. По умолчанию действие New соединяет игрока и его существа с соответствующим значением переменной key, а если такого существа не найдется, то создается новое, которое определяется переменной world.mob.
  −
New (Topic)
  −
Topic тема, к которой осуществляется доступ.
  −
usr существо, со схожей переменной key, если есть.
  −
Возвращает существо, выбранное для игрока.
     −
Обычно тема не указывается, когда подключается игрок. Однако, это можно использовать в разных ситуациях. По умолчанию, когда существо выбрано, вызывается действие Topic.
+
===2.6 Действия New и Del===
Вы можете переписать действие New, чтобы банить игроков по его значению переменной key (логину бьонда).
+
 
client/New()
+
Действия ''New'' и ''Del'' вызывают создание и уничтожение объекта клиента. По умолчанию действие New соединяет игрока и его существа с соответствующим значением переменной ''key'', а если такого существа не найдется, то создается новое, которое определяется переменной ''world.mob''.
  if(key == "Real Jerk") return //sorry pal!
+
 
  return ..()
+
New(Topic)
 +
    Topic - тема, к которой осуществляется доступ.
 +
    usr - существо, со схожей переменной key, если есть.
 +
    Возвращает существо, выбранное для игрока.
 +
 
 +
Обычно тема не указывается, когда подключается игрок. Однако, это можно использовать в разных ситуациях. По умолчанию, когда существо выбрано, вызывается действие ''Topic''.
 +
 
 +
Вы можете переписать действие ''New'', чтобы банить игроков по его значению переменной ''key'' (логину бьонда).
 +
 
 +
client/New()
 +
    if(key == "Real Jerk") return //sorry pal!
 +
    return ..()