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

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

@Lyosha12
Если игрока нет, то и активатор, соответственно, не будет вызван.
Спасибо, буду знать.
У меня возникают проблемы только с пониманием VAR. До меня не доходит как работает этот активатор, или чем он является. Я уже реализовал систему нажатия по НПС, если что ;)
Мне придется создать активатор VARIABLE, что бы писал текст, или что? Покамесь я реализовал вот так (т.к. не понял как работает VAR):
Код:
MOB_CLICK:
  talk1:
    mob-type: PLAYER
    mob-name: '&7Стражник'
    flags:
    - DELAY=id:talk1 set-time:5s
    actions:
    -  MESSAGE=%var:NPC-txt-%random:1-4%%

VARIABLE:
  NPC-txt-1:
    variable-id: Ban_NickAdm
    personal: false
    actions:
    - message=&c&l1
  NPC-txt-2:
    variable-id: UnknownVariable
    personal: false
    actions:
    - message=&c&l2
  NPC-txt-3:
    variable-id: 1
    personal: false
    actions:
    - message=&c&l3
  NPC-txt-4:
    variable-id: 4
    personal: false
    actions:
    - message=&c&l4
Снимок экрана 2016-03-12 в 22.15.38.png
Это выводит NPC при нажатии на него
 
Мне придется создать активатор VARIABLE, что бы писал текст, или что? Покамесь я реализовал вот так (т.к. не понял как работает VAR):
Нет, нет. Активатор VARIABLE слушает изменение переменной и выполняется, в соответствии с заданными параметрами. Вам нужно задать в файле variables.yml 30 штук переменных. От Test-1 до Test-30. Задавать их можно как вручную, так и из чата с помощью активатор MESSAGE или COMMAND.
 
Последнее редактирование:
Нет, нет. Активатор VARIABLE слушает изменение переменной и выполняется, в соответствии с заданными параметрами. Вам нужно задать в файле variables.yml 30 штук переменных. От Test-1 до Test-30. Давать их можно как вручную, так и из чата с помощью активатор MESSAGE или COMMAND.
Ого! Я не знал про файлик... Спасибо, большое! Т.е мне нужно туда вбить значения типа:
Код:
general:
  NPC-txt-1: {Привет, %player%}
  NPC-txt-2: {Хало}
  NPC-txt-3: {Привет!}
  NPC-txt-4: {Привет}
  И так далее...
И потом вызывать их вот этим:
Код:
MOB_CLICK:
  talk1:
    mob-type: PLAYER
    mob-name: '&7Стражник'
    flags:
    - DELAY=id:talk1 set-time:5s
    actions:
    - MESSAGE=%var:NPC-txt-%random:1-4%%
Я правильно понял?
 
Ого! Я не знал про файлик... Спасибо, большое! Т.е мне нужно туда вбить значения типа:
Код:
general:
  NPC-txt-1: {Привет, %player%}
  NPC-txt-2: {Хало}
  NPC-txt-3: {Привет!}
  NPC-txt-4: {Привет}
  И так далее...
И потом вызывать их вот этим:
Код:
MOB_CLICK:
  talk1:
    mob-type: PLAYER
    mob-name: '&7Стражник'
    flags:
    - DELAY=id:talk1 set-time:5s
    actions:
    - MESSAGE=%var:NPC-txt-%random:1-4%%
Я правильно понял?
Именно, только без фигурных скобок. В одинарных кавычках обычно пишу.
 
@Lyosha12
Спасибочки вам большое! Хотелось бы увидеть про %var%, %args% побольше в документации.
Было бы классно, если бы вы занимались редактированием документацией, ведь вы очень многое знаете, да и грамотно и понятно расписываете про все.
Вообщем, @fromgate возьми его как редактора документации ;)
 
Если это случится, то доки раздуются от изобилия примеров :D
Вот именно! Примеры - самое главное!
Ведь не всегда понятно как и что делается! Это как в алгебре, пока не сделаешь пару примеров, толком не поймешь теорию (лично у меня так)
 
Если это случится, то доки раздуются от изобилия примеров :D

С удовольствием. Только текущих механизм подготовки документации жутко неудобный. Я искал вики-образный движок для этого, но путного пока не нашёл :(
 
@Lyosha12
Спасибо за такое объяснение! Не мог бы ты мне рассказать, что означает в command "(?i)(ban \S+ .+)"
и что означают активаторы в команде бан. А запутался чутка.
Не могу понять значения value и их %args%
То, что в command - скажем так, "разновидность" написания команды бан.
Тоесть чтобы фиксировало как /ban так и /BaN и /BAn и т.д.
Value - записывает значения, например нужно было записать ник - для этого используется плейсхолдер %player%
%args% - такой-же плейсхолдер, но он записывает цифри.
Например Soul забанен на 30 секунд
%player% - Soul
%args% - 30 (или 30s)
P.s. S = second (секунд)
Надеюсь я ответил на ваш вопрос))
Просто переменные записывают такой текст (и прочее ), на который указывают плейсхолдеры)
(?i)(ban \S+ .+) - регулярное выражение. Модификатор (?i) (или квантифер, если угодно) означает, что к следующей скобке будет применено игнорирование регистра английских букв. Это значит, что активатор будет реагировать как на /ban ..., так и на /bAn...

