- Баллы
- 66
- Имя в Minecraft
- Jaysers
Привет, проблема такая - выключаю сервак, вылетает ошибка
Ядро сервера Purpur
Версия 1.19.4
Ядро сервера Purpur
Версия 1.19.4
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Извиняюсь, пока нет. Нынче слишком много дел. Попробую добавить какое-нибудь временное решение на днях.Не добавлял еще? Хотелось бьі уже реализовать задуманное на сервере.
Попробовал поправить в последнем снапшоте, но не уверен - сам не встречался.Привет, проблема такая - выключаю сервак, вылетает ошибка![]()
Ядро сервера Purpur
Версия 1.19.4
actions:
- VAR_SET=id:sqltest value:''
- SQL_SELECT=query:{SELECT ValueVar FROM RegList WHERE Nickname="SomePlayer1"} variable:%var:sqltest%
Может быть стоит попробовать так:Всех приветствую! Возникла необходимость использования команды SQL_SELECT, и вот не пойму, то ли лыжи не едут, то ли я криворукий. Суть в том, что в ответ на SQL-запрос приходит... ничего! При этом я знаю, что данные по нужному мне адресу есть.
Проверял запрос в панели phpMyAdmin - запрос составлен верно.Код:actions: - VAR_SET=id:sqltest value:'' - SQL_SELECT=query:{SELECT ValueVar FROM RegList WHERE Nickname="SomePlayer1"} variable:%var:sqltest%
Может, кто из знатоков SQL что-нибудь подскажет или это все-таки плагин чудит?
actions:
- VAR_SET=id:sqltest value:''
- SQL_SELECT=query:{SELECT ValueVar FROM RegList WHERE Nickname="SomePlayer1"} variable:sqltest
По-разному пробовал, даже SELECT-FROM без фильтрации - ничего. Задал исходной переменной начальный текст, но после отправки запроса, текста в переменной как и не бывало. То есть, в переменную, как я понял, что-то пишется, но что и откуда - не понятно. Может есть способ запарсить ответ на запрос?Может быть стоит попробовать так:
https://web.archive.org/web/20200927232943/http://reactions.fromgate.ru/actions/sql_select/Код:actions: - VAR_SET=id:sqltest value:'' - SQL_SELECT=query:{SELECT ValueVar FROM RegList WHERE Nickname="SomePlayer1"} variable:sqltest
Не знаю, почему не указано в документации, но там также требуется указать параметр column - это число, которое определяет, какой столбец выбрать. Если колонка лишь одна, то просто указать 1.По-разному пробовал, даже SELECT-FROM без фильтрации - ничего. Задал исходной переменной начальный текст, но после отправки запроса, текста в переменной как и не бывало. То есть, в переменную, как я понял, что-то пишется, но что и откуда - не понятно. Может есть способ запарсить ответ на запрос?
Указано, как опциональный аргумент. И по дефолту (если брать исходники как оригинального ReActions, так и этого форка) колонка вроде как действительно первая:Не знаю, почему не указано в документации, но там также требуется указать параметр column - это число, которое определяет, какой столбец выбрать. Если колонка лишь одна, то просто указать 1.
И еще одна забавная находка: если SQLManager не инициализирован, то метод, использующийся для выполнения SELECT запросов, возвращает пустую строку:Задал исходной переменной начальный текст, но после отправки запроса, текста в переменной как и не бывало.
Как-то проморгал, что в обоих случаях есть значение по умолчанию. Тогда любопытно - проверю у себя позже на всякий случай.Указано, как опциональный аргумент. И по дефолту (если брать исходники как оригинального ReActions, так и этого форка) колонка вроде как действительно первая:
Попробовал исправить в последнем снапшоте. Странно, что раньше работало - возможно, с обновлением библиотек самого ядра что-то поменялось.Всех приветствую! Возникла необходимость использования команды SQL_SELECT, и вот не пойму, то ли лыжи не едут, то ли я криворукий. Суть в том, что в ответ на SQL-запрос приходит... ничего! При этом я знаю, что данные по нужному мне адресу есть.
Проверял запрос в панели phpMyAdmin - запрос составлен верно.Код:actions: - VAR_SET=id:sqltest value:'' - SQL_SELECT=query:{SELECT ValueVar FROM RegList WHERE Nickname="SomePlayer1"} variable:%var:sqltest%
Может, кто из знатоков SQL что-нибудь подскажет или это все-таки плагин чудит?
FUNCTION:
sqlcheck:
actions:
- SQL_SELECT=query:{SELECT ValueVar FROM RegList WHERE Nickname="SomePlayer1"} variable:sqltest
- response=Value %var:sqltest%
Понял, вечером скачаю, проверюПопробовал исправить в последнем снапшоте. Странно, что раньше работало - возможно, с обновлением библиотек самого ядра что-то поменялось.
Посмотреть вложение 66522Код:FUNCTION: sqlcheck: actions: - SQL_SELECT=query:{SELECT ValueVar FROM RegList WHERE Nickname="SomePlayer1"} variable:sqltest - response=Value %var:sqltest%
Посмотреть вложение 66523
(такая задержка в выполнении из-за того, что использовалась внешняя бесплатная БД)
К слову на счет параметра column: на тот момент тщетно пробовал и ему значения подбиратьНе знаю, почему не указано в документации, но там также требуется указать параметр column - это число, которое определяет, какой столбец выбрать. Если колонка лишь одна, то просто указать 1.
Но вообще, я крайне не рекомендую пользоваться действиями, связанными с SQL. Все операции проводятся на основном потоке, а выражения никак не защищены от инжектов. В общем, лагов не избежать, а если принимать значения от игроков, то может попасться чего и похуже.
Когда-нибудь я добавлю альтернативные действия и флаги для нормальной работы с БД, но до тех пор - советую посмотреть в сторону каких-нибудь иных решений в этом плане.
Мне или показалось, или я скачал точно такую же версию, которая стояла до обновления снапа. Качал с гитхаба (вкладка Actions). И, собсно, проблема осталась. Или я не оттуда качал?Попробовал исправить в последнем снапшоте. Странно, что раньше работало - возможно, с обновлением библиотек самого ядра что-то поменялось.
Посмотреть вложение 66522Код:FUNCTION: sqlcheck: actions: - SQL_SELECT=query:{SELECT ValueVar FROM RegList WHERE Nickname="SomePlayer1"} variable:sqltest - response=Value %var:sqltest%
Посмотреть вложение 66523
(такая задержка в выполнении из-за того, что использовалась внешняя бесплатная БД)
Там правка буквально в две строки - вес файла мог не измениться практически.Мне или показалось, или я скачал точно такую же версию, которая стояла до обновления снапа. Качал с гитхаба (вкладка Actions). И, собсно, проблема осталась. Или я не оттуда качал?
Выпадает-таки ошибку, но лишь однажды за сеанс работы сервера (при повторном запуске активатора ошибка не пишется):Там правка буквально в две строки - вес файла мог не измениться практически.
Могу лишь посоветовать проверить на наличие ошибок в консоли. Предупрежу, что ReActions может кидать ошибки лишь при первом запуске действия (выпилить эту фичу что ли уже...).
Ну, и на всякий, проверь, что значение в БД действительно не пустое.
[20:41:28 INFO]: [ReActions] Failed to execute query: SELECT ValueVar FROM RegList WHERE Nickname="SomePlayer1"
Логирование запросов phpMyAdmin не дает из-за отсутствия супер-прав. Но то, что плагин правильно подключен к БД это 100% - SQL_INSERT/UPDATE работаютУказано, как опциональный аргумент. И по дефолту (если брать исходники как оригинального ReActions, так и этого форка) колонка вроде как действительно первая:
И еще одна забавная находка: если SQLManager не инициализирован, то метод, использующийся для выполнения SELECT запросов, возвращает пустую строку:
Присоединяюсь к советам выше, но если так хочется использовать, то может быть стоит как-то удостоверится, что ReActions все таки подключен к БД, возможно воспользовавшись логгированием запросов.
Странно, должно больше выдавать. Добавил больше логирования, и теперь будет показывать каждый раз.Выпадает-таки ошибку, но лишь однажды за сеанс работы сервера (при повторном запуске активатора ошибка не пишется):Код:[20:41:28 INFO]: [ReActions] Failed to execute query: SELECT ValueVar FROM RegList WHERE Nickname="SomePlayer1"
Итак! Первое и главное, проблема устранена, все заработало)Странно, должно больше выдавать. Добавил больше логирования, и теперь будет показывать каждый раз.
https://github.com/GlowingInk/ReActions/actions/runs/7479864252
[01:39:17 INFO]: Papi OtherPlayer Expansion: Parsing error occured. Likely due to invalid use of a placeholder
[01:39:17 INFO]: Identifier string received: health_
[01:39:17 INFO]: Stacktrace to follow error msg: Index 1 out of bounds for length 0
[01:39:17 WARN]: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 0
[01:39:17 WARN]: at com.extendedclip.papi.expansion.otherplayer.OtherPlayerExpansion.getHealth(OtherPlayerExpansion.java:271)
[01:39:17 WARN]: at com.extendedclip.papi.expansion.otherplayer.OtherPlayerExpansion.onRequest(OtherPlayerExpansion.java:118)
[01:39:17 WARN]: at PlaceholderAPI-2.11.5.jar//me.clip.placeholderapi.replacer.CharsReplacer.apply(CharsReplacer.java:119)
[01:39:17 WARN]: at PlaceholderAPI-2.11.5.jar//me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:71)
[01:39:17 WARN]: at PlaceholderAPI-2.11.5.jar//me.clip.placeholderapi.commands.impl.local.CommandParse.evaluateParseSingular(CommandParse.java:117)
[01:39:17 WARN]: at PlaceholderAPI-2.11.5.jar//me.clip.placeholderapi.commands.impl.local.CommandParse.evaluate(CommandParse.java:57)
[01:39:17 WARN]: at PlaceholderAPI-2.11.5.jar//me.clip.placeholderapi.commands.PlaceholderCommandRouter.onCommand(PlaceholderCommandRouter.java:114)
[01:39:17 WARN]: at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45)
[01:39:17 WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:155)
[01:39:17 WARN]: at org.bukkit.craftbukkit.v1_20_R1.CraftServer.dispatchCommand(CraftServer.java:987)
[01:39:17 WARN]: at org.bukkit.craftbukkit.v1_20_R1.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64)
[01:39:17 WARN]: at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:265)
[01:39:17 WARN]: at net.minecraft.commands.CommandDispatcher.performCommand(CommandDispatcher.java:324)
[01:39:17 WARN]: at net.minecraft.commands.CommandDispatcher.a(CommandDispatcher.java:308)
[01:39:17 WARN]: at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:2354)
[01:39:17 WARN]: at net.minecraft.server.network.PlayerConnection.lambda$handleChatCommand$21(PlayerConnection.java:2314)
[01:39:17 WARN]: at net.minecraft.util.thread.IAsyncTaskHandler.b(IAsyncTaskHandler.java:59)
[01:39:17 WARN]: at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
[01:39:17 WARN]: at net.minecraft.server.TickTask.run(TickTask.java:18)
[01:39:17 WARN]: at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:153)
[01:39:17 WARN]: at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24)
[01:39:17 WARN]: at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1338)
[01:39:17 WARN]: at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:197)
[01:39:17 WARN]: at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:126)
[01:39:17 WARN]: at net.minecraft.server.MinecraftServer.bg(MinecraftServer.java:1315)
[01:39:17 WARN]: at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1308)
[01:39:17 WARN]: at net.minecraft.util.thread.IAsyncTaskHandler.c(IAsyncTaskHandler.java:136)
[01:39:17 WARN]: at net.minecraft.server.MinecraftServer.p_(MinecraftServer.java:1286)
[01:39:17 WARN]: at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1174)
[01:39:17 WARN]: at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:317)
[01:39:17 WARN]: at java.base/java.lang.Thread.run(Thread.java:840)
Ошибка со стороны PAPI. Скорее всего проблема в том, что при вводе "%otherplayer_health_%player_name%%" PAPI пытается разобрать "%otherplayer_health_%" как отдельный плейсхолдер. По-хорошему, надо им зарепортить, ибо ошибка в таком случае - неестественное поведение PAPI.Так-с, теперь нарисовалась новая проблема - не знаю только, по адресу я или кого пинать? Мне нужно, например, получить уровень здоровья другого игрока (%otherplayer_healthe_<player>%). Когда вместо конкретного ника я вписываю во внутренний заменитель %player_name%, то получаю либо сообщение об ошибке (как если бы я вводил такую строку через парсер PlaceholderAPI)
либо выдает не то, что нужно (зависит от плейсхолдера). Флаг use-modern-placeholders менял, пробовал с квадратными скобками и все равно бредятина выползает. Либо разрабы PAPI что-то намудрили, либо я че-то опять не так делаюКод:[01:39:17 INFO]: Papi OtherPlayer Expansion: Parsing error occured. Likely due to invalid use of a placeholder [01:39:17 INFO]: Identifier string received: health_ [01:39:17 INFO]: Stacktrace to follow error msg: Index 1 out of bounds for length 0 [01:39:17 WARN]: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 0 [01:39:17 WARN]: at com.extendedclip.papi.expansion.otherplayer.OtherPlayerExpansion.getHealth(OtherPlayerExpansion.java:271) [01:39:17 WARN]: at com.extendedclip.papi.expansion.otherplayer.OtherPlayerExpansion.onRequest(OtherPlayerExpansion.java:118) [01:39:17 WARN]: at PlaceholderAPI-2.11.5.jar//me.clip.placeholderapi.replacer.CharsReplacer.apply(CharsReplacer.java:119) [01:39:17 WARN]: at PlaceholderAPI-2.11.5.jar//me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:71) [01:39:17 WARN]: at PlaceholderAPI-2.11.5.jar//me.clip.placeholderapi.commands.impl.local.CommandParse.evaluateParseSingular(CommandParse.java:117) [01:39:17 WARN]: at PlaceholderAPI-2.11.5.jar//me.clip.placeholderapi.commands.impl.local.CommandParse.evaluate(CommandParse.java:57) [01:39:17 WARN]: at PlaceholderAPI-2.11.5.jar//me.clip.placeholderapi.commands.PlaceholderCommandRouter.onCommand(PlaceholderCommandRouter.java:114) [01:39:17 WARN]: at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) [01:39:17 WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:155) [01:39:17 WARN]: at org.bukkit.craftbukkit.v1_20_R1.CraftServer.dispatchCommand(CraftServer.java:987) [01:39:17 WARN]: at org.bukkit.craftbukkit.v1_20_R1.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64) [01:39:17 WARN]: at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:265) [01:39:17 WARN]: at net.minecraft.commands.CommandDispatcher.performCommand(CommandDispatcher.java:324) [01:39:17 WARN]: at net.minecraft.commands.CommandDispatcher.a(CommandDispatcher.java:308) [01:39:17 WARN]: at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:2354) [01:39:17 WARN]: at net.minecraft.server.network.PlayerConnection.lambda$handleChatCommand$21(PlayerConnection.java:2314) [01:39:17 WARN]: at net.minecraft.util.thread.IAsyncTaskHandler.b(IAsyncTaskHandler.java:59) [01:39:17 WARN]: at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) [01:39:17 WARN]: at net.minecraft.server.TickTask.run(TickTask.java:18) [01:39:17 WARN]: at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:153) [01:39:17 WARN]: at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24) [01:39:17 WARN]: at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1338) [01:39:17 WARN]: at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:197) [01:39:17 WARN]: at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:126) [01:39:17 WARN]: at net.minecraft.server.MinecraftServer.bg(MinecraftServer.java:1315) [01:39:17 WARN]: at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1308) [01:39:17 WARN]: at net.minecraft.util.thread.IAsyncTaskHandler.c(IAsyncTaskHandler.java:136) [01:39:17 WARN]: at net.minecraft.server.MinecraftServer.p_(MinecraftServer.java:1286) [01:39:17 WARN]: at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1174) [01:39:17 WARN]: at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:317) [01:39:17 WARN]: at java.base/java.lang.Thread.run(Thread.java:840)
actions:
- local_var=id:health_ph value:otherplayer_health_%[player_name]
- response=%%[health_ph]%
actions:
- response=%[otherplayer_health_%[player_name]]
actions:
- response=%[otherplayer:health_%[player:name]]