Войти или зарегистрироваться

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

Имеется ли поддержка телепортации на другой сервер банджи? Или без костылей никак?
 
Имеется ли поддержка телепортации на другой сервер банджи? Или без костылей никак?
Можно выполнить команду /server <servername> и тогда можно будет телепортироваться на нужный сервер:
Код:
- CMD_OP=server servername
 
Последнее редактирование:
Я только, что попробовал, есть проще вариант:
Код:
SELECT SUBSTRING('$$test',3)
Здесь убираются два первых символа из текста! :)
Действие будет выглядеть следующим образом:
Код:
SQL_SELECT=query:{SELECT SUBSTRING("%message%",3)} variable:msg player:%player%

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

Может быть возможно поймать этот меседж на выходе (когда он уже с $), затем ещё раз отменить... )))
Затем запихнуть его в активатор с регулярным выражением, который будет игнорировать первый символ и выполнять действие вывода этого меседжа от имени нужного нам игрока ??
 
Можна ли сделать что бы активаторы с задержкой, которые помещаются в delayed-actions.yml исполнялись точно когда пришло их время независимо от того, есть ли игрок на сервере или нет ??

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

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

(ну или хотя бы первое)
 
Последнее редактирование:
@fromgate
Фуууух. Я, по-моему, сделал PullRequest. Можете взглянуть?

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

P.S. если не ошибаюсь, ещё дата о первом/последнем заходе игрока в "мапу" хранится в
world\playerdata\<UUID>.dat
Если так, то впринципе никаких дополнительных "сохранений информации" не потребуется...
 
Последнее редактирование:
Можна команду, которой обращатся к базе для получения даты AuthMe?
Код:
SELECT ROUND(lastlogin/1000) as lastlogin FROM authme WHERE username="%player%"
получаем дату в секундах.
authme - таблица, указанная в конфиге AuthMe (mySQLTablename: authme)
P.S. если не ошибаюсь, ещё дата о первом/последнем заходе игрока в "мапу" хранится в
world\playerdata\<UUID>.dat
Тогда необходимо будет делать не мало кода:
- распаковать <UUID>.dat
- распарсить его
- вытащить нужную информацию.

Проще с AuthMe взять информацию
 
Последнее редактирование:
Код:
SELECT ROUND(lastlogin/1000) as lastlogin FROM authme WHERE username="%player%"
получаем дату в секундах.
authme - таблица, указанная в конфиге AuthMe (mySQLTablename: authme)

Тогда необходимо будет делать не мало кода:
- распаковать <UUID>.dat
- распарсить его
- вытащить нужную информацию.

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

Хотелось бы что б всегда выводилось конкретно так, как ты указал при создании переменной. Если указал value:5 и не делал никаких манипуляций, которые могли бы разбить переменную на дробь, то что б оно так и записывало 5, в целом формате.
 
Еcть одна вещь, на которую у меня много времени ушло, чтобы скомпилировать плагин, это Protocol-Lib. Он видимо сменил репозиторий. Я нашёл репозиторий в других источниках и добавил в конфиг:
Код:
  maven { url "http://mvn.yawk.at/" }
  maven { url "http://cnaude.org/repo/" }
и у меня плагин скомпилировался.
Может быть это поможет и Вам.


Я заметил, посмотрю что это за репозитории. Я уже хотел в свой запихнуть. Но поскольку он у меня топорный, то не хотелось бы его перегружать...
 
Хотелось бы что б всегда выводилось конкретно так, как ты указал при создании переменной. Если указал value:5 и не делал никаких манипуляций, которые могли бы разбить переменную на дробь, то что б оно так и записывало 5, в целом формате.
А кто мешает округлить число доцелого?
Код:
%CALC:round(-110.123)%
или
%CALC:round(%varp:value%)%
или
%CALC:round(%var:%player%.value%)%
 
А кто мешает округлить число доцелого?
Код:
%CALC:round(-110.123)%
или
%CALC:round(%varp:value%)%
или
%CALC:round(%var:%player%.value%)%
Плейсхолдер в плейсхолдере..?
WHAT??
Во первых, откуда это "round" ?) В гайде такого не нашел...

А во вторых, хочу уточнить, оно округлит 1.42 до 1.0, или округлит 1.42 до 1.0 и обрежет 0, в резуль станет 1.0, без 0 ??
 
Последнее редактирование:
Во первых, откуда это "round" ?) В гайде такого не нашел...
Там, кажется, даже синусы-косинусы поддерживаются ;) Я уже не помню, что в той библиотеке было.

А во вторых, хочу уточнить, оно округлит 1.42 до 1.0, или округлит 1.42 до 1.0 и обрежет 0, в резуль станет 1.0,без 0 ??
По идее, без нуля. По крайней мере я специально как-то возился, чтобы откусывать ".0"
 
А во вторых, хочу уточнить, оно округлит 1.42 до 1.0, или округлит 1.42 до 1.0 и обрежет 0, в резуль станет 1.0, без 0 ??
Так, вы протестируйте сами действие:
Код:
- 'MESSAGE=%CALC:round(-1123.123)%'
Результат: -1123 (без дробной части)
Во первых, откуда это "round" ?) В гайде такого не нашел...
Перед тем как использовать 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)%'
 
Вышел новый 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
 
Последнее редактирование:
Вышел новый 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
Отлично! Будем тестировать.
 
@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

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