\S+ - составная конструкция. Означает "Не пробел в любом количестве, но хотя бы один".

.+ - аналогичная составная конструкция, что означает "далее могут идти любые символы, но должен присутствовать хотя бы один.

Слово ban и пробелы являются постоянными (константами). Пробел так же можно заменить конструкцией \s.

cancel_event - отменить введённую команду, чтобы игрока не забанило преждевременно. Далее я заношу в переменные то, что получил из команды, а потом вызываю EXEC для того игрока, которому хочу выдать бан (ник должен быть первым аргументом, после нулевого аргумента - самой команды).


%args% - означает, что ReActions подставит вместо этой конструкции всё, что находится после нулевого аргумента, не включая его. %args1% - значит, что будет подставлено всё, что находится после первого аргумента, не включая его самого.
Поздовато я )))
Пока печатал тут целый диалог)
name:{.*}
lore:{.*}

Помоги еще, если можешь. Какой код, чтобы команда отправляла ник игрока? ( cmd {player} ban )

/ra add название_активатора a message %player%
Выведет имя игрока, который активирует активатор.
Если вы хотите вывести определённый ник, то ....a message NikName Ник нейм
Надеюсь я вам объяснил именно то, что вам нужно было ;)
 
С удовольствием. Только текущих механизм подготовки документации жутко неудобный. Я искал вики-образный движок для этого, но путного пока не нашёл :(
За то приятен для навигации
 
Что то у меня в последнее время, после рестарта сервера начала вылезать ошибка в консоль, @fromgate, не подскажете в чем может быть причина?
Код:
>
[08:16:27 INFO]: [Vault] No new version available
>
[08:16:51 WARN]: java.lang.NullPointerException
>
[08:16:51 WARN]:        at java.io.StringReader.<init>(Unknown Source)
>
[08:16:51 WARN]:        at org.json.simple.parser.JSONParser.parse(JSONParser.java:79)
>
[08:16:51 WARN]:        at org.json.simple.parser.JSONParser.parse(JSONParser.java:75)
>
[08:16:51 WARN]:        at me.fromgate.fakeplayersonline.UUIDCache.getMojangUUID(UUIDCache.java:59)
>
[08:16:51 WARN]:        at me.fromgate.fakeplayersonline.UUIDCache.getUUID(UUIDCache.java:47)
>
[08:16:51 WARN]:        at me.fromgate.fakeplayersonline.ShowList.fillShowList(ShowList.java:82)
>
[08:16:51 WARN]:        at me.fromgate.fakeplayersonline.FPOPLib$1.onPacketSending(FPOPLib.java:100)
>
[08:16:51 WARN]:        at com.comphenix.protocol.injector.SortedPacketListenerList.invokeSendingListener(SortedPacketListenerList.java:195)
>
[08:16:51 WARN]:        at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:149)
>
[08:16:51 WARN]:        at com.comphenix.protocol.injector.PacketFilterManager.handlePacket(PacketFilterManager.java:638)
>
[08:16:51 WARN]:        at com.comphenix.protocol.injector.PacketFilterManager.invokePacketSending(PacketFilterManager.java:614)
>
[08:16:51 WARN]:        at com.comphenix.protocol.compat.netty.independent.NettyProtocolInjector.packetQueued(NettyProtocolInjector.java:312)
>
[08:16:51 WARN]:        at com.comphenix.protocol.compat.netty.independent.NettyProtocolInjector.onPacketSending(NettyProtocolInjector.java:278)
>
[08:16:51 WARN]:        at com.comphenix.protocol.compat.netty.independent.NettyChannelInjector.processSending(NettyChannelInjector.java:417)
>
[08:16:51 WARN]:        at com.comphenix.protocol.compat.netty.independent.NettyChannelInjector.access$500(NettyChannelInjector.java:84)
>
[08:16:51 WARN]:        at com.comphenix.protocol.compat.netty.independent.NettyChannelInjector$6.handleScheduled(NettyChannelInjector.java:383)
>
[08:16:51 WARN]:        at com.comphenix.protocol.compat.netty.independent.NettyChannelInjector$6.onMessageScheduled(NettyChannelInjector.java:351)
>
[08:16:51 WARN]:        at com.comphenix.protocol.compat.netty.independent.NettyChannelProxy$2.schedulingRunnable(NettyChannelProxy.java:127)
>
[08:16:51 WARN]:        at com.comphenix.protocol.compat.netty.independent.NettyEventLoopProxy.execute(NettyEventLoopProxy.java:95)
>
[08:16:51 WARN]:        at net.minecraft.server.v1_8_R3.NetworkManager.a(NetworkManager.java:192)
>
[08:16:51 WARN]:        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
[08:16:51 WARN]:        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>
[08:16:51 WARN]:        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>
[08:16:51 WARN]:        at java.lang.reflect.Method.invoke(Unknown Source)
>
[08:16:51 WARN]:        at com.comphenix.protocol.compat.netty.independent.NettyChannelInjector.invokeSendPacket(NettyChannelInjector.java:690)
>
[08:16:51 WARN]:        at com.comphenix.protocol.compat.netty.independent.NettyChannelInjector.access$600(NettyChannelInjector.java:84)
>
[08:16:51 WARN]:        at com.comphenix.protocol.compat.netty.independent.NettyChannelInjector$7.run(NettyChannelInjector.java:535)
>
[08:16:51 WARN]:        at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71)
>
[08:16:51 WARN]:        at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350)
>
[08:16:51 WARN]:        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:723)
>
[08:16:51 WARN]:        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374)
>
[08:16:51 WARN]:        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654)
>
[08:16:51 WARN]:        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557)
[08:16:52 WARN]: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
java.nio.channels.ClosedChannelException
>ra reload
>
[08:20:54 INFO]: Перезагрузка произведена. Загружено 333 активаторов, 32 локаций
 
