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

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

нужно именно как в tellraw
Юзайте консольную команду отправки сообщения игроку этой командой. Сам tellraw удобно составить в онлайн-сервисе.
Я заметил небольшой баг, при нажатии на НИП'а (Плагин Citizens, активатор Mob_Click) команда пишется 2 раза, можно исправить?
Не особо удобно в некоторых случаях...
Локальную задержку активатора ставить нужно, если такое раздражает.
 
Юзайте консольную команду отправки сообщения игроку этой командой. Сам tellraw удобно составить в онлайн-сервисе.
А можно по подробнее и с примером. Что-то я вообще сообразить не могу.
 
CMD_CONSOLE=tellraw бла-бла-бла
Это немного не то. Мне нужно КАК в tellraw, а не сама команда. Tellraw пишет игроку в чат и выполняет это, если он нажмет на надпись. А мне нужно без нажатия. Так реально?
Во как бы игрок зашел в приват допустим и у него в чат что-то вбилось и отправилось. Не через say или sudo ибо так не подходит, а именно в чат написало игроку и вызвалось.
 
Это немного не то. Мне нужно КАК в tellraw, а не сама команда. Tellraw пишет игроку в чат и выполняет это, если он нажмет на надпись. А мне нужно без нажатия. Так реально?
Во как бы игрок зашел в приват допустим и у него в чат что-то вбилось и отправилось. Не через say или sudo ибо так не подходит, а именно в чат написало игроку и вызвалось.
А что вызвать-то тебе нужно? Какое действие, к примеру, при входе в РГ?
Код:
- message=<Тута свой текст>
#- wait=<вреямя> к примеру, если тебе нужно сделать задержку
- <Тута свое действие>
вот пример:
Код:
actions:
  - message=&7[&4PvP&7] &b> &eВы вошли на территорию &cPvP&e, GM отключен.
  - wait=1s
  - cmd_console=gm %player% 0
 
А что вызвать-то тебе нужно? Какое действие, к примеру, при входе в РГ?
Код:
- message=<Тута свой текст>
#- wait=<вреямя> к примеру, если тебе нужно сделать задержку
- <Тута свое действие>

вот пример:
Код:
actions:
  - message=&7[&4PvP&7] &b> &eВы вошли на территорию &cPvP&e, GM отключен.
  - wait=1s
  - cmd_console=gm %player% 0
Мне нужно заставить игрока написать в чат при входе в регион. Только написать в чат игрока и выполнить оттуда как в tellraw, обычные say и тд не подходят.
 
Мне нужно заставить игрока написать в чат при входе в регион. Только написать в чат игрока и выполнить оттуда как в tellraw, обычные say и тд не подходят.
Аааа, сложна! Тебе нужно что бы при входе в РГ от имени игрока выполнялась какая-та команда?!?
Тогда так:
Код:
actions:
- cmd=<команды>
А вообще, изучите-ка документацию (вдруг вы не сможете нажать на гиперссылку - http://reactions.fromgate.ru/)
 
Аааа, сложна! Тебе нужно что бы при входе в РГ от имени игрока выполнялась какая-та команда?!?
Тогда так:
Код:
actions:
- cmd=<команды>
А вообще, изучите-ка документацию (вдруг вы не сможете нажать на гиперссылку - http://reactions.fromgate.ru/)
В документации я уже был. Ничего такого не нашел. И мне нужно не именно команду, а заставить игрока написать в чат. Вы не можете немного понять сути проблемы, но все же спасибо за ответы.
 
В документации я уже был. Ничего такого не нашел. И мне нужно не именно команду, а заставить игрока написать в чат. Вы не можете немного понять сути проблемы, но все же спасибо за ответы.
Заставить игрока написать в чат... РА тебе не поможет, к сожалению, только РА + Сторонний плагин, к примеру, OnlyCore.
 
У меня немного иная проблема. Как сделать в 'flags' или то или это?
К примеру:
Код:
REGION:
  Spawn_speed:
    region: spawn
    flags:
    - REGION=pvp #или РГ pvp, или РГ pvp2, или РГ ....
    reactions:
    - POTION=type:SPEED time:2 ambient:true

Ах, еще, как-нибудь можно сделать так что бы из такой команды: /do <Player> <Text>
вы делить чисто %arg1% и все последующие аргументы?
Мне это нужно для того, что бы я писал /do <Player> <Text> и в чат выводилось фейковое сообщение игрока)
 
Здраствуйте, придумал систему помощи игроку

Например: /sos <text> - Команда создает тикет (Одновременно можно только 1 тикет)
/sosd - удаляет тикет

Для хелперов или Модераторов:
/ticket accept <nick> - Чтобы принять заявку

Код:
    - 'MSG=&8Игрок &3&o%var:%varp:target_player%.target_player% &8отправил заявку на помощь с текстом: &f&o%var:%varp:target_player%.text% player:{group:gl}'


Но дело в том, что при создании данной системы возник вопрос.

Мне нужно создать команду /ticket list
Которая будет показывать список всех заявок, которые отправляли игроки, но вообще не представляю как это сделать.

(Если что написал не понятно, я перепишу) (Неужели через MySQL?)
(Не хотелось бы давать весь код)
У меня немного иная проблема. Как сделать в 'flags' или то или это?
К примеру:
Код:
REGION:
  Spawn_speed:
    region: spawn
    flags:
    - REGION=pvp #или РГ pvp, или РГ pvp2, или РГ ....
    reactions:
    - POTION=type:SPEED time:2 ambient:true

Ах, еще, как-нибудь можно сделать так что бы из такой команды: /do <Player> <Text>
вы делить чисто %arg1% и все последующие аргументы?
Мне это нужно для того, что бы я писал /do <Player> <Text> и в чат выводилось фейковое сообщение игрока)
Код:
  Do_create:
    override: true
    regex: true
    command: do .+ +.*
    actions:
    - VAR_PLAYER_SET=id:player value:%arg1%
    - VAR_PLAYER_SET=id:text value:{%args1%}
 
