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

Есть предложение, а точнее даже просьба:
Добавить возможность создавать для каждого пользователя отдельный файл содержащий персональные переменные. А то в одном файле это уж очень неудобно. Ооочень!
Давно предлагал расширенный вариант: собственная папка для переменных и возможность указывать файл, куда будут записываться переменные. Предлагал из-за того, что при записи в файл и одновременном краше сервера, файл может испортиться и при следующем чтении будет перезаписан, что очень серьёзно может сказаться на безопасности.

Не знаю как сейчас, так как за размером файла переменных жёстко слежу. Но такая ситуация была, когда я хранил данные для каждого игрока, вошедшего на сервер. А это количество исчислялось тысячами (строк в файле на сервере версии 1.5.2 - 7к).
 
Добавить возможность создавать для каждого пользователя отдельный файл содержащий персональные переменные.
Воспользуйтесь базой данных MySQL для хранения там персональных переменных. Очень удобно, когда переменных слишком много. Также удобно, когда необходимо связать переменные с данными из других плагинов, использующие базу MySQL.
 
Маска по которой выполняется поиск/сравнение следующая: \S+:\{[^\{\}]*\}|\S+:\S+
При этом type:chest сработает, а просто chest - нет, т.е. упрощённый формат не будет найден.
Строки 794-795 в файле VirtualItem.java никогда не выполнятся.

Конечно, я могу и ошибаться.
Да, действительно. Работает только так:
Код:
BLOCK_BREAK:
  Test:
    block: type:chest
    actions:
    - MESSAGE=Вы сломали сундук. За Вами выехали.

Воспользуйтесь базой данных MySQL для хранения там персональных переменных. Очень удобно, когда переменных слишком много. Также удобно, когда необходимо связать переменные с данными из других плагинов, использующие базу MySQL.
Вечно бегать от MySQL, как от переменных в ReActions в своё время, кажется, не получится. Что же, придётся осваивать :)
 
Предлагал из-за того, что при записи в файл и одновременном краше сервера, файл может испортиться и при следующем чтении будет перезаписан, что очень серьёзно может сказаться на безопасности.
И у меня была такая ситуация. Вот из-за этого основные переменные я уже, как пол-года, храню в БД.
 
И у меня была такая ситуация. Вот из-за этого основные переменные я уже, как пол-года, храню в БД.
Вопрос первый: какое влияние должно было оказать это действие? Что изменилось?
Код:
    - SQL_INSERT=query:{INSERT INTO ReActions (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 )}
Код:
MySQL:
  server: localhost
  port: '3306'
  database: ReActions
  username: root
  password:
  codepage: '
Консоль говорит, что ничего не изменилось:
Код:
Failed to connect to database: jdbc:mysql://localhost:3306/ReActions user: root
 
Эти параметры почему не изменены под вашу базу. Или у вас нет пароля к базе?
А база ReActions существует?
Базу лучше называть не ReActions, а minecraft. В ней будете хранить не только таблицы Reactions, но и таблицы других плагинов.
 
А база ReActions существует?
Судя по гайдам в интернетах, для создания базы предусмотрена отдельная команда, которую я даже не знаю куда ввести :D
Пока что хочу экспериментировать не на основной, возможно существующей, базе.
 
Прежде чем выполнять это действие, необходимо создать таблицу ReActions, конечно, если вы её ещё не создали.
Пока что хочу экспериментировать не на основной, возможно существующей, базе.
Тогда нужно установить данные этой базы в конфиг ReActions, а затем в этой базе создать таблицу ReActions с теми колонками, которые вам необходимы.
 
Прежде чем выполнять это действие, необходимо создать таблицу ReActions, конечно, если вы её ещё не создали.
Окей. Куда мне писать данную команду? Действия в ReActions не предусматривают этого:
Код:
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
 
Окей. Куда мне писать данную команду? Действия в ReActions не предусматривают этого:
Вам необходимо базу и таблицу подготовить за пределами сервера. Вы можете воспользоваться любыми оболочками для работы с БД. Я рекомендую воспользоваться phpMyAdmin. Очень удобная штука, работает в WEB режиме, можно использовать как в linux, так и в Windows системах. Интуитивно понятный интерфейс. Гарантирую, сразу разберётесь.
 
Вам необходимо базу и таблицу подготовить за пределами сервера. Вы можете воспользоваться любыми оболочками для работы с БД. Я рекомендую воспользоваться phpMyAdmin. Очень удобная штука, работает в WEB режиме, можно использовать как в linux, так и в Windows системах. Интуитивно понятный интерфейс. Гарантирую, сразу разберётесь.
Спасибо, начну изучать :)
 
