1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Туториал Denizens [Урок - 1]: Что такое?

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем DyX, 2 янв 2019.

?

Продолжать?

  1. Oga

    10 голосов
    100,0%
  2. не-а

    0 голосов
    0,0%
  1. Автор темы
    DyX

    DyX Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    GoODsPie
    [​IMG]

    Добрый %time%, дорогой читатель...

    В связи с отсутствием на форуме актуальных, полных, и, главное, понятных туториалов, я решил создать свой, посмотрим что из этого получится...
    ------== Приступим! ==------
    Denizen - Плагин, служащий для создания других плагинов. А-ля ядра для написания ваших скриптов. Служит для тех-же целей, что и всем известный Scripts, и, более популярный на ру-сайтах, ReActions, но в отличии от них чаще обновляется (Scripts, привет), и быстрее работает (Да, ReActions, камень в твой огород). Если хотите создать что-то необычное, новое, классное на своём сервере, но лень учиться писать плагины, а денег нет - Denizens для вас!

    Что он могёт? Практически всё. Сама структура до смеха проста, мы прослушиваем действие - мы реагируем на действие. Выглядит это как-то так:

    Код:
    Имя Скрипта:
      тип: задача
      скрипт:
      - сказать "Привет Мир!" 
    А теперь, как он должен выглядеть:

    Код:
    Script Name:
      type: task
      script:
      - narrate "Hello World!"
    
    Наш первый скрипт готов!
    Переходим в папку "\plugins\Denizen\scripts", создаём файл "любое_название.yml", и переносим туда наш скрипт, перезапускаем сам плагин командой /denizen reload -a
    Запустить его возможно командой /ex run 's@Script Name'
    При этом нам в чат отобразится надпись "Hello World!" и отчёт о успешном выполнении команды.

    Он поддерживает и русские символы, так что, 'Hello World!' вполне заменяем на 'Привет Мир!'

    Но, это всё скучно, давайте мы немного усложним наш скрипт...
    Пусть он приветствует не мир, а нас; для этого заменим Hello World на Тег.
    Тег - это такая хреновина, способная заменять себя на какие-либо переменные, как правило, в скрипте они содержатся в таких <кавычках>
    Если тега в данный момент не существует, то отобразится просто текст внутри кавычек.
    Если нам нужно отобразить слово внутри кавычек, чтобы оно выглядело "примерно вот <так>", мы в скрипте пишем "примерно вот <<так>>", или же "примерно вот <&lt>так<&gt>", с этим обычно проблем не возникает, скрипт сам старается не поломать себя, по мере возможностей.
    Конкретно для нашего случая, мы используем тег <player.name>, он отобразит имя игрока запустившего наш скрипт (просто <player> отобразит его uuid).
    Скрипт теперь выглядит так:

    Код:
    Script Name:
      type: task
      script:
      - narrate "Привет <player.name>!"
    
    Для любителей цветовых символов, сразу оговорюсь, мы не используем символ '&a' для окрашивания цвета, мы используем либо '§a', либо '<&a>', для других цветов - аналогично.

    Итак, всё хорошо, скрипт работает, но давайте мы изменим команду, не красиво ведь смотреть на прочую информацию, да и сама команда длинная!

    Немного изменяем скрипт, и теперь он выглядит вот так:

    Код:
    Script Name:
      type: world
      events:
        on rubukkit command:
        - determine passively cancelled
        - narrate "Привет <player.name>!" 
    Мы видим некоторые преображения, что они значат?
    Во 1-х, мы изменили тип скрипта, до этого, он ни на что не реагировал, и запустить его мы могли либо специальной командой, либо из другого скрипта.
    Теперь - скрипт реагирует на мир сервера, возможно, кто-то скажет что удобнее реагировать сразу на команду, но об этом потом, пока - самое простое.

    Вместо "script:" мы поставили "events:", но смысла особого не изменилось, просто, отделяем макушку скрипта от самого скрипта, прочей информации нам не надо...
    Далее, видим строчку "on rubukkit command:", она означает, что при использовании команды /rubukkit что-то происходит, естественно, мы можем заменить её и на другую. Пока наш скрипт реагирует на все возможные варианты команды /rubukkit, будь то просто "/rubukkit", или "/rubukkit qwerty", скрипт всегда реагирует на нас.

    Новая строчка, а именно "- determine passively cancelled", означает что мы останавливаем действие, которое нам в ответ хочет послать сервер (к которому подключен наш скрипт), а именно - сообщение, что такой команды нет. Команды, по факту, не существует, но наш скрипт реагирует так, как если-бы она была. Кстати, да, если команда существует (например, /help), и мы решили её отменить, то у нас это успешно получится, ни сервер, ни игрок никак не прореагируют на нашу команду остановленную скриптом.

    ------== Закончили! ==------​
    Как и все туториалы, я решил посвятить первый урок только основам скрипта, показать его структуру, рассказать как вообще всё устроенно. Мы прошлись лишь по поверхности, и наш скрипт почти бесполезен (За исключением создания кастомных /help менюшек), но в дальнейших уроках будем погружаться всё глубже.

    Жду ваших советов, пожеланий по поводу оформления темы и самой сути моего рассказа. Может, слишком сильно разжёвываю, может, нужно больше картинок...
    Жду критики!
     
    Последнее редактирование: 3 янв 2019
  2. NeonTeam

    NeonTeam Активный участник Пользователь

    Баллы:
    66
    Написано хорошо. Ну я все понял, жду продолжения!
     
  3. Blockhero

    Blockhero Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    GloatyMadn
    Продолжение будет?
    Хотелось бы разбор диалогов нпс, а то при создании шага консоль выдает тучу ошибок, не знаю как правильно писать, где сколько пробелов...
    Код:
    
    example:
      type: interact
      steps:
        "question":
          click trigger:
            script:
            - chat 'Ты наверно впервые тут, на рпг?'
            - narrate '§a§lВозможные ответы: §9§l[§e§lДа§9§l] [§e§lНет§9§l]'
          chat trigger:
            'Yes':
              trigger: '/да/!'
              script:
              - chat 'окей'
              - narrate '<npc.name> бормочет что-то себе под нос'
              - zap 'step:question2'
    
     

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