Последнее редактирование:
Скоро ли будет обновление для 1.10.2?
>[2K
[00:18:55 WARN]: Exception in thread "Craft Scheduler Thread - 491"
>[2K
[00:18:55 WARN]: org.apache.commons.lang.UnhandledException: Plugin ReActions v0.9.9/4 generated an exception while executing task 704
at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:56)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: org.bukkit.Server.getOnlinePlayers()[Lorg/bukkit/entity/Player;
at me.fromgate.reactions.MetricsLite.postPlugin(MetricsLite.java:285)
at me.fromgate.reactions.MetricsLite.access$3(MetricsLite.java:278)
at me.fromgate.reactions.MetricsLite$1.run(MetricsLite.java:173)
at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftTask.run(CraftTask.java:71)
at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53)
... 3 more

Есть активатор (табличка) и установлен флаг (ITEM_INVENTORY). Мне нужно задать предмет с названием. Дело в том, что название типа "&c&lКлюч" плагин принимает, а вот "&c&lКлюч Судьбы" уже нет. Вопрос: как написать название предмета, в котором есть пробел? Такой же вопрос к описанию (lore) предмета (пробел/новая строка).
fsp2:
sign-mask:
- §lПройти дальше
- §8(§c§l!§8)
- §8§l§nнужен ключ
- §8§l(§2§lКЛАЦ§8§l)
click-type: ANY
flags:
- ITEM_INVENTORY=item:NETHER_STAR name:{&c&lКлюч | Обучение} lore:{&7Нужен для прохождения локаций\n&7в обучении}
actions:
- MESSAGE=&6Перемещение...
- CMD_CONSOLE=clear %PLAYER_NAME%
- TP=world,72,30,367
reactions:
- MESSAGE=&cСначала Вы должны добыть ключ, убив зомби в локации с жизнями.
 
Последнее редактирование:
Скоро ли будет обновление для 1.10.2?
>[2K
[00:18:55 WARN]: Exception in thread "Craft Scheduler Thread - 491"
>[2K
[00:18:55 WARN]: org.apache.commons.lang.UnhandledException: Plugin ReActions v0.9.9/4 generated an exception while executing task 704
at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:56)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: org.bukkit.Server.getOnlinePlayers()[Lorg/bukkit/entity/Player;
at me.fromgate.reactions.MetricsLite.postPlugin(MetricsLite.java:285)
at me.fromgate.reactions.MetricsLite.access$3(MetricsLite.java:278)
at me.fromgate.reactions.MetricsLite$1.run(MetricsLite.java:173)
at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftTask.run(CraftTask.java:71)
at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53)
... 3 more

Есть активатор (табличка) и установлен флаг (ITEM_INVENTORY). Мне нужно задать предмет с названием. Дело в том, что название типа "&c&lКлюч" плагин принимает, а вот "&c&lКлюч Судьбы" уже нет. Вопрос: как написать название предмета, в котором есть пробел? Такой же вопрос к описанию (lore) предмета (пробел/новая строка).
fsp2:
sign-mask:
- §lПройти дальше
- §8(§c§l!§8)
- §8§l§nнужен ключ
- §8§l(§2§lКЛАЦ§8§l)
click-type: ANY
flags:
- ITEM_INVENTORY=item:NETHER_STAR name:{&c&lКлюч | Обучение} lore:{&7Нужен для прохождения локаций\n&7в обучении}
actions:
- MESSAGE=&6Перемещение...
- CMD_CONSOLE=clear %PLAYER_NAME%
- TP=world,72,30,367
reactions:
- MESSAGE=&cСначала Вы должны добыть ключ, убив зомби в локации с жизнями.
flags:
- ITEM_INVENTORY=item:NETHER_STAR name:{&c&lКлюч.*} lore:{&7Нужен для прохождения локаций.*&7в обучении}
 
Здраствуйте, придумал систему помощи игроку

Например: /sos <text> - Команда создает тикет (Одновременно можно только 1 тикет)
/sosd - удаляет тикет

Для хелперов или Модераторов:
/ticket accept <nick> - Чтобы принять заявку

Код:
    - 'MSG=&8Игрок &3&o%var:%varp:target_player%.target_player% &8отправил заявку на помощь с текстом: &f&o%var:%varp:target_player%.text% player:{group:gl}'


Но дело в том, что при создании данной системы возник вопрос.

Мне нужно создать команду /ticket list
Которая будет показывать список всех заявок, которые отправляли игроки, но вообще не представляю как это сделать.

(Если что написал не понятно, я перепишу) (Неужели через MySQL?)
(Не хотелось бы давать весь код)

Код:
  Do_create:
    override: true
    regex: true
    command: do .+ +.*
    actions:
    - VAR_PLAYER_SET=id:player value:%arg1%
    - VAR_PLAYER_SET=id:text value:{%args1%}
Вводить список можно рекуррентно в переменную. Но тогда с удалением будет проблема - это вам не строковую константу в string искать, тут нельзя сравнивать содержание string[5], например, с запросом на удаление.

Костыльно-велосипедное решение:
1) Заводите новую переменную с инкрементом её индекса в её имени при новой заявке.
2) При поступлении заявки на удаление запускайте цикл из EXEC на перебор этих переменных по их индексу. Итератором цикла будет служить ещё одна отдельная переменная.

