Содержание   <<< Назад   Далее >>>

Обработчики


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

У каждого аккаунта есть следующие данные :
  • Параметры подключения (IP адрес и порт клиента)
  • Имя пользователя (login)
  • Пароль (password)
  • Адрес электронной почты (email)
  • Список персонажей и номер текущего персонажа
  • Дополнительные параметы (например палитра цветов)


  • Обработчики - это объекты, которые манипулируют этими данными и они отвечают за очень многое.
    Например:

  • Проверку подключения (повторный вход с того же IP)
  • Создание новых аккаунтов
  • Проверку логина и пароля
  • Отправку писем на e-mail
  • Создание, выбор и удаление персонажей
  • Проверку различных правил. Например, - по именованию персонажей


  • Формат XML-файлов, содержащих обработчиков, следующий :
    
    <?xml version="1.0" encoding="UTF-8"?>
    <config>
      <treat id="идентификатор">
          ... тело обработчика ...
      </treat>
      <treat id="идентификатор2">
          ... тело обработчика 2...
      </treat>
    </config>
    
    Обработчики строятся на базе скриптов Lua, что дает большую гибкость при создании различных механизмов работы.
    Общий вид тела отдельного обработчика представлен ниже:

    
    <treat id="идентификатор">
      <step id="идентификатор">
        <script id="init"><![CDATA[
        ...
        ]]></script>
        <script id="run"><![CDATA[
        ...
        ]]></script>
      </step>
      <step id="идентификатор2">
        ...
      </step>
    </treat>
    
    Обработчик состоит из последовательности шагов ( теги 'step'). Каждый шаг может иметь идентификатор (step id), с помощью которых можно будет делать переход от одного шага к другому, минуя основной порядок. Так же он состоит из 2 необязательных скриптов на языке Lua (теги 'init' и 'run').

    Скрипт init выполняется при "входе" аккаунта на шаг. Этот скрипт должен существовать если требуется от игрока получить какую-то информацию. В основном он предназначен для вывода текстов для игрока с запросом о той информации, которую ждет обработчик. Если скрипта 'init' нет, то обработчик сразу переходит к скрипту 'run' на этом шаге.

    Скрипт run выполняется после скрипта 'init'. Если 'init' на этом шаге существует, то в 'run' можно сделать анализ введенной игроком информации, так как он будет запущен только после того как игрок что то введет в клиенте и это прийдет на сервер. Если тега 'init' нет, то 'run' будет запущен сразу же, не ожидая данных от игрока. После завершения работы 'run' аккаунт перейдет на следующий шаг (если в теле скрипта не было методов перехода на какой-то определенный шаг).

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

    Список команд, доступных из обработчиков можно найти здесь

    Содержание   <<< Назад   Далее >>>