Поддержка MySQL

В ReActions предусмотрена возможность работы с БД MySQL. Этот функционал реализован для того чтобы осуществить интеграцию сервера с другими плагинами, веб-сервисами и приложениями.

Зачем это нужно?

Предположим, некий плагин хранит данные в таблице MySQL. Плагин Jail, к примеру, позволяет использовать хранение информации в базе данных. Теперь появляется использовать такую информацию, не ожидая пока в ReActions будет реализован функционал связывающий ReActions и этот плагин (действия, флаги и т.п.) — можно напрямую обращаться к базе и узнавать то, что нам нужно, например, проверять сидит ли игрок в тюрьме или нет. Для этого нужно просто составить SQL-запрос получающий необходимую информацию.

Как это реализовано в ReActions

Существует несколько флагов (SQL_CHECK, SQL_RESULT) и действий (SQL_SELECT, SQL_UPDATE и SQL_INSERT).

Флаг SQL_CHECK

Сравнивает результат выполнения SQL-запроса с указанными значениями.

Параметры:

  • query:{SELECT...} — SQL-запрос
  • value:<value> — значения, которые будут сравниться с результатом выполнения запроса
  • column:<column> — номер колонки, откуда будет браться значение для колонки (1 по умолчанию)

Пример:

BUTTON:
  sqltest:
    world: world
    x: -59
    y: 65
    z: 413
    flags:
    - SQL_CHECK=value:Russia query:{SELECT Name FROM country WHERE Capital="Moscow"}
    actions:
    - MESSAGE=&6ok
    reactions:
    - MESSAGE=&4not ok

Флаг SQL_RESULT

Проверят возвращает ли SQL-запрос хоть какой-то результат. Если результат пуст, флаг вернет false.

Параметры:

  • query:{SELECT...} — SQL-запрос

Пример:

BUTTON:
  sqltest:
    world: world
    x: -59
    y: 65
    z: 413
    flags:
    - SQL_RESULT=query:{SELECT Name FROM country WHERE Capital="Manchester"}
    actions:
    - MESSAGE=&6I know Moscow is a capital of... of... a country
    reactions:
    - MESSAGE=&4There is no countries with capital named Manchester

Действие SQL_SELECT

ВыполнитьSQL-запрос и сохранит поле в первой строке (и указанной колонки) в переменную. Если параметр "player" не указан, то используется глобальная переменная, если указан - то соответствующая персональная.

Параметры:

  • query:{SELECT... }
  • variable:<ИмяПеременной> — сюда будет сохранён результат SQL-запроса
  • player:<ВладелецПеременной>
  • column:<Колонка>

Пример

BUTTON:
  sqlselect:
    world: world
    x: -58
    y: 65
    z: 412
    flags: []
    actions:
    - sql_select=variable:sqltest query:{SELECT Capital FROM country WHERE Name="Germany"}
    - message=Selected value: %var:sqltest%
    reactions: []

Действие SQL_UPDATE

Обновить значение поля в таблице базы MySQL

Параметр:

  • query:{UPDATE... }

Пример:

BUTTON:
  sqlupdate:
    world: world
    x: -60
    y: 65
    z: 412
    flags: []
    actions:
    - sql_update=UPDATE country set Name="USA" where Code="Washington"
    reactions: []

Действие SQL_INSERT

Добавить строку в таблицу базы MySQL

Параметр:

  • query:{INSERT... }

Пример:

BUTTON:
  sqlinsert:
    world: world
    x: -59
    y: 65
    z: 411
    flags: []
    actions:
    - sql_insert=INSERT INTO country (Name, Capital) set ("United States of Uryupinsk", "Uryupinsk")
    reactions: []

Настройка

Чтобы настроить плагин для работы с сервером-MySQL нужно внести нужные изменения в фалй config.yml:

MySQL:
  server: localhost   # Адрес сервера MySQL
  port: '3306'        # Порт сервера
  database: world     # Внутренняя база данных
  username: root      # имя пользователя
  password: root      # пароль