Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Туториал [VarScript 0.5] Планировщик: модель задачи

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем DPOH-VAR, 22 авг 2013.

?

Полезен туториал?

  1. Да, я изучил работу планировщика

    50,0%
  2. Я не пользуюсь плагином

    16,7%
  3. Нет, не хватает некоторых плюшек

    0 голосов
    0,0%
  4. Нет, слишком сложная тема

    0 голосов
    0,0%
  5. А я томат! Покажите результат

    33,3%
  1. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    -----------------------------------------------------
    VarScript 0.5 на рубукките (описание, инструкции, модули)
    VarScript 0.5 на dev.bukkit.org
    -----------------------------------------------------
    Это второй туториал по функциям планировщика плагина VarScript 0.5
    Ознакомиться подробнее с плагином можно тут.
    Первая часть тут.

    Модель задачи

    Задача состоит из четырех блоков правил:
    - Инициализация (init)
    - События (events)
    - Условия (conditions)
    - Действия (actions)
    Каждый блок может содержать несколько элементов или вовсе ни одного.
    Рабочий цикл задачи:
    1) при включении задачи или загрузке плагина, исполняются все действия из блока init.
    2) задача ждет наступления любого события из блока events.
    3) при наступлении события формируется окружение.
    Окружение - это набор переменных, по которым мы можем в дальнейшем отреагировать на это событие.
    4) Начинают проверяться все условия из списка conditions по порядку. Проверка условия дает либо положительный, либо отрицательный результат. Если проверка завершилась отрицательно - задача завершает свою работу.
    Каждое условие может использовать переменные из окружения.
    5) Как только все условия прошли проверку, начинают по порядку исполняться действия из списка actions.

    Пример задачи:
    Код:
    enabled: true
    init:
    - VS "foo" %text
    - JS text2 = "bar"
    events:
    - BUKKIT PlayerChatEvent
    conditions:
    - JS Event.getMessage() == text
    actions:
    - JS Event.setMessage(text2)
    1) При загрузке задачи исполнятся два действия:
    1a) VS "foo" %text - на языке varscript: запись текста "foo" в переменную text
    1b) JS text2 = "bar" - на языке javascript: запись текста "bar" в переменную text2
    Два разных языка выбраны только для наглядности примера.
    2) Далее, задача ждет события:
    BUKKIT PlayerChatEvent - ожидание сообщения в чат от любого игрока
    3) Как только событие происходит - формируется следующее окружение:
    Event - произошедшее событие
    Player - игрок, который написал сообщение
    4) С этим окружением запускается проверка условия:
    JS Event.getMessage() == text - javascript проверка того, что сообщение равно переменной text. В нашем случае условие сработает, только если игрок ввел в чат слово foo
    5) Если условие верно - с тем же окружением начинают исполняться действия
    JS Event.setMessage(text2) - javascript изменение сообщения на text2. В нашем случае - игрок увидит сообщение bar от своего лица, вместо введенного foo.

    Следующая задача полностью аналогична по своей работе предыдущей, но не использует переменные и блок init:
    Код:
    enabled: true
    events:
    - BUKKIT PlayerChatEvent
    conditions:
    - VS @Evеnt:getMessage "foo" =
    actions:
    - VS "bar" @Evеnt:setMessage
    Команды для просмотра и редактирования задачи

    /task <задача>
    Отобразит всю информацию о задаче

    /task <задача> <блок>
    Показать соответствующий блок у задачи
    Блок: init, events, conditions, actions, или просто по первой букве. Например, /task test e

    /task <задача> <блок> add <тип> <?текст>
    Добавить новую запись в блок.
    Типы будут рассмотрены ниже

    /task <задача> <блок> <номер> remove
    Удалить строчку из блока. Внимание! строки нумеруются, начиная с 0.

    /task <задача> <блок> <номер> disable|off
    Отключить выбранную строку. Она просто будет игнорироваться задачей.

    /task <задача> <блок> <номер> enable|on
    Включить строку.

    /task <задача> <блок> <номер> edit <тип> <?текст>
    Редактирование некоторой строки. Она будет перезаписана

    /task <задача> reload
    Перезагрузка задачи. Заставляет снова исполнить блок init.
    Также загружает новые данные, если yml файл был изменен.
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Типы событий

    Все типы событий можно будет посмотреть на официальной страничке плагина. Тут приведены только существующие на момент написания.

    BUKKIT <событие> <?приоритет>
    заставляет задачу ожидать определенного события из Bukkit API.
    Пример команды:
    /task test e add BUKKIT BlockBreakEvent HIGHEST
    Список всех возможных событий можно глянуть где-нибудь в документации.
    Событие указывается по краткому имени класса (если это стандартное событие bukkit)
    Можно отслеживать нестандартные события (например события других плагинов) - тогда нужно вместо имени указать полный путь класса.
    Список приоритетов - тоже в документации.
    Приоритет указывается просто по названию

    REPEAT <период> <задержка=0>
    событие происходит с определенной периодичностью. Период указывается в серверных тиках (~ 1/20 секунды). Задержка перед первым срабатыванием указывается тоже в тиках, по умолчанию (если не указать) равна нулю.

    LOAD
    Без параметров. Сработает однократно при загрузке задачи.

    CRON <запись>
    Указывается запись для планировщика Cron. С помощью него можно настроить запуск задачи в определенное время и с определенной периодичностью, с точностью до минуты. Почитать о нем можно на вики.
    Пример записи: CRON */2 * * * sun - выполнять каждые 2 минуты по воскресеньям.

    Типы условий

    CHANCE <вероятность>
    Задает вероятность для проверки условия. Указывается либо в процентах, либо числом в диапазоне 0...1
    Примеры:
    CHANCE 10% - условие будет истинным только в 10% случаев
    CHANCE 0.5 - шансы фифти/фифти, что условие выполнится

    EVENT <состояние>
    Имеет три формы:
    EVENT is cancelled
    EVENT is not cancelled
    EVENT type is <событие>
    Событие - указывается в виде короткого имени класса или полного пути (см. событие BUKKIT). Остальные формы должны быть понятны.

    VS <скрипт>
    В скрипте должно содержаться некое условие на языке varscript.
    Пример:
    VS @Player ISOP
    будет истинным только если событие произошло с админом.

    JS <скрипт>
    В скрипте должно содержаться некое условие на языке javascript.
    Пример:
    JS Server.getOnlinePlayers().length > 10
    событие будет истинным только если на сервере более 10 игроков онлайн.
    Результатом должно быть булево значение.

    Типы действий

    Эти типы подходят как для блока действий, так и для инициализации

    VS <скрипт>
    Исполнить скрипт на языке varscript. Пример:
    VS @Player KILL
    убить игрока, с которым произошло событие

    JS <скрипт>
    Исполнить скрипт на языке javascript. Пример:
    JS Server.shutdown()
    это действие отключит сервер.

    EVENT <действие>
    Имеются две формы:
    EVENT cancel
    EVENT uncancel
    Первая для того, чтобы отменить событие, а вторая - чтобы принудительно задействовать.

    BROADCAST <сообщение>
    Выводит сообщение всем игрокам. Форматирование не поддерживается

    LOG <сообщение>
    Выводит сообщение только в консоль и лог-файл. Форматирование не поддерживается

    TASK <действие> <?задача>
    Выполнить действие с какой-либо задачей.
    Действия:
    ENABLE - включить задачу
    DISABLE - отключить задачу
    RUN - принудительно запустить задачу
    CHECKRUN - проверить условия, а после (в случае успеха) - запустить.
    Задача - указывается по имени. Если задача не указана - действия применяются к текущей задаче.
     

Поделиться этой страницей