@fromgate, сейчас понадобилось вызвать команду от имени оператора, но в EXEC. Не могли бы Вы добавить параметр player:<> для всех действий, где он может быть уместен?
@fromgate, как я могу запомнить значение задержки для игрока, если я его изменил и хочу вернуть обратно? То есть как вернуть значение задержки в момент до того, как изменил её?
 
предлагаю добавить радиус для действия EFFECT. Помню видео было, где можно было сделать на подобии команды //set, т.е. по длине и ширине выставить эффекты. Но сейчас мне нужно по радиусу, на подобии команды //hcyl, но только с эффектами.
ps. команды из WE привожу для более понятного объяснения
 
предлагаю добавить радиус для действия EFFECT. Помню видео было, где можно было сделать на подобии команды //set, т.е. по длине и ширине выставить эффекты. Но сейчас мне нужно по радиусу, на подобии команды //hcyl, но только с эффектами.
ps. команды из WE привожу для более понятного объяснения
Создайте полигональный регион и проделайте действия, аналогичные кубоидному.
 
Скачал самую последнюю версию RA, запустил, а он не запустился, поддержки 1.9 все еще нет?(
Код:
[14:52:06] [Craft Scheduler Thread - 20/WARN]: org.apache.commons.lang.UnhandledException: Plugin ReActions v0.9.9/4 generated an exception while executing task 444
    at org.bukkit.craftbukkit.v1_9_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:56)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
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_9_R1.scheduler.CraftTask.run(CraftTask.java:71)
    at org.bukkit.craftbukkit.v1_9_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53)
    ... 3 more
 
Скачал самую последнюю версию RA, запустил, а он не запустился, поддержки 1.9 все еще нет?(
[/SPOILER]
Нет, ее нет.
@Lyosha12
Привет! Ты же знаешь хорошо РА, не мог бы ты мне подсказать вот что:
Код:
COMMAND:
  rttp:
    override: true
    regex: false
    command: rttp
    flags:
    - DELAY_PLAYER=id:rttp player:%player% set-time:20s
    actions:
    - cmd_op=tppos %random:100-500% %random:60-100% %random:100-500%
    - potion=type:DAMAGE_RESISTANCE level:10 time:6s
    - message=&eНовые координаты %PLAYER_LOC%
    reactions:
    - message=&7[&6Рандомная Телепортация]&b > &eЖди еще &c%delay-left-ss%&e секунд. hide:1s
Как сделать что бы в:
Код:
    - message=&eНовые координаты %PLAYER_LOC%
Выводились координаты только X, Y , Z и только те, которые выбрал %random%?
Знаю есть %args% но он только с command работает.
П.С %PLAYER_LOC% не подходит! Он указывает мир и прочую ненужную фигню...[/code]
Нужны только точные значения x, y, z без цифр после запятой.
И почему не работает плагин с ServerSigns?
Я пишу: /svs add rttp
Потом нажимаю по табличке и ... И ничего.
А когда я вручную ввожу /rttp, то все работает!
 
Как сделать, чтобы плагин отправлял свои собственные команды?

У меня есть 2-а активатора.

1)


REGION_ENTER:
1_in:
region: test
actions:
- MESSAGE=TITLE
- CMD_CONSOLE=CMD %player% (не работает)

2)


COMMAND:
1_cmd:
override: true
regex: false
command: CMD
actions:
- MESSAGE=i'm noob

Как сделать, чтобы CMD в REGION_ENTER работала?
 
и только те, которые выбрал %random%?
Для этого не существует плейсхолдера типа %getLocXYZ%. Придётся заносить в глобальную переменную то, что посчитал рандом, а потом подставлять это в нужное сообщение.
И почему не работает плагин с ServerSigns?
Я пишу: /svs add rttp
Потом нажимаю по табличке и ... И ничего.
А когда я вручную ввожу /rttp, то все работает!
Синтаксис указания команды смотрите. У Вас сейчас (не знаю как работает), но должен быть формат "cmd:<> arg1:<> ag2:<>..." Если хотите более кастомную команду - используйте REGEX.
 
Назад
Верх