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

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

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

  1. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Это же больше полутора секунд на выполнение... По-моему, проще засунуть всё в один активатор и выполнить за один тик, а не за 37. Рекурсия хороша, но не с задержкой в 50ms.
    Недавно я, кстати, попытался сделать аналогичную конкатенацию нового значения со старым в одной переменной. Сохранял локации. После шестой итерации сервер отправился в краш :р
    Что уж говорить про формат предмета, который может занимать более сотни символов (один предмет)?
    Запустил MySQL-сервер у себя на локалке. Настройки в ReActions такие:
    Код:
    MySQL:
      server: localhost
      port: '3306'
      database: reactionsdb
      username: root
      password: 123456789i12I
      codepage: ''
    
    При попытке выполнить такой активатор
    Код:
    COMMAND:
      Test:
        override: true
        regex: false
        command: test
        actions:
        - SQL_INSERT=query:{INSERT INTO local_pvp (FIELD,PLAYERNAME1,PLAYERNAME2) VALUES (2, "Yesssss", "Nooooo")}
        - SQL_SELECT=variable:Test query:{SELECT * FROM local_pvp}
        - MESSAGE=%var:prefix% &6%var:Test%
        - VAR_CLEAR=id:Test
    
    Консоль моего сервера мне пишет следующее:
    Код:
    [05:48:47 WARN]: Fri May 26 05:48:47 EEST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
    Хотя таблица существует, функционирует:
    Код:
    mysql> SHOW TABLES;
    +-----------------------+
    | Tables_in_reactionsdb |
    +-----------------------+
    | local_pvp             |
    +-----------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT * FROM local_pvp;
    +-------+-------------+-------------+
    | FIELD | PLAYERNAME1 | PLAYERNAME2 |
    +-------+-------------+-------------+
    |     1 | Lyosha12    | Esbrime     |
    +-------+-------------+-------------+
    1 row in set (0.00 sec)
    

    Как я понял, сервер MySQL ждёт, что соединение будет установлено как защищённое, на что требуется соответствующий сертификат, который я подозреваю где брать - в центре сертификации, за деньги. Следовательно, нужно отключить поддержку SSL. Нашёл как проверить тип ожидаемого соединения:
    Код:
    mysql> SHOW VARIABLES LIKE '%ssl%';
    +---------------+----------+
    | Variable_name | Value    |
    +---------------+----------+
    | have_openssl  | DISABLED |
    | have_ssl      | DISABLED |
    | ssl_ca        |          |
    | ssl_capath    |          |
    | ssl_cert      |          |
    | ssl_cipher    |          |
    | ssl_crl       |          |
    | ssl_crlpath   |          |
    | ssl_key       |          |
    +---------------+----------+
    9 rows in set, 1 warning (0.01 sec)
    
    Поддержка SSL, вроде, выключена по-умолчанию, хотя консоль моего сервера хочет мне доказать обратное. Что мне предпринять?
    Забытое наследство (в документации отсутствует):
    Актуальна проблема (и, нет, не предлагайте DELAY_PLAYER - это заставляет создавать больше активаторов, чем нужно):
    P.S. Куда теперь кидать ошибки\предложения, кроме как сюда? Темы на dev.bukkit, вроде как брошены на произвол судьбы. Не постигнет ли та же участь тикеты на github?
     
    Последнее редактирование: 26 май 2017
  2. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Попробуйте добавить свойство для базы данных ?useSSL=false:
    Код:
    database: reactionsdb?useSSL=false
    После этого необходимо перегрузить сервер, обязательно
    Да, всё верно. Я намеренно так сделал, чтобы активатор не был громоздким. Также, всегда стараюсь уменьшить код, как можно сильнее, чтобы проще было ориентироваться. Полторы секунды меня не напрягает. Да их никто и не чувствует. Ещё, это мне даёт уверенность, что сервер не будет подлагивать в момент выполнения этого активатора. Конечно, если время будет проблемой, то запихну всё в один активатор.
     
  3. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Где-то читал про одно из правил проектирования: "Никогда не доверяйте параметрам функции, даже если она написана лично Вами в private-секции и используется только другими private-функциями в одном классе". Цитата примерная. Суть в том, что мы работаем с игроками. А что может сделать игрок за полторы секунды? Умереть, выкинуть вещи, админ может забрать вещи, может выйти с сервера (активатор не исполнится для offline-игрока). Если после этого будет возвращён или сохранён инвентарь, то это прямой путь для дюпа.

    Идеальный код редко когда может быть и красивым, и эффективным. Если работаешь со внешней средой - будь готов ко всему. Если это просто показательный пример, как в данном случае, то он сродни вычислению факториала или ряда Фибоначи через рекурсию: красиво, но зачем?
    Есть контакт:
    upload_2017-5-26_9-6-7.png
    Код:
    +-------+-------------+-------------+
    | FIELD | PLAYERNAME1 | PLAYERNAME2 |
    +-------+-------------+-------------+
    |     1 | Lyosha12    | Esbrime     |
    |     2 | Yesssss     | Nooooo      |
    +-------+-------------+-------------+
    
    Однако, почему запрос SELECT * FROM local_pvp возвращает 1? Я же, вроде, ожидал увидеть выборку из всех строк данной таблицы с каким-то разделителем, чтобы можно было вытащить данных через действие REGEX. Какие тут нюансы?
    Окей. А если мне нужен всё-таки список значений колонок найденной строки\строк? Только по одному значению придётся вытаскивать?
    Каким образом можно замерить время ответа от БД, чтобы можно было знать на что рассчитывать?
     
  4. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Согласен на все 100%.
    Если вы воспользовались действием SQL_SELECT, то всё верно, так и должно быть. Но то что вы хотите не так нужно делать, ведь вы выводите таблицу в виде массива, а массив нельзя вывести. Необходимо создавать конкатенцию колонок и строк (если необходимо) и выводить результать в виде строки. Затем обрабатывать полученную строку.
    Код:
    select concat(PLAYERNAME1,'|',PLAYERNAME2)as test from local_pvp WHERE FIELD=1
    Получим результат в виде строки: Lyosha12|Esbrime
    Теперь такую строку можно обработать.
    При таком запросе:
    Код:
    select concat(PLAYERNAME1,'|',PLAYERNAME2)as test from local_pvp WHERE FIELD=2
    Получим: Yesssss|Nooooo
     
  5. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Ага, спасибо. Нужно читать синтаксис SQL дальше.
     
  6. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Мало информации. Покажите всё исключение, так будет понятней.
     
  7. SoSeDiK

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

    Баллы:
    76
    Имя в Minecraft:
    SoSeDiK
    Иногда выводит в консоль вот такие сообщения:
     
  8. Jeff_Michael

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

    Баллы:
    88
    Skype:
    Jeff_Michael14
    Имя в Minecraft:
    Jeff_Michael
    Планируется ли в ближайшее время, действию FILE добавлять копирование и перенос файла?
    Как скоро можно ожидать подобных нововведений?
    И ещё вопрос: Есть ли возможность использовать плейсхолдеры других плагинов?
     
  9. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Что значит плейсхолдеры других плагинов?
    Просто так взят и вытащить какие-то произвольные переменные из других плагинов средствами ReActions нельзя.
    Для этого нужно написать определённый код, который обращался бы к API другого плагина и что-то оттуда брал.
    Если есть какие-то идеи - опишите что нужно. И если это достаточно распространённый и интересный плагин, то можно будет подумать.
     
  10. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    placeholderapi?
     
  11. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Пробный вариант (ранняя альфа) сайта сгенерированного на основе вики

    http://ratest.fromgate.me/
     
  12. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    upload_2017-5-27_22-40-3.png
     
  13. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    У меня работает.
    И не только у меня:
    [​IMG]
     
  14. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Не сразу смекнул. Большой Брат запретил с Вами общаться сроком на три года :D
    WIKI кажется намного удобнее в плане внесения изменений. Или функционал недостаточен?
     
  15. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Круто. Сервер не помню где, во франции или германии что ли...

    А это же вики и есть. В смысле, страницы сайта генерируются на основе вики-страниц. Сейчас я пока запускаю генерацию вручную, а потом она будет производиться по расписанию.
     
  16. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Но а смысл? Свой же сайт надо и хостить где-то, и обновлять, а вики и бесплатна и онлайн всегда.
     
    Последнее редактирование: 28 май 2017
  17. Albetron

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

    Баллы:
    66
    Есть возможность добавить 1 флаг?
    - проверка на то, что инвентарь игрока абсолютно пустой и даже брони никакой нет
     
    Последнее редактирование: 28 май 2017
  18. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Так а при чем тут эта вики страница ??
     
  19. Jeff_Michael

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

    Баллы:
    88
    Skype:
    Jeff_Michael14
    Имя в Minecraft:
    Jeff_Michael
    Поддержка PlaceholderAPI расширила бы возможности ReActions. Плагин довольно таки распространённый и интересный, он даёт множество плейсхолдеров MineCraft, Bukkit, Bungee и плейсхолдеры самых распространённых плагинов.
     
    Последнее редактирование: 28 май 2017
  20. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Тоесть ты ставиш плейсхолдерАПИ и в любом плагине можеш юзать любые другие плейсхолдеры из плагинов, которые это АПИ суппортят или как?
    Люблю плейсхолдеры! Плейсхолдеров, как и активаторов, много небывает
     
    Последнее редактирование: 28 май 2017

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