Вам необходимо базу и таблицу подготовить за пределами сервера. Вы можете воспользоваться любыми оболочками для работы с БД. Я рекомендую воспользоваться phpMyAdmin. Очень удобная штука, работает в WEB режиме, можно использовать как в linux, так и в Windows системах. Интуитивно понятный интерфейс. Гарантирую, сразу разберётесь.

А я рекомендую приложение MySQL Workbench. Правда это локальное приложение и на сервере (в зависимости от настроек БД) может быть запрещено соединение "из вне".
 
А я рекомендую приложение MySQL Workbench. Правда это локальное приложение и на сервере (в зависимости от настроек БД) может быть запрещено соединение "из вне".
Я пользуюсь и Workbench и phpMyAdmin. У каждого имеются свои достоинства. Так, что на своём настаивать не буду. Думаю, даже проще будет установить MySQL Workbench и подключаться к серверу, если к нему разрешён доступ.
 
Вечно бегать от MySQL, как от переменных в ReActions в своё время, кажется, не получится. Что же, придётся осваивать :)
А я пожалуй ещё побегаю месяца два-три. А там видно будет...
 
А я пожалуй ещё побегаю месяца два-три. А там видно будет...
А зря. Как мне кажется, я бы уже смог реализовать "переменный инвентарь". В 1.12 это уже сделали, но только для креатива и ещё непонятно как с этим работать. Однако, я смогу сделать не хуже :)
Заметил, что EXEC не выполняется для игрока в активаторе QUIT. Придётся передавать имя игрока как переменную в качестве костыля?
Поигрался я с MySQL на локалке. Создал таблицу, добавил строку, вывел её - что ещё нужно для счастья? Как теперь мне закинуть сервер MySQL вместе с созданной базой данных на сервер майна? Или это нужно заказывать отдельный дедик для сервера и таблиц? // Отбой. Нашёл, что хостинг предоставляет эту услугу бесплатно.
 
Последнее редактирование:
А зря. Как мне кажется, я бы уже смог реализовать "переменный инвентарь". В 1.12 это уже сделали, но только для креатива и ещё непонятно как с этим работать. Однако, я смогу сделать не хуже :)
Вот тут какой-то чел создал плагин на сохранение/загрузку инвентаря, мб его попробуй, если с MySQL ничего не выйет -- https://www.spigotmc.org/resources/inventorysaver.39248/
Я его не тестировал правда...
 
Последнее редактирование:
Вот тут какой-то чел создал плагин на сохранение/загрузку инвентаря, мб его попробуй, если с MySQL ничего не выйет -- https://www.spigotmc.org/resources/inventorysaver.39248/
Я его не тестировал правда...
Как будто я смогу создавать несколько инвентарей для одного игрока. ReActions лучше! :) Да и он только до 1.9, а у меня 1.11.
 
build #111
Этим действием можно получить информацию о предмете в указанном слоте. Полезно, если необходимо сохранить указанный слот или инвентарь в персональную переменную/ые.​
 
Последнее редактирование:
Только что набросал ряд активаторов для сохранения инвентаря в таблицу базы данных MySQL. Выкладываю, кому интересно. Чтобы у вас заработало, необходимо заранее создать таблицу с теми колонками, которые здесь указаны.
Код:
  get_slots:
    actions:
    - VAR_PLAYER_SET=id:slots value:0
    - execute=activator:get_slot
  get_slot:
    flags:
    - '!VAR_PLAYER_GREATER=id:i value:35'
    actions:
    - VAR_PLAYER_INC=id:i
    - ITEM_SLOT_VIEW=slot:%CALC:%varp:i%-1%
    - if_else=if:{"%varp:slots%"=="0"} then:{'%item_str%'} else:{%varp:slots%,'%item_str%'}
    - VAR_PLAYER_SET=id:slots value:{%ifelseresult%}
    - execute=activator:get_slot
    reactions:
    - VAR_PLAYER_CLEAR=id:i
    - execute=activator:inv
  inv:
    flags:
    - VAR_PLAYER_EXIST=id:slots
    actions:
    - SQL_INSERT=query:{INSERT INTO tbl_server_mc_reactions_inventory (name,player_id,slot_0,slot_1,slot_2,slot_3,slot_4,slot_5,slot_6,slot_7,slot_8,slot_9,slot_10,slot_11,slot_12,slot_13,slot_14,slot_15,slot_16,slot_17,slot_18,slot_19,slot_20,slot_21,slot_22,slot_23,slot_24,slot_25,slot_26,slot_27,slot_28,slot_29,slot_30,slot_31,slot_32,slot_33,slot_34,slot_35) VALUES ('test_inventory', '12', %varp:slots%)}
    - VAR_PLAYER_CLEAR=id:slots

Запуск:
/exec get_slots
 
Назад
Верх