P.S. Обрабатывать пустые места после удаления переменной не вижу смысла - лишние костыли многим повредили.
P.P.S. Учитывайте, что при таком переборе и краше сервера одновременно, список переменных может самопроизвольно дропнуться, что повлечёт его обнуление при обращении к нему вновь.
P.P.P.S. ReActions всё ещё не умеет работать с файлами и делать на этой основе бекап чего-либо.
@fromgate, я повторюсь, но как насчёт пересмотреть фундамент плагина? Изначально он создавался для телепортов, чтобы сделать оплату более удобной. Теперь плагин вырос и позволяет более удобно создавать ивенты и мелкие заплатки. Предлагаю вырости до версии 1.0.0: добавить основные конструкции из программирования (циклы, итераторы, массивы, функции), но упростить с ними работу до такого элементарного уровня, чтобы задание выше решалось в одну строку:
Код:
for(i = 0, maxTicket, +): if(ticket[i] = delete): delete[i] ticket
Как-никак, но я, полюбивший Ваше творение, теперь изучаю С++ с большим энтузиазмом, чем если бы я не знал о ReActions. И полагаю, что большая часть тех, кто заинтересован скриптингом на ReActions, пойдёт дальше и станет полноценными разработчиками. Конструкция FLAG-THAN-ELSE интересна и позволила мне легко стартануть на первых лекциях. Однако, чем больше я знаю С++, тем больше я хочу, чтобы новички не испытывали тех излишних (с точки зрения не-программистов) манипуляций, которые встречаются мне на каждом шагу, при работе с Вашим плагином :)
 
Последнее редактирование:
Код:
  Do_create:
    override: true
    regex: true
    command: do .+ +.*
    actions:
    - VAR_PLAYER_SET=id:player value:%arg1%
    - VAR_PLAYER_SET=id:text value:{%args1%}
Что-то не работает, или я не понял как делать...
Пишет, что такой команды нет.
 
Назад
Верх