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

Плагин [MECH/FUN] ReActions - Что? Тогда? Иначе! [BukkitDev]

Тема в разделе "Релизы плагинов", создана пользователем fromgate, 16 июл 2013.

  1. VRovo213

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

    Баллы:
    76
    Имеется ли поддержка телепортации на другой сервер банджи? Или без костылей никак?
     
  2. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Можно выполнить команду /server <servername> и тогда можно будет телепортироваться на нужный сервер:
    Код:
    - CMD_OP=server servername
     
    Последнее редактирование: 23 апр 2017
  3. VRovo213

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

    Баллы:
    76
    Пытался уже. Результат: Unknown command. Type "/help" for help
     
  4. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Тоесть эта фильтрация
    Код:
    SELECT SUBSTRING('$$test',3)
    Это суто MySQL команда?? Её нельзя выполнить как-то по другому, вне базы??
    У меня с базой как правило задержка около 1-2 секунд. Будут подтормаживать такие меседжи...

    Может быть возможно поймать этот меседж на выходе (когда он уже с $), затем ещё раз отменить... )))
    Затем запихнуть его в активатор с регулярным выражением, который будет игнорировать первый символ и выполнять действие вывода этого меседжа от имени нужного нам игрока ??
     
  5. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Не будет ;)
     
  6. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Можна ли сделать что бы активаторы с задержкой, которые помещаются в delayed-actions.yml исполнялись точно когда пришло их время независимо от того, есть ли игрок на сервере или нет ??

    Или это никак не обойти? Надо что бы игрок был на сервере...
    Предложение:
    1. добавить флаг, который проверял бы как давно игрок/все игроки не заходили на сервер.
    2. добавить действие, которое могло бы удалять файлы с именем игрока переведенным в UUID, по указаному пути.

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

    (ну или хотя бы первое)
     
    Последнее редактирование: 24 апр 2017
  7. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    @fromgate
    Фуууух. Я, по-моему, сделал PullRequest. Можете взглянуть?

    Для этого необходимо куда-то сохранять информацию о дате каждого игрока. На мой взгляд, этот флаг не нужен. Чтобы узнать дату я обращаюсь к БД AuthMe к колонке lastlogin. Ничего сложного.
    @fromgate
    Еcть одна вещь, на которую у меня много времени ушло, чтобы скомпилировать плагин, это Protocol-Lib. Он видимо сменил репозиторий. Я нашёл репозиторий в других источниках и добавил в конфиг:
    Код:
      maven { url "http://mvn.yawk.at/" }
      maven { url "http://cnaude.org/repo/" }
    и у меня плагин скомпилировался.
    Может быть это поможет и Вам.
     
    Последнее редактирование: 24 апр 2017
  8. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Можна команду, которой обращатся к базе для получения даты AuthMe?

    P.S. если не ошибаюсь, ещё дата о первом/последнем заходе игрока в "мапу" хранится в
    world\playerdata\<UUID>.dat
    Если так, то впринципе никаких дополнительных "сохранений информации" не потребуется...
     
    Последнее редактирование: 24 апр 2017
  9. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Код:
    SELECT ROUND(lastlogin/1000) as lastlogin FROM authme WHERE username="%player%"
    получаем дату в секундах.
    authme - таблица, указанная в конфиге AuthMe (mySQLTablename: authme)
    Тогда необходимо будет делать не мало кода:
    - распаковать <UUID>.dat
    - распарсить его
    - вытащить нужную информацию.

    Проще с AuthMe взять информацию
     
    Последнее редактирование: 24 апр 2017
  10. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    спасибо. Буду пробывать
    Такой маленький неприятный момент: иногда нужно вывести переменную в меседж, или дать пермишен с этой переменной...
    Когда она создается, она имеет формат целого числа (0,1,2,3) без дроби.
    Но затем, если её повышать/понижать, ей добавляется формат дроби (1.0, 2.0, 3.0...)
    И если значение этой переменной позитивное, плейсхолдер выводит его в бездробном формате.
    Но если значение переменной негативное (-1.0, -2.0, -3.0...), то плейсхолдер выводит это число уже в таком дробном формате, как оно записано в variables.yml.

    Хотелось бы что б всегда выводилось конкретно так, как ты указал при создании переменной. Если указал value:5 и не делал никаких манипуляций, которые могли бы разбить переменную на дробь, то что б оно так и записывало 5, в целом формате.
     
  11. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate

    Я заметил, посмотрю что это за репозитории. Я уже хотел в свой запихнуть. Но поскольку он у меня топорный, то не хотелось бы его перегружать...
     
  12. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    А кто мешает округлить число доцелого?
    Код:
    %CALC:round(-110.123)%
    или
    %CALC:round(%varp:value%)%
    или
    %CALC:round(%var:%player%.value%)%
     
  13. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Плейсхолдер в плейсхолдере..?
    WHAT??
    Во первых, откуда это "round" ?) В гайде такого не нашел...

    А во вторых, хочу уточнить, оно округлит 1.42 до 1.0, или округлит 1.42 до 1.0 и обрежет 0, в резуль станет 1.0, без 0 ??
     
    Последнее редактирование: 25 апр 2017
  14. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Там, кажется, даже синусы-косинусы поддерживаются ;) Я уже не помню, что в той библиотеке было.

    По идее, без нуля. По крайней мере я специально как-то возился, чтобы откусывать ".0"
     
  15. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Так, вы протестируйте сами действие:
    Код:
    - 'MESSAGE=%CALC:round(-1123.123)%'
    Результат: -1123 (без дробной части)
    Перед тем как использовать CALC я проверил, что он может делать. А может он много. Вот только часть того, что может вычислять CALC:
    Код:
    'MESSAGE=%CALC:sin(pi/4)*sqrt(8)*2^2*cos(pi/4)*tan(pi/6)-(2+exp(3))+atan(1.1)-asin(0.8)+acos(0.2)%'
     
  16. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Да, округляет отлично )
     
  17. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Вышел новый Build#37 плагина, но уже с моими изменениями/дополнениями:

    https://circleci.com/gh/fromgate/ReActions/37#artifacts/containers/0

    Надеюсь, автор плагина не будет против, если я распишу, что изменилось:

    1. Добавлено новое действие LOG.
    Применение:
    Это действие необходимо для записи в лог сервера нужных вам данных. Можно использовать для отладки активаторов.

    LOG <message> [prefix] [color]

    <message> - Сообщение, которое будет отправлено в лог сервера.
    prefix:<true | false> - Не обязательный параметр, который показывает или скрывает префикс плагина ([ReActions]). По умолчанию prefix:true
    color:<true | false>
    - Не обязательный параметр, который показывает или скрывает форматирование текста. По умолчанию prefix:false

    Код:
    EXEC:
      test_log:
        flags: []
        actions:
        - LOG=&e&lTest
        - LOG=&e&lTest color:true
        - LOG=&e&lTest color:true prefix:false
        - LOG=&e&lTest color:false prefix:false
    
    Результат этого активатора будет записан в лог сервера в таком виде:
    [ReActions] Test
    [ReActions] §e§lTest
    §e§lTest
    Test



    2. Добавлено новое состояние игрока SPECTATOR_TARGET для флага STATE. Это позволяет определять состояние вселившегося игрока в другом игроке или сущности.


    3. Добавлен плейсхолдер для FLAG_SET. Позволяет узнать, какой флаг сработал из группы флагов. Полезно, когда нужно определить, например, в каком мире находится игрок или к какой группе принадлежит игрок.

    Код:
    EXEC:
      test_flags:
        flags:
        - FLAG_SET=GROUP:default GROUP:fly GROUP:vip GROUP:vipp GROUP:god GROUP:mvp GROUP:mvpp GROUP:creative
        - FLAG_SET=WORLD:world WORLD:world_nether WORLD:world_the_end
        actions:
        - CMD_CONSOLE=say &eИгрок &a%player% &eпринадлежит группе &6&l%GROUP_FLAG%
        - CMD_CONSOLE=say &eИгрок &a%player% &eв мире &6&l%WORLD_FLAG%
    

    4. Пофиксен баг в действии MESSAGE, когда применяется параметр hide
     
    Последнее редактирование: 25 апр 2017
  18. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Отлично! Будем тестировать.
     
  19. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    @fromgate
    Я добавил новый активатор и отправил, как пулреквест. Взгляните пожалуйста.
    Спасибо.
     
  20. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Ого! Это самый запрашиваемый активатор :)
    Принял пулл, вроде всё нормально.

    https://circleci.com/gh/fromgate/ReActions/38


    Добавление нового активатора Block_Click
    Применение:
    Этот активатор срабатывает, когда игрок кликает по блоку левой или правой кнопкой мыши. Он даёт возможность контролировать действия над блоками. Можно запретить как уничтожения блоков так и их установку. Можно применять эти правила, как для одного блока, так и группы блоков. Активатор можно настроить на запрет открытия любого инвентаря, который открывается при клике на соответствующие блоки (CHEST, HOPPER, BEACON, ... и т.п. ).

    /react add BLOCK_CLICK <ИмяАктиватора> [type:<ТипМатериала>] [click:left | right | any] [location:]
    type - тип материала блока. Может принимать пустое значение, если необходимо отслеживать воздействия на все типы блоков.
    click: <left | right | any> - какой клик мыши по блоку необходимо отслеживать.
    location: - координаты блока, который необходимо контролировать.

    Временные плейсхолдеры, действующие в этом активаторе:
    %blocktype% - тип блока
    %blocklocation% - координаты блока
    %click% - "left" или "right" в зависимости от того какой кнопкой мыши кликнули по блоку.

    Примеры:

    1. Запрет на редактирование мира. Нельзя ни поставить блоки, ни сломать их:
      /react add BLOCK_CLICK bc
      /react add bc a CANCEL_EVENT true
      или
    BLOCK_CLICK:
    bc:
    block-type: ''
    click-type: ANY
    actions:
    - CANCEL_EVENT=true
    1. Запрет открытия всех сундуков в мире:
      /react add BLOCK_CLICK bc2 type:CHEST click:right
      /react add bc2 a CANCEL_EVENT true
      или
    BLOCK_CLICK:
    bc2:
    block-type: CHEST
    click-type: RIGHT
    actions:
    - CANCEL_EVENT=true
    В этом примере, если click-type: LEFT, то запрещено будет разбивать все сундуки, но разрешено открывать. Если click-type: ANY, то будет запрещено и разбивать и открывать сундуки.

    1. Контроль только над одним сундуком (блоком):
      /react add BLOCK_CLICK bc3 type:CHEST click:right loc:world,100,60,100
      /react add bc3 a CANCEL_EVENT true
      или
    BLOCK_CLICK:
    bc3:
    block-type: CHEST
    click-type: RIGHT
    location: world,100,60,100
    actions:
    - CANCEL_EVENT=true

    где location: world,100,60,100 - координаты сундука

    1. Запретить ломать определённые блоки в мире:
      /react add BLOCK_CLICK bc4 type:CHEST click:left
      /react add bc4 f COMPARE param:%blocktype% value1:DIRT value2:GRASS value3:STONE
      /react add bc4 a CANCEL_EVENT true
      или
    BLOCK_CLICK:
    bc4:
    block-type: ''
    click-type: LEFT
    flags:
    - COMPARE=param:%blocktype% value1:DIRT value2:GRASS value3:STONE
    actions:
    - CANCEL_EVENT=true

    Можно ещё много вещей придумать с этим активатром